{
  "version": 3,
  "sources": ["../../../../../shared/node_modules/@intrnl/esbuild-plugin-env/src/inject.js", "../../../node_modules/jquery/dist/jquery.js", "../../../node_modules/i18n-js/app/assets/javascripts/i18n.js", "../../../node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js", "../../../node_modules/accounting/accounting.js", "../../../node_modules/air-datepicker/src/js/datepicker.js", "../../../node_modules/air-datepicker/src/js/body.js", "../../../node_modules/air-datepicker/src/js/navigation.js", "../../../node_modules/air-datepicker/src/js/timepicker.js", "../../../node_modules/axe-core/axe.js", "../../../node_modules/unfetch/src/index.mjs", "../../../node_modules/isomorphic-unfetch/browser.js", "../../../node_modules/velocity-animate/velocity.js", "../../../node_modules/magnific-popup/dist/jquery.magnific-popup.js", "../../../node_modules/velocity-ui-pack/velocity.ui.js", "../../../node_modules/flightjs/build/flight.js", "../../../node_modules/turbolinks/dist/turbolinks.js", "../../../node_modules/marked/lib/marked.js", "../../../node_modules/codemirror/lib/codemirror.js", "../../../node_modules/codemirror/mode/sql/sql.js", "../../../node_modules/perspective-map/dist/index.js", "../../../node_modules/codemirror/addon/selection/active-line.js", "../../../node_modules/codemirror/addon/hint/show-hint.js", "../../../node_modules/codemirror/addon/hint/sql-hint.js", "../../javascript/data.js", "../../javascript/lib/commons/index.js", "../../javascript/lib/commons/modules/jquery.js", "../../javascript/lib/commons/modules/i18n.js", "../../javascript/lib/commons/modules/module-search.js", "../../../node_modules/devbridge-autocomplete/dist/jquery.autocomplete.esm.js", "../../javascript/lib/shared/index.js", "../../javascript/lib/shared/modules/autocomplete_settings.js", "../../javascript/lib/shared/modules/URLParams.js", "../../javascript/lib/shared/modules/d3-locale.js", "../../javascript/lib/shared/modules/createScaleColors.js", "../../../node_modules/d3/src/index.js", "../../../node_modules/d3-brush/src/index.js", "../../../node_modules/d3-brush/src/brush.js", "../../../node_modules/d3-dispatch/src/index.js", "../../../node_modules/d3-dispatch/src/dispatch.js", "../../../node_modules/d3-selection/src/index.js", "../../../node_modules/d3-selection/src/creator.js", "../../../node_modules/d3-selection/src/namespace.js", "../../../node_modules/d3-selection/src/namespaces.js", "../../../node_modules/d3-selection/src/selection/index.js", "../../../node_modules/d3-selection/src/selection/select.js", "../../../node_modules/d3-selection/src/selector.js", "../../../node_modules/d3-selection/src/selection/selectAll.js", "../../../node_modules/d3-selection/src/array.js", "../../../node_modules/d3-selection/src/selectorAll.js", "../../../node_modules/d3-selection/src/selection/selectChild.js", "../../../node_modules/d3-selection/src/matcher.js", "../../../node_modules/d3-selection/src/selection/selectChildren.js", "../../../node_modules/d3-selection/src/selection/filter.js", "../../../node_modules/d3-selection/src/selection/data.js", "../../../node_modules/d3-selection/src/selection/enter.js", "../../../node_modules/d3-selection/src/selection/sparse.js", "../../../node_modules/d3-selection/src/constant.js", "../../../node_modules/d3-selection/src/selection/exit.js", "../../../node_modules/d3-selection/src/selection/join.js", "../../../node_modules/d3-selection/src/selection/merge.js", "../../../node_modules/d3-selection/src/selection/order.js", "../../../node_modules/d3-selection/src/selection/sort.js", "../../../node_modules/d3-selection/src/selection/call.js", "../../../node_modules/d3-selection/src/selection/nodes.js", "../../../node_modules/d3-selection/src/selection/node.js", "../../../node_modules/d3-selection/src/selection/size.js", "../../../node_modules/d3-selection/src/selection/empty.js", "../../../node_modules/d3-selection/src/selection/each.js", "../../../node_modules/d3-selection/src/selection/attr.js", "../../../node_modules/d3-selection/src/selection/style.js", "../../../node_modules/d3-selection/src/window.js", "../../../node_modules/d3-selection/src/selection/property.js", "../../../node_modules/d3-selection/src/selection/classed.js", "../../../node_modules/d3-selection/src/selection/text.js", "../../../node_modules/d3-selection/src/selection/html.js", "../../../node_modules/d3-selection/src/selection/raise.js", "../../../node_modules/d3-selection/src/selection/lower.js", "../../../node_modules/d3-selection/src/selection/append.js", "../../../node_modules/d3-selection/src/selection/insert.js", "../../../node_modules/d3-selection/src/selection/remove.js", "../../../node_modules/d3-selection/src/selection/clone.js", "../../../node_modules/d3-selection/src/selection/datum.js", "../../../node_modules/d3-selection/src/selection/on.js", "../../../node_modules/d3-selection/src/selection/dispatch.js", "../../../node_modules/d3-selection/src/selection/iterator.js", "../../../node_modules/d3-interpolate/src/index.js", "../../../node_modules/d3-color/src/index.js", "../../../node_modules/d3-color/src/color.js", "../../../node_modules/d3-color/src/define.js", "../../../node_modules/d3-interpolate/src/rgb.js", "../../../node_modules/d3-interpolate/src/basis.js", "../../../node_modules/d3-interpolate/src/basisClosed.js", "../../../node_modules/d3-interpolate/src/color.js", "../../../node_modules/d3-interpolate/src/constant.js", "../../../node_modules/d3-interpolate/src/number.js", "../../../node_modules/d3-interpolate/src/string.js", "../../../node_modules/d3-interpolate/src/transform/index.js", "../../../node_modules/d3-interpolate/src/transform/parse.js", "../../../node_modules/d3-interpolate/src/transform/decompose.js", "../../../node_modules/d3-transition/src/index.js", "../../../node_modules/d3-transition/src/selection/index.js", "../../../node_modules/d3-transition/src/selection/interrupt.js", "../../../node_modules/d3-transition/src/interrupt.js", "../../../node_modules/d3-transition/src/transition/schedule.js", "../../../node_modules/d3-timer/src/index.js", "../../../node_modules/d3-timer/src/timer.js", "../../../node_modules/d3-timer/src/timeout.js", "../../../node_modules/d3-transition/src/selection/transition.js", "../../../node_modules/d3-transition/src/transition/index.js", "../../../node_modules/d3-transition/src/transition/attr.js", "../../../node_modules/d3-transition/src/transition/tween.js", "../../../node_modules/d3-transition/src/transition/interpolate.js", "../../../node_modules/d3-transition/src/transition/attrTween.js", "../../../node_modules/d3-transition/src/transition/delay.js", "../../../node_modules/d3-transition/src/transition/duration.js", "../../../node_modules/d3-transition/src/transition/ease.js", "../../../node_modules/d3-transition/src/transition/easeVarying.js", "../../../node_modules/d3-transition/src/transition/filter.js", "../../../node_modules/d3-transition/src/transition/merge.js", "../../../node_modules/d3-transition/src/transition/on.js", "../../../node_modules/d3-transition/src/transition/remove.js", "../../../node_modules/d3-transition/src/transition/select.js", "../../../node_modules/d3-transition/src/transition/selectAll.js", "../../../node_modules/d3-transition/src/transition/selection.js", "../../../node_modules/d3-transition/src/transition/style.js", "../../../node_modules/d3-transition/src/transition/styleTween.js", "../../../node_modules/d3-transition/src/transition/text.js", "../../../node_modules/d3-transition/src/transition/textTween.js", "../../../node_modules/d3-transition/src/transition/transition.js", "../../../node_modules/d3-transition/src/transition/end.js", "../../../node_modules/d3-ease/src/index.js", "../../../node_modules/d3-ease/src/cubic.js", "../../../node_modules/d3-brush/src/constant.js", "../../../node_modules/d3-brush/src/event.js", "../../../node_modules/d3-brush/src/noevent.js", "../../../node_modules/d3-format/src/index.js", "../../../node_modules/d3-format/src/defaultLocale.js", "../../../node_modules/d3-format/src/locale.js", "../../../node_modules/d3-format/src/exponent.js", "../../../node_modules/d3-format/src/formatDecimal.js", "../../../node_modules/d3-format/src/formatGroup.js", "../../../node_modules/d3-format/src/formatNumerals.js", "../../../node_modules/d3-format/src/formatSpecifier.js", "../../../node_modules/d3-format/src/formatTrim.js", "../../../node_modules/d3-format/src/formatTypes.js", "../../../node_modules/d3-format/src/formatPrefixAuto.js", "../../../node_modules/d3-format/src/formatRounded.js", "../../../node_modules/d3-format/src/identity.js", "../../../node_modules/d3-zoom/src/index.js", "../../../node_modules/d3-zoom/src/zoom.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/index.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/creator.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/namespace.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/namespaces.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/index.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/select.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selector.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/selectAll.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/array.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selectorAll.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/selectChild.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/matcher.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/selectChildren.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/filter.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/data.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/enter.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/sparse.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/constant.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/exit.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/join.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/merge.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/order.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/sort.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/call.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/nodes.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/node.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/size.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/empty.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/each.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/attr.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/style.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/window.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/property.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/classed.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/text.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/html.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/raise.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/lower.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/append.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/insert.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/remove.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/clone.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/datum.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/on.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/dispatch.js", "../../../node_modules/d3-zoom/node_modules/d3-selection/src/selection/iterator.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/index.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/selection/index.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/selection/interrupt.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/interrupt.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/transition/schedule.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/node_modules/d3-dispatch/src/index.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/node_modules/d3-dispatch/src/dispatch.js", "../../../node_modules/d3-zoom/node_modules/d3-timer/src/index.js", "../../../node_modules/d3-zoom/node_modules/d3-timer/src/timer.js", "../../../node_modules/d3-zoom/node_modules/d3-timer/src/timeout.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/selection/transition.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/transition/index.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/transition/attr.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/node_modules/d3-interpolate/src/index.js", "../../../node_modules/d3-zoom/node_modules/d3-color/src/index.js", "../../../node_modules/d3-zoom/node_modules/d3-color/src/color.js", "../../../node_modules/d3-zoom/node_modules/d3-color/src/define.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/node_modules/d3-interpolate/src/rgb.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/node_modules/d3-interpolate/src/basis.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/node_modules/d3-interpolate/src/basisClosed.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/node_modules/d3-interpolate/src/color.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/node_modules/d3-interpolate/src/constant.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/node_modules/d3-interpolate/src/number.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/node_modules/d3-interpolate/src/string.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/node_modules/d3-interpolate/src/transform/index.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/node_modules/d3-interpolate/src/transform/parse.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/node_modules/d3-interpolate/src/transform/decompose.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/transition/tween.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/transition/interpolate.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/transition/attrTween.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/transition/delay.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/transition/duration.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/transition/ease.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/transition/easeVarying.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/transition/filter.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/transition/merge.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/transition/on.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/transition/remove.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/transition/select.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/transition/selectAll.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/transition/selection.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/transition/style.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/transition/styleTween.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/transition/text.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/transition/textTween.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/transition/transition.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/transition/end.js", "../../../node_modules/d3-zoom/node_modules/d3-ease/src/index.js", "../../../node_modules/d3-zoom/node_modules/d3-ease/src/cubic.js", "../../../node_modules/d3-zoom/node_modules/d3-transition/src/active.js", "../../../node_modules/d3-zoom/src/constant.js", "../../../node_modules/d3-zoom/src/event.js", "../../../node_modules/d3-zoom/src/transform.js", "../../../node_modules/d3-zoom/src/noevent.js", "../../javascript/lib/shared/modules/slugString.js", "../../javascript/lib/shared/modules/accounting_settings.js", "../../javascript/lib/shared/modules/air-datepicker.js", "../../../node_modules/air-datepicker/src/js/air-datepicker.js", "../../javascript/lib/shared/modules/read-more.js", "../../javascript/lib/shared/modules/horizontal-carousel.js", "../../javascript/lib/shared/modules/image-lightbox.js", "../../javascript/lib/shared/modules/range-slider.js", "../../javascript/lib/shared/modules/middleware.js", "../../javascript/lib/vue/filters/index.js", "../../javascript/lib/shared/modules/debounce.js", "../../javascript/lib/shared/modules/accessibility.js", "../../javascript/lib/shared/modules/groupBy.js", "../../javascript/lib/shared/modules/d3-format-numbers.js", "../../javascript/lib/shared/modules/appsignal.js", "../../../node_modules/@appsignal/javascript/node_modules/tslib/tslib.es6.mjs", "../../../node_modules/@appsignal/core/src/index.ts", "../../../node_modules/@appsignal/core/node_modules/tslib/tslib.es6.mjs", "../../../node_modules/@appsignal/core/src/utils/functional.ts", "../../../node_modules/@appsignal/core/src/utils/hashmap.ts", "../../../node_modules/@appsignal/core/src/utils/error.ts", "../../../node_modules/@appsignal/core/src/utils/url.ts", "../../../node_modules/@appsignal/core/src/utils/async.ts", "../../../node_modules/@appsignal/core/src/utils/environment.ts", "../../../node_modules/@appsignal/core/src/utils/push-api.ts", "../../../node_modules/@appsignal/core/src/serializable.ts", "../../../node_modules/@appsignal/javascript/src/version.ts", "../../../node_modules/@appsignal/javascript/src/environment.ts", "../../../node_modules/@appsignal/javascript/src/transports/xdomain.ts", "../../../node_modules/@appsignal/javascript/src/transports/xhr.ts", "../../../node_modules/@appsignal/javascript/src/transports/fetch.ts", "../../../node_modules/@appsignal/javascript/src/transports/node.ts", "../../../node_modules/@appsignal/javascript/src/api.ts", "../../../node_modules/@appsignal/javascript/src/span.ts", "../../../node_modules/@appsignal/javascript/src/queue.ts", "../../../node_modules/@appsignal/javascript/src/dispatcher.ts", "../../../node_modules/@appsignal/javascript/src/index.ts", "../../../node_modules/@appsignal/plugin-window-events/src/index.ts", "../../javascript/lib/shared/modules/wordwrap.js", "../../javascript/lib/shared/modules/tspans.js", "../../javascript/lib/shared/modules/safe-division.js", "../../javascript/lib/commons/modules/module-sessions.js", "../../javascript/lib/commons/modules/module-site_header.js", "../../javascript/lib/commons/modules/magnific-popup.js", "../../javascript/lib/events/index.js", "../../javascript/lib/commons/modules/globals.js", "../../../node_modules/tipsy-1a/src/javascripts/jquery.tipsy.js", "../../javascript/lib/commons/modules/tabs.js", "../../javascript/lib/commons/modules/velocity_settings.js", "../../javascript/lib/commons/modules/shareContent.js", "../../javascript/lib/commons/modules/separate-tabs.js", "../../javascript/lib/commons/modules/check-start-turbolinks.js", "../../javascript/lib/commons/modules/iframe_handler.js", "../../javascript/lib/i18n/index.js", "../../javascript/lib/i18n/modules/translations.js", "../../javascript/gobierto_data/index.js", "../../javascript/gobierto_data/modules/gobierto_data_controller.js", "../../../node_modules/vue/dist/vue.esm.js", "../../javascript/gobierto_data/lib/router.js", "../../../node_modules/vue-router/dist/vue-router.esm.js", "../../javascript/gobierto_data/webapp/pages/Main.vue", "../../javascript/lib/vue/components/index.js", "../../javascript/lib/vue/components/modules/BlockHeader.vue", "../../javascript/lib/vue/components/modules/Calendar.vue", "../../javascript/lib/vue/components/modules/HorizontalCarousel.vue", "../../javascript/lib/vue/components/modules/Loading.vue", "../../javascript/lib/vue/components/modules/Checkbox.vue", "../../javascript/lib/vue/components/modules/RangeBars.vue", "../../javascript/lib/vue/components/modules/ReadMore.vue", "../../javascript/lib/vue/components/modules/Dropdown.vue", "../../javascript/lib/vue/components/modules/SkeletonSpinner.vue", "../../javascript/lib/vue/components/modules/Pagination.vue", "../../javascript/lib/vue/components/modules/MultipleLineChart.vue", "../../javascript/lib/vue/components/modules/TextEditable.vue", "../../javascript/lib/vue/components/modules/Autocomplete.vue", "../../javascript/lib/vue/components/modules/Table.vue", "../../javascript/lib/vue/components/modules/TableColumnsSelector.vue", "../../javascript/lib/vue/directives/index.js", "../../javascript/lib/vue/components/modules/SortIcon.vue", "../../javascript/lib/vue/components/modules/Filters.vue", "../../javascript/lib/vue/mixins/index.js", "../../javascript/lib/vue/mixins/modules/items-filter.js", "../../javascript/gobierto_data/lib/factories/datasets.js", "../../javascript/gobierto_data/lib/commons.js", "../../../node_modules/html-to-image/src/getBlobFromURL.ts", "../../../node_modules/html-to-image/src/util.ts", "../../../node_modules/html-to-image/src/clonePseudoElements.ts", "../../../node_modules/html-to-image/src/cloneNode.ts", "../../../node_modules/html-to-image/src/embedResources.ts", "../../../node_modules/html-to-image/src/embedImages.ts", "../../../node_modules/html-to-image/src/applyStyleWithOptions.ts", "../../../node_modules/html-to-image/src/embedWebFonts.ts", "../../../node_modules/html-to-image/src/index.ts", "../../../node_modules/axios/index.js", "../../../node_modules/axios/lib/axios.js", "../../../node_modules/axios/lib/utils.js", "../../../node_modules/axios/lib/helpers/bind.js", "../../../node_modules/axios/lib/core/Axios.js", "../../../node_modules/axios/lib/helpers/buildURL.js", "../../../node_modules/axios/lib/helpers/AxiosURLSearchParams.js", "../../../node_modules/axios/lib/helpers/toFormData.js", "../../../node_modules/axios/lib/core/AxiosError.js", "../../../node_modules/axios/lib/core/AxiosHeaders.js", "../../../node_modules/axios/lib/helpers/parseHeaders.js", "../../../node_modules/axios/lib/helpers/null.js", "../../../node_modules/axios/lib/core/InterceptorManager.js", "../../../node_modules/axios/lib/core/dispatchRequest.js", "../../../node_modules/axios/lib/core/transformData.js", "../../../node_modules/axios/lib/defaults/index.js", "../../../node_modules/axios/lib/defaults/transitional.js", "../../../node_modules/axios/lib/helpers/toURLEncodedForm.js", "../../../node_modules/axios/lib/platform/index.js", "../../../node_modules/axios/lib/platform/browser/index.js", "../../../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js", "../../../node_modules/axios/lib/platform/browser/classes/FormData.js", "../../../node_modules/axios/lib/platform/browser/classes/Blob.js", "../../../node_modules/axios/lib/platform/common/utils.js", "../../../node_modules/axios/lib/helpers/formDataToJSON.js", "../../../node_modules/axios/lib/cancel/isCancel.js", "../../../node_modules/axios/lib/cancel/CanceledError.js", "../../../node_modules/axios/lib/adapters/adapters.js", "../../../node_modules/axios/lib/adapters/xhr.js", "../../../node_modules/axios/lib/core/settle.js", "../../../node_modules/axios/lib/helpers/parseProtocol.js", "../../../node_modules/axios/lib/helpers/progressEventReducer.js", "../../../node_modules/axios/lib/helpers/speedometer.js", "../../../node_modules/axios/lib/helpers/throttle.js", "../../../node_modules/axios/lib/helpers/resolveConfig.js", "../../../node_modules/axios/lib/helpers/isURLSameOrigin.js", "../../../node_modules/axios/lib/helpers/cookies.js", "../../../node_modules/axios/lib/core/buildFullPath.js", "../../../node_modules/axios/lib/helpers/isAbsoluteURL.js", "../../../node_modules/axios/lib/helpers/combineURLs.js", "../../../node_modules/axios/lib/core/mergeConfig.js", "../../../node_modules/axios/lib/adapters/fetch.js", "../../../node_modules/axios/lib/helpers/composeSignals.js", "../../../node_modules/axios/lib/helpers/trackStream.js", "../../../node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js", "../../../node_modules/axios/lib/env/data.js", "../../../node_modules/axios/lib/helpers/validator.js", "../../../node_modules/axios/lib/cancel/CancelToken.js", "../../../node_modules/axios/lib/helpers/spread.js", "../../../node_modules/axios/lib/helpers/isAxiosError.js", "../../../node_modules/axios/lib/helpers/HttpStatusCode.js", "../../javascript/gobierto_data/webapp/components/Sidebar.vue", "../../javascript/gobierto_data/webapp/components/sidebar/SidebarCategories.vue", "../../javascript/gobierto_data/webapp/components/sidebar/SidebarDatasets.vue", "../../javascript/gobierto_data/webapp/components/sidebar/SidebarQueries.vue", "../../javascript/gobierto_data/webapp/layouts/Layout.vue", "../../javascript/gobierto_data/webapp/components/Index.vue", "../../javascript/gobierto_data/webapp/components/commons/Info.vue", "../../javascript/gobierto_data/webapp/components/commons/InfoBlockText.vue", "../../javascript/gobierto_data/webapp/components/commons/LinkableText.vue", "../../javascript/gobierto_data/webapp/components/Dataset.vue", "../../javascript/gobierto_data/webapp/components/sets/DatasetNav.vue", "../../javascript/gobierto_data/webapp/components/sets/SummaryTab.vue", "../../javascript/gobierto_data/webapp/components/commons/Caret.vue", "../../javascript/gobierto_data/webapp/components/commons/Description.vue", "../../javascript/gobierto_data/webapp/components/commons/InfoTab.vue", "../../javascript/gobierto_data/webapp/components/commons/Button.vue", "../../javascript/gobierto_data/webapp/components/commons/DownloadButton.vue", "../../javascript/gobierto_data/lib/factories/download.js", "../../javascript/gobierto_data/webapp/components/commons/DownloadLink.vue", "../../javascript/gobierto_data/webapp/components/commons/Queries.vue", "../../javascript/gobierto_data/webapp/components/commons/PrivateIcon.vue", "../../javascript/gobierto_data/webapp/components/commons/Resources.vue", "../../javascript/gobierto_data/webapp/components/commons/ResourcesItem.vue", "../../javascript/gobierto_data/webapp/components/commons/Visualizations.vue", "../../javascript/gobierto_data/webapp/components/sets/VisualizationsTab.vue", "../../javascript/gobierto_data/lib/factories/visualizations.js", "../../javascript/gobierto_data/webapp/components/sets/VisualizationsList.vue", "../../javascript/gobierto_data/lib/helpers.js", "../../javascript/gobierto_data/webapp/layouts/CardVisualization.vue", "../../javascript/gobierto_data/webapp/components/sets/VisualizationsItem.vue", "../../javascript/gobierto_data/webapp/components/commons/SavingDialog.vue", "../../javascript/gobierto_data/webapp/components/sets/DataTab.vue", "../../javascript/gobierto_data/webapp/components/sets/data/SQLEditorCode.vue", "../../../node_modules/codemirror/src/model/selection_updates.js", "../../../node_modules/codemirror/src/util/operation_group.js", "../../../node_modules/codemirror/src/util/event.js", "../../../node_modules/codemirror/src/util/browser.js", "../../../node_modules/codemirror/src/util/misc.js", "../../../node_modules/codemirror/src/display/scrolling.js", "../../../node_modules/codemirror/src/line/pos.js", "../../../node_modules/codemirror/src/line/utils_line.js", "../../../node_modules/codemirror/src/measurement/position_measurement.js", "../../../node_modules/codemirror/src/line/line_data.js", "../../../node_modules/codemirror/src/util/bidi.js", "../../../node_modules/codemirror/src/util/dom.js", "../../../node_modules/codemirror/src/util/feature_detection.js", "../../../node_modules/codemirror/src/line/highlight.js", "../../../node_modules/codemirror/src/modes.js", "../../../node_modules/codemirror/src/util/StringStream.js", "../../../node_modules/codemirror/src/line/spans.js", "../../../node_modules/codemirror/src/line/saw_special_spans.js", "../../../node_modules/codemirror/src/display/update_line.js", "../../../node_modules/codemirror/src/measurement/widgets.js", "../../../node_modules/codemirror/src/display/highlight_worker.js", "../../../node_modules/codemirror/src/display/operations.js", "../../../node_modules/codemirror/src/display/focus.js", "../../../node_modules/codemirror/src/display/selection.js", "../../../node_modules/codemirror/src/display/scrollbars.js", "../../../node_modules/codemirror/src/display/update_lines.js", "../../../node_modules/codemirror/src/display/update_display.js", "../../../node_modules/codemirror/src/display/line_numbers.js", "../../../node_modules/codemirror/src/display/view_tracking.js", "../../../node_modules/codemirror/src/model/history.js", "../../../node_modules/codemirror/src/model/change_measurement.js", "../../../node_modules/codemirror/src/model/selection.js", "../../../node_modules/codemirror/src/model/document_data.js", "../../../node_modules/codemirror/src/display/mode_state.js", "../../javascript/gobierto_data/webapp/components/sets/data/SQLEditorHeader.vue", "../../javascript/gobierto_data/webapp/components/commons/PulseSpinner.vue", "../../javascript/gobierto_data/webapp/components/commons/RecentQueries.vue", "../../javascript/gobierto_data/webapp/components/sets/data/SQLEditorResults.vue", "../../javascript/gobierto_data/webapp/components/sets/QueriesTab.vue", "../../javascript/gobierto_data/webapp/components/sets/DownloadsTab.vue", "../../javascript/gobierto_data/webapp/components/sets/MapTab.vue", "../../javascript/gobierto_data/lib/factories/queries.js", "../../javascript/gobierto_data/lib/factories/data.js", "../../javascript/gobierto_data/webapp/pages/Visualizations.vue", "../../javascript/gobierto_data/webapp/components/landingviz/VisualizationsGrid.vue", "../../javascript/lib/vue/accessibility/index.js"],
  "sourcesContent": ["export const process = {env: {}};\n", "/*!\n * jQuery JavaScript Library v3.6.0\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: 2021-03-02T17:08Z\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 #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.0\",\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 (#9521)\n\t// Strict HTML recognition (#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 #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 (#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 #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 (#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 (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#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 (#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 (#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 (#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 (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #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 (#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 (#504, #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 as it's already being fired\n\t\t// in leverageNative.\n\t\t_default: function() {\n\t\t\treturn true;\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\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 (#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\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 getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #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\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 (#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\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, #12537)\n\t//   .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\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\trcustomProp = /^--/,\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 (#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 #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 (#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 )` (#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.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\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// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#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 classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\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\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\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\telem.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 classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\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\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\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\telem.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 type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\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\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\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = 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 (#14686, #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 (#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 (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#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 (#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// #7653, #8125, #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 (#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 #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 (#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 #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 (#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// #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 (#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// #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 #8605, #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// #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\nvar rtrim = /^[\\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, \"\" );\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// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n", "// I18n.js\n// =======\n//\n// This small library provides the Rails I18n API on the Javascript.\n// You don't actually have to use Rails (or even Ruby) to use I18n.js.\n// Just make sure you export all translations in an object like this:\n//\n//     I18n.translations.en = {\n//       hello: \"Hello World\"\n//     };\n//\n// See tests for specific formatting like numbers and dates.\n//\n\n// Using UMD pattern from\n// https://github.com/umdjs/umd#regular-module\n// `returnExports.js` version\n;(function (root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define(\"i18n\", function(){ return factory(root);});\n  } else if (typeof module === 'object' && module.exports) {\n    // Node. Does not work with strict CommonJS, but\n    // only CommonJS-like environments that support module.exports,\n    // like Node.\n    module.exports = factory(root);\n  } else {\n    // Browser globals (root is window)\n    root.I18n = factory(root);\n  }\n}(this, function(global) {\n  \"use strict\";\n\n  // Use previously defined object if exists in current scope\n  var I18n = global && global.I18n || {};\n\n  // Just cache the Array#slice function.\n  var slice = Array.prototype.slice;\n\n  // Apply number padding.\n  var padding = function(number) {\n    return (\"0\" + number.toString()).substr(-2);\n  };\n\n  // Improved toFixed number rounding function with support for unprecise floating points\n  // JavaScript's standard toFixed function does not round certain numbers correctly (for example 0.105 with precision 2).\n  var toFixed = function(number, precision) {\n    return decimalAdjust('round', number, -precision).toFixed(precision);\n  };\n\n  // Is a given variable an object?\n  // Borrowed from Underscore.js\n  var isObject = function(obj) {\n    var type = typeof obj;\n    return type === 'function' || type === 'object'\n  };\n\n  var isFunction = function(func) {\n    var type = typeof func;\n    return type === 'function'\n  };\n\n  // Check if value is different than undefined and null;\n  var isSet = function(value) {\n    return typeof(value) !== 'undefined' && value !== null;\n  };\n\n  // Is a given value an array?\n  // Borrowed from Underscore.js\n  var isArray = function(val) {\n    if (Array.isArray) {\n      return Array.isArray(val);\n    }\n    return Object.prototype.toString.call(val) === '[object Array]';\n  };\n\n  var isString = function(val) {\n    return typeof val === 'string' || Object.prototype.toString.call(val) === '[object String]';\n  };\n\n  var isNumber = function(val) {\n    return typeof val === 'number' || Object.prototype.toString.call(val) === '[object Number]';\n  };\n\n  var isBoolean = function(val) {\n    return val === true || val === false;\n  };\n\n  var isNull = function(val) {\n    return val === null;\n  };\n\n  var decimalAdjust = function(type, value, exp) {\n    // If the exp is undefined or zero...\n    if (typeof exp === 'undefined' || +exp === 0) {\n      return Math[type](value);\n    }\n    value = +value;\n    exp = +exp;\n    // If the value is not a number or the exp is not an integer...\n    if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) {\n      return NaN;\n    }\n    // Shift\n    value = value.toString().split('e');\n    value = Math[type](+(value[0] + 'e' + (value[1] ? (+value[1] - exp) : -exp)));\n    // Shift back\n    value = value.toString().split('e');\n    return +(value[0] + 'e' + (value[1] ? (+value[1] + exp) : exp));\n  };\n\n  var lazyEvaluate = function(message, scope) {\n    if (isFunction(message)) {\n      return message(scope);\n    } else {\n      return message;\n    }\n  };\n\n  var merge = function (dest, obj) {\n    var key, value;\n    for (key in obj) if (obj.hasOwnProperty(key)) {\n      value = obj[key];\n      if (isString(value) || isNumber(value) || isBoolean(value) || isArray(value) || isNull(value)) {\n        dest[key] = value;\n      } else {\n        if (dest[key] == null) dest[key] = {};\n        merge(dest[key], value);\n      }\n    }\n    return dest;\n  };\n\n  // Set default days/months translations.\n  var DATE = {\n      day_names: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]\n    , abbr_day_names: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"]\n    , month_names: [null, \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"]\n    , abbr_month_names: [null, \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n    , meridian: [\"AM\", \"PM\"]\n  };\n\n  // Set default number format.\n  var NUMBER_FORMAT = {\n      precision: 3\n    , separator: \".\"\n    , delimiter: \",\"\n    , strip_insignificant_zeros: false\n  };\n\n  // Set default currency format.\n  var CURRENCY_FORMAT = {\n      unit: \"$\"\n    , precision: 2\n    , format: \"%u%n\"\n    , sign_first: true\n    , delimiter: \",\"\n    , separator: \".\"\n  };\n\n  // Set default percentage format.\n  var PERCENTAGE_FORMAT = {\n      unit: \"%\"\n    , precision: 3\n    , format: \"%n%u\"\n    , separator: \".\"\n    , delimiter: \"\"\n  };\n\n  // Set default size units.\n  var SIZE_UNITS = [null, \"kb\", \"mb\", \"gb\", \"tb\"];\n\n  // Other default options\n  var DEFAULT_OPTIONS = {\n    // Set default locale. This locale will be used when fallback is enabled and\n    // the translation doesn't exist in a particular locale.\n      defaultLocale: \"en\"\n    // Set the current locale to `en`.\n    , locale: \"en\"\n    // Set the translation key separator.\n    , defaultSeparator: \".\"\n    // Set the placeholder format. Accepts `{{placeholder}}` and `%{placeholder}`.\n    , placeholder: /(?:\\{\\{|%\\{)(.*?)(?:\\}\\}?)/gm\n    // Set if engine should fallback to the default locale when a translation\n    // is missing.\n    , fallbacks: false\n    // Set the default translation object.\n    , translations: {}\n    // Set missing translation behavior. 'message' will display a message\n    // that the translation is missing, 'guess' will try to guess the string\n    , missingBehaviour: 'message'\n    // if you use missingBehaviour with 'message', but want to know that the\n    // string is actually missing for testing purposes, you can prefix the\n    // guessed string by setting the value here. By default, no prefix!\n    , missingTranslationPrefix: ''\n  };\n\n  // Set default locale. This locale will be used when fallback is enabled and\n  // the translation doesn't exist in a particular locale.\n  I18n.reset = function() {\n    var key;\n    for (key in DEFAULT_OPTIONS) {\n      this[key] = DEFAULT_OPTIONS[key];\n    }\n  };\n\n  // Much like `reset`, but only assign options if not already assigned\n  I18n.initializeOptions = function() {\n    var key;\n    for (key in DEFAULT_OPTIONS) if (!isSet(this[key])) {\n      this[key] = DEFAULT_OPTIONS[key];\n    }\n  };\n  I18n.initializeOptions();\n\n  // Return a list of all locales that must be tried before returning the\n  // missing translation message. By default, this will consider the inline option,\n  // current locale and fallback locale.\n  //\n  //     I18n.locales.get(\"de-DE\");\n  //     // [\"de-DE\", \"de\", \"en\"]\n  //\n  // You can define custom rules for any locale. Just make sure you return a array\n  // containing all locales.\n  //\n  //     // Default the Wookie locale to English.\n  //     I18n.locales[\"wk\"] = function(locale) {\n  //       return [\"en\"];\n  //     };\n  //\n  I18n.locales = {};\n\n  // Retrieve locales based on inline locale, current locale or default to\n  // I18n's detection.\n  I18n.locales.get = function(locale) {\n    var result = this[locale] || this[I18n.locale] || this[\"default\"];\n\n    if (isFunction(result)) {\n      result = result(locale);\n    }\n\n    if (isArray(result) === false) {\n      result = [result];\n    }\n\n    return result;\n  };\n\n  // The default locale list.\n  I18n.locales[\"default\"] = function(locale) {\n    var locales = []\n      , list = []\n    ;\n\n    // Handle the inline locale option that can be provided to\n    // the `I18n.t` options.\n    if (locale) {\n      locales.push(locale);\n    }\n\n    // Add the current locale to the list.\n    if (!locale && I18n.locale) {\n      locales.push(I18n.locale);\n    }\n\n    // Add the default locale if fallback strategy is enabled.\n    if (I18n.fallbacks && I18n.defaultLocale) {\n      locales.push(I18n.defaultLocale);\n    }\n\n    // Locale code format 1:\n    // According to RFC4646 (http://www.ietf.org/rfc/rfc4646.txt)\n    // language codes for Traditional Chinese should be `zh-Hant`\n    //\n    // But due to backward compatibility\n    // We use older version of IETF language tag\n    // @see http://www.w3.org/TR/html401/struct/dirlang.html\n    // @see http://en.wikipedia.org/wiki/IETF_language_tag\n    //\n    // Format: `language-code = primary-code ( \"-\" subcode )*`\n    //\n    // primary-code uses ISO639-1\n    // @see http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes\n    // @see http://www.iso.org/iso/home/standards/language_codes.htm\n    //\n    // subcode uses ISO 3166-1 alpha-2\n    // @see http://en.wikipedia.org/wiki/ISO_3166\n    // @see http://www.iso.org/iso/country_codes.htm\n    //\n    // @note\n    //   subcode can be in upper case or lower case\n    //   defining it in upper case is a convention only\n\n\n    // Locale code format 2:\n    // Format: `code = primary-code ( \"-\" region-code )*`\n    // primary-code uses ISO 639-1\n    // script-code uses ISO 15924\n    // region-code uses ISO 3166-1 alpha-2\n    // Example: zh-Hant-TW, en-HK, zh-Hant-CN\n    //\n    // It is similar to RFC4646 (or actually the same),\n    // but seems to be limited to language, script, region\n\n    // Compute each locale with its country code.\n    // So this will return an array containing\n    // `de-DE` and `de`\n    // or\n    // `zh-hans-tw`, `zh-hans`, `zh`\n    // locales.\n    locales.forEach(function(locale) {\n      var localeParts = locale.split(\"-\");\n      var firstFallback = null;\n      var secondFallback = null;\n      if (localeParts.length === 3) {\n        firstFallback = [\n          localeParts[0],\n          localeParts[1]\n        ].join(\"-\");\n        secondFallback = localeParts[0];\n      }\n      else if (localeParts.length === 2) {\n        firstFallback = localeParts[0];\n      }\n\n      if (list.indexOf(locale) === -1) {\n        list.push(locale);\n      }\n\n      if (! I18n.fallbacks) {\n        return;\n      }\n\n      [\n        firstFallback,\n        secondFallback\n      ].forEach(function(nullableFallbackLocale) {\n        // We don't want null values\n        if (typeof nullableFallbackLocale === \"undefined\") { return; }\n        if (nullableFallbackLocale === null) { return; }\n        // We don't want duplicate values\n        //\n        // Comparing with `locale` first is faster than\n        // checking whether value's presence in the list\n        if (nullableFallbackLocale === locale) { return; }\n        if (list.indexOf(nullableFallbackLocale) !== -1) { return; }\n\n        list.push(nullableFallbackLocale);\n      });\n    });\n\n    // No locales set? English it is.\n    if (!locales.length) {\n      locales.push(\"en\");\n    }\n\n    return list;\n  };\n\n  // Hold pluralization rules.\n  I18n.pluralization = {};\n\n  // Return the pluralizer for a specific locale.\n  // If no specify locale is found, then I18n's default will be used.\n  I18n.pluralization.get = function(locale) {\n    return this[locale] || this[I18n.locale] || this[\"default\"];\n  };\n\n  // The default pluralizer rule.\n  // It detects the `zero`, `one`, and `other` scopes.\n  I18n.pluralization[\"default\"] = function(count) {\n    switch (count) {\n      case 0: return [\"zero\", \"other\"];\n      case 1: return [\"one\"];\n      default: return [\"other\"];\n    }\n  };\n\n  // Return current locale. If no locale has been set, then\n  // the current locale will be the default locale.\n  I18n.currentLocale = function() {\n    return this.locale || this.defaultLocale;\n  };\n\n  // Check if value is different than undefined and null;\n  I18n.isSet = isSet;\n\n  // Find and process the translation using the provided scope and options.\n  // This is used internally by some functions and should not be used as an\n  // public API.\n  I18n.lookup = function(scope, options) {\n    options = options || {};\n\n    var locales = this.locales.get(options.locale).slice()\n      , locale\n      , scopes\n      , fullScope\n      , translations\n    ;\n\n    fullScope = this.getFullScope(scope, options);\n\n    while (locales.length) {\n      locale = locales.shift();\n      scopes = fullScope.split(options.separator || this.defaultSeparator);\n      translations = this.translations[locale];\n\n      if (!translations) {\n        continue;\n      }\n      while (scopes.length) {\n        translations = translations[scopes.shift()];\n\n        if (translations === undefined || translations === null) {\n          break;\n        }\n      }\n\n      if (translations !== undefined && translations !== null) {\n        return translations;\n      }\n    }\n\n    if (isSet(options.defaultValue)) {\n      return lazyEvaluate(options.defaultValue, scope);\n    }\n  };\n\n  // lookup pluralization rule key into translations\n  I18n.pluralizationLookupWithoutFallback = function(count, locale, translations) {\n    var pluralizer = this.pluralization.get(locale)\n      , pluralizerKeys = pluralizer(count)\n      , pluralizerKey\n      , message;\n\n    if (isObject(translations)) {\n      while (pluralizerKeys.length) {\n        pluralizerKey = pluralizerKeys.shift();\n        if (isSet(translations[pluralizerKey])) {\n          message = translations[pluralizerKey];\n          break;\n        }\n      }\n    }\n\n    return message;\n  };\n\n  // Lookup dedicated to pluralization\n  I18n.pluralizationLookup = function(count, scope, options) {\n    options = options || {};\n    var locales = this.locales.get(options.locale).slice()\n      , locale\n      , scopes\n      , translations\n      , message\n    ;\n    scope = this.getFullScope(scope, options);\n\n    while (locales.length) {\n      locale = locales.shift();\n      scopes = scope.split(options.separator || this.defaultSeparator);\n      translations = this.translations[locale];\n\n      if (!translations) {\n        continue;\n      }\n\n      while (scopes.length) {\n        translations = translations[scopes.shift()];\n        if (!isObject(translations)) {\n          break;\n        }\n        if (scopes.length === 0) {\n          message = this.pluralizationLookupWithoutFallback(count, locale, translations);\n        }\n      }\n      if (typeof message !== \"undefined\" && message !== null) {\n        break;\n      }\n    }\n\n    if (typeof message === \"undefined\" || message === null) {\n      if (isSet(options.defaultValue)) {\n        if (isObject(options.defaultValue)) {\n          message = this.pluralizationLookupWithoutFallback(count, options.locale, options.defaultValue);\n        } else {\n          message = options.defaultValue;\n        }\n        translations = options.defaultValue;\n      }\n    }\n\n    return { message: message, translations: translations };\n  };\n\n  // Rails changed the way the meridian is stored.\n  // It started with `date.meridian` returning an array,\n  // then it switched to `time.am` and `time.pm`.\n  // This function abstracts this difference and returns\n  // the correct meridian or the default value when none is provided.\n  I18n.meridian = function() {\n    var time = this.lookup(\"time\");\n    var date = this.lookup(\"date\");\n\n    if (time && time.am && time.pm) {\n      return [time.am, time.pm];\n    } else if (date && date.meridian) {\n      return date.meridian;\n    } else {\n      return DATE.meridian;\n    }\n  };\n\n  // Merge serveral hash options, checking if value is set before\n  // overwriting any value. The precedence is from left to right.\n  //\n  //     I18n.prepareOptions({name: \"John Doe\"}, {name: \"Mary Doe\", role: \"user\"});\n  //     #=> {name: \"John Doe\", role: \"user\"}\n  //\n  I18n.prepareOptions = function() {\n    var args = slice.call(arguments)\n      , options = {}\n      , subject\n    ;\n\n    while (args.length) {\n      subject = args.shift();\n\n      if (typeof(subject) != \"object\") {\n        continue;\n      }\n\n      for (var attr in subject) {\n        if (!subject.hasOwnProperty(attr)) {\n          continue;\n        }\n\n        if (isSet(options[attr])) {\n          continue;\n        }\n\n        options[attr] = subject[attr];\n      }\n    }\n\n    return options;\n  };\n\n  // Generate a list of translation options for default fallbacks.\n  // `defaultValue` is also deleted from options as it is returned as part of\n  // the translationOptions array.\n  I18n.createTranslationOptions = function(scope, options) {\n    var translationOptions = [{scope: scope}];\n\n    // Defaults should be an array of hashes containing either\n    // fallback scopes or messages\n    if (isSet(options.defaults)) {\n      translationOptions = translationOptions.concat(options.defaults);\n    }\n\n    // Maintain support for defaultValue. Since it is always a message\n    // insert it in to the translation options as such.\n    if (isSet(options.defaultValue)) {\n      translationOptions.push({ message: options.defaultValue });\n    }\n\n    return translationOptions;\n  };\n\n  // Translate the given scope with the provided options.\n  I18n.translate = function(scope, options) {\n    options = options || {};\n\n    var translationOptions = this.createTranslationOptions(scope, options);\n\n    var translation;\n    var usedScope = scope;\n\n    var optionsWithoutDefault = this.prepareOptions(options)\n    delete optionsWithoutDefault.defaultValue\n\n    // Iterate through the translation options until a translation\n    // or message is found.\n    var translationFound =\n      translationOptions.some(function(translationOption) {\n        if (isSet(translationOption.scope)) {\n          usedScope = translationOption.scope;\n          translation = this.lookup(usedScope, optionsWithoutDefault);\n        } else if (isSet(translationOption.message)) {\n          translation = lazyEvaluate(translationOption.message, scope);\n        }\n\n        if (translation !== undefined && translation !== null) {\n          return true;\n        }\n      }, this);\n\n    if (!translationFound) {\n      return this.missingTranslation(scope, options);\n    }\n\n    if (typeof(translation) === \"string\") {\n      translation = this.interpolate(translation, options);\n    } else if (isArray(translation)) {\n      translation = translation.map(function(t) {\n        return (typeof(t) === \"string\" ? this.interpolate(t, options) : t);\n      }, this);\n    } else if (isObject(translation) && isSet(options.count)) {\n      translation = this.pluralize(options.count, usedScope, options);\n    }\n\n    return translation;\n  };\n\n  // This function interpolates the all variables in the given message.\n  I18n.interpolate = function(message, options) {\n    if (message == null) {\n      return message;\n    }\n\n    options = options || {};\n    var matches = message.match(this.placeholder)\n      , placeholder\n      , value\n      , name\n      , regex\n    ;\n\n    if (!matches) {\n      return message;\n    }\n\n    while (matches.length) {\n      placeholder = matches.shift();\n      name = placeholder.replace(this.placeholder, \"$1\");\n\n      if (isSet(options[name])) {\n        value = options[name].toString().replace(/\\$/gm, \"_#$#_\");\n      } else if (name in options) {\n        value = this.nullPlaceholder(placeholder, message, options);\n      } else {\n        value = this.missingPlaceholder(placeholder, message, options);\n      }\n\n      regex = new RegExp(placeholder.replace(/{/gm, \"\\\\{\").replace(/}/gm, \"\\\\}\"));\n      message = message.replace(regex, value);\n    }\n\n    return message.replace(/_#\\$#_/g, \"$\");\n  };\n\n  // Pluralize the given scope using the `count` value.\n  // The pluralized translation may have other placeholders,\n  // which will be retrieved from `options`.\n  I18n.pluralize = function(count, scope, options) {\n    options = this.prepareOptions({count: String(count)}, options)\n    var pluralizer, result;\n\n    result = this.pluralizationLookup(count, scope, options);\n    if (typeof result.translations === \"undefined\" || result.translations == null) {\n      return this.missingTranslation(scope, options);\n    }\n\n    if (typeof result.message !== \"undefined\" && result.message != null) {\n      return this.interpolate(result.message, options);\n    }\n    else {\n      pluralizer = this.pluralization.get(options.locale);\n      return this.missingTranslation(scope + '.' + pluralizer(count)[0], options);\n    }\n  };\n\n  // Return a missing translation message for the given parameters.\n  I18n.missingTranslation = function(scope, options) {\n    //guess intended string\n    if(this.missingBehaviour === 'guess'){\n      //get only the last portion of the scope\n      var s = scope.split('.').slice(-1)[0];\n      //replace underscore with space && camelcase with space and lowercase letter\n      return (this.missingTranslationPrefix.length > 0 ? this.missingTranslationPrefix : '') +\n          s.replace(/_/g,' ').replace(/([a-z])([A-Z])/g,\n          function(match, p1, p2) {return p1 + ' ' + p2.toLowerCase()} );\n    }\n\n    var localeForTranslation = (options != null && options.locale != null) ? options.locale : this.currentLocale();\n    var fullScope           = this.getFullScope(scope, options);\n    var fullScopeWithLocale = [localeForTranslation, fullScope].join(options.separator || this.defaultSeparator);\n\n    return '[missing \"' + fullScopeWithLocale + '\" translation]';\n  };\n\n  // Return a missing placeholder message for given parameters\n  I18n.missingPlaceholder = function(placeholder, message, options) {\n    return \"[missing \" + placeholder + \" value]\";\n  };\n\n  I18n.nullPlaceholder = function() {\n    return I18n.missingPlaceholder.apply(I18n, arguments);\n  };\n\n  // Format number using localization rules.\n  // The options will be retrieved from the `number.format` scope.\n  // If this isn't present, then the following options will be used:\n  //\n  // - `precision`: `3`\n  // - `separator`: `\".\"`\n  // - `delimiter`: `\",\"`\n  // - `strip_insignificant_zeros`: `false`\n  //\n  // You can also override these options by providing the `options` argument.\n  //\n  I18n.toNumber = function(number, options) {\n    options = this.prepareOptions(\n        options\n      , this.lookup(\"number.format\")\n      , NUMBER_FORMAT\n    );\n\n    var negative = number < 0\n      , string = toFixed(Math.abs(number), options.precision).toString()\n      , parts = string.split(\".\")\n      , precision\n      , buffer = []\n      , formattedNumber\n      , format = options.format || \"%n\"\n      , sign = negative ? \"-\" : \"\"\n    ;\n\n    number = parts[0];\n    precision = parts[1];\n\n    while (number.length > 0) {\n      buffer.unshift(number.substr(Math.max(0, number.length - 3), 3));\n      number = number.substr(0, number.length -3);\n    }\n\n    formattedNumber = buffer.join(options.delimiter);\n\n    if (options.strip_insignificant_zeros && precision) {\n      precision = precision.replace(/0+$/, \"\");\n    }\n\n    if (options.precision > 0 && precision) {\n      formattedNumber += options.separator + precision;\n    }\n\n    if (options.sign_first) {\n      format = \"%s\" + format;\n    }\n    else {\n      format = format.replace(\"%n\", \"%s%n\");\n    }\n\n    formattedNumber = format\n      .replace(\"%u\", options.unit)\n      .replace(\"%n\", formattedNumber)\n      .replace(\"%s\", sign)\n    ;\n\n    return formattedNumber;\n  };\n\n  // Format currency with localization rules.\n  // The options will be retrieved from the `number.currency.format` and\n  // `number.format` scopes, in that order.\n  //\n  // Any missing option will be retrieved from the `I18n.toNumber` defaults and\n  // the following options:\n  //\n  // - `unit`: `\"$\"`\n  // - `precision`: `2`\n  // - `format`: `\"%u%n\"`\n  // - `delimiter`: `\",\"`\n  // - `separator`: `\".\"`\n  //\n  // You can also override these options by providing the `options` argument.\n  //\n  I18n.toCurrency = function(number, options) {\n    options = this.prepareOptions(\n        options\n      , this.lookup(\"number.currency.format\", options)\n      , this.lookup(\"number.format\", options)\n      , CURRENCY_FORMAT\n    );\n\n    return this.toNumber(number, options);\n  };\n\n  // Localize several values.\n  // You can provide the following scopes: `currency`, `number`, or `percentage`.\n  // If you provide a scope that matches the `/^(date|time)/` regular expression\n  // then the `value` will be converted by using the `I18n.toTime` function.\n  //\n  // It will default to the value's `toString` function.\n  //\n  I18n.localize = function(scope, value, options) {\n    options || (options = {});\n\n    switch (scope) {\n      case \"currency\":\n        return this.toCurrency(value, options);\n      case \"number\":\n        scope = this.lookup(\"number.format\", options);\n        return this.toNumber(value, scope);\n      case \"percentage\":\n        return this.toPercentage(value, options);\n      default:\n        var localizedValue;\n\n        if (scope.match(/^(date|time)/)) {\n          localizedValue = this.toTime(scope, value, options);\n        } else {\n          localizedValue = value.toString();\n        }\n\n        return this.interpolate(localizedValue, options);\n    }\n  };\n\n  // Parse a given `date` string into a JavaScript Date object.\n  // This function is time zone aware.\n  //\n  // The following string formats are recognized:\n  //\n  //    yyyy-mm-dd\n  //    yyyy-mm-dd[ T]hh:mm::ss\n  //    yyyy-mm-dd[ T]hh:mm::ss\n  //    yyyy-mm-dd[ T]hh:mm::ssZ\n  //    yyyy-mm-dd[ T]hh:mm::ss+0000\n  //    yyyy-mm-dd[ T]hh:mm::ss+00:00\n  //    yyyy-mm-dd[ T]hh:mm::ss.123Z\n  //\n  I18n.parseDate = function(date) {\n    var matches, convertedDate, fraction;\n    // A date input of `null` or `undefined` will be returned as-is\n    if (date == null) {\n      return date;\n    }\n    // we have a date, so just return it.\n    if (typeof(date) === \"object\") {\n      return date;\n    }\n\n    matches = date.toString().match(/(\\d{4})-(\\d{2})-(\\d{2})(?:[ T](\\d{2}):(\\d{2}):(\\d{2})([\\.,]\\d{1,3})?)?(Z|\\+00:?00)?/);\n\n    if (matches) {\n      for (var i = 1; i <= 6; i++) {\n        matches[i] = parseInt(matches[i], 10) || 0;\n      }\n\n      // month starts on 0\n      matches[2] -= 1;\n\n      fraction = matches[7] ? 1000 * (\"0\" + matches[7]) : null;\n\n      if (matches[8]) {\n        convertedDate = new Date(Date.UTC(matches[1], matches[2], matches[3], matches[4], matches[5], matches[6], fraction));\n      } else {\n        convertedDate = new Date(matches[1], matches[2], matches[3], matches[4], matches[5], matches[6], fraction);\n      }\n    } else if (typeof(date) == \"number\") {\n      // UNIX timestamp\n      convertedDate = new Date();\n      convertedDate.setTime(date);\n    } else if (date.match(/([A-Z][a-z]{2}) ([A-Z][a-z]{2}) (\\d+) (\\d+:\\d+:\\d+) ([+-]\\d+) (\\d+)/)) {\n      // This format `Wed Jul 20 13:03:39 +0000 2011` is parsed by\n      // webkit/firefox, but not by IE, so we must parse it manually.\n      convertedDate = new Date();\n      convertedDate.setTime(Date.parse([\n        RegExp.$1, RegExp.$2, RegExp.$3, RegExp.$6, RegExp.$4, RegExp.$5\n      ].join(\" \")));\n    } else if (date.match(/\\d+ \\d+:\\d+:\\d+ [+-]\\d+ \\d+/)) {\n      // a valid javascript format with timezone info\n      convertedDate = new Date();\n      convertedDate.setTime(Date.parse(date));\n    } else {\n      // an arbitrary javascript string\n      convertedDate = new Date();\n      convertedDate.setTime(Date.parse(date));\n    }\n\n    return convertedDate;\n  };\n\n  // Formats time according to the directives in the given format string.\n  // The directives begins with a percent (%) character. Any text not listed as a\n  // directive will be passed through to the output string.\n  //\n  // The accepted formats are:\n  //\n  //     %a     - The abbreviated weekday name (Sun)\n  //     %A     - The full weekday name (Sunday)\n  //     %b     - The abbreviated month name (Jan)\n  //     %B     - The full month name (January)\n  //     %c     - The preferred local date and time representation\n  //     %d     - Day of the month (01..31)\n  //     %-d    - Day of the month (1..31)\n  //     %H     - Hour of the day, 24-hour clock (00..23)\n  //     %-H/%k - Hour of the day, 24-hour clock (0..23)\n  //     %I     - Hour of the day, 12-hour clock (01..12)\n  //     %-I/%l - Hour of the day, 12-hour clock (1..12)\n  //     %m     - Month of the year (01..12)\n  //     %-m    - Month of the year (1..12)\n  //     %M     - Minute of the hour (00..59)\n  //     %-M    - Minute of the hour (0..59)\n  //     %p     - Meridian indicator (AM  or  PM)\n  //     %P     - Meridian indicator (am  or  pm)\n  //     %S     - Second of the minute (00..60)\n  //     %-S    - Second of the minute (0..60)\n  //     %w     - Day of the week (Sunday is 0, 0..6)\n  //     %y     - Year without a century (00..99)\n  //     %-y    - Year without a century (0..99)\n  //     %Y     - Year with century\n  //     %z/%Z  - Timezone offset (+0545)\n  //\n  I18n.strftime = function(date, format, options) {\n    var options = this.lookup(\"date\", options)\n      , meridianOptions = I18n.meridian()\n    ;\n\n    if (!options) {\n      options = {};\n    }\n\n    options = this.prepareOptions(options, DATE);\n\n    if (isNaN(date.getTime())) {\n      throw new Error('I18n.strftime() requires a valid date object, but received an invalid date.');\n    }\n\n    var weekDay = date.getDay()\n      , day = date.getDate()\n      , year = date.getFullYear()\n      , month = date.getMonth() + 1\n      , hour = date.getHours()\n      , hour12 = hour\n      , meridian = hour > 11 ? 1 : 0\n      , secs = date.getSeconds()\n      , mins = date.getMinutes()\n      , offset = date.getTimezoneOffset()\n      , absOffsetHours = Math.floor(Math.abs(offset / 60))\n      , absOffsetMinutes = Math.abs(offset) - (absOffsetHours * 60)\n      , timezoneoffset = (offset > 0 ? \"-\" : \"+\") +\n          (absOffsetHours.toString().length < 2 ? \"0\" + absOffsetHours : absOffsetHours) +\n          (absOffsetMinutes.toString().length < 2 ? \"0\" + absOffsetMinutes : absOffsetMinutes)\n    ;\n\n    if (hour12 > 12) {\n      hour12 = hour12 - 12;\n    } else if (hour12 === 0) {\n      hour12 = 12;\n    }\n\n    format = format.replace(\"%a\", options.abbr_day_names[weekDay]);\n    format = format.replace(\"%A\", options.day_names[weekDay]);\n    format = format.replace(\"%b\", options.abbr_month_names[month]);\n    format = format.replace(\"%B\", options.month_names[month]);\n    format = format.replace(\"%d\", padding(day));\n    format = format.replace(\"%e\", day);\n    format = format.replace(\"%-d\", day);\n    format = format.replace(\"%H\", padding(hour));\n    format = format.replace(\"%-H\", hour);\n    format = format.replace(\"%k\", hour);\n    format = format.replace(\"%I\", padding(hour12));\n    format = format.replace(\"%-I\", hour12);\n    format = format.replace(\"%l\", hour12);\n    format = format.replace(\"%m\", padding(month));\n    format = format.replace(\"%-m\", month);\n    format = format.replace(\"%M\", padding(mins));\n    format = format.replace(\"%-M\", mins);\n    format = format.replace(\"%p\", meridianOptions[meridian]);\n    format = format.replace(\"%P\", meridianOptions[meridian].toLowerCase());\n    format = format.replace(\"%S\", padding(secs));\n    format = format.replace(\"%-S\", secs);\n    format = format.replace(\"%w\", weekDay);\n    format = format.replace(\"%y\", padding(year));\n    format = format.replace(\"%-y\", padding(year).replace(/^0+/, \"\"));\n    format = format.replace(\"%Y\", year);\n    format = format.replace(\"%z\", timezoneoffset);\n    format = format.replace(\"%Z\", timezoneoffset);\n\n    return format;\n  };\n\n  // Convert the given dateString into a formatted date.\n  I18n.toTime = function(scope, dateString, options) {\n    var date = this.parseDate(dateString)\n      , format = this.lookup(scope, options)\n    ;\n\n    // A date input of `null` or `undefined` will be returned as-is\n    if (date == null) {\n      return date;\n    }\n\n    var date_string = date.toString()\n    if (date_string.match(/invalid/i)) {\n      return date_string;\n    }\n\n    if (!format) {\n      return date_string;\n    }\n\n    return this.strftime(date, format, options);\n  };\n\n  // Convert a number into a formatted percentage value.\n  I18n.toPercentage = function(number, options) {\n    options = this.prepareOptions(\n        options\n      , this.lookup(\"number.percentage.format\", options)\n      , this.lookup(\"number.format\", options)\n      , PERCENTAGE_FORMAT\n    );\n\n    return this.toNumber(number, options);\n  };\n\n  // Convert a number into a readable size representation.\n  I18n.toHumanSize = function(number, options) {\n    var kb = 1024\n      , size = number\n      , iterations = 0\n      , unit\n      , precision\n      , fullScope\n    ;\n\n    while (size >= kb && iterations < 4) {\n      size = size / kb;\n      iterations += 1;\n    }\n\n    if (iterations === 0) {\n      fullScope = this.getFullScope(\"number.human.storage_units.units.byte\", options);\n      unit = this.t(fullScope, {count: size});\n      precision = 0;\n    } else {\n      fullScope = this.getFullScope(\"number.human.storage_units.units.\" + SIZE_UNITS[iterations], options);\n      unit = this.t(fullScope);\n      precision = (size - Math.floor(size) === 0) ? 0 : 1;\n    }\n\n    options = this.prepareOptions(\n        options\n      , {unit: unit, precision: precision, format: \"%n%u\", delimiter: \"\"}\n    );\n\n    return this.toNumber(size, options);\n  };\n\n  I18n.getFullScope = function(scope, options) {\n    options = options || {};\n\n    // Deal with the scope as an array.\n    if (isArray(scope)) {\n      scope = scope.join(options.separator || this.defaultSeparator);\n    }\n\n    // Deal with the scope option provided through the second argument.\n    //\n    //    I18n.t('hello', {scope: 'greetings'});\n    //\n    if (options.scope) {\n      scope = [options.scope, scope].join(options.separator || this.defaultSeparator);\n    }\n\n    return scope;\n  };\n  /**\n   * Merge obj1 with obj2 (shallow merge), without modifying inputs\n   * @param {Object} obj1\n   * @param {Object} obj2\n   * @returns {Object} Merged values of obj1 and obj2\n   *\n   * In order to support ES3, `Object.prototype.hasOwnProperty.call` is used\n   * Idea is from:\n   * https://stackoverflow.com/questions/8157700/object-has-no-hasownproperty-method-i-e-its-undefined-ie8\n   */\n  I18n.extend = function ( obj1, obj2 ) {\n    if (typeof(obj1) === \"undefined\" && typeof(obj2) === \"undefined\") {\n      return {};\n    }\n    return merge(obj1, obj2);\n  };\n\n  // Set aliases, so we can save some typing.\n  I18n.t = I18n.translate.bind(I18n);\n  I18n.l = I18n.localize.bind(I18n);\n  I18n.p = I18n.pluralize.bind(I18n);\n\n  return I18n;\n}));\n", "/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n\n(function() {\n  var context = this;\n\n  (function() {\n    (function() {\n      this.Rails = {\n        linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n        buttonClickSelector: {\n          selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n          exclude: 'form button'\n        },\n        inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n        formSubmitSelector: 'form:not([data-turbo=true])',\n        formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n        formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n        formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n        fileInputSelector: 'input[name][type=file]:not([disabled])',\n        linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n        buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n      };\n\n    }).call(this);\n  }).call(context);\n\n  var Rails = context.Rails;\n\n  (function() {\n    (function() {\n      var nonce;\n\n      nonce = null;\n\n      Rails.loadCSPNonce = function() {\n        var ref;\n        return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n      };\n\n      Rails.cspNonce = function() {\n        return nonce != null ? nonce : Rails.loadCSPNonce();\n      };\n\n    }).call(this);\n    (function() {\n      var expando, m;\n\n      m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n      Rails.matches = function(element, selector) {\n        if (selector.exclude != null) {\n          return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n        } else {\n          return m.call(element, selector);\n        }\n      };\n\n      expando = '_ujsData';\n\n      Rails.getData = function(element, key) {\n        var ref;\n        return (ref = element[expando]) != null ? ref[key] : void 0;\n      };\n\n      Rails.setData = function(element, key, value) {\n        if (element[expando] == null) {\n          element[expando] = {};\n        }\n        return element[expando][key] = value;\n      };\n\n      Rails.isContentEditable = function(element) {\n        var isEditable;\n        isEditable = false;\n        while (true) {\n          if (element.isContentEditable) {\n            isEditable = true;\n            break;\n          }\n          element = element.parentElement;\n          if (!element) {\n            break;\n          }\n        }\n        return isEditable;\n      };\n\n      Rails.$ = function(selector) {\n        return Array.prototype.slice.call(document.querySelectorAll(selector));\n      };\n\n    }).call(this);\n    (function() {\n      var $, csrfParam, csrfToken;\n\n      $ = Rails.$;\n\n      csrfToken = Rails.csrfToken = function() {\n        var meta;\n        meta = document.querySelector('meta[name=csrf-token]');\n        return meta && meta.content;\n      };\n\n      csrfParam = Rails.csrfParam = function() {\n        var meta;\n        meta = document.querySelector('meta[name=csrf-param]');\n        return meta && meta.content;\n      };\n\n      Rails.CSRFProtection = function(xhr) {\n        var token;\n        token = csrfToken();\n        if (token != null) {\n          return xhr.setRequestHeader('X-CSRF-Token', token);\n        }\n      };\n\n      Rails.refreshCSRFTokens = function() {\n        var param, token;\n        token = csrfToken();\n        param = csrfParam();\n        if ((token != null) && (param != null)) {\n          return $('form input[name=\"' + param + '\"]').forEach(function(input) {\n            return input.value = token;\n          });\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var CustomEvent, fire, matches, preventDefault;\n\n      matches = Rails.matches;\n\n      CustomEvent = window.CustomEvent;\n\n      if (typeof CustomEvent !== 'function') {\n        CustomEvent = function(event, params) {\n          var evt;\n          evt = document.createEvent('CustomEvent');\n          evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n          return evt;\n        };\n        CustomEvent.prototype = window.Event.prototype;\n        preventDefault = CustomEvent.prototype.preventDefault;\n        CustomEvent.prototype.preventDefault = function() {\n          var result;\n          result = preventDefault.call(this);\n          if (this.cancelable && !this.defaultPrevented) {\n            Object.defineProperty(this, 'defaultPrevented', {\n              get: function() {\n                return true;\n              }\n            });\n          }\n          return result;\n        };\n      }\n\n      fire = Rails.fire = function(obj, name, data) {\n        var event;\n        event = new CustomEvent(name, {\n          bubbles: true,\n          cancelable: true,\n          detail: data\n        });\n        obj.dispatchEvent(event);\n        return !event.defaultPrevented;\n      };\n\n      Rails.stopEverything = function(e) {\n        fire(e.target, 'ujs:everythingStopped');\n        e.preventDefault();\n        e.stopPropagation();\n        return e.stopImmediatePropagation();\n      };\n\n      Rails.delegate = function(element, selector, eventType, handler) {\n        return element.addEventListener(eventType, function(e) {\n          var target;\n          target = e.target;\n          while (!(!(target instanceof Element) || matches(target, selector))) {\n            target = target.parentNode;\n          }\n          if (target instanceof Element && handler.call(target, e) === false) {\n            e.preventDefault();\n            return e.stopPropagation();\n          }\n        });\n      };\n\n    }).call(this);\n    (function() {\n      var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n\n      cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n\n      AcceptHeaders = {\n        '*': '*/*',\n        text: 'text/plain',\n        html: 'text/html',\n        xml: 'application/xml, text/xml',\n        json: 'application/json, text/javascript',\n        script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n      };\n\n      Rails.ajax = function(options) {\n        var xhr;\n        options = prepareOptions(options);\n        xhr = createXHR(options, function() {\n          var ref, response;\n          response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n          if (Math.floor(xhr.status / 100) === 2) {\n            if (typeof options.success === \"function\") {\n              options.success(response, xhr.statusText, xhr);\n            }\n          } else {\n            if (typeof options.error === \"function\") {\n              options.error(response, xhr.statusText, xhr);\n            }\n          }\n          return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n        });\n        if ((options.beforeSend != null) && !options.beforeSend(xhr, options)) {\n          return false;\n        }\n        if (xhr.readyState === XMLHttpRequest.OPENED) {\n          return xhr.send(options.data);\n        }\n      };\n\n      prepareOptions = function(options) {\n        options.url = options.url || location.href;\n        options.type = options.type.toUpperCase();\n        if (options.type === 'GET' && options.data) {\n          if (options.url.indexOf('?') < 0) {\n            options.url += '?' + options.data;\n          } else {\n            options.url += '&' + options.data;\n          }\n        }\n        if (AcceptHeaders[options.dataType] == null) {\n          options.dataType = '*';\n        }\n        options.accept = AcceptHeaders[options.dataType];\n        if (options.dataType !== '*') {\n          options.accept += ', */*; q=0.01';\n        }\n        return options;\n      };\n\n      createXHR = function(options, done) {\n        var xhr;\n        xhr = new XMLHttpRequest();\n        xhr.open(options.type, options.url, true);\n        xhr.setRequestHeader('Accept', options.accept);\n        if (typeof options.data === 'string') {\n          xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n        }\n        if (!options.crossDomain) {\n          xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n          CSRFProtection(xhr);\n        }\n        xhr.withCredentials = !!options.withCredentials;\n        xhr.onreadystatechange = function() {\n          if (xhr.readyState === XMLHttpRequest.DONE) {\n            return done(xhr);\n          }\n        };\n        return xhr;\n      };\n\n      processResponse = function(response, type) {\n        var parser, script;\n        if (typeof response === 'string' && typeof type === 'string') {\n          if (type.match(/\\bjson\\b/)) {\n            try {\n              response = JSON.parse(response);\n            } catch (error) {}\n          } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n            script = document.createElement('script');\n            script.setAttribute('nonce', cspNonce());\n            script.text = response;\n            document.head.appendChild(script).parentNode.removeChild(script);\n          } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n            parser = new DOMParser();\n            type = type.replace(/;.+/, '');\n            try {\n              response = parser.parseFromString(response, type);\n            } catch (error) {}\n          }\n        }\n        return response;\n      };\n\n      Rails.href = function(element) {\n        return element.href;\n      };\n\n      Rails.isCrossDomain = function(url) {\n        var e, originAnchor, urlAnchor;\n        originAnchor = document.createElement('a');\n        originAnchor.href = location.href;\n        urlAnchor = document.createElement('a');\n        try {\n          urlAnchor.href = url;\n          return !(((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host) || (originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host));\n        } catch (error) {\n          e = error;\n          return true;\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var matches, toArray;\n\n      matches = Rails.matches;\n\n      toArray = function(e) {\n        return Array.prototype.slice.call(e);\n      };\n\n      Rails.serializeElement = function(element, additionalParam) {\n        var inputs, params;\n        inputs = [element];\n        if (matches(element, 'form')) {\n          inputs = toArray(element.elements);\n        }\n        params = [];\n        inputs.forEach(function(input) {\n          if (!input.name || input.disabled) {\n            return;\n          }\n          if (matches(input, 'fieldset[disabled] *')) {\n            return;\n          }\n          if (matches(input, 'select')) {\n            return toArray(input.options).forEach(function(option) {\n              if (option.selected) {\n                return params.push({\n                  name: input.name,\n                  value: option.value\n                });\n              }\n            });\n          } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n            return params.push({\n              name: input.name,\n              value: input.value\n            });\n          }\n        });\n        if (additionalParam) {\n          params.push(additionalParam);\n        }\n        return params.map(function(param) {\n          if (param.name != null) {\n            return (encodeURIComponent(param.name)) + \"=\" + (encodeURIComponent(param.value));\n          } else {\n            return param;\n          }\n        }).join('&');\n      };\n\n      Rails.formElements = function(form, selector) {\n        if (matches(form, 'form')) {\n          return toArray(form.elements).filter(function(el) {\n            return matches(el, selector);\n          });\n        } else {\n          return toArray(form.querySelectorAll(selector));\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var allowAction, fire, stopEverything;\n\n      fire = Rails.fire, stopEverything = Rails.stopEverything;\n\n      Rails.handleConfirm = function(e) {\n        if (!allowAction(this)) {\n          return stopEverything(e);\n        }\n      };\n\n      Rails.confirm = function(message, element) {\n        return confirm(message);\n      };\n\n      allowAction = function(element) {\n        var answer, callback, message;\n        message = element.getAttribute('data-confirm');\n        if (!message) {\n          return true;\n        }\n        answer = false;\n        if (fire(element, 'confirm')) {\n          try {\n            answer = Rails.confirm(message, element);\n          } catch (error) {}\n          callback = fire(element, 'confirm:complete', [answer]);\n        }\n        return answer && callback;\n      };\n\n    }).call(this);\n    (function() {\n      var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isContentEditable, isXhrRedirect, matches, setData, stopEverything;\n\n      matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements, isContentEditable = Rails.isContentEditable;\n\n      Rails.handleDisabledElement = function(e) {\n        var element;\n        element = this;\n        if (element.disabled) {\n          return stopEverything(e);\n        }\n      };\n\n      Rails.enableElement = function(e) {\n        var element;\n        if (e instanceof Event) {\n          if (isXhrRedirect(e)) {\n            return;\n          }\n          element = e.target;\n        } else {\n          element = e;\n        }\n        if (isContentEditable(element)) {\n          return;\n        }\n        if (matches(element, Rails.linkDisableSelector)) {\n          return enableLinkElement(element);\n        } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n          return enableFormElement(element);\n        } else if (matches(element, Rails.formSubmitSelector)) {\n          return enableFormElements(element);\n        }\n      };\n\n      Rails.disableElement = function(e) {\n        var element;\n        element = e instanceof Event ? e.target : e;\n        if (isContentEditable(element)) {\n          return;\n        }\n        if (matches(element, Rails.linkDisableSelector)) {\n          return disableLinkElement(element);\n        } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n          return disableFormElement(element);\n        } else if (matches(element, Rails.formSubmitSelector)) {\n          return disableFormElements(element);\n        }\n      };\n\n      disableLinkElement = function(element) {\n        var replacement;\n        if (getData(element, 'ujs:disabled')) {\n          return;\n        }\n        replacement = element.getAttribute('data-disable-with');\n        if (replacement != null) {\n          setData(element, 'ujs:enable-with', element.innerHTML);\n          element.innerHTML = replacement;\n        }\n        element.addEventListener('click', stopEverything);\n        return setData(element, 'ujs:disabled', true);\n      };\n\n      enableLinkElement = function(element) {\n        var originalText;\n        originalText = getData(element, 'ujs:enable-with');\n        if (originalText != null) {\n          element.innerHTML = originalText;\n          setData(element, 'ujs:enable-with', null);\n        }\n        element.removeEventListener('click', stopEverything);\n        return setData(element, 'ujs:disabled', null);\n      };\n\n      disableFormElements = function(form) {\n        return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n      };\n\n      disableFormElement = function(element) {\n        var replacement;\n        if (getData(element, 'ujs:disabled')) {\n          return;\n        }\n        replacement = element.getAttribute('data-disable-with');\n        if (replacement != null) {\n          if (matches(element, 'button')) {\n            setData(element, 'ujs:enable-with', element.innerHTML);\n            element.innerHTML = replacement;\n          } else {\n            setData(element, 'ujs:enable-with', element.value);\n            element.value = replacement;\n          }\n        }\n        element.disabled = true;\n        return setData(element, 'ujs:disabled', true);\n      };\n\n      enableFormElements = function(form) {\n        return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n      };\n\n      enableFormElement = function(element) {\n        var originalText;\n        originalText = getData(element, 'ujs:enable-with');\n        if (originalText != null) {\n          if (matches(element, 'button')) {\n            element.innerHTML = originalText;\n          } else {\n            element.value = originalText;\n          }\n          setData(element, 'ujs:enable-with', null);\n        }\n        element.disabled = false;\n        return setData(element, 'ujs:disabled', null);\n      };\n\n      isXhrRedirect = function(event) {\n        var ref, xhr;\n        xhr = (ref = event.detail) != null ? ref[0] : void 0;\n        return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n      };\n\n    }).call(this);\n    (function() {\n      var isContentEditable, stopEverything;\n\n      stopEverything = Rails.stopEverything;\n\n      isContentEditable = Rails.isContentEditable;\n\n      Rails.handleMethod = function(e) {\n        var csrfParam, csrfToken, form, formContent, href, link, method;\n        link = this;\n        method = link.getAttribute('data-method');\n        if (!method) {\n          return;\n        }\n        if (isContentEditable(this)) {\n          return;\n        }\n        href = Rails.href(link);\n        csrfToken = Rails.csrfToken();\n        csrfParam = Rails.csrfParam();\n        form = document.createElement('form');\n        formContent = \"<input name='_method' value='\" + method + \"' type='hidden' />\";\n        if ((csrfParam != null) && (csrfToken != null) && !Rails.isCrossDomain(href)) {\n          formContent += \"<input name='\" + csrfParam + \"' value='\" + csrfToken + \"' type='hidden' />\";\n        }\n        formContent += '<input type=\"submit\" />';\n        form.method = 'post';\n        form.action = href;\n        form.target = link.target;\n        form.innerHTML = formContent;\n        form.style.display = 'none';\n        document.body.appendChild(form);\n        form.querySelector('[type=\"submit\"]').click();\n        return stopEverything(e);\n      };\n\n    }).call(this);\n    (function() {\n      var ajax, fire, getData, isContentEditable, isCrossDomain, isRemote, matches, serializeElement, setData, stopEverything,\n        slice = [].slice;\n\n      matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement, isContentEditable = Rails.isContentEditable;\n\n      isRemote = function(element) {\n        var value;\n        value = element.getAttribute('data-remote');\n        return (value != null) && value !== 'false';\n      };\n\n      Rails.handleRemote = function(e) {\n        var button, data, dataType, element, method, url, withCredentials;\n        element = this;\n        if (!isRemote(element)) {\n          return true;\n        }\n        if (!fire(element, 'ajax:before')) {\n          fire(element, 'ajax:stopped');\n          return false;\n        }\n        if (isContentEditable(element)) {\n          fire(element, 'ajax:stopped');\n          return false;\n        }\n        withCredentials = element.getAttribute('data-with-credentials');\n        dataType = element.getAttribute('data-type') || 'script';\n        if (matches(element, Rails.formSubmitSelector)) {\n          button = getData(element, 'ujs:submit-button');\n          method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n          url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n          if (method.toUpperCase() === 'GET') {\n            url = url.replace(/\\?.*$/, '');\n          }\n          if (element.enctype === 'multipart/form-data') {\n            data = new FormData(element);\n            if (button != null) {\n              data.append(button.name, button.value);\n            }\n          } else {\n            data = serializeElement(element, button);\n          }\n          setData(element, 'ujs:submit-button', null);\n          setData(element, 'ujs:submit-button-formmethod', null);\n          setData(element, 'ujs:submit-button-formaction', null);\n        } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n          method = element.getAttribute('data-method');\n          url = element.getAttribute('data-url');\n          data = serializeElement(element, element.getAttribute('data-params'));\n        } else {\n          method = element.getAttribute('data-method');\n          url = Rails.href(element);\n          data = element.getAttribute('data-params');\n        }\n        ajax({\n          type: method || 'GET',\n          url: url,\n          data: data,\n          dataType: dataType,\n          beforeSend: function(xhr, options) {\n            if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n              return fire(element, 'ajax:send', [xhr]);\n            } else {\n              fire(element, 'ajax:stopped');\n              return false;\n            }\n          },\n          success: function() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:success', args);\n          },\n          error: function() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:error', args);\n          },\n          complete: function() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:complete', args);\n          },\n          crossDomain: isCrossDomain(url),\n          withCredentials: (withCredentials != null) && withCredentials !== 'false'\n        });\n        return stopEverything(e);\n      };\n\n      Rails.formSubmitButtonClick = function(e) {\n        var button, form;\n        button = this;\n        form = button.form;\n        if (!form) {\n          return;\n        }\n        if (button.name) {\n          setData(form, 'ujs:submit-button', {\n            name: button.name,\n            value: button.value\n          });\n        }\n        setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n        setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n        return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n      };\n\n      Rails.preventInsignificantClick = function(e) {\n        var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n        link = this;\n        method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n        data = link.getAttribute('data-params');\n        metaClick = e.metaKey || e.ctrlKey;\n        insignificantMetaClick = metaClick && method === 'GET' && !data;\n        nonPrimaryMouseClick = (e.button != null) && e.button !== 0;\n        if (nonPrimaryMouseClick || insignificantMetaClick) {\n          return e.stopImmediatePropagation();\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n\n      fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n\n      if ((typeof jQuery !== \"undefined\" && jQuery !== null) && (jQuery.ajax != null)) {\n        if (jQuery.rails) {\n          throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n        }\n        jQuery.rails = Rails;\n        jQuery.ajaxPrefilter(function(options, originalOptions, xhr) {\n          if (!options.crossDomain) {\n            return CSRFProtection(xhr);\n          }\n        });\n      }\n\n      Rails.start = function() {\n        if (window._rails_loaded) {\n          throw new Error('rails-ujs has already been loaded!');\n        }\n        window.addEventListener('pageshow', function() {\n          $(Rails.formEnableSelector).forEach(function(el) {\n            if (getData(el, 'ujs:disabled')) {\n              return enableElement(el);\n            }\n          });\n          return $(Rails.linkDisableSelector).forEach(function(el) {\n            if (getData(el, 'ujs:disabled')) {\n              return enableElement(el);\n            }\n          });\n        });\n        delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n        delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n        delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.linkClickSelector, 'click', disableElement);\n        delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n        delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n        delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n        delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n        delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n        delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n        delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n        delegate(document, Rails.formSubmitSelector, 'submit', function(e) {\n          return setTimeout((function() {\n            return disableElement(e);\n          }), 13);\n        });\n        delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n        delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n        document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n        document.addEventListener('DOMContentLoaded', loadCSPNonce);\n        return window._rails_loaded = true;\n      };\n\n      if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n        Rails.start();\n      }\n\n    }).call(this);\n  }).call(this);\n\n  if (typeof module === \"object\" && module.exports) {\n    module.exports = Rails;\n  } else if (typeof define === \"function\" && define.amd) {\n    define(Rails);\n  }\n}).call(this);\n", "/*!\n * accounting.js v0.4.1\n * Copyright 2014 Open Exchange Rates\n *\n * Freely distributable under the MIT license.\n * Portions of accounting.js are inspired or borrowed from underscore.js\n *\n * Full details and documentation:\n * http://openexchangerates.github.io/accounting.js/\n */\n\n(function(root, undefined) {\n\n\t/* --- Setup --- */\n\n\t// Create the local library object, to be exported or referenced globally later\n\tvar lib = {};\n\n\t// Current version\n\tlib.version = '0.4.1';\n\n\n\t/* --- Exposed settings --- */\n\n\t// The library's settings configuration object. Contains default parameters for\n\t// currency and number formatting\n\tlib.settings = {\n\t\tcurrency: {\n\t\t\tsymbol : \"$\",\t\t// default currency symbol is '$'\n\t\t\tformat : \"%s%v\",\t// controls output: %s = symbol, %v = value (can be object, see docs)\n\t\t\tdecimal : \".\",\t\t// decimal point separator\n\t\t\tthousand : \",\",\t\t// thousands separator\n\t\t\tprecision : 2,\t\t// decimal places\n\t\t\tgrouping : 3\t\t// digit grouping (not implemented yet)\n\t\t},\n\t\tnumber: {\n\t\t\tprecision : 0,\t\t// default precision on numbers is 0\n\t\t\tgrouping : 3,\t\t// digit grouping (not implemented yet)\n\t\t\tthousand : \",\",\n\t\t\tdecimal : \".\"\n\t\t}\n\t};\n\n\n\t/* --- Internal Helper Methods --- */\n\n\t// Store reference to possibly-available ECMAScript 5 methods for later\n\tvar nativeMap = Array.prototype.map,\n\t\tnativeIsArray = Array.isArray,\n\t\ttoString = Object.prototype.toString;\n\n\t/**\n\t * Tests whether supplied parameter is a string\n\t * from underscore.js\n\t */\n\tfunction isString(obj) {\n\t\treturn !!(obj === '' || (obj && obj.charCodeAt && obj.substr));\n\t}\n\n\t/**\n\t * Tests whether supplied parameter is a string\n\t * from underscore.js, delegates to ECMA5's native Array.isArray\n\t */\n\tfunction isArray(obj) {\n\t\treturn nativeIsArray ? nativeIsArray(obj) : toString.call(obj) === '[object Array]';\n\t}\n\n\t/**\n\t * Tests whether supplied parameter is a true object\n\t */\n\tfunction isObject(obj) {\n\t\treturn obj && toString.call(obj) === '[object Object]';\n\t}\n\n\t/**\n\t * Extends an object with a defaults object, similar to underscore's _.defaults\n\t *\n\t * Used for abstracting parameter handling from API methods\n\t */\n\tfunction defaults(object, defs) {\n\t\tvar key;\n\t\tobject = object || {};\n\t\tdefs = defs || {};\n\t\t// Iterate over object non-prototype properties:\n\t\tfor (key in defs) {\n\t\t\tif (defs.hasOwnProperty(key)) {\n\t\t\t\t// Replace values with defaults only if undefined (allow empty/zero values):\n\t\t\t\tif (object[key] == null) object[key] = defs[key];\n\t\t\t}\n\t\t}\n\t\treturn object;\n\t}\n\n\t/**\n\t * Implementation of `Array.map()` for iteration loops\n\t *\n\t * Returns a new Array as a result of calling `iterator` on each array value.\n\t * Defers to native Array.map if available\n\t */\n\tfunction map(obj, iterator, context) {\n\t\tvar results = [], i, j;\n\n\t\tif (!obj) return results;\n\n\t\t// Use native .map method if it exists:\n\t\tif (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);\n\n\t\t// Fallback for native .map:\n\t\tfor (i = 0, j = obj.length; i < j; i++ ) {\n\t\t\tresults[i] = iterator.call(context, obj[i], i, obj);\n\t\t}\n\t\treturn results;\n\t}\n\n\t/**\n\t * Check and normalise the value of precision (must be positive integer)\n\t */\n\tfunction checkPrecision(val, base) {\n\t\tval = Math.round(Math.abs(val));\n\t\treturn isNaN(val)? base : val;\n\t}\n\n\n\t/**\n\t * Parses a format string or object and returns format obj for use in rendering\n\t *\n\t * `format` is either a string with the default (positive) format, or object\n\t * containing `pos` (required), `neg` and `zero` values (or a function returning\n\t * either a string or object)\n\t *\n\t * Either string or format.pos must contain \"%v\" (value) to be valid\n\t */\n\tfunction checkCurrencyFormat(format) {\n\t\tvar defaults = lib.settings.currency.format;\n\n\t\t// Allow function as format parameter (should return string or object):\n\t\tif ( typeof format === \"function\" ) format = format();\n\n\t\t// Format can be a string, in which case `value` (\"%v\") must be present:\n\t\tif ( isString( format ) && format.match(\"%v\") ) {\n\n\t\t\t// Create and return positive, negative and zero formats:\n\t\t\treturn {\n\t\t\t\tpos : format,\n\t\t\t\tneg : format.replace(\"-\", \"\").replace(\"%v\", \"-%v\"),\n\t\t\t\tzero : format\n\t\t\t};\n\n\t\t// If no format, or object is missing valid positive value, use defaults:\n\t\t} else if ( !format || !format.pos || !format.pos.match(\"%v\") ) {\n\n\t\t\t// If defaults is a string, casts it to an object for faster checking next time:\n\t\t\treturn ( !isString( defaults ) ) ? defaults : lib.settings.currency.format = {\n\t\t\t\tpos : defaults,\n\t\t\t\tneg : defaults.replace(\"%v\", \"-%v\"),\n\t\t\t\tzero : defaults\n\t\t\t};\n\n\t\t}\n\t\t// Otherwise, assume format was fine:\n\t\treturn format;\n\t}\n\n\n\t/* --- API Methods --- */\n\n\t/**\n\t * Takes a string/array of strings, removes all formatting/cruft and returns the raw float value\n\t * Alias: `accounting.parse(string)`\n\t *\n\t * Decimal must be included in the regular expression to match floats (defaults to\n\t * accounting.settings.number.decimal), so if the number uses a non-standard decimal \n\t * separator, provide it as the second argument.\n\t *\n\t * Also matches bracketed negatives (eg. \"$ (1.99)\" => -1.99)\n\t *\n\t * Doesn't throw any errors (`NaN`s become 0) but this may change in future\n\t */\n\tvar unformat = lib.unformat = lib.parse = function(value, decimal) {\n\t\t// Recursively unformat arrays:\n\t\tif (isArray(value)) {\n\t\t\treturn map(value, function(val) {\n\t\t\t\treturn unformat(val, decimal);\n\t\t\t});\n\t\t}\n\n\t\t// Fails silently (need decent errors):\n\t\tvalue = value || 0;\n\n\t\t// Return the value as-is if it's already a number:\n\t\tif (typeof value === \"number\") return value;\n\n\t\t// Default decimal point comes from settings, but could be set to eg. \",\" in opts:\n\t\tdecimal = decimal || lib.settings.number.decimal;\n\n\t\t // Build regex to strip out everything except digits, decimal point and minus sign:\n\t\tvar regex = new RegExp(\"[^0-9-\" + decimal + \"]\", [\"g\"]),\n\t\t\tunformatted = parseFloat(\n\t\t\t\t(\"\" + value)\n\t\t\t\t.replace(/\\((.*)\\)/, \"-$1\") // replace bracketed values with negatives\n\t\t\t\t.replace(regex, '')         // strip out any cruft\n\t\t\t\t.replace(decimal, '.')      // make sure decimal point is standard\n\t\t\t);\n\n\t\t// This will fail silently which may cause trouble, let's wait and see:\n\t\treturn !isNaN(unformatted) ? unformatted : 0;\n\t};\n\n\n\t/**\n\t * Implementation of toFixed() that treats floats more like decimals\n\t *\n\t * Fixes binary rounding issues (eg. (0.615).toFixed(2) === \"0.61\") that present\n\t * problems for accounting- and finance-related software.\n\t */\n\tvar toFixed = lib.toFixed = function(value, precision) {\n\t\tprecision = checkPrecision(precision, lib.settings.number.precision);\n\t\tvar power = Math.pow(10, precision);\n\n\t\t// Multiply up by precision, round accurately, then divide and use native toFixed():\n\t\treturn (Math.round(lib.unformat(value) * power) / power).toFixed(precision);\n\t};\n\n\n\t/**\n\t * Format a number, with comma-separated thousands and custom precision/decimal places\n\t * Alias: `accounting.format()`\n\t *\n\t * Localise by overriding the precision and thousand / decimal separators\n\t * 2nd parameter `precision` can be an object matching `settings.number`\n\t */\n\tvar formatNumber = lib.formatNumber = lib.format = function(number, precision, thousand, decimal) {\n\t\t// Resursively format arrays:\n\t\tif (isArray(number)) {\n\t\t\treturn map(number, function(val) {\n\t\t\t\treturn formatNumber(val, precision, thousand, decimal);\n\t\t\t});\n\t\t}\n\n\t\t// Clean up number:\n\t\tnumber = unformat(number);\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(precision) ? precision : {\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal\n\t\t\t\t}),\n\t\t\t\tlib.settings.number\n\t\t\t),\n\n\t\t\t// Clean up precision\n\t\t\tusePrecision = checkPrecision(opts.precision),\n\n\t\t\t// Do some calc:\n\t\t\tnegative = number < 0 ? \"-\" : \"\",\n\t\t\tbase = parseInt(toFixed(Math.abs(number || 0), usePrecision), 10) + \"\",\n\t\t\tmod = base.length > 3 ? base.length % 3 : 0;\n\n\t\t// Format the number:\n\t\treturn negative + (mod ? base.substr(0, mod) + opts.thousand : \"\") + base.substr(mod).replace(/(\\d{3})(?=\\d)/g, \"$1\" + opts.thousand) + (usePrecision ? opts.decimal + toFixed(Math.abs(number), usePrecision).split('.')[1] : \"\");\n\t};\n\n\n\t/**\n\t * Format a number into currency\n\t *\n\t * Usage: accounting.formatMoney(number, symbol, precision, thousandsSep, decimalSep, format)\n\t * defaults: (0, \"$\", 2, \",\", \".\", \"%s%v\")\n\t *\n\t * Localise by overriding the symbol, precision, thousand / decimal separators and format\n\t * Second param can be an object matching `settings.currency` which is the easiest way.\n\t *\n\t * To do: tidy up the parameters\n\t */\n\tvar formatMoney = lib.formatMoney = function(number, symbol, precision, thousand, decimal, format) {\n\t\t// Resursively format arrays:\n\t\tif (isArray(number)) {\n\t\t\treturn map(number, function(val){\n\t\t\t\treturn formatMoney(val, symbol, precision, thousand, decimal, format);\n\t\t\t});\n\t\t}\n\n\t\t// Clean up number:\n\t\tnumber = unformat(number);\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(symbol) ? symbol : {\n\t\t\t\t\tsymbol : symbol,\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal,\n\t\t\t\t\tformat : format\n\t\t\t\t}),\n\t\t\t\tlib.settings.currency\n\t\t\t),\n\n\t\t\t// Check format (returns object with pos, neg and zero):\n\t\t\tformats = checkCurrencyFormat(opts.format),\n\n\t\t\t// Choose which format to use for this value:\n\t\t\tuseFormat = number > 0 ? formats.pos : number < 0 ? formats.neg : formats.zero;\n\n\t\t// Return with currency symbol added:\n\t\treturn useFormat.replace('%s', opts.symbol).replace('%v', formatNumber(Math.abs(number), checkPrecision(opts.precision), opts.thousand, opts.decimal));\n\t};\n\n\n\t/**\n\t * Format a list of numbers into an accounting column, padding with whitespace\n\t * to line up currency symbols, thousand separators and decimals places\n\t *\n\t * List should be an array of numbers\n\t * Second parameter can be an object containing keys that match the params\n\t *\n\t * Returns array of accouting-formatted number strings of same length\n\t *\n\t * NB: `white-space:pre` CSS rule is required on the list container to prevent\n\t * browsers from collapsing the whitespace in the output strings.\n\t */\n\tlib.formatColumn = function(list, symbol, precision, thousand, decimal, format) {\n\t\tif (!list) return [];\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(symbol) ? symbol : {\n\t\t\t\t\tsymbol : symbol,\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal,\n\t\t\t\t\tformat : format\n\t\t\t\t}),\n\t\t\t\tlib.settings.currency\n\t\t\t),\n\n\t\t\t// Check format (returns object with pos, neg and zero), only need pos for now:\n\t\t\tformats = checkCurrencyFormat(opts.format),\n\n\t\t\t// Whether to pad at start of string or after currency symbol:\n\t\t\tpadAfterSymbol = formats.pos.indexOf(\"%s\") < formats.pos.indexOf(\"%v\") ? true : false,\n\n\t\t\t// Store value for the length of the longest string in the column:\n\t\t\tmaxLength = 0,\n\n\t\t\t// Format the list according to options, store the length of the longest string:\n\t\t\tformatted = map(list, function(val, i) {\n\t\t\t\tif (isArray(val)) {\n\t\t\t\t\t// Recursively format columns if list is a multi-dimensional array:\n\t\t\t\t\treturn lib.formatColumn(val, opts);\n\t\t\t\t} else {\n\t\t\t\t\t// Clean up the value\n\t\t\t\t\tval = unformat(val);\n\n\t\t\t\t\t// Choose which format to use for this value (pos, neg or zero):\n\t\t\t\t\tvar useFormat = val > 0 ? formats.pos : val < 0 ? formats.neg : formats.zero,\n\n\t\t\t\t\t\t// Format this value, push into formatted list and save the length:\n\t\t\t\t\t\tfVal = useFormat.replace('%s', opts.symbol).replace('%v', formatNumber(Math.abs(val), checkPrecision(opts.precision), opts.thousand, opts.decimal));\n\n\t\t\t\t\tif (fVal.length > maxLength) maxLength = fVal.length;\n\t\t\t\t\treturn fVal;\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Pad each number in the list and send back the column of numbers:\n\t\treturn map(formatted, function(val, i) {\n\t\t\t// Only if this is a string (not a nested array, which would have already been padded):\n\t\t\tif (isString(val) && val.length < maxLength) {\n\t\t\t\t// Depending on symbol position, pad after symbol or at index 0:\n\t\t\t\treturn padAfterSymbol ? val.replace(opts.symbol, opts.symbol+(new Array(maxLength - val.length + 1).join(\" \"))) : (new Array(maxLength - val.length + 1).join(\" \")) + val;\n\t\t\t}\n\t\t\treturn val;\n\t\t});\n\t};\n\n\n\t/* --- Module Definition --- */\n\n\t// Export accounting for CommonJS. If being loaded as an AMD module, define it as such.\n\t// Otherwise, just add `accounting` to the global object\n\tif (typeof exports !== 'undefined') {\n\t\tif (typeof module !== 'undefined' && module.exports) {\n\t\t\texports = module.exports = lib;\n\t\t}\n\t\texports.accounting = lib;\n\t} else if (typeof define === 'function' && define.amd) {\n\t\t// Return the library as an AMD module:\n\t\tdefine([], function() {\n\t\t\treturn lib;\n\t\t});\n\t} else {\n\t\t// Use accounting.noConflict to restore `accounting` back to its original value.\n\t\t// Returns a reference to the library's `accounting` object;\n\t\t// e.g. `var numbers = accounting.noConflict();`\n\t\tlib.noConflict = (function(oldAccounting) {\n\t\t\treturn function() {\n\t\t\t\t// Reset the value of the root's `accounting` variable:\n\t\t\t\troot.accounting = oldAccounting;\n\t\t\t\t// Delete the noConflict method:\n\t\t\t\tlib.noConflict = undefined;\n\t\t\t\t// Return reference to the library to re-assign it:\n\t\t\t\treturn lib;\n\t\t\t};\n\t\t})(root.accounting);\n\n\t\t// Declare `fx` on the root (global/window) object:\n\t\troot['accounting'] = lib;\n\t}\n\n\t// Root will be `window` in browser or `global` on the server:\n}(this));\n", ";(function () {\r\n    var VERSION = '2.2.3',\r\n        pluginName = 'datepicker',\r\n        autoInitSelector = '.datepicker-here',\r\n        $body, $datepickersContainer,\r\n        containerBuilt = false,\r\n        baseTemplate = '' +\r\n            '<div class=\"datepicker\">' +\r\n            '<i class=\"datepicker--pointer\"></i>' +\r\n            '<nav class=\"datepicker--nav\"></nav>' +\r\n            '<div class=\"datepicker--content\"></div>' +\r\n            '</div>',\r\n        defaults = {\r\n            classes: '',\r\n            inline: false,\r\n            language: 'ru',\r\n            startDate: new Date(),\r\n            firstDay: '',\r\n            weekends: [6, 0],\r\n            dateFormat: '',\r\n            altField: '',\r\n            altFieldDateFormat: '@',\r\n            toggleSelected: true,\r\n            keyboardNav: true,\r\n\r\n            position: 'bottom left',\r\n            offset: 12,\r\n\r\n            view: 'days',\r\n            minView: 'days',\r\n\r\n            showOtherMonths: true,\r\n            selectOtherMonths: true,\r\n            moveToOtherMonthsOnSelect: true,\r\n\r\n            showOtherYears: true,\r\n            selectOtherYears: true,\r\n            moveToOtherYearsOnSelect: true,\r\n\r\n            minDate: '',\r\n            maxDate: '',\r\n            disableNavWhenOutOfRange: true,\r\n\r\n            multipleDates: false, // Boolean or Number\r\n            multipleDatesSeparator: ',',\r\n            range: false,\r\n\r\n            todayButton: false,\r\n            clearButton: false,\r\n\r\n            showEvent: 'focus',\r\n            autoClose: false,\r\n\r\n            // navigation\r\n            monthsField: 'monthsShort',\r\n            prevHtml: '<svg><path d=\"M 17,12 l -5,5 l 5,5\"></path></svg>',\r\n            nextHtml: '<svg><path d=\"M 14,12 l 5,5 l -5,5\"></path></svg>',\r\n            navTitles: {\r\n                days: 'MM, <i>yyyy</i>',\r\n                months: 'yyyy',\r\n                years: 'yyyy1 - yyyy2'\r\n            },\r\n\r\n            // timepicker\r\n            timepicker: false,\r\n            onlyTimepicker: false,\r\n            dateTimeSeparator: ' ',\r\n            timeFormat: '',\r\n            minHours: 0,\r\n            maxHours: 24,\r\n            minMinutes: 0,\r\n            maxMinutes: 59,\r\n            hoursStep: 1,\r\n            minutesStep: 1,\r\n\r\n            // events\r\n            onSelect: '',\r\n            onShow: '',\r\n            onHide: '',\r\n            onChangeMonth: '',\r\n            onChangeYear: '',\r\n            onChangeDecade: '',\r\n            onChangeView: '',\r\n            onRenderCell: ''\r\n        },\r\n        hotKeys = {\r\n            'ctrlRight': [17, 39],\r\n            'ctrlUp': [17, 38],\r\n            'ctrlLeft': [17, 37],\r\n            'ctrlDown': [17, 40],\r\n            'shiftRight': [16, 39],\r\n            'shiftUp': [16, 38],\r\n            'shiftLeft': [16, 37],\r\n            'shiftDown': [16, 40],\r\n            'altUp': [18, 38],\r\n            'altRight': [18, 39],\r\n            'altLeft': [18, 37],\r\n            'altDown': [18, 40],\r\n            'ctrlShiftUp': [16, 17, 38]\r\n        },\r\n        datepicker;\r\n\r\n    var Datepicker  = function (el, options) {\r\n        this.el = el;\r\n        this.$el = $(el);\r\n\r\n        this.opts = $.extend(true, {}, defaults, options, this.$el.data());\r\n\r\n        if ($body == undefined) {\r\n            $body = $('body');\r\n        }\r\n\r\n        if (!this.opts.startDate) {\r\n            this.opts.startDate = new Date();\r\n        }\r\n\r\n        if (this.el.nodeName == 'INPUT') {\r\n            this.elIsInput = true;\r\n        }\r\n\r\n        if (this.opts.altField) {\r\n            this.$altField = typeof this.opts.altField == 'string' ? $(this.opts.altField) : this.opts.altField;\r\n        }\r\n\r\n        this.inited = false;\r\n        this.visible = false;\r\n        this.silent = false; // Need to prevent unnecessary rendering\r\n\r\n        this.currentDate = this.opts.startDate;\r\n        this.currentView = this.opts.view;\r\n        this._createShortCuts();\r\n        this.selectedDates = [];\r\n        this.views = {};\r\n        this.keys = [];\r\n        this.minRange = '';\r\n        this.maxRange = '';\r\n        this._prevOnSelectValue = '';\r\n\r\n        this.init()\r\n    };\r\n\r\n    datepicker = Datepicker;\r\n\r\n    datepicker.prototype = {\r\n        VERSION: VERSION,\r\n        viewIndexes: ['days', 'months', 'years'],\r\n\r\n        init: function () {\r\n            if (!containerBuilt && !this.opts.inline && this.elIsInput) {\r\n                this._buildDatepickersContainer();\r\n            }\r\n            this._buildBaseHtml();\r\n            this._defineLocale(this.opts.language);\r\n            this._syncWithMinMaxDates();\r\n\r\n            if (this.elIsInput) {\r\n                if (!this.opts.inline) {\r\n                    // Set extra classes for proper transitions\r\n                    this._setPositionClasses(this.opts.position);\r\n                    this._bindEvents()\r\n                }\r\n                if (this.opts.keyboardNav && !this.opts.onlyTimepicker) {\r\n                    this._bindKeyboardEvents();\r\n                }\r\n                this.$datepicker.on('mousedown', this._onMouseDownDatepicker.bind(this));\r\n                this.$datepicker.on('mouseup', this._onMouseUpDatepicker.bind(this));\r\n            }\r\n\r\n            if (this.opts.classes) {\r\n                this.$datepicker.addClass(this.opts.classes)\r\n            }\r\n\r\n            if (this.opts.timepicker) {\r\n                this.timepicker = new $.fn.datepicker.Timepicker(this, this.opts);\r\n                this._bindTimepickerEvents();\r\n            }\r\n\r\n            if (this.opts.onlyTimepicker) {\r\n                this.$datepicker.addClass('-only-timepicker-');\r\n            }\r\n\r\n            this.views[this.currentView] = new $.fn.datepicker.Body(this, this.currentView, this.opts);\r\n            this.views[this.currentView].show();\r\n            this.nav = new $.fn.datepicker.Navigation(this, this.opts);\r\n            this.view = this.currentView;\r\n\r\n            this.$el.on('clickCell.adp', this._onClickCell.bind(this));\r\n            this.$datepicker.on('mouseenter', '.datepicker--cell', this._onMouseEnterCell.bind(this));\r\n            this.$datepicker.on('mouseleave', '.datepicker--cell', this._onMouseLeaveCell.bind(this));\r\n\r\n            this.inited = true;\r\n        },\r\n\r\n        _createShortCuts: function () {\r\n            this.minDate = this.opts.minDate ? this.opts.minDate : new Date(-8639999913600000);\r\n            this.maxDate = this.opts.maxDate ? this.opts.maxDate : new Date(8639999913600000);\r\n        },\r\n\r\n        _bindEvents : function () {\r\n            this.$el.on(this.opts.showEvent + '.adp', this._onShowEvent.bind(this));\r\n            this.$el.on('mouseup.adp', this._onMouseUpEl.bind(this));\r\n            this.$el.on('blur.adp', this._onBlur.bind(this));\r\n            this.$el.on('keyup.adp', this._onKeyUpGeneral.bind(this));\r\n            $(window).on('resize.adp', this._onResize.bind(this));\r\n            $('body').on('mouseup.adp', this._onMouseUpBody.bind(this));\r\n        },\r\n\r\n        _bindKeyboardEvents: function () {\r\n            this.$el.on('keydown.adp', this._onKeyDown.bind(this));\r\n            this.$el.on('keyup.adp', this._onKeyUp.bind(this));\r\n            this.$el.on('hotKey.adp', this._onHotKey.bind(this));\r\n        },\r\n\r\n        _bindTimepickerEvents: function () {\r\n            this.$el.on('timeChange.adp', this._onTimeChange.bind(this));\r\n        },\r\n\r\n        isWeekend: function (day) {\r\n            return this.opts.weekends.indexOf(day) !== -1;\r\n        },\r\n\r\n        _defineLocale: function (lang) {\r\n            if (typeof lang == 'string') {\r\n                this.loc = $.fn.datepicker.language[lang];\r\n                if (!this.loc) {\r\n                    console.warn('Can\\'t find language \"' + lang + '\" in Datepicker.language, will use \"ru\" instead');\r\n                    this.loc = $.extend(true, {}, $.fn.datepicker.language.ru)\r\n                }\r\n\r\n                this.loc = $.extend(true, {}, $.fn.datepicker.language.ru, $.fn.datepicker.language[lang])\r\n            } else {\r\n                this.loc = $.extend(true, {}, $.fn.datepicker.language.ru, lang)\r\n            }\r\n\r\n            if (this.opts.dateFormat) {\r\n                this.loc.dateFormat = this.opts.dateFormat\r\n            }\r\n\r\n            if (this.opts.timeFormat) {\r\n                this.loc.timeFormat = this.opts.timeFormat\r\n            }\r\n\r\n            if (this.opts.firstDay !== '') {\r\n                this.loc.firstDay = this.opts.firstDay\r\n            }\r\n\r\n            if (this.opts.timepicker) {\r\n                this.loc.dateFormat = [this.loc.dateFormat, this.loc.timeFormat].join(this.opts.dateTimeSeparator);\r\n            }\r\n\r\n            if (this.opts.onlyTimepicker) {\r\n                this.loc.dateFormat = this.loc.timeFormat;\r\n            }\r\n\r\n            var boundary = this._getWordBoundaryRegExp;\r\n            if (this.loc.timeFormat.match(boundary('aa')) ||\r\n                this.loc.timeFormat.match(boundary('AA'))\r\n            ) {\r\n               this.ampm = true;\r\n            }\r\n        },\r\n\r\n        _buildDatepickersContainer: function () {\r\n            containerBuilt = true;\r\n            $body.append('<div class=\"datepickers-container\" id=\"datepickers-container\"></div>');\r\n            $datepickersContainer = $('#datepickers-container');\r\n        },\r\n\r\n        _buildBaseHtml: function () {\r\n            var $appendTarget,\r\n                $inline = $('<div class=\"datepicker-inline\">');\r\n\r\n            if(this.el.nodeName == 'INPUT') {\r\n                if (!this.opts.inline) {\r\n                    $appendTarget = $datepickersContainer;\r\n                } else {\r\n                    $appendTarget = $inline.insertAfter(this.$el)\r\n                }\r\n            } else {\r\n                $appendTarget = $inline.appendTo(this.$el)\r\n            }\r\n\r\n            this.$datepicker = $(baseTemplate).appendTo($appendTarget);\r\n            this.$content = $('.datepicker--content', this.$datepicker);\r\n            this.$nav = $('.datepicker--nav', this.$datepicker);\r\n        },\r\n\r\n        _triggerOnChange: function () {\r\n            if (!this.selectedDates.length) {\r\n                // Prevent from triggering multiple onSelect callback with same argument (empty string) in IE10-11\r\n                if (this._prevOnSelectValue === '') return;\r\n                this._prevOnSelectValue = '';\r\n                return this.opts.onSelect('', '', this);\r\n            }\r\n\r\n            var selectedDates = this.selectedDates,\r\n                parsedSelected = datepicker.getParsedDate(selectedDates[0]),\r\n                formattedDates,\r\n                _this = this,\r\n                dates = new Date(\r\n                    parsedSelected.year,\r\n                    parsedSelected.month,\r\n                    parsedSelected.date,\r\n                    parsedSelected.hours,\r\n                    parsedSelected.minutes\r\n                );\r\n\r\n                formattedDates = selectedDates.map(function (date) {\r\n                    return _this.formatDate(_this.loc.dateFormat, date)\r\n                }).join(this.opts.multipleDatesSeparator);\r\n\r\n            // Create new dates array, to separate it from original selectedDates\r\n            if (this.opts.multipleDates || this.opts.range) {\r\n                dates = selectedDates.map(function(date) {\r\n                    var parsedDate = datepicker.getParsedDate(date);\r\n                    return new Date(\r\n                        parsedDate.year,\r\n                        parsedDate.month,\r\n                        parsedDate.date,\r\n                        parsedDate.hours,\r\n                        parsedDate.minutes\r\n                    );\r\n                })\r\n            }\r\n\r\n            this._prevOnSelectValue = formattedDates;\r\n            this.opts.onSelect(formattedDates, dates, this);\r\n        },\r\n\r\n        next: function () {\r\n            var d = this.parsedDate,\r\n                o = this.opts;\r\n            switch (this.view) {\r\n                case 'days':\r\n                    this.date = new Date(d.year, d.month + 1, 1);\r\n                    if (o.onChangeMonth) o.onChangeMonth(this.parsedDate.month, this.parsedDate.year);\r\n                    break;\r\n                case 'months':\r\n                    this.date = new Date(d.year + 1, d.month, 1);\r\n                    if (o.onChangeYear) o.onChangeYear(this.parsedDate.year);\r\n                    break;\r\n                case 'years':\r\n                    this.date = new Date(d.year + 10, 0, 1);\r\n                    if (o.onChangeDecade) o.onChangeDecade(this.curDecade);\r\n                    break;\r\n            }\r\n        },\r\n\r\n        prev: function () {\r\n            var d = this.parsedDate,\r\n                o = this.opts;\r\n            switch (this.view) {\r\n                case 'days':\r\n                    this.date = new Date(d.year, d.month - 1, 1);\r\n                    if (o.onChangeMonth) o.onChangeMonth(this.parsedDate.month, this.parsedDate.year);\r\n                    break;\r\n                case 'months':\r\n                    this.date = new Date(d.year - 1, d.month, 1);\r\n                    if (o.onChangeYear) o.onChangeYear(this.parsedDate.year);\r\n                    break;\r\n                case 'years':\r\n                    this.date = new Date(d.year - 10, 0, 1);\r\n                    if (o.onChangeDecade) o.onChangeDecade(this.curDecade);\r\n                    break;\r\n            }\r\n        },\r\n\r\n        formatDate: function (string, date) {\r\n            date = date || this.date;\r\n            var result = string,\r\n                boundary = this._getWordBoundaryRegExp,\r\n                locale = this.loc,\r\n                leadingZero = datepicker.getLeadingZeroNum,\r\n                decade = datepicker.getDecade(date),\r\n                d = datepicker.getParsedDate(date),\r\n                fullHours = d.fullHours,\r\n                hours = d.hours,\r\n                ampm = string.match(boundary('aa')) || string.match(boundary('AA')),\r\n                dayPeriod = 'am',\r\n                replacer = this._replacer,\r\n                validHours;\r\n\r\n            if (this.opts.timepicker && this.timepicker && ampm) {\r\n                validHours = this.timepicker._getValidHoursFromDate(date, ampm);\r\n                fullHours = leadingZero(validHours.hours);\r\n                hours = validHours.hours;\r\n                dayPeriod = validHours.dayPeriod;\r\n            }\r\n\r\n            switch (true) {\r\n                case /@/.test(result):\r\n                    result = result.replace(/@/, date.getTime());\r\n                case /aa/.test(result):\r\n                    result = replacer(result, boundary('aa'), dayPeriod);\r\n                case /AA/.test(result):\r\n                    result = replacer(result, boundary('AA'), dayPeriod.toUpperCase());\r\n                case /dd/.test(result):\r\n                    result = replacer(result, boundary('dd'), d.fullDate);\r\n                case /d/.test(result):\r\n                    result = replacer(result, boundary('d'), d.date);\r\n                case /DD/.test(result):\r\n                    result = replacer(result, boundary('DD'), locale.days[d.day]);\r\n                case /D/.test(result):\r\n                    result = replacer(result, boundary('D'), locale.daysShort[d.day]);\r\n                case /mm/.test(result):\r\n                    result = replacer(result, boundary('mm'), d.fullMonth);\r\n                case /m/.test(result):\r\n                    result = replacer(result, boundary('m'), d.month + 1);\r\n                case /MM/.test(result):\r\n                    result = replacer(result, boundary('MM'), this.loc.months[d.month]);\r\n                case /M/.test(result):\r\n                    result = replacer(result, boundary('M'), locale.monthsShort[d.month]);\r\n                case /ii/.test(result):\r\n                    result = replacer(result, boundary('ii'), d.fullMinutes);\r\n                case /i/.test(result):\r\n                    result = replacer(result, boundary('i'), d.minutes);\r\n                case /hh/.test(result):\r\n                    result = replacer(result, boundary('hh'), fullHours);\r\n                case /h/.test(result):\r\n                    result = replacer(result, boundary('h'), hours);\r\n                case /yyyy/.test(result):\r\n                    result = replacer(result, boundary('yyyy'), d.year);\r\n                case /yyyy1/.test(result):\r\n                    result = replacer(result, boundary('yyyy1'), decade[0]);\r\n                case /yyyy2/.test(result):\r\n                    result = replacer(result, boundary('yyyy2'), decade[1]);\r\n                case /yy/.test(result):\r\n                    result = replacer(result, boundary('yy'), d.year.toString().slice(-2));\r\n            }\r\n\r\n            return result;\r\n        },\r\n\r\n        _replacer: function (str, reg, data) {\r\n            return str.replace(reg, function (match, p1,p2,p3) {\r\n                return p1 + data + p3;\r\n            })\r\n        },\r\n\r\n        _getWordBoundaryRegExp: function (sign) {\r\n            var symbols = '\\\\s|\\\\.|-|/|\\\\\\\\|,|\\\\$|\\\\!|\\\\?|:|;';\r\n\r\n            return new RegExp('(^|>|' + symbols + ')(' + sign + ')($|<|' + symbols + ')', 'g');\r\n        },\r\n\r\n\r\n        selectDate: function (date) {\r\n            var _this = this,\r\n                opts = _this.opts,\r\n                d = _this.parsedDate,\r\n                selectedDates = _this.selectedDates,\r\n                len = selectedDates.length,\r\n                newDate = '';\r\n\r\n            if (Array.isArray(date)) {\r\n                date.forEach(function (d) {\r\n                    _this.selectDate(d)\r\n                });\r\n                return;\r\n            }\r\n\r\n            if (!(date instanceof Date)) return;\r\n\r\n            this.lastSelectedDate = date;\r\n\r\n            // Set new time values from Date\r\n            if (this.timepicker) {\r\n                this.timepicker._setTime(date);\r\n            }\r\n\r\n            // On this step timepicker will set valid values in it's instance\r\n            _this._trigger('selectDate', date);\r\n\r\n            // Set correct time values after timepicker's validation\r\n            // Prevent from setting hours or minutes which values are lesser then `min` value or\r\n            // greater then `max` value\r\n            if (this.timepicker) {\r\n                date.setHours(this.timepicker.hours);\r\n                date.setMinutes(this.timepicker.minutes)\r\n            }\r\n\r\n            if (_this.view == 'days') {\r\n                if (date.getMonth() != d.month && opts.moveToOtherMonthsOnSelect) {\r\n                    newDate = new Date(date.getFullYear(), date.getMonth(), 1);\r\n                }\r\n            }\r\n\r\n            if (_this.view == 'years') {\r\n                if (date.getFullYear() != d.year && opts.moveToOtherYearsOnSelect) {\r\n                    newDate = new Date(date.getFullYear(), 0, 1);\r\n                }\r\n            }\r\n\r\n            if (newDate) {\r\n                _this.silent = true;\r\n                _this.date = newDate;\r\n                _this.silent = false;\r\n                _this.nav._render()\r\n            }\r\n\r\n            if (opts.multipleDates && !opts.range) { // Set priority to range functionality\r\n                if (len === opts.multipleDates) return;\r\n                if (!_this._isSelected(date)) {\r\n                    _this.selectedDates.push(date);\r\n                }\r\n            } else if (opts.range) {\r\n                if (len == 2) {\r\n                    _this.selectedDates = [date];\r\n                    _this.minRange = date;\r\n                    _this.maxRange = '';\r\n                } else if (len == 1) {\r\n                    _this.selectedDates.push(date);\r\n                    if (!_this.maxRange){\r\n                        _this.maxRange = date;\r\n                    } else {\r\n                        _this.minRange = date;\r\n                    }\r\n                    // Swap dates if they were selected via dp.selectDate() and second date was smaller then first\r\n                    if (datepicker.bigger(_this.maxRange, _this.minRange)) {\r\n                        _this.maxRange = _this.minRange;\r\n                        _this.minRange = date;\r\n                    }\r\n                    _this.selectedDates = [_this.minRange, _this.maxRange]\r\n\r\n                } else {\r\n                    _this.selectedDates = [date];\r\n                    _this.minRange = date;\r\n                }\r\n            } else {\r\n                _this.selectedDates = [date];\r\n            }\r\n\r\n            _this._setInputValue();\r\n\r\n            if (opts.onSelect) {\r\n                _this._triggerOnChange();\r\n            }\r\n\r\n            if (opts.autoClose && !this.timepickerIsActive) {\r\n                if (!opts.multipleDates && !opts.range) {\r\n                    _this.hide();\r\n                } else if (opts.range && _this.selectedDates.length == 2) {\r\n                    _this.hide();\r\n                }\r\n            }\r\n\r\n            _this.views[this.currentView]._render()\r\n        },\r\n\r\n        removeDate: function (date) {\r\n            var selected = this.selectedDates,\r\n                _this = this;\r\n\r\n            if (!(date instanceof Date)) return;\r\n\r\n            return selected.some(function (curDate, i) {\r\n                if (datepicker.isSame(curDate, date)) {\r\n                    selected.splice(i, 1);\r\n\r\n                    if (!_this.selectedDates.length) {\r\n                        _this.minRange = '';\r\n                        _this.maxRange = '';\r\n                        _this.lastSelectedDate = '';\r\n                    } else {\r\n                        _this.lastSelectedDate = _this.selectedDates[_this.selectedDates.length - 1];\r\n                    }\r\n\r\n                    _this.views[_this.currentView]._render();\r\n                    _this._setInputValue();\r\n\r\n                    if (_this.opts.onSelect) {\r\n                        _this._triggerOnChange();\r\n                    }\r\n\r\n                    return true\r\n                }\r\n            })\r\n        },\r\n\r\n        today: function () {\r\n            this.silent = true;\r\n            this.view = this.opts.minView;\r\n            this.silent = false;\r\n            this.date = new Date();\r\n\r\n            if (this.opts.todayButton instanceof Date) {\r\n                this.selectDate(this.opts.todayButton)\r\n            }\r\n        },\r\n\r\n        clear: function () {\r\n            this.selectedDates = [];\r\n            this.minRange = '';\r\n            this.maxRange = '';\r\n            this.views[this.currentView]._render();\r\n            this._setInputValue();\r\n            if (this.opts.onSelect) {\r\n                this._triggerOnChange()\r\n            }\r\n        },\r\n\r\n        /**\r\n         * Updates datepicker options\r\n         * @param {String|Object} param - parameter's name to update. If object then it will extend current options\r\n         * @param {String|Number|Object} [value] - new param value\r\n         */\r\n        update: function (param, value) {\r\n            var len = arguments.length,\r\n                lastSelectedDate = this.lastSelectedDate;\r\n\r\n            if (len == 2) {\r\n                this.opts[param] = value;\r\n            } else if (len == 1 && typeof param == 'object') {\r\n                this.opts = $.extend(true, this.opts, param)\r\n            }\r\n\r\n            this._createShortCuts();\r\n            this._syncWithMinMaxDates();\r\n            this._defineLocale(this.opts.language);\r\n            this.nav._addButtonsIfNeed();\r\n            if (!this.opts.onlyTimepicker) this.nav._render();\r\n            this.views[this.currentView]._render();\r\n\r\n            if (this.elIsInput && !this.opts.inline) {\r\n                this._setPositionClasses(this.opts.position);\r\n                if (this.visible) {\r\n                    this.setPosition(this.opts.position)\r\n                }\r\n            }\r\n\r\n            if (this.opts.classes) {\r\n                this.$datepicker.addClass(this.opts.classes)\r\n            }\r\n\r\n            if (this.opts.onlyTimepicker) {\r\n                this.$datepicker.addClass('-only-timepicker-');\r\n            }\r\n\r\n            if (this.opts.timepicker) {\r\n                if (lastSelectedDate) this.timepicker._handleDate(lastSelectedDate);\r\n                this.timepicker._updateRanges();\r\n                this.timepicker._updateCurrentTime();\r\n                // Change hours and minutes if it's values have been changed through min/max hours/minutes\r\n                if (lastSelectedDate) {\r\n                    lastSelectedDate.setHours(this.timepicker.hours);\r\n                    lastSelectedDate.setMinutes(this.timepicker.minutes);\r\n                }\r\n            }\r\n\r\n            this._setInputValue();\r\n\r\n            return this;\r\n        },\r\n\r\n        _syncWithMinMaxDates: function () {\r\n            var curTime = this.date.getTime();\r\n            this.silent = true;\r\n            if (this.minTime > curTime) {\r\n                this.date = this.minDate;\r\n            }\r\n\r\n            if (this.maxTime < curTime) {\r\n                this.date = this.maxDate;\r\n            }\r\n            this.silent = false;\r\n        },\r\n\r\n        _isSelected: function (checkDate, cellType) {\r\n            var res = false;\r\n            this.selectedDates.some(function (date) {\r\n                if (datepicker.isSame(date, checkDate, cellType)) {\r\n                    res = date;\r\n                    return true;\r\n                }\r\n            });\r\n            return res;\r\n        },\r\n\r\n        _setInputValue: function () {\r\n            var _this = this,\r\n                opts = _this.opts,\r\n                format = _this.loc.dateFormat,\r\n                altFormat = opts.altFieldDateFormat,\r\n                value = _this.selectedDates.map(function (date) {\r\n                    return _this.formatDate(format, date)\r\n                }),\r\n                altValues;\r\n\r\n            if (opts.altField && _this.$altField.length) {\r\n                altValues = this.selectedDates.map(function (date) {\r\n                    return _this.formatDate(altFormat, date)\r\n                });\r\n                altValues = altValues.join(this.opts.multipleDatesSeparator);\r\n                this.$altField.val(altValues);\r\n            }\r\n\r\n            value = value.join(this.opts.multipleDatesSeparator);\r\n\r\n            this.$el.val(value)\r\n        },\r\n\r\n        /**\r\n         * Check if date is between minDate and maxDate\r\n         * @param date {object} - date object\r\n         * @param type {string} - cell type\r\n         * @returns {boolean}\r\n         * @private\r\n         */\r\n        _isInRange: function (date, type) {\r\n            var time = date.getTime(),\r\n                d = datepicker.getParsedDate(date),\r\n                min = datepicker.getParsedDate(this.minDate),\r\n                max = datepicker.getParsedDate(this.maxDate),\r\n                dMinTime = new Date(d.year, d.month, min.date).getTime(),\r\n                dMaxTime = new Date(d.year, d.month, max.date).getTime(),\r\n                types = {\r\n                    day: time >= this.minTime && time <= this.maxTime,\r\n                    month: dMinTime >= this.minTime && dMaxTime <= this.maxTime,\r\n                    year: d.year >= min.year && d.year <= max.year\r\n                };\r\n            return type ? types[type] : types.day\r\n        },\r\n\r\n        _getDimensions: function ($el) {\r\n            var offset = $el.offset();\r\n\r\n            return {\r\n                width: $el.outerWidth(),\r\n                height: $el.outerHeight(),\r\n                left: offset.left,\r\n                top: offset.top\r\n            }\r\n        },\r\n\r\n        _getDateFromCell: function (cell) {\r\n            var curDate = this.parsedDate,\r\n                year = cell.data('year') || curDate.year,\r\n                month = cell.data('month') == undefined ? curDate.month : cell.data('month'),\r\n                date = cell.data('date') || 1;\r\n\r\n            return new Date(year, month, date);\r\n        },\r\n\r\n        _setPositionClasses: function (pos) {\r\n            pos = pos.split(' ');\r\n            var main = pos[0],\r\n                sec = pos[1],\r\n                classes = 'datepicker -' + main + '-' + sec + '- -from-' + main + '-';\r\n\r\n            if (this.visible) classes += ' active';\r\n\r\n            this.$datepicker\r\n                .removeAttr('class')\r\n                .addClass(classes);\r\n        },\r\n\r\n        setPosition: function (position) {\r\n            position = position || this.opts.position;\r\n\r\n            var dims = this._getDimensions(this.$el),\r\n                selfDims = this._getDimensions(this.$datepicker),\r\n                pos = position.split(' '),\r\n                top, left,\r\n                offset = this.opts.offset,\r\n                main = pos[0],\r\n                secondary = pos[1];\r\n\r\n            switch (main) {\r\n                case 'top':\r\n                    top = dims.top - selfDims.height - offset;\r\n                    break;\r\n                case 'right':\r\n                    left = dims.left + dims.width + offset;\r\n                    break;\r\n                case 'bottom':\r\n                    top = dims.top + dims.height + offset;\r\n                    break;\r\n                case 'left':\r\n                    left = dims.left - selfDims.width - offset;\r\n                    break;\r\n            }\r\n\r\n            switch(secondary) {\r\n                case 'top':\r\n                    top = dims.top;\r\n                    break;\r\n                case 'right':\r\n                    left = dims.left + dims.width - selfDims.width;\r\n                    break;\r\n                case 'bottom':\r\n                    top = dims.top + dims.height - selfDims.height;\r\n                    break;\r\n                case 'left':\r\n                    left = dims.left;\r\n                    break;\r\n                case 'center':\r\n                    if (/left|right/.test(main)) {\r\n                        top = dims.top + dims.height/2 - selfDims.height/2;\r\n                    } else {\r\n                        left = dims.left + dims.width/2 - selfDims.width/2;\r\n                    }\r\n            }\r\n\r\n            this.$datepicker\r\n                .css({\r\n                    left: left,\r\n                    top: top\r\n                })\r\n        },\r\n\r\n        show: function () {\r\n            var onShow = this.opts.onShow;\r\n\r\n            this.setPosition(this.opts.position);\r\n            this.$datepicker.addClass('active');\r\n            this.visible = true;\r\n\r\n            if (onShow) {\r\n                this._bindVisionEvents(onShow)\r\n            }\r\n        },\r\n\r\n        hide: function () {\r\n            var onHide = this.opts.onHide;\r\n\r\n            this.$datepicker\r\n                .removeClass('active')\r\n                .css({\r\n                    left: '-100000px'\r\n                });\r\n\r\n            this.focused = '';\r\n            this.keys = [];\r\n\r\n            this.inFocus = false;\r\n            this.visible = false;\r\n            this.$el.blur();\r\n\r\n            if (onHide) {\r\n                this._bindVisionEvents(onHide)\r\n            }\r\n        },\r\n\r\n        down: function (date) {\r\n            this._changeView(date, 'down');\r\n        },\r\n\r\n        up: function (date) {\r\n            this._changeView(date, 'up');\r\n        },\r\n\r\n        _bindVisionEvents: function (event) {\r\n            this.$datepicker.off('transitionend.dp');\r\n            event(this, false);\r\n            this.$datepicker.one('transitionend.dp', event.bind(this, this, true))\r\n        },\r\n\r\n        _changeView: function (date, dir) {\r\n            date = date || this.focused || this.date;\r\n\r\n            var nextView = dir == 'up' ? this.viewIndex + 1 : this.viewIndex - 1;\r\n            if (nextView > 2) nextView = 2;\r\n            if (nextView < 0) nextView = 0;\r\n\r\n            this.silent = true;\r\n            this.date = new Date(date.getFullYear(), date.getMonth(), 1);\r\n            this.silent = false;\r\n            this.view = this.viewIndexes[nextView];\r\n\r\n        },\r\n\r\n        _handleHotKey: function (key) {\r\n            var date = datepicker.getParsedDate(this._getFocusedDate()),\r\n                focusedParsed,\r\n                o = this.opts,\r\n                newDate,\r\n                totalDaysInNextMonth,\r\n                monthChanged = false,\r\n                yearChanged = false,\r\n                decadeChanged = false,\r\n                y = date.year,\r\n                m = date.month,\r\n                d = date.date;\r\n\r\n            switch (key) {\r\n                case 'ctrlRight':\r\n                case 'ctrlUp':\r\n                    m += 1;\r\n                    monthChanged = true;\r\n                    break;\r\n                case 'ctrlLeft':\r\n                case 'ctrlDown':\r\n                    m -= 1;\r\n                    monthChanged = true;\r\n                    break;\r\n                case 'shiftRight':\r\n                case 'shiftUp':\r\n                    yearChanged = true;\r\n                    y += 1;\r\n                    break;\r\n                case 'shiftLeft':\r\n                case 'shiftDown':\r\n                    yearChanged = true;\r\n                    y -= 1;\r\n                    break;\r\n                case 'altRight':\r\n                case 'altUp':\r\n                    decadeChanged = true;\r\n                    y += 10;\r\n                    break;\r\n                case 'altLeft':\r\n                case 'altDown':\r\n                    decadeChanged = true;\r\n                    y -= 10;\r\n                    break;\r\n                case 'ctrlShiftUp':\r\n                    this.up();\r\n                    break;\r\n            }\r\n\r\n            totalDaysInNextMonth = datepicker.getDaysCount(new Date(y,m));\r\n            newDate = new Date(y,m,d);\r\n\r\n            // If next month has less days than current, set date to total days in that month\r\n            if (totalDaysInNextMonth < d) d = totalDaysInNextMonth;\r\n\r\n            // Check if newDate is in valid range\r\n            if (newDate.getTime() < this.minTime) {\r\n                newDate = this.minDate;\r\n            } else if (newDate.getTime() > this.maxTime) {\r\n                newDate = this.maxDate;\r\n            }\r\n\r\n            this.focused = newDate;\r\n\r\n            focusedParsed = datepicker.getParsedDate(newDate);\r\n            if (monthChanged && o.onChangeMonth) {\r\n                o.onChangeMonth(focusedParsed.month, focusedParsed.year)\r\n            }\r\n            if (yearChanged && o.onChangeYear) {\r\n                o.onChangeYear(focusedParsed.year)\r\n            }\r\n            if (decadeChanged && o.onChangeDecade) {\r\n                o.onChangeDecade(this.curDecade)\r\n            }\r\n        },\r\n\r\n        _registerKey: function (key) {\r\n            var exists = this.keys.some(function (curKey) {\r\n                return curKey == key;\r\n            });\r\n\r\n            if (!exists) {\r\n                this.keys.push(key)\r\n            }\r\n        },\r\n\r\n        _unRegisterKey: function (key) {\r\n            var index = this.keys.indexOf(key);\r\n\r\n            this.keys.splice(index, 1);\r\n        },\r\n\r\n        _isHotKeyPressed: function () {\r\n            var currentHotKey,\r\n                found = false,\r\n                _this = this,\r\n                pressedKeys = this.keys.sort();\r\n\r\n            for (var hotKey in hotKeys) {\r\n                currentHotKey = hotKeys[hotKey];\r\n                if (pressedKeys.length != currentHotKey.length) continue;\r\n\r\n                if (currentHotKey.every(function (key, i) { return key == pressedKeys[i]})) {\r\n                    _this._trigger('hotKey', hotKey);\r\n                    found = true;\r\n                }\r\n            }\r\n\r\n            return found;\r\n        },\r\n\r\n        _trigger: function (event, args) {\r\n            this.$el.trigger(event, args)\r\n        },\r\n\r\n        _focusNextCell: function (keyCode, type) {\r\n            type = type || this.cellType;\r\n\r\n            var date = datepicker.getParsedDate(this._getFocusedDate()),\r\n                y = date.year,\r\n                m = date.month,\r\n                d = date.date;\r\n\r\n            if (this._isHotKeyPressed()){\r\n                return;\r\n            }\r\n\r\n            switch(keyCode) {\r\n                case 37: // left\r\n                    type == 'day' ? (d -= 1) : '';\r\n                    type == 'month' ? (m -= 1) : '';\r\n                    type == 'year' ? (y -= 1) : '';\r\n                    break;\r\n                case 38: // up\r\n                    type == 'day' ? (d -= 7) : '';\r\n                    type == 'month' ? (m -= 3) : '';\r\n                    type == 'year' ? (y -= 4) : '';\r\n                    break;\r\n                case 39: // right\r\n                    type == 'day' ? (d += 1) : '';\r\n                    type == 'month' ? (m += 1) : '';\r\n                    type == 'year' ? (y += 1) : '';\r\n                    break;\r\n                case 40: // down\r\n                    type == 'day' ? (d += 7) : '';\r\n                    type == 'month' ? (m += 3) : '';\r\n                    type == 'year' ? (y += 4) : '';\r\n                    break;\r\n            }\r\n\r\n            var nd = new Date(y,m,d);\r\n            if (nd.getTime() < this.minTime) {\r\n                nd = this.minDate;\r\n            } else if (nd.getTime() > this.maxTime) {\r\n                nd = this.maxDate;\r\n            }\r\n\r\n            this.focused = nd;\r\n\r\n        },\r\n\r\n        _getFocusedDate: function () {\r\n            var focused  = this.focused || this.selectedDates[this.selectedDates.length - 1],\r\n                d = this.parsedDate;\r\n\r\n            if (!focused) {\r\n                switch (this.view) {\r\n                    case 'days':\r\n                        focused = new Date(d.year, d.month, new Date().getDate());\r\n                        break;\r\n                    case 'months':\r\n                        focused = new Date(d.year, d.month, 1);\r\n                        break;\r\n                    case 'years':\r\n                        focused = new Date(d.year, 0, 1);\r\n                        break;\r\n                }\r\n            }\r\n\r\n            return focused;\r\n        },\r\n\r\n        _getCell: function (date, type) {\r\n            type = type || this.cellType;\r\n\r\n            var d = datepicker.getParsedDate(date),\r\n                selector = '.datepicker--cell[data-year=\"' + d.year + '\"]',\r\n                $cell;\r\n\r\n            switch (type) {\r\n                case 'month':\r\n                    selector = '[data-month=\"' + d.month + '\"]';\r\n                    break;\r\n                case 'day':\r\n                    selector += '[data-month=\"' + d.month + '\"][data-date=\"' + d.date + '\"]';\r\n                    break;\r\n            }\r\n            $cell = this.views[this.currentView].$el.find(selector);\r\n\r\n            return $cell.length ? $cell : $('');\r\n        },\r\n\r\n        destroy: function () {\r\n            var _this = this;\r\n            _this.$el\r\n                .off('.adp')\r\n                .data('datepicker', '');\r\n\r\n            _this.selectedDates = [];\r\n            _this.focused = '';\r\n            _this.views = {};\r\n            _this.keys = [];\r\n            _this.minRange = '';\r\n            _this.maxRange = '';\r\n\r\n            if (_this.opts.inline || !_this.elIsInput) {\r\n                _this.$datepicker.closest('.datepicker-inline').remove();\r\n            } else {\r\n                _this.$datepicker.remove();\r\n            }\r\n        },\r\n\r\n        _handleAlreadySelectedDates: function (alreadySelected, selectedDate) {\r\n            if (this.opts.range) {\r\n                if (!this.opts.toggleSelected) {\r\n                    // Add possibility to select same date when range is true\r\n                    if (this.selectedDates.length != 2) {\r\n                        this._trigger('clickCell', selectedDate);\r\n                    }\r\n                } else {\r\n                    this.removeDate(selectedDate);\r\n                }\r\n            } else if (this.opts.toggleSelected){\r\n                this.removeDate(selectedDate);\r\n            }\r\n\r\n            // Change last selected date to be able to change time when clicking on this cell\r\n            if (!this.opts.toggleSelected) {\r\n                this.lastSelectedDate = alreadySelected;\r\n                if (this.opts.timepicker) {\r\n                    this.timepicker._setTime(alreadySelected);\r\n                    this.timepicker.update();\r\n                }\r\n            }\r\n        },\r\n\r\n        _onShowEvent: function (e) {\r\n            if (!this.visible) {\r\n                this.show();\r\n            }\r\n        },\r\n\r\n        _onBlur: function () {\r\n            if (!this.inFocus && this.visible) {\r\n                this.hide();\r\n            }\r\n        },\r\n\r\n        _onMouseDownDatepicker: function (e) {\r\n            this.inFocus = true;\r\n        },\r\n\r\n        _onMouseUpDatepicker: function (e) {\r\n            this.inFocus = false;\r\n            e.originalEvent.inFocus = true;\r\n            if (!e.originalEvent.timepickerFocus) this.$el.focus();\r\n        },\r\n\r\n        _onKeyUpGeneral: function (e) {\r\n            var val = this.$el.val();\r\n\r\n            if (!val) {\r\n                this.clear();\r\n            }\r\n        },\r\n\r\n        _onResize: function () {\r\n            if (this.visible) {\r\n                this.setPosition();\r\n            }\r\n        },\r\n\r\n        _onMouseUpBody: function (e) {\r\n            if (e.originalEvent.inFocus) return;\r\n\r\n            if (this.visible && !this.inFocus) {\r\n                this.hide();\r\n            }\r\n        },\r\n\r\n        _onMouseUpEl: function (e) {\r\n            e.originalEvent.inFocus = true;\r\n            setTimeout(this._onKeyUpGeneral.bind(this),4);\r\n        },\r\n\r\n        _onKeyDown: function (e) {\r\n            var code = e.which;\r\n            this._registerKey(code);\r\n\r\n            // Arrows\r\n            if (code >= 37 && code <= 40) {\r\n                e.preventDefault();\r\n                this._focusNextCell(code);\r\n            }\r\n\r\n            // Enter\r\n            if (code == 13) {\r\n                if (this.focused) {\r\n                    if (this._getCell(this.focused).hasClass('-disabled-')) return;\r\n                    if (this.view != this.opts.minView) {\r\n                        this.down()\r\n                    } else {\r\n                        var alreadySelected = this._isSelected(this.focused, this.cellType);\r\n\r\n                        if (!alreadySelected) {\r\n                            if (this.timepicker) {\r\n                                this.focused.setHours(this.timepicker.hours);\r\n                                this.focused.setMinutes(this.timepicker.minutes);\r\n                            }\r\n                            this.selectDate(this.focused);\r\n                            return;\r\n                        }\r\n                        this._handleAlreadySelectedDates(alreadySelected, this.focused)\r\n                    }\r\n                }\r\n            }\r\n\r\n            // Esc\r\n            if (code == 27) {\r\n                this.hide();\r\n            }\r\n        },\r\n\r\n        _onKeyUp: function (e) {\r\n            var code = e.which;\r\n            this._unRegisterKey(code);\r\n        },\r\n\r\n        _onHotKey: function (e, hotKey) {\r\n            this._handleHotKey(hotKey);\r\n        },\r\n\r\n        _onMouseEnterCell: function (e) {\r\n            var $cell = $(e.target).closest('.datepicker--cell'),\r\n                date = this._getDateFromCell($cell);\r\n\r\n            // Prevent from unnecessary rendering and setting new currentDate\r\n            this.silent = true;\r\n\r\n            if (this.focused) {\r\n                this.focused = ''\r\n            }\r\n\r\n            $cell.addClass('-focus-');\r\n\r\n            this.focused = date;\r\n            this.silent = false;\r\n\r\n            if (this.opts.range && this.selectedDates.length == 1) {\r\n                this.minRange = this.selectedDates[0];\r\n                this.maxRange = '';\r\n                if (datepicker.less(this.minRange, this.focused)) {\r\n                    this.maxRange = this.minRange;\r\n                    this.minRange = '';\r\n                }\r\n                this.views[this.currentView]._update();\r\n            }\r\n        },\r\n\r\n        _onMouseLeaveCell: function (e) {\r\n            var $cell = $(e.target).closest('.datepicker--cell');\r\n\r\n            $cell.removeClass('-focus-');\r\n\r\n            this.silent = true;\r\n            this.focused = '';\r\n            this.silent = false;\r\n        },\r\n\r\n        _onTimeChange: function (e, h, m) {\r\n            var date = new Date(),\r\n                selectedDates = this.selectedDates,\r\n                selected = false;\r\n\r\n            if (selectedDates.length) {\r\n                selected = true;\r\n                date = this.lastSelectedDate;\r\n            }\r\n\r\n            date.setHours(h);\r\n            date.setMinutes(m);\r\n\r\n            if (!selected && !this._getCell(date).hasClass('-disabled-')) {\r\n                this.selectDate(date);\r\n            } else {\r\n                this._setInputValue();\r\n                if (this.opts.onSelect) {\r\n                    this._triggerOnChange();\r\n                }\r\n            }\r\n        },\r\n\r\n        _onClickCell: function (e, date) {\r\n            if (this.timepicker) {\r\n                date.setHours(this.timepicker.hours);\r\n                date.setMinutes(this.timepicker.minutes);\r\n            }\r\n            this.selectDate(date);\r\n        },\r\n\r\n        set focused(val) {\r\n            if (!val && this.focused) {\r\n                var $cell = this._getCell(this.focused);\r\n\r\n                if ($cell.length) {\r\n                    $cell.removeClass('-focus-')\r\n                }\r\n            }\r\n            this._focused = val;\r\n            if (this.opts.range && this.selectedDates.length == 1) {\r\n                this.minRange = this.selectedDates[0];\r\n                this.maxRange = '';\r\n                if (datepicker.less(this.minRange, this._focused)) {\r\n                    this.maxRange = this.minRange;\r\n                    this.minRange = '';\r\n                }\r\n            }\r\n            if (this.silent) return;\r\n            this.date = val;\r\n        },\r\n\r\n        get focused() {\r\n            return this._focused;\r\n        },\r\n\r\n        get parsedDate() {\r\n            return datepicker.getParsedDate(this.date);\r\n        },\r\n\r\n        set date (val) {\r\n            if (!(val instanceof Date)) return;\r\n\r\n            this.currentDate = val;\r\n\r\n            if (this.inited && !this.silent) {\r\n                this.views[this.view]._render();\r\n                this.nav._render();\r\n                if (this.visible && this.elIsInput) {\r\n                    this.setPosition();\r\n                }\r\n            }\r\n            return val;\r\n        },\r\n\r\n        get date () {\r\n            return this.currentDate\r\n        },\r\n\r\n        set view (val) {\r\n            this.viewIndex = this.viewIndexes.indexOf(val);\r\n\r\n            if (this.viewIndex < 0) {\r\n                return;\r\n            }\r\n\r\n            this.prevView = this.currentView;\r\n            this.currentView = val;\r\n\r\n            if (this.inited) {\r\n                if (!this.views[val]) {\r\n                    this.views[val] = new  $.fn.datepicker.Body(this, val, this.opts)\r\n                } else {\r\n                    this.views[val]._render();\r\n                }\r\n\r\n                this.views[this.prevView].hide();\r\n                this.views[val].show();\r\n                this.nav._render();\r\n\r\n                if (this.opts.onChangeView) {\r\n                    this.opts.onChangeView(val)\r\n                }\r\n                if (this.elIsInput && this.visible) this.setPosition();\r\n            }\r\n\r\n            return val\r\n        },\r\n\r\n        get view() {\r\n            return this.currentView;\r\n        },\r\n\r\n        get cellType() {\r\n            return this.view.substring(0, this.view.length - 1)\r\n        },\r\n\r\n        get minTime() {\r\n            var min = datepicker.getParsedDate(this.minDate);\r\n            return new Date(min.year, min.month, min.date).getTime()\r\n        },\r\n\r\n        get maxTime() {\r\n            var max = datepicker.getParsedDate(this.maxDate);\r\n            return new Date(max.year, max.month, max.date).getTime()\r\n        },\r\n\r\n        get curDecade() {\r\n            return datepicker.getDecade(this.date)\r\n        }\r\n    };\r\n\r\n    //  Utils\r\n    // -------------------------------------------------\r\n\r\n    datepicker.getDaysCount = function (date) {\r\n        return new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\r\n    };\r\n\r\n    datepicker.getParsedDate = function (date) {\r\n        return {\r\n            year: date.getFullYear(),\r\n            month: date.getMonth(),\r\n            fullMonth: (date.getMonth() + 1) < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1, // One based\r\n            date: date.getDate(),\r\n            fullDate: date.getDate() < 10 ? '0' + date.getDate() : date.getDate(),\r\n            day: date.getDay(),\r\n            hours: date.getHours(),\r\n            fullHours:  date.getHours() < 10 ? '0' + date.getHours() :  date.getHours() ,\r\n            minutes: date.getMinutes(),\r\n            fullMinutes:  date.getMinutes() < 10 ? '0' + date.getMinutes() :  date.getMinutes()\r\n        }\r\n    };\r\n\r\n    datepicker.getDecade = function (date) {\r\n        var firstYear = Math.floor(date.getFullYear() / 10) * 10;\r\n\r\n        return [firstYear, firstYear + 9];\r\n    };\r\n\r\n    datepicker.template = function (str, data) {\r\n        return str.replace(/#\\{([\\w]+)\\}/g, function (source, match) {\r\n            if (data[match] || data[match] === 0) {\r\n                return data[match]\r\n            }\r\n        });\r\n    };\r\n\r\n    datepicker.isSame = function (date1, date2, type) {\r\n        if (!date1 || !date2) return false;\r\n        var d1 = datepicker.getParsedDate(date1),\r\n            d2 = datepicker.getParsedDate(date2),\r\n            _type = type ? type : 'day',\r\n\r\n            conditions = {\r\n                day: d1.date == d2.date && d1.month == d2.month && d1.year == d2.year,\r\n                month: d1.month == d2.month && d1.year == d2.year,\r\n                year: d1.year == d2.year\r\n            };\r\n\r\n        return conditions[_type];\r\n    };\r\n\r\n    datepicker.less = function (dateCompareTo, date, type) {\r\n        if (!dateCompareTo || !date) return false;\r\n        return date.getTime() < dateCompareTo.getTime();\r\n    };\r\n\r\n    datepicker.bigger = function (dateCompareTo, date, type) {\r\n        if (!dateCompareTo || !date) return false;\r\n        return date.getTime() > dateCompareTo.getTime();\r\n    };\r\n\r\n    datepicker.getLeadingZeroNum = function (num) {\r\n        return parseInt(num) < 10 ? '0' + num : num;\r\n    };\r\n\r\n    /**\r\n     * Returns copy of date with hours and minutes equals to 0\r\n     * @param date {Date}\r\n     */\r\n    datepicker.resetTime = function (date) {\r\n        if (typeof date != 'object') return;\r\n        date = datepicker.getParsedDate(date);\r\n        return new Date(date.year, date.month, date.date)\r\n    };\r\n\r\n    $.fn.datepicker = function ( options ) {\r\n        return this.each(function () {\r\n            if (!$.data(this, pluginName)) {\r\n                $.data(this,  pluginName,\r\n                    new Datepicker( this, options ));\r\n            } else {\r\n                var _this = $.data(this, pluginName);\r\n\r\n                _this.opts = $.extend(true, _this.opts, options);\r\n                _this.update();\r\n            }\r\n        });\r\n    };\r\n\r\n    $.fn.datepicker.Constructor = Datepicker;\r\n\r\n    $.fn.datepicker.language = {\r\n        ru: {\r\n            days: ['\u0412\u043E\u0441\u043A\u0440\u0435\u0441\u0435\u043D\u044C\u0435', '\u041F\u043E\u043D\u0435\u0434\u0435\u043B\u044C\u043D\u0438\u043A', '\u0412\u0442\u043E\u0440\u043D\u0438\u043A', '\u0421\u0440\u0435\u0434\u0430', '\u0427\u0435\u0442\u0432\u0435\u0440\u0433', '\u041F\u044F\u0442\u043D\u0438\u0446\u0430', '\u0421\u0443\u0431\u0431\u043E\u0442\u0430'],\r\n            daysShort: ['\u0412\u043E\u0441','\u041F\u043E\u043D','\u0412\u0442\u043E','\u0421\u0440\u0435','\u0427\u0435\u0442','\u041F\u044F\u0442','\u0421\u0443\u0431'],\r\n            daysMin: ['\u0412\u0441','\u041F\u043D','\u0412\u0442','\u0421\u0440','\u0427\u0442','\u041F\u0442','\u0421\u0431'],\r\n            months: ['\u042F\u043D\u0432\u0430\u0440\u044C', '\u0424\u0435\u0432\u0440\u0430\u043B\u044C', '\u041C\u0430\u0440\u0442', '\u0410\u043F\u0440\u0435\u043B\u044C', '\u041C\u0430\u0439', '\u0418\u044E\u043D\u044C', '\u0418\u044E\u043B\u044C', '\u0410\u0432\u0433\u0443\u0441\u0442', '\u0421\u0435\u043D\u0442\u044F\u0431\u0440\u044C', '\u041E\u043A\u0442\u044F\u0431\u0440\u044C', '\u041D\u043E\u044F\u0431\u0440\u044C', '\u0414\u0435\u043A\u0430\u0431\u0440\u044C'],\r\n            monthsShort: ['\u042F\u043D\u0432', '\u0424\u0435\u0432', '\u041C\u0430\u0440', '\u0410\u043F\u0440', '\u041C\u0430\u0439', '\u0418\u044E\u043D', '\u0418\u044E\u043B', '\u0410\u0432\u0433', '\u0421\u0435\u043D', '\u041E\u043A\u0442', '\u041D\u043E\u044F', '\u0414\u0435\u043A'],\r\n            today: '\u0421\u0435\u0433\u043E\u0434\u043D\u044F',\r\n            clear: '\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C',\r\n            dateFormat: 'dd.mm.yyyy',\r\n            timeFormat: 'hh:ii',\r\n            firstDay: 1\r\n        }\r\n    };\r\n\r\n    $(function () {\r\n        $(autoInitSelector).datepicker();\r\n    })\r\n\r\n})();\r\n", ";(function () {\r\n    var templates = {\r\n        days:'' +\r\n        '<div class=\"datepicker--days datepicker--body\">' +\r\n        '<div class=\"datepicker--days-names\"></div>' +\r\n        '<div class=\"datepicker--cells datepicker--cells-days\"></div>' +\r\n        '</div>',\r\n        months: '' +\r\n        '<div class=\"datepicker--months datepicker--body\">' +\r\n        '<div class=\"datepicker--cells datepicker--cells-months\"></div>' +\r\n        '</div>',\r\n        years: '' +\r\n        '<div class=\"datepicker--years datepicker--body\">' +\r\n        '<div class=\"datepicker--cells datepicker--cells-years\"></div>' +\r\n        '</div>'\r\n        },\r\n        datepicker = $.fn.datepicker,\r\n        dp = datepicker.Constructor;\r\n\r\n    datepicker.Body = function (d, type, opts) {\r\n        this.d = d;\r\n        this.type = type;\r\n        this.opts = opts;\r\n        this.$el = $('');\r\n\r\n        if (this.opts.onlyTimepicker) return;\r\n        this.init();\r\n    };\r\n\r\n    datepicker.Body.prototype = {\r\n        init: function () {\r\n            this._buildBaseHtml();\r\n            this._render();\r\n\r\n            this._bindEvents();\r\n        },\r\n\r\n        _bindEvents: function () {\r\n            this.$el.on('click', '.datepicker--cell', $.proxy(this._onClickCell, this));\r\n        },\r\n\r\n        _buildBaseHtml: function () {\r\n            this.$el = $(templates[this.type]).appendTo(this.d.$content);\r\n            this.$names = $('.datepicker--days-names', this.$el);\r\n            this.$cells = $('.datepicker--cells', this.$el);\r\n        },\r\n\r\n        _getDayNamesHtml: function (firstDay, curDay, html, i) {\r\n            curDay = curDay != undefined ? curDay : firstDay;\r\n            html = html ? html : '';\r\n            i = i != undefined ? i : 0;\r\n\r\n            if (i > 7) return html;\r\n            if (curDay == 7) return this._getDayNamesHtml(firstDay, 0, html, ++i);\r\n\r\n            html += '<div class=\"datepicker--day-name' + (this.d.isWeekend(curDay) ? \" -weekend-\" : \"\") + '\">' + this.d.loc.daysMin[curDay] + '</div>';\r\n\r\n            return this._getDayNamesHtml(firstDay, ++curDay, html, ++i);\r\n        },\r\n\r\n        _getCellContents: function (date, type) {\r\n            var classes = \"datepicker--cell datepicker--cell-\" + type,\r\n                currentDate = new Date(),\r\n                parent = this.d,\r\n                minRange = dp.resetTime(parent.minRange),\r\n                maxRange = dp.resetTime(parent.maxRange),\r\n                opts = parent.opts,\r\n                d = dp.getParsedDate(date),\r\n                render = {},\r\n                html = d.date;\r\n\r\n            switch (type) {\r\n                case 'day':\r\n                    if (parent.isWeekend(d.day)) classes += \" -weekend-\";\r\n                    if (d.month != this.d.parsedDate.month) {\r\n                        classes += \" -other-month-\";\r\n                        if (!opts.selectOtherMonths) {\r\n                            classes += \" -disabled-\";\r\n                        }\r\n                        if (!opts.showOtherMonths) html = '';\r\n                    }\r\n                    break;\r\n                case 'month':\r\n                    html = parent.loc[parent.opts.monthsField][d.month];\r\n                    break;\r\n                case 'year':\r\n                    var decade = parent.curDecade;\r\n                    html = d.year;\r\n                    if (d.year < decade[0] || d.year > decade[1]) {\r\n                        classes += ' -other-decade-';\r\n                        if (!opts.selectOtherYears) {\r\n                            classes += \" -disabled-\";\r\n                        }\r\n                        if (!opts.showOtherYears) html = '';\r\n                    }\r\n                    break;\r\n            }\r\n\r\n            if (opts.onRenderCell) {\r\n                render = opts.onRenderCell(date, type) || {};\r\n                html = render.html ? render.html : html;\r\n                classes += render.classes ? ' ' + render.classes : '';\r\n            }\r\n\r\n            if (opts.range) {\r\n                if (dp.isSame(minRange, date, type)) classes += ' -range-from-';\r\n                if (dp.isSame(maxRange, date, type)) classes += ' -range-to-';\r\n\r\n                if (parent.selectedDates.length == 1 && parent.focused) {\r\n                    if (\r\n                        (dp.bigger(minRange, date) && dp.less(parent.focused, date)) ||\r\n                        (dp.less(maxRange, date) && dp.bigger(parent.focused, date)))\r\n                    {\r\n                        classes += ' -in-range-'\r\n                    }\r\n\r\n                    if (dp.less(maxRange, date) && dp.isSame(parent.focused, date)) {\r\n                        classes += ' -range-from-'\r\n                    }\r\n                    if (dp.bigger(minRange, date) && dp.isSame(parent.focused, date)) {\r\n                        classes += ' -range-to-'\r\n                    }\r\n\r\n                } else if (parent.selectedDates.length == 2) {\r\n                    if (dp.bigger(minRange, date) && dp.less(maxRange, date)) {\r\n                        classes += ' -in-range-'\r\n                    }\r\n                }\r\n            }\r\n\r\n\r\n            if (dp.isSame(currentDate, date, type)) classes += ' -current-';\r\n            if (parent.focused && dp.isSame(date, parent.focused, type)) classes += ' -focus-';\r\n            if (parent._isSelected(date, type)) classes += ' -selected-';\r\n            if (!parent._isInRange(date, type) || render.disabled) classes += ' -disabled-';\r\n\r\n            return {\r\n                html: html,\r\n                classes: classes\r\n            }\r\n        },\r\n\r\n        /**\r\n         * Calculates days number to render. Generates days html and returns it.\r\n         * @param {object} date - Date object\r\n         * @returns {string}\r\n         * @private\r\n         */\r\n        _getDaysHtml: function (date) {\r\n            var totalMonthDays = dp.getDaysCount(date),\r\n                firstMonthDay = new Date(date.getFullYear(), date.getMonth(), 1).getDay(),\r\n                lastMonthDay = new Date(date.getFullYear(), date.getMonth(), totalMonthDays).getDay(),\r\n                daysFromPevMonth = firstMonthDay - this.d.loc.firstDay,\r\n                daysFromNextMonth = 6 - lastMonthDay + this.d.loc.firstDay;\r\n\r\n            daysFromPevMonth = daysFromPevMonth < 0 ? daysFromPevMonth + 7 : daysFromPevMonth;\r\n            daysFromNextMonth = daysFromNextMonth > 6 ? daysFromNextMonth - 7 : daysFromNextMonth;\r\n\r\n            var startDayIndex = -daysFromPevMonth + 1,\r\n                m, y,\r\n                html = '';\r\n\r\n            for (var i = startDayIndex, max = totalMonthDays + daysFromNextMonth; i <= max; i++) {\r\n                y = date.getFullYear();\r\n                m = date.getMonth();\r\n\r\n                html += this._getDayHtml(new Date(y, m, i))\r\n            }\r\n\r\n            return html;\r\n        },\r\n\r\n        _getDayHtml: function (date) {\r\n           var content = this._getCellContents(date, 'day');\r\n\r\n            return '<div class=\"' + content.classes + '\" ' +\r\n                'data-date=\"' + date.getDate() + '\" ' +\r\n                'data-month=\"' + date.getMonth() + '\" ' +\r\n                'data-year=\"' + date.getFullYear() + '\">' + content.html + '</div>';\r\n        },\r\n\r\n        /**\r\n         * Generates months html\r\n         * @param {object} date - date instance\r\n         * @returns {string}\r\n         * @private\r\n         */\r\n        _getMonthsHtml: function (date) {\r\n            var html = '',\r\n                d = dp.getParsedDate(date),\r\n                i = 0;\r\n\r\n            while(i < 12) {\r\n                html += this._getMonthHtml(new Date(d.year, i));\r\n                i++\r\n            }\r\n\r\n            return html;\r\n        },\r\n\r\n        _getMonthHtml: function (date) {\r\n            var content = this._getCellContents(date, 'month');\r\n\r\n            return '<div class=\"' + content.classes + '\" data-month=\"' + date.getMonth() + '\">' + content.html + '</div>'\r\n        },\r\n\r\n        _getYearsHtml: function (date) {\r\n            var d = dp.getParsedDate(date),\r\n                decade = dp.getDecade(date),\r\n                firstYear = decade[0] - 1,\r\n                html = '',\r\n                i = firstYear;\r\n\r\n            for (i; i <= decade[1] + 1; i++) {\r\n                html += this._getYearHtml(new Date(i , 0));\r\n            }\r\n\r\n            return html;\r\n        },\r\n\r\n        _getYearHtml: function (date) {\r\n            var content = this._getCellContents(date, 'year');\r\n\r\n            return '<div class=\"' + content.classes + '\" data-year=\"' + date.getFullYear() + '\">' + content.html + '</div>'\r\n        },\r\n\r\n        _renderTypes: {\r\n            days: function () {\r\n                var dayNames = this._getDayNamesHtml(this.d.loc.firstDay),\r\n                    days = this._getDaysHtml(this.d.currentDate);\r\n\r\n                this.$cells.html(days);\r\n                this.$names.html(dayNames)\r\n            },\r\n            months: function () {\r\n                var html = this._getMonthsHtml(this.d.currentDate);\r\n\r\n                this.$cells.html(html)\r\n            },\r\n            years: function () {\r\n                var html = this._getYearsHtml(this.d.currentDate);\r\n\r\n                this.$cells.html(html)\r\n            }\r\n        },\r\n\r\n        _render: function () {\r\n            if (this.opts.onlyTimepicker) return;\r\n            this._renderTypes[this.type].bind(this)();\r\n        },\r\n\r\n        _update: function () {\r\n            var $cells = $('.datepicker--cell', this.$cells),\r\n                _this = this,\r\n                classes,\r\n                $cell,\r\n                date;\r\n            $cells.each(function (cell, i) {\r\n                $cell = $(this);\r\n                date = _this.d._getDateFromCell($(this));\r\n                classes = _this._getCellContents(date, _this.d.cellType);\r\n                $cell.attr('class',classes.classes)\r\n            });\r\n        },\r\n\r\n        show: function () {\r\n            if (this.opts.onlyTimepicker) return;\r\n            this.$el.addClass('active');\r\n            this.acitve = true;\r\n        },\r\n\r\n        hide: function () {\r\n            this.$el.removeClass('active');\r\n            this.active = false;\r\n        },\r\n\r\n        //  Events\r\n        // -------------------------------------------------\r\n\r\n        _handleClick: function (el) {\r\n            var date = el.data('date') || 1,\r\n                month = el.data('month') || 0,\r\n                year = el.data('year') || this.d.parsedDate.year,\r\n                dp = this.d;\r\n            // Change view if min view does not reach yet\r\n            if (dp.view != this.opts.minView) {\r\n                dp.down(new Date(year, month, date));\r\n                return;\r\n            }\r\n            // Select date if min view is reached\r\n            var selectedDate = new Date(year, month, date),\r\n                alreadySelected = this.d._isSelected(selectedDate, this.d.cellType);\r\n\r\n            if (!alreadySelected) {\r\n                dp._trigger('clickCell', selectedDate);\r\n                return;\r\n            }\r\n\r\n            dp._handleAlreadySelectedDates.bind(dp, alreadySelected, selectedDate)();\r\n\r\n        },\r\n\r\n        _onClickCell: function (e) {\r\n            var $el = $(e.target).closest('.datepicker--cell');\r\n\r\n            if ($el.hasClass('-disabled-')) return;\r\n\r\n            this._handleClick.bind(this)($el);\r\n        }\r\n    };\r\n})();\r\n", ";(function () {\r\n    var template = '' +\r\n        '<div class=\"datepicker--nav-action\" data-action=\"prev\">#{prevHtml}</div>' +\r\n        '<div class=\"datepicker--nav-title\">#{title}</div>' +\r\n        '<div class=\"datepicker--nav-action\" data-action=\"next\">#{nextHtml}</div>',\r\n        buttonsContainerTemplate = '<div class=\"datepicker--buttons\"></div>',\r\n        button = '<span class=\"datepicker--button\" data-action=\"#{action}\">#{label}</span>',\r\n        datepicker = $.fn.datepicker,\r\n        dp = datepicker.Constructor;\r\n\r\n    datepicker.Navigation = function (d, opts) {\r\n        this.d = d;\r\n        this.opts = opts;\r\n\r\n        this.$buttonsContainer = '';\r\n\r\n        this.init();\r\n    };\r\n\r\n    datepicker.Navigation.prototype = {\r\n        init: function () {\r\n            this._buildBaseHtml();\r\n            this._bindEvents();\r\n        },\r\n\r\n        _bindEvents: function () {\r\n            this.d.$nav.on('click', '.datepicker--nav-action', $.proxy(this._onClickNavButton, this));\r\n            this.d.$nav.on('click', '.datepicker--nav-title', $.proxy(this._onClickNavTitle, this));\r\n            this.d.$datepicker.on('click', '.datepicker--button', $.proxy(this._onClickNavButton, this));\r\n        },\r\n\r\n        _buildBaseHtml: function () {\r\n            if (!this.opts.onlyTimepicker) {\r\n                this._render();\r\n            }\r\n            this._addButtonsIfNeed();\r\n        },\r\n\r\n        _addButtonsIfNeed: function () {\r\n            if (this.opts.todayButton) {\r\n                this._addButton('today')\r\n            }\r\n            if (this.opts.clearButton) {\r\n                this._addButton('clear')\r\n            }\r\n        },\r\n\r\n        _render: function () {\r\n            var title = this._getTitle(this.d.currentDate),\r\n                html = dp.template(template, $.extend({title: title}, this.opts));\r\n            this.d.$nav.html(html);\r\n            if (this.d.view == 'years') {\r\n                $('.datepicker--nav-title', this.d.$nav).addClass('-disabled-');\r\n            }\r\n            this.setNavStatus();\r\n        },\r\n\r\n        _getTitle: function (date) {\r\n            return this.d.formatDate(this.opts.navTitles[this.d.view], date)\r\n        },\r\n\r\n        _addButton: function (type) {\r\n            if (!this.$buttonsContainer.length) {\r\n                this._addButtonsContainer();\r\n            }\r\n\r\n            var data = {\r\n                    action: type,\r\n                    label: this.d.loc[type]\r\n                },\r\n                html = dp.template(button, data);\r\n\r\n            if ($('[data-action=' + type + ']', this.$buttonsContainer).length) return;\r\n            this.$buttonsContainer.append(html);\r\n        },\r\n\r\n        _addButtonsContainer: function () {\r\n            this.d.$datepicker.append(buttonsContainerTemplate);\r\n            this.$buttonsContainer = $('.datepicker--buttons', this.d.$datepicker);\r\n        },\r\n\r\n        setNavStatus: function () {\r\n            if (!(this.opts.minDate || this.opts.maxDate) || !this.opts.disableNavWhenOutOfRange) return;\r\n\r\n            var date = this.d.parsedDate,\r\n                m = date.month,\r\n                y = date.year,\r\n                d = date.date;\r\n\r\n            switch (this.d.view) {\r\n                case 'days':\r\n                    if (!this.d._isInRange(new Date(y, m-1, 1), 'month')) {\r\n                        this._disableNav('prev')\r\n                    }\r\n                    if (!this.d._isInRange(new Date(y, m+1, 1), 'month')) {\r\n                        this._disableNav('next')\r\n                    }\r\n                    break;\r\n                case 'months':\r\n                    if (!this.d._isInRange(new Date(y-1, m, d), 'year')) {\r\n                        this._disableNav('prev')\r\n                    }\r\n                    if (!this.d._isInRange(new Date(y+1, m, d), 'year')) {\r\n                        this._disableNav('next')\r\n                    }\r\n                    break;\r\n                case 'years':\r\n                    var decade = dp.getDecade(this.d.date);\r\n                    if (!this.d._isInRange(new Date(decade[0] - 1, 0, 1), 'year')) {\r\n                        this._disableNav('prev')\r\n                    }\r\n                    if (!this.d._isInRange(new Date(decade[1] + 1, 0, 1), 'year')) {\r\n                        this._disableNav('next')\r\n                    }\r\n                    break;\r\n            }\r\n        },\r\n\r\n        _disableNav: function (nav) {\r\n            $('[data-action=\"' + nav + '\"]', this.d.$nav).addClass('-disabled-')\r\n        },\r\n\r\n        _activateNav: function (nav) {\r\n            $('[data-action=\"' + nav + '\"]', this.d.$nav).removeClass('-disabled-')\r\n        },\r\n\r\n        _onClickNavButton: function (e) {\r\n            var $el = $(e.target).closest('[data-action]'),\r\n                action = $el.data('action');\r\n\r\n            this.d[action]();\r\n        },\r\n\r\n        _onClickNavTitle: function (e) {\r\n            if ($(e.target).hasClass('-disabled-')) return;\r\n\r\n            if (this.d.view == 'days') {\r\n                return this.d.view = 'months'\r\n            }\r\n\r\n            this.d.view = 'years';\r\n        }\r\n    }\r\n\r\n})();\r\n", ";(function () {\r\n    var template = '<div class=\"datepicker--time\">' +\r\n        '<div class=\"datepicker--time-current\">' +\r\n        '   <span class=\"datepicker--time-current-hours\">#{hourVisible}</span>' +\r\n        '   <span class=\"datepicker--time-current-colon\">:</span>' +\r\n        '   <span class=\"datepicker--time-current-minutes\">#{minValue}</span>' +\r\n        '</div>' +\r\n        '<div class=\"datepicker--time-sliders\">' +\r\n        '   <div class=\"datepicker--time-row\">' +\r\n        '      <input type=\"range\" name=\"hours\" value=\"#{hourValue}\" min=\"#{hourMin}\" max=\"#{hourMax}\" step=\"#{hourStep}\"/>' +\r\n        '   </div>' +\r\n        '   <div class=\"datepicker--time-row\">' +\r\n        '      <input type=\"range\" name=\"minutes\" value=\"#{minValue}\" min=\"#{minMin}\" max=\"#{minMax}\" step=\"#{minStep}\"/>' +\r\n        '   </div>' +\r\n        '</div>' +\r\n        '</div>',\r\n        datepicker = $.fn.datepicker,\r\n        dp = datepicker.Constructor;\r\n\r\n    datepicker.Timepicker = function (inst, opts) {\r\n        this.d = inst;\r\n        this.opts = opts;\r\n\r\n        this.init();\r\n    };\r\n\r\n    datepicker.Timepicker.prototype = {\r\n        init: function () {\r\n            var input = 'input';\r\n            this._setTime(this.d.date);\r\n            this._buildHTML();\r\n\r\n            if (navigator.userAgent.match(/trident/gi)) {\r\n                input = 'change';\r\n            }\r\n\r\n            this.d.$el.on('selectDate', this._onSelectDate.bind(this));\r\n            this.$ranges.on(input, this._onChangeRange.bind(this));\r\n            this.$ranges.on('mouseup', this._onMouseUpRange.bind(this));\r\n            this.$ranges.on('mousemove focus ', this._onMouseEnterRange.bind(this));\r\n            this.$ranges.on('mouseout blur', this._onMouseOutRange.bind(this));\r\n        },\r\n\r\n        _setTime: function (date) {\r\n            var _date = dp.getParsedDate(date);\r\n\r\n            this._handleDate(date);\r\n            this.hours = _date.hours < this.minHours ? this.minHours : _date.hours;\r\n            this.minutes = _date.minutes < this.minMinutes ? this.minMinutes : _date.minutes;\r\n        },\r\n\r\n        /**\r\n         * Sets minHours and minMinutes from date (usually it's a minDate)\r\n         * Also changes minMinutes if current hours are bigger then @date hours\r\n         * @param date {Date}\r\n         * @private\r\n         */\r\n        _setMinTimeFromDate: function (date) {\r\n            this.minHours = date.getHours();\r\n            this.minMinutes = date.getMinutes();\r\n\r\n            // If, for example, min hours are 10, and current hours are 12,\r\n            // update minMinutes to default value, to be able to choose whole range of values\r\n            if (this.d.lastSelectedDate) {\r\n                if (this.d.lastSelectedDate.getHours() > date.getHours()) {\r\n                    this.minMinutes = this.opts.minMinutes;\r\n                }\r\n            }\r\n        },\r\n\r\n        _setMaxTimeFromDate: function (date) {\r\n            this.maxHours = date.getHours();\r\n            this.maxMinutes = date.getMinutes();\r\n\r\n            if (this.d.lastSelectedDate) {\r\n                if (this.d.lastSelectedDate.getHours() < date.getHours()) {\r\n                    this.maxMinutes = this.opts.maxMinutes;\r\n                }\r\n            }\r\n        },\r\n\r\n        _setDefaultMinMaxTime: function () {\r\n            var maxHours = 23,\r\n                maxMinutes = 59,\r\n                opts = this.opts;\r\n\r\n            this.minHours = opts.minHours < 0 || opts.minHours > maxHours ? 0 : opts.minHours;\r\n            this.minMinutes = opts.minMinutes < 0 || opts.minMinutes > maxMinutes ? 0 : opts.minMinutes;\r\n            this.maxHours = opts.maxHours < 0 || opts.maxHours > maxHours ? maxHours : opts.maxHours;\r\n            this.maxMinutes = opts.maxMinutes < 0 || opts.maxMinutes > maxMinutes ? maxMinutes : opts.maxMinutes;\r\n        },\r\n\r\n        /**\r\n         * Looks for min/max hours/minutes and if current values\r\n         * are out of range sets valid values.\r\n         * @private\r\n         */\r\n        _validateHoursMinutes: function (date) {\r\n            if (this.hours < this.minHours) {\r\n                this.hours = this.minHours;\r\n            } else if (this.hours > this.maxHours) {\r\n                this.hours = this.maxHours;\r\n            }\r\n\r\n            if (this.minutes < this.minMinutes) {\r\n                this.minutes = this.minMinutes;\r\n            } else if (this.minutes > this.maxMinutes) {\r\n                this.minutes = this.maxMinutes;\r\n            }\r\n        },\r\n\r\n        _buildHTML: function () {\r\n            var lz = dp.getLeadingZeroNum,\r\n                data = {\r\n                    hourMin: this.minHours,\r\n                    hourMax: lz(this.maxHours),\r\n                    hourStep: this.opts.hoursStep,\r\n                    hourValue: this.hours,\r\n                    hourVisible: lz(this.displayHours),\r\n                    minMin: this.minMinutes,\r\n                    minMax: lz(this.maxMinutes),\r\n                    minStep: this.opts.minutesStep,\r\n                    minValue: lz(this.minutes)\r\n                },\r\n                _template = dp.template(template, data);\r\n\r\n            this.$timepicker = $(_template).appendTo(this.d.$datepicker);\r\n            this.$ranges = $('[type=\"range\"]', this.$timepicker);\r\n            this.$hours = $('[name=\"hours\"]', this.$timepicker);\r\n            this.$minutes = $('[name=\"minutes\"]', this.$timepicker);\r\n            this.$hoursText = $('.datepicker--time-current-hours', this.$timepicker);\r\n            this.$minutesText = $('.datepicker--time-current-minutes', this.$timepicker);\r\n\r\n            if (this.d.ampm) {\r\n                this.$ampm = $('<span class=\"datepicker--time-current-ampm\">')\r\n                    .appendTo($('.datepicker--time-current', this.$timepicker))\r\n                    .html(this.dayPeriod);\r\n\r\n                this.$timepicker.addClass('-am-pm-');\r\n            }\r\n        },\r\n\r\n        _updateCurrentTime: function () {\r\n            var h =  dp.getLeadingZeroNum(this.displayHours),\r\n                m = dp.getLeadingZeroNum(this.minutes);\r\n\r\n            this.$hoursText.html(h);\r\n            this.$minutesText.html(m);\r\n\r\n            if (this.d.ampm) {\r\n                this.$ampm.html(this.dayPeriod);\r\n            }\r\n        },\r\n\r\n        _updateRanges: function () {\r\n            this.$hours.attr({\r\n                min: this.minHours,\r\n                max: this.maxHours\r\n            }).val(this.hours);\r\n\r\n            this.$minutes.attr({\r\n                min: this.minMinutes,\r\n                max: this.maxMinutes\r\n            }).val(this.minutes)\r\n        },\r\n\r\n        /**\r\n         * Sets minHours, minMinutes etc. from date. If date is not passed, than sets\r\n         * values from options\r\n         * @param [date] {object} - Date object, to get values from\r\n         * @private\r\n         */\r\n        _handleDate: function (date) {\r\n            this._setDefaultMinMaxTime();\r\n            if (date) {\r\n                if (dp.isSame(date, this.d.opts.minDate)) {\r\n                    this._setMinTimeFromDate(this.d.opts.minDate);\r\n                } else if (dp.isSame(date, this.d.opts.maxDate)) {\r\n                    this._setMaxTimeFromDate(this.d.opts.maxDate);\r\n                }\r\n            }\r\n\r\n            this._validateHoursMinutes(date);\r\n        },\r\n\r\n        update: function () {\r\n            this._updateRanges();\r\n            this._updateCurrentTime();\r\n        },\r\n\r\n        /**\r\n         * Calculates valid hour value to display in text input and datepicker's body.\r\n         * @param date {Date|Number} - date or hours\r\n         * @param [ampm] {Boolean} - 12 hours mode\r\n         * @returns {{hours: *, dayPeriod: string}}\r\n         * @private\r\n         */\r\n        _getValidHoursFromDate: function (date, ampm) {\r\n            var d = date,\r\n                hours = date;\r\n\r\n            if (date instanceof Date) {\r\n                d = dp.getParsedDate(date);\r\n                hours = d.hours;\r\n            }\r\n\r\n            var _ampm = ampm || this.d.ampm,\r\n                dayPeriod = 'am';\r\n\r\n            if (_ampm) {\r\n                switch(true) {\r\n                    case hours == 0:\r\n                        hours = 12;\r\n                        break;\r\n                    case hours == 12:\r\n                        dayPeriod = 'pm';\r\n                        break;\r\n                    case hours > 11:\r\n                        hours = hours - 12;\r\n                        dayPeriod = 'pm';\r\n                        break;\r\n                    default:\r\n                        break;\r\n                }\r\n            }\r\n\r\n            return {\r\n                hours: hours,\r\n                dayPeriod: dayPeriod\r\n            }\r\n        },\r\n\r\n        set hours (val) {\r\n            this._hours = val;\r\n\r\n            var displayHours = this._getValidHoursFromDate(val);\r\n\r\n            this.displayHours = displayHours.hours;\r\n            this.dayPeriod = displayHours.dayPeriod;\r\n        },\r\n\r\n        get hours() {\r\n            return this._hours;\r\n        },\r\n\r\n        //  Events\r\n        // -------------------------------------------------\r\n\r\n        _onChangeRange: function (e) {\r\n            var $target = $(e.target),\r\n                name = $target.attr('name');\r\n            \r\n            this.d.timepickerIsActive = true;\r\n\r\n            this[name] = $target.val();\r\n            this._updateCurrentTime();\r\n            this.d._trigger('timeChange', [this.hours, this.minutes]);\r\n\r\n            this._handleDate(this.d.lastSelectedDate);\r\n            this.update()\r\n        },\r\n\r\n        _onSelectDate: function (e, data) {\r\n            this._handleDate(data);\r\n            this.update();\r\n        },\r\n\r\n        _onMouseEnterRange: function (e) {\r\n            var name = $(e.target).attr('name');\r\n            $('.datepicker--time-current-' + name, this.$timepicker).addClass('-focus-');\r\n        },\r\n\r\n        _onMouseOutRange: function (e) {\r\n            var name = $(e.target).attr('name');\r\n            if (this.d.inFocus) return; // Prevent removing focus when mouse out of range slider\r\n            $('.datepicker--time-current-' + name, this.$timepicker).removeClass('-focus-');\r\n        },\r\n\r\n        _onMouseUpRange: function (e) {\r\n            this.d.timepickerIsActive = false;\r\n        }\r\n    };\r\n})();\r\n", "/*! axe v4.2.1\n * Copyright (c) 2021 Deque Systems, Inc.\n *\n * Your use of this Source Code Form is subject to the terms of the Mozilla Public\n * License, v. 2.0. If a copy of the MPL was not distributed with this\n * file, You can obtain one at http://mozilla.org/MPL/2.0/.\n *\n * This entire copyright notice must appear in every copy of this file you\n * distribute or in any file that contains substantial portions of this source\n * code.\n */\n(function axeFunction(window) {\n  var global = window;\n  var document = window.document;\n  'use strict';\n  function _typeof(obj) {\n    '@babel/helpers - typeof';\n    if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {\n      _typeof = function _typeof(obj) {\n        return typeof obj;\n      };\n    } else {\n      _typeof = function _typeof(obj) {\n        return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;\n      };\n    }\n    return _typeof(obj);\n  }\n  var axe = axe || {};\n  axe.version = '4.2.1';\n  if (typeof define === 'function' && define.amd) {\n    define('axe-core', [], function() {\n      return axe;\n    });\n  }\n  if ((typeof module === 'undefined' ? 'undefined' : _typeof(module)) === 'object' && module.exports && typeof axeFunction.toString === 'function') {\n    axe.source = '(' + axeFunction.toString() + ')(typeof window === \"object\" ? window : this);';\n    module.exports = axe;\n  }\n  if (typeof window.getComputedStyle === 'function') {\n    window.axe = axe;\n  }\n  var commons;\n  function SupportError(error) {\n    this.name = 'SupportError';\n    this.cause = error.cause;\n    this.message = '`'.concat(error.cause, '` - feature unsupported in your environment.');\n    if (error.ruleId) {\n      this.ruleId = error.ruleId;\n      this.message += ' Skipping '.concat(this.ruleId, ' rule.');\n    }\n    this.stack = new Error().stack;\n  }\n  SupportError.prototype = Object.create(Error.prototype);\n  SupportError.prototype.constructor = SupportError;\n  'use strict';\n  function _objectWithoutProperties(source, excluded) {\n    if (source == null) {\n      return {};\n    }\n    var target = _objectWithoutPropertiesLoose(source, excluded);\n    var key, i;\n    if (Object.getOwnPropertySymbols) {\n      var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n      for (i = 0; i < sourceSymbolKeys.length; i++) {\n        key = sourceSymbolKeys[i];\n        if (excluded.indexOf(key) >= 0) {\n          continue;\n        }\n        if (!Object.prototype.propertyIsEnumerable.call(source, key)) {\n          continue;\n        }\n        target[key] = source[key];\n      }\n    }\n    return target;\n  }\n  function _objectWithoutPropertiesLoose(source, excluded) {\n    if (source == null) {\n      return {};\n    }\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) {\n        continue;\n      }\n      target[key] = source[key];\n    }\n    return target;\n  }\n  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  }\n  function _inherits(subClass, superClass) {\n    if (typeof superClass !== 'function' && superClass !== null) {\n      throw new TypeError('Super expression must either be null or a function');\n    }\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\n      constructor: {\n        value: subClass,\n        writable: true,\n        configurable: true\n      }\n    });\n    if (superClass) {\n      _setPrototypeOf(subClass, superClass);\n    }\n  }\n  function _setPrototypeOf(o, p) {\n    _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n      o.__proto__ = p;\n      return o;\n    };\n    return _setPrototypeOf(o, p);\n  }\n  function _createSuper(Derived) {\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\n    return function _createSuperInternal() {\n      var Super = _getPrototypeOf(Derived), result;\n      if (hasNativeReflectConstruct) {\n        var NewTarget = _getPrototypeOf(this).constructor;\n        result = Reflect.construct(Super, arguments, NewTarget);\n      } else {\n        result = Super.apply(this, arguments);\n      }\n      return _possibleConstructorReturn(this, result);\n    };\n  }\n  function _possibleConstructorReturn(self, call) {\n    if (call && (_typeof(call) === 'object' || typeof call === 'function')) {\n      return call;\n    }\n    return _assertThisInitialized(self);\n  }\n  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  }\n  function _isNativeReflectConstruct() {\n    if (typeof Reflect === 'undefined' || !Reflect.construct) {\n      return false;\n    }\n    if (Reflect.construct.sham) {\n      return false;\n    }\n    if (typeof Proxy === 'function') {\n      return true;\n    }\n    try {\n      Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n      return true;\n    } catch (e) {\n      return false;\n    }\n  }\n  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  }\n  function _toConsumableArray(arr) {\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n  }\n  function _nonIterableSpread() {\n    throw new TypeError('Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.');\n  }\n  function _iterableToArray(iter) {\n    if (typeof Symbol !== 'undefined' && Symbol.iterator in Object(iter)) {\n      return Array.from(iter);\n    }\n  }\n  function _arrayWithoutHoles(arr) {\n    if (Array.isArray(arr)) {\n      return _arrayLikeToArray(arr);\n    }\n  }\n  function _slicedToArray(arr, i) {\n    return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n  }\n  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  }\n  function _iterableToArrayLimit(arr, i) {\n    if (typeof Symbol === 'undefined' || !(Symbol.iterator in Object(arr))) {\n      return;\n    }\n    var _arr = [];\n    var _n = true;\n    var _d = false;\n    var _e = undefined;\n    try {\n      for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n        _arr.push(_s.value);\n        if (i && _arr.length === i) {\n          break;\n        }\n      }\n    } catch (err) {\n      _d = true;\n      _e = err;\n    } finally {\n      try {\n        if (!_n && _i['return'] != null) {\n          _i['return']();\n        }\n      } finally {\n        if (_d) {\n          throw _e;\n        }\n      }\n    }\n    return _arr;\n  }\n  function _arrayWithHoles(arr) {\n    if (Array.isArray(arr)) {\n      return arr;\n    }\n  }\n  function _extends() {\n    _extends = Object.assign || 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  }\n  function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError('Cannot call a class as a function');\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) {\n        descriptor.writable = true;\n      }\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n  function _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) {\n      _defineProperties(Constructor.prototype, protoProps);\n    }\n    if (staticProps) {\n      _defineProperties(Constructor, staticProps);\n    }\n    return Constructor;\n  }\n  function _createForOfIteratorHelper(o, allowArrayLike) {\n    var it;\n    if (typeof Symbol === 'undefined' || o[Symbol.iterator] == null) {\n      if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === 'number') {\n        if (it) {\n          o = it;\n        }\n        var i = 0;\n        var F = function F() {};\n        return {\n          s: F,\n          n: function n() {\n            if (i >= o.length) {\n              return {\n                done: true\n              };\n            }\n            return {\n              done: false,\n              value: o[i++]\n            };\n          },\n          e: function e(_e2) {\n            throw _e2;\n          },\n          f: F\n        };\n      }\n      throw new TypeError('Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.');\n    }\n    var normalCompletion = true, didErr = false, err;\n    return {\n      s: function s() {\n        it = o[Symbol.iterator]();\n      },\n      n: function n() {\n        var step = it.next();\n        normalCompletion = step.done;\n        return step;\n      },\n      e: function e(_e3) {\n        didErr = true;\n        err = _e3;\n      },\n      f: function f() {\n        try {\n          if (!normalCompletion && it['return'] != null) {\n            it['return']();\n          }\n        } finally {\n          if (didErr) {\n            throw err;\n          }\n        }\n      }\n    };\n  }\n  function _unsupportedIterableToArray(o, minLen) {\n    if (!o) {\n      return;\n    }\n    if (typeof o === 'string') {\n      return _arrayLikeToArray(o, minLen);\n    }\n    var n = Object.prototype.toString.call(o).slice(8, -1);\n    if (n === 'Object' && o.constructor) {\n      n = o.constructor.name;\n    }\n    if (n === 'Map' || n === 'Set') {\n      return Array.from(o);\n    }\n    if (n === 'Arguments' || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) {\n      return _arrayLikeToArray(o, minLen);\n    }\n  }\n  function _arrayLikeToArray(arr, len) {\n    if (len == null || len > arr.length) {\n      len = arr.length;\n    }\n    for (var i = 0, arr2 = new Array(len); i < len; i++) {\n      arr2[i] = arr[i];\n    }\n    return arr2;\n  }\n  function _typeof(obj) {\n    '@babel/helpers - typeof';\n    if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {\n      _typeof = function _typeof(obj) {\n        return typeof obj;\n      };\n    } else {\n      _typeof = function _typeof(obj) {\n        return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;\n      };\n    }\n    return _typeof(obj);\n  }\n  (function() {\n    var __create = Object.create;\n    var __defProp = Object.defineProperty;\n    var __getProtoOf = Object.getPrototypeOf;\n    var __hasOwnProp = Object.prototype.hasOwnProperty;\n    var __getOwnPropNames = Object.getOwnPropertyNames;\n    var __getOwnPropDesc = Object.getOwnPropertyDescriptor;\n    var __markAsModule = function __markAsModule(target) {\n      return __defProp(target, '__esModule', {\n        value: true\n      });\n    };\n    var __commonJS = function __commonJS(callback, module) {\n      return function() {\n        if (!module) {\n          module = {\n            exports: {}\n          };\n          callback(module.exports, module);\n        }\n        return module.exports;\n      };\n    };\n    var __export = function __export(target, all) {\n      __markAsModule(target);\n      for (var name in all) {\n        __defProp(target, name, {\n          get: all[name],\n          enumerable: true\n        });\n      }\n    };\n    var __exportStar = function __exportStar(target, module) {\n      __markAsModule(target);\n      if (_typeof(module) === 'object' || typeof module === 'function') {\n        var _iterator = _createForOfIteratorHelper(__getOwnPropNames(module)), _step;\n        try {\n          var _loop = function _loop() {\n            var key = _step.value;\n            if (!__hasOwnProp.call(target, key) && key !== 'default') {\n              __defProp(target, key, {\n                get: function get() {\n                  return module[key];\n                },\n                enumerable: __getOwnPropDesc(module, key).enumerable\n              });\n            }\n          };\n          for (_iterator.s(); !(_step = _iterator.n()).done; ) {\n            _loop();\n          }\n        } catch (err) {\n          _iterator.e(err);\n        } finally {\n          _iterator.f();\n        }\n      }\n      return target;\n    };\n    var __toModule = function __toModule(module) {\n      if (module && module.__esModule) {\n        return module;\n      }\n      return __exportStar(__defProp(__create(__getProtoOf(module)), 'default', {\n        value: module,\n        enumerable: true\n      }), module);\n    };\n    var require_utils = __commonJS(function(exports) {\n      'use strict';\n      Object.defineProperty(exports, '__esModule', {\n        value: true\n      });\n      function isIdentStart(c) {\n        return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c === '-' || c === '_';\n      }\n      exports.isIdentStart = isIdentStart;\n      function isIdent(c) {\n        return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c >= '0' && c <= '9' || c === '-' || c === '_';\n      }\n      exports.isIdent = isIdent;\n      function isHex(c) {\n        return c >= 'a' && c <= 'f' || c >= 'A' && c <= 'F' || c >= '0' && c <= '9';\n      }\n      exports.isHex = isHex;\n      function escapeIdentifier(s) {\n        var len = s.length;\n        var result = '';\n        var i = 0;\n        while (i < len) {\n          var chr = s.charAt(i);\n          if (exports.identSpecialChars[chr]) {\n            result += '\\\\' + chr;\n          } else {\n            if (!(chr === '_' || chr === '-' || chr >= 'A' && chr <= 'Z' || chr >= 'a' && chr <= 'z' || i !== 0 && chr >= '0' && chr <= '9')) {\n              var charCode = chr.charCodeAt(0);\n              if ((charCode & 63488) === 55296) {\n                var extraCharCode = s.charCodeAt(i++);\n                if ((charCode & 64512) !== 55296 || (extraCharCode & 64512) !== 56320) {\n                  throw Error('UCS-2(decode): illegal sequence');\n                }\n                charCode = ((charCode & 1023) << 10) + (extraCharCode & 1023) + 65536;\n              }\n              result += '\\\\' + charCode.toString(16) + ' ';\n            } else {\n              result += chr;\n            }\n          }\n          i++;\n        }\n        return result;\n      }\n      exports.escapeIdentifier = escapeIdentifier;\n      function escapeStr(s) {\n        var len = s.length;\n        var result = '';\n        var i = 0;\n        var replacement;\n        while (i < len) {\n          var chr = s.charAt(i);\n          if (chr === '\"') {\n            chr = '\\\\\"';\n          } else if (chr === '\\\\') {\n            chr = '\\\\\\\\';\n          } else if ((replacement = exports.strReplacementsRev[chr]) !== void 0) {\n            chr = replacement;\n          }\n          result += chr;\n          i++;\n        }\n        return '\"' + result + '\"';\n      }\n      exports.escapeStr = escapeStr;\n      exports.identSpecialChars = {\n        '!': true,\n        '\"': true,\n        '#': true,\n        $: true,\n        '%': true,\n        '&': true,\n        '\\'': true,\n        '(': true,\n        ')': true,\n        '*': true,\n        '+': true,\n        ',': true,\n        '.': true,\n        '/': true,\n        ';': true,\n        '<': true,\n        '=': true,\n        '>': true,\n        '?': true,\n        '@': true,\n        '[': true,\n        '\\\\': true,\n        ']': true,\n        '^': true,\n        '`': true,\n        '{': true,\n        '|': true,\n        '}': true,\n        '~': true\n      };\n      exports.strReplacementsRev = {\n        '\\n': '\\\\n',\n        '\\r': '\\\\r',\n        '\\t': '\\\\t',\n        '\\f': '\\\\f',\n        '\\v': '\\\\v'\n      };\n      exports.singleQuoteEscapeChars = {\n        n: '\\n',\n        r: '\\r',\n        t: '\\t',\n        f: '\\f',\n        '\\\\': '\\\\',\n        '\\'': '\\''\n      };\n      exports.doubleQuotesEscapeChars = {\n        n: '\\n',\n        r: '\\r',\n        t: '\\t',\n        f: '\\f',\n        '\\\\': '\\\\',\n        '\"': '\"'\n      };\n    });\n    var require_parser_context = __commonJS(function(exports) {\n      'use strict';\n      Object.defineProperty(exports, '__esModule', {\n        value: true\n      });\n      var utils_1 = require_utils();\n      function parseCssSelector(str, pos, pseudos, attrEqualityMods, ruleNestingOperators, substitutesEnabled) {\n        var l = str.length;\n        var chr = '';\n        function getStr(quote, escapeTable) {\n          var result = '';\n          pos++;\n          chr = str.charAt(pos);\n          while (pos < l) {\n            if (chr === quote) {\n              pos++;\n              return result;\n            } else if (chr === '\\\\') {\n              pos++;\n              chr = str.charAt(pos);\n              var esc = void 0;\n              if (chr === quote) {\n                result += quote;\n              } else if ((esc = escapeTable[chr]) !== void 0) {\n                result += esc;\n              } else if (utils_1.isHex(chr)) {\n                var hex = chr;\n                pos++;\n                chr = str.charAt(pos);\n                while (utils_1.isHex(chr)) {\n                  hex += chr;\n                  pos++;\n                  chr = str.charAt(pos);\n                }\n                if (chr === ' ') {\n                  pos++;\n                  chr = str.charAt(pos);\n                }\n                result += String.fromCharCode(parseInt(hex, 16));\n                continue;\n              } else {\n                result += chr;\n              }\n            } else {\n              result += chr;\n            }\n            pos++;\n            chr = str.charAt(pos);\n          }\n          return result;\n        }\n        function getIdent() {\n          var result = '';\n          chr = str.charAt(pos);\n          while (pos < l) {\n            if (utils_1.isIdent(chr)) {\n              result += chr;\n            } else if (chr === '\\\\') {\n              pos++;\n              if (pos >= l) {\n                throw Error('Expected symbol but end of file reached.');\n              }\n              chr = str.charAt(pos);\n              if (utils_1.identSpecialChars[chr]) {\n                result += chr;\n              } else if (utils_1.isHex(chr)) {\n                var hex = chr;\n                pos++;\n                chr = str.charAt(pos);\n                while (utils_1.isHex(chr)) {\n                  hex += chr;\n                  pos++;\n                  chr = str.charAt(pos);\n                }\n                if (chr === ' ') {\n                  pos++;\n                  chr = str.charAt(pos);\n                }\n                result += String.fromCharCode(parseInt(hex, 16));\n                continue;\n              } else {\n                result += chr;\n              }\n            } else {\n              return result;\n            }\n            pos++;\n            chr = str.charAt(pos);\n          }\n          return result;\n        }\n        function skipWhitespace() {\n          chr = str.charAt(pos);\n          var result = false;\n          while (chr === ' ' || chr === '\\t' || chr === '\\n' || chr === '\\r' || chr === '\\f') {\n            result = true;\n            pos++;\n            chr = str.charAt(pos);\n          }\n          return result;\n        }\n        function parse2() {\n          var res = parseSelector();\n          if (pos < l) {\n            throw Error('Rule expected but \"' + str.charAt(pos) + '\" found.');\n          }\n          return res;\n        }\n        function parseSelector() {\n          var selector = parseSingleSelector();\n          if (!selector) {\n            return null;\n          }\n          var res = selector;\n          chr = str.charAt(pos);\n          while (chr === ',') {\n            pos++;\n            skipWhitespace();\n            if (res.type !== 'selectors') {\n              res = {\n                type: 'selectors',\n                selectors: [ selector ]\n              };\n            }\n            selector = parseSingleSelector();\n            if (!selector) {\n              throw Error('Rule expected after \",\".');\n            }\n            res.selectors.push(selector);\n          }\n          return res;\n        }\n        function parseSingleSelector() {\n          skipWhitespace();\n          var selector = {\n            type: 'ruleSet'\n          };\n          var rule3 = parseRule();\n          if (!rule3) {\n            return null;\n          }\n          var currentRule = selector;\n          while (rule3) {\n            rule3.type = 'rule';\n            currentRule.rule = rule3;\n            currentRule = rule3;\n            skipWhitespace();\n            chr = str.charAt(pos);\n            if (pos >= l || chr === ',' || chr === ')') {\n              break;\n            }\n            if (ruleNestingOperators[chr]) {\n              var op = chr;\n              pos++;\n              skipWhitespace();\n              rule3 = parseRule();\n              if (!rule3) {\n                throw Error('Rule expected after \"' + op + '\".');\n              }\n              rule3.nestingOperator = op;\n            } else {\n              rule3 = parseRule();\n              if (rule3) {\n                rule3.nestingOperator = null;\n              }\n            }\n          }\n          return selector;\n        }\n        function parseRule() {\n          var rule3 = null;\n          while (pos < l) {\n            chr = str.charAt(pos);\n            if (chr === '*') {\n              pos++;\n              (rule3 = rule3 || {}).tagName = '*';\n            } else if (utils_1.isIdentStart(chr) || chr === '\\\\') {\n              (rule3 = rule3 || {}).tagName = getIdent();\n            } else if (chr === '.') {\n              pos++;\n              rule3 = rule3 || {};\n              (rule3.classNames = rule3.classNames || []).push(getIdent());\n            } else if (chr === '#') {\n              pos++;\n              (rule3 = rule3 || {}).id = getIdent();\n            } else if (chr === '[') {\n              pos++;\n              skipWhitespace();\n              var attr = {\n                name: getIdent()\n              };\n              skipWhitespace();\n              if (chr === ']') {\n                pos++;\n              } else {\n                var operator = '';\n                if (attrEqualityMods[chr]) {\n                  operator = chr;\n                  pos++;\n                  chr = str.charAt(pos);\n                }\n                if (pos >= l) {\n                  throw Error('Expected \"=\" but end of file reached.');\n                }\n                if (chr !== '=') {\n                  throw Error('Expected \"=\" but \"' + chr + '\" found.');\n                }\n                attr.operator = operator + '=';\n                pos++;\n                skipWhitespace();\n                var attrValue = '';\n                attr.valueType = 'string';\n                if (chr === '\"') {\n                  attrValue = getStr('\"', utils_1.doubleQuotesEscapeChars);\n                } else if (chr === '\\'') {\n                  attrValue = getStr('\\'', utils_1.singleQuoteEscapeChars);\n                } else if (substitutesEnabled && chr === '$') {\n                  pos++;\n                  attrValue = getIdent();\n                  attr.valueType = 'substitute';\n                } else {\n                  while (pos < l) {\n                    if (chr === ']') {\n                      break;\n                    }\n                    attrValue += chr;\n                    pos++;\n                    chr = str.charAt(pos);\n                  }\n                  attrValue = attrValue.trim();\n                }\n                skipWhitespace();\n                if (pos >= l) {\n                  throw Error('Expected \"]\" but end of file reached.');\n                }\n                if (chr !== ']') {\n                  throw Error('Expected \"]\" but \"' + chr + '\" found.');\n                }\n                pos++;\n                attr.value = attrValue;\n              }\n              rule3 = rule3 || {};\n              (rule3.attrs = rule3.attrs || []).push(attr);\n            } else if (chr === ':') {\n              pos++;\n              var pseudoName = getIdent();\n              var pseudo = {\n                name: pseudoName\n              };\n              if (chr === '(') {\n                pos++;\n                var value = '';\n                skipWhitespace();\n                if (pseudos[pseudoName] === 'selector') {\n                  pseudo.valueType = 'selector';\n                  value = parseSelector();\n                } else {\n                  pseudo.valueType = pseudos[pseudoName] || 'string';\n                  if (chr === '\"') {\n                    value = getStr('\"', utils_1.doubleQuotesEscapeChars);\n                  } else if (chr === '\\'') {\n                    value = getStr('\\'', utils_1.singleQuoteEscapeChars);\n                  } else if (substitutesEnabled && chr === '$') {\n                    pos++;\n                    value = getIdent();\n                    pseudo.valueType = 'substitute';\n                  } else {\n                    while (pos < l) {\n                      if (chr === ')') {\n                        break;\n                      }\n                      value += chr;\n                      pos++;\n                      chr = str.charAt(pos);\n                    }\n                    value = value.trim();\n                  }\n                  skipWhitespace();\n                }\n                if (pos >= l) {\n                  throw Error('Expected \")\" but end of file reached.');\n                }\n                if (chr !== ')') {\n                  throw Error('Expected \")\" but \"' + chr + '\" found.');\n                }\n                pos++;\n                pseudo.value = value;\n              }\n              rule3 = rule3 || {};\n              (rule3.pseudos = rule3.pseudos || []).push(pseudo);\n            } else {\n              break;\n            }\n          }\n          return rule3;\n        }\n        return parse2();\n      }\n      exports.parseCssSelector = parseCssSelector;\n    });\n    var require_render = __commonJS(function(exports) {\n      'use strict';\n      Object.defineProperty(exports, '__esModule', {\n        value: true\n      });\n      var utils_1 = require_utils();\n      function renderEntity(entity) {\n        var res = '';\n        switch (entity.type) {\n         case 'ruleSet':\n          var currentEntity = entity.rule;\n          var parts = [];\n          while (currentEntity) {\n            if (currentEntity.nestingOperator) {\n              parts.push(currentEntity.nestingOperator);\n            }\n            parts.push(renderEntity(currentEntity));\n            currentEntity = currentEntity.rule;\n          }\n          res = parts.join(' ');\n          break;\n\n         case 'selectors':\n          res = entity.selectors.map(renderEntity).join(', ');\n          break;\n\n         case 'rule':\n          if (entity.tagName) {\n            if (entity.tagName === '*') {\n              res = '*';\n            } else {\n              res = utils_1.escapeIdentifier(entity.tagName);\n            }\n          }\n          if (entity.id) {\n            res += '#' + utils_1.escapeIdentifier(entity.id);\n          }\n          if (entity.classNames) {\n            res += entity.classNames.map(function(cn) {\n              return '.' + utils_1.escapeIdentifier(cn);\n            }).join('');\n          }\n          if (entity.attrs) {\n            res += entity.attrs.map(function(attr) {\n              if ('operator' in attr) {\n                if (attr.valueType === 'substitute') {\n                  return '[' + utils_1.escapeIdentifier(attr.name) + attr.operator + '$' + attr.value + ']';\n                } else {\n                  return '[' + utils_1.escapeIdentifier(attr.name) + attr.operator + utils_1.escapeStr(attr.value) + ']';\n                }\n              } else {\n                return '[' + utils_1.escapeIdentifier(attr.name) + ']';\n              }\n            }).join('');\n          }\n          if (entity.pseudos) {\n            res += entity.pseudos.map(function(pseudo) {\n              if (pseudo.valueType) {\n                if (pseudo.valueType === 'selector') {\n                  return ':' + utils_1.escapeIdentifier(pseudo.name) + '(' + renderEntity(pseudo.value) + ')';\n                } else if (pseudo.valueType === 'substitute') {\n                  return ':' + utils_1.escapeIdentifier(pseudo.name) + '($' + pseudo.value + ')';\n                } else if (pseudo.valueType === 'numeric') {\n                  return ':' + utils_1.escapeIdentifier(pseudo.name) + '(' + pseudo.value + ')';\n                } else {\n                  return ':' + utils_1.escapeIdentifier(pseudo.name) + '(' + utils_1.escapeIdentifier(pseudo.value) + ')';\n                }\n              } else {\n                return ':' + utils_1.escapeIdentifier(pseudo.name);\n              }\n            }).join('');\n          }\n          break;\n\n         default:\n          throw Error('Unknown entity type: \"' + entity.type + '\".');\n        }\n        return res;\n      }\n      exports.renderEntity = renderEntity;\n    });\n    var require_lib = __commonJS(function(exports) {\n      'use strict';\n      Object.defineProperty(exports, '__esModule', {\n        value: true\n      });\n      var parser_context_1 = require_parser_context();\n      var render_1 = require_render();\n      var CssSelectorParser3 = function() {\n        function CssSelectorParser4() {\n          this.pseudos = {};\n          this.attrEqualityMods = {};\n          this.ruleNestingOperators = {};\n          this.substitutesEnabled = false;\n        }\n        CssSelectorParser4.prototype.registerSelectorPseudos = function() {\n          var pseudos = [];\n          for (var _i = 0; _i < arguments.length; _i++) {\n            pseudos[_i] = arguments[_i];\n          }\n          for (var _a = 0, pseudos_1 = pseudos; _a < pseudos_1.length; _a++) {\n            var pseudo = pseudos_1[_a];\n            this.pseudos[pseudo] = 'selector';\n          }\n          return this;\n        };\n        CssSelectorParser4.prototype.unregisterSelectorPseudos = function() {\n          var pseudos = [];\n          for (var _i = 0; _i < arguments.length; _i++) {\n            pseudos[_i] = arguments[_i];\n          }\n          for (var _a = 0, pseudos_2 = pseudos; _a < pseudos_2.length; _a++) {\n            var pseudo = pseudos_2[_a];\n            delete this.pseudos[pseudo];\n          }\n          return this;\n        };\n        CssSelectorParser4.prototype.registerNumericPseudos = function() {\n          var pseudos = [];\n          for (var _i = 0; _i < arguments.length; _i++) {\n            pseudos[_i] = arguments[_i];\n          }\n          for (var _a = 0, pseudos_3 = pseudos; _a < pseudos_3.length; _a++) {\n            var pseudo = pseudos_3[_a];\n            this.pseudos[pseudo] = 'numeric';\n          }\n          return this;\n        };\n        CssSelectorParser4.prototype.unregisterNumericPseudos = function() {\n          var pseudos = [];\n          for (var _i = 0; _i < arguments.length; _i++) {\n            pseudos[_i] = arguments[_i];\n          }\n          for (var _a = 0, pseudos_4 = pseudos; _a < pseudos_4.length; _a++) {\n            var pseudo = pseudos_4[_a];\n            delete this.pseudos[pseudo];\n          }\n          return this;\n        };\n        CssSelectorParser4.prototype.registerNestingOperators = function() {\n          var operators = [];\n          for (var _i = 0; _i < arguments.length; _i++) {\n            operators[_i] = arguments[_i];\n          }\n          for (var _a = 0, operators_1 = operators; _a < operators_1.length; _a++) {\n            var operator = operators_1[_a];\n            this.ruleNestingOperators[operator] = true;\n          }\n          return this;\n        };\n        CssSelectorParser4.prototype.unregisterNestingOperators = function() {\n          var operators = [];\n          for (var _i = 0; _i < arguments.length; _i++) {\n            operators[_i] = arguments[_i];\n          }\n          for (var _a = 0, operators_2 = operators; _a < operators_2.length; _a++) {\n            var operator = operators_2[_a];\n            delete this.ruleNestingOperators[operator];\n          }\n          return this;\n        };\n        CssSelectorParser4.prototype.registerAttrEqualityMods = function() {\n          var mods = [];\n          for (var _i = 0; _i < arguments.length; _i++) {\n            mods[_i] = arguments[_i];\n          }\n          for (var _a = 0, mods_1 = mods; _a < mods_1.length; _a++) {\n            var mod = mods_1[_a];\n            this.attrEqualityMods[mod] = true;\n          }\n          return this;\n        };\n        CssSelectorParser4.prototype.unregisterAttrEqualityMods = function() {\n          var mods = [];\n          for (var _i = 0; _i < arguments.length; _i++) {\n            mods[_i] = arguments[_i];\n          }\n          for (var _a = 0, mods_2 = mods; _a < mods_2.length; _a++) {\n            var mod = mods_2[_a];\n            delete this.attrEqualityMods[mod];\n          }\n          return this;\n        };\n        CssSelectorParser4.prototype.enableSubstitutes = function() {\n          this.substitutesEnabled = true;\n          return this;\n        };\n        CssSelectorParser4.prototype.disableSubstitutes = function() {\n          this.substitutesEnabled = false;\n          return this;\n        };\n        CssSelectorParser4.prototype.parse = function(str) {\n          return parser_context_1.parseCssSelector(str, 0, this.pseudos, this.attrEqualityMods, this.ruleNestingOperators, this.substitutesEnabled);\n        };\n        CssSelectorParser4.prototype.render = function(path) {\n          return render_1.renderEntity(path).trim();\n        };\n        return CssSelectorParser4;\n      }();\n      exports.CssSelectorParser = CssSelectorParser3;\n    });\n    var require_noop = __commonJS(function(exports, module) {\n      'use strict';\n      module.exports = function() {};\n    });\n    var require_is_value = __commonJS(function(exports, module) {\n      'use strict';\n      var _undefined = require_noop()();\n      module.exports = function(val) {\n        return val !== _undefined && val !== null;\n      };\n    });\n    var require_normalize_options = __commonJS(function(exports, module) {\n      'use strict';\n      var isValue = require_is_value();\n      var forEach = Array.prototype.forEach;\n      var create = Object.create;\n      var process2 = function process2(src, obj) {\n        var key;\n        for (key in src) {\n          obj[key] = src[key];\n        }\n      };\n      module.exports = function(opts1) {\n        var result = create(null);\n        forEach.call(arguments, function(options) {\n          if (!isValue(options)) {\n            return;\n          }\n          process2(Object(options), result);\n        });\n        return result;\n      };\n    });\n    var require_is_implemented = __commonJS(function(exports, module) {\n      'use strict';\n      module.exports = function() {\n        var sign = Math.sign;\n        if (typeof sign !== 'function') {\n          return false;\n        }\n        return sign(10) === 1 && sign(-20) === -1;\n      };\n    });\n    var require_shim = __commonJS(function(exports, module) {\n      'use strict';\n      module.exports = function(value) {\n        value = Number(value);\n        if (isNaN(value) || value === 0) {\n          return value;\n        }\n        return value > 0 ? 1 : -1;\n      };\n    });\n    var require_sign = __commonJS(function(exports, module) {\n      'use strict';\n      module.exports = require_is_implemented()() ? Math.sign : require_shim();\n    });\n    var require_to_integer = __commonJS(function(exports, module) {\n      'use strict';\n      var sign = require_sign();\n      var abs = Math.abs;\n      var floor = Math.floor;\n      module.exports = function(value) {\n        if (isNaN(value)) {\n          return 0;\n        }\n        value = Number(value);\n        if (value === 0 || !isFinite(value)) {\n          return value;\n        }\n        return sign(value) * floor(abs(value));\n      };\n    });\n    var require_to_pos_integer = __commonJS(function(exports, module) {\n      'use strict';\n      var toInteger = require_to_integer();\n      var max = Math.max;\n      module.exports = function(value) {\n        return max(0, toInteger(value));\n      };\n    });\n    var require_resolve_length = __commonJS(function(exports, module) {\n      'use strict';\n      var toPosInt = require_to_pos_integer();\n      module.exports = function(optsLength, fnLength, isAsync) {\n        var length;\n        if (isNaN(optsLength)) {\n          length = fnLength;\n          if (!(length >= 0)) {\n            return 1;\n          }\n          if (isAsync && length) {\n            return length - 1;\n          }\n          return length;\n        }\n        if (optsLength === false) {\n          return false;\n        }\n        return toPosInt(optsLength);\n      };\n    });\n    var require_valid_callable = __commonJS(function(exports, module) {\n      'use strict';\n      module.exports = function(fn) {\n        if (typeof fn !== 'function') {\n          throw new TypeError(fn + ' is not a function');\n        }\n        return fn;\n      };\n    });\n    var require_valid_value = __commonJS(function(exports, module) {\n      'use strict';\n      var isValue = require_is_value();\n      module.exports = function(value) {\n        if (!isValue(value)) {\n          throw new TypeError('Cannot use null or undefined');\n        }\n        return value;\n      };\n    });\n    var require_iterate = __commonJS(function(exports, module) {\n      'use strict';\n      var callable = require_valid_callable();\n      var value = require_valid_value();\n      var bind = Function.prototype.bind;\n      var call = Function.prototype.call;\n      var keys = Object.keys;\n      var objPropertyIsEnumerable = Object.prototype.propertyIsEnumerable;\n      module.exports = function(method, defVal) {\n        return function(obj, cb) {\n          var list, thisArg = arguments[2], compareFn = arguments[3];\n          obj = Object(value(obj));\n          callable(cb);\n          list = keys(obj);\n          if (compareFn) {\n            list.sort(typeof compareFn === 'function' ? bind.call(compareFn, obj) : void 0);\n          }\n          if (typeof method !== 'function') {\n            method = list[method];\n          }\n          return call.call(method, list, function(key, index) {\n            if (!objPropertyIsEnumerable.call(obj, key)) {\n              return defVal;\n            }\n            return call.call(cb, thisArg, obj[key], key, obj, index);\n          });\n        };\n      };\n    });\n    var require_for_each = __commonJS(function(exports, module) {\n      'use strict';\n      module.exports = require_iterate()('forEach');\n    });\n    var require_registered_extensions = __commonJS(function() {\n      'use strict';\n    });\n    var require_is_implemented2 = __commonJS(function(exports, module) {\n      'use strict';\n      module.exports = function() {\n        var assign = Object.assign, obj;\n        if (typeof assign !== 'function') {\n          return false;\n        }\n        obj = {\n          foo: 'raz'\n        };\n        assign(obj, {\n          bar: 'dwa'\n        }, {\n          trzy: 'trzy'\n        });\n        return obj.foo + obj.bar + obj.trzy === 'razdwatrzy';\n      };\n    });\n    var require_is_implemented3 = __commonJS(function(exports, module) {\n      'use strict';\n      module.exports = function() {\n        try {\n          Object.keys('primitive');\n          return true;\n        } catch (e) {\n          return false;\n        }\n      };\n    });\n    var require_shim2 = __commonJS(function(exports, module) {\n      'use strict';\n      var isValue = require_is_value();\n      var keys = Object.keys;\n      module.exports = function(object) {\n        return keys(isValue(object) ? Object(object) : object);\n      };\n    });\n    var require_keys = __commonJS(function(exports, module) {\n      'use strict';\n      module.exports = require_is_implemented3()() ? Object.keys : require_shim2();\n    });\n    var require_shim3 = __commonJS(function(exports, module) {\n      'use strict';\n      var keys = require_keys();\n      var value = require_valid_value();\n      var max = Math.max;\n      module.exports = function(dest, src) {\n        var error, i, length = max(arguments.length, 2), assign;\n        dest = Object(value(dest));\n        assign = function assign(key) {\n          try {\n            dest[key] = src[key];\n          } catch (e) {\n            if (!error) {\n              error = e;\n            }\n          }\n        };\n        for (i = 1; i < length; ++i) {\n          src = arguments[i];\n          keys(src).forEach(assign);\n        }\n        if (error !== void 0) {\n          throw error;\n        }\n        return dest;\n      };\n    });\n    var require_assign = __commonJS(function(exports, module) {\n      'use strict';\n      module.exports = require_is_implemented2()() ? Object.assign : require_shim3();\n    });\n    var require_is_object = __commonJS(function(exports, module) {\n      'use strict';\n      var isValue = require_is_value();\n      var map = {\n        function: true,\n        object: true\n      };\n      module.exports = function(value) {\n        return isValue(value) && map[_typeof(value)] || false;\n      };\n    });\n    var require_custom = __commonJS(function(exports, module) {\n      'use strict';\n      var assign = require_assign();\n      var isObject = require_is_object();\n      var isValue = require_is_value();\n      var captureStackTrace = Error.captureStackTrace;\n      module.exports = function(message) {\n        var err2 = new Error(message), code = arguments[1], ext = arguments[2];\n        if (!isValue(ext)) {\n          if (isObject(code)) {\n            ext = code;\n            code = null;\n          }\n        }\n        if (isValue(ext)) {\n          assign(err2, ext);\n        }\n        if (isValue(code)) {\n          err2.code = code;\n        }\n        if (captureStackTrace) {\n          captureStackTrace(err2, module.exports);\n        }\n        return err2;\n      };\n    });\n    var require_mixin = __commonJS(function(exports, module) {\n      'use strict';\n      var value = require_valid_value();\n      var defineProperty = Object.defineProperty;\n      var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n      var getOwnPropertyNames = Object.getOwnPropertyNames;\n      var getOwnPropertySymbols = Object.getOwnPropertySymbols;\n      module.exports = function(target, source) {\n        var error, sourceObject = Object(value(source));\n        target = Object(value(target));\n        getOwnPropertyNames(sourceObject).forEach(function(name) {\n          try {\n            defineProperty(target, name, getOwnPropertyDescriptor(source, name));\n          } catch (e) {\n            error = e;\n          }\n        });\n        if (typeof getOwnPropertySymbols === 'function') {\n          getOwnPropertySymbols(sourceObject).forEach(function(symbol) {\n            try {\n              defineProperty(target, symbol, getOwnPropertyDescriptor(source, symbol));\n            } catch (e) {\n              error = e;\n            }\n          });\n        }\n        if (error !== void 0) {\n          throw error;\n        }\n        return target;\n      };\n    });\n    var require_define_length = __commonJS(function(exports, module) {\n      'use strict';\n      var toPosInt = require_to_pos_integer();\n      var test = function test(arg1, arg2) {\n        return arg2;\n      };\n      var desc;\n      var defineProperty;\n      var generate;\n      var mixin;\n      try {\n        Object.defineProperty(test, 'length', {\n          configurable: true,\n          writable: false,\n          enumerable: false,\n          value: 1\n        });\n      } catch (ignore) {}\n      if (test.length === 1) {\n        desc = {\n          configurable: true,\n          writable: false,\n          enumerable: false\n        };\n        defineProperty = Object.defineProperty;\n        module.exports = function(fn, length) {\n          length = toPosInt(length);\n          if (fn.length === length) {\n            return fn;\n          }\n          desc.value = length;\n          return defineProperty(fn, 'length', desc);\n        };\n      } else {\n        mixin = require_mixin();\n        generate = function() {\n          var cache20 = [];\n          return function(length) {\n            var args, i = 0;\n            if (cache20[length]) {\n              return cache20[length];\n            }\n            args = [];\n            while (length--) {\n              args.push('a' + (++i).toString(36));\n            }\n            return new Function('fn', 'return function (' + args.join(', ') + ') { return fn.apply(this, arguments); };');\n          };\n        }();\n        module.exports = function(src, length) {\n          var target;\n          length = toPosInt(length);\n          if (src.length === length) {\n            return src;\n          }\n          target = generate(length)(src);\n          try {\n            mixin(target, src);\n          } catch (ignore) {}\n          return target;\n        };\n      }\n    });\n    var require_is = __commonJS(function(exports, module) {\n      'use strict';\n      var _undefined = void 0;\n      module.exports = function(value) {\n        return value !== _undefined && value !== null;\n      };\n    });\n    var require_is2 = __commonJS(function(exports, module) {\n      'use strict';\n      var isValue = require_is();\n      var possibleTypes = {\n        object: true,\n        function: true,\n        undefined: true\n      };\n      module.exports = function(value) {\n        if (!isValue(value)) {\n          return false;\n        }\n        return hasOwnProperty.call(possibleTypes, _typeof(value));\n      };\n    });\n    var require_is3 = __commonJS(function(exports, module) {\n      'use strict';\n      var isObject = require_is2();\n      module.exports = function(value) {\n        if (!isObject(value)) {\n          return false;\n        }\n        try {\n          if (!value.constructor) {\n            return false;\n          }\n          return value.constructor.prototype === value;\n        } catch (error) {\n          return false;\n        }\n      };\n    });\n    var require_is4 = __commonJS(function(exports, module) {\n      'use strict';\n      var isPrototype = require_is3();\n      module.exports = function(value) {\n        if (typeof value !== 'function') {\n          return false;\n        }\n        if (!hasOwnProperty.call(value, 'length')) {\n          return false;\n        }\n        try {\n          if (typeof value.length !== 'number') {\n            return false;\n          }\n          if (typeof value.call !== 'function') {\n            return false;\n          }\n          if (typeof value.apply !== 'function') {\n            return false;\n          }\n        } catch (error) {\n          return false;\n        }\n        return !isPrototype(value);\n      };\n    });\n    var require_is5 = __commonJS(function(exports, module) {\n      'use strict';\n      var isFunction = require_is4();\n      var classRe = /^\\s*class[\\s{/}]/;\n      var functionToString = Function.prototype.toString;\n      module.exports = function(value) {\n        if (!isFunction(value)) {\n          return false;\n        }\n        if (classRe.test(functionToString.call(value))) {\n          return false;\n        }\n        return true;\n      };\n    });\n    var require_is_implemented4 = __commonJS(function(exports, module) {\n      'use strict';\n      var str = 'razdwatrzy';\n      module.exports = function() {\n        if (typeof str.contains !== 'function') {\n          return false;\n        }\n        return str.contains('dwa') === true && str.contains('foo') === false;\n      };\n    });\n    var require_shim4 = __commonJS(function(exports, module) {\n      'use strict';\n      var indexOf = String.prototype.indexOf;\n      module.exports = function(searchString) {\n        return indexOf.call(this, searchString, arguments[1]) > -1;\n      };\n    });\n    var require_contains = __commonJS(function(exports, module) {\n      'use strict';\n      module.exports = require_is_implemented4()() ? String.prototype.contains : require_shim4();\n    });\n    var require_d = __commonJS(function(exports, module) {\n      'use strict';\n      var isValue = require_is();\n      var isPlainFunction = require_is5();\n      var assign = require_assign();\n      var normalizeOpts = require_normalize_options();\n      var contains6 = require_contains();\n      var d = module.exports = function(dscr, value) {\n        var c, e, w, options, desc;\n        if (arguments.length < 2 || typeof dscr !== 'string') {\n          options = value;\n          value = dscr;\n          dscr = null;\n        } else {\n          options = arguments[2];\n        }\n        if (isValue(dscr)) {\n          c = contains6.call(dscr, 'c');\n          e = contains6.call(dscr, 'e');\n          w = contains6.call(dscr, 'w');\n        } else {\n          c = w = true;\n          e = false;\n        }\n        desc = {\n          value: value,\n          configurable: c,\n          enumerable: e,\n          writable: w\n        };\n        return !options ? desc : assign(normalizeOpts(options), desc);\n      };\n      d.gs = function(dscr, get, set) {\n        var c, e, options, desc;\n        if (typeof dscr !== 'string') {\n          options = set;\n          set = get;\n          get = dscr;\n          dscr = null;\n        } else {\n          options = arguments[3];\n        }\n        if (!isValue(get)) {\n          get = void 0;\n        } else if (!isPlainFunction(get)) {\n          options = get;\n          get = set = void 0;\n        } else if (!isValue(set)) {\n          set = void 0;\n        } else if (!isPlainFunction(set)) {\n          options = set;\n          set = void 0;\n        }\n        if (isValue(dscr)) {\n          c = contains6.call(dscr, 'c');\n          e = contains6.call(dscr, 'e');\n        } else {\n          c = true;\n          e = false;\n        }\n        desc = {\n          get: get,\n          set: set,\n          configurable: c,\n          enumerable: e\n        };\n        return !options ? desc : assign(normalizeOpts(options), desc);\n      };\n    });\n    var require_event_emitter = __commonJS(function(exports, module) {\n      'use strict';\n      var d = require_d();\n      var callable = require_valid_callable();\n      var apply = Function.prototype.apply;\n      var call = Function.prototype.call;\n      var create = Object.create;\n      var defineProperty = Object.defineProperty;\n      var defineProperties = Object.defineProperties;\n      var hasOwnProperty2 = Object.prototype.hasOwnProperty;\n      var descriptor = {\n        configurable: true,\n        enumerable: false,\n        writable: true\n      };\n      var on;\n      var once;\n      var off;\n      var emit;\n      var methods;\n      var descriptors;\n      var base;\n      on = function on(type, listener) {\n        var data2;\n        callable(listener);\n        if (!hasOwnProperty2.call(this, '__ee__')) {\n          data2 = descriptor.value = create(null);\n          defineProperty(this, '__ee__', descriptor);\n          descriptor.value = null;\n        } else {\n          data2 = this.__ee__;\n        }\n        if (!data2[type]) {\n          data2[type] = listener;\n        } else if (_typeof(data2[type]) === 'object') {\n          data2[type].push(listener);\n        } else {\n          data2[type] = [ data2[type], listener ];\n        }\n        return this;\n      };\n      once = function once(type, listener) {\n        var _once, self2;\n        callable(listener);\n        self2 = this;\n        on.call(this, type, _once = function once2() {\n          off.call(self2, type, _once);\n          apply.call(listener, this, arguments);\n        });\n        _once.__eeOnceListener__ = listener;\n        return this;\n      };\n      off = function off(type, listener) {\n        var data2, listeners, candidate, i;\n        callable(listener);\n        if (!hasOwnProperty2.call(this, '__ee__')) {\n          return this;\n        }\n        data2 = this.__ee__;\n        if (!data2[type]) {\n          return this;\n        }\n        listeners = data2[type];\n        if (_typeof(listeners) === 'object') {\n          for (i = 0; candidate = listeners[i]; ++i) {\n            if (candidate === listener || candidate.__eeOnceListener__ === listener) {\n              if (listeners.length === 2) {\n                data2[type] = listeners[i ? 0 : 1];\n              } else {\n                listeners.splice(i, 1);\n              }\n            }\n          }\n        } else {\n          if (listeners === listener || listeners.__eeOnceListener__ === listener) {\n            delete data2[type];\n          }\n        }\n        return this;\n      };\n      emit = function emit(type) {\n        var i, l, listener, listeners, args;\n        if (!hasOwnProperty2.call(this, '__ee__')) {\n          return;\n        }\n        listeners = this.__ee__[type];\n        if (!listeners) {\n          return;\n        }\n        if (_typeof(listeners) === 'object') {\n          l = arguments.length;\n          args = new Array(l - 1);\n          for (i = 1; i < l; ++i) {\n            args[i - 1] = arguments[i];\n          }\n          listeners = listeners.slice();\n          for (i = 0; listener = listeners[i]; ++i) {\n            apply.call(listener, this, args);\n          }\n        } else {\n          switch (arguments.length) {\n           case 1:\n            call.call(listeners, this);\n            break;\n\n           case 2:\n            call.call(listeners, this, arguments[1]);\n            break;\n\n           case 3:\n            call.call(listeners, this, arguments[1], arguments[2]);\n            break;\n\n           default:\n            l = arguments.length;\n            args = new Array(l - 1);\n            for (i = 1; i < l; ++i) {\n              args[i - 1] = arguments[i];\n            }\n            apply.call(listeners, this, args);\n          }\n        }\n      };\n      methods = {\n        on: on,\n        once: once,\n        off: off,\n        emit: emit\n      };\n      descriptors = {\n        on: d(on),\n        once: d(once),\n        off: d(off),\n        emit: d(emit)\n      };\n      base = defineProperties({}, descriptors);\n      module.exports = exports = function exports(o) {\n        return o == null ? create(base) : defineProperties(Object(o), descriptors);\n      };\n      exports.methods = methods;\n    });\n    var require_is_implemented5 = __commonJS(function(exports, module) {\n      'use strict';\n      module.exports = function() {\n        var from = Array.from, arr, result;\n        if (typeof from !== 'function') {\n          return false;\n        }\n        arr = [ 'raz', 'dwa' ];\n        result = from(arr);\n        return Boolean(result && result !== arr && result[1] === 'dwa');\n      };\n    });\n    var require_is_implemented6 = __commonJS(function(exports, module) {\n      'use strict';\n      module.exports = function() {\n        if ((typeof globalThis === 'undefined' ? 'undefined' : _typeof(globalThis)) !== 'object') {\n          return false;\n        }\n        if (!globalThis) {\n          return false;\n        }\n        return globalThis.Array === Array;\n      };\n    });\n    var require_implementation = __commonJS(function(exports, module) {\n      var naiveFallback = function naiveFallback() {\n        if ((typeof self === 'undefined' ? 'undefined' : _typeof(self)) === 'object' && self) {\n          return self;\n        }\n        if ((typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && window) {\n          return window;\n        }\n        throw new Error('Unable to resolve global `this`');\n      };\n      module.exports = function() {\n        if (this) {\n          return this;\n        }\n        try {\n          Object.defineProperty(Object.prototype, '__global__', {\n            get: function get() {\n              return this;\n            },\n            configurable: true\n          });\n        } catch (error) {\n          return naiveFallback();\n        }\n        try {\n          if (!__global__) {\n            return naiveFallback();\n          }\n          return __global__;\n        } finally {\n          delete Object.prototype.__global__;\n        }\n      }();\n    });\n    var require_global_this = __commonJS(function(exports, module) {\n      'use strict';\n      module.exports = require_is_implemented6()() ? globalThis : require_implementation();\n    });\n    var require_is_implemented7 = __commonJS(function(exports, module) {\n      'use strict';\n      var global2 = require_global_this();\n      var validTypes = {\n        object: true,\n        symbol: true\n      };\n      module.exports = function() {\n        var _Symbol = global2.Symbol;\n        var symbol;\n        if (typeof _Symbol !== 'function') {\n          return false;\n        }\n        symbol = _Symbol('test symbol');\n        try {\n          String(symbol);\n        } catch (e) {\n          return false;\n        }\n        if (!validTypes[_typeof(_Symbol.iterator)]) {\n          return false;\n        }\n        if (!validTypes[_typeof(_Symbol.toPrimitive)]) {\n          return false;\n        }\n        if (!validTypes[_typeof(_Symbol.toStringTag)]) {\n          return false;\n        }\n        return true;\n      };\n    });\n    var require_is_symbol = __commonJS(function(exports, module) {\n      'use strict';\n      module.exports = function(value) {\n        if (!value) {\n          return false;\n        }\n        if (_typeof(value) === 'symbol') {\n          return true;\n        }\n        if (!value.constructor) {\n          return false;\n        }\n        if (value.constructor.name !== 'Symbol') {\n          return false;\n        }\n        return value[value.constructor.toStringTag] === 'Symbol';\n      };\n    });\n    var require_validate_symbol = __commonJS(function(exports, module) {\n      'use strict';\n      var isSymbol = require_is_symbol();\n      module.exports = function(value) {\n        if (!isSymbol(value)) {\n          throw new TypeError(value + ' is not a symbol');\n        }\n        return value;\n      };\n    });\n    var require_generate_name = __commonJS(function(exports, module) {\n      'use strict';\n      var d = require_d();\n      var create = Object.create;\n      var defineProperty = Object.defineProperty;\n      var objPrototype = Object.prototype;\n      var created = create(null);\n      module.exports = function(desc) {\n        var postfix = 0, name, ie11BugWorkaround;\n        while (created[desc + (postfix || '')]) {\n          ++postfix;\n        }\n        desc += postfix || '';\n        created[desc] = true;\n        name = '@@' + desc;\n        defineProperty(objPrototype, name, d.gs(null, function(value) {\n          if (ie11BugWorkaround) {\n            return;\n          }\n          ie11BugWorkaround = true;\n          defineProperty(this, name, d(value));\n          ie11BugWorkaround = false;\n        }));\n        return name;\n      };\n    });\n    var require_standard_symbols = __commonJS(function(exports, module) {\n      'use strict';\n      var d = require_d();\n      var NativeSymbol = require_global_this().Symbol;\n      module.exports = function(SymbolPolyfill) {\n        return Object.defineProperties(SymbolPolyfill, {\n          hasInstance: d('', NativeSymbol && NativeSymbol.hasInstance || SymbolPolyfill('hasInstance')),\n          isConcatSpreadable: d('', NativeSymbol && NativeSymbol.isConcatSpreadable || SymbolPolyfill('isConcatSpreadable')),\n          iterator: d('', NativeSymbol && NativeSymbol.iterator || SymbolPolyfill('iterator')),\n          match: d('', NativeSymbol && NativeSymbol.match || SymbolPolyfill('match')),\n          replace: d('', NativeSymbol && NativeSymbol.replace || SymbolPolyfill('replace')),\n          search: d('', NativeSymbol && NativeSymbol.search || SymbolPolyfill('search')),\n          species: d('', NativeSymbol && NativeSymbol.species || SymbolPolyfill('species')),\n          split: d('', NativeSymbol && NativeSymbol.split || SymbolPolyfill('split')),\n          toPrimitive: d('', NativeSymbol && NativeSymbol.toPrimitive || SymbolPolyfill('toPrimitive')),\n          toStringTag: d('', NativeSymbol && NativeSymbol.toStringTag || SymbolPolyfill('toStringTag')),\n          unscopables: d('', NativeSymbol && NativeSymbol.unscopables || SymbolPolyfill('unscopables'))\n        });\n      };\n    });\n    var require_symbol_registry = __commonJS(function(exports, module) {\n      'use strict';\n      var d = require_d();\n      var validateSymbol = require_validate_symbol();\n      var registry = Object.create(null);\n      module.exports = function(SymbolPolyfill) {\n        return Object.defineProperties(SymbolPolyfill, {\n          for: d(function(key) {\n            if (registry[key]) {\n              return registry[key];\n            }\n            return registry[key] = SymbolPolyfill(String(key));\n          }),\n          keyFor: d(function(symbol) {\n            var key;\n            validateSymbol(symbol);\n            for (key in registry) {\n              if (registry[key] === symbol) {\n                return key;\n              }\n            }\n            return void 0;\n          })\n        });\n      };\n    });\n    var require_polyfill = __commonJS(function(exports, module) {\n      'use strict';\n      var d = require_d();\n      var validateSymbol = require_validate_symbol();\n      var NativeSymbol = require_global_this().Symbol;\n      var generateName = require_generate_name();\n      var setupStandardSymbols = require_standard_symbols();\n      var setupSymbolRegistry = require_symbol_registry();\n      var create = Object.create;\n      var defineProperties = Object.defineProperties;\n      var defineProperty = Object.defineProperty;\n      var SymbolPolyfill;\n      var HiddenSymbol;\n      var isNativeSafe;\n      if (typeof NativeSymbol === 'function') {\n        try {\n          String(NativeSymbol());\n          isNativeSafe = true;\n        } catch (ignore) {}\n      } else {\n        NativeSymbol = null;\n      }\n      HiddenSymbol = function _Symbol2(description) {\n        if (this instanceof HiddenSymbol) {\n          throw new TypeError('Symbol is not a constructor');\n        }\n        return SymbolPolyfill(description);\n      };\n      module.exports = SymbolPolyfill = function _Symbol3(description) {\n        var symbol;\n        if (this instanceof _Symbol3) {\n          throw new TypeError('Symbol is not a constructor');\n        }\n        if (isNativeSafe) {\n          return NativeSymbol(description);\n        }\n        symbol = create(HiddenSymbol.prototype);\n        description = description === void 0 ? '' : String(description);\n        return defineProperties(symbol, {\n          __description__: d('', description),\n          __name__: d('', generateName(description))\n        });\n      };\n      setupStandardSymbols(SymbolPolyfill);\n      setupSymbolRegistry(SymbolPolyfill);\n      defineProperties(HiddenSymbol.prototype, {\n        constructor: d(SymbolPolyfill),\n        toString: d('', function() {\n          return this.__name__;\n        })\n      });\n      defineProperties(SymbolPolyfill.prototype, {\n        toString: d(function() {\n          return 'Symbol (' + validateSymbol(this).__description__ + ')';\n        }),\n        valueOf: d(function() {\n          return validateSymbol(this);\n        })\n      });\n      defineProperty(SymbolPolyfill.prototype, SymbolPolyfill.toPrimitive, d('', function() {\n        var symbol = validateSymbol(this);\n        if (_typeof(symbol) === 'symbol') {\n          return symbol;\n        }\n        return symbol.toString();\n      }));\n      defineProperty(SymbolPolyfill.prototype, SymbolPolyfill.toStringTag, d('c', 'Symbol'));\n      defineProperty(HiddenSymbol.prototype, SymbolPolyfill.toStringTag, d('c', SymbolPolyfill.prototype[SymbolPolyfill.toStringTag]));\n      defineProperty(HiddenSymbol.prototype, SymbolPolyfill.toPrimitive, d('c', SymbolPolyfill.prototype[SymbolPolyfill.toPrimitive]));\n    });\n    var require_es6_symbol = __commonJS(function(exports, module) {\n      'use strict';\n      module.exports = require_is_implemented7()() ? require_global_this().Symbol : require_polyfill();\n    });\n    var require_is_arguments = __commonJS(function(exports, module) {\n      'use strict';\n      var objToString = Object.prototype.toString;\n      var id = objToString.call(function() {\n        return arguments;\n      }());\n      module.exports = function(value) {\n        return objToString.call(value) === id;\n      };\n    });\n    var require_is_function = __commonJS(function(exports, module) {\n      'use strict';\n      var objToString = Object.prototype.toString;\n      var isFunctionStringTag = RegExp.prototype.test.bind(/^[object [A-Za-z0-9]*Function]$/);\n      module.exports = function(value) {\n        return typeof value === 'function' && isFunctionStringTag(objToString.call(value));\n      };\n    });\n    var require_is_string = __commonJS(function(exports, module) {\n      'use strict';\n      var objToString = Object.prototype.toString;\n      var id = objToString.call('');\n      module.exports = function(value) {\n        return typeof value === 'string' || value && _typeof(value) === 'object' && (value instanceof String || objToString.call(value) === id) || false;\n      };\n    });\n    var require_shim5 = __commonJS(function(exports, module) {\n      'use strict';\n      var iteratorSymbol = require_es6_symbol().iterator;\n      var isArguments = require_is_arguments();\n      var isFunction = require_is_function();\n      var toPosInt = require_to_pos_integer();\n      var callable = require_valid_callable();\n      var validValue = require_valid_value();\n      var isValue = require_is_value();\n      var isString = require_is_string();\n      var isArray = Array.isArray;\n      var call = Function.prototype.call;\n      var desc = {\n        configurable: true,\n        enumerable: true,\n        writable: true,\n        value: null\n      };\n      var defineProperty = Object.defineProperty;\n      module.exports = function(arrayLike) {\n        var mapFn = arguments[1], thisArg = arguments[2], Context2, i, j, arr, length, code, iterator, result, getIterator, value;\n        arrayLike = Object(validValue(arrayLike));\n        if (isValue(mapFn)) {\n          callable(mapFn);\n        }\n        if (!this || this === Array || !isFunction(this)) {\n          if (!mapFn) {\n            if (isArguments(arrayLike)) {\n              length = arrayLike.length;\n              if (length !== 1) {\n                return Array.apply(null, arrayLike);\n              }\n              arr = new Array(1);\n              arr[0] = arrayLike[0];\n              return arr;\n            }\n            if (isArray(arrayLike)) {\n              arr = new Array(length = arrayLike.length);\n              for (i = 0; i < length; ++i) {\n                arr[i] = arrayLike[i];\n              }\n              return arr;\n            }\n          }\n          arr = [];\n        } else {\n          Context2 = this;\n        }\n        if (!isArray(arrayLike)) {\n          if ((getIterator = arrayLike[iteratorSymbol]) !== void 0) {\n            iterator = callable(getIterator).call(arrayLike);\n            if (Context2) {\n              arr = new Context2();\n            }\n            result = iterator.next();\n            i = 0;\n            while (!result.done) {\n              value = mapFn ? call.call(mapFn, thisArg, result.value, i) : result.value;\n              if (Context2) {\n                desc.value = value;\n                defineProperty(arr, i, desc);\n              } else {\n                arr[i] = value;\n              }\n              result = iterator.next();\n              ++i;\n            }\n            length = i;\n          } else if (isString(arrayLike)) {\n            length = arrayLike.length;\n            if (Context2) {\n              arr = new Context2();\n            }\n            for (i = 0, j = 0; i < length; ++i) {\n              value = arrayLike[i];\n              if (i + 1 < length) {\n                code = value.charCodeAt(0);\n                if (code >= 55296 && code <= 56319) {\n                  value += arrayLike[++i];\n                }\n              }\n              value = mapFn ? call.call(mapFn, thisArg, value, j) : value;\n              if (Context2) {\n                desc.value = value;\n                defineProperty(arr, j, desc);\n              } else {\n                arr[j] = value;\n              }\n              ++j;\n            }\n            length = j;\n          }\n        }\n        if (length === void 0) {\n          length = toPosInt(arrayLike.length);\n          if (Context2) {\n            arr = new Context2(length);\n          }\n          for (i = 0; i < length; ++i) {\n            value = mapFn ? call.call(mapFn, thisArg, arrayLike[i], i) : arrayLike[i];\n            if (Context2) {\n              desc.value = value;\n              defineProperty(arr, i, desc);\n            } else {\n              arr[i] = value;\n            }\n          }\n        }\n        if (Context2) {\n          desc.value = null;\n          arr.length = length;\n        }\n        return arr;\n      };\n    });\n    var require_from = __commonJS(function(exports, module) {\n      'use strict';\n      module.exports = require_is_implemented5()() ? Array.from : require_shim5();\n    });\n    var require_to_array = __commonJS(function(exports, module) {\n      'use strict';\n      var from = require_from();\n      var isArray = Array.isArray;\n      module.exports = function(arrayLike) {\n        return isArray(arrayLike) ? arrayLike : from(arrayLike);\n      };\n    });\n    var require_resolve_resolve = __commonJS(function(exports, module) {\n      'use strict';\n      var toArray2 = require_to_array();\n      var isValue = require_is_value();\n      var callable = require_valid_callable();\n      var slice = Array.prototype.slice;\n      var resolveArgs;\n      resolveArgs = function resolveArgs(args) {\n        return this.map(function(resolve, i) {\n          return resolve ? resolve(args[i]) : args[i];\n        }).concat(slice.call(args, this.length));\n      };\n      module.exports = function(resolvers) {\n        resolvers = toArray2(resolvers);\n        resolvers.forEach(function(resolve) {\n          if (isValue(resolve)) {\n            callable(resolve);\n          }\n        });\n        return resolveArgs.bind(resolvers);\n      };\n    });\n    var require_resolve_normalize = __commonJS(function(exports, module) {\n      'use strict';\n      var callable = require_valid_callable();\n      module.exports = function(userNormalizer) {\n        var normalizer;\n        if (typeof userNormalizer === 'function') {\n          return {\n            set: userNormalizer,\n            get: userNormalizer\n          };\n        }\n        normalizer = {\n          get: callable(userNormalizer.get)\n        };\n        if (userNormalizer.set !== void 0) {\n          normalizer.set = callable(userNormalizer.set);\n          if (userNormalizer['delete']) {\n            normalizer['delete'] = callable(userNormalizer['delete']);\n          }\n          if (userNormalizer.clear) {\n            normalizer.clear = callable(userNormalizer.clear);\n          }\n          return normalizer;\n        }\n        normalizer.set = normalizer.get;\n        return normalizer;\n      };\n    });\n    var require_configure_map = __commonJS(function(exports, module) {\n      'use strict';\n      var customError = require_custom();\n      var defineLength = require_define_length();\n      var d = require_d();\n      var ee = require_event_emitter().methods;\n      var resolveResolve = require_resolve_resolve();\n      var resolveNormalize = require_resolve_normalize();\n      var apply = Function.prototype.apply;\n      var call = Function.prototype.call;\n      var create = Object.create;\n      var defineProperties = Object.defineProperties;\n      var _on = ee.on;\n      var emit = ee.emit;\n      module.exports = function(original, length, options) {\n        var cache20 = create(null), conf, memLength, _get, set, del, _clear, extDel, extGet, extHas, normalizer, getListeners, setListeners, deleteListeners, memoized, resolve;\n        if (length !== false) {\n          memLength = length;\n        } else if (isNaN(original.length)) {\n          memLength = 1;\n        } else {\n          memLength = original.length;\n        }\n        if (options.normalizer) {\n          normalizer = resolveNormalize(options.normalizer);\n          _get = normalizer.get;\n          set = normalizer.set;\n          del = normalizer['delete'];\n          _clear = normalizer.clear;\n        }\n        if (options.resolvers != null) {\n          resolve = resolveResolve(options.resolvers);\n        }\n        if (_get) {\n          memoized = defineLength(function(arg) {\n            var id, result, args = arguments;\n            if (resolve) {\n              args = resolve(args);\n            }\n            id = _get(args);\n            if (id !== null) {\n              if (hasOwnProperty.call(cache20, id)) {\n                if (getListeners) {\n                  conf.emit('get', id, args, this);\n                }\n                return cache20[id];\n              }\n            }\n            if (args.length === 1) {\n              result = call.call(original, this, args[0]);\n            } else {\n              result = apply.call(original, this, args);\n            }\n            if (id === null) {\n              id = _get(args);\n              if (id !== null) {\n                throw customError('Circular invocation', 'CIRCULAR_INVOCATION');\n              }\n              id = set(args);\n            } else if (hasOwnProperty.call(cache20, id)) {\n              throw customError('Circular invocation', 'CIRCULAR_INVOCATION');\n            }\n            cache20[id] = result;\n            if (setListeners) {\n              conf.emit('set', id, null, result);\n            }\n            return result;\n          }, memLength);\n        } else if (length === 0) {\n          memoized = function memoized() {\n            var result;\n            if (hasOwnProperty.call(cache20, 'data')) {\n              if (getListeners) {\n                conf.emit('get', 'data', arguments, this);\n              }\n              return cache20.data;\n            }\n            if (arguments.length) {\n              result = apply.call(original, this, arguments);\n            } else {\n              result = call.call(original, this);\n            }\n            if (hasOwnProperty.call(cache20, 'data')) {\n              throw customError('Circular invocation', 'CIRCULAR_INVOCATION');\n            }\n            cache20.data = result;\n            if (setListeners) {\n              conf.emit('set', 'data', null, result);\n            }\n            return result;\n          };\n        } else {\n          memoized = function memoized(arg) {\n            var result, args = arguments, id;\n            if (resolve) {\n              args = resolve(arguments);\n            }\n            id = String(args[0]);\n            if (hasOwnProperty.call(cache20, id)) {\n              if (getListeners) {\n                conf.emit('get', id, args, this);\n              }\n              return cache20[id];\n            }\n            if (args.length === 1) {\n              result = call.call(original, this, args[0]);\n            } else {\n              result = apply.call(original, this, args);\n            }\n            if (hasOwnProperty.call(cache20, id)) {\n              throw customError('Circular invocation', 'CIRCULAR_INVOCATION');\n            }\n            cache20[id] = result;\n            if (setListeners) {\n              conf.emit('set', id, null, result);\n            }\n            return result;\n          };\n        }\n        conf = {\n          original: original,\n          memoized: memoized,\n          profileName: options.profileName,\n          get: function get(args) {\n            if (resolve) {\n              args = resolve(args);\n            }\n            if (_get) {\n              return _get(args);\n            }\n            return String(args[0]);\n          },\n          has: function has(id) {\n            return hasOwnProperty.call(cache20, id);\n          },\n          delete: function _delete(id) {\n            var result;\n            if (!hasOwnProperty.call(cache20, id)) {\n              return;\n            }\n            if (del) {\n              del(id);\n            }\n            result = cache20[id];\n            delete cache20[id];\n            if (deleteListeners) {\n              conf.emit('delete', id, result);\n            }\n          },\n          clear: function clear() {\n            var oldCache = cache20;\n            if (_clear) {\n              _clear();\n            }\n            cache20 = create(null);\n            conf.emit('clear', oldCache);\n          },\n          on: function on(type, listener) {\n            if (type === 'get') {\n              getListeners = true;\n            } else if (type === 'set') {\n              setListeners = true;\n            } else if (type === 'delete') {\n              deleteListeners = true;\n            }\n            return _on.call(this, type, listener);\n          },\n          emit: emit,\n          updateEnv: function updateEnv() {\n            original = conf.original;\n          }\n        };\n        if (_get) {\n          extDel = defineLength(function(arg) {\n            var id, args = arguments;\n            if (resolve) {\n              args = resolve(args);\n            }\n            id = _get(args);\n            if (id === null) {\n              return;\n            }\n            conf['delete'](id);\n          }, memLength);\n        } else if (length === 0) {\n          extDel = function extDel() {\n            return conf['delete']('data');\n          };\n        } else {\n          extDel = function extDel(arg) {\n            if (resolve) {\n              arg = resolve(arguments)[0];\n            }\n            return conf['delete'](arg);\n          };\n        }\n        extGet = defineLength(function() {\n          var id, args = arguments;\n          if (length === 0) {\n            return cache20.data;\n          }\n          if (resolve) {\n            args = resolve(args);\n          }\n          if (_get) {\n            id = _get(args);\n          } else {\n            id = String(args[0]);\n          }\n          return cache20[id];\n        });\n        extHas = defineLength(function() {\n          var id, args = arguments;\n          if (length === 0) {\n            return conf.has('data');\n          }\n          if (resolve) {\n            args = resolve(args);\n          }\n          if (_get) {\n            id = _get(args);\n          } else {\n            id = String(args[0]);\n          }\n          if (id === null) {\n            return false;\n          }\n          return conf.has(id);\n        });\n        defineProperties(memoized, {\n          __memoized__: d(true),\n          delete: d(extDel),\n          clear: d(conf.clear),\n          _get: d(extGet),\n          _has: d(extHas)\n        });\n        return conf;\n      };\n    });\n    var require_plain = __commonJS(function(exports, module) {\n      'use strict';\n      var callable = require_valid_callable();\n      var forEach = require_for_each();\n      var extensions = require_registered_extensions();\n      var configure5 = require_configure_map();\n      var resolveLength = require_resolve_length();\n      module.exports = function self2(fn) {\n        var options, length, conf;\n        callable(fn);\n        options = Object(arguments[1]);\n        if (options.async && options.promise) {\n          throw new Error('Options \\'async\\' and \\'promise\\' cannot be used together');\n        }\n        if (hasOwnProperty.call(fn, '__memoized__') && !options.force) {\n          return fn;\n        }\n        length = resolveLength(options.length, fn.length, options.async && extensions.async);\n        conf = configure5(fn, length, options);\n        forEach(extensions, function(extFn, name) {\n          if (options[name]) {\n            extFn(options[name], conf, options);\n          }\n        });\n        if (self2.__profiler__) {\n          self2.__profiler__(conf);\n        }\n        conf.updateEnv();\n        return conf.memoized;\n      };\n    });\n    var require_primitive = __commonJS(function(exports, module) {\n      'use strict';\n      module.exports = function(args) {\n        var id, i, length = args.length;\n        if (!length) {\n          return '\\x02';\n        }\n        id = String(args[i = 0]);\n        while (--length) {\n          id += '\\x01' + args[++i];\n        }\n        return id;\n      };\n    });\n    var require_get_primitive_fixed = __commonJS(function(exports, module) {\n      'use strict';\n      module.exports = function(length) {\n        if (!length) {\n          return function() {\n            return '';\n          };\n        }\n        return function(args) {\n          var id = String(args[0]), i = 0, currentLength = length;\n          while (--currentLength) {\n            id += '\\x01' + args[++i];\n          }\n          return id;\n        };\n      };\n    });\n    var require_is_implemented8 = __commonJS(function(exports, module) {\n      'use strict';\n      module.exports = function() {\n        var numberIsNaN = Number.isNaN;\n        if (typeof numberIsNaN !== 'function') {\n          return false;\n        }\n        return !numberIsNaN({}) && numberIsNaN(NaN) && !numberIsNaN(34);\n      };\n    });\n    var require_shim6 = __commonJS(function(exports, module) {\n      'use strict';\n      module.exports = function(value) {\n        return value !== value;\n      };\n    });\n    var require_is_nan = __commonJS(function(exports, module) {\n      'use strict';\n      module.exports = require_is_implemented8()() ? Number.isNaN : require_shim6();\n    });\n    var require_e_index_of = __commonJS(function(exports, module) {\n      'use strict';\n      var numberIsNaN = require_is_nan();\n      var toPosInt = require_to_pos_integer();\n      var value = require_valid_value();\n      var indexOf = Array.prototype.indexOf;\n      var objHasOwnProperty = Object.prototype.hasOwnProperty;\n      var abs = Math.abs;\n      var floor = Math.floor;\n      module.exports = function(searchElement) {\n        var i, length, fromIndex, val;\n        if (!numberIsNaN(searchElement)) {\n          return indexOf.apply(this, arguments);\n        }\n        length = toPosInt(value(this).length);\n        fromIndex = arguments[1];\n        if (isNaN(fromIndex)) {\n          fromIndex = 0;\n        } else if (fromIndex >= 0) {\n          fromIndex = floor(fromIndex);\n        } else {\n          fromIndex = toPosInt(this.length) - floor(abs(fromIndex));\n        }\n        for (i = fromIndex; i < length; ++i) {\n          if (objHasOwnProperty.call(this, i)) {\n            val = this[i];\n            if (numberIsNaN(val)) {\n              return i;\n            }\n          }\n        }\n        return -1;\n      };\n    });\n    var require_get = __commonJS(function(exports, module) {\n      'use strict';\n      var indexOf = require_e_index_of();\n      var create = Object.create;\n      module.exports = function() {\n        var lastId = 0, map = [], cache20 = create(null);\n        return {\n          get: function get(args) {\n            var index = 0, set = map, i, length = args.length;\n            if (length === 0) {\n              return set[length] || null;\n            }\n            if (set = set[length]) {\n              while (index < length - 1) {\n                i = indexOf.call(set[0], args[index]);\n                if (i === -1) {\n                  return null;\n                }\n                set = set[1][i];\n                ++index;\n              }\n              i = indexOf.call(set[0], args[index]);\n              if (i === -1) {\n                return null;\n              }\n              return set[1][i] || null;\n            }\n            return null;\n          },\n          set: function set(args) {\n            var index = 0, set = map, i, length = args.length;\n            if (length === 0) {\n              set[length] = ++lastId;\n            } else {\n              if (!set[length]) {\n                set[length] = [ [], [] ];\n              }\n              set = set[length];\n              while (index < length - 1) {\n                i = indexOf.call(set[0], args[index]);\n                if (i === -1) {\n                  i = set[0].push(args[index]) - 1;\n                  set[1].push([ [], [] ]);\n                }\n                set = set[1][i];\n                ++index;\n              }\n              i = indexOf.call(set[0], args[index]);\n              if (i === -1) {\n                i = set[0].push(args[index]) - 1;\n              }\n              set[1][i] = ++lastId;\n            }\n            cache20[lastId] = args;\n            return lastId;\n          },\n          delete: function _delete(id) {\n            var index = 0, set = map, i, args = cache20[id], length = args.length, path = [];\n            if (length === 0) {\n              delete set[length];\n            } else if (set = set[length]) {\n              while (index < length - 1) {\n                i = indexOf.call(set[0], args[index]);\n                if (i === -1) {\n                  return;\n                }\n                path.push(set, i);\n                set = set[1][i];\n                ++index;\n              }\n              i = indexOf.call(set[0], args[index]);\n              if (i === -1) {\n                return;\n              }\n              id = set[1][i];\n              set[0].splice(i, 1);\n              set[1].splice(i, 1);\n              while (!set[0].length && path.length) {\n                i = path.pop();\n                set = path.pop();\n                set[0].splice(i, 1);\n                set[1].splice(i, 1);\n              }\n            }\n            delete cache20[id];\n          },\n          clear: function clear() {\n            map = [];\n            cache20 = create(null);\n          }\n        };\n      };\n    });\n    var require_get_1 = __commonJS(function(exports, module) {\n      'use strict';\n      var indexOf = require_e_index_of();\n      module.exports = function() {\n        var lastId = 0, argsMap = [], cache20 = [];\n        return {\n          get: function get(args) {\n            var index = indexOf.call(argsMap, args[0]);\n            return index === -1 ? null : cache20[index];\n          },\n          set: function set(args) {\n            argsMap.push(args[0]);\n            cache20.push(++lastId);\n            return lastId;\n          },\n          delete: function _delete(id) {\n            var index = indexOf.call(cache20, id);\n            if (index !== -1) {\n              argsMap.splice(index, 1);\n              cache20.splice(index, 1);\n            }\n          },\n          clear: function clear() {\n            argsMap = [];\n            cache20 = [];\n          }\n        };\n      };\n    });\n    var require_get_fixed = __commonJS(function(exports, module) {\n      'use strict';\n      var indexOf = require_e_index_of();\n      var create = Object.create;\n      module.exports = function(length) {\n        var lastId = 0, map = [ [], [] ], cache20 = create(null);\n        return {\n          get: function get(args) {\n            var index = 0, set = map, i;\n            while (index < length - 1) {\n              i = indexOf.call(set[0], args[index]);\n              if (i === -1) {\n                return null;\n              }\n              set = set[1][i];\n              ++index;\n            }\n            i = indexOf.call(set[0], args[index]);\n            if (i === -1) {\n              return null;\n            }\n            return set[1][i] || null;\n          },\n          set: function set(args) {\n            var index = 0, set = map, i;\n            while (index < length - 1) {\n              i = indexOf.call(set[0], args[index]);\n              if (i === -1) {\n                i = set[0].push(args[index]) - 1;\n                set[1].push([ [], [] ]);\n              }\n              set = set[1][i];\n              ++index;\n            }\n            i = indexOf.call(set[0], args[index]);\n            if (i === -1) {\n              i = set[0].push(args[index]) - 1;\n            }\n            set[1][i] = ++lastId;\n            cache20[lastId] = args;\n            return lastId;\n          },\n          delete: function _delete(id) {\n            var index = 0, set = map, i, path = [], args = cache20[id];\n            while (index < length - 1) {\n              i = indexOf.call(set[0], args[index]);\n              if (i === -1) {\n                return;\n              }\n              path.push(set, i);\n              set = set[1][i];\n              ++index;\n            }\n            i = indexOf.call(set[0], args[index]);\n            if (i === -1) {\n              return;\n            }\n            id = set[1][i];\n            set[0].splice(i, 1);\n            set[1].splice(i, 1);\n            while (!set[0].length && path.length) {\n              i = path.pop();\n              set = path.pop();\n              set[0].splice(i, 1);\n              set[1].splice(i, 1);\n            }\n            delete cache20[id];\n          },\n          clear: function clear() {\n            map = [ [], [] ];\n            cache20 = create(null);\n          }\n        };\n      };\n    });\n    var require_map = __commonJS(function(exports, module) {\n      'use strict';\n      var callable = require_valid_callable();\n      var forEach = require_for_each();\n      var call = Function.prototype.call;\n      module.exports = function(obj, cb) {\n        var result = {}, thisArg = arguments[2];\n        callable(cb);\n        forEach(obj, function(value, key, targetObj, index) {\n          result[key] = call.call(cb, thisArg, value, key, targetObj, index);\n        });\n        return result;\n      };\n    });\n    var require_next_tick = __commonJS(function(exports, module) {\n      'use strict';\n      var callable;\n      var byObserver;\n      callable = function callable(fn) {\n        if (typeof fn !== 'function') {\n          throw new TypeError(fn + ' is not a function');\n        }\n        return fn;\n      };\n      byObserver = function byObserver(Observer) {\n        var node = document.createTextNode(''), queue4, currentQueue, i = 0;\n        new Observer(function() {\n          var callback;\n          if (!queue4) {\n            if (!currentQueue) {\n              return;\n            }\n            queue4 = currentQueue;\n          } else if (currentQueue) {\n            queue4 = currentQueue.concat(queue4);\n          }\n          currentQueue = queue4;\n          queue4 = null;\n          if (typeof currentQueue === 'function') {\n            callback = currentQueue;\n            currentQueue = null;\n            callback();\n            return;\n          }\n          node.data = i = ++i % 2;\n          while (currentQueue) {\n            callback = currentQueue.shift();\n            if (!currentQueue.length) {\n              currentQueue = null;\n            }\n            callback();\n          }\n        }).observe(node, {\n          characterData: true\n        });\n        return function(fn) {\n          callable(fn);\n          if (queue4) {\n            if (typeof queue4 === 'function') {\n              queue4 = [ queue4, fn ];\n            } else {\n              queue4.push(fn);\n            }\n            return;\n          }\n          queue4 = fn;\n          node.data = i = ++i % 2;\n        };\n      };\n      module.exports = function() {\n        if ((typeof process === 'undefined' ? 'undefined' : _typeof(process)) === 'object' && process && typeof process.nextTick === 'function') {\n          return process.nextTick;\n        }\n        if ((typeof document === 'undefined' ? 'undefined' : _typeof(document)) === 'object' && document) {\n          if (typeof MutationObserver === 'function') {\n            return byObserver(MutationObserver);\n          }\n          if (typeof WebKitMutationObserver === 'function') {\n            return byObserver(WebKitMutationObserver);\n          }\n        }\n        if (typeof setImmediate === 'function') {\n          return function(cb) {\n            setImmediate(callable(cb));\n          };\n        }\n        if (typeof setTimeout === 'function' || (typeof setTimeout === 'undefined' ? 'undefined' : _typeof(setTimeout)) === 'object') {\n          return function(cb) {\n            setTimeout(callable(cb), 0);\n          };\n        }\n        return null;\n      }();\n    });\n    var require_async = __commonJS(function() {\n      'use strict';\n      var aFrom = require_from();\n      var objectMap = require_map();\n      var mixin = require_mixin();\n      var defineLength = require_define_length();\n      var nextTick = require_next_tick();\n      var slice = Array.prototype.slice;\n      var apply = Function.prototype.apply;\n      var create = Object.create;\n      require_registered_extensions().async = function(tbi, conf) {\n        var waiting = create(null), cache20 = create(null), base = conf.memoized, original = conf.original, currentCallback, currentContext, currentArgs;\n        conf.memoized = defineLength(function(arg) {\n          var args = arguments, last = args[args.length - 1];\n          if (typeof last === 'function') {\n            currentCallback = last;\n            args = slice.call(args, 0, -1);\n          }\n          return base.apply(currentContext = this, currentArgs = args);\n        }, base);\n        try {\n          mixin(conf.memoized, base);\n        } catch (ignore) {}\n        conf.on('get', function(id) {\n          var cb, context3, args;\n          if (!currentCallback) {\n            return;\n          }\n          if (waiting[id]) {\n            if (typeof waiting[id] === 'function') {\n              waiting[id] = [ waiting[id], currentCallback ];\n            } else {\n              waiting[id].push(currentCallback);\n            }\n            currentCallback = null;\n            return;\n          }\n          cb = currentCallback;\n          context3 = currentContext;\n          args = currentArgs;\n          currentCallback = currentContext = currentArgs = null;\n          nextTick(function() {\n            var data2;\n            if (hasOwnProperty.call(cache20, id)) {\n              data2 = cache20[id];\n              conf.emit('getasync', id, args, context3);\n              apply.call(cb, data2.context, data2.args);\n            } else {\n              currentCallback = cb;\n              currentContext = context3;\n              currentArgs = args;\n              base.apply(context3, args);\n            }\n          });\n        });\n        conf.original = function() {\n          var args, cb, origCb, result;\n          if (!currentCallback) {\n            return apply.call(original, this, arguments);\n          }\n          args = aFrom(arguments);\n          cb = function self2(err2) {\n            var cb2, args2, id = self2.id;\n            if (id == null) {\n              nextTick(apply.bind(self2, this, arguments));\n              return void 0;\n            }\n            delete self2.id;\n            cb2 = waiting[id];\n            delete waiting[id];\n            if (!cb2) {\n              return void 0;\n            }\n            args2 = aFrom(arguments);\n            if (conf.has(id)) {\n              if (err2) {\n                conf['delete'](id);\n              } else {\n                cache20[id] = {\n                  context: this,\n                  args: args2\n                };\n                conf.emit('setasync', id, typeof cb2 === 'function' ? 1 : cb2.length);\n              }\n            }\n            if (typeof cb2 === 'function') {\n              result = apply.call(cb2, this, args2);\n            } else {\n              cb2.forEach(function(cb3) {\n                result = apply.call(cb3, this, args2);\n              }, this);\n            }\n            return result;\n          };\n          origCb = currentCallback;\n          currentCallback = currentContext = currentArgs = null;\n          args.push(cb);\n          result = apply.call(original, this, args);\n          cb.cb = origCb;\n          currentCallback = cb;\n          return result;\n        };\n        conf.on('set', function(id) {\n          if (!currentCallback) {\n            conf['delete'](id);\n            return;\n          }\n          if (waiting[id]) {\n            if (typeof waiting[id] === 'function') {\n              waiting[id] = [ waiting[id], currentCallback.cb ];\n            } else {\n              waiting[id].push(currentCallback.cb);\n            }\n          } else {\n            waiting[id] = currentCallback.cb;\n          }\n          delete currentCallback.cb;\n          currentCallback.id = id;\n          currentCallback = null;\n        });\n        conf.on('delete', function(id) {\n          var result;\n          if (hasOwnProperty.call(waiting, id)) {\n            return;\n          }\n          if (!cache20[id]) {\n            return;\n          }\n          result = cache20[id];\n          delete cache20[id];\n          conf.emit('deleteasync', id, slice.call(result.args, 1));\n        });\n        conf.on('clear', function() {\n          var oldCache = cache20;\n          cache20 = create(null);\n          conf.emit('clearasync', objectMap(oldCache, function(data2) {\n            return slice.call(data2.args, 1);\n          }));\n        });\n      };\n    });\n    var require_primitive_set = __commonJS(function(exports, module) {\n      'use strict';\n      var forEach = Array.prototype.forEach;\n      var create = Object.create;\n      module.exports = function(arg) {\n        var set = create(null);\n        forEach.call(arguments, function(name) {\n          set[name] = true;\n        });\n        return set;\n      };\n    });\n    var require_is_callable = __commonJS(function(exports, module) {\n      'use strict';\n      module.exports = function(obj) {\n        return typeof obj === 'function';\n      };\n    });\n    var require_validate_stringifiable = __commonJS(function(exports, module) {\n      'use strict';\n      var isCallable = require_is_callable();\n      module.exports = function(stringifiable) {\n        try {\n          if (stringifiable && isCallable(stringifiable.toString)) {\n            return stringifiable.toString();\n          }\n          return String(stringifiable);\n        } catch (e) {\n          throw new TypeError('Passed argument cannot be stringifed');\n        }\n      };\n    });\n    var require_validate_stringifiable_value = __commonJS(function(exports, module) {\n      'use strict';\n      var ensureValue = require_valid_value();\n      var stringifiable = require_validate_stringifiable();\n      module.exports = function(value) {\n        return stringifiable(ensureValue(value));\n      };\n    });\n    var require_safe_to_string = __commonJS(function(exports, module) {\n      'use strict';\n      var isCallable = require_is_callable();\n      module.exports = function(value) {\n        try {\n          if (value && isCallable(value.toString)) {\n            return value.toString();\n          }\n          return String(value);\n        } catch (e) {\n          return '<Non-coercible to string value>';\n        }\n      };\n    });\n    var require_to_short_string_representation = __commonJS(function(exports, module) {\n      'use strict';\n      var safeToString = require_safe_to_string();\n      var reNewLine = /[\\n\\r\\u2028\\u2029]/g;\n      module.exports = function(value) {\n        var string = safeToString(value);\n        if (string.length > 100) {\n          string = string.slice(0, 99) + '\\u2026';\n        }\n        string = string.replace(reNewLine, function(_char) {\n          return JSON.stringify(_char).slice(1, -1);\n        });\n        return string;\n      };\n    });\n    var require_is_promise = __commonJS(function(exports, module) {\n      module.exports = isPromise;\n      module.exports['default'] = isPromise;\n      function isPromise(obj) {\n        return !!obj && (_typeof(obj) === 'object' || typeof obj === 'function') && typeof obj.then === 'function';\n      }\n    });\n    var require_promise = __commonJS(function() {\n      'use strict';\n      var objectMap = require_map();\n      var primitiveSet = require_primitive_set();\n      var ensureString = require_validate_stringifiable_value();\n      var toShortString = require_to_short_string_representation();\n      var isPromise = require_is_promise();\n      var nextTick = require_next_tick();\n      var create = Object.create;\n      var supportedModes = primitiveSet('then', 'then:finally', 'done', 'done:finally');\n      require_registered_extensions().promise = function(mode, conf) {\n        var waiting = create(null), cache20 = create(null), promises = create(null);\n        if (mode === true) {\n          mode = null;\n        } else {\n          mode = ensureString(mode);\n          if (!supportedModes[mode]) {\n            throw new TypeError('\\'' + toShortString(mode) + '\\' is not valid promise mode');\n          }\n        }\n        conf.on('set', function(id, ignore, promise) {\n          var isFailed = false;\n          if (!isPromise(promise)) {\n            cache20[id] = promise;\n            conf.emit('setasync', id, 1);\n            return;\n          }\n          waiting[id] = 1;\n          promises[id] = promise;\n          var onSuccess = function onSuccess(result) {\n            var count = waiting[id];\n            if (isFailed) {\n              throw new Error('Memoizee error: Detected unordered then|done & finally resolution, which in turn makes proper detection of success/failure impossible (when in \\'done:finally\\' mode)\\nConsider to rely on \\'then\\' or \\'done\\' mode instead.');\n            }\n            if (!count) {\n              return;\n            }\n            delete waiting[id];\n            cache20[id] = result;\n            conf.emit('setasync', id, count);\n          };\n          var onFailure = function onFailure() {\n            isFailed = true;\n            if (!waiting[id]) {\n              return;\n            }\n            delete waiting[id];\n            delete promises[id];\n            conf['delete'](id);\n          };\n          var resolvedMode = mode;\n          if (!resolvedMode) {\n            resolvedMode = 'then';\n          }\n          if (resolvedMode === 'then') {\n            var nextTickFailure = function nextTickFailure() {\n              nextTick(onFailure);\n            };\n            promise = promise.then(function(result) {\n              nextTick(onSuccess.bind(this, result));\n            }, nextTickFailure);\n            if (typeof promise['finally'] === 'function') {\n              promise['finally'](nextTickFailure);\n            }\n          } else if (resolvedMode === 'done') {\n            if (typeof promise.done !== 'function') {\n              throw new Error('Memoizee error: Retrieved promise does not implement \\'done\\' in \\'done\\' mode');\n            }\n            promise.done(onSuccess, onFailure);\n          } else if (resolvedMode === 'done:finally') {\n            if (typeof promise.done !== 'function') {\n              throw new Error('Memoizee error: Retrieved promise does not implement \\'done\\' in \\'done:finally\\' mode');\n            }\n            if (typeof promise['finally'] !== 'function') {\n              throw new Error('Memoizee error: Retrieved promise does not implement \\'finally\\' in \\'done:finally\\' mode');\n            }\n            promise.done(onSuccess);\n            promise['finally'](onFailure);\n          }\n        });\n        conf.on('get', function(id, args, context3) {\n          var promise;\n          if (waiting[id]) {\n            ++waiting[id];\n            return;\n          }\n          promise = promises[id];\n          var emit = function emit() {\n            conf.emit('getasync', id, args, context3);\n          };\n          if (isPromise(promise)) {\n            if (typeof promise.done === 'function') {\n              promise.done(emit);\n            } else {\n              promise.then(function() {\n                nextTick(emit);\n              });\n            }\n          } else {\n            emit();\n          }\n        });\n        conf.on('delete', function(id) {\n          delete promises[id];\n          if (waiting[id]) {\n            delete waiting[id];\n            return;\n          }\n          if (!hasOwnProperty.call(cache20, id)) {\n            return;\n          }\n          var result = cache20[id];\n          delete cache20[id];\n          conf.emit('deleteasync', id, [ result ]);\n        });\n        conf.on('clear', function() {\n          var oldCache = cache20;\n          cache20 = create(null);\n          waiting = create(null);\n          promises = create(null);\n          conf.emit('clearasync', objectMap(oldCache, function(data2) {\n            return [ data2 ];\n          }));\n        });\n      };\n    });\n    var require_dispose = __commonJS(function() {\n      'use strict';\n      var callable = require_valid_callable();\n      var forEach = require_for_each();\n      var extensions = require_registered_extensions();\n      var apply = Function.prototype.apply;\n      extensions.dispose = function(dispose, conf, options) {\n        var del;\n        callable(dispose);\n        if (options.async && extensions.async || options.promise && extensions.promise) {\n          conf.on('deleteasync', del = function del(id, resultArray) {\n            apply.call(dispose, null, resultArray);\n          });\n          conf.on('clearasync', function(cache20) {\n            forEach(cache20, function(result, id) {\n              del(id, result);\n            });\n          });\n          return;\n        }\n        conf.on('delete', del = function del(id, result) {\n          dispose(result);\n        });\n        conf.on('clear', function(cache20) {\n          forEach(cache20, function(result, id) {\n            del(id, result);\n          });\n        });\n      };\n    });\n    var require_max_timeout = __commonJS(function(exports, module) {\n      'use strict';\n      module.exports = 2147483647;\n    });\n    var require_valid_timeout = __commonJS(function(exports, module) {\n      'use strict';\n      var toPosInt = require_to_pos_integer();\n      var maxTimeout = require_max_timeout();\n      module.exports = function(value) {\n        value = toPosInt(value);\n        if (value > maxTimeout) {\n          throw new TypeError(value + ' exceeds maximum possible timeout');\n        }\n        return value;\n      };\n    });\n    var require_max_age = __commonJS(function() {\n      'use strict';\n      var aFrom = require_from();\n      var forEach = require_for_each();\n      var nextTick = require_next_tick();\n      var isPromise = require_is_promise();\n      var timeout = require_valid_timeout();\n      var extensions = require_registered_extensions();\n      var noop4 = Function.prototype;\n      var max = Math.max;\n      var min = Math.min;\n      var create = Object.create;\n      extensions.maxAge = function(maxAge, conf, options) {\n        var timeouts, postfix, preFetchAge, preFetchTimeouts;\n        maxAge = timeout(maxAge);\n        if (!maxAge) {\n          return;\n        }\n        timeouts = create(null);\n        postfix = options.async && extensions.async || options.promise && extensions.promise ? 'async' : '';\n        conf.on('set' + postfix, function(id) {\n          timeouts[id] = setTimeout(function() {\n            conf['delete'](id);\n          }, maxAge);\n          if (typeof timeouts[id].unref === 'function') {\n            timeouts[id].unref();\n          }\n          if (!preFetchTimeouts) {\n            return;\n          }\n          if (preFetchTimeouts[id]) {\n            if (preFetchTimeouts[id] !== 'nextTick') {\n              clearTimeout(preFetchTimeouts[id]);\n            }\n          }\n          preFetchTimeouts[id] = setTimeout(function() {\n            delete preFetchTimeouts[id];\n          }, preFetchAge);\n          if (typeof preFetchTimeouts[id].unref === 'function') {\n            preFetchTimeouts[id].unref();\n          }\n        });\n        conf.on('delete' + postfix, function(id) {\n          clearTimeout(timeouts[id]);\n          delete timeouts[id];\n          if (!preFetchTimeouts) {\n            return;\n          }\n          if (preFetchTimeouts[id] !== 'nextTick') {\n            clearTimeout(preFetchTimeouts[id]);\n          }\n          delete preFetchTimeouts[id];\n        });\n        if (options.preFetch) {\n          if (options.preFetch === true || isNaN(options.preFetch)) {\n            preFetchAge = .333;\n          } else {\n            preFetchAge = max(min(Number(options.preFetch), 1), 0);\n          }\n          if (preFetchAge) {\n            preFetchTimeouts = {};\n            preFetchAge = (1 - preFetchAge) * maxAge;\n            conf.on('get' + postfix, function(id, args, context3) {\n              if (!preFetchTimeouts[id]) {\n                preFetchTimeouts[id] = 'nextTick';\n                nextTick(function() {\n                  var result;\n                  if (preFetchTimeouts[id] !== 'nextTick') {\n                    return;\n                  }\n                  delete preFetchTimeouts[id];\n                  conf['delete'](id);\n                  if (options.async) {\n                    args = aFrom(args);\n                    args.push(noop4);\n                  }\n                  result = conf.memoized.apply(context3, args);\n                  if (options.promise) {\n                    if (isPromise(result)) {\n                      if (typeof result.done === 'function') {\n                        result.done(noop4, noop4);\n                      } else {\n                        result.then(noop4, noop4);\n                      }\n                    }\n                  }\n                });\n              }\n            });\n          }\n        }\n        conf.on('clear' + postfix, function() {\n          forEach(timeouts, function(id) {\n            clearTimeout(id);\n          });\n          timeouts = {};\n          if (preFetchTimeouts) {\n            forEach(preFetchTimeouts, function(id) {\n              if (id !== 'nextTick') {\n                clearTimeout(id);\n              }\n            });\n            preFetchTimeouts = {};\n          }\n        });\n      };\n    });\n    var require_lru_queue = __commonJS(function(exports, module) {\n      'use strict';\n      var toPosInt = require_to_pos_integer();\n      var create = Object.create;\n      var hasOwnProperty2 = Object.prototype.hasOwnProperty;\n      module.exports = function(limit) {\n        var size = 0, base = 1, queue4 = create(null), map = create(null), index = 0, del;\n        limit = toPosInt(limit);\n        return {\n          hit: function hit(id) {\n            var oldIndex = map[id], nuIndex = ++index;\n            queue4[nuIndex] = id;\n            map[id] = nuIndex;\n            if (!oldIndex) {\n              ++size;\n              if (size <= limit) {\n                return;\n              }\n              id = queue4[base];\n              del(id);\n              return id;\n            }\n            delete queue4[oldIndex];\n            if (base !== oldIndex) {\n              return;\n            }\n            while (!hasOwnProperty2.call(queue4, ++base)) {\n              continue;\n            }\n          },\n          delete: del = function del(id) {\n            var oldIndex = map[id];\n            if (!oldIndex) {\n              return;\n            }\n            delete queue4[oldIndex];\n            delete map[id];\n            --size;\n            if (base !== oldIndex) {\n              return;\n            }\n            if (!size) {\n              index = 0;\n              base = 1;\n              return;\n            }\n            while (!hasOwnProperty2.call(queue4, ++base)) {\n              continue;\n            }\n          },\n          clear: function clear() {\n            size = 0;\n            base = 1;\n            queue4 = create(null);\n            map = create(null);\n            index = 0;\n          }\n        };\n      };\n    });\n    var require_max = __commonJS(function() {\n      'use strict';\n      var toPosInteger = require_to_pos_integer();\n      var lruQueue = require_lru_queue();\n      var extensions = require_registered_extensions();\n      extensions.max = function(max, conf, options) {\n        var postfix, queue4, hit;\n        max = toPosInteger(max);\n        if (!max) {\n          return;\n        }\n        queue4 = lruQueue(max);\n        postfix = options.async && extensions.async || options.promise && extensions.promise ? 'async' : '';\n        conf.on('set' + postfix, hit = function hit(id) {\n          id = queue4.hit(id);\n          if (id === void 0) {\n            return;\n          }\n          conf['delete'](id);\n        });\n        conf.on('get' + postfix, hit);\n        conf.on('delete' + postfix, queue4['delete']);\n        conf.on('clear' + postfix, queue4.clear);\n      };\n    });\n    var require_ref_counter = __commonJS(function() {\n      'use strict';\n      var d = require_d();\n      var extensions = require_registered_extensions();\n      var create = Object.create;\n      var defineProperties = Object.defineProperties;\n      extensions.refCounter = function(ignore, conf, options) {\n        var cache20, postfix;\n        cache20 = create(null);\n        postfix = options.async && extensions.async || options.promise && extensions.promise ? 'async' : '';\n        conf.on('set' + postfix, function(id, length) {\n          cache20[id] = length || 1;\n        });\n        conf.on('get' + postfix, function(id) {\n          ++cache20[id];\n        });\n        conf.on('delete' + postfix, function(id) {\n          delete cache20[id];\n        });\n        conf.on('clear' + postfix, function() {\n          cache20 = {};\n        });\n        defineProperties(conf.memoized, {\n          deleteRef: d(function() {\n            var id = conf.get(arguments);\n            if (id === null) {\n              return null;\n            }\n            if (!cache20[id]) {\n              return null;\n            }\n            if (!--cache20[id]) {\n              conf['delete'](id);\n              return true;\n            }\n            return false;\n          }),\n          getRefCount: d(function() {\n            var id = conf.get(arguments);\n            if (id === null) {\n              return 0;\n            }\n            if (!cache20[id]) {\n              return 0;\n            }\n            return cache20[id];\n          })\n        });\n      };\n    });\n    var require_memoizee = __commonJS(function(exports, module) {\n      'use strict';\n      var normalizeOpts = require_normalize_options();\n      var resolveLength = require_resolve_length();\n      var plain = require_plain();\n      module.exports = function(fn) {\n        var options = normalizeOpts(arguments[1]), length;\n        if (!options.normalizer) {\n          length = options.length = resolveLength(options.length, fn.length, options.async);\n          if (length !== 0) {\n            if (options.primitive) {\n              if (length === false) {\n                options.normalizer = require_primitive();\n              } else if (length > 1) {\n                options.normalizer = require_get_primitive_fixed()(length);\n              }\n            } else if (length === false) {\n              options.normalizer = require_get()();\n            } else if (length === 1) {\n              options.normalizer = require_get_1()();\n            } else {\n              options.normalizer = require_get_fixed()(length);\n            }\n          }\n        }\n        if (options.async) {\n          require_async();\n        }\n        if (options.promise) {\n          require_promise();\n        }\n        if (options.dispose) {\n          require_dispose();\n        }\n        if (options.maxAge) {\n          require_max_age();\n        }\n        if (options.max) {\n          require_max();\n        }\n        if (options.refCounter) {\n          require_ref_counter();\n        }\n        return plain(fn, options);\n      };\n    });\n    var require_emoji_regex = __commonJS(function(exports, module) {\n      'use strict';\n      module.exports = function() {\n        return /\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F|\\uD83D\\uDC68(?:\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C\\uDFFB|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83D[\\uDC66\\uDC67]|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C[\\uDFFB-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)\\uD83C\\uDFFB|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83D\\uDC69(?:\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|(?:(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)\\uFE0F|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\u200D[\\u2640\\u2642])|\\uD83C\\uDFF4\\u200D\\u2620)\\uFE0F|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83C\\uDDF6\\uD83C\\uDDE6|[#\\*0-9]\\uFE0F\\u20E3|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83D\\uDC69(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC70\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDCAA\\uDD74\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD36\\uDDB5\\uDDB6\\uDDBB\\uDDD2-\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5\\uDEEB\\uDEEC\\uDEF4-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g;\n      };\n    });\n    var require_doT = __commonJS(function(exports, module) {\n      (function() {\n        'use strict';\n        var doT3 = {\n          name: 'doT',\n          version: '1.1.1',\n          templateSettings: {\n            evaluate: /\\{\\{([\\s\\S]+?(\\}?)+)\\}\\}/g,\n            interpolate: /\\{\\{=([\\s\\S]+?)\\}\\}/g,\n            encode: /\\{\\{!([\\s\\S]+?)\\}\\}/g,\n            use: /\\{\\{#([\\s\\S]+?)\\}\\}/g,\n            useParams: /(^|[^\\w$])def(?:\\.|\\[[\\'\\\"])([\\w$\\.]+)(?:[\\'\\\"]\\])?\\s*\\:\\s*([\\w$\\.]+|\\\"[^\\\"]+\\\"|\\'[^\\']+\\'|\\{[^\\}]+\\})/g,\n            define: /\\{\\{##\\s*([\\w\\.$]+)\\s*(\\:|=)([\\s\\S]+?)#\\}\\}/g,\n            defineParams: /^\\s*([\\w$]+):([\\s\\S]+)/,\n            conditional: /\\{\\{\\?(\\?)?\\s*([\\s\\S]*?)\\s*\\}\\}/g,\n            iterate: /\\{\\{~\\s*(?:\\}\\}|([\\s\\S]+?)\\s*\\:\\s*([\\w$]+)\\s*(?:\\:\\s*([\\w$]+))?\\s*\\}\\})/g,\n            varname: 'it',\n            strip: true,\n            append: true,\n            selfcontained: false,\n            doNotSkipEncoded: false\n          },\n          template: void 0,\n          compile: void 0,\n          log: true\n        };\n        (function() {\n          if ((typeof globalThis === 'undefined' ? 'undefined' : _typeof(globalThis)) === 'object') {\n            return;\n          }\n          try {\n            Object.defineProperty(Object.prototype, '__magic__', {\n              get: function get() {\n                return this;\n              },\n              configurable: true\n            });\n            __magic__.globalThis = __magic__;\n            delete Object.prototype.__magic__;\n          } catch (e) {\n            window.globalThis = function() {\n              if (typeof self !== 'undefined') {\n                return self;\n              }\n              if (typeof window !== 'undefined') {\n                return window;\n              }\n              if (typeof global !== 'undefined') {\n                return global;\n              }\n              if (typeof this !== 'undefined') {\n                return this;\n              }\n              throw new Error('Unable to locate global `this`');\n            }();\n          }\n        })();\n        doT3.encodeHTMLSource = function(doNotSkipEncoded) {\n          var encodeHTMLRules = {\n            '&': '&#38;',\n            '<': '&#60;',\n            '>': '&#62;',\n            '\"': '&#34;',\n            '\\'': '&#39;',\n            '/': '&#47;'\n          }, matchHTML = doNotSkipEncoded ? /[&<>\"'\\/]/g : /&(?!#?\\w+;)|<|>|\"|'|\\//g;\n          return function(code) {\n            return code ? code.toString().replace(matchHTML, function(m) {\n              return encodeHTMLRules[m] || m;\n            }) : '';\n          };\n        };\n        if (typeof module !== 'undefined' && module.exports) {\n          module.exports = doT3;\n        } else if (typeof define === 'function' && define.amd) {\n          define(function() {\n            return doT3;\n          });\n        } else {\n          globalThis.doT = doT3;\n        }\n        var startend = {\n          append: {\n            start: '\\'+(',\n            end: ')+\\'',\n            startencode: '\\'+encodeHTML('\n          },\n          split: {\n            start: '\\';out+=(',\n            end: ');out+=\\'',\n            startencode: '\\';out+=encodeHTML('\n          }\n        }, skip = /$^/;\n        function resolveDefs(c, block, def) {\n          return (typeof block === 'string' ? block : block.toString()).replace(c.define || skip, function(m, code, assign, value) {\n            if (code.indexOf('def.') === 0) {\n              code = code.substring(4);\n            }\n            if (!(code in def)) {\n              if (assign === ':') {\n                if (c.defineParams) {\n                  value.replace(c.defineParams, function(m2, param, v) {\n                    def[code] = {\n                      arg: param,\n                      text: v\n                    };\n                  });\n                }\n                if (!(code in def)) {\n                  def[code] = value;\n                }\n              } else {\n                new Function('def', 'def[\\'' + code + '\\']=' + value)(def);\n              }\n            }\n            return '';\n          }).replace(c.use || skip, function(m, code) {\n            if (c.useParams) {\n              code = code.replace(c.useParams, function(m2, s, d, param) {\n                if (def[d] && def[d].arg && param) {\n                  var rw = (d + ':' + param).replace(/'|\\\\/g, '_');\n                  def.__exp = def.__exp || {};\n                  def.__exp[rw] = def[d].text.replace(new RegExp('(^|[^\\\\w$])' + def[d].arg + '([^\\\\w$])', 'g'), '$1' + param + '$2');\n                  return s + 'def.__exp[\\'' + rw + '\\']';\n                }\n              });\n            }\n            var v = new Function('def', 'return ' + code)(def);\n            return v ? resolveDefs(c, v, def) : v;\n          });\n        }\n        function unescape(code) {\n          return code.replace(/\\\\('|\\\\)/g, '$1').replace(/[\\r\\t\\n]/g, ' ');\n        }\n        doT3.template = function(tmpl, c, def) {\n          c = c || doT3.templateSettings;\n          var cse = c.append ? startend.append : startend.split, needhtmlencode, sid = 0, indv, str = c.use || c.define ? resolveDefs(c, tmpl, def || {}) : tmpl;\n          str = ('var out=\\'' + (c.strip ? str.replace(/(^|\\r|\\n)\\t* +| +\\t*(\\r|\\n|$)/g, ' ').replace(/\\r|\\n|\\t|\\/\\*[\\s\\S]*?\\*\\//g, '') : str).replace(/'|\\\\/g, '\\\\$&').replace(c.interpolate || skip, function(m, code) {\n            return cse.start + unescape(code) + cse.end;\n          }).replace(c.encode || skip, function(m, code) {\n            needhtmlencode = true;\n            return cse.startencode + unescape(code) + cse.end;\n          }).replace(c.conditional || skip, function(m, elsecase, code) {\n            return elsecase ? code ? '\\';}else if(' + unescape(code) + '){out+=\\'' : '\\';}else{out+=\\'' : code ? '\\';if(' + unescape(code) + '){out+=\\'' : '\\';}out+=\\'';\n          }).replace(c.iterate || skip, function(m, iterate, vname, iname) {\n            if (!iterate) {\n              return '\\';} } out+=\\'';\n            }\n            sid += 1;\n            indv = iname || 'i' + sid;\n            iterate = unescape(iterate);\n            return '\\';var arr' + sid + '=' + iterate + ';if(arr' + sid + '){var ' + vname + ',' + indv + '=-1,l' + sid + '=arr' + sid + '.length-1;while(' + indv + '<l' + sid + '){' + vname + '=arr' + sid + '[' + indv + '+=1];out+=\\'';\n          }).replace(c.evaluate || skip, function(m, code) {\n            return '\\';' + unescape(code) + 'out+=\\'';\n          }) + '\\';return out;').replace(/\\n/g, '\\\\n').replace(/\\t/g, '\\\\t').replace(/\\r/g, '\\\\r').replace(/(\\s|;|\\}|^|\\{)out\\+='';/g, '$1').replace(/\\+''/g, '');\n          if (needhtmlencode) {\n            if (!c.selfcontained && globalThis && !globalThis._encodeHTML) {\n              globalThis._encodeHTML = doT3.encodeHTMLSource(c.doNotSkipEncoded);\n            }\n            str = 'var encodeHTML = typeof _encodeHTML !== \\'undefined\\' ? _encodeHTML : (' + doT3.encodeHTMLSource.toString() + '(' + (c.doNotSkipEncoded || '') + '));' + str;\n          }\n          try {\n            return new Function(c.varname, str);\n          } catch (e) {\n            if (typeof console !== 'undefined') {\n              console.log('Could not create a template function: ' + str);\n            }\n            throw e;\n          }\n        };\n        doT3.compile = function(tmpl, def) {\n          return doT3.template(tmpl, null, def);\n        };\n      })();\n    });\n    var require_es6_promise = __commonJS(function(exports, module) {\n      (function(global2, factory) {\n        _typeof(exports) === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global2.ES6Promise = factory();\n      })(exports, function() {\n        'use strict';\n        function objectOrFunction(x) {\n          var type = _typeof(x);\n          return x !== null && (type === 'object' || type === 'function');\n        }\n        function isFunction(x) {\n          return typeof x === 'function';\n        }\n        var _isArray = void 0;\n        if (Array.isArray) {\n          _isArray = Array.isArray;\n        } else {\n          _isArray = function _isArray(x) {\n            return Object.prototype.toString.call(x) === '[object Array]';\n          };\n        }\n        var isArray = _isArray;\n        var len = 0;\n        var vertxNext = void 0;\n        var customSchedulerFn = void 0;\n        var asap = function asap2(callback, arg) {\n          queue4[len] = callback;\n          queue4[len + 1] = arg;\n          len += 2;\n          if (len === 2) {\n            if (customSchedulerFn) {\n              customSchedulerFn(flush);\n            } else {\n              scheduleFlush();\n            }\n          }\n        };\n        function setScheduler(scheduleFn) {\n          customSchedulerFn = scheduleFn;\n        }\n        function setAsap(asapFn) {\n          asap = asapFn;\n        }\n        var browserWindow = typeof window !== 'undefined' ? window : void 0;\n        var browserGlobal = browserWindow || {};\n        var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\n        var isNode2 = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n        var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n        function useNextTick() {\n          return function() {\n            return process.nextTick(flush);\n          };\n        }\n        function useVertxTimer() {\n          if (typeof vertxNext !== 'undefined') {\n            return function() {\n              vertxNext(flush);\n            };\n          }\n          return useSetTimeout();\n        }\n        function useMutationObserver() {\n          var iterations = 0;\n          var observer = new BrowserMutationObserver(flush);\n          var node = document.createTextNode('');\n          observer.observe(node, {\n            characterData: true\n          });\n          return function() {\n            node.data = iterations = ++iterations % 2;\n          };\n        }\n        function useMessageChannel() {\n          var channel = new MessageChannel();\n          channel.port1.onmessage = flush;\n          return function() {\n            return channel.port2.postMessage(0);\n          };\n        }\n        function useSetTimeout() {\n          var globalSetTimeout = setTimeout;\n          return function() {\n            return globalSetTimeout(flush, 1);\n          };\n        }\n        var queue4 = new Array(1e3);\n        function flush() {\n          for (var i = 0; i < len; i += 2) {\n            var callback = queue4[i];\n            var arg = queue4[i + 1];\n            callback(arg);\n            queue4[i] = void 0;\n            queue4[i + 1] = void 0;\n          }\n          len = 0;\n        }\n        function attemptVertx() {\n          try {\n            var vertx = Function('return this')().require('vertx');\n            vertxNext = vertx.runOnLoop || vertx.runOnContext;\n            return useVertxTimer();\n          } catch (e) {\n            return useSetTimeout();\n          }\n        }\n        var scheduleFlush = void 0;\n        if (isNode2) {\n          scheduleFlush = useNextTick();\n        } else if (BrowserMutationObserver) {\n          scheduleFlush = useMutationObserver();\n        } else if (isWorker) {\n          scheduleFlush = useMessageChannel();\n        } else if (browserWindow === void 0 && true) {\n          scheduleFlush = attemptVertx();\n        } else {\n          scheduleFlush = useSetTimeout();\n        }\n        function then(onFulfillment, onRejection) {\n          var parent = this;\n          var child = new this.constructor(noop4);\n          if (child[PROMISE_ID] === void 0) {\n            makePromise(child);\n          }\n          var _state = parent._state;\n          if (_state) {\n            var callback = arguments[_state - 1];\n            asap(function() {\n              return invokeCallback(_state, child, callback, parent._result);\n            });\n          } else {\n            subscribe2(parent, child, onFulfillment, onRejection);\n          }\n          return child;\n        }\n        function resolve$1(object) {\n          var Constructor = this;\n          if (object && _typeof(object) === 'object' && object.constructor === Constructor) {\n            return object;\n          }\n          var promise = new Constructor(noop4);\n          resolve(promise, object);\n          return promise;\n        }\n        var PROMISE_ID = Math.random().toString(36).substring(2);\n        function noop4() {}\n        var PENDING = void 0;\n        var FULFILLED = 1;\n        var REJECTED = 2;\n        function selfFulfillment() {\n          return new TypeError('You cannot resolve a promise with itself');\n        }\n        function cannotReturnOwn() {\n          return new TypeError('A promises callback cannot return that same promise.');\n        }\n        function tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n          try {\n            then$$1.call(value, fulfillmentHandler, rejectionHandler);\n          } catch (e) {\n            return e;\n          }\n        }\n        function handleForeignThenable(promise, thenable, then$$1) {\n          asap(function(promise2) {\n            var sealed = false;\n            var error = tryThen(then$$1, thenable, function(value) {\n              if (sealed) {\n                return;\n              }\n              sealed = true;\n              if (thenable !== value) {\n                resolve(promise2, value);\n              } else {\n                fulfill(promise2, value);\n              }\n            }, function(reason) {\n              if (sealed) {\n                return;\n              }\n              sealed = true;\n              reject(promise2, reason);\n            }, 'Settle: ' + (promise2._label || ' unknown promise'));\n            if (!sealed && error) {\n              sealed = true;\n              reject(promise2, error);\n            }\n          }, promise);\n        }\n        function handleOwnThenable(promise, thenable) {\n          if (thenable._state === FULFILLED) {\n            fulfill(promise, thenable._result);\n          } else if (thenable._state === REJECTED) {\n            reject(promise, thenable._result);\n          } else {\n            subscribe2(thenable, void 0, function(value) {\n              return resolve(promise, value);\n            }, function(reason) {\n              return reject(promise, reason);\n            });\n          }\n        }\n        function handleMaybeThenable(promise, maybeThenable, then$$1) {\n          if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n            handleOwnThenable(promise, maybeThenable);\n          } else {\n            if (then$$1 === void 0) {\n              fulfill(promise, maybeThenable);\n            } else if (isFunction(then$$1)) {\n              handleForeignThenable(promise, maybeThenable, then$$1);\n            } else {\n              fulfill(promise, maybeThenable);\n            }\n          }\n        }\n        function resolve(promise, value) {\n          if (promise === value) {\n            reject(promise, selfFulfillment());\n          } else if (objectOrFunction(value)) {\n            var then$$1 = void 0;\n            try {\n              then$$1 = value.then;\n            } catch (error) {\n              reject(promise, error);\n              return;\n            }\n            handleMaybeThenable(promise, value, then$$1);\n          } else {\n            fulfill(promise, value);\n          }\n        }\n        function publishRejection(promise) {\n          if (promise._onerror) {\n            promise._onerror(promise._result);\n          }\n          publish(promise);\n        }\n        function fulfill(promise, value) {\n          if (promise._state !== PENDING) {\n            return;\n          }\n          promise._result = value;\n          promise._state = FULFILLED;\n          if (promise._subscribers.length !== 0) {\n            asap(publish, promise);\n          }\n        }\n        function reject(promise, reason) {\n          if (promise._state !== PENDING) {\n            return;\n          }\n          promise._state = REJECTED;\n          promise._result = reason;\n          asap(publishRejection, promise);\n        }\n        function subscribe2(parent, child, onFulfillment, onRejection) {\n          var _subscribers = parent._subscribers;\n          var length = _subscribers.length;\n          parent._onerror = null;\n          _subscribers[length] = child;\n          _subscribers[length + FULFILLED] = onFulfillment;\n          _subscribers[length + REJECTED] = onRejection;\n          if (length === 0 && parent._state) {\n            asap(publish, parent);\n          }\n        }\n        function publish(promise) {\n          var subscribers = promise._subscribers;\n          var settled = promise._state;\n          if (subscribers.length === 0) {\n            return;\n          }\n          var child = void 0, callback = void 0, detail = promise._result;\n          for (var i = 0; i < subscribers.length; i += 3) {\n            child = subscribers[i];\n            callback = subscribers[i + settled];\n            if (child) {\n              invokeCallback(settled, child, callback, detail);\n            } else {\n              callback(detail);\n            }\n          }\n          promise._subscribers.length = 0;\n        }\n        function invokeCallback(settled, promise, callback, detail) {\n          var hasCallback = isFunction(callback), value = void 0, error = void 0, succeeded = true;\n          if (hasCallback) {\n            try {\n              value = callback(detail);\n            } catch (e) {\n              succeeded = false;\n              error = e;\n            }\n            if (promise === value) {\n              reject(promise, cannotReturnOwn());\n              return;\n            }\n          } else {\n            value = detail;\n          }\n          if (promise._state !== PENDING) {} else if (hasCallback && succeeded) {\n            resolve(promise, value);\n          } else if (succeeded === false) {\n            reject(promise, error);\n          } else if (settled === FULFILLED) {\n            fulfill(promise, value);\n          } else if (settled === REJECTED) {\n            reject(promise, value);\n          }\n        }\n        function initializePromise(promise, resolver) {\n          try {\n            resolver(function resolvePromise(value) {\n              resolve(promise, value);\n            }, function rejectPromise(reason) {\n              reject(promise, reason);\n            });\n          } catch (e) {\n            reject(promise, e);\n          }\n        }\n        var id = 0;\n        function nextId() {\n          return id++;\n        }\n        function makePromise(promise) {\n          promise[PROMISE_ID] = id++;\n          promise._state = void 0;\n          promise._result = void 0;\n          promise._subscribers = [];\n        }\n        function validationError() {\n          return new Error('Array Methods must be provided an Array');\n        }\n        var Enumerator = function() {\n          function Enumerator2(Constructor, input) {\n            this._instanceConstructor = Constructor;\n            this.promise = new Constructor(noop4);\n            if (!this.promise[PROMISE_ID]) {\n              makePromise(this.promise);\n            }\n            if (isArray(input)) {\n              this.length = input.length;\n              this._remaining = input.length;\n              this._result = new Array(this.length);\n              if (this.length === 0) {\n                fulfill(this.promise, this._result);\n              } else {\n                this.length = this.length || 0;\n                this._enumerate(input);\n                if (this._remaining === 0) {\n                  fulfill(this.promise, this._result);\n                }\n              }\n            } else {\n              reject(this.promise, validationError());\n            }\n          }\n          Enumerator2.prototype._enumerate = function _enumerate(input) {\n            for (var i = 0; this._state === PENDING && i < input.length; i++) {\n              this._eachEntry(input[i], i);\n            }\n          };\n          Enumerator2.prototype._eachEntry = function _eachEntry(entry, i) {\n            var c = this._instanceConstructor;\n            var resolve$$1 = c.resolve;\n            if (resolve$$1 === resolve$1) {\n              var _then = void 0;\n              var error = void 0;\n              var didError = false;\n              try {\n                _then = entry.then;\n              } catch (e) {\n                didError = true;\n                error = e;\n              }\n              if (_then === then && entry._state !== PENDING) {\n                this._settledAt(entry._state, i, entry._result);\n              } else if (typeof _then !== 'function') {\n                this._remaining--;\n                this._result[i] = entry;\n              } else if (c === Promise$1) {\n                var promise = new c(noop4);\n                if (didError) {\n                  reject(promise, error);\n                } else {\n                  handleMaybeThenable(promise, entry, _then);\n                }\n                this._willSettleAt(promise, i);\n              } else {\n                this._willSettleAt(new c(function(resolve$$12) {\n                  return resolve$$12(entry);\n                }), i);\n              }\n            } else {\n              this._willSettleAt(resolve$$1(entry), i);\n            }\n          };\n          Enumerator2.prototype._settledAt = function _settledAt(state, i, value) {\n            var promise = this.promise;\n            if (promise._state === PENDING) {\n              this._remaining--;\n              if (state === REJECTED) {\n                reject(promise, value);\n              } else {\n                this._result[i] = value;\n              }\n            }\n            if (this._remaining === 0) {\n              fulfill(promise, this._result);\n            }\n          };\n          Enumerator2.prototype._willSettleAt = function _willSettleAt(promise, i) {\n            var enumerator = this;\n            subscribe2(promise, void 0, function(value) {\n              return enumerator._settledAt(FULFILLED, i, value);\n            }, function(reason) {\n              return enumerator._settledAt(REJECTED, i, reason);\n            });\n          };\n          return Enumerator2;\n        }();\n        function all(entries) {\n          return new Enumerator(this, entries).promise;\n        }\n        function race(entries) {\n          var Constructor = this;\n          if (!isArray(entries)) {\n            return new Constructor(function(_, reject2) {\n              return reject2(new TypeError('You must pass an array to race.'));\n            });\n          } else {\n            return new Constructor(function(resolve2, reject2) {\n              var length = entries.length;\n              for (var i = 0; i < length; i++) {\n                Constructor.resolve(entries[i]).then(resolve2, reject2);\n              }\n            });\n          }\n        }\n        function reject$1(reason) {\n          var Constructor = this;\n          var promise = new Constructor(noop4);\n          reject(promise, reason);\n          return promise;\n        }\n        function needsResolver() {\n          throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n        }\n        function needsNew() {\n          throw new TypeError('Failed to construct \\'Promise\\': Please use the \\'new\\' operator, this object constructor cannot be called as a function.');\n        }\n        var Promise$1 = function() {\n          function Promise2(resolver) {\n            this[PROMISE_ID] = nextId();\n            this._result = this._state = void 0;\n            this._subscribers = [];\n            if (noop4 !== resolver) {\n              typeof resolver !== 'function' && needsResolver();\n              this instanceof Promise2 ? initializePromise(this, resolver) : needsNew();\n            }\n          }\n          Promise2.prototype['catch'] = function _catch(onRejection) {\n            return this.then(null, onRejection);\n          };\n          Promise2.prototype['finally'] = function _finally(callback) {\n            var promise = this;\n            var constructor = promise.constructor;\n            if (isFunction(callback)) {\n              return promise.then(function(value) {\n                return constructor.resolve(callback()).then(function() {\n                  return value;\n                });\n              }, function(reason) {\n                return constructor.resolve(callback()).then(function() {\n                  throw reason;\n                });\n              });\n            }\n            return promise.then(callback, callback);\n          };\n          return Promise2;\n        }();\n        Promise$1.prototype.then = then;\n        Promise$1.all = all;\n        Promise$1.race = race;\n        Promise$1.resolve = resolve$1;\n        Promise$1.reject = reject$1;\n        Promise$1._setScheduler = setScheduler;\n        Promise$1._setAsap = setAsap;\n        Promise$1._asap = asap;\n        function polyfill() {\n          var local = void 0;\n          if (typeof global !== 'undefined') {\n            local = global;\n          } else if (typeof self !== 'undefined') {\n            local = self;\n          } else {\n            try {\n              local = Function('return this')();\n            } catch (e) {\n              throw new Error('polyfill failed because global object is unavailable in this environment');\n            }\n          }\n          var P = local.Promise;\n          if (P) {\n            var promiseToString = null;\n            try {\n              promiseToString = Object.prototype.toString.call(P.resolve());\n            } catch (e) {}\n            if (promiseToString === '[object Promise]' && !P.cast) {\n              return;\n            }\n          }\n          local.Promise = Promise$1;\n        }\n        Promise$1.polyfill = polyfill;\n        Promise$1.Promise = Promise$1;\n        return Promise$1;\n      });\n    });\n    var require_typedarray = __commonJS(function(exports) {\n      var undefined2 = void 0;\n      var MAX_ARRAY_LENGTH = 1e5;\n      var ECMAScript = function() {\n        var opts = Object.prototype.toString, ophop = Object.prototype.hasOwnProperty;\n        return {\n          Class: function Class(v) {\n            return opts.call(v).replace(/^\\[object *|\\]$/g, '');\n          },\n          HasProperty: function HasProperty(o, p) {\n            return p in o;\n          },\n          HasOwnProperty: function HasOwnProperty(o, p) {\n            return ophop.call(o, p);\n          },\n          IsCallable: function IsCallable(o) {\n            return typeof o === 'function';\n          },\n          ToInt32: function ToInt32(v) {\n            return v >> 0;\n          },\n          ToUint32: function ToUint32(v) {\n            return v >>> 0;\n          }\n        };\n      }();\n      var LN2 = Math.LN2;\n      var abs = Math.abs;\n      var floor = Math.floor;\n      var log10 = Math.log;\n      var min = Math.min;\n      var pow = Math.pow;\n      var round = Math.round;\n      function configureProperties(obj) {\n        if (getOwnPropNames && defineProp) {\n          var props = getOwnPropNames(obj), i;\n          for (i = 0; i < props.length; i += 1) {\n            defineProp(obj, props[i], {\n              value: obj[props[i]],\n              writable: false,\n              enumerable: false,\n              configurable: false\n            });\n          }\n        }\n      }\n      var defineProp;\n      if (Object.defineProperty && function() {\n        try {\n          Object.defineProperty({}, 'x', {});\n          return true;\n        } catch (e) {\n          return false;\n        }\n      }()) {\n        defineProp = Object.defineProperty;\n      } else {\n        defineProp = function defineProp(o, p, desc) {\n          if (!o === Object(o)) {\n            throw new TypeError('Object.defineProperty called on non-object');\n          }\n          if (ECMAScript.HasProperty(desc, 'get') && Object.prototype.__defineGetter__) {\n            Object.prototype.__defineGetter__.call(o, p, desc.get);\n          }\n          if (ECMAScript.HasProperty(desc, 'set') && Object.prototype.__defineSetter__) {\n            Object.prototype.__defineSetter__.call(o, p, desc.set);\n          }\n          if (ECMAScript.HasProperty(desc, 'value')) {\n            o[p] = desc.value;\n          }\n          return o;\n        };\n      }\n      var getOwnPropNames = Object.getOwnPropertyNames || function(o) {\n        if (o !== Object(o)) {\n          throw new TypeError('Object.getOwnPropertyNames called on non-object');\n        }\n        var props = [], p;\n        for (p in o) {\n          if (ECMAScript.HasOwnProperty(o, p)) {\n            props.push(p);\n          }\n        }\n        return props;\n      };\n      function makeArrayAccessors(obj) {\n        if (!defineProp) {\n          return;\n        }\n        if (obj.length > MAX_ARRAY_LENGTH) {\n          throw new RangeError('Array too large for polyfill');\n        }\n        function makeArrayAccessor(index) {\n          defineProp(obj, index, {\n            get: function get() {\n              return obj._getter(index);\n            },\n            set: function set(v) {\n              obj._setter(index, v);\n            },\n            enumerable: true,\n            configurable: false\n          });\n        }\n        var i;\n        for (i = 0; i < obj.length; i += 1) {\n          makeArrayAccessor(i);\n        }\n      }\n      function as_signed(value, bits) {\n        var s = 32 - bits;\n        return value << s >> s;\n      }\n      function as_unsigned(value, bits) {\n        var s = 32 - bits;\n        return value << s >>> s;\n      }\n      function packI8(n) {\n        return [ n & 255 ];\n      }\n      function unpackI8(bytes) {\n        return as_signed(bytes[0], 8);\n      }\n      function packU8(n) {\n        return [ n & 255 ];\n      }\n      function unpackU8(bytes) {\n        return as_unsigned(bytes[0], 8);\n      }\n      function packU8Clamped(n) {\n        n = round(Number(n));\n        return [ n < 0 ? 0 : n > 255 ? 255 : n & 255 ];\n      }\n      function packI16(n) {\n        return [ n >> 8 & 255, n & 255 ];\n      }\n      function unpackI16(bytes) {\n        return as_signed(bytes[0] << 8 | bytes[1], 16);\n      }\n      function packU16(n) {\n        return [ n >> 8 & 255, n & 255 ];\n      }\n      function unpackU16(bytes) {\n        return as_unsigned(bytes[0] << 8 | bytes[1], 16);\n      }\n      function packI32(n) {\n        return [ n >> 24 & 255, n >> 16 & 255, n >> 8 & 255, n & 255 ];\n      }\n      function unpackI32(bytes) {\n        return as_signed(bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], 32);\n      }\n      function packU32(n) {\n        return [ n >> 24 & 255, n >> 16 & 255, n >> 8 & 255, n & 255 ];\n      }\n      function unpackU32(bytes) {\n        return as_unsigned(bytes[0] << 24 | bytes[1] << 16 | bytes[2] << 8 | bytes[3], 32);\n      }\n      function packIEEE754(v, ebits, fbits) {\n        var bias = (1 << ebits - 1) - 1, s, e, f, ln, i, bits, str, bytes;\n        function roundToEven(n) {\n          var w = floor(n), f2 = n - w;\n          if (f2 < .5) {\n            return w;\n          }\n          if (f2 > .5) {\n            return w + 1;\n          }\n          return w % 2 ? w + 1 : w;\n        }\n        if (v !== v) {\n          e = (1 << ebits) - 1;\n          f = pow(2, fbits - 1);\n          s = 0;\n        } else if (v === Infinity || v === -Infinity) {\n          e = (1 << ebits) - 1;\n          f = 0;\n          s = v < 0 ? 1 : 0;\n        } else if (v === 0) {\n          e = 0;\n          f = 0;\n          s = 1 / v === -Infinity ? 1 : 0;\n        } else {\n          s = v < 0;\n          v = abs(v);\n          if (v >= pow(2, 1 - bias)) {\n            e = min(floor(log10(v) / LN2), 1023);\n            f = roundToEven(v / pow(2, e) * pow(2, fbits));\n            if (f / pow(2, fbits) >= 2) {\n              e = e + 1;\n              f = 1;\n            }\n            if (e > bias) {\n              e = (1 << ebits) - 1;\n              f = 0;\n            } else {\n              e = e + bias;\n              f = f - pow(2, fbits);\n            }\n          } else {\n            e = 0;\n            f = roundToEven(v / pow(2, 1 - bias - fbits));\n          }\n        }\n        bits = [];\n        for (i = fbits; i; i -= 1) {\n          bits.push(f % 2 ? 1 : 0);\n          f = floor(f / 2);\n        }\n        for (i = ebits; i; i -= 1) {\n          bits.push(e % 2 ? 1 : 0);\n          e = floor(e / 2);\n        }\n        bits.push(s ? 1 : 0);\n        bits.reverse();\n        str = bits.join('');\n        bytes = [];\n        while (str.length) {\n          bytes.push(parseInt(str.substring(0, 8), 2));\n          str = str.substring(8);\n        }\n        return bytes;\n      }\n      function unpackIEEE754(bytes, ebits, fbits) {\n        var bits = [], i, j, b, str, bias, s, e, f;\n        for (i = bytes.length; i; i -= 1) {\n          b = bytes[i - 1];\n          for (j = 8; j; j -= 1) {\n            bits.push(b % 2 ? 1 : 0);\n            b = b >> 1;\n          }\n        }\n        bits.reverse();\n        str = bits.join('');\n        bias = (1 << ebits - 1) - 1;\n        s = parseInt(str.substring(0, 1), 2) ? -1 : 1;\n        e = parseInt(str.substring(1, 1 + ebits), 2);\n        f = parseInt(str.substring(1 + ebits), 2);\n        if (e === (1 << ebits) - 1) {\n          return f !== 0 ? NaN : s * Infinity;\n        } else if (e > 0) {\n          return s * pow(2, e - bias) * (1 + f / pow(2, fbits));\n        } else if (f !== 0) {\n          return s * pow(2, -(bias - 1)) * (f / pow(2, fbits));\n        } else {\n          return s < 0 ? -0 : 0;\n        }\n      }\n      function unpackF64(b) {\n        return unpackIEEE754(b, 11, 52);\n      }\n      function packF64(v) {\n        return packIEEE754(v, 11, 52);\n      }\n      function unpackF32(b) {\n        return unpackIEEE754(b, 8, 23);\n      }\n      function packF32(v) {\n        return packIEEE754(v, 8, 23);\n      }\n      (function() {\n        var ArrayBuffer = function ArrayBuffer2(length) {\n          length = ECMAScript.ToInt32(length);\n          if (length < 0) {\n            throw new RangeError('ArrayBuffer size is not a small enough positive integer');\n          }\n          this.byteLength = length;\n          this._bytes = [];\n          this._bytes.length = length;\n          var i;\n          for (i = 0; i < this.byteLength; i += 1) {\n            this._bytes[i] = 0;\n          }\n          configureProperties(this);\n        };\n        exports.ArrayBuffer = exports.ArrayBuffer || ArrayBuffer;\n        var ArrayBufferView = function ArrayBufferView2() {};\n        function makeConstructor(bytesPerElement, pack, unpack) {\n          var _ctor;\n          _ctor = function ctor(buffer, byteOffset, length) {\n            var array, sequence, i, s;\n            if (!arguments.length || typeof arguments[0] === 'number') {\n              this.length = ECMAScript.ToInt32(arguments[0]);\n              if (length < 0) {\n                throw new RangeError('ArrayBufferView size is not a small enough positive integer');\n              }\n              this.byteLength = this.length * this.BYTES_PER_ELEMENT;\n              this.buffer = new ArrayBuffer(this.byteLength);\n              this.byteOffset = 0;\n            } else if (_typeof(arguments[0]) === 'object' && arguments[0].constructor === _ctor) {\n              array = arguments[0];\n              this.length = array.length;\n              this.byteLength = this.length * this.BYTES_PER_ELEMENT;\n              this.buffer = new ArrayBuffer(this.byteLength);\n              this.byteOffset = 0;\n              for (i = 0; i < this.length; i += 1) {\n                this._setter(i, array._getter(i));\n              }\n            } else if (_typeof(arguments[0]) === 'object' && !(arguments[0] instanceof ArrayBuffer || ECMAScript.Class(arguments[0]) === 'ArrayBuffer')) {\n              sequence = arguments[0];\n              this.length = ECMAScript.ToUint32(sequence.length);\n              this.byteLength = this.length * this.BYTES_PER_ELEMENT;\n              this.buffer = new ArrayBuffer(this.byteLength);\n              this.byteOffset = 0;\n              for (i = 0; i < this.length; i += 1) {\n                s = sequence[i];\n                this._setter(i, Number(s));\n              }\n            } else if (_typeof(arguments[0]) === 'object' && (arguments[0] instanceof ArrayBuffer || ECMAScript.Class(arguments[0]) === 'ArrayBuffer')) {\n              this.buffer = buffer;\n              this.byteOffset = ECMAScript.ToUint32(byteOffset);\n              if (this.byteOffset > this.buffer.byteLength) {\n                throw new RangeError('byteOffset out of range');\n              }\n              if (this.byteOffset % this.BYTES_PER_ELEMENT) {\n                throw new RangeError('ArrayBuffer length minus the byteOffset is not a multiple of the element size.');\n              }\n              if (arguments.length < 3) {\n                this.byteLength = this.buffer.byteLength - this.byteOffset;\n                if (this.byteLength % this.BYTES_PER_ELEMENT) {\n                  throw new RangeError('length of buffer minus byteOffset not a multiple of the element size');\n                }\n                this.length = this.byteLength / this.BYTES_PER_ELEMENT;\n              } else {\n                this.length = ECMAScript.ToUint32(length);\n                this.byteLength = this.length * this.BYTES_PER_ELEMENT;\n              }\n              if (this.byteOffset + this.byteLength > this.buffer.byteLength) {\n                throw new RangeError('byteOffset and length reference an area beyond the end of the buffer');\n              }\n            } else {\n              throw new TypeError('Unexpected argument type(s)');\n            }\n            this.constructor = _ctor;\n            configureProperties(this);\n            makeArrayAccessors(this);\n          };\n          _ctor.prototype = new ArrayBufferView();\n          _ctor.prototype.BYTES_PER_ELEMENT = bytesPerElement;\n          _ctor.prototype._pack = pack;\n          _ctor.prototype._unpack = unpack;\n          _ctor.BYTES_PER_ELEMENT = bytesPerElement;\n          _ctor.prototype._getter = function(index) {\n            if (arguments.length < 1) {\n              throw new SyntaxError('Not enough arguments');\n            }\n            index = ECMAScript.ToUint32(index);\n            if (index >= this.length) {\n              return undefined2;\n            }\n            var bytes = [], i, o;\n            for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT; i < this.BYTES_PER_ELEMENT; i += 1, \n            o += 1) {\n              bytes.push(this.buffer._bytes[o]);\n            }\n            return this._unpack(bytes);\n          };\n          _ctor.prototype.get = _ctor.prototype._getter;\n          _ctor.prototype._setter = function(index, value) {\n            if (arguments.length < 2) {\n              throw new SyntaxError('Not enough arguments');\n            }\n            index = ECMAScript.ToUint32(index);\n            if (index >= this.length) {\n              return undefined2;\n            }\n            var bytes = this._pack(value), i, o;\n            for (i = 0, o = this.byteOffset + index * this.BYTES_PER_ELEMENT; i < this.BYTES_PER_ELEMENT; i += 1, \n            o += 1) {\n              this.buffer._bytes[o] = bytes[i];\n            }\n          };\n          _ctor.prototype.set = function(index, value) {\n            if (arguments.length < 1) {\n              throw new SyntaxError('Not enough arguments');\n            }\n            var array, sequence, offset, len, i, s, d, byteOffset, byteLength, tmp;\n            if (_typeof(arguments[0]) === 'object' && arguments[0].constructor === this.constructor) {\n              array = arguments[0];\n              offset = ECMAScript.ToUint32(arguments[1]);\n              if (offset + array.length > this.length) {\n                throw new RangeError('Offset plus length of array is out of range');\n              }\n              byteOffset = this.byteOffset + offset * this.BYTES_PER_ELEMENT;\n              byteLength = array.length * this.BYTES_PER_ELEMENT;\n              if (array.buffer === this.buffer) {\n                tmp = [];\n                for (i = 0, s = array.byteOffset; i < byteLength; i += 1, s += 1) {\n                  tmp[i] = array.buffer._bytes[s];\n                }\n                for (i = 0, d = byteOffset; i < byteLength; i += 1, d += 1) {\n                  this.buffer._bytes[d] = tmp[i];\n                }\n              } else {\n                for (i = 0, s = array.byteOffset, d = byteOffset; i < byteLength; i += 1, s += 1, \n                d += 1) {\n                  this.buffer._bytes[d] = array.buffer._bytes[s];\n                }\n              }\n            } else if (_typeof(arguments[0]) === 'object' && typeof arguments[0].length !== 'undefined') {\n              sequence = arguments[0];\n              len = ECMAScript.ToUint32(sequence.length);\n              offset = ECMAScript.ToUint32(arguments[1]);\n              if (offset + len > this.length) {\n                throw new RangeError('Offset plus length of array is out of range');\n              }\n              for (i = 0; i < len; i += 1) {\n                s = sequence[i];\n                this._setter(offset + i, Number(s));\n              }\n            } else {\n              throw new TypeError('Unexpected argument type(s)');\n            }\n          };\n          _ctor.prototype.subarray = function(start, end) {\n            function clamp(v, min2, max) {\n              return v < min2 ? min2 : v > max ? max : v;\n            }\n            start = ECMAScript.ToInt32(start);\n            end = ECMAScript.ToInt32(end);\n            if (arguments.length < 1) {\n              start = 0;\n            }\n            if (arguments.length < 2) {\n              end = this.length;\n            }\n            if (start < 0) {\n              start = this.length + start;\n            }\n            if (end < 0) {\n              end = this.length + end;\n            }\n            start = clamp(start, 0, this.length);\n            end = clamp(end, 0, this.length);\n            var len = end - start;\n            if (len < 0) {\n              len = 0;\n            }\n            return new this.constructor(this.buffer, this.byteOffset + start * this.BYTES_PER_ELEMENT, len);\n          };\n          return _ctor;\n        }\n        var Int8Array = makeConstructor(1, packI8, unpackI8);\n        var Uint8Array2 = makeConstructor(1, packU8, unpackU8);\n        var Uint8ClampedArray2 = makeConstructor(1, packU8Clamped, unpackU8);\n        var Int16Array = makeConstructor(2, packI16, unpackI16);\n        var Uint16Array = makeConstructor(2, packU16, unpackU16);\n        var Int32Array = makeConstructor(4, packI32, unpackI32);\n        var Uint32Array3 = makeConstructor(4, packU32, unpackU32);\n        var Float32Array = makeConstructor(4, packF32, unpackF32);\n        var Float64Array = makeConstructor(8, packF64, unpackF64);\n        exports.Int8Array = exports.Int8Array || Int8Array;\n        exports.Uint8Array = exports.Uint8Array || Uint8Array2;\n        exports.Uint8ClampedArray = exports.Uint8ClampedArray || Uint8ClampedArray2;\n        exports.Int16Array = exports.Int16Array || Int16Array;\n        exports.Uint16Array = exports.Uint16Array || Uint16Array;\n        exports.Int32Array = exports.Int32Array || Int32Array;\n        exports.Uint32Array = exports.Uint32Array || Uint32Array3;\n        exports.Float32Array = exports.Float32Array || Float32Array;\n        exports.Float64Array = exports.Float64Array || Float64Array;\n      })();\n      (function() {\n        function r(array, index) {\n          return ECMAScript.IsCallable(array.get) ? array.get(index) : array[index];\n        }\n        var IS_BIG_ENDIAN = function() {\n          var u16array = new exports.Uint16Array([ 4660 ]), u8array = new exports.Uint8Array(u16array.buffer);\n          return r(u8array, 0) === 18;\n        }();\n        var DataView = function DataView2(buffer, byteOffset, byteLength) {\n          if (arguments.length === 0) {\n            buffer = new exports.ArrayBuffer(0);\n          } else if (!(buffer instanceof exports.ArrayBuffer || ECMAScript.Class(buffer) === 'ArrayBuffer')) {\n            throw new TypeError('TypeError');\n          }\n          this.buffer = buffer || new exports.ArrayBuffer(0);\n          this.byteOffset = ECMAScript.ToUint32(byteOffset);\n          if (this.byteOffset > this.buffer.byteLength) {\n            throw new RangeError('byteOffset out of range');\n          }\n          if (arguments.length < 3) {\n            this.byteLength = this.buffer.byteLength - this.byteOffset;\n          } else {\n            this.byteLength = ECMAScript.ToUint32(byteLength);\n          }\n          if (this.byteOffset + this.byteLength > this.buffer.byteLength) {\n            throw new RangeError('byteOffset and length reference an area beyond the end of the buffer');\n          }\n          configureProperties(this);\n        };\n        function makeGetter(arrayType) {\n          return function(byteOffset, littleEndian) {\n            byteOffset = ECMAScript.ToUint32(byteOffset);\n            if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength) {\n              throw new RangeError('Array index out of range');\n            }\n            byteOffset += this.byteOffset;\n            var uint8Array = new exports.Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT), bytes = [], i;\n            for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1) {\n              bytes.push(r(uint8Array, i));\n            }\n            if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN)) {\n              bytes.reverse();\n            }\n            return r(new arrayType(new exports.Uint8Array(bytes).buffer), 0);\n          };\n        }\n        DataView.prototype.getUint8 = makeGetter(exports.Uint8Array);\n        DataView.prototype.getInt8 = makeGetter(exports.Int8Array);\n        DataView.prototype.getUint16 = makeGetter(exports.Uint16Array);\n        DataView.prototype.getInt16 = makeGetter(exports.Int16Array);\n        DataView.prototype.getUint32 = makeGetter(exports.Uint32Array);\n        DataView.prototype.getInt32 = makeGetter(exports.Int32Array);\n        DataView.prototype.getFloat32 = makeGetter(exports.Float32Array);\n        DataView.prototype.getFloat64 = makeGetter(exports.Float64Array);\n        function makeSetter(arrayType) {\n          return function(byteOffset, value, littleEndian) {\n            byteOffset = ECMAScript.ToUint32(byteOffset);\n            if (byteOffset + arrayType.BYTES_PER_ELEMENT > this.byteLength) {\n              throw new RangeError('Array index out of range');\n            }\n            var typeArray = new arrayType([ value ]), byteArray = new exports.Uint8Array(typeArray.buffer), bytes = [], i, byteView;\n            for (i = 0; i < arrayType.BYTES_PER_ELEMENT; i += 1) {\n              bytes.push(r(byteArray, i));\n            }\n            if (Boolean(littleEndian) === Boolean(IS_BIG_ENDIAN)) {\n              bytes.reverse();\n            }\n            byteView = new exports.Uint8Array(this.buffer, byteOffset, arrayType.BYTES_PER_ELEMENT);\n            byteView.set(bytes);\n          };\n        }\n        DataView.prototype.setUint8 = makeSetter(exports.Uint8Array);\n        DataView.prototype.setInt8 = makeSetter(exports.Int8Array);\n        DataView.prototype.setUint16 = makeSetter(exports.Uint16Array);\n        DataView.prototype.setInt16 = makeSetter(exports.Int16Array);\n        DataView.prototype.setUint32 = makeSetter(exports.Uint32Array);\n        DataView.prototype.setInt32 = makeSetter(exports.Int32Array);\n        DataView.prototype.setFloat32 = makeSetter(exports.Float32Array);\n        DataView.prototype.setFloat64 = makeSetter(exports.Float64Array);\n        exports.DataView = exports.DataView || DataView;\n      })();\n    });\n    var require_weakmap_polyfill = __commonJS(function(exports) {\n      (function(self2) {\n        'use strict';\n        if (self2.WeakMap) {\n          return;\n        }\n        var hasOwnProperty2 = Object.prototype.hasOwnProperty;\n        var defineProperty = function defineProperty(object, name, value) {\n          if (Object.defineProperty) {\n            Object.defineProperty(object, name, {\n              configurable: true,\n              writable: true,\n              value: value\n            });\n          } else {\n            object[name] = value;\n          }\n        };\n        self2.WeakMap = function() {\n          function WeakMap2() {\n            if (this === void 0) {\n              throw new TypeError('Constructor WeakMap requires \\'new\\'');\n            }\n            defineProperty(this, '_id', genId('_WeakMap'));\n            if (arguments.length > 0) {\n              throw new TypeError('WeakMap iterable is not supported');\n            }\n          }\n          defineProperty(WeakMap2.prototype, 'delete', function(key) {\n            checkInstance(this, 'delete');\n            if (!isObject(key)) {\n              return false;\n            }\n            var entry = key[this._id];\n            if (entry && entry[0] === key) {\n              delete key[this._id];\n              return true;\n            }\n            return false;\n          });\n          defineProperty(WeakMap2.prototype, 'get', function(key) {\n            checkInstance(this, 'get');\n            if (!isObject(key)) {\n              return void 0;\n            }\n            var entry = key[this._id];\n            if (entry && entry[0] === key) {\n              return entry[1];\n            }\n            return void 0;\n          });\n          defineProperty(WeakMap2.prototype, 'has', function(key) {\n            checkInstance(this, 'has');\n            if (!isObject(key)) {\n              return false;\n            }\n            var entry = key[this._id];\n            if (entry && entry[0] === key) {\n              return true;\n            }\n            return false;\n          });\n          defineProperty(WeakMap2.prototype, 'set', function(key, value) {\n            checkInstance(this, 'set');\n            if (!isObject(key)) {\n              throw new TypeError('Invalid value used as weak map key');\n            }\n            var entry = key[this._id];\n            if (entry && entry[0] === key) {\n              entry[1] = value;\n              return this;\n            }\n            defineProperty(key, this._id, [ key, value ]);\n            return this;\n          });\n          function checkInstance(x, methodName) {\n            if (!isObject(x) || !hasOwnProperty2.call(x, '_id')) {\n              throw new TypeError(methodName + ' method called on incompatible receiver ' + _typeof(x));\n            }\n          }\n          function genId(prefix) {\n            return prefix + '_' + rand() + '.' + rand();\n          }\n          function rand() {\n            return Math.random().toString().substring(2);\n          }\n          defineProperty(WeakMap2, '_polyfill', true);\n          return WeakMap2;\n        }();\n        function isObject(x) {\n          return Object(x) === x;\n        }\n      })(typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : exports);\n    });\n    var definitions = [ {\n      name: 'NA',\n      value: 'inapplicable',\n      priority: 0,\n      group: 'inapplicable'\n    }, {\n      name: 'PASS',\n      value: 'passed',\n      priority: 1,\n      group: 'passes'\n    }, {\n      name: 'CANTTELL',\n      value: 'cantTell',\n      priority: 2,\n      group: 'incomplete'\n    }, {\n      name: 'FAIL',\n      value: 'failed',\n      priority: 3,\n      group: 'violations'\n    } ];\n    var constants = {\n      helpUrlBase: 'https://dequeuniversity.com/rules/',\n      results: [],\n      resultGroups: [],\n      resultGroupMap: {},\n      impact: Object.freeze([ 'minor', 'moderate', 'serious', 'critical' ]),\n      preload: Object.freeze({\n        assets: [ 'cssom', 'media' ],\n        timeout: 1e4\n      }),\n      allOrigins: '<unsafe_all_origins>',\n      sameOrigin: '<same_origin>'\n    };\n    definitions.forEach(function(definition) {\n      var name = definition.name;\n      var value = definition.value;\n      var priority = definition.priority;\n      var group = definition.group;\n      constants[name] = value;\n      constants[name + '_PRIO'] = priority;\n      constants[name + '_GROUP'] = group;\n      constants.results[priority] = value;\n      constants.resultGroups[priority] = group;\n      constants.resultGroupMap[value] = group;\n    });\n    Object.freeze(constants.results);\n    Object.freeze(constants.resultGroups);\n    Object.freeze(constants.resultGroupMap);\n    Object.freeze(constants);\n    var constants_default = constants;\n    function log() {\n      if ((typeof console === 'undefined' ? 'undefined' : _typeof(console)) === 'object' && console.log) {\n        Function.prototype.apply.call(console.log, console, arguments);\n      }\n    }\n    var log_default = log;\n    var whitespaceRegex = /[\\t\\r\\n\\f]/g;\n    var AbstractVirtualNode = function() {\n      function AbstractVirtualNode() {\n        _classCallCheck(this, AbstractVirtualNode);\n        this.parent = void 0;\n      }\n      _createClass(AbstractVirtualNode, [ {\n        key: 'attr',\n        value: function attr() {\n          throw new Error('VirtualNode class must have an \"attr\" function');\n        }\n      }, {\n        key: 'hasAttr',\n        value: function hasAttr() {\n          throw new Error('VirtualNode class must have a \"hasAttr\" function');\n        }\n      }, {\n        key: 'hasClass',\n        value: function hasClass(className) {\n          var classAttr = this.attr('class');\n          if (!classAttr) {\n            return false;\n          }\n          var selector = ' ' + className + ' ';\n          return (' ' + classAttr + ' ').replace(whitespaceRegex, ' ').indexOf(selector) >= 0;\n        }\n      }, {\n        key: 'props',\n        get: function get() {\n          throw new Error('VirtualNode class must have a \"props\" object consisting of \"nodeType\" and \"nodeName\" properties');\n        }\n      }, {\n        key: 'attrNames',\n        get: function get() {\n          throw new Error('VirtualNode class must have an \"attrNames\" property');\n        }\n      } ]);\n      return AbstractVirtualNode;\n    }();\n    var abstract_virtual_node_default = AbstractVirtualNode;\n    var utils_exports = {};\n    __export(utils_exports, {\n      DqElement: function DqElement() {\n        return dq_element_default;\n      },\n      aggregate: function aggregate() {\n        return aggregate_default;\n      },\n      aggregateChecks: function aggregateChecks() {\n        return aggregate_checks_default;\n      },\n      aggregateNodeResults: function aggregateNodeResults() {\n        return aggregate_node_results_default;\n      },\n      aggregateResult: function aggregateResult() {\n        return aggregate_result_default;\n      },\n      areStylesSet: function areStylesSet() {\n        return are_styles_set_default;\n      },\n      assert: function assert() {\n        return assert_default;\n      },\n      checkHelper: function checkHelper() {\n        return check_helper_default;\n      },\n      clone: function clone() {\n        return clone_default;\n      },\n      closest: function closest() {\n        return closest_default;\n      },\n      collectResultsFromFrames: function collectResultsFromFrames() {\n        return collect_results_from_frames_default;\n      },\n      contains: function contains() {\n        return contains_default;\n      },\n      convertSelector: function convertSelector() {\n        return _convertSelector;\n      },\n      cssParser: function cssParser() {\n        return css_parser_default;\n      },\n      deepMerge: function deepMerge() {\n        return deep_merge_default;\n      },\n      escapeSelector: function escapeSelector() {\n        return escape_selector_default;\n      },\n      extendMetaData: function extendMetaData() {\n        return extend_meta_data_default;\n      },\n      filterHtmlAttrs: function filterHtmlAttrs() {\n        return filter_html_attrs_default;\n      },\n      finalizeRuleResult: function finalizeRuleResult() {\n        return finalize_result_default;\n      },\n      findBy: function findBy() {\n        return find_by_default;\n      },\n      getAllChecks: function getAllChecks() {\n        return get_all_checks_default;\n      },\n      getAncestry: function getAncestry() {\n        return _getAncestry;\n      },\n      getBaseLang: function getBaseLang() {\n        return get_base_lang_default;\n      },\n      getCheckMessage: function getCheckMessage() {\n        return get_check_message_default;\n      },\n      getCheckOption: function getCheckOption() {\n        return get_check_option_default;\n      },\n      getFlattenedTree: function getFlattenedTree() {\n        return get_flattened_tree_default;\n      },\n      getFriendlyUriEnd: function getFriendlyUriEnd() {\n        return get_friendly_uri_end_default;\n      },\n      getNodeAttributes: function getNodeAttributes() {\n        return get_node_attributes_default;\n      },\n      getNodeFromTree: function getNodeFromTree() {\n        return get_node_from_tree_default;\n      },\n      getPreloadConfig: function getPreloadConfig() {\n        return _getPreloadConfig;\n      },\n      getRootNode: function getRootNode() {\n        return get_root_node_default;\n      },\n      getRule: function getRule() {\n        return get_rule_default;\n      },\n      getScroll: function getScroll() {\n        return get_scroll_default;\n      },\n      getScrollState: function getScrollState() {\n        return get_scroll_state_default;\n      },\n      getSelector: function getSelector() {\n        return _getSelector;\n      },\n      getSelectorData: function getSelectorData() {\n        return _getSelectorData;\n      },\n      getShadowSelector: function getShadowSelector() {\n        return get_shadow_selector_default;\n      },\n      getStandards: function getStandards() {\n        return _getStandards;\n      },\n      getStyleSheetFactory: function getStyleSheetFactory() {\n        return get_stylesheet_factory_default;\n      },\n      getXpath: function getXpath() {\n        return get_xpath_default;\n      },\n      injectStyle: function injectStyle() {\n        return inject_style_default;\n      },\n      isHidden: function isHidden() {\n        return is_hidden_default;\n      },\n      isHtmlElement: function isHtmlElement() {\n        return is_html_element_default;\n      },\n      isNodeInContext: function isNodeInContext() {\n        return is_node_in_context_default;\n      },\n      isShadowRoot: function isShadowRoot() {\n        return is_shadow_root_default;\n      },\n      isValidLang: function isValidLang() {\n        return valid_langs_default;\n      },\n      isXHTML: function isXHTML() {\n        return is_xhtml_default;\n      },\n      matches: function matches() {\n        return matches_default;\n      },\n      matchesExpression: function matchesExpression() {\n        return _matchesExpression;\n      },\n      matchesSelector: function matchesSelector() {\n        return element_matches_default;\n      },\n      memoize: function memoize() {\n        return memoize_default;\n      },\n      mergeResults: function mergeResults() {\n        return merge_results_default;\n      },\n      nodeSorter: function nodeSorter() {\n        return node_sorter_default;\n      },\n      parseCrossOriginStylesheet: function parseCrossOriginStylesheet() {\n        return parse_crossorigin_stylesheet_default;\n      },\n      parseSameOriginStylesheet: function parseSameOriginStylesheet() {\n        return parse_sameorigin_stylesheet_default;\n      },\n      parseStylesheet: function parseStylesheet() {\n        return parse_stylesheet_default;\n      },\n      performanceTimer: function performanceTimer() {\n        return performance_timer_default;\n      },\n      pollyfillElementsFromPoint: function pollyfillElementsFromPoint() {\n        return _pollyfillElementsFromPoint;\n      },\n      preload: function preload() {\n        return preload_default;\n      },\n      preloadCssom: function preloadCssom() {\n        return preload_cssom_default;\n      },\n      preloadMedia: function preloadMedia() {\n        return preload_media_default;\n      },\n      processMessage: function processMessage() {\n        return process_message_default;\n      },\n      publishMetaData: function publishMetaData() {\n        return publish_metadata_default;\n      },\n      querySelectorAll: function querySelectorAll() {\n        return query_selector_all_default;\n      },\n      querySelectorAllFilter: function querySelectorAllFilter() {\n        return query_selector_all_filter_default;\n      },\n      queue: function queue() {\n        return queue_default;\n      },\n      respondable: function respondable() {\n        return _respondable;\n      },\n      ruleShouldRun: function ruleShouldRun() {\n        return rule_should_run_default;\n      },\n      select: function select() {\n        return select_default;\n      },\n      sendCommandToFrame: function sendCommandToFrame() {\n        return send_command_to_frame_default;\n      },\n      setScrollState: function setScrollState() {\n        return set_scroll_state_default;\n      },\n      shouldPreload: function shouldPreload() {\n        return _shouldPreload;\n      },\n      toArray: function toArray() {\n        return to_array_default;\n      },\n      tokenList: function tokenList() {\n        return token_list_default;\n      },\n      uniqueArray: function uniqueArray() {\n        return unique_array_default;\n      },\n      uuid: function uuid() {\n        return uuid_default;\n      },\n      validInputTypes: function validInputTypes() {\n        return valid_input_type_default;\n      },\n      validLangs: function validLangs() {\n        return _validLangs;\n      }\n    });\n    var errorTypes = Object.freeze([ 'EvalError', 'RangeError', 'ReferenceError', 'SyntaxError', 'TypeError', 'URIError' ]);\n    function stringifyMessage(_ref) {\n      var topic = _ref.topic, channelId = _ref.channelId, message = _ref.message, messageId = _ref.messageId, keepalive = _ref.keepalive;\n      var data2 = {\n        channelId: channelId,\n        topic: topic,\n        messageId: messageId,\n        keepalive: !!keepalive,\n        source: getSource()\n      };\n      if (message instanceof Error) {\n        data2.error = {\n          name: message.name,\n          message: message.message,\n          stack: message.stack\n        };\n      } else {\n        data2.payload = message;\n      }\n      return JSON.stringify(data2);\n    }\n    function parseMessage(dataString) {\n      var data2;\n      try {\n        data2 = JSON.parse(dataString);\n      } catch (e) {\n        return;\n      }\n      if (!isRespondableMessage(data2)) {\n        return;\n      }\n      var _data = data2, topic = _data.topic, channelId = _data.channelId, messageId = _data.messageId, keepalive = _data.keepalive;\n      var message = _typeof(data2.error) === 'object' ? buildErrorObject(data2.error) : data2.payload;\n      return {\n        topic: topic,\n        message: message,\n        messageId: messageId,\n        channelId: channelId,\n        keepalive: !!keepalive\n      };\n    }\n    function isRespondableMessage(postedMessage) {\n      return _typeof(postedMessage) === 'object' && typeof postedMessage.channelId === 'string' && postedMessage.source === getSource();\n    }\n    function buildErrorObject(error) {\n      var msg = error.message || 'Unknown error occurred';\n      var errorName = errorTypes.includes(error.name) ? error.name : 'Error';\n      var ErrConstructor = window[errorName] || Error;\n      if (error.stack) {\n        msg += '\\n' + error.stack.replace(error.message, '');\n      }\n      return new ErrConstructor(msg);\n    }\n    function getSource() {\n      var application = 'axeAPI';\n      var version = '';\n      if (typeof axe !== 'undefined' && axe._audit && axe._audit.application) {\n        application = axe._audit.application;\n      }\n      if (typeof axe !== 'undefined') {\n        version = axe.version;\n      }\n      return application + '.' + version;\n    }\n    function assert(bool, message) {\n      if (!bool) {\n        throw new Error(message);\n      }\n    }\n    var assert_default = assert;\n    function assertIsParentWindow(win) {\n      assetNotGlobalWindow(win);\n      assert_default(window.parent === win, 'Source of the response must be the parent window.');\n    }\n    function assertIsFrameWindow(win) {\n      assetNotGlobalWindow(win);\n      assert_default(win.parent === window, 'Respondable target must be a frame in the current window');\n    }\n    function assetNotGlobalWindow(win) {\n      assert_default(window !== win, 'Messages can not be sent to the same window.');\n    }\n    var channels = {};\n    function storeReplyHandler(channelId, replyHandler) {\n      var sendToParent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n      assert_default(!channels[channelId], 'A replyHandler already exists for this message channel.');\n      channels[channelId] = {\n        replyHandler: replyHandler,\n        sendToParent: sendToParent\n      };\n    }\n    function getReplyHandler(topic) {\n      return channels[topic];\n    }\n    function deleteReplyHandler(channelId) {\n      delete channels[channelId];\n    }\n    var uuid;\n    var _rng;\n    var _crypto = window.crypto || window.msCrypto;\n    if (!_rng && _crypto && _crypto.getRandomValues) {\n      var _rnds8 = new Uint8Array(16);\n      _rng = function whatwgRNG() {\n        _crypto.getRandomValues(_rnds8);\n        return _rnds8;\n      };\n    }\n    try {\n      if (!_rng) {\n        var nodeCrypto = require('crypto');\n        _rng = function _rng() {\n          return nodeCrypto.randomBytes(16);\n        };\n      }\n    } catch (e) {}\n    if (!_rng) {\n      var _rnds = new Array(16);\n      _rng = function _rng() {\n        for (var i = 0, r; i < 16; i++) {\n          if ((i & 3) === 0) {\n            r = Math.random() * 4294967296;\n          }\n          _rnds[i] = r >>> ((i & 3) << 3) & 255;\n        }\n        return _rnds;\n      };\n    }\n    var BufferClass = typeof window.Buffer == 'function' ? window.Buffer : Array;\n    var _byteToHex = [];\n    var _hexToByte = {};\n    for (var i = 0; i < 256; i++) {\n      _byteToHex[i] = (i + 256).toString(16).substr(1);\n      _hexToByte[_byteToHex[i]] = i;\n    }\n    function parse(s, buf, offset) {\n      var i = buf && offset || 0, ii = 0;\n      buf = buf || [];\n      s.toLowerCase().replace(/[0-9a-f]{2}/g, function(oct) {\n        if (ii < 16) {\n          buf[i + ii++] = _hexToByte[oct];\n        }\n      });\n      while (ii < 16) {\n        buf[i + ii++] = 0;\n      }\n      return buf;\n    }\n    function unparse(buf, offset) {\n      var i = offset || 0, bth = _byteToHex;\n      return bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + '-' + bth[buf[i++]] + bth[buf[i++]] + '-' + bth[buf[i++]] + bth[buf[i++]] + '-' + bth[buf[i++]] + bth[buf[i++]] + '-' + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]];\n    }\n    var _seedBytes = _rng();\n    var _nodeId = [ _seedBytes[0] | 1, _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5] ];\n    var _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 16383;\n    var _lastMSecs = 0;\n    var _lastNSecs = 0;\n    function v1(options, buf, offset) {\n      var i = buf && offset || 0;\n      var b = buf || [];\n      options = options || {};\n      var clockseq = options.clockseq != null ? options.clockseq : _clockseq;\n      var msecs = options.msecs != null ? options.msecs : new Date().getTime();\n      var nsecs = options.nsecs != null ? options.nsecs : _lastNSecs + 1;\n      var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 1e4;\n      if (dt < 0 && options.clockseq == null) {\n        clockseq = clockseq + 1 & 16383;\n      }\n      if ((dt < 0 || msecs > _lastMSecs) && options.nsecs == null) {\n        nsecs = 0;\n      }\n      if (nsecs >= 1e4) {\n        throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n      }\n      _lastMSecs = msecs;\n      _lastNSecs = nsecs;\n      _clockseq = clockseq;\n      msecs += 122192928e5;\n      var tl = ((msecs & 268435455) * 1e4 + nsecs) % 4294967296;\n      b[i++] = tl >>> 24 & 255;\n      b[i++] = tl >>> 16 & 255;\n      b[i++] = tl >>> 8 & 255;\n      b[i++] = tl & 255;\n      var tmh = msecs / 4294967296 * 1e4 & 268435455;\n      b[i++] = tmh >>> 8 & 255;\n      b[i++] = tmh & 255;\n      b[i++] = tmh >>> 24 & 15 | 16;\n      b[i++] = tmh >>> 16 & 255;\n      b[i++] = clockseq >>> 8 | 128;\n      b[i++] = clockseq & 255;\n      var node = options.node || _nodeId;\n      for (var n = 0; n < 6; n++) {\n        b[i + n] = node[n];\n      }\n      return buf ? buf : unparse(b);\n    }\n    function v4(options, buf, offset) {\n      var i = buf && offset || 0;\n      if (typeof options == 'string') {\n        buf = options == 'binary' ? new BufferClass(16) : null;\n        options = null;\n      }\n      options = options || {};\n      var rnds = options.random || (options.rng || _rng)();\n      rnds[6] = rnds[6] & 15 | 64;\n      rnds[8] = rnds[8] & 63 | 128;\n      if (buf) {\n        for (var ii = 0; ii < 16; ii++) {\n          buf[i + ii] = rnds[ii];\n        }\n      }\n      return buf || unparse(rnds);\n    }\n    uuid = v4;\n    uuid.v1 = v1;\n    uuid.v4 = v4;\n    uuid.parse = parse;\n    uuid.unparse = unparse;\n    uuid.BufferClass = BufferClass;\n    axe._uuid = v1();\n    var uuid_default = v4;\n    var messageIds = [];\n    function createMessageId() {\n      var uuid5 = ''.concat(v4(), ':').concat(v4());\n      if (messageIds.includes(uuid5)) {\n        return createMessageId();\n      }\n      messageIds.push(uuid5);\n      return uuid5;\n    }\n    function isNewMessage(uuid5) {\n      if (messageIds.includes(uuid5)) {\n        return false;\n      }\n      messageIds.push(uuid5);\n      return true;\n    }\n    function postMessage(win, data2, sendToParent, replyHandler) {\n      if (typeof replyHandler === 'function') {\n        storeReplyHandler(data2.channelId, replyHandler, sendToParent);\n      }\n      sendToParent ? assertIsParentWindow(win) : assertIsFrameWindow(win);\n      if (data2.message instanceof Error && !sendToParent) {\n        axe.log(data2.message);\n        return false;\n      }\n      var dataString = stringifyMessage(_extends({\n        messageId: createMessageId()\n      }, data2));\n      var allowedOrigins = axe._audit.allowedOrigins;\n      if (!allowedOrigins || !allowedOrigins.length) {\n        return false;\n      }\n      allowedOrigins.forEach(function(origin) {\n        try {\n          win.postMessage(dataString, origin);\n        } catch (err2) {\n          if (err2 instanceof win.DOMException) {\n            throw new Error('allowedOrigins value \"'.concat(origin, '\" is not a valid origin'));\n          }\n          throw err2;\n        }\n      });\n      return true;\n    }\n    function processError(win, error, channelId) {\n      if (!win.parent !== window) {\n        return axe.log(error);\n      }\n      try {\n        postMessage(win, {\n          topic: null,\n          channelId: channelId,\n          message: error,\n          messageId: createMessageId(),\n          keepalive: true\n        }, true);\n      } catch (err2) {\n        return axe.log(err2);\n      }\n    }\n    function createResponder(win, channelId) {\n      var sendToParent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n      return function respond(message, keepalive, replyHandler) {\n        var data2 = {\n          channelId: channelId,\n          message: message,\n          keepalive: keepalive\n        };\n        postMessage(win, data2, sendToParent, replyHandler);\n      };\n    }\n    function originIsAllowed(origin) {\n      var allowedOrigins = axe._audit.allowedOrigins;\n      return allowedOrigins && allowedOrigins.includes('*') || allowedOrigins.includes(origin);\n    }\n    function messageHandler(_ref2, topicHandler) {\n      var origin = _ref2.origin, dataString = _ref2.data, win = _ref2.source;\n      var data2 = parseMessage(dataString) || {};\n      var channelId = data2.channelId, message = data2.message, messageId = data2.messageId;\n      if (!originIsAllowed(origin) || !isNewMessage(messageId)) {\n        return;\n      }\n      if (message instanceof Error && win.parent !== window) {\n        axe.log(message);\n        return false;\n      }\n      try {\n        if (data2.topic) {\n          var responder = createResponder(win, channelId);\n          assertIsParentWindow(win);\n          topicHandler(data2, responder);\n        } else {\n          callReplyHandler(win, data2);\n        }\n      } catch (error) {\n        processError(win, error, channelId);\n      }\n    }\n    function callReplyHandler(win, data2) {\n      var channelId = data2.channelId, message = data2.message, keepalive = data2.keepalive;\n      var _ref3 = getReplyHandler(channelId) || {}, replyHandler = _ref3.replyHandler, sendToParent = _ref3.sendToParent;\n      if (!replyHandler) {\n        return;\n      }\n      sendToParent ? assertIsParentWindow(win) : assertIsFrameWindow(win);\n      var responder = createResponder(win, channelId, sendToParent);\n      if (!keepalive && channelId) {\n        deleteReplyHandler(channelId);\n      }\n      try {\n        replyHandler(message, keepalive, responder);\n      } catch (error) {\n        axe.log(error);\n        responder(error, keepalive);\n      }\n    }\n    var frameMessenger = {\n      open: function open(topicHandler) {\n        if (typeof window.addEventListener !== 'function') {\n          return;\n        }\n        var handler = function handler(messageEvent) {\n          messageHandler(messageEvent, topicHandler);\n        };\n        window.addEventListener('message', handler, false);\n        return function() {\n          window.removeEventListener('message', handler, false);\n        };\n      },\n      post: function post(win, data2, replyHandler) {\n        if (typeof window.addEventListener !== 'function') {\n          return false;\n        }\n        return postMessage(win, data2, false, replyHandler);\n      }\n    };\n    function setDefaultFrameMessenger(respondable5) {\n      respondable5.updateMessenger(frameMessenger);\n    }\n    function aggregate(map, values, initial) {\n      values = values.slice();\n      if (initial) {\n        values.push(initial);\n      }\n      var sorting = values.map(function(val) {\n        return map.indexOf(val);\n      }).sort();\n      return map[sorting.pop()];\n    }\n    var aggregate_default = aggregate;\n    var CANTTELL_PRIO = constants_default.CANTTELL_PRIO, FAIL_PRIO = constants_default.FAIL_PRIO;\n    var checkMap = [];\n    checkMap[constants_default.PASS_PRIO] = true;\n    checkMap[constants_default.CANTTELL_PRIO] = null;\n    checkMap[constants_default.FAIL_PRIO] = false;\n    var checkTypes = [ 'any', 'all', 'none' ];\n    function anyAllNone(obj, functor) {\n      return checkTypes.reduce(function(out, type) {\n        out[type] = (obj[type] || []).map(function(val) {\n          return functor(val, type);\n        });\n        return out;\n      }, {});\n    }\n    function aggregateChecks(nodeResOriginal) {\n      var nodeResult = Object.assign({}, nodeResOriginal);\n      anyAllNone(nodeResult, function(check4, type) {\n        var i = typeof check4.result === 'undefined' ? -1 : checkMap.indexOf(check4.result);\n        check4.priority = i !== -1 ? i : constants_default.CANTTELL_PRIO;\n        if (type === 'none') {\n          if (check4.priority === constants_default.PASS_PRIO) {\n            check4.priority = constants_default.FAIL_PRIO;\n          } else if (check4.priority === constants_default.FAIL_PRIO) {\n            check4.priority = constants_default.PASS_PRIO;\n          }\n        }\n      });\n      var priorities = {\n        all: nodeResult.all.reduce(function(a, b) {\n          return Math.max(a, b.priority);\n        }, 0),\n        none: nodeResult.none.reduce(function(a, b) {\n          return Math.max(a, b.priority);\n        }, 0),\n        any: nodeResult.any.reduce(function(a, b) {\n          return Math.min(a, b.priority);\n        }, 4) % 4\n      };\n      nodeResult.priority = Math.max(priorities.all, priorities.none, priorities.any);\n      var impacts = [];\n      checkTypes.forEach(function(type) {\n        nodeResult[type] = nodeResult[type].filter(function(check4) {\n          return check4.priority === nodeResult.priority && check4.priority === priorities[type];\n        });\n        nodeResult[type].forEach(function(check4) {\n          return impacts.push(check4.impact);\n        });\n      });\n      if ([ CANTTELL_PRIO, FAIL_PRIO ].includes(nodeResult.priority)) {\n        nodeResult.impact = aggregate_default(constants_default.impact, impacts);\n      } else {\n        nodeResult.impact = null;\n      }\n      anyAllNone(nodeResult, function(c) {\n        delete c.result;\n        delete c.priority;\n      });\n      nodeResult.result = constants_default.results[nodeResult.priority];\n      delete nodeResult.priority;\n      return nodeResult;\n    }\n    var aggregate_checks_default = aggregateChecks;\n    function finalizeRuleResult(ruleResult) {\n      var rule3 = axe._audit.rules.find(function(rule4) {\n        return rule4.id === ruleResult.id;\n      });\n      if (rule3 && rule3.impact) {\n        ruleResult.nodes.forEach(function(node) {\n          [ 'any', 'all', 'none' ].forEach(function(checkType) {\n            (node[checkType] || []).forEach(function(checkResult) {\n              checkResult.impact = rule3.impact;\n            });\n          });\n        });\n      }\n      Object.assign(ruleResult, aggregate_node_results_default(ruleResult.nodes));\n      delete ruleResult.nodes;\n      return ruleResult;\n    }\n    var finalize_result_default = finalizeRuleResult;\n    function aggregateNodeResults(nodeResults) {\n      var ruleResult = {};\n      nodeResults = nodeResults.map(function(nodeResult) {\n        if (nodeResult.any && nodeResult.all && nodeResult.none) {\n          return aggregate_checks_default(nodeResult);\n        } else if (Array.isArray(nodeResult.node)) {\n          return finalize_result_default(nodeResult);\n        } else {\n          throw new TypeError('Invalid Result type');\n        }\n      });\n      if (nodeResults && nodeResults.length) {\n        var resultList = nodeResults.map(function(node) {\n          return node.result;\n        });\n        ruleResult.result = aggregate_default(constants_default.results, resultList, ruleResult.result);\n      } else {\n        ruleResult.result = 'inapplicable';\n      }\n      constants_default.resultGroups.forEach(function(group) {\n        return ruleResult[group] = [];\n      });\n      nodeResults.forEach(function(nodeResult) {\n        var groupName = constants_default.resultGroupMap[nodeResult.result];\n        ruleResult[groupName].push(nodeResult);\n      });\n      var impactGroup = constants_default.FAIL_GROUP;\n      if (ruleResult[impactGroup].length === 0) {\n        impactGroup = constants_default.CANTTELL_GROUP;\n      }\n      if (ruleResult[impactGroup].length > 0) {\n        var impactList = ruleResult[impactGroup].map(function(failure) {\n          return failure.impact;\n        });\n        ruleResult.impact = aggregate_default(constants_default.impact, impactList) || null;\n      } else {\n        ruleResult.impact = null;\n      }\n      return ruleResult;\n    }\n    var aggregate_node_results_default = aggregateNodeResults;\n    function copyToGroup(resultObject, subResult, group) {\n      var resultCopy = Object.assign({}, subResult);\n      resultCopy.nodes = (resultCopy[group] || []).concat();\n      constants_default.resultGroups.forEach(function(group2) {\n        delete resultCopy[group2];\n      });\n      resultObject[group].push(resultCopy);\n    }\n    function aggregateResult(results) {\n      var resultObject = {};\n      constants_default.resultGroups.forEach(function(groupName) {\n        return resultObject[groupName] = [];\n      });\n      results.forEach(function(subResult) {\n        if (subResult.error) {\n          copyToGroup(resultObject, subResult, constants_default.CANTTELL_GROUP);\n        } else if (subResult.result === constants_default.NA) {\n          copyToGroup(resultObject, subResult, constants_default.NA_GROUP);\n        } else {\n          constants_default.resultGroups.forEach(function(group) {\n            if (Array.isArray(subResult[group]) && subResult[group].length > 0) {\n              copyToGroup(resultObject, subResult, group);\n            }\n          });\n        }\n      });\n      return resultObject;\n    }\n    var aggregate_result_default = aggregateResult;\n    function areStylesSet(el, styles, stopAt) {\n      var styl = window.getComputedStyle(el, null);\n      if (!styl) {\n        return false;\n      }\n      for (var i = 0; i < styles.length; ++i) {\n        var att = styles[i];\n        if (styl.getPropertyValue(att.property) === att.value) {\n          return true;\n        }\n      }\n      if (!el.parentNode || el.nodeName.toUpperCase() === stopAt.toUpperCase()) {\n        return false;\n      }\n      return areStylesSet(el.parentNode, styles, stopAt);\n    }\n    var are_styles_set_default = areStylesSet;\n    function toArray(thing) {\n      return Array.prototype.slice.call(thing);\n    }\n    var to_array_default = toArray;\n    function escapeSelector(value) {\n      var string = String(value);\n      var length = string.length;\n      var index = -1;\n      var codeUnit;\n      var result = '';\n      var firstCodeUnit = string.charCodeAt(0);\n      while (++index < length) {\n        codeUnit = string.charCodeAt(index);\n        if (codeUnit == 0) {\n          result += '\\ufffd';\n          continue;\n        }\n        if (codeUnit >= 1 && codeUnit <= 31 || codeUnit == 127 || index == 0 && codeUnit >= 48 && codeUnit <= 57 || index == 1 && codeUnit >= 48 && codeUnit <= 57 && firstCodeUnit == 45) {\n          result += '\\\\' + codeUnit.toString(16) + ' ';\n          continue;\n        }\n        if (index == 0 && length == 1 && codeUnit == 45) {\n          result += '\\\\' + string.charAt(index);\n          continue;\n        }\n        if (codeUnit >= 128 || codeUnit == 45 || codeUnit == 95 || codeUnit >= 48 && codeUnit <= 57 || codeUnit >= 65 && codeUnit <= 90 || codeUnit >= 97 && codeUnit <= 122) {\n          result += string.charAt(index);\n          continue;\n        }\n        result += '\\\\' + string.charAt(index);\n      }\n      return result;\n    }\n    var escape_selector_default = escapeSelector;\n    function isMostlyNumbers() {\n      var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n      return str.length !== 0 && (str.match(/[0-9]/g) || '').length >= str.length / 2;\n    }\n    function splitString(str, splitIndex) {\n      return [ str.substring(0, splitIndex), str.substring(splitIndex) ];\n    }\n    function trimRight(str) {\n      return str.replace(/\\s+$/, '');\n    }\n    function uriParser(url) {\n      var original = url;\n      var protocol = '', domain = '', port = '', path = '', query = '', hash = '';\n      if (url.includes('#')) {\n        var _splitString = splitString(url, url.indexOf('#'));\n        var _splitString2 = _slicedToArray(_splitString, 2);\n        url = _splitString2[0];\n        hash = _splitString2[1];\n      }\n      if (url.includes('?')) {\n        var _splitString3 = splitString(url, url.indexOf('?'));\n        var _splitString4 = _slicedToArray(_splitString3, 2);\n        url = _splitString4[0];\n        query = _splitString4[1];\n      }\n      if (url.includes('://')) {\n        var _url$split = url.split('://');\n        var _url$split2 = _slicedToArray(_url$split, 2);\n        protocol = _url$split2[0];\n        url = _url$split2[1];\n        var _splitString5 = splitString(url, url.indexOf('/'));\n        var _splitString6 = _slicedToArray(_splitString5, 2);\n        domain = _splitString6[0];\n        url = _splitString6[1];\n      } else if (url.substr(0, 2) === '//') {\n        url = url.substr(2);\n        var _splitString7 = splitString(url, url.indexOf('/'));\n        var _splitString8 = _slicedToArray(_splitString7, 2);\n        domain = _splitString8[0];\n        url = _splitString8[1];\n      }\n      if (domain.substr(0, 4) === 'www.') {\n        domain = domain.substr(4);\n      }\n      if (domain && domain.includes(':')) {\n        var _splitString9 = splitString(domain, domain.indexOf(':'));\n        var _splitString10 = _slicedToArray(_splitString9, 2);\n        domain = _splitString10[0];\n        port = _splitString10[1];\n      }\n      path = url;\n      return {\n        original: original,\n        protocol: protocol,\n        domain: domain,\n        port: port,\n        path: path,\n        query: query,\n        hash: hash\n      };\n    }\n    function getFriendlyUriEnd() {\n      var uri = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      if (uri.length <= 1 || uri.substr(0, 5) === 'data:' || uri.substr(0, 11) === 'javascript:' || uri.includes('?')) {\n        return;\n      }\n      var currentDomain = options.currentDomain, _options$maxLength = options.maxLength, maxLength = _options$maxLength === void 0 ? 25 : _options$maxLength;\n      var _uriParser = uriParser(uri), path = _uriParser.path, domain = _uriParser.domain, hash = _uriParser.hash;\n      var pathEnd = path.substr(path.substr(0, path.length - 2).lastIndexOf('/') + 1);\n      if (hash) {\n        if (pathEnd && (pathEnd + hash).length <= maxLength) {\n          return trimRight(pathEnd + hash);\n        } else if (pathEnd.length < 2 && hash.length > 2 && hash.length <= maxLength) {\n          return trimRight(hash);\n        } else {\n          return;\n        }\n      } else if (domain && domain.length < maxLength && path.length <= 1) {\n        return trimRight(domain + path);\n      }\n      if (path === '/' + pathEnd && domain && currentDomain && domain !== currentDomain && (domain + path).length <= maxLength) {\n        return trimRight(domain + path);\n      }\n      var lastDotIndex = pathEnd.lastIndexOf('.');\n      if ((lastDotIndex === -1 || lastDotIndex > 1) && (lastDotIndex !== -1 || pathEnd.length > 2) && pathEnd.length <= maxLength && !pathEnd.match(/index(\\.[a-zA-Z]{2-4})?/) && !isMostlyNumbers(pathEnd)) {\n        return trimRight(pathEnd);\n      }\n    }\n    var get_friendly_uri_end_default = getFriendlyUriEnd;\n    function getNodeAttributes(node) {\n      if (node.attributes instanceof window.NamedNodeMap) {\n        return node.attributes;\n      }\n      return node.cloneNode(false).attributes;\n    }\n    var get_node_attributes_default = getNodeAttributes;\n    var matchesSelector = function() {\n      var method;\n      function getMethod(node) {\n        var index, candidate, candidates = [ 'matches', 'matchesSelector', 'mozMatchesSelector', 'webkitMatchesSelector', 'msMatchesSelector' ], length = candidates.length;\n        for (index = 0; index < length; index++) {\n          candidate = candidates[index];\n          if (node[candidate]) {\n            return candidate;\n          }\n        }\n      }\n      return function(node, selector) {\n        if (!method || !node[method]) {\n          method = getMethod(node);\n        }\n        if (node[method]) {\n          return node[method](selector);\n        }\n        return false;\n      };\n    }();\n    var element_matches_default = matchesSelector;\n    function isXHTML(doc) {\n      if (!doc.createElement) {\n        return false;\n      }\n      return doc.createElement('A').localName === 'A';\n    }\n    var is_xhtml_default = isXHTML;\n    function getShadowSelector(generateSelector2, elm) {\n      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      if (!elm) {\n        return '';\n      }\n      var doc = elm.getRootNode && elm.getRootNode() || document;\n      if (doc.nodeType !== 11) {\n        return generateSelector2(elm, options, doc);\n      }\n      var stack = [];\n      while (doc.nodeType === 11) {\n        if (!doc.host) {\n          return '';\n        }\n        stack.unshift({\n          elm: elm,\n          doc: doc\n        });\n        elm = doc.host;\n        doc = elm.getRootNode();\n      }\n      stack.unshift({\n        elm: elm,\n        doc: doc\n      });\n      return stack.map(function(_ref4) {\n        var elm2 = _ref4.elm, doc2 = _ref4.doc;\n        return generateSelector2(elm2, options, doc2);\n      });\n    }\n    var get_shadow_selector_default = getShadowSelector;\n    var xhtml;\n    var ignoredAttributes = [ 'class', 'style', 'id', 'selected', 'checked', 'disabled', 'tabindex', 'aria-checked', 'aria-selected', 'aria-invalid', 'aria-activedescendant', 'aria-busy', 'aria-disabled', 'aria-expanded', 'aria-grabbed', 'aria-pressed', 'aria-valuenow' ];\n    var MAXATTRIBUTELENGTH = 31;\n    function getAttributeNameValue(node, at) {\n      var name = at.name;\n      var atnv;\n      if (name.indexOf('href') !== -1 || name.indexOf('src') !== -1) {\n        var friendly = get_friendly_uri_end_default(node.getAttribute(name));\n        if (friendly) {\n          var value = encodeURI(friendly);\n          if (value) {\n            atnv = escape_selector_default(at.name) + '$=\"' + escape_selector_default(value) + '\"';\n          } else {\n            return;\n          }\n        } else {\n          atnv = escape_selector_default(at.name) + '=\"' + escape_selector_default(node.getAttribute(name)) + '\"';\n        }\n      } else {\n        atnv = escape_selector_default(name) + '=\"' + escape_selector_default(at.value) + '\"';\n      }\n      return atnv;\n    }\n    function countSort(a, b) {\n      return a.count < b.count ? -1 : a.count === b.count ? 0 : 1;\n    }\n    function filterAttributes(at) {\n      return !ignoredAttributes.includes(at.name) && at.name.indexOf(':') === -1 && (!at.value || at.value.length < MAXATTRIBUTELENGTH);\n    }\n    function _getSelectorData(domTree) {\n      var data2 = {\n        classes: {},\n        tags: {},\n        attributes: {}\n      };\n      domTree = Array.isArray(domTree) ? domTree : [ domTree ];\n      var currentLevel = domTree.slice();\n      var stack = [];\n      var _loop2 = function _loop2() {\n        var current = currentLevel.pop();\n        var node = current.actualNode;\n        if (!!node.querySelectorAll) {\n          var tag = node.nodeName;\n          if (data2.tags[tag]) {\n            data2.tags[tag]++;\n          } else {\n            data2.tags[tag] = 1;\n          }\n          if (node.classList) {\n            Array.from(node.classList).forEach(function(cl) {\n              var ind = escape_selector_default(cl);\n              if (data2.classes[ind]) {\n                data2.classes[ind]++;\n              } else {\n                data2.classes[ind] = 1;\n              }\n            });\n          }\n          if (node.hasAttributes()) {\n            Array.from(get_node_attributes_default(node)).filter(filterAttributes).forEach(function(at) {\n              var atnv = getAttributeNameValue(node, at);\n              if (atnv) {\n                if (data2.attributes[atnv]) {\n                  data2.attributes[atnv]++;\n                } else {\n                  data2.attributes[atnv] = 1;\n                }\n              }\n            });\n          }\n        }\n        if (current.children.length) {\n          stack.push(currentLevel);\n          currentLevel = current.children.slice();\n        }\n        while (!currentLevel.length && stack.length) {\n          currentLevel = stack.pop();\n        }\n      };\n      while (currentLevel.length) {\n        _loop2();\n      }\n      return data2;\n    }\n    function uncommonClasses(node, selectorData) {\n      var retVal = [];\n      var classData = selectorData.classes;\n      var tagData = selectorData.tags;\n      if (node.classList) {\n        Array.from(node.classList).forEach(function(cl) {\n          var ind = escape_selector_default(cl);\n          if (classData[ind] < tagData[node.nodeName]) {\n            retVal.push({\n              name: ind,\n              count: classData[ind],\n              species: 'class'\n            });\n          }\n        });\n      }\n      return retVal.sort(countSort);\n    }\n    function getNthChildString(elm, selector) {\n      var siblings = elm.parentNode && Array.from(elm.parentNode.children || '') || [];\n      var hasMatchingSiblings = siblings.find(function(sibling) {\n        return sibling !== elm && element_matches_default(sibling, selector);\n      });\n      if (hasMatchingSiblings) {\n        var nthChild = 1 + siblings.indexOf(elm);\n        return ':nth-child(' + nthChild + ')';\n      } else {\n        return '';\n      }\n    }\n    function getElmId(elm) {\n      if (!elm.getAttribute('id')) {\n        return;\n      }\n      var doc = elm.getRootNode && elm.getRootNode() || document;\n      var id = '#' + escape_selector_default(elm.getAttribute('id') || '');\n      if (!id.match(/player_uid_/) && doc.querySelectorAll(id).length === 1) {\n        return id;\n      }\n    }\n    function getBaseSelector(elm) {\n      if (typeof xhtml === 'undefined') {\n        xhtml = is_xhtml_default(document);\n      }\n      return escape_selector_default(xhtml ? elm.localName : elm.nodeName.toLowerCase());\n    }\n    function uncommonAttributes(node, selectorData) {\n      var retVal = [];\n      var attData = selectorData.attributes;\n      var tagData = selectorData.tags;\n      if (node.hasAttributes()) {\n        Array.from(get_node_attributes_default(node)).filter(filterAttributes).forEach(function(at) {\n          var atnv = getAttributeNameValue(node, at);\n          if (atnv && attData[atnv] < tagData[node.nodeName]) {\n            retVal.push({\n              name: atnv,\n              count: attData[atnv],\n              species: 'attribute'\n            });\n          }\n        });\n      }\n      return retVal.sort(countSort);\n    }\n    function getThreeLeastCommonFeatures(elm, selectorData) {\n      var selector = '';\n      var features;\n      var clss = uncommonClasses(elm, selectorData);\n      var atts = uncommonAttributes(elm, selectorData);\n      if (clss.length && clss[0].count === 1) {\n        features = [ clss[0] ];\n      } else if (atts.length && atts[0].count === 1) {\n        features = [ atts[0] ];\n        selector = getBaseSelector(elm);\n      } else {\n        features = clss.concat(atts);\n        features.sort(countSort);\n        features = features.slice(0, 3);\n        if (!features.some(function(feat) {\n          return feat.species === 'class';\n        })) {\n          selector = getBaseSelector(elm);\n        } else {\n          features.sort(function(a, b) {\n            return a.species !== b.species && a.species === 'class' ? -1 : a.species === b.species ? 0 : 1;\n          });\n        }\n      }\n      return selector += features.reduce(function(val, feat) {\n        switch (feat.species) {\n         case 'class':\n          return val + '.' + feat.name;\n\n         case 'attribute':\n          return val + '[' + feat.name + ']';\n        }\n        return val;\n      }, '');\n    }\n    function generateSelector(elm, options, doc) {\n      if (!axe._selectorData) {\n        throw new Error('Expect axe._selectorData to be set up');\n      }\n      var _options$toRoot = options.toRoot, toRoot = _options$toRoot === void 0 ? false : _options$toRoot;\n      var selector;\n      var similar;\n      do {\n        var features = getElmId(elm);\n        if (!features) {\n          features = getThreeLeastCommonFeatures(elm, axe._selectorData);\n          features += getNthChildString(elm, features);\n        }\n        if (selector) {\n          selector = features + ' > ' + selector;\n        } else {\n          selector = features;\n        }\n        if (!similar) {\n          similar = Array.from(doc.querySelectorAll(selector));\n        } else {\n          similar = similar.filter(function(item) {\n            return element_matches_default(item, selector);\n          });\n        }\n        elm = elm.parentElement;\n      } while ((similar.length > 1 || toRoot) && elm && elm.nodeType !== 11);\n      if (similar.length === 1) {\n        return selector;\n      } else if (selector.indexOf(' > ') !== -1) {\n        return ':root' + selector.substring(selector.indexOf(' > '));\n      }\n      return ':root';\n    }\n    function _getSelector(elm, options) {\n      return get_shadow_selector_default(generateSelector, elm, options);\n    }\n    function generateAncestry(node) {\n      var nodeName2 = node.nodeName.toLowerCase();\n      var parent = node.parentElement;\n      if (!parent) {\n        return nodeName2;\n      }\n      var nthChild = '';\n      if (nodeName2 !== 'head' && nodeName2 !== 'body' && parent.children.length > 1) {\n        var index = Array.prototype.indexOf.call(parent.children, node) + 1;\n        nthChild = ':nth-child('.concat(index, ')');\n      }\n      return generateAncestry(parent) + ' > ' + nodeName2 + nthChild;\n    }\n    function _getAncestry(elm, options) {\n      return get_shadow_selector_default(generateAncestry, elm, options);\n    }\n    function getXPathArray(node, path) {\n      var sibling, count;\n      if (!node) {\n        return [];\n      }\n      if (!path && node.nodeType === 9) {\n        path = [ {\n          str: 'html'\n        } ];\n        return path;\n      }\n      path = path || [];\n      if (node.parentNode && node.parentNode !== node) {\n        path = getXPathArray(node.parentNode, path);\n      }\n      if (node.previousSibling) {\n        count = 1;\n        sibling = node.previousSibling;\n        do {\n          if (sibling.nodeType === 1 && sibling.nodeName === node.nodeName) {\n            count++;\n          }\n          sibling = sibling.previousSibling;\n        } while (sibling);\n        if (count === 1) {\n          count = null;\n        }\n      } else if (node.nextSibling) {\n        sibling = node.nextSibling;\n        do {\n          if (sibling.nodeType === 1 && sibling.nodeName === node.nodeName) {\n            count = 1;\n            sibling = null;\n          } else {\n            count = null;\n            sibling = sibling.previousSibling;\n          }\n        } while (sibling);\n      }\n      if (node.nodeType === 1) {\n        var element = {};\n        element.str = node.nodeName.toLowerCase();\n        var id = node.getAttribute && escape_selector_default(node.getAttribute('id'));\n        if (id && node.ownerDocument.querySelectorAll('#' + id).length === 1) {\n          element.id = node.getAttribute('id');\n        }\n        if (count > 1) {\n          element.count = count;\n        }\n        path.push(element);\n      }\n      return path;\n    }\n    function xpathToString(xpathArray) {\n      return xpathArray.reduce(function(str, elm) {\n        if (elm.id) {\n          return '/'.concat(elm.str, '[@id=\\'').concat(elm.id, '\\']');\n        } else {\n          return str + '/'.concat(elm.str) + (elm.count > 0 ? '['.concat(elm.count, ']') : '');\n        }\n      }, '');\n    }\n    function getXpath(node) {\n      var xpathArray = getXPathArray(node);\n      return xpathToString(xpathArray);\n    }\n    var get_xpath_default = getXpath;\n    function truncate(str, maxLength) {\n      maxLength = maxLength || 300;\n      if (str.length > maxLength) {\n        var index = str.indexOf('>');\n        str = str.substring(0, index + 1);\n      }\n      return str;\n    }\n    function getSource2(element) {\n      var source = element.outerHTML;\n      if (!source && typeof XMLSerializer === 'function') {\n        source = new XMLSerializer().serializeToString(element);\n      }\n      return truncate(source || '');\n    }\n    function DqElement(element, options, spec) {\n      this._fromFrame = !!spec;\n      this.spec = spec || {};\n      if (options && options.absolutePaths) {\n        this._options = {\n          toRoot: true\n        };\n      }\n      if (axe._audit.noHtml) {\n        this.source = null;\n      } else if (this.spec.source !== void 0) {\n        this.source = this.spec.source;\n      } else {\n        this.source = getSource2(element);\n      }\n      this._element = element;\n    }\n    DqElement.prototype = {\n      get selector() {\n        return this.spec.selector || [ _getSelector(this.element, this._options) ];\n      },\n      get ancestry() {\n        return this.spec.ancestry || [ _getAncestry(this.element) ];\n      },\n      get xpath() {\n        return this.spec.xpath || [ get_xpath_default(this.element) ];\n      },\n      get element() {\n        return this._element;\n      },\n      get fromFrame() {\n        return this._fromFrame;\n      },\n      toJSON: function toJSON() {\n        return {\n          selector: this.selector,\n          source: this.source,\n          xpath: this.xpath,\n          ancestry: this.ancestry\n        };\n      }\n    };\n    DqElement.fromFrame = function fromFrame(node, options, frame) {\n      var spec = _extends({}, node, {\n        selector: [].concat(_toConsumableArray(frame.selector), _toConsumableArray(node.selector)),\n        ancestry: [].concat(_toConsumableArray(frame.ancestry), _toConsumableArray(node.ancestry)),\n        xpath: [].concat(_toConsumableArray(frame.xpath), _toConsumableArray(node.xpath))\n      });\n      return new DqElement(frame.element, options, spec);\n    };\n    var dq_element_default = DqElement;\n    function checkHelper(checkResult, options, resolve, reject) {\n      return {\n        isAsync: false,\n        async: function async() {\n          this.isAsync = true;\n          return function(result) {\n            if (result instanceof Error === false) {\n              checkResult.result = result;\n              resolve(checkResult);\n            } else {\n              reject(result);\n            }\n          };\n        },\n        data: function data(data2) {\n          checkResult.data = data2;\n        },\n        relatedNodes: function relatedNodes(nodes) {\n          nodes = nodes instanceof window.Node ? [ nodes ] : to_array_default(nodes);\n          checkResult.relatedNodes = nodes.map(function(element) {\n            return new dq_element_default(element, options);\n          });\n        }\n      };\n    }\n    var check_helper_default = checkHelper;\n    function clone(obj) {\n      var index, length, out = obj;\n      if (obj !== null && _typeof(obj) === 'object') {\n        if (Array.isArray(obj)) {\n          out = [];\n          for (index = 0, length = obj.length; index < length; index++) {\n            out[index] = clone(obj[index]);\n          }\n        } else {\n          out = {};\n          for (index in obj) {\n            out[index] = clone(obj[index]);\n          }\n        }\n      }\n      return out;\n    }\n    var clone_default = clone;\n    var css_selector_parser = __toModule(require_lib());\n    var parser = new css_selector_parser.CssSelectorParser();\n    parser.registerSelectorPseudos('not');\n    parser.registerSelectorPseudos('is');\n    parser.registerNestingOperators('>');\n    parser.registerAttrEqualityMods('^', '$', '*', '~');\n    var css_parser_default = parser;\n    function matchesTag(vNode, exp) {\n      return vNode.props.nodeType === 1 && (exp.tag === '*' || vNode.props.nodeName === exp.tag);\n    }\n    function matchesClasses(vNode, exp) {\n      return !exp.classes || exp.classes.every(function(cl) {\n        return vNode.hasClass(cl.value);\n      });\n    }\n    function matchesAttributes(vNode, exp) {\n      return !exp.attributes || exp.attributes.every(function(att) {\n        var nodeAtt = vNode.attr(att.key);\n        return nodeAtt !== null && (!att.value || att.test(nodeAtt));\n      });\n    }\n    function matchesId(vNode, exp) {\n      return !exp.id || vNode.props.id === exp.id;\n    }\n    function matchesPseudos(target, exp) {\n      if (!exp.pseudos || exp.pseudos.every(function(pseudo) {\n        if (pseudo.name === 'not') {\n          return !pseudo.expressions.some(function(expression) {\n            return _matchesExpression(target, expression);\n          });\n        } else if (pseudo.name === 'is') {\n          return pseudo.expressions.some(function(expression) {\n            return _matchesExpression(target, expression);\n          });\n        }\n        throw new Error('the pseudo selector ' + pseudo.name + ' has not yet been implemented');\n      })) {\n        return true;\n      }\n      return false;\n    }\n    function matchExpression(vNode, expression) {\n      return matchesTag(vNode, expression) && matchesClasses(vNode, expression) && matchesAttributes(vNode, expression) && matchesId(vNode, expression) && matchesPseudos(vNode, expression);\n    }\n    var escapeRegExp = function() {\n      var from = /(?=[\\-\\[\\]{}()*+?.\\\\\\^$|,#\\s])/g;\n      var to = '\\\\';\n      return function(string) {\n        return string.replace(from, to);\n      };\n    }();\n    var reUnescape = /\\\\/g;\n    function convertAttributes(atts) {\n      if (!atts) {\n        return;\n      }\n      return atts.map(function(att) {\n        var attributeKey = att.name.replace(reUnescape, '');\n        var attributeValue = (att.value || '').replace(reUnescape, '');\n        var test, regexp;\n        switch (att.operator) {\n         case '^=':\n          regexp = new RegExp('^' + escapeRegExp(attributeValue));\n          break;\n\n         case '$=':\n          regexp = new RegExp(escapeRegExp(attributeValue) + '$');\n          break;\n\n         case '~=':\n          regexp = new RegExp('(^|\\\\s)' + escapeRegExp(attributeValue) + '(\\\\s|$)');\n          break;\n\n         case '|=':\n          regexp = new RegExp('^' + escapeRegExp(attributeValue) + '(-|$)');\n          break;\n\n         case '=':\n          test = function test(value) {\n            return attributeValue === value;\n          };\n          break;\n\n         case '*=':\n          test = function test(value) {\n            return value && value.includes(attributeValue);\n          };\n          break;\n\n         case '!=':\n          test = function test(value) {\n            return attributeValue !== value;\n          };\n          break;\n\n         default:\n          test = function test(value) {\n            return !!value;\n          };\n        }\n        if (attributeValue === '' && /^[*$^]=$/.test(att.operator)) {\n          test = function test() {\n            return false;\n          };\n        }\n        if (!test) {\n          test = function test(value) {\n            return value && regexp.test(value);\n          };\n        }\n        return {\n          key: attributeKey,\n          value: attributeValue,\n          test: test\n        };\n      });\n    }\n    function convertClasses(classes) {\n      if (!classes) {\n        return;\n      }\n      return classes.map(function(className) {\n        className = className.replace(reUnescape, '');\n        return {\n          value: className,\n          regexp: new RegExp('(^|\\\\s)' + escapeRegExp(className) + '(\\\\s|$)')\n        };\n      });\n    }\n    function convertPseudos(pseudos) {\n      if (!pseudos) {\n        return;\n      }\n      return pseudos.map(function(p) {\n        var expressions;\n        if ([ 'is', 'not' ].includes(p.name)) {\n          expressions = p.value;\n          expressions = expressions.selectors ? expressions.selectors : [ expressions ];\n          expressions = convertExpressions(expressions);\n        }\n        return {\n          name: p.name,\n          expressions: expressions,\n          value: p.value\n        };\n      });\n    }\n    function convertExpressions(expressions) {\n      return expressions.map(function(exp) {\n        var newExp = [];\n        var rule3 = exp.rule;\n        while (rule3) {\n          newExp.push({\n            tag: rule3.tagName ? rule3.tagName.toLowerCase() : '*',\n            combinator: rule3.nestingOperator ? rule3.nestingOperator : ' ',\n            id: rule3.id,\n            attributes: convertAttributes(rule3.attrs),\n            classes: convertClasses(rule3.classNames),\n            pseudos: convertPseudos(rule3.pseudos)\n          });\n          rule3 = rule3.rule;\n        }\n        return newExp;\n      });\n    }\n    function _convertSelector(selector) {\n      var expressions = css_parser_default.parse(selector);\n      expressions = expressions.selectors ? expressions.selectors : [ expressions ];\n      return convertExpressions(expressions);\n    }\n    function _matchesExpression(vNode, expressions, matchAnyParent) {\n      var exps = [].concat(expressions);\n      var expression = exps.pop();\n      var matches14 = matchExpression(vNode, expression);\n      while (!matches14 && matchAnyParent && vNode.parent) {\n        vNode = vNode.parent;\n        matches14 = matchExpression(vNode, expression);\n      }\n      if (exps.length) {\n        if ([ ' ', '>' ].includes(expression.combinator) === false) {\n          throw new Error('axe.utils.matchesExpression does not support the combinator: ' + expression.combinator);\n        }\n        matches14 = matches14 && _matchesExpression(vNode.parent, exps, expression.combinator === ' ');\n      }\n      return matches14;\n    }\n    function matches(vNode, selector) {\n      var expressions = _convertSelector(selector);\n      return expressions.some(function(expression) {\n        return _matchesExpression(vNode, expression);\n      });\n    }\n    var matches_default = matches;\n    function closest(vNode, selector) {\n      while (vNode) {\n        if (matches_default(vNode, selector)) {\n          return vNode;\n        }\n        if (typeof vNode.parent === 'undefined') {\n          throw new TypeError('Cannot resolve parent for non-DOM nodes');\n        }\n        vNode = vNode.parent;\n      }\n      return null;\n    }\n    var closest_default = closest;\n    function noop() {}\n    function funcGuard(f) {\n      if (typeof f !== 'function') {\n        throw new TypeError('Queue methods require functions as arguments');\n      }\n    }\n    function queue() {\n      var tasks = [];\n      var started = 0;\n      var remaining = 0;\n      var completeQueue = noop;\n      var complete = false;\n      var err2;\n      var defaultFail = function defaultFail(e) {\n        err2 = e;\n        setTimeout(function() {\n          if (err2 !== void 0 && err2 !== null) {\n            log_default('Uncaught error (of queue)', err2);\n          }\n        }, 1);\n      };\n      var failed = defaultFail;\n      function createResolve(i) {\n        return function(r) {\n          tasks[i] = r;\n          remaining -= 1;\n          if (!remaining && completeQueue !== noop) {\n            complete = true;\n            completeQueue(tasks);\n          }\n        };\n      }\n      function abort(msg) {\n        completeQueue = noop;\n        failed(msg);\n        return tasks;\n      }\n      function pop() {\n        var length = tasks.length;\n        for (;started < length; started++) {\n          var task = tasks[started];\n          try {\n            task.call(null, createResolve(started), abort);\n          } catch (e) {\n            abort(e);\n          }\n        }\n      }\n      var q = {\n        defer: function defer(fn) {\n          if (_typeof(fn) === 'object' && fn.then && fn['catch']) {\n            var defer = fn;\n            fn = function fn(resolve, reject) {\n              defer.then(resolve)['catch'](reject);\n            };\n          }\n          funcGuard(fn);\n          if (err2 !== void 0) {\n            return;\n          } else if (complete) {\n            throw new Error('Queue already completed');\n          }\n          tasks.push(fn);\n          ++remaining;\n          pop();\n          return q;\n        },\n        then: function then(fn) {\n          funcGuard(fn);\n          if (completeQueue !== noop) {\n            throw new Error('queue `then` already set');\n          }\n          if (!err2) {\n            completeQueue = fn;\n            if (!remaining) {\n              complete = true;\n              completeQueue(tasks);\n            }\n          }\n          return q;\n        },\n        catch: function _catch(fn) {\n          funcGuard(fn);\n          if (failed !== defaultFail) {\n            throw new Error('queue `catch` already set');\n          }\n          if (!err2) {\n            failed = fn;\n          } else {\n            fn(err2);\n            err2 = null;\n          }\n          return q;\n        },\n        abort: abort\n      };\n      return q;\n    }\n    var queue_default = queue;\n    var closeHandler;\n    var postMessage2;\n    var topicHandlers = {};\n    function _respondable(win, topic, message, keepalive, replyHandler) {\n      var data2 = {\n        topic: topic,\n        message: message,\n        channelId: ''.concat(v4(), ':').concat(v4()),\n        keepalive: keepalive\n      };\n      return postMessage2(win, data2, replyHandler);\n    }\n    function messageListener(data2, responder) {\n      var topic = data2.topic, message = data2.message, keepalive = data2.keepalive;\n      var topicHandler = topicHandlers[topic];\n      if (!topicHandler) {\n        return;\n      }\n      try {\n        topicHandler(message, keepalive, responder);\n      } catch (error) {\n        axe.log(error);\n        responder(error, keepalive);\n      }\n    }\n    _respondable.updateMessenger = function updateMessenger(_ref5) {\n      var open = _ref5.open, post = _ref5.post;\n      assert_default(typeof open === 'function', 'open callback must be a function');\n      assert_default(typeof post === 'function', 'post callback must be a function');\n      if (closeHandler) {\n        closeHandler();\n      }\n      var close = open(messageListener);\n      if (close) {\n        assert_default(typeof close === 'function', 'open callback must return a cleanup function');\n        closeHandler = close;\n      } else {\n        closeHandler = null;\n      }\n      postMessage2 = post;\n    };\n    _respondable.subscribe = function subscribe(topic, topicHandler) {\n      assert_default(typeof topicHandler === 'function', 'Subscriber callback must be a function');\n      assert_default(!topicHandlers[topic], 'Topic '.concat(topic, ' is already registered to.'));\n      topicHandlers[topic] = topicHandler;\n    };\n    _respondable.isInFrame = function isInFrame() {\n      var win = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window;\n      return !!win.frameElement;\n    };\n    setDefaultFrameMessenger(_respondable);\n    function err(message, node) {\n      var selector;\n      if (axe._tree) {\n        selector = _getSelector(node);\n      }\n      return new Error(message + ': ' + (selector || node));\n    }\n    function sendCommandToFrame(node, parameters, resolve, reject) {\n      var win = node.contentWindow;\n      if (!win) {\n        log_default('Frame does not have a content window', node);\n        resolve(null);\n        return;\n      }\n      var timeout = setTimeout(function() {\n        timeout = setTimeout(function() {\n          if (!parameters.debug) {\n            resolve(null);\n          } else {\n            reject(err('No response from frame', node));\n          }\n        }, 0);\n      }, 500);\n      _respondable(win, 'axe.ping', null, void 0, function() {\n        clearTimeout(timeout);\n        var frameWaitTime = parameters.options && parameters.options.frameWaitTime || 6e4;\n        timeout = setTimeout(function collectResultFramesTimeout() {\n          reject(err('Axe in frame timed out', node));\n        }, frameWaitTime);\n        _respondable(win, 'axe.start', parameters, void 0, function(data2) {\n          clearTimeout(timeout);\n          if (data2 instanceof Error === false) {\n            resolve(data2);\n          } else {\n            reject(data2);\n          }\n        });\n      });\n    }\n    var send_command_to_frame_default = sendCommandToFrame;\n    function getAllChecks(object) {\n      var result = [];\n      return result.concat(object.any || []).concat(object.all || []).concat(object.none || []);\n    }\n    var get_all_checks_default = getAllChecks;\n    function nodeSorter(nodeA, nodeB) {\n      nodeA = nodeA.actualNode || nodeA;\n      nodeB = nodeB.actualNode || nodeB;\n      if (nodeA === nodeB) {\n        return 0;\n      }\n      if (nodeA.compareDocumentPosition(nodeB) & 4) {\n        return -1;\n      } else {\n        return 1;\n      }\n    }\n    var node_sorter_default = nodeSorter;\n    function findBy(array, key, value) {\n      if (Array.isArray(array)) {\n        return array.find(function(obj) {\n          return _typeof(obj) === 'object' && obj[key] === value;\n        });\n      }\n    }\n    var find_by_default = findBy;\n    function pushFrame(resultSet, dqFrame, options) {\n      resultSet.forEach(function(res) {\n        res.node = dq_element_default.fromFrame(res.node, options, dqFrame);\n        var checks = get_all_checks_default(res);\n        checks.forEach(function(check4) {\n          check4.relatedNodes = check4.relatedNodes.map(function(node) {\n            return dq_element_default.fromFrame(node, options, dqFrame);\n          });\n        });\n      });\n    }\n    function spliceNodes(target, to) {\n      var firstFromFrame = to[0].node;\n      for (var _i2 = 0; _i2 < target.length; _i2++) {\n        var node = target[_i2].node;\n        var sorterResult = node_sorter_default({\n          actualNode: node.element\n        }, {\n          actualNode: firstFromFrame.element\n        });\n        if (sorterResult > 0 || sorterResult === 0 && firstFromFrame.selector.length < node.selector.length) {\n          target.splice.apply(target, [ _i2, 0 ].concat(to));\n          return;\n        }\n      }\n      target.push.apply(target, to);\n    }\n    function normalizeResult(result) {\n      if (!result || !result.results) {\n        return null;\n      }\n      if (!Array.isArray(result.results)) {\n        return [ result.results ];\n      }\n      if (!result.results.length) {\n        return null;\n      }\n      return result.results;\n    }\n    function mergeResults(frameResults, options) {\n      var mergedResult = [];\n      frameResults.forEach(function(frameResult) {\n        var results = normalizeResult(frameResult);\n        if (!results || !results.length) {\n          return;\n        }\n        var dqFrame;\n        if (frameResult.frameElement) {\n          var spec = {\n            selector: [ frameResult.frame ]\n          };\n          dqFrame = new dq_element_default(frameResult.frameElement, options, spec);\n        }\n        results.forEach(function(ruleResult) {\n          if (ruleResult.nodes && dqFrame) {\n            pushFrame(ruleResult.nodes, dqFrame, options);\n          }\n          var res = find_by_default(mergedResult, 'id', ruleResult.id);\n          if (!res) {\n            mergedResult.push(ruleResult);\n          } else {\n            if (ruleResult.nodes.length) {\n              spliceNodes(res.nodes, ruleResult.nodes);\n            }\n          }\n        });\n      });\n      if (frameResults.length > 1 && window && window.Node) {\n        mergedResult.forEach(function(result) {\n          if (result.nodes) {\n            result.nodes.sort(function(a, b) {\n              var aNode = a.node.element;\n              var bNode = b.node.element;\n              if (aNode !== bNode && (a.node._fromFrame || b.node._fromFrame)) {\n                return node_sorter_default(aNode, bNode);\n              }\n              return 0;\n            });\n          }\n        });\n      }\n      return mergedResult;\n    }\n    var merge_results_default = mergeResults;\n    function collectResultsFromFrames(parentContent, options, command, parameter, resolve, reject) {\n      var q = queue_default();\n      var frames = parentContent.frames;\n      frames.forEach(function(frame) {\n        var tabindex = parseInt(frame.node.getAttribute('tabindex'), 10);\n        var focusable = isNaN(tabindex) || tabindex >= 0;\n        var rect = frame.node.getBoundingClientRect();\n        var width = parseInt(frame.node.getAttribute('width'), 10);\n        var height = parseInt(frame.node.getAttribute('height'), 10);\n        width = isNaN(width) ? rect.width : width;\n        height = isNaN(height) ? rect.height : height;\n        var params = {\n          options: options,\n          command: command,\n          parameter: parameter,\n          context: {\n            initiator: false,\n            focusable: parentContent.focusable === false ? false : focusable,\n            boundingClientRect: {\n              width: width,\n              height: height\n            },\n            page: parentContent.page,\n            include: frame.include || [],\n            exclude: frame.exclude || []\n          }\n        };\n        q.defer(function(res, rej) {\n          var node = frame.node;\n          send_command_to_frame_default(node, params, function(data2) {\n            if (data2) {\n              return res({\n                results: data2,\n                frameElement: node,\n                frame: _getSelector(node)\n              });\n            }\n            res(null);\n          }, rej);\n        });\n      });\n      q.then(function(data2) {\n        resolve(merge_results_default(data2, options));\n      })['catch'](reject);\n    }\n    var collect_results_from_frames_default = collectResultsFromFrames;\n    function contains(vNode, otherVNode) {\n      function containsShadowChild(vNode2, otherVNode2) {\n        if (vNode2.shadowId === otherVNode2.shadowId) {\n          return true;\n        }\n        return !!vNode2.children.find(function(child) {\n          return containsShadowChild(child, otherVNode2);\n        });\n      }\n      if (vNode.shadowId || otherVNode.shadowId) {\n        return containsShadowChild(vNode, otherVNode);\n      }\n      if (vNode.actualNode) {\n        if (typeof vNode.actualNode.contains === 'function') {\n          return vNode.actualNode.contains(otherVNode.actualNode);\n        }\n        return !!(vNode.actualNode.compareDocumentPosition(otherVNode.actualNode) & 16);\n      } else {\n        do {\n          if (otherVNode === vNode) {\n            return true;\n          }\n        } while (otherVNode = otherVNode && otherVNode.parent);\n      }\n      return false;\n    }\n    var contains_default = contains;\n    function deepMerge() {\n      var target = {};\n      for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n        sources[_key] = arguments[_key];\n      }\n      sources.forEach(function(source) {\n        if (!source || _typeof(source) !== 'object' || Array.isArray(source)) {\n          return;\n        }\n        for (var _i3 = 0, _Object$keys = Object.keys(source); _i3 < _Object$keys.length; _i3++) {\n          var key = _Object$keys[_i3];\n          if (!target.hasOwnProperty(key) || _typeof(source[key]) !== 'object' || Array.isArray(target[key])) {\n            target[key] = source[key];\n          } else {\n            target[key] = deepMerge(target[key], source[key]);\n          }\n        }\n      });\n      return target;\n    }\n    var deep_merge_default = deepMerge;\n    function extendMetaData(to, from) {\n      Object.assign(to, from);\n      Object.keys(from).filter(function(prop) {\n        return typeof from[prop] === 'function';\n      }).forEach(function(prop) {\n        to[prop] = null;\n        try {\n          to[prop] = from[prop](to);\n        } catch (e) {}\n      });\n    }\n    var extend_meta_data_default = extendMetaData;\n    var possibleShadowRoots = [ 'article', 'aside', 'blockquote', 'body', 'div', 'footer', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'main', 'nav', 'p', 'section', 'span' ];\n    function isShadowRoot(node) {\n      if (node.shadowRoot) {\n        var nodeName2 = node.nodeName.toLowerCase();\n        if (possibleShadowRoots.includes(nodeName2) || /^[a-z][a-z0-9_.-]*-[a-z0-9_.-]*$/.test(nodeName2)) {\n          return true;\n        }\n      }\n      return false;\n    }\n    var is_shadow_root_default = isShadowRoot;\n    var dom_exports = {};\n    __export(dom_exports, {\n      findElmsInContext: function findElmsInContext() {\n        return find_elms_in_context_default;\n      },\n      findUp: function findUp() {\n        return find_up_default;\n      },\n      findUpVirtual: function findUpVirtual() {\n        return find_up_virtual_default;\n      },\n      getComposedParent: function getComposedParent() {\n        return get_composed_parent_default;\n      },\n      getElementByReference: function getElementByReference() {\n        return get_element_by_reference_default;\n      },\n      getElementCoordinates: function getElementCoordinates() {\n        return get_element_coordinates_default;\n      },\n      getElementStack: function getElementStack() {\n        return get_element_stack_default;\n      },\n      getRootNode: function getRootNode() {\n        return get_root_node_default2;\n      },\n      getScrollOffset: function getScrollOffset() {\n        return get_scroll_offset_default;\n      },\n      getTabbableElements: function getTabbableElements() {\n        return get_tabbable_elements_default;\n      },\n      getTextElementStack: function getTextElementStack() {\n        return get_text_element_stack_default;\n      },\n      getViewportSize: function getViewportSize() {\n        return get_viewport_size_default;\n      },\n      hasContent: function hasContent() {\n        return has_content_default;\n      },\n      hasContentVirtual: function hasContentVirtual() {\n        return has_content_virtual_default;\n      },\n      idrefs: function idrefs() {\n        return idrefs_default;\n      },\n      insertedIntoFocusOrder: function insertedIntoFocusOrder() {\n        return inserted_into_focus_order_default;\n      },\n      isFocusable: function isFocusable() {\n        return is_focusable_default;\n      },\n      isHTML5: function isHTML5() {\n        return is_html5_default;\n      },\n      isHiddenWithCSS: function isHiddenWithCSS() {\n        return is_hidden_with_css_default;\n      },\n      isInTextBlock: function isInTextBlock() {\n        return is_in_text_block_default;\n      },\n      isModalOpen: function isModalOpen() {\n        return is_modal_open_default;\n      },\n      isNativelyFocusable: function isNativelyFocusable() {\n        return is_natively_focusable_default;\n      },\n      isNode: function isNode() {\n        return is_node_default;\n      },\n      isOffscreen: function isOffscreen() {\n        return is_offscreen_default;\n      },\n      isOpaque: function isOpaque() {\n        return is_opaque_default;\n      },\n      isSkipLink: function isSkipLink() {\n        return is_skip_link_default;\n      },\n      isVisible: function isVisible() {\n        return is_visible_default;\n      },\n      isVisualContent: function isVisualContent() {\n        return is_visual_content_default;\n      },\n      reduceToElementsBelowFloating: function reduceToElementsBelowFloating() {\n        return reduce_to_elements_below_floating_default;\n      },\n      shadowElementsFromPoint: function shadowElementsFromPoint() {\n        return shadow_elements_from_point_default;\n      },\n      urlPropsFromAttribute: function urlPropsFromAttribute() {\n        return url_props_from_attribute_default;\n      },\n      visuallyContains: function visuallyContains() {\n        return visually_contains_default;\n      },\n      visuallyOverlaps: function visuallyOverlaps() {\n        return visually_overlaps_default;\n      }\n    });\n    function getRootNode(node) {\n      var doc = node.getRootNode && node.getRootNode() || document;\n      if (doc === node) {\n        doc = document;\n      }\n      return doc;\n    }\n    var get_root_node_default = getRootNode;\n    var get_root_node_default2 = get_root_node_default;\n    function findElmsInContext(_ref6) {\n      var context3 = _ref6.context, value = _ref6.value, attr = _ref6.attr, _ref6$elm = _ref6.elm, elm = _ref6$elm === void 0 ? '' : _ref6$elm;\n      var root;\n      var escapedValue = escape_selector_default(value);\n      if (context3.nodeType === 9 || context3.nodeType === 11) {\n        root = context3;\n      } else {\n        root = get_root_node_default2(context3);\n      }\n      return Array.from(root.querySelectorAll(elm + '[' + attr + '=' + escapedValue + ']'));\n    }\n    var find_elms_in_context_default = findElmsInContext;\n    function findUpVirtual(element, target) {\n      var parent;\n      parent = element.actualNode;\n      if (!element.shadowId && typeof element.actualNode.closest === 'function') {\n        var match = element.actualNode.closest(target);\n        if (match) {\n          return match;\n        }\n        return null;\n      }\n      do {\n        parent = parent.assignedSlot ? parent.assignedSlot : parent.parentNode;\n        if (parent && parent.nodeType === 11) {\n          parent = parent.host;\n        }\n      } while (parent && !element_matches_default(parent, target) && parent !== document.documentElement);\n      if (!parent) {\n        return null;\n      }\n      if (!element_matches_default(parent, target)) {\n        return null;\n      }\n      return parent;\n    }\n    var find_up_virtual_default = findUpVirtual;\n    function findUp(element, target) {\n      return find_up_virtual_default(get_node_from_tree_default(element), target);\n    }\n    var find_up_default = findUp;\n    function getComposedParent(element) {\n      if (element.assignedSlot) {\n        return getComposedParent(element.assignedSlot);\n      } else if (element.parentNode) {\n        var parentNode = element.parentNode;\n        if (parentNode.nodeType === 1) {\n          return parentNode;\n        } else if (parentNode.host) {\n          return parentNode.host;\n        }\n      }\n      return null;\n    }\n    var get_composed_parent_default = getComposedParent;\n    function getElementByReference(node, attr) {\n      var fragment = node.getAttribute(attr);\n      if (!fragment) {\n        return null;\n      }\n      if (fragment.charAt(0) === '#') {\n        fragment = decodeURIComponent(fragment.substring(1));\n      } else if (fragment.substr(0, 2) === '/#') {\n        fragment = decodeURIComponent(fragment.substring(2));\n      }\n      var candidate = document.getElementById(fragment);\n      if (candidate) {\n        return candidate;\n      }\n      candidate = document.getElementsByName(fragment);\n      if (candidate.length) {\n        return candidate[0];\n      }\n      return null;\n    }\n    var get_element_by_reference_default = getElementByReference;\n    function getScrollOffset(element) {\n      if (!element.nodeType && element.document) {\n        element = element.document;\n      }\n      if (element.nodeType === 9) {\n        var docElement = element.documentElement, body = element.body;\n        return {\n          left: docElement && docElement.scrollLeft || body && body.scrollLeft || 0,\n          top: docElement && docElement.scrollTop || body && body.scrollTop || 0\n        };\n      }\n      return {\n        left: element.scrollLeft,\n        top: element.scrollTop\n      };\n    }\n    var get_scroll_offset_default = getScrollOffset;\n    function getElementCoordinates(element) {\n      var scrollOffset = get_scroll_offset_default(document), xOffset = scrollOffset.left, yOffset = scrollOffset.top, coords = element.getBoundingClientRect();\n      return {\n        top: coords.top + yOffset,\n        right: coords.right + xOffset,\n        bottom: coords.bottom + yOffset,\n        left: coords.left + xOffset,\n        width: coords.right - coords.left,\n        height: coords.bottom - coords.top\n      };\n    }\n    var get_element_coordinates_default = getElementCoordinates;\n    function getViewportSize(win) {\n      var doc = win.document;\n      var docElement = doc.documentElement;\n      if (win.innerWidth) {\n        return {\n          width: win.innerWidth,\n          height: win.innerHeight\n        };\n      }\n      if (docElement) {\n        return {\n          width: docElement.clientWidth,\n          height: docElement.clientHeight\n        };\n      }\n      var body = doc.body;\n      return {\n        width: body.clientWidth,\n        height: body.clientHeight\n      };\n    }\n    var get_viewport_size_default = getViewportSize;\n    function noParentScrolled(element, offset) {\n      element = get_composed_parent_default(element);\n      while (element && element.nodeName.toLowerCase() !== 'html') {\n        if (element.scrollTop) {\n          offset += element.scrollTop;\n          if (offset >= 0) {\n            return false;\n          }\n        }\n        element = get_composed_parent_default(element);\n      }\n      return true;\n    }\n    function isOffscreen(element) {\n      var leftBoundary;\n      var docElement = document.documentElement;\n      var styl = window.getComputedStyle(element);\n      var dir = window.getComputedStyle(document.body || docElement).getPropertyValue('direction');\n      var coords = get_element_coordinates_default(element);\n      if (coords.bottom < 0 && (noParentScrolled(element, coords.bottom) || styl.position === 'absolute')) {\n        return true;\n      }\n      if (coords.left === 0 && coords.right === 0) {\n        return false;\n      }\n      if (dir === 'ltr') {\n        if (coords.right <= 0) {\n          return true;\n        }\n      } else {\n        leftBoundary = Math.max(docElement.scrollWidth, get_viewport_size_default(window).width);\n        if (coords.left >= leftBoundary) {\n          return true;\n        }\n      }\n      return false;\n    }\n    var is_offscreen_default = isOffscreen;\n    var clipRegex = /rect\\s*\\(([0-9]+)px,?\\s*([0-9]+)px,?\\s*([0-9]+)px,?\\s*([0-9]+)px\\s*\\)/;\n    var clipPathRegex = /(\\w+)\\((\\d+)/;\n    function isClipped(style) {\n      var matchesClip = style.getPropertyValue('clip').match(clipRegex);\n      var matchesClipPath = style.getPropertyValue('clip-path').match(clipPathRegex);\n      if (matchesClip && matchesClip.length === 5) {\n        return matchesClip[3] - matchesClip[1] <= 0 && matchesClip[2] - matchesClip[4] <= 0;\n      }\n      if (matchesClipPath) {\n        var type = matchesClipPath[1];\n        var value = parseInt(matchesClipPath[2], 10);\n        switch (type) {\n         case 'inset':\n          return value >= 50;\n\n         case 'circle':\n          return value === 0;\n\n         default:\n        }\n      }\n      return false;\n    }\n    function isAreaVisible(el, screenReader, recursed) {\n      var mapEl = find_up_default(el, 'map');\n      if (!mapEl) {\n        return false;\n      }\n      var mapElName = mapEl.getAttribute('name');\n      if (!mapElName) {\n        return false;\n      }\n      var mapElRootNode = get_root_node_default2(el);\n      if (!mapElRootNode || mapElRootNode.nodeType !== 9) {\n        return false;\n      }\n      var refs = query_selector_all_default(axe._tree, 'img[usemap=\"#'.concat(escape_selector_default(mapElName), '\"]'));\n      if (!refs || !refs.length) {\n        return false;\n      }\n      return refs.some(function(_ref7) {\n        var actualNode = _ref7.actualNode;\n        return isVisible(actualNode, screenReader, recursed);\n      });\n    }\n    function isVisible(el, screenReader, recursed) {\n      if (!el) {\n        throw new TypeError('Cannot determine if element is visible for non-DOM nodes');\n      }\n      var vNode = get_node_from_tree_default(el);\n      var cacheName = '_isVisible' + (screenReader ? 'ScreenReader' : '');\n      if (el.nodeType === 9) {\n        return true;\n      }\n      if (el.nodeType === 11) {\n        el = el.host;\n      }\n      if (vNode && typeof vNode[cacheName] !== 'undefined') {\n        return vNode[cacheName];\n      }\n      var style = window.getComputedStyle(el, null);\n      if (style === null) {\n        return false;\n      }\n      var nodeName2 = el.nodeName.toUpperCase();\n      if (nodeName2 === 'AREA') {\n        return isAreaVisible(el, screenReader, recursed);\n      }\n      if (style.getPropertyValue('display') === 'none' || [ 'STYLE', 'SCRIPT', 'NOSCRIPT', 'TEMPLATE' ].includes(nodeName2)) {\n        return false;\n      }\n      if (screenReader && el.getAttribute('aria-hidden') === 'true') {\n        return false;\n      }\n      if (!screenReader && (isClipped(style) || style.getPropertyValue('opacity') === '0' || get_scroll_default(el) && parseInt(style.getPropertyValue('height')) === 0)) {\n        return false;\n      }\n      if (!recursed && (style.getPropertyValue('visibility') === 'hidden' || !screenReader && is_offscreen_default(el))) {\n        return false;\n      }\n      var parent = el.assignedSlot ? el.assignedSlot : el.parentNode;\n      var visible4 = false;\n      if (parent) {\n        visible4 = isVisible(parent, screenReader, true);\n      }\n      if (vNode) {\n        vNode[cacheName] = visible4;\n      }\n      return visible4;\n    }\n    var is_visible_default = isVisible;\n    var gridSize = 200;\n    function isStackingContext(vNode, parentVNode) {\n      var position = vNode.getComputedStylePropertyValue('position');\n      var zIndex = vNode.getComputedStylePropertyValue('z-index');\n      if (position === 'fixed' || position === 'sticky') {\n        return true;\n      }\n      if (zIndex !== 'auto' && position !== 'static') {\n        return true;\n      }\n      if (vNode.getComputedStylePropertyValue('opacity') !== '1') {\n        return true;\n      }\n      var transform = vNode.getComputedStylePropertyValue('-webkit-transform') || vNode.getComputedStylePropertyValue('-ms-transform') || vNode.getComputedStylePropertyValue('transform') || 'none';\n      if (transform !== 'none') {\n        return true;\n      }\n      var mixBlendMode = vNode.getComputedStylePropertyValue('mix-blend-mode');\n      if (mixBlendMode && mixBlendMode !== 'normal') {\n        return true;\n      }\n      var filter = vNode.getComputedStylePropertyValue('filter');\n      if (filter && filter !== 'none') {\n        return true;\n      }\n      var perspective = vNode.getComputedStylePropertyValue('perspective');\n      if (perspective && perspective !== 'none') {\n        return true;\n      }\n      var clipPath = vNode.getComputedStylePropertyValue('clip-path');\n      if (clipPath && clipPath !== 'none') {\n        return true;\n      }\n      var mask = vNode.getComputedStylePropertyValue('-webkit-mask') || vNode.getComputedStylePropertyValue('mask') || 'none';\n      if (mask !== 'none') {\n        return true;\n      }\n      var maskImage = vNode.getComputedStylePropertyValue('-webkit-mask-image') || vNode.getComputedStylePropertyValue('mask-image') || 'none';\n      if (maskImage !== 'none') {\n        return true;\n      }\n      var maskBorder = vNode.getComputedStylePropertyValue('-webkit-mask-border') || vNode.getComputedStylePropertyValue('mask-border') || 'none';\n      if (maskBorder !== 'none') {\n        return true;\n      }\n      if (vNode.getComputedStylePropertyValue('isolation') === 'isolate') {\n        return true;\n      }\n      var willChange = vNode.getComputedStylePropertyValue('will-change');\n      if (willChange === 'transform' || willChange === 'opacity') {\n        return true;\n      }\n      if (vNode.getComputedStylePropertyValue('-webkit-overflow-scrolling') === 'touch') {\n        return true;\n      }\n      var contain = vNode.getComputedStylePropertyValue('contain');\n      if ([ 'layout', 'paint', 'strict', 'content' ].includes(contain)) {\n        return true;\n      }\n      if (zIndex !== 'auto' && parentVNode) {\n        var parentDsiplay = parentVNode.getComputedStylePropertyValue('display');\n        if ([ 'flex', 'inline-flex', 'inline flex', 'grid', 'inline-grid', 'inline grid' ].includes(parentDsiplay)) {\n          return true;\n        }\n      }\n      return false;\n    }\n    function isFloated(vNode) {\n      if (!vNode) {\n        return false;\n      }\n      if (vNode._isFloated !== void 0) {\n        return vNode._isFloated;\n      }\n      var floatStyle = vNode.getComputedStylePropertyValue('float');\n      if (floatStyle !== 'none') {\n        vNode._isFloated = true;\n        return true;\n      }\n      var floated = isFloated(vNode.parent);\n      vNode._isFloated = floated;\n      return floated;\n    }\n    function getPositionOrder(vNode) {\n      if (vNode.getComputedStylePropertyValue('position') === 'static') {\n        if (vNode.getComputedStylePropertyValue('display').indexOf('inline') !== -1) {\n          return 2;\n        }\n        if (isFloated(vNode)) {\n          return 1;\n        }\n        return 0;\n      }\n      return 3;\n    }\n    function visuallySort(a, b) {\n      for (var _i4 = 0; _i4 < a._stackingOrder.length; _i4++) {\n        if (typeof b._stackingOrder[_i4] === 'undefined') {\n          return -1;\n        }\n        if (b._stackingOrder[_i4] > a._stackingOrder[_i4]) {\n          return 1;\n        }\n        if (b._stackingOrder[_i4] < a._stackingOrder[_i4]) {\n          return -1;\n        }\n      }\n      var aNode = a.actualNode;\n      var bNode = b.actualNode;\n      if (aNode.getRootNode && aNode.getRootNode() !== bNode.getRootNode()) {\n        var boundaries = [];\n        while (aNode) {\n          boundaries.push({\n            root: aNode.getRootNode(),\n            node: aNode\n          });\n          aNode = aNode.getRootNode().host;\n        }\n        while (bNode && !boundaries.find(function(boundary) {\n          return boundary.root === bNode.getRootNode();\n        })) {\n          bNode = bNode.getRootNode().host;\n        }\n        aNode = boundaries.find(function(boundary) {\n          return boundary.root === bNode.getRootNode();\n        }).node;\n        if (aNode === bNode) {\n          return a.actualNode.getRootNode() !== aNode.getRootNode() ? -1 : 1;\n        }\n      }\n      var _window$Node = window.Node, DOCUMENT_POSITION_FOLLOWING = _window$Node.DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_CONTAINS = _window$Node.DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_CONTAINED_BY = _window$Node.DOCUMENT_POSITION_CONTAINED_BY;\n      var docPosition = aNode.compareDocumentPosition(bNode);\n      var DOMOrder = docPosition & DOCUMENT_POSITION_FOLLOWING ? 1 : -1;\n      var isDescendant = docPosition & DOCUMENT_POSITION_CONTAINS || docPosition & DOCUMENT_POSITION_CONTAINED_BY;\n      var aPosition = getPositionOrder(a);\n      var bPosition = getPositionOrder(b);\n      if (aPosition === bPosition || isDescendant) {\n        return DOMOrder;\n      }\n      return bPosition - aPosition;\n    }\n    function getStackingOrder(vNode, parentVNode) {\n      var stackingOrder = parentVNode._stackingOrder.slice();\n      var zIndex = vNode.getComputedStylePropertyValue('z-index');\n      if (zIndex !== 'auto') {\n        stackingOrder[stackingOrder.length - 1] = parseInt(zIndex);\n      }\n      if (isStackingContext(vNode, parentVNode)) {\n        stackingOrder.push(0);\n      }\n      return stackingOrder;\n    }\n    function findScrollRegionParent(vNode, parentVNode) {\n      var scrollRegionParent = null;\n      var checkedNodes = [ vNode ];\n      while (parentVNode) {\n        if (parentVNode._scrollRegionParent) {\n          scrollRegionParent = parentVNode._scrollRegionParent;\n          break;\n        }\n        if (get_scroll_default(parentVNode.actualNode)) {\n          scrollRegionParent = parentVNode;\n          break;\n        }\n        checkedNodes.push(parentVNode);\n        parentVNode = get_node_from_tree_default(parentVNode.actualNode.parentElement || parentVNode.actualNode.parentNode);\n      }\n      checkedNodes.forEach(function(vNode2) {\n        return vNode2._scrollRegionParent = scrollRegionParent;\n      });\n      return scrollRegionParent;\n    }\n    function addNodeToGrid(grid, vNode) {\n      vNode._grid = grid;\n      vNode.clientRects.forEach(function(rect) {\n        var x = rect.left;\n        var y = rect.top;\n        var startRow = y / gridSize | 0;\n        var startCol = x / gridSize | 0;\n        var endRow = (y + rect.height) / gridSize | 0;\n        var endCol = (x + rect.width) / gridSize | 0;\n        for (var row = startRow; row <= endRow; row++) {\n          grid.cells[row] = grid.cells[row] || [];\n          for (var col = startCol; col <= endCol; col++) {\n            grid.cells[row][col] = grid.cells[row][col] || [];\n            if (!grid.cells[row][col].includes(vNode)) {\n              grid.cells[row][col].push(vNode);\n            }\n          }\n        }\n      });\n    }\n    function createGrid() {\n      var root = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document.body;\n      var rootGrid = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n        container: null,\n        cells: []\n      };\n      var parentVNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n      if (!parentVNode) {\n        var vNode = get_node_from_tree_default(document.documentElement);\n        if (!vNode) {\n          vNode = new virtual_node_default(document.documentElement);\n        }\n        vNode._stackingOrder = [ 0 ];\n        addNodeToGrid(rootGrid, vNode);\n        if (get_scroll_default(vNode.actualNode)) {\n          var subGrid = {\n            container: vNode,\n            cells: []\n          };\n          vNode._subGrid = subGrid;\n        }\n      }\n      var treeWalker = document.createTreeWalker(root, window.NodeFilter.SHOW_ELEMENT, null, false);\n      var node = parentVNode ? treeWalker.nextNode() : treeWalker.currentNode;\n      while (node) {\n        var _vNode = get_node_from_tree_default(node);\n        if (node.parentElement) {\n          parentVNode = get_node_from_tree_default(node.parentElement);\n        } else if (node.parentNode && get_node_from_tree_default(node.parentNode)) {\n          parentVNode = get_node_from_tree_default(node.parentNode);\n        }\n        if (!_vNode) {\n          _vNode = new axe.VirtualNode(node, parentVNode);\n        }\n        _vNode._stackingOrder = getStackingOrder(_vNode, parentVNode);\n        var scrollRegionParent = findScrollRegionParent(_vNode, parentVNode);\n        var grid = scrollRegionParent ? scrollRegionParent._subGrid : rootGrid;\n        if (get_scroll_default(_vNode.actualNode)) {\n          var _subGrid = {\n            container: _vNode,\n            cells: []\n          };\n          _vNode._subGrid = _subGrid;\n        }\n        var rect = _vNode.boundingClientRect;\n        if (rect.width !== 0 && rect.height !== 0 && is_visible_default(node)) {\n          addNodeToGrid(grid, _vNode);\n        }\n        if (is_shadow_root_default(node)) {\n          createGrid(node.shadowRoot, grid, _vNode);\n        }\n        node = treeWalker.nextNode();\n      }\n    }\n    function getRectStack(grid, rect) {\n      var recursed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n      var x = rect.left + rect.width / 2;\n      var y = rect.top + rect.height / 2;\n      var row = y / gridSize | 0;\n      var col = x / gridSize | 0;\n      var stack = grid.cells[row][col].filter(function(gridCellNode) {\n        return gridCellNode.clientRects.find(function(clientRect) {\n          var rectX = clientRect.left;\n          var rectY = clientRect.top;\n          return x <= rectX + clientRect.width && x >= rectX && y <= rectY + clientRect.height && y >= rectY;\n        });\n      });\n      var gridContainer = grid.container;\n      if (gridContainer) {\n        stack = getRectStack(gridContainer._grid, gridContainer.boundingClientRect, true).concat(stack);\n      }\n      if (!recursed) {\n        stack = stack.sort(visuallySort).map(function(vNode) {\n          return vNode.actualNode;\n        }).concat(document.documentElement).filter(function(node, index, array) {\n          return array.indexOf(node) === index;\n        });\n      }\n      return stack;\n    }\n    var _cache = {};\n    var cache = {\n      set: function set(key, value) {\n        _cache[key] = value;\n      },\n      get: function get(key) {\n        return _cache[key];\n      },\n      clear: function clear() {\n        _cache = {};\n      }\n    };\n    var cache_default = cache;\n    function getElementStack(node) {\n      if (!cache_default.get('gridCreated')) {\n        createGrid();\n        cache_default.set('gridCreated', true);\n      }\n      var vNode = get_node_from_tree_default(node);\n      var grid = vNode._grid;\n      if (!grid) {\n        return [];\n      }\n      return getRectStack(grid, vNode.boundingClientRect);\n    }\n    var get_element_stack_default = getElementStack;\n    function getTabbableElements(virtualNode) {\n      var nodeAndDescendents = query_selector_all_default(virtualNode, '*');\n      var tabbableElements = nodeAndDescendents.filter(function(vNode) {\n        var isFocusable2 = vNode.isFocusable;\n        var tabIndex = vNode.actualNode.getAttribute('tabindex');\n        tabIndex = tabIndex && !isNaN(parseInt(tabIndex, 10)) ? parseInt(tabIndex) : null;\n        return tabIndex ? isFocusable2 && tabIndex >= 0 : isFocusable2;\n      });\n      return tabbableElements;\n    }\n    var get_tabbable_elements_default = getTabbableElements;\n    function sanitize(str) {\n      if (!str) {\n        return '';\n      }\n      return str.replace(/\\r\\n/g, '\\n').replace(/\\u00A0/g, ' ').replace(/[\\s]{2,}/g, ' ').trim();\n    }\n    var sanitize_default = sanitize;\n    function getTextElementStack(node) {\n      if (!cache_default.get('gridCreated')) {\n        createGrid();\n        cache_default.set('gridCreated', true);\n      }\n      var vNode = get_node_from_tree_default(node);\n      var grid = vNode._grid;\n      if (!grid) {\n        return [];\n      }\n      var nodeRect = vNode.boundingClientRect;\n      var clientRects = [];\n      Array.from(node.childNodes).forEach(function(elm) {\n        if (elm.nodeType === 3 && sanitize_default(elm.textContent) !== '') {\n          var range = document.createRange();\n          range.selectNodeContents(elm);\n          var rects = range.getClientRects();\n          var outsideRectBounds = Array.from(rects).some(function(rect) {\n            var horizontalMidpoint = rect.left + rect.width / 2;\n            var verticalMidpoint = rect.top + rect.height / 2;\n            return horizontalMidpoint < nodeRect.left || horizontalMidpoint > nodeRect.right || verticalMidpoint < nodeRect.top || verticalMidpoint > nodeRect.bottom;\n          });\n          if (outsideRectBounds) {\n            return;\n          }\n          for (var _i5 = 0; _i5 < rects.length; _i5++) {\n            var rect = rects[_i5];\n            if (rect.width >= 1 && rect.height >= 1) {\n              clientRects.push(rect);\n            }\n          }\n        }\n      });\n      if (!clientRects.length) {\n        return [ get_element_stack_default(node) ];\n      }\n      return clientRects.map(function(rect) {\n        return getRectStack(grid, rect);\n      });\n    }\n    var get_text_element_stack_default = getTextElementStack;\n    var visualRoles = [ 'checkbox', 'img', 'radio', 'range', 'slider', 'spinbutton', 'textbox' ];\n    function isVisualContent(element) {\n      var role = element.getAttribute('role');\n      if (role) {\n        return visualRoles.indexOf(role) !== -1;\n      }\n      switch (element.nodeName.toUpperCase()) {\n       case 'IMG':\n       case 'IFRAME':\n       case 'OBJECT':\n       case 'VIDEO':\n       case 'AUDIO':\n       case 'CANVAS':\n       case 'SVG':\n       case 'MATH':\n       case 'BUTTON':\n       case 'SELECT':\n       case 'TEXTAREA':\n       case 'KEYGEN':\n       case 'PROGRESS':\n       case 'METER':\n        return true;\n\n       case 'INPUT':\n        return element.type !== 'hidden';\n\n       default:\n        return false;\n      }\n    }\n    var is_visual_content_default = isVisualContent;\n    function idrefs(node, attr) {\n      node = node.actualNode || node;\n      try {\n        var doc = get_root_node_default2(node);\n        var result = [];\n        var attrValue = node.getAttribute(attr);\n        if (attrValue) {\n          attrValue = token_list_default(attrValue);\n          for (var index = 0; index < attrValue.length; index++) {\n            result.push(doc.getElementById(attrValue[index]));\n          }\n        }\n        return result;\n      } catch (e) {\n        throw new TypeError('Cannot resolve id references for non-DOM nodes');\n      }\n    }\n    var idrefs_default = idrefs;\n    function visibleVirtual(element, screenReader, noRecursing) {\n      var vNode = element instanceof abstract_virtual_node_default ? element : get_node_from_tree_default(element);\n      var visible4 = !element.actualNode || element.actualNode && is_visible_default(element.actualNode, screenReader);\n      var result = vNode.children.map(function(child) {\n        var _child$props = child.props, nodeType = _child$props.nodeType, nodeValue = _child$props.nodeValue;\n        if (nodeType === 3) {\n          if (nodeValue && visible4) {\n            return nodeValue;\n          }\n        } else if (!noRecursing) {\n          return visibleVirtual(child, screenReader);\n        }\n      }).join('');\n      return sanitize_default(result);\n    }\n    var visible_virtual_default = visibleVirtual;\n    function labelVirtual(virtualNode) {\n      var ref, candidate;\n      if (virtualNode.attr('aria-labelledby')) {\n        ref = idrefs_default(virtualNode.actualNode, 'aria-labelledby');\n        candidate = ref.map(function(thing) {\n          var vNode = get_node_from_tree_default(thing);\n          return vNode ? visible_virtual_default(vNode, true) : '';\n        }).join(' ').trim();\n        if (candidate) {\n          return candidate;\n        }\n      }\n      candidate = virtualNode.attr('aria-label');\n      if (candidate) {\n        candidate = sanitize_default(candidate);\n        if (candidate) {\n          return candidate;\n        }\n      }\n      return null;\n    }\n    var label_virtual_default = labelVirtual;\n    var hiddenTextElms = [ 'HEAD', 'TITLE', 'TEMPLATE', 'SCRIPT', 'STYLE', 'IFRAME', 'OBJECT', 'VIDEO', 'AUDIO', 'NOSCRIPT' ];\n    function hasChildTextNodes(elm) {\n      if (!hiddenTextElms.includes(elm.actualNode.nodeName.toUpperCase())) {\n        return elm.children.some(function(_ref8) {\n          var actualNode = _ref8.actualNode;\n          return actualNode.nodeType === 3 && actualNode.nodeValue.trim();\n        });\n      }\n    }\n    function hasContentVirtual(elm, noRecursion, ignoreAria) {\n      return hasChildTextNodes(elm) || is_visual_content_default(elm.actualNode) || !ignoreAria && !!label_virtual_default(elm) || !noRecursion && elm.children.some(function(child) {\n        return child.actualNode.nodeType === 1 && hasContentVirtual(child);\n      });\n    }\n    var has_content_virtual_default = hasContentVirtual;\n    function hasContent(elm, noRecursion, ignoreAria) {\n      elm = get_node_from_tree_default(elm);\n      return has_content_virtual_default(elm, noRecursion, ignoreAria);\n    }\n    var has_content_default = hasContent;\n    function isHiddenWithCSS(el, descendentVisibilityValue) {\n      var vNode = get_node_from_tree_default(el);\n      if (!vNode) {\n        return _isHiddenWithCSS(el, descendentVisibilityValue);\n      }\n      if (vNode._isHiddenWithCSS === void 0) {\n        vNode._isHiddenWithCSS = _isHiddenWithCSS(el, descendentVisibilityValue);\n      }\n      return vNode._isHiddenWithCSS;\n    }\n    function _isHiddenWithCSS(el, descendentVisibilityValue) {\n      if (el.nodeType === 9) {\n        return false;\n      }\n      if (el.nodeType === 11) {\n        el = el.host;\n      }\n      if ([ 'STYLE', 'SCRIPT' ].includes(el.nodeName.toUpperCase())) {\n        return false;\n      }\n      var style = window.getComputedStyle(el, null);\n      if (!style) {\n        throw new Error('Style does not exist for the given element.');\n      }\n      var displayValue = style.getPropertyValue('display');\n      if (displayValue === 'none') {\n        return true;\n      }\n      var HIDDEN_VISIBILITY_VALUES = [ 'hidden', 'collapse' ];\n      var visibilityValue = style.getPropertyValue('visibility');\n      if (HIDDEN_VISIBILITY_VALUES.includes(visibilityValue) && !descendentVisibilityValue) {\n        return true;\n      }\n      if (HIDDEN_VISIBILITY_VALUES.includes(visibilityValue) && descendentVisibilityValue && HIDDEN_VISIBILITY_VALUES.includes(descendentVisibilityValue)) {\n        return true;\n      }\n      var parent = get_composed_parent_default(el);\n      if (parent && !HIDDEN_VISIBILITY_VALUES.includes(visibilityValue)) {\n        return isHiddenWithCSS(parent, visibilityValue);\n      }\n      return false;\n    }\n    var is_hidden_with_css_default = isHiddenWithCSS;\n    function focusDisabled(el) {\n      var vNode = el instanceof abstract_virtual_node_default ? el : get_node_from_tree_default(el);\n      if (vNode.hasAttr('disabled')) {\n        return true;\n      }\n      if (vNode.props.nodeName !== 'area') {\n        if (!vNode.actualNode) {\n          return false;\n        }\n        return is_hidden_with_css_default(vNode.actualNode);\n      }\n      return false;\n    }\n    var focus_disabled_default = focusDisabled;\n    function isNativelyFocusable(el) {\n      var vNode = el instanceof abstract_virtual_node_default ? el : get_node_from_tree_default(el);\n      if (!vNode || focus_disabled_default(vNode)) {\n        return false;\n      }\n      switch (vNode.props.nodeName) {\n       case 'a':\n       case 'area':\n        if (vNode.hasAttr('href')) {\n          return true;\n        }\n        break;\n\n       case 'input':\n        return vNode.props.type !== 'hidden';\n\n       case 'textarea':\n       case 'select':\n       case 'summary':\n       case 'button':\n        return true;\n\n       case 'details':\n        return !query_selector_all_default(vNode, 'summary').length;\n      }\n      return false;\n    }\n    var is_natively_focusable_default = isNativelyFocusable;\n    function isFocusable(el) {\n      var vNode = el instanceof abstract_virtual_node_default ? el : get_node_from_tree_default(el);\n      if (vNode.props.nodeType !== 1) {\n        return false;\n      }\n      if (focus_disabled_default(vNode)) {\n        return false;\n      } else if (is_natively_focusable_default(vNode)) {\n        return true;\n      }\n      var tabindex = vNode.attr('tabindex');\n      if (tabindex && !isNaN(parseInt(tabindex, 10))) {\n        return true;\n      }\n      return false;\n    }\n    var is_focusable_default = isFocusable;\n    function insertedIntoFocusOrder(el) {\n      var tabIndex = parseInt(el.getAttribute('tabindex'), 10);\n      return tabIndex > -1 && is_focusable_default(el) && !is_natively_focusable_default(el);\n    }\n    var inserted_into_focus_order_default = insertedIntoFocusOrder;\n    function isHTML5(doc) {\n      var node = doc.doctype;\n      if (node === null) {\n        return false;\n      }\n      return node.name === 'html' && !node.publicId && !node.systemId;\n    }\n    var is_html5_default = isHTML5;\n    function walkDomNode(node, functor) {\n      if (functor(node.actualNode) !== false) {\n        node.children.forEach(function(child) {\n          return walkDomNode(child, functor);\n        });\n      }\n    }\n    var blockLike = [ 'block', 'list-item', 'table', 'flex', 'grid', 'inline-block' ];\n    function isBlock(elm) {\n      var display = window.getComputedStyle(elm).getPropertyValue('display');\n      return blockLike.includes(display) || display.substr(0, 6) === 'table-';\n    }\n    function getBlockParent(node) {\n      var parentBlock = get_composed_parent_default(node);\n      while (parentBlock && !isBlock(parentBlock)) {\n        parentBlock = get_composed_parent_default(parentBlock);\n      }\n      return get_node_from_tree_default(parentBlock);\n    }\n    function isInTextBlock(node) {\n      if (isBlock(node)) {\n        return false;\n      }\n      var virtualParent = getBlockParent(node);\n      var parentText = '';\n      var linkText = '';\n      var inBrBlock = 0;\n      walkDomNode(virtualParent, function(currNode) {\n        if (inBrBlock === 2) {\n          return false;\n        }\n        if (currNode.nodeType === 3) {\n          parentText += currNode.nodeValue;\n        }\n        if (currNode.nodeType !== 1) {\n          return;\n        }\n        var nodeName2 = (currNode.nodeName || '').toUpperCase();\n        if ([ 'BR', 'HR' ].includes(nodeName2)) {\n          if (inBrBlock === 0) {\n            parentText = '';\n            linkText = '';\n          } else {\n            inBrBlock = 2;\n          }\n        } else if (currNode.style.display === 'none' || currNode.style.overflow === 'hidden' || ![ '', null, 'none' ].includes(currNode.style['float']) || ![ '', null, 'relative' ].includes(currNode.style.position)) {\n          return false;\n        } else if (nodeName2 === 'A' && currNode.href || (currNode.getAttribute('role') || '').toLowerCase() === 'link') {\n          if (currNode === node) {\n            inBrBlock = 1;\n          }\n          linkText += currNode.textContent;\n          return false;\n        }\n      });\n      parentText = sanitize_default(parentText);\n      linkText = sanitize_default(linkText);\n      return parentText.length > linkText.length;\n    }\n    var is_in_text_block_default = isInTextBlock;\n    function isModalOpen(options) {\n      options = options || {};\n      var modalPercent = options.modalPercent || .75;\n      if (cache_default.get('isModalOpen')) {\n        return cache_default.get('isModalOpen');\n      }\n      var definiteModals = query_selector_all_filter_default(axe._tree[0], 'dialog, [role=dialog], [aria-modal=true]', function(vNode) {\n        return is_visible_default(vNode.actualNode);\n      });\n      if (definiteModals.length) {\n        cache_default.set('isModalOpen', true);\n        return true;\n      }\n      var viewport = get_viewport_size_default(window);\n      var percentWidth = viewport.width * modalPercent;\n      var percentHeight = viewport.height * modalPercent;\n      var x = (viewport.width - percentWidth) / 2;\n      var y = (viewport.height - percentHeight) / 2;\n      var points = [ {\n        x: x,\n        y: y\n      }, {\n        x: viewport.width - x,\n        y: y\n      }, {\n        x: viewport.width / 2,\n        y: viewport.height / 2\n      }, {\n        x: x,\n        y: viewport.height - y\n      }, {\n        x: viewport.width - x,\n        y: viewport.height - y\n      } ];\n      var stacks = points.map(function(point) {\n        return Array.from(document.elementsFromPoint(point.x, point.y));\n      });\n      var _loop3 = function _loop3(_i6) {\n        var modalElement = stacks[_i6].find(function(elm) {\n          var style = window.getComputedStyle(elm);\n          return parseInt(style.width, 10) >= percentWidth && parseInt(style.height, 10) >= percentHeight && style.getPropertyValue('pointer-events') !== 'none' && (style.position === 'absolute' || style.position === 'fixed');\n        });\n        if (modalElement && stacks.every(function(stack) {\n          return stack.includes(modalElement);\n        })) {\n          cache_default.set('isModalOpen', true);\n          return {\n            v: true\n          };\n        }\n      };\n      for (var _i6 = 0; _i6 < stacks.length; _i6++) {\n        var _ret = _loop3(_i6);\n        if (_typeof(_ret) === 'object') {\n          return _ret.v;\n        }\n      }\n      cache_default.set('isModalOpen', void 0);\n      return void 0;\n    }\n    var is_modal_open_default = isModalOpen;\n    function isNode(element) {\n      return element instanceof window.Node;\n    }\n    var is_node_default = isNode;\n    var data = {};\n    var incompleteData = {\n      set: function set(key, reason) {\n        if (typeof key !== 'string') {\n          throw new Error('Incomplete data: key must be a string');\n        }\n        if (reason) {\n          data[key] = reason;\n        }\n        return data[key];\n      },\n      get: function get(key) {\n        return data[key];\n      },\n      clear: function clear() {\n        data = {};\n      }\n    };\n    var incomplete_data_default = incompleteData;\n    function elementHasImage(elm, style) {\n      var graphicNodes = [ 'IMG', 'CANVAS', 'OBJECT', 'IFRAME', 'VIDEO', 'SVG' ];\n      var nodeName2 = elm.nodeName.toUpperCase();\n      if (graphicNodes.includes(nodeName2)) {\n        incomplete_data_default.set('bgColor', 'imgNode');\n        return true;\n      }\n      style = style || window.getComputedStyle(elm);\n      var bgImageStyle = style.getPropertyValue('background-image');\n      var hasBgImage = bgImageStyle !== 'none';\n      if (hasBgImage) {\n        var hasGradient = /gradient/.test(bgImageStyle);\n        incomplete_data_default.set('bgColor', hasGradient ? 'bgGradient' : 'bgImage');\n      }\n      return hasBgImage;\n    }\n    var element_has_image_default = elementHasImage;\n    var ariaAttrs = {\n      'aria-activedescendant': {\n        type: 'idref',\n        allowEmpty: true\n      },\n      'aria-atomic': {\n        type: 'boolean',\n        global: true\n      },\n      'aria-autocomplete': {\n        type: 'nmtoken',\n        values: [ 'inline', 'list', 'both', 'none' ]\n      },\n      'aria-busy': {\n        type: 'boolean',\n        global: true\n      },\n      'aria-checked': {\n        type: 'nmtoken',\n        values: [ 'false', 'mixed', 'true', 'undefined' ]\n      },\n      'aria-colcount': {\n        type: 'int',\n        minValue: -1\n      },\n      'aria-colindex': {\n        type: 'int',\n        minValue: 1\n      },\n      'aria-colspan': {\n        type: 'int',\n        minValue: 1\n      },\n      'aria-controls': {\n        type: 'idrefs',\n        allowEmpty: true,\n        global: true\n      },\n      'aria-current': {\n        type: 'nmtoken',\n        allowEmpty: true,\n        values: [ 'page', 'step', 'location', 'date', 'time', 'true', 'false' ],\n        global: true\n      },\n      'aria-describedby': {\n        type: 'idrefs',\n        allowEmpty: true,\n        global: true\n      },\n      'aria-details': {\n        type: 'idref',\n        allowEmpty: true,\n        global: true\n      },\n      'aria-disabled': {\n        type: 'boolean',\n        global: true\n      },\n      'aria-dropeffect': {\n        type: 'nmtokens',\n        values: [ 'copy', 'execute', 'link', 'move', 'none', 'popup' ],\n        global: true\n      },\n      'aria-errormessage': {\n        type: 'idref',\n        allowEmpty: true,\n        global: true\n      },\n      'aria-expanded': {\n        type: 'nmtoken',\n        values: [ 'true', 'false', 'undefined' ]\n      },\n      'aria-flowto': {\n        type: 'idrefs',\n        allowEmpty: true,\n        global: true\n      },\n      'aria-grabbed': {\n        type: 'nmtoken',\n        values: [ 'true', 'false', 'undefined' ],\n        global: true\n      },\n      'aria-haspopup': {\n        type: 'nmtoken',\n        allowEmpty: true,\n        values: [ 'true', 'false', 'menu', 'listbox', 'tree', 'grid', 'dialog' ],\n        global: true\n      },\n      'aria-hidden': {\n        type: 'nmtoken',\n        values: [ 'true', 'false', 'undefined' ],\n        global: true\n      },\n      'aria-invalid': {\n        type: 'nmtoken',\n        allowEmpty: true,\n        values: [ 'grammar', 'false', 'spelling', 'true' ],\n        global: true\n      },\n      'aria-keyshortcuts': {\n        type: 'string',\n        allowEmpty: true,\n        global: true\n      },\n      'aria-label': {\n        type: 'string',\n        allowEmpty: true,\n        global: true\n      },\n      'aria-labelledby': {\n        type: 'idrefs',\n        allowEmpty: true,\n        global: true\n      },\n      'aria-level': {\n        type: 'int',\n        minValue: 1\n      },\n      'aria-live': {\n        type: 'nmtoken',\n        values: [ 'assertive', 'off', 'polite' ],\n        global: true\n      },\n      'aria-modal': {\n        type: 'boolean'\n      },\n      'aria-multiline': {\n        type: 'boolean'\n      },\n      'aria-multiselectable': {\n        type: 'boolean'\n      },\n      'aria-orientation': {\n        type: 'nmtoken',\n        values: [ 'horizontal', 'undefined', 'vertical' ]\n      },\n      'aria-owns': {\n        type: 'idrefs',\n        allowEmpty: true,\n        global: true\n      },\n      'aria-placeholder': {\n        type: 'string',\n        allowEmpty: true\n      },\n      'aria-posinset': {\n        type: 'int',\n        minValue: 1\n      },\n      'aria-pressed': {\n        type: 'nmtoken',\n        values: [ 'false', 'mixed', 'true', 'undefined' ]\n      },\n      'aria-readonly': {\n        type: 'boolean'\n      },\n      'aria-relevant': {\n        type: 'nmtokens',\n        values: [ 'additions', 'all', 'removals', 'text' ],\n        global: true\n      },\n      'aria-required': {\n        type: 'boolean'\n      },\n      'aria-roledescription': {\n        type: 'string',\n        allowEmpty: true,\n        global: true\n      },\n      'aria-rowcount': {\n        type: 'int',\n        minValue: -1\n      },\n      'aria-rowindex': {\n        type: 'int',\n        minValue: 1\n      },\n      'aria-rowspan': {\n        type: 'int',\n        minValue: 0\n      },\n      'aria-selected': {\n        type: 'nmtoken',\n        values: [ 'false', 'true', 'undefined' ]\n      },\n      'aria-setsize': {\n        type: 'int',\n        minValue: -1\n      },\n      'aria-sort': {\n        type: 'nmtoken',\n        values: [ 'ascending', 'descending', 'none', 'other' ]\n      },\n      'aria-valuemax': {\n        type: 'decimal'\n      },\n      'aria-valuemin': {\n        type: 'decimal'\n      },\n      'aria-valuenow': {\n        type: 'decimal'\n      },\n      'aria-valuetext': {\n        type: 'string'\n      }\n    };\n    var aria_attrs_default = ariaAttrs;\n    var ariaRoles = {\n      alert: {\n        type: 'widget',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'section' ]\n      },\n      alertdialog: {\n        type: 'widget',\n        allowedAttrs: [ 'aria-expanded', 'aria-modal' ],\n        superclassRole: [ 'alert', 'dialog' ],\n        accessibleNameRequired: true\n      },\n      application: {\n        type: 'landmark',\n        allowedAttrs: [ 'aria-activedescendant', 'aria-expanded' ],\n        superclassRole: [ 'structure' ],\n        accessibleNameRequired: true\n      },\n      article: {\n        type: 'structure',\n        allowedAttrs: [ 'aria-posinset', 'aria-setsize', 'aria-expanded' ],\n        superclassRole: [ 'document' ]\n      },\n      banner: {\n        type: 'landmark',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'landmark' ]\n      },\n      blockquote: {\n        type: 'structure',\n        superclassRole: [ 'section' ]\n      },\n      button: {\n        type: 'widget',\n        allowedAttrs: [ 'aria-expanded', 'aria-pressed' ],\n        superclassRole: [ 'command' ],\n        accessibleNameRequired: true,\n        nameFromContent: true,\n        childrenPresentational: true\n      },\n      caption: {\n        type: 'structure',\n        requiredContext: [ 'figure', 'table', 'grid', 'treegrid' ],\n        superclassRole: [ 'section' ],\n        prohibitedAttrs: [ 'aria-label', 'aria-labelledby' ]\n      },\n      cell: {\n        type: 'structure',\n        requiredContext: [ 'row' ],\n        allowedAttrs: [ 'aria-colindex', 'aria-colspan', 'aria-rowindex', 'aria-rowspan', 'aria-expanded' ],\n        superclassRole: [ 'section' ],\n        nameFromContent: true\n      },\n      checkbox: {\n        type: 'widget',\n        allowedAttrs: [ 'aria-checked', 'aria-readonly', 'aria-required' ],\n        superclassRole: [ 'input' ],\n        accessibleNameRequired: true,\n        nameFromContent: true,\n        childrenPresentational: true\n      },\n      code: {\n        type: 'structure',\n        superclassRole: [ 'section' ],\n        prohibitedAttrs: [ 'aria-label', 'aria-labelledby' ]\n      },\n      columnheader: {\n        type: 'structure',\n        requiredContext: [ 'row' ],\n        allowedAttrs: [ 'aria-sort', 'aria-colindex', 'aria-colspan', 'aria-expanded', 'aria-readonly', 'aria-required', 'aria-rowindex', 'aria-rowspan', 'aria-selected' ],\n        superclassRole: [ 'cell', 'gridcell', 'sectionhead' ],\n        accessibleNameRequired: false,\n        nameFromContent: true\n      },\n      combobox: {\n        type: 'composite',\n        requiredOwned: [ 'listbox', 'tree', 'grid', 'dialog', 'textbox' ],\n        requiredAttrs: [ 'aria-expanded' ],\n        allowedAttrs: [ 'aria-controls', 'aria-autocomplete', 'aria-readonly', 'aria-required', 'aria-activedescendant', 'aria-orientation' ],\n        superclassRole: [ 'select' ],\n        accessibleNameRequired: true\n      },\n      command: {\n        type: 'abstract',\n        superclassRole: [ 'widget' ]\n      },\n      complementary: {\n        type: 'landmark',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'landmark' ]\n      },\n      composite: {\n        type: 'abstract',\n        superclassRole: [ 'widget' ]\n      },\n      contentinfo: {\n        type: 'landmark',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'landmark' ]\n      },\n      definition: {\n        type: 'structure',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'section' ]\n      },\n      deletion: {\n        type: 'structure',\n        superclassRole: [ 'section' ],\n        prohibitedAttrs: [ 'aria-label', 'aria-labelledby' ]\n      },\n      dialog: {\n        type: 'widget',\n        allowedAttrs: [ 'aria-expanded', 'aria-modal' ],\n        superclassRole: [ 'window' ],\n        accessibleNameRequired: true\n      },\n      directory: {\n        type: 'structure',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'list' ],\n        nameFromContent: true\n      },\n      document: {\n        type: 'structure',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'structure' ]\n      },\n      emphasis: {\n        type: 'structure',\n        superclassRole: [ 'section' ],\n        prohibitedAttrs: [ 'aria-label', 'aria-labelledby' ]\n      },\n      feed: {\n        type: 'structure',\n        requiredOwned: [ 'article' ],\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'list' ]\n      },\n      figure: {\n        type: 'structure',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'section' ],\n        nameFromContent: true\n      },\n      form: {\n        type: 'landmark',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'landmark' ]\n      },\n      grid: {\n        type: 'composite',\n        requiredOwned: [ 'rowgroup', 'row' ],\n        allowedAttrs: [ 'aria-level', 'aria-multiselectable', 'aria-readonly', 'aria-activedescendant', 'aria-colcount', 'aria-expanded', 'aria-rowcount' ],\n        superclassRole: [ 'composite', 'table' ],\n        accessibleNameRequired: false\n      },\n      gridcell: {\n        type: 'widget',\n        requiredContext: [ 'row' ],\n        allowedAttrs: [ 'aria-readonly', 'aria-required', 'aria-selected', 'aria-colindex', 'aria-colspan', 'aria-expanded', 'aria-rowindex', 'aria-rowspan' ],\n        superclassRole: [ 'cell', 'widget' ],\n        nameFromContent: true\n      },\n      group: {\n        type: 'structure',\n        allowedAttrs: [ 'aria-activedescendant', 'aria-expanded' ],\n        superclassRole: [ 'section' ]\n      },\n      heading: {\n        type: 'structure',\n        requiredAttrs: [ 'aria-level' ],\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'sectionhead' ],\n        accessibleNameRequired: false,\n        nameFromContent: true\n      },\n      img: {\n        type: 'structure',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'section' ],\n        accessibleNameRequired: true,\n        childrenPresentational: true\n      },\n      input: {\n        type: 'abstract',\n        superclassRole: [ 'widget' ]\n      },\n      insertion: {\n        type: 'structure',\n        superclassRole: [ 'section' ],\n        prohibitedAttrs: [ 'aria-label', 'aria-labelledby' ]\n      },\n      landmark: {\n        type: 'abstract',\n        superclassRole: [ 'section' ]\n      },\n      link: {\n        type: 'widget',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'command' ],\n        accessibleNameRequired: true,\n        nameFromContent: true\n      },\n      list: {\n        type: 'structure',\n        requiredOwned: [ 'group', 'listitem' ],\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'section' ]\n      },\n      listbox: {\n        type: 'composite',\n        requiredOwned: [ 'option' ],\n        allowedAttrs: [ 'aria-multiselectable', 'aria-readonly', 'aria-required', 'aria-activedescendant', 'aria-expanded', 'aria-orientation' ],\n        superclassRole: [ 'select' ],\n        accessibleNameRequired: true\n      },\n      listitem: {\n        type: 'structure',\n        requiredContext: [ 'list', 'group' ],\n        allowedAttrs: [ 'aria-level', 'aria-posinset', 'aria-setsize', 'aria-expanded' ],\n        superclassRole: [ 'section' ],\n        nameFromContent: true\n      },\n      log: {\n        type: 'widget',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'section' ]\n      },\n      main: {\n        type: 'landmark',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'landmark' ]\n      },\n      marquee: {\n        type: 'widget',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'section' ]\n      },\n      math: {\n        type: 'structure',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'section' ],\n        childrenPresentational: true\n      },\n      menu: {\n        type: 'composite',\n        requiredOwned: [ 'group', 'menuitemradio', 'menuitem', 'menuitemcheckbox' ],\n        allowedAttrs: [ 'aria-activedescendant', 'aria-expanded', 'aria-orientation' ],\n        superclassRole: [ 'select' ]\n      },\n      menubar: {\n        type: 'composite',\n        requiredOwned: [ 'group', 'menuitemradio', 'menuitem', 'menuitemcheckbox' ],\n        allowedAttrs: [ 'aria-activedescendant', 'aria-expanded', 'aria-orientation' ],\n        superclassRole: [ 'menu' ]\n      },\n      menuitem: {\n        type: 'widget',\n        requiredContext: [ 'menu', 'menubar', 'group' ],\n        allowedAttrs: [ 'aria-posinset', 'aria-setsize', 'aria-expanded' ],\n        superclassRole: [ 'command' ],\n        accessibleNameRequired: true,\n        nameFromContent: true\n      },\n      menuitemcheckbox: {\n        type: 'widget',\n        requiredContext: [ 'menu', 'menubar', 'group' ],\n        allowedAttrs: [ 'aria-checked', 'aria-posinset', 'aria-readonly', 'aria-setsize' ],\n        superclassRole: [ 'checkbox', 'menuitem' ],\n        accessibleNameRequired: true,\n        nameFromContent: true,\n        childrenPresentational: true\n      },\n      menuitemradio: {\n        type: 'widget',\n        requiredContext: [ 'menu', 'menubar', 'group' ],\n        allowedAttrs: [ 'aria-checked', 'aria-posinset', 'aria-readonly', 'aria-setsize' ],\n        superclassRole: [ 'menuitemcheckbox', 'radio' ],\n        accessibleNameRequired: true,\n        nameFromContent: true,\n        childrenPresentational: true\n      },\n      meter: {\n        type: 'structure',\n        allowedAttrs: [ 'aria-valuetext' ],\n        requiredAttrs: [ 'aria-valuemax', 'aria-valuemin', 'aria-valuenow' ],\n        superclassRole: [ 'range' ],\n        accessibleNameRequired: true,\n        childrenPresentational: true\n      },\n      navigation: {\n        type: 'landmark',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'landmark' ]\n      },\n      none: {\n        type: 'structure',\n        superclassRole: [ 'structure' ],\n        prohibitedAttrs: [ 'aria-label', 'aria-labelledby' ]\n      },\n      note: {\n        type: 'structure',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'section' ]\n      },\n      option: {\n        type: 'widget',\n        requiredContext: [ 'listbox' ],\n        allowedAttrs: [ 'aria-selected', 'aria-checked', 'aria-posinset', 'aria-setsize' ],\n        superclassRole: [ 'input' ],\n        accessibleNameRequired: true,\n        nameFromContent: true,\n        childrenPresentational: true\n      },\n      paragraph: {\n        type: 'structure',\n        superclassRole: [ 'section' ],\n        prohibitedAttrs: [ 'aria-label', 'aria-labelledby' ]\n      },\n      presentation: {\n        type: 'structure',\n        superclassRole: [ 'structure' ],\n        prohibitedAttrs: [ 'aria-label', 'aria-labelledby' ]\n      },\n      progressbar: {\n        type: 'widget',\n        allowedAttrs: [ 'aria-expanded', 'aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-valuetext' ],\n        superclassRole: [ 'range' ],\n        accessibleNameRequired: true,\n        childrenPresentational: true\n      },\n      radio: {\n        type: 'widget',\n        allowedAttrs: [ 'aria-checked', 'aria-posinset', 'aria-setsize', 'aria-required' ],\n        superclassRole: [ 'input' ],\n        accessibleNameRequired: true,\n        nameFromContent: true,\n        childrenPresentational: true\n      },\n      radiogroup: {\n        type: 'composite',\n        requiredOwned: [ 'radio' ],\n        allowedAttrs: [ 'aria-readonly', 'aria-required', 'aria-activedescendant', 'aria-expanded', 'aria-orientation' ],\n        superclassRole: [ 'select' ],\n        accessibleNameRequired: false\n      },\n      range: {\n        type: 'abstract',\n        superclassRole: [ 'widget' ]\n      },\n      region: {\n        type: 'landmark',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'landmark' ],\n        accessibleNameRequired: false\n      },\n      roletype: {\n        type: 'abstract',\n        superclassRole: []\n      },\n      row: {\n        type: 'structure',\n        requiredContext: [ 'grid', 'rowgroup', 'table', 'treegrid' ],\n        requiredOwned: [ 'cell', 'columnheader', 'gridcell', 'rowheader' ],\n        allowedAttrs: [ 'aria-colindex', 'aria-level', 'aria-rowindex', 'aria-selected', 'aria-activedescendant', 'aria-expanded' ],\n        superclassRole: [ 'group', 'widget' ],\n        nameFromContent: true\n      },\n      rowgroup: {\n        type: 'structure',\n        requiredContext: [ 'grid', 'table', 'treegrid' ],\n        requiredOwned: [ 'row' ],\n        superclassRole: [ 'structure' ],\n        nameFromContent: true\n      },\n      rowheader: {\n        type: 'structure',\n        requiredContext: [ 'row' ],\n        allowedAttrs: [ 'aria-sort', 'aria-colindex', 'aria-colspan', 'aria-expanded', 'aria-readonly', 'aria-required', 'aria-rowindex', 'aria-rowspan', 'aria-selected' ],\n        superclassRole: [ 'cell', 'gridcell', 'sectionhead' ],\n        accessibleNameRequired: false,\n        nameFromContent: true\n      },\n      scrollbar: {\n        type: 'widget',\n        requiredAttrs: [ 'aria-valuenow' ],\n        allowedAttrs: [ 'aria-controls', 'aria-orientation', 'aria-valuemax', 'aria-valuemin', 'aria-valuetext' ],\n        superclassRole: [ 'range' ],\n        childrenPresentational: true\n      },\n      search: {\n        type: 'landmark',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'landmark' ]\n      },\n      searchbox: {\n        type: 'widget',\n        allowedAttrs: [ 'aria-activedescendant', 'aria-autocomplete', 'aria-multiline', 'aria-placeholder', 'aria-readonly', 'aria-required' ],\n        superclassRole: [ 'textbox' ],\n        accessibleNameRequired: true\n      },\n      section: {\n        type: 'abstract',\n        superclassRole: [ 'structure' ],\n        nameFromContent: true\n      },\n      sectionhead: {\n        type: 'abstract',\n        superclassRole: [ 'structure' ],\n        nameFromContent: true\n      },\n      select: {\n        type: 'abstract',\n        superclassRole: [ 'composite', 'group' ]\n      },\n      separator: {\n        type: 'structure',\n        allowedAttrs: [ 'aria-valuemax', 'aria-valuemin', 'aria-valuenow', 'aria-orientation', 'aria-valuetext' ],\n        superclassRole: [ 'structure', 'widget' ],\n        childrenPresentational: true\n      },\n      slider: {\n        type: 'widget',\n        requiredAttrs: [ 'aria-valuenow' ],\n        allowedAttrs: [ 'aria-valuemax', 'aria-valuemin', 'aria-orientation', 'aria-readonly', 'aria-valuetext' ],\n        superclassRole: [ 'input', 'range' ],\n        accessibleNameRequired: true,\n        childrenPresentational: true\n      },\n      spinbutton: {\n        type: 'widget',\n        requiredAttrs: [ 'aria-valuenow' ],\n        allowedAttrs: [ 'aria-valuemax', 'aria-valuemin', 'aria-readonly', 'aria-required', 'aria-activedescendant', 'aria-valuetext' ],\n        superclassRole: [ 'composite', 'input', 'range' ],\n        accessibleNameRequired: true\n      },\n      status: {\n        type: 'widget',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'section' ]\n      },\n      strong: {\n        type: 'structure',\n        superclassRole: [ 'section' ],\n        prohibitedAttrs: [ 'aria-label', 'aria-labelledby' ]\n      },\n      structure: {\n        type: 'abstract',\n        superclassRole: [ 'roletype' ]\n      },\n      subscript: {\n        type: 'structure',\n        superclassRole: [ 'section' ],\n        prohibitedAttrs: [ 'aria-label', 'aria-labelledby' ]\n      },\n      superscript: {\n        type: 'structure',\n        superclassRole: [ 'section' ],\n        prohibitedAttrs: [ 'aria-label', 'aria-labelledby' ]\n      },\n      switch: {\n        type: 'widget',\n        requiredAttrs: [ 'aria-checked' ],\n        allowedAttrs: [ 'aria-readonly' ],\n        superclassRole: [ 'checkbox' ],\n        accessibleNameRequired: true,\n        nameFromContent: true,\n        childrenPresentational: true\n      },\n      tab: {\n        type: 'widget',\n        requiredContext: [ 'tablist' ],\n        allowedAttrs: [ 'aria-posinset', 'aria-selected', 'aria-setsize', 'aria-expanded' ],\n        superclassRole: [ 'sectionhead', 'widget' ],\n        nameFromContent: true,\n        childrenPresentational: true\n      },\n      table: {\n        type: 'structure',\n        requiredOwned: [ 'rowgroup', 'row' ],\n        allowedAttrs: [ 'aria-colcount', 'aria-rowcount', 'aria-expanded' ],\n        superclassRole: [ 'section' ],\n        accessibleNameRequired: false,\n        nameFromContent: true\n      },\n      tablist: {\n        type: 'composite',\n        requiredOwned: [ 'tab' ],\n        allowedAttrs: [ 'aria-level', 'aria-multiselectable', 'aria-orientation', 'aria-activedescendant', 'aria-expanded' ],\n        superclassRole: [ 'composite' ]\n      },\n      tabpanel: {\n        type: 'widget',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'section' ],\n        accessibleNameRequired: false\n      },\n      term: {\n        type: 'structure',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'section' ],\n        nameFromContent: true\n      },\n      text: {\n        type: 'structure',\n        superclassRole: [ 'section' ],\n        nameFromContent: true\n      },\n      textbox: {\n        type: 'widget',\n        allowedAttrs: [ 'aria-activedescendant', 'aria-autocomplete', 'aria-multiline', 'aria-placeholder', 'aria-readonly', 'aria-required' ],\n        superclassRole: [ 'input' ],\n        accessibleNameRequired: true\n      },\n      time: {\n        type: 'structure',\n        superclassRole: [ 'section' ]\n      },\n      timer: {\n        type: 'widget',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'status' ]\n      },\n      toolbar: {\n        type: 'structure',\n        allowedAttrs: [ 'aria-orientation', 'aria-activedescendant', 'aria-expanded' ],\n        superclassRole: [ 'group' ],\n        accessibleNameRequired: true\n      },\n      tooltip: {\n        type: 'structure',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'section' ],\n        nameFromContent: true\n      },\n      tree: {\n        type: 'composite',\n        requiredOwned: [ 'group', 'treeitem' ],\n        allowedAttrs: [ 'aria-multiselectable', 'aria-required', 'aria-activedescendant', 'aria-expanded', 'aria-orientation' ],\n        superclassRole: [ 'select' ],\n        accessibleNameRequired: false\n      },\n      treegrid: {\n        type: 'composite',\n        requiredOwned: [ 'rowgroup', 'row' ],\n        allowedAttrs: [ 'aria-activedescendant', 'aria-colcount', 'aria-expanded', 'aria-level', 'aria-multiselectable', 'aria-orientation', 'aria-readonly', 'aria-required', 'aria-rowcount' ],\n        superclassRole: [ 'grid', 'tree' ],\n        accessibleNameRequired: false\n      },\n      treeitem: {\n        type: 'widget',\n        requiredContext: [ 'group', 'tree' ],\n        allowedAttrs: [ 'aria-checked', 'aria-expanded', 'aria-level', 'aria-posinset', 'aria-selected', 'aria-setsize' ],\n        superclassRole: [ 'listitem', 'option' ],\n        accessibleNameRequired: true,\n        nameFromContent: true\n      },\n      widget: {\n        type: 'abstract',\n        superclassRole: [ 'roletype' ]\n      },\n      window: {\n        type: 'abstract',\n        superclassRole: [ 'roletype' ]\n      }\n    };\n    var aria_roles_default = ariaRoles;\n    var dpubRoles = {\n      'doc-abstract': {\n        type: 'section',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'section' ]\n      },\n      'doc-acknowledgments': {\n        type: 'landmark',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'landmark' ]\n      },\n      'doc-afterword': {\n        type: 'landmark',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'landmark' ]\n      },\n      'doc-appendix': {\n        type: 'landmark',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'landmark' ]\n      },\n      'doc-backlink': {\n        type: 'link',\n        allowedAttrs: [ 'aria-expanded' ],\n        nameFromContent: true,\n        superclassRole: [ 'link' ]\n      },\n      'doc-biblioentry': {\n        type: 'listitem',\n        requiredContext: [ 'doc-bibliography' ],\n        allowedAttrs: [ 'aria-expanded', 'aria-level', 'aria-posinset', 'aria-setsize' ],\n        superclassRole: [ 'listitem' ]\n      },\n      'doc-bibliography': {\n        type: 'landmark',\n        requiredOwned: [ 'doc-biblioentry' ],\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'landmark' ]\n      },\n      'doc-biblioref': {\n        type: 'link',\n        allowedAttrs: [ 'aria-expanded' ],\n        nameFromContent: true,\n        superclassRole: [ 'link' ]\n      },\n      'doc-chapter': {\n        type: 'landmark',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'landmark' ]\n      },\n      'doc-colophon': {\n        type: 'section',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'section' ]\n      },\n      'doc-conclusion': {\n        type: 'landmark',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'landmark' ]\n      },\n      'doc-cover': {\n        type: 'img',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'img' ]\n      },\n      'doc-credit': {\n        type: 'section',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'section' ]\n      },\n      'doc-credits': {\n        type: 'landmark',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'landmark' ]\n      },\n      'doc-dedication': {\n        type: 'section',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'section' ]\n      },\n      'doc-endnote': {\n        type: 'listitem',\n        requiredContext: [ 'doc-endnotes' ],\n        allowedAttrs: [ 'aria-expanded', 'aria-level', 'aria-posinset', 'aria-setsize' ],\n        superclassRole: [ 'listitem' ]\n      },\n      'doc-endnotes': {\n        type: 'landmark',\n        requiredOwned: [ 'doc-endnote' ],\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'landmark' ]\n      },\n      'doc-epigraph': {\n        type: 'section',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'section' ]\n      },\n      'doc-epilogue': {\n        type: 'landmark',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'landmark' ]\n      },\n      'doc-errata': {\n        type: 'landmark',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'landmark' ]\n      },\n      'doc-example': {\n        type: 'section',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'section' ]\n      },\n      'doc-footnote': {\n        type: 'section',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'section' ]\n      },\n      'doc-foreword': {\n        type: 'landmark',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'landmark' ]\n      },\n      'doc-glossary': {\n        type: 'landmark',\n        requiredOwned: [ 'definition', 'term' ],\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'landmark' ]\n      },\n      'doc-glossref': {\n        type: 'link',\n        allowedAttrs: [ 'aria-expanded' ],\n        nameFromContent: true,\n        superclassRole: [ 'link' ]\n      },\n      'doc-index': {\n        type: 'navigation',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'navigation' ]\n      },\n      'doc-introduction': {\n        type: 'landmark',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'landmark' ]\n      },\n      'doc-noteref': {\n        type: 'link',\n        allowedAttrs: [ 'aria-expanded' ],\n        nameFromContent: true,\n        superclassRole: [ 'link' ]\n      },\n      'doc-notice': {\n        type: 'note',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'note' ]\n      },\n      'doc-pagebreak': {\n        type: 'separator',\n        allowedAttrs: [ 'aria-expanded', 'aria-orientation' ],\n        superclassRole: [ 'separator' ],\n        childrenPresentational: true\n      },\n      'doc-pagelist': {\n        type: 'navigation',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'navigation' ]\n      },\n      'doc-part': {\n        type: 'landmark',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'landmark' ]\n      },\n      'doc-preface': {\n        type: 'landmark',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'landmark' ]\n      },\n      'doc-prologue': {\n        type: 'landmark',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'landmark' ]\n      },\n      'doc-pullquote': {\n        type: 'none',\n        superclassRole: [ 'none' ]\n      },\n      'doc-qna': {\n        type: 'section',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'section' ]\n      },\n      'doc-subtitle': {\n        type: 'sectionhead',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'sectionhead' ]\n      },\n      'doc-tip': {\n        type: 'note',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'note' ]\n      },\n      'doc-toc': {\n        type: 'navigation',\n        allowedAttrs: [ 'aria-expanded' ],\n        superclassRole: [ 'navigation' ]\n      }\n    };\n    var dpub_roles_default = dpubRoles;\n    var graphicsRoles = {\n      'graphics-document': {\n        type: 'structure',\n        superclassRole: [ 'document' ],\n        accessibleNameRequired: true\n      },\n      'graphics-object': {\n        type: 'structure',\n        superclassRole: [ 'group' ],\n        nameFromContent: true\n      },\n      'graphics-symbol': {\n        type: 'structure',\n        superclassRole: [ 'img' ],\n        accessibleNameRequired: true,\n        childrenPresentational: true\n      }\n    };\n    var graphics_roles_default = graphicsRoles;\n    var htmlElms = {\n      a: {\n        variant: {\n          href: {\n            matches: '[href]',\n            contentTypes: [ 'interactive', 'phrasing', 'flow' ],\n            allowedRoles: [ 'button', 'checkbox', 'menuitem', 'menuitemcheckbox', 'menuitemradio', 'option', 'radio', 'switch', 'tab', 'treeitem', 'doc-backlink', 'doc-biblioref', 'doc-glossref', 'doc-noteref' ],\n            namingMethods: [ 'subtreeText' ]\n          },\n          default: {\n            contentTypes: [ 'phrasing', 'flow' ],\n            allowedRoles: true\n          }\n        }\n      },\n      abbr: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: true\n      },\n      addres: {\n        contentTypes: [ 'flow' ],\n        allowedRoles: true\n      },\n      area: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: false,\n        namingMethods: [ 'altText' ]\n      },\n      article: {\n        contentTypes: [ 'sectioning', 'flow' ],\n        allowedRoles: [ 'feed', 'presentation', 'none', 'document', 'application', 'main', 'region' ],\n        shadowRoot: true\n      },\n      aside: {\n        contentTypes: [ 'sectioning', 'flow' ],\n        allowedRoles: [ 'feed', 'note', 'presentation', 'none', 'region', 'search', 'doc-dedication', 'doc-example', 'doc-footnote', 'doc-pullquote', 'doc-tip' ]\n      },\n      audio: {\n        variant: {\n          controls: {\n            matches: '[controls]',\n            contentTypes: [ 'interactive', 'embedded', 'phrasing', 'flow' ]\n          },\n          default: {\n            contentTypes: [ 'embedded', 'phrasing', 'flow' ]\n          }\n        },\n        allowedRoles: [ 'application' ]\n      },\n      b: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: false\n      },\n      base: {\n        allowedRoles: false,\n        noAriaAttrs: true\n      },\n      bdi: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: true\n      },\n      bdo: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: true\n      },\n      blockquote: {\n        contentTypes: [ 'flow' ],\n        allowedRoles: true,\n        shadowRoot: true\n      },\n      body: {\n        allowedRoles: false,\n        shadowRoot: true\n      },\n      br: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: [ 'presentation', 'none' ],\n        namingMethods: [ 'titleText', 'singleSpace' ]\n      },\n      button: {\n        contentTypes: [ 'interactive', 'phrasing', 'flow' ],\n        allowedRoles: [ 'checkbox', 'link', 'menuitem', 'menuitemcheckbox', 'menuitemradio', 'option', 'radio', 'switch', 'tab' ],\n        namingMethods: [ 'subtreeText' ]\n      },\n      canvas: {\n        allowedRoles: true,\n        contentTypes: [ 'embedded', 'phrasing', 'flow' ]\n      },\n      caption: {\n        allowedRoles: false\n      },\n      cite: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: true\n      },\n      code: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: true\n      },\n      col: {\n        allowedRoles: false,\n        noAriaAttrs: true\n      },\n      colgroup: {\n        allowedRoles: false,\n        noAriaAttrs: true\n      },\n      data: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: true\n      },\n      datalist: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: false,\n        implicitAttrs: {\n          'aria-multiselectable': 'false'\n        }\n      },\n      dd: {\n        allowedRoles: false\n      },\n      del: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: true\n      },\n      dfn: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: true\n      },\n      details: {\n        contentTypes: [ 'interactive', 'flow' ],\n        allowedRoles: false\n      },\n      dialog: {\n        contentTypes: [ 'flow' ],\n        allowedRoles: [ 'alertdialog' ]\n      },\n      div: {\n        contentTypes: [ 'flow' ],\n        allowedRoles: true,\n        shadowRoot: true\n      },\n      dl: {\n        contentTypes: [ 'flow' ],\n        allowedRoles: [ 'group', 'list', 'presentation', 'none' ]\n      },\n      dt: {\n        allowedRoles: [ 'listitem' ]\n      },\n      em: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: true\n      },\n      embed: {\n        contentTypes: [ 'interactive', 'embedded', 'phrasing', 'flow' ],\n        allowedRoles: [ 'application', 'document', 'img', 'presentation', 'none' ]\n      },\n      fieldset: {\n        contentTypes: [ 'flow' ],\n        allowedRoles: [ 'none', 'presentation', 'radiogroup' ],\n        namingMethods: [ 'fieldsetLegendText' ]\n      },\n      figcaption: {\n        allowedRoles: [ 'group', 'none', 'presentation' ]\n      },\n      figure: {\n        contentTypes: [ 'flow' ],\n        allowedRoles: true,\n        namingMethods: [ 'figureText', 'titleText' ]\n      },\n      footer: {\n        contentTypes: [ 'flow' ],\n        allowedRoles: [ 'group', 'none', 'presentation', 'doc-footnote' ],\n        shadowRoot: true\n      },\n      form: {\n        contentTypes: [ 'flow' ],\n        allowedRoles: [ 'search', 'none', 'presentation' ]\n      },\n      h1: {\n        contentTypes: [ 'heading', 'flow' ],\n        allowedRoles: [ 'none', 'presentation', 'tab', 'doc-subtitle' ],\n        shadowRoot: true,\n        implicitAttrs: {\n          'aria-level': '1'\n        }\n      },\n      h2: {\n        contentTypes: [ 'heading', 'flow' ],\n        allowedRoles: [ 'none', 'presentation', 'tab', 'doc-subtitle' ],\n        shadowRoot: true,\n        implicitAttrs: {\n          'aria-level': '2'\n        }\n      },\n      h3: {\n        contentTypes: [ 'heading', 'flow' ],\n        allowedRoles: [ 'none', 'presentation', 'tab', 'doc-subtitle' ],\n        shadowRoot: true,\n        implicitAttrs: {\n          'aria-level': '3'\n        }\n      },\n      h4: {\n        contentTypes: [ 'heading', 'flow' ],\n        allowedRoles: [ 'none', 'presentation', 'tab', 'doc-subtitle' ],\n        shadowRoot: true,\n        implicitAttrs: {\n          'aria-level': '4'\n        }\n      },\n      h5: {\n        contentTypes: [ 'heading', 'flow' ],\n        allowedRoles: [ 'none', 'presentation', 'tab', 'doc-subtitle' ],\n        shadowRoot: true,\n        implicitAttrs: {\n          'aria-level': '5'\n        }\n      },\n      h6: {\n        contentTypes: [ 'heading', 'flow' ],\n        allowedRoles: [ 'none', 'presentation', 'tab', 'doc-subtitle' ],\n        shadowRoot: true,\n        implicitAttrs: {\n          'aria-level': '6'\n        }\n      },\n      head: {\n        allowedRoles: false,\n        noAriaAttrs: true\n      },\n      header: {\n        contentTypes: [ 'flow' ],\n        allowedRoles: [ 'group', 'none', 'presentation', 'doc-footnote' ],\n        shadowRoot: true\n      },\n      hgroup: {\n        contentTypes: [ 'heading', 'flow' ],\n        allowedRoles: true\n      },\n      hr: {\n        contentTypes: [ 'flow' ],\n        allowedRoles: [ 'none', 'presentation', 'doc-pagebreak' ],\n        namingMethods: [ 'titleText', 'singleSpace' ]\n      },\n      html: {\n        allowedRoles: false,\n        noAriaAttrs: true\n      },\n      i: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: true\n      },\n      iframe: {\n        contentTypes: [ 'interactive', 'embedded', 'phrasing', 'flow' ],\n        allowedRoles: [ 'application', 'document', 'img', 'none', 'presentation' ]\n      },\n      img: {\n        variant: {\n          nonEmptyAlt: {\n            matches: {\n              attributes: {\n                alt: '/.+/'\n              }\n            },\n            allowedRoles: [ 'button', 'checkbox', 'link', 'menuitem', 'menuitemcheckbox', 'menuitemradio', 'option', 'progressbar', 'scrollbar', 'separator', 'slider', 'switch', 'tab', 'treeitem', 'doc-cover' ]\n          },\n          usemap: {\n            matches: '[usemap]',\n            contentTypes: [ 'interactive', 'embedded', 'phrasing', 'flow' ]\n          },\n          default: {\n            allowedRoles: [ 'presentation', 'none' ],\n            contentTypes: [ 'embedded', 'phrasing', 'flow' ]\n          }\n        },\n        namingMethods: [ 'altText' ]\n      },\n      input: {\n        variant: {\n          button: {\n            matches: {\n              properties: {\n                type: 'button'\n              }\n            },\n            allowedRoles: [ 'link', 'menuitem', 'menuitemcheckbox', 'menuitemradio', 'option', 'radio', 'switch', 'tab' ]\n          },\n          buttonType: {\n            matches: {\n              properties: {\n                type: [ 'button', 'submit', 'reset' ]\n              }\n            },\n            namingMethods: [ 'valueText', 'titleText', 'buttonDefaultText' ]\n          },\n          checkboxPressed: {\n            matches: {\n              properties: {\n                type: 'checkbox'\n              },\n              attributes: {\n                'aria-pressed': '/.*/'\n              }\n            },\n            allowedRoles: [ 'button', 'menuitemcheckbox', 'option', 'switch' ],\n            implicitAttrs: {\n              'aria-checked': 'false'\n            }\n          },\n          checkbox: {\n            matches: {\n              properties: {\n                type: 'checkbox'\n              },\n              attributes: {\n                'aria-pressed': null\n              }\n            },\n            allowedRoles: [ 'menuitemcheckbox', 'option', 'switch' ],\n            implicitAttrs: {\n              'aria-checked': 'false'\n            }\n          },\n          noRoles: {\n            matches: {\n              properties: {\n                type: [ 'color', 'date', 'datetime-local', 'file', 'month', 'number', 'password', 'range', 'reset', 'submit', 'time', 'week' ]\n              }\n            },\n            allowedRoles: false\n          },\n          hidden: {\n            matches: {\n              properties: {\n                type: 'hidden'\n              }\n            },\n            contentTypes: [ 'flow' ],\n            allowedRoles: false,\n            noAriaAttrs: true\n          },\n          image: {\n            matches: {\n              properties: {\n                type: 'image'\n              }\n            },\n            allowedRoles: [ 'link', 'menuitem', 'menuitemcheckbox', 'menuitemradio', 'radio', 'switch' ],\n            namingMethods: [ 'altText', 'valueText', 'labelText', 'titleText', 'buttonDefaultText' ]\n          },\n          radio: {\n            matches: {\n              properties: {\n                type: 'radio'\n              }\n            },\n            allowedRoles: [ 'menuitemradio' ],\n            implicitAttrs: {\n              'aria-checked': 'false'\n            }\n          },\n          textWithList: {\n            matches: {\n              properties: {\n                type: 'text'\n              },\n              attributes: {\n                list: '/.*/'\n              }\n            },\n            allowedRoles: false\n          },\n          default: {\n            contentTypes: [ 'interactive', 'flow' ],\n            allowedRoles: [ 'combobox', 'searchbox', 'spinbutton' ],\n            implicitAttrs: {\n              'aria-valuenow': ''\n            },\n            namingMethods: [ 'labelText', 'placeholderText' ]\n          }\n        }\n      },\n      ins: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: true\n      },\n      kbd: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: true\n      },\n      label: {\n        contentTypes: [ 'interactive', 'phrasing', 'flow' ],\n        allowedRoles: false\n      },\n      legend: {\n        allowedRoles: false\n      },\n      li: {\n        allowedRoles: [ 'menuitem', 'menuitemcheckbox', 'menuitemradio', 'option', 'none', 'presentation', 'radio', 'separator', 'tab', 'treeitem', 'doc-biblioentry', 'doc-endnote' ],\n        implicitAttrs: {\n          'aria-setsize': '1',\n          'aria-posinset': '1'\n        }\n      },\n      link: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: false,\n        noAriaAttrs: true\n      },\n      main: {\n        contentTypes: [ 'flow' ],\n        allowedRoles: false,\n        shadowRoot: true\n      },\n      map: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: false,\n        noAriaAttrs: true\n      },\n      math: {\n        contentTypes: [ 'embedded', 'phrasing', 'flow' ],\n        allowedRoles: false\n      },\n      mark: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: true\n      },\n      menu: {\n        contentTypes: [ 'flow' ],\n        allowedRoles: [ 'directory', 'group', 'listbox', 'menu', 'menubar', 'none', 'presentation', 'radiogroup', 'tablist', 'toolbar', 'tree' ]\n      },\n      meta: {\n        variant: {\n          itemprop: {\n            matches: '[itemprop]',\n            contentTypes: [ 'phrasing', 'flow' ]\n          }\n        },\n        allowedRoles: false,\n        noAriaAttrs: true\n      },\n      meter: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: false\n      },\n      nav: {\n        contentTypes: [ 'sectioning', 'flow' ],\n        allowedRoles: [ 'doc-index', 'doc-pagelist', 'doc-toc' ],\n        shadowRoot: true\n      },\n      noscript: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: false,\n        noAriaAttrs: true\n      },\n      object: {\n        variant: {\n          usemap: {\n            matches: '[usemap]',\n            contentTypes: [ 'interactive', 'embedded', 'phrasing', 'flow' ]\n          },\n          default: {\n            contentTypes: [ 'embedded', 'phrasing', 'flow' ]\n          }\n        },\n        allowedRoles: [ 'application', 'document', 'img' ]\n      },\n      ol: {\n        contentTypes: [ 'flow' ],\n        allowedRoles: [ 'directory', 'group', 'listbox', 'menu', 'menubar', 'none', 'presentation', 'radiogroup', 'tablist', 'toolbar', 'tree' ]\n      },\n      optgroup: {\n        allowedRoles: false\n      },\n      option: {\n        allowedRoles: false,\n        implicitAttrs: {\n          'aria-selected': 'false'\n        }\n      },\n      output: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: true,\n        namingMethods: [ 'subtreeText' ]\n      },\n      p: {\n        contentTypes: [ 'flow' ],\n        allowedRoles: true,\n        shadowRoot: true\n      },\n      param: {\n        allowedRoles: false,\n        noAriaAttrs: true\n      },\n      picture: {\n        contentTypes: [ 'embedded', 'phrasing', 'flow' ],\n        allowedRoles: false,\n        noAriaAttrs: true\n      },\n      pre: {\n        contentTypes: [ 'flow' ],\n        allowedRoles: true\n      },\n      progress: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: true,\n        implicitAttrs: {\n          'aria-valuemax': '100',\n          'aria-valuemin': '0',\n          'aria-valuenow': '0'\n        }\n      },\n      q: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: true\n      },\n      rp: {\n        allowedRoles: true\n      },\n      rt: {\n        allowedRoles: true\n      },\n      ruby: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: true\n      },\n      s: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: true\n      },\n      samp: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: true\n      },\n      script: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: false,\n        noAriaAttrs: true\n      },\n      section: {\n        contentTypes: [ 'sectioning', 'flow' ],\n        allowedRoles: [ 'alert', 'alertdialog', 'application', 'banner', 'complementary', 'contentinfo', 'dialog', 'document', 'feed', 'log', 'main', 'marquee', 'navigation', 'none', 'note', 'presentation', 'search', 'status', 'tabpanel', 'doc-abstract', 'doc-acknowledgments', 'doc-afterword', 'doc-appendix', 'doc-bibliography', 'doc-chapter', 'doc-colophon', 'doc-conclusion', 'doc-credit', 'doc-credits', 'doc-dedication', 'doc-endnotes', 'doc-epigraph', 'doc-epilogue', 'doc-errata', 'doc-example', 'doc-foreword', 'doc-glossary', 'doc-index', 'doc-introduction', 'doc-notice', 'doc-pagelist', 'doc-part', 'doc-preface', 'doc-prologue', 'doc-pullquote', 'doc-qna', 'doc-toc' ],\n        shadowRoot: true\n      },\n      select: {\n        variant: {\n          combobox: {\n            matches: {\n              attributes: {\n                multiple: null,\n                size: [ null, '1' ]\n              }\n            },\n            allowedRoles: [ 'menu' ]\n          },\n          default: {\n            allowedRoles: false\n          }\n        },\n        contentTypes: [ 'interactive', 'phrasing', 'flow' ],\n        implicitAttrs: {\n          'aria-valuenow': ''\n        },\n        namingMethods: [ 'labelText' ]\n      },\n      slot: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: false,\n        noAriaAttrs: true\n      },\n      small: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: true\n      },\n      source: {\n        allowedRoles: false,\n        noAriaAttrs: true\n      },\n      span: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: true,\n        shadowRoot: true\n      },\n      strong: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: true\n      },\n      style: {\n        allowedRoles: false,\n        noAriaAttrs: true\n      },\n      svg: {\n        contentTypes: [ 'embedded', 'phrasing', 'flow' ],\n        allowedRoles: [ 'application', 'document', 'img' ],\n        namingMethods: [ 'svgTitleText' ]\n      },\n      sub: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: true\n      },\n      summary: {\n        allowedRoles: false,\n        namingMethods: [ 'subtreeText' ]\n      },\n      sup: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: true\n      },\n      table: {\n        contentTypes: [ 'flow' ],\n        allowedRoles: true,\n        namingMethods: [ 'tableCaptionText', 'tableSummaryText' ]\n      },\n      tbody: {\n        allowedRoles: true\n      },\n      template: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: false,\n        noAriaAttrs: true\n      },\n      textarea: {\n        contentTypes: [ 'interactive', 'phrasing', 'flow' ],\n        allowedRoles: false,\n        implicitAttrs: {\n          'aria-valuenow': '',\n          'aria-multiline': 'true'\n        },\n        namingMethods: [ 'labelText', 'placeholderText' ]\n      },\n      tfoot: {\n        allowedRoles: true\n      },\n      thead: {\n        allowedRoles: true\n      },\n      time: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: true\n      },\n      title: {\n        allowedRoles: false,\n        noAriaAttrs: true\n      },\n      td: {\n        allowedRoles: true\n      },\n      th: {\n        allowedRoles: true\n      },\n      tr: {\n        allowedRoles: true\n      },\n      track: {\n        allowedRoles: false,\n        noAriaAttrs: true\n      },\n      u: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: true\n      },\n      ul: {\n        contentTypes: [ 'flow' ],\n        allowedRoles: [ 'directory', 'group', 'listbox', 'menu', 'menubar', 'none', 'presentation', 'radiogroup', 'tablist', 'toolbar', 'tree' ]\n      },\n      var: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: true\n      },\n      video: {\n        variant: {\n          controls: {\n            matches: '[controls]',\n            contentTypes: [ 'interactive', 'embedded', 'phrasing', 'flow' ]\n          },\n          default: {\n            contentTypes: [ 'embedded', 'phrasing', 'flow' ]\n          }\n        },\n        allowedRoles: [ 'application' ]\n      },\n      wbr: {\n        contentTypes: [ 'phrasing', 'flow' ],\n        allowedRoles: true\n      }\n    };\n    var html_elms_default = htmlElms;\n    var cssColors = {\n      aliceblue: [ 240, 248, 255 ],\n      antiquewhite: [ 250, 235, 215 ],\n      aqua: [ 0, 255, 255 ],\n      aquamarine: [ 127, 255, 212 ],\n      azure: [ 240, 255, 255 ],\n      beige: [ 245, 245, 220 ],\n      bisque: [ 255, 228, 196 ],\n      black: [ 0, 0, 0 ],\n      blanchedalmond: [ 255, 235, 205 ],\n      blue: [ 0, 0, 255 ],\n      blueviolet: [ 138, 43, 226 ],\n      brown: [ 165, 42, 42 ],\n      burlywood: [ 222, 184, 135 ],\n      cadetblue: [ 95, 158, 160 ],\n      chartreuse: [ 127, 255, 0 ],\n      chocolate: [ 210, 105, 30 ],\n      coral: [ 255, 127, 80 ],\n      cornflowerblue: [ 100, 149, 237 ],\n      cornsilk: [ 255, 248, 220 ],\n      crimson: [ 220, 20, 60 ],\n      cyan: [ 0, 255, 255 ],\n      darkblue: [ 0, 0, 139 ],\n      darkcyan: [ 0, 139, 139 ],\n      darkgoldenrod: [ 184, 134, 11 ],\n      darkgray: [ 169, 169, 169 ],\n      darkgreen: [ 0, 100, 0 ],\n      darkgrey: [ 169, 169, 169 ],\n      darkkhaki: [ 189, 183, 107 ],\n      darkmagenta: [ 139, 0, 139 ],\n      darkolivegreen: [ 85, 107, 47 ],\n      darkorange: [ 255, 140, 0 ],\n      darkorchid: [ 153, 50, 204 ],\n      darkred: [ 139, 0, 0 ],\n      darksalmon: [ 233, 150, 122 ],\n      darkseagreen: [ 143, 188, 143 ],\n      darkslateblue: [ 72, 61, 139 ],\n      darkslategray: [ 47, 79, 79 ],\n      darkslategrey: [ 47, 79, 79 ],\n      darkturquoise: [ 0, 206, 209 ],\n      darkviolet: [ 148, 0, 211 ],\n      deeppink: [ 255, 20, 147 ],\n      deepskyblue: [ 0, 191, 255 ],\n      dimgray: [ 105, 105, 105 ],\n      dimgrey: [ 105, 105, 105 ],\n      dodgerblue: [ 30, 144, 255 ],\n      firebrick: [ 178, 34, 34 ],\n      floralwhite: [ 255, 250, 240 ],\n      forestgreen: [ 34, 139, 34 ],\n      fuchsia: [ 255, 0, 255 ],\n      gainsboro: [ 220, 220, 220 ],\n      ghostwhite: [ 248, 248, 255 ],\n      gold: [ 255, 215, 0 ],\n      goldenrod: [ 218, 165, 32 ],\n      gray: [ 128, 128, 128 ],\n      green: [ 0, 128, 0 ],\n      greenyellow: [ 173, 255, 47 ],\n      grey: [ 128, 128, 128 ],\n      honeydew: [ 240, 255, 240 ],\n      hotpink: [ 255, 105, 180 ],\n      indianred: [ 205, 92, 92 ],\n      indigo: [ 75, 0, 130 ],\n      ivory: [ 255, 255, 240 ],\n      khaki: [ 240, 230, 140 ],\n      lavender: [ 230, 230, 250 ],\n      lavenderblush: [ 255, 240, 245 ],\n      lawngreen: [ 124, 252, 0 ],\n      lemonchiffon: [ 255, 250, 205 ],\n      lightblue: [ 173, 216, 230 ],\n      lightcoral: [ 240, 128, 128 ],\n      lightcyan: [ 224, 255, 255 ],\n      lightgoldenrodyellow: [ 250, 250, 210 ],\n      lightgray: [ 211, 211, 211 ],\n      lightgreen: [ 144, 238, 144 ],\n      lightgrey: [ 211, 211, 211 ],\n      lightpink: [ 255, 182, 193 ],\n      lightsalmon: [ 255, 160, 122 ],\n      lightseagreen: [ 32, 178, 170 ],\n      lightskyblue: [ 135, 206, 250 ],\n      lightslategray: [ 119, 136, 153 ],\n      lightslategrey: [ 119, 136, 153 ],\n      lightsteelblue: [ 176, 196, 222 ],\n      lightyellow: [ 255, 255, 224 ],\n      lime: [ 0, 255, 0 ],\n      limegreen: [ 50, 205, 50 ],\n      linen: [ 250, 240, 230 ],\n      magenta: [ 255, 0, 255 ],\n      maroon: [ 128, 0, 0 ],\n      mediumaquamarine: [ 102, 205, 170 ],\n      mediumblue: [ 0, 0, 205 ],\n      mediumorchid: [ 186, 85, 211 ],\n      mediumpurple: [ 147, 112, 219 ],\n      mediumseagreen: [ 60, 179, 113 ],\n      mediumslateblue: [ 123, 104, 238 ],\n      mediumspringgreen: [ 0, 250, 154 ],\n      mediumturquoise: [ 72, 209, 204 ],\n      mediumvioletred: [ 199, 21, 133 ],\n      midnightblue: [ 25, 25, 112 ],\n      mintcream: [ 245, 255, 250 ],\n      mistyrose: [ 255, 228, 225 ],\n      moccasin: [ 255, 228, 181 ],\n      navajowhite: [ 255, 222, 173 ],\n      navy: [ 0, 0, 128 ],\n      oldlace: [ 253, 245, 230 ],\n      olive: [ 128, 128, 0 ],\n      olivedrab: [ 107, 142, 35 ],\n      orange: [ 255, 165, 0 ],\n      orangered: [ 255, 69, 0 ],\n      orchid: [ 218, 112, 214 ],\n      palegoldenrod: [ 238, 232, 170 ],\n      palegreen: [ 152, 251, 152 ],\n      paleturquoise: [ 175, 238, 238 ],\n      palevioletred: [ 219, 112, 147 ],\n      papayawhip: [ 255, 239, 213 ],\n      peachpuff: [ 255, 218, 185 ],\n      peru: [ 205, 133, 63 ],\n      pink: [ 255, 192, 203 ],\n      plum: [ 221, 160, 221 ],\n      powderblue: [ 176, 224, 230 ],\n      purple: [ 128, 0, 128 ],\n      rebeccapurple: [ 102, 51, 153 ],\n      red: [ 255, 0, 0 ],\n      rosybrown: [ 188, 143, 143 ],\n      royalblue: [ 65, 105, 225 ],\n      saddlebrown: [ 139, 69, 19 ],\n      salmon: [ 250, 128, 114 ],\n      sandybrown: [ 244, 164, 96 ],\n      seagreen: [ 46, 139, 87 ],\n      seashell: [ 255, 245, 238 ],\n      sienna: [ 160, 82, 45 ],\n      silver: [ 192, 192, 192 ],\n      skyblue: [ 135, 206, 235 ],\n      slateblue: [ 106, 90, 205 ],\n      slategray: [ 112, 128, 144 ],\n      slategrey: [ 112, 128, 144 ],\n      snow: [ 255, 250, 250 ],\n      springgreen: [ 0, 255, 127 ],\n      steelblue: [ 70, 130, 180 ],\n      tan: [ 210, 180, 140 ],\n      teal: [ 0, 128, 128 ],\n      thistle: [ 216, 191, 216 ],\n      tomato: [ 255, 99, 71 ],\n      turquoise: [ 64, 224, 208 ],\n      violet: [ 238, 130, 238 ],\n      wheat: [ 245, 222, 179 ],\n      white: [ 255, 255, 255 ],\n      whitesmoke: [ 245, 245, 245 ],\n      yellow: [ 255, 255, 0 ],\n      yellowgreen: [ 154, 205, 50 ]\n    };\n    var css_colors_default = cssColors;\n    var originals = {\n      ariaAttrs: aria_attrs_default,\n      ariaRoles: _extends({}, aria_roles_default, dpub_roles_default, graphics_roles_default),\n      htmlElms: html_elms_default,\n      cssColors: css_colors_default\n    };\n    var standards = _extends({}, originals);\n    function configureStandards(config) {\n      Object.keys(standards).forEach(function(propName) {\n        if (config[propName]) {\n          standards[propName] = deep_merge_default(standards[propName], config[propName]);\n        }\n      });\n    }\n    function resetStandards() {\n      Object.keys(standards).forEach(function(propName) {\n        standards[propName] = originals[propName];\n      });\n    }\n    var standards_default = standards;\n    function convertColorVal(colorFunc, value, index) {\n      if (/%$/.test(value)) {\n        if (index === 3) {\n          return parseFloat(value) / 100;\n        }\n        return parseFloat(value) * 255 / 100;\n      }\n      if (colorFunc[index] === 'h') {\n        if (/turn$/.test(value)) {\n          return parseFloat(value) * 360;\n        }\n        if (/rad$/.test(value)) {\n          return parseFloat(value) * 57.3;\n        }\n      }\n      return parseFloat(value);\n    }\n    function hslToRgb(_ref9) {\n      var _ref10 = _slicedToArray(_ref9, 4), hue = _ref10[0], saturation = _ref10[1], lightness = _ref10[2], alpha = _ref10[3];\n      saturation /= 255;\n      lightness /= 255;\n      var high = (1 - Math.abs(2 * lightness - 1)) * saturation;\n      var low = high * (1 - Math.abs(hue / 60 % 2 - 1));\n      var base = lightness - high / 2;\n      var colors;\n      if (hue < 60) {\n        colors = [ high, low, 0 ];\n      } else if (hue < 120) {\n        colors = [ low, high, 0 ];\n      } else if (hue < 180) {\n        colors = [ 0, high, low ];\n      } else if (hue < 240) {\n        colors = [ 0, low, high ];\n      } else if (hue < 300) {\n        colors = [ low, 0, high ];\n      } else {\n        colors = [ high, 0, low ];\n      }\n      return colors.map(function(color10) {\n        return Math.round((color10 + base) * 255);\n      }).concat(alpha);\n    }\n    function Color(red, green, blue, alpha) {\n      this.red = red;\n      this.green = green;\n      this.blue = blue;\n      this.alpha = alpha;\n      this.toHexString = function toHexString() {\n        var redString = Math.round(this.red).toString(16);\n        var greenString = Math.round(this.green).toString(16);\n        var blueString = Math.round(this.blue).toString(16);\n        return '#' + (this.red > 15.5 ? redString : '0' + redString) + (this.green > 15.5 ? greenString : '0' + greenString) + (this.blue > 15.5 ? blueString : '0' + blueString);\n      };\n      var hexRegex = /^#[0-9a-f]{3,8}$/i;\n      var colorFnRegex = /^((?:rgb|hsl)a?)\\s*\\(([^\\)]*)\\)/i;\n      this.parseString = function parseString(colorString) {\n        if (standards_default.cssColors[colorString] || colorString === 'transparent') {\n          var _ref11 = standards_default.cssColors[colorString] || [ 0, 0, 0 ], _ref12 = _slicedToArray(_ref11, 3), red2 = _ref12[0], green2 = _ref12[1], blue2 = _ref12[2];\n          this.red = red2;\n          this.green = green2;\n          this.blue = blue2;\n          this.alpha = colorString === 'transparent' ? 0 : 1;\n          return;\n        }\n        if (colorString.match(colorFnRegex)) {\n          this.parseColorFnString(colorString);\n          return;\n        }\n        if (colorString.match(hexRegex)) {\n          this.parseHexString(colorString);\n          return;\n        }\n        throw new Error('Unable to parse color \"'.concat(colorString, '\"'));\n      };\n      this.parseRgbString = function parseRgbString(colorString) {\n        if (colorString === 'transparent') {\n          this.red = 0;\n          this.green = 0;\n          this.blue = 0;\n          this.alpha = 0;\n          return;\n        }\n        this.parseColorFnString(colorString);\n      };\n      this.parseHexString = function parseHexString(colorString) {\n        if (!colorString.match(hexRegex) || [ 6, 8 ].includes(colorString.length)) {\n          return;\n        }\n        colorString = colorString.replace('#', '');\n        if (colorString.length < 6) {\n          var _colorString = colorString, _colorString2 = _slicedToArray(_colorString, 4), r = _colorString2[0], g = _colorString2[1], b = _colorString2[2], a = _colorString2[3];\n          colorString = r + r + g + g + b + b;\n          if (a) {\n            colorString += a + a;\n          }\n        }\n        var aRgbHex = colorString.match(/.{1,2}/g);\n        this.red = parseInt(aRgbHex[0], 16);\n        this.green = parseInt(aRgbHex[1], 16);\n        this.blue = parseInt(aRgbHex[2], 16);\n        if (aRgbHex[3]) {\n          this.alpha = parseInt(aRgbHex[3], 16) / 255;\n        } else {\n          this.alpha = 1;\n        }\n      };\n      this.parseColorFnString = function parseColorFnString(colorString) {\n        var _ref13 = colorString.match(colorFnRegex) || [], _ref14 = _slicedToArray(_ref13, 3), colorFunc = _ref14[1], colorValStr = _ref14[2];\n        if (!colorFunc || !colorValStr) {\n          return;\n        }\n        var colorVals = colorValStr.split(/\\s*[,\\/\\s]\\s*/).map(function(str) {\n          return str.replace(',', '').trim();\n        }).filter(function(str) {\n          return str !== '';\n        });\n        var colorNums = colorVals.map(function(val, index) {\n          return convertColorVal(colorFunc, val, index);\n        });\n        if (colorFunc.substr(0, 3) === 'hsl') {\n          colorNums = hslToRgb(colorNums);\n        }\n        this.red = colorNums[0];\n        this.green = colorNums[1];\n        this.blue = colorNums[2];\n        this.alpha = typeof colorNums[3] === 'number' ? colorNums[3] : 1;\n      };\n      this.getRelativeLuminance = function getRelativeLuminance() {\n        var rSRGB = this.red / 255;\n        var gSRGB = this.green / 255;\n        var bSRGB = this.blue / 255;\n        var r = rSRGB <= .03928 ? rSRGB / 12.92 : Math.pow((rSRGB + .055) / 1.055, 2.4);\n        var g = gSRGB <= .03928 ? gSRGB / 12.92 : Math.pow((gSRGB + .055) / 1.055, 2.4);\n        var b = bSRGB <= .03928 ? bSRGB / 12.92 : Math.pow((bSRGB + .055) / 1.055, 2.4);\n        return .2126 * r + .7152 * g + .0722 * b;\n      };\n    }\n    var color_default = Color;\n    function getOwnBackgroundColor(elmStyle) {\n      var bgColor = new color_default();\n      bgColor.parseString(elmStyle.getPropertyValue('background-color'));\n      if (bgColor.alpha !== 0) {\n        var opacity = elmStyle.getPropertyValue('opacity');\n        bgColor.alpha = bgColor.alpha * opacity;\n      }\n      return bgColor;\n    }\n    var get_own_background_color_default = getOwnBackgroundColor;\n    function isOpaque(node) {\n      var style = window.getComputedStyle(node);\n      return element_has_image_default(node, style) || get_own_background_color_default(style).alpha === 1;\n    }\n    var is_opaque_default = isOpaque;\n    var isInternalLinkRegex = /^\\/?#[^/!]/;\n    function isSkipLink(element) {\n      if (!isInternalLinkRegex.test(element.getAttribute('href'))) {\n        return false;\n      }\n      var firstPageLink;\n      if (typeof cache_default.get('firstPageLink') !== 'undefined') {\n        firstPageLink = cache_default.get('firstPageLink');\n      } else {\n        firstPageLink = query_selector_all_default(axe._tree, 'a:not([href^=\"#\"]):not([href^=\"/#\"]):not([href^=\"javascript\"])')[0];\n        cache_default.set('firstPageLink', firstPageLink || null);\n      }\n      if (!firstPageLink) {\n        return true;\n      }\n      return element.compareDocumentPosition(firstPageLink.actualNode) === element.DOCUMENT_POSITION_FOLLOWING;\n    }\n    var is_skip_link_default = isSkipLink;\n    function reduceToElementsBelowFloating(elements, targetNode) {\n      var floatingPositions = [ 'fixed', 'sticky' ];\n      var finalElements = [];\n      var targetFound = false;\n      for (var index = 0; index < elements.length; ++index) {\n        var currentNode = elements[index];\n        if (currentNode === targetNode) {\n          targetFound = true;\n        }\n        var style = window.getComputedStyle(currentNode);\n        if (!targetFound && floatingPositions.indexOf(style.position) !== -1) {\n          finalElements = [];\n          continue;\n        }\n        finalElements.push(currentNode);\n      }\n      return finalElements;\n    }\n    var reduce_to_elements_below_floating_default = reduceToElementsBelowFloating;\n    function getScrollAncestor(node) {\n      var vNode = get_node_from_tree_default(node);\n      var ancestor = vNode.parent;\n      while (ancestor) {\n        if (get_scroll_default(ancestor.actualNode)) {\n          return ancestor.actualNode;\n        }\n        ancestor = ancestor.parent;\n      }\n    }\n    function contains2(node, parent) {\n      var rectBound = node.getBoundingClientRect();\n      var margin = .01;\n      var rect = {\n        top: rectBound.top + margin,\n        bottom: rectBound.bottom - margin,\n        left: rectBound.left + margin,\n        right: rectBound.right - margin\n      };\n      var parentRect = parent.getBoundingClientRect();\n      var parentTop = parentRect.top;\n      var parentLeft = parentRect.left;\n      var parentScrollArea = {\n        top: parentTop - parent.scrollTop,\n        bottom: parentTop - parent.scrollTop + parent.scrollHeight,\n        left: parentLeft - parent.scrollLeft,\n        right: parentLeft - parent.scrollLeft + parent.scrollWidth\n      };\n      var style = window.getComputedStyle(parent);\n      if (style.getPropertyValue('display') === 'inline') {\n        return true;\n      }\n      if (rect.left < parentScrollArea.left && rect.left < parentRect.left || rect.top < parentScrollArea.top && rect.top < parentRect.top || rect.right > parentScrollArea.right && rect.right > parentRect.right || rect.bottom > parentScrollArea.bottom && rect.bottom > parentRect.bottom) {\n        return false;\n      }\n      if (rect.right > parentRect.right || rect.bottom > parentRect.bottom) {\n        return style.overflow === 'scroll' || style.overflow === 'auto' || style.overflow === 'hidden' || parent instanceof window.HTMLBodyElement || parent instanceof window.HTMLHtmlElement;\n      }\n      return true;\n    }\n    function visuallyContains(node, parent) {\n      var parentScrollAncestor = getScrollAncestor(parent);\n      do {\n        var nextScrollAncestor = getScrollAncestor(node);\n        if (nextScrollAncestor === parentScrollAncestor || nextScrollAncestor === parent) {\n          return contains2(node, parent);\n        }\n        node = nextScrollAncestor;\n      } while (node);\n      return false;\n    }\n    var visually_contains_default = visuallyContains;\n    function shadowElementsFromPoint(nodeX, nodeY) {\n      var root = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : document;\n      var i = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n      if (i > 999) {\n        throw new Error('Infinite loop detected');\n      }\n      return Array.from(root.elementsFromPoint(nodeX, nodeY) || []).filter(function(nodes) {\n        return get_root_node_default2(nodes) === root;\n      }).reduce(function(stack, elm) {\n        if (is_shadow_root_default(elm)) {\n          var shadowStack = shadowElementsFromPoint(nodeX, nodeY, elm.shadowRoot, i + 1);\n          stack = stack.concat(shadowStack);\n          if (stack.length && visually_contains_default(stack[0], elm)) {\n            stack.push(elm);\n          }\n        } else {\n          stack.push(elm);\n        }\n        return stack;\n      }, []);\n    }\n    var shadow_elements_from_point_default = shadowElementsFromPoint;\n    function urlPropsFromAttribute(node, attribute) {\n      if (!node.hasAttribute(attribute)) {\n        return void 0;\n      }\n      var nodeName2 = node.nodeName.toUpperCase();\n      var parser2 = node;\n      if (![ 'A', 'AREA' ].includes(nodeName2) || node.ownerSVGElement) {\n        parser2 = document.createElement('a');\n        parser2.href = node.getAttribute(attribute);\n      }\n      var protocol = [ 'https:', 'ftps:' ].includes(parser2.protocol) ? parser2.protocol.replace(/s:$/, ':') : parser2.protocol;\n      var parserPathname = /^\\//.test(parser2.pathname) ? parser2.pathname : '/'.concat(parser2.pathname);\n      var _getPathnameOrFilenam = getPathnameOrFilename(parserPathname), pathname = _getPathnameOrFilenam.pathname, filename = _getPathnameOrFilenam.filename;\n      return {\n        protocol: protocol,\n        hostname: parser2.hostname,\n        port: getPort(parser2.port),\n        pathname: /\\/$/.test(pathname) ? pathname : ''.concat(pathname, '/'),\n        search: getSearchPairs(parser2.search),\n        hash: getHashRoute(parser2.hash),\n        filename: filename\n      };\n    }\n    function getPort(port) {\n      var excludePorts = [ '443', '80' ];\n      return !excludePorts.includes(port) ? port : '';\n    }\n    function getPathnameOrFilename(pathname) {\n      var filename = pathname.split('/').pop();\n      if (!filename || filename.indexOf('.') === -1) {\n        return {\n          pathname: pathname,\n          filename: ''\n        };\n      }\n      return {\n        pathname: pathname.replace(filename, ''),\n        filename: /index./.test(filename) ? '' : filename\n      };\n    }\n    function getSearchPairs(searchStr) {\n      var query = {};\n      if (!searchStr || !searchStr.length) {\n        return query;\n      }\n      var pairs = searchStr.substring(1).split('&');\n      if (!pairs || !pairs.length) {\n        return query;\n      }\n      for (var index = 0; index < pairs.length; index++) {\n        var pair = pairs[index];\n        var _pair$split = pair.split('='), _pair$split2 = _slicedToArray(_pair$split, 2), key = _pair$split2[0], _pair$split2$ = _pair$split2[1], value = _pair$split2$ === void 0 ? '' : _pair$split2$;\n        query[decodeURIComponent(key)] = decodeURIComponent(value);\n      }\n      return query;\n    }\n    function getHashRoute(hash) {\n      if (!hash) {\n        return '';\n      }\n      var hashRegex = /#!?\\/?/g;\n      var hasMatch = hash.match(hashRegex);\n      if (!hasMatch) {\n        return '';\n      }\n      var _hasMatch = _slicedToArray(hasMatch, 1), matchedStr = _hasMatch[0];\n      if (matchedStr === '#') {\n        return '';\n      }\n      return hash;\n    }\n    var url_props_from_attribute_default = urlPropsFromAttribute;\n    function visuallyOverlaps(rect, parent) {\n      var parentRect = parent.getBoundingClientRect();\n      var parentTop = parentRect.top;\n      var parentLeft = parentRect.left;\n      var parentScrollArea = {\n        top: parentTop - parent.scrollTop,\n        bottom: parentTop - parent.scrollTop + parent.scrollHeight,\n        left: parentLeft - parent.scrollLeft,\n        right: parentLeft - parent.scrollLeft + parent.scrollWidth\n      };\n      if (rect.left > parentScrollArea.right && rect.left > parentRect.right || rect.top > parentScrollArea.bottom && rect.top > parentRect.bottom || rect.right < parentScrollArea.left && rect.right < parentRect.left || rect.bottom < parentScrollArea.top && rect.bottom < parentRect.top) {\n        return false;\n      }\n      var style = window.getComputedStyle(parent);\n      if (rect.left > parentRect.right || rect.top > parentRect.bottom) {\n        return style.overflow === 'scroll' || style.overflow === 'auto' || parent instanceof window.HTMLBodyElement || parent instanceof window.HTMLHtmlElement;\n      }\n      return true;\n    }\n    var visually_overlaps_default = visuallyOverlaps;\n    var isXHTMLGlobal;\n    var VirtualNode = function(_abstract_virtual_nod) {\n      _inherits(VirtualNode, _abstract_virtual_nod);\n      var _super = _createSuper(VirtualNode);\n      function VirtualNode(node, parent, shadowId) {\n        var _this;\n        _classCallCheck(this, VirtualNode);\n        _this = _super.call(this);\n        _this.shadowId = shadowId;\n        _this.children = [];\n        _this.actualNode = node;\n        _this.parent = parent;\n        _this._isHidden = null;\n        _this._cache = {};\n        if (typeof isXHTMLGlobal === 'undefined') {\n          isXHTMLGlobal = is_xhtml_default(node.ownerDocument);\n        }\n        _this._isXHTML = isXHTMLGlobal;\n        if (node.nodeName.toLowerCase() === 'input') {\n          var type = node.getAttribute('type');\n          type = _this._isXHTML ? type : (type || '').toLowerCase();\n          if (!valid_input_type_default().includes(type)) {\n            type = 'text';\n          }\n          _this._type = type;\n        }\n        if (cache_default.get('nodeMap')) {\n          cache_default.get('nodeMap').set(node, _assertThisInitialized(_this));\n        }\n        return _this;\n      }\n      _createClass(VirtualNode, [ {\n        key: 'attr',\n        value: function attr(attrName) {\n          if (typeof this.actualNode.getAttribute !== 'function') {\n            return null;\n          }\n          return this.actualNode.getAttribute(attrName);\n        }\n      }, {\n        key: 'hasAttr',\n        value: function hasAttr(attrName) {\n          if (typeof this.actualNode.hasAttribute !== 'function') {\n            return false;\n          }\n          return this.actualNode.hasAttribute(attrName);\n        }\n      }, {\n        key: 'getComputedStylePropertyValue',\n        value: function getComputedStylePropertyValue(property) {\n          var key = 'computedStyle_' + property;\n          if (!this._cache.hasOwnProperty(key)) {\n            if (!this._cache.hasOwnProperty('computedStyle')) {\n              this._cache.computedStyle = window.getComputedStyle(this.actualNode);\n            }\n            this._cache[key] = this._cache.computedStyle.getPropertyValue(property);\n          }\n          return this._cache[key];\n        }\n      }, {\n        key: 'props',\n        get: function get() {\n          var _this$actualNode = this.actualNode, nodeType = _this$actualNode.nodeType, nodeName2 = _this$actualNode.nodeName, id = _this$actualNode.id, multiple = _this$actualNode.multiple, nodeValue = _this$actualNode.nodeValue, value = _this$actualNode.value;\n          return {\n            nodeType: nodeType,\n            nodeName: this._isXHTML ? nodeName2 : nodeName2.toLowerCase(),\n            id: id,\n            type: this._type,\n            multiple: multiple,\n            nodeValue: nodeValue,\n            value: value\n          };\n        }\n      }, {\n        key: 'attrNames',\n        get: function get() {\n          if (!this._cache.hasOwnProperty('attrNames')) {\n            var attrs;\n            if (this.actualNode.attributes instanceof window.NamedNodeMap) {\n              attrs = this.actualNode.attributes;\n            } else {\n              attrs = this.actualNode.cloneNode(false).attributes;\n            }\n            this._cache.attrNames = Array.from(attrs).map(function(attr) {\n              return attr.name;\n            });\n          }\n          return this._cache.attrNames;\n        }\n      }, {\n        key: 'isFocusable',\n        get: function get() {\n          if (!this._cache.hasOwnProperty('isFocusable')) {\n            this._cache.isFocusable = is_focusable_default(this.actualNode);\n          }\n          return this._cache.isFocusable;\n        }\n      }, {\n        key: 'tabbableElements',\n        get: function get() {\n          if (!this._cache.hasOwnProperty('tabbableElements')) {\n            this._cache.tabbableElements = get_tabbable_elements_default(this);\n          }\n          return this._cache.tabbableElements;\n        }\n      }, {\n        key: 'clientRects',\n        get: function get() {\n          if (!this._cache.hasOwnProperty('clientRects')) {\n            this._cache.clientRects = Array.from(this.actualNode.getClientRects()).filter(function(rect) {\n              return rect.width > 0;\n            });\n          }\n          return this._cache.clientRects;\n        }\n      }, {\n        key: 'boundingClientRect',\n        get: function get() {\n          if (!this._cache.hasOwnProperty('boundingClientRect')) {\n            this._cache.boundingClientRect = this.actualNode.getBoundingClientRect();\n          }\n          return this._cache.boundingClientRect;\n        }\n      } ]);\n      return VirtualNode;\n    }(abstract_virtual_node_default);\n    var virtual_node_default = VirtualNode;\n    function getSlotChildren(node) {\n      var retVal = [];\n      node = node.firstChild;\n      while (node) {\n        retVal.push(node);\n        node = node.nextSibling;\n      }\n      return retVal;\n    }\n    function flattenTree(node, shadowId, parent) {\n      var retVal, realArray, nodeName2;\n      function reduceShadowDOM(res, child, parent2) {\n        var replacements = flattenTree(child, shadowId, parent2);\n        if (replacements) {\n          res = res.concat(replacements);\n        }\n        return res;\n      }\n      if (node.documentElement) {\n        node = node.documentElement;\n      }\n      nodeName2 = node.nodeName.toLowerCase();\n      if (is_shadow_root_default(node)) {\n        retVal = new virtual_node_default(node, parent, shadowId);\n        shadowId = 'a' + Math.random().toString().substring(2);\n        realArray = Array.from(node.shadowRoot.childNodes);\n        retVal.children = realArray.reduce(function(res, child) {\n          return reduceShadowDOM(res, child, retVal);\n        }, []);\n        return [ retVal ];\n      } else {\n        if (nodeName2 === 'content' && typeof node.getDistributedNodes === 'function') {\n          realArray = Array.from(node.getDistributedNodes());\n          return realArray.reduce(function(res, child) {\n            return reduceShadowDOM(res, child, parent);\n          }, []);\n        } else if (nodeName2 === 'slot' && typeof node.assignedNodes === 'function') {\n          realArray = Array.from(node.assignedNodes());\n          if (!realArray.length) {\n            realArray = getSlotChildren(node);\n          }\n          var styl = window.getComputedStyle(node);\n          if (false) {\n            retVal = new virtual_node_default(node, parent, shadowId);\n            retVal.children = realArray.reduce(function(res, child) {\n              return reduceShadowDOM(res, child, retVal);\n            }, []);\n            return [ retVal ];\n          } else {\n            return realArray.reduce(function(res, child) {\n              return reduceShadowDOM(res, child, parent);\n            }, []);\n          }\n        } else {\n          if (node.nodeType === 1) {\n            retVal = new virtual_node_default(node, parent, shadowId);\n            realArray = Array.from(node.childNodes);\n            retVal.children = realArray.reduce(function(res, child) {\n              return reduceShadowDOM(res, child, retVal);\n            }, []);\n            return [ retVal ];\n          } else if (node.nodeType === 3) {\n            return [ new virtual_node_default(node, parent) ];\n          }\n          return void 0;\n        }\n      }\n    }\n    function getFlattenedTree() {\n      var node = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document.documentElement;\n      var shadowId = arguments.length > 1 ? arguments[1] : undefined;\n      cache_default.set('nodeMap', new WeakMap());\n      return flattenTree(node, shadowId, null);\n    }\n    var get_flattened_tree_default = getFlattenedTree;\n    function getBaseLang(lang) {\n      if (!lang) {\n        return '';\n      }\n      return lang.trim().split('-')[0].toLowerCase();\n    }\n    var get_base_lang_default = getBaseLang;\n    function failureSummary(nodeData) {\n      var failingChecks = {};\n      failingChecks.none = nodeData.none.concat(nodeData.all);\n      failingChecks.any = nodeData.any;\n      return Object.keys(failingChecks).map(function(key) {\n        if (!failingChecks[key].length) {\n          return;\n        }\n        var sum = axe._audit.data.failureSummaries[key];\n        if (sum && typeof sum.failureMessage === 'function') {\n          return sum.failureMessage(failingChecks[key].map(function(check4) {\n            return check4.message || '';\n          }));\n        }\n      }).filter(function(i) {\n        return i !== void 0;\n      }).join('\\n\\n');\n    }\n    var failure_summary_default = failureSummary;\n    function getEnvironmentData() {\n      var win = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window;\n      var _win$screen = win.screen, screen = _win$screen === void 0 ? {} : _win$screen, _win$navigator = win.navigator, navigator = _win$navigator === void 0 ? {} : _win$navigator, _win$location = win.location, location = _win$location === void 0 ? {} : _win$location, innerHeight = win.innerHeight, innerWidth = win.innerWidth;\n      var orientation = screen.msOrientation || screen.orientation || screen.mozOrientation || {};\n      return {\n        testEngine: {\n          name: 'axe-core',\n          version: axe.version\n        },\n        testRunner: {\n          name: axe._audit.brand\n        },\n        testEnvironment: {\n          userAgent: navigator.userAgent,\n          windowWidth: innerWidth,\n          windowHeight: innerHeight,\n          orientationAngle: orientation.angle,\n          orientationType: orientation.type\n        },\n        timestamp: new Date().toISOString(),\n        url: location.href\n      };\n    }\n    var get_environment_data_default = getEnvironmentData;\n    function incompleteFallbackMessage() {\n      return typeof axe._audit.data.incompleteFallbackMessage === 'function' ? axe._audit.data.incompleteFallbackMessage() : axe._audit.data.incompleteFallbackMessage;\n    }\n    var incomplete_fallback_msg_default = incompleteFallbackMessage;\n    function normalizeRelatedNodes(node, options) {\n      [ 'any', 'all', 'none' ].forEach(function(type) {\n        if (!Array.isArray(node[type])) {\n          return;\n        }\n        node[type].filter(function(checkRes) {\n          return Array.isArray(checkRes.relatedNodes);\n        }).forEach(function(checkRes) {\n          checkRes.relatedNodes = checkRes.relatedNodes.map(function(relatedNode) {\n            var res = {\n              html: relatedNode.source\n            };\n            if (options.elementRef && !relatedNode.fromFrame) {\n              res.element = relatedNode.element;\n            }\n            if (options.selectors !== false || relatedNode.fromFrame) {\n              res.target = relatedNode.selector;\n            }\n            if (options.ancestry) {\n              res.ancestry = relatedNode.ancestry;\n            }\n            if (options.xpath) {\n              res.xpath = relatedNode.xpath;\n            }\n            return res;\n          });\n        });\n      });\n    }\n    var resultKeys = constants_default.resultGroups;\n    function processAggregate(results, options) {\n      var resultObject = axe.utils.aggregateResult(results);\n      resultKeys.forEach(function(key) {\n        if (options.resultTypes && !options.resultTypes.includes(key)) {\n          (resultObject[key] || []).forEach(function(ruleResult) {\n            if (Array.isArray(ruleResult.nodes) && ruleResult.nodes.length > 0) {\n              ruleResult.nodes = [ ruleResult.nodes[0] ];\n            }\n          });\n        }\n        resultObject[key] = (resultObject[key] || []).map(function(ruleResult) {\n          ruleResult = Object.assign({}, ruleResult);\n          if (Array.isArray(ruleResult.nodes) && ruleResult.nodes.length > 0) {\n            ruleResult.nodes = ruleResult.nodes.map(function(subResult) {\n              if (_typeof(subResult.node) === 'object') {\n                subResult.html = subResult.node.source;\n                if (options.elementRef && !subResult.node.fromFrame) {\n                  subResult.element = subResult.node.element;\n                }\n                if (options.selectors !== false || subResult.node.fromFrame) {\n                  subResult.target = subResult.node.selector;\n                }\n                if (options.ancestry) {\n                  subResult.ancestry = subResult.node.ancestry;\n                }\n                if (options.xpath) {\n                  subResult.xpath = subResult.node.xpath;\n                }\n              }\n              delete subResult.result;\n              delete subResult.node;\n              normalizeRelatedNodes(subResult, options);\n              return subResult;\n            });\n          }\n          resultKeys.forEach(function(key2) {\n            return delete ruleResult[key2];\n          });\n          delete ruleResult.pageLevel;\n          delete ruleResult.result;\n          return ruleResult;\n        });\n      });\n      return resultObject;\n    }\n    var process_aggregate_default = processAggregate;\n    axe._thisWillBeDeletedDoNotUse = axe._thisWillBeDeletedDoNotUse || {};\n    axe._thisWillBeDeletedDoNotUse.helpers = {\n      failureSummary: failure_summary_default,\n      getEnvironmentData: get_environment_data_default,\n      incompleteFallbackMessage: incomplete_fallback_msg_default,\n      processAggregate: process_aggregate_default\n    };\n    var dataRegex = /\\$\\{\\s?data\\s?\\}/g;\n    function substitute(str, data2) {\n      if (typeof data2 === 'string') {\n        return str.replace(dataRegex, data2);\n      }\n      for (var prop in data2) {\n        if (data2.hasOwnProperty(prop)) {\n          var regex = new RegExp('\\\\${\\\\s?data\\\\.' + prop + '\\\\s?}', 'g');\n          var replace = typeof data2[prop] === 'undefined' ? '' : String(data2[prop]);\n          str = str.replace(regex, replace);\n        }\n      }\n      return str;\n    }\n    function processMessage(message, data2) {\n      if (!message) {\n        return;\n      }\n      if (Array.isArray(data2)) {\n        data2.values = data2.join(', ');\n        if (typeof message.singular === 'string' && typeof message.plural === 'string') {\n          var str2 = data2.length === 1 ? message.singular : message.plural;\n          return substitute(str2, data2);\n        }\n        return substitute(message, data2);\n      }\n      if (typeof message === 'string') {\n        return substitute(message, data2);\n      }\n      if (typeof data2 === 'string') {\n        var _str = message[data2];\n        return substitute(_str, data2);\n      }\n      var str = message['default'] || incomplete_fallback_msg_default();\n      if (data2 && data2.messageKey && message[data2.messageKey]) {\n        str = message[data2.messageKey];\n      }\n      return processMessage(str, data2);\n    }\n    var process_message_default = processMessage;\n    function getCheckMessage(checkId, type, data2) {\n      var check4 = axe._audit.data.checks[checkId];\n      if (!check4) {\n        throw new Error('Cannot get message for unknown check: '.concat(checkId, '.'));\n      }\n      if (!check4.messages[type]) {\n        throw new Error('Check \"'.concat(checkId, '\"\" does not have a \"').concat(type, '\" message.'));\n      }\n      return process_message_default(check4.messages[type], data2);\n    }\n    var get_check_message_default = getCheckMessage;\n    function getCheckOption(check4, ruleID, options) {\n      var ruleCheckOption = ((options.rules && options.rules[ruleID] || {}).checks || {})[check4.id];\n      var checkOption = (options.checks || {})[check4.id];\n      var enabled = check4.enabled;\n      var opts = check4.options;\n      if (checkOption) {\n        if (checkOption.hasOwnProperty('enabled')) {\n          enabled = checkOption.enabled;\n        }\n        if (checkOption.hasOwnProperty('options')) {\n          opts = checkOption.options;\n        }\n      }\n      if (ruleCheckOption) {\n        if (ruleCheckOption.hasOwnProperty('enabled')) {\n          enabled = ruleCheckOption.enabled;\n        }\n        if (ruleCheckOption.hasOwnProperty('options')) {\n          opts = ruleCheckOption.options;\n        }\n      }\n      return {\n        enabled: enabled,\n        options: opts,\n        absolutePaths: options.absolutePaths\n      };\n    }\n    var get_check_option_default = getCheckOption;\n    function getNodeFromTree(vNode, node) {\n      var el = node || vNode;\n      return cache_default.get('nodeMap') ? cache_default.get('nodeMap').get(el) : null;\n    }\n    var get_node_from_tree_default = getNodeFromTree;\n    function getRule(ruleId) {\n      var rule3 = axe._audit.rules.find(function(rule4) {\n        return rule4.id === ruleId;\n      });\n      if (!rule3) {\n        throw new Error('Cannot find rule by id: '.concat(ruleId));\n      }\n      return rule3;\n    }\n    var get_rule_default = getRule;\n    function getScroll(elm) {\n      var buffer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n      var overflowX = elm.scrollWidth > elm.clientWidth + buffer;\n      var overflowY = elm.scrollHeight > elm.clientHeight + buffer;\n      if (!(overflowX || overflowY)) {\n        return;\n      }\n      var style = window.getComputedStyle(elm);\n      var overflowXStyle = style.getPropertyValue('overflow-x');\n      var overflowYStyle = style.getPropertyValue('overflow-y');\n      var scrollableX = overflowXStyle !== 'visible' && overflowXStyle !== 'hidden';\n      var scrollableY = overflowYStyle !== 'visible' && overflowYStyle !== 'hidden';\n      if (overflowX && scrollableX || overflowY && scrollableY) {\n        return {\n          elm: elm,\n          top: elm.scrollTop,\n          left: elm.scrollLeft\n        };\n      }\n    }\n    var get_scroll_default = getScroll;\n    function getElmScrollRecursive(root) {\n      return Array.from(root.children || root.childNodes || []).reduce(function(scrolls, elm) {\n        var scroll = get_scroll_default(elm);\n        if (scroll) {\n          scrolls.push(scroll);\n        }\n        return scrolls.concat(getElmScrollRecursive(elm));\n      }, []);\n    }\n    function getScrollState() {\n      var win = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window;\n      var root = win.document.documentElement;\n      var windowScroll = [ win.pageXOffset !== void 0 ? {\n        elm: win,\n        top: win.pageYOffset,\n        left: win.pageXOffset\n      } : {\n        elm: root,\n        top: root.scrollTop,\n        left: root.scrollLeft\n      } ];\n      return windowScroll.concat(getElmScrollRecursive(document.body));\n    }\n    var get_scroll_state_default = getScrollState;\n    function _getStandards() {\n      return clone_default(standards_default);\n    }\n    function getStyleSheetFactory(dynamicDoc) {\n      if (!dynamicDoc) {\n        throw new Error('axe.utils.getStyleSheetFactory should be invoked with an argument');\n      }\n      return function(options) {\n        var data2 = options.data, _options$isCrossOrigi = options.isCrossOrigin, isCrossOrigin = _options$isCrossOrigi === void 0 ? false : _options$isCrossOrigi, shadowId = options.shadowId, root = options.root, priority = options.priority, _options$isLink = options.isLink, isLink = _options$isLink === void 0 ? false : _options$isLink;\n        var style = dynamicDoc.createElement('style');\n        if (isLink) {\n          var text32 = dynamicDoc.createTextNode('@import \"'.concat(data2.href, '\"'));\n          style.appendChild(text32);\n        } else {\n          style.appendChild(dynamicDoc.createTextNode(data2));\n        }\n        dynamicDoc.head.appendChild(style);\n        return {\n          sheet: style.sheet,\n          isCrossOrigin: isCrossOrigin,\n          shadowId: shadowId,\n          root: root,\n          priority: priority\n        };\n      };\n    }\n    var get_stylesheet_factory_default = getStyleSheetFactory;\n    var styleSheet;\n    function injectStyle(style) {\n      if (styleSheet && styleSheet.parentNode) {\n        if (styleSheet.styleSheet === void 0) {\n          styleSheet.appendChild(document.createTextNode(style));\n        } else {\n          styleSheet.styleSheet.cssText += style;\n        }\n        return styleSheet;\n      }\n      if (!style) {\n        return;\n      }\n      var head = document.head || document.getElementsByTagName('head')[0];\n      styleSheet = document.createElement('style');\n      styleSheet.type = 'text/css';\n      if (styleSheet.styleSheet === void 0) {\n        styleSheet.appendChild(document.createTextNode(style));\n      } else {\n        styleSheet.styleSheet.cssText = style;\n      }\n      head.appendChild(styleSheet);\n      return styleSheet;\n    }\n    var inject_style_default = injectStyle;\n    function isHidden(el, recursed) {\n      var node = get_node_from_tree_default(el);\n      if (el.nodeType === 9) {\n        return false;\n      }\n      if (el.nodeType === 11) {\n        el = el.host;\n      }\n      if (node && node._isHidden !== null) {\n        return node._isHidden;\n      }\n      var style = window.getComputedStyle(el, null);\n      if (!style || !el.parentNode || style.getPropertyValue('display') === 'none' || !recursed && style.getPropertyValue('visibility') === 'hidden' || el.getAttribute('aria-hidden') === 'true') {\n        return true;\n      }\n      var parent = el.assignedSlot ? el.assignedSlot : el.parentNode;\n      var hidden = isHidden(parent, true);\n      if (node) {\n        node._isHidden = hidden;\n      }\n      return hidden;\n    }\n    var is_hidden_default = isHidden;\n    var htmlTags = [ 'a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'math', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rb', 'rp', 'rt', 'rtc', 'ruby', 's', 'samp', 'script', 'section', 'select', 'slot', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'svg', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr' ];\n    function isHtmlElement(node) {\n      if (node.namespaceURI === 'http://www.w3.org/2000/svg') {\n        return false;\n      }\n      return htmlTags.includes(node.nodeName.toLowerCase());\n    }\n    var is_html_element_default = isHtmlElement;\n    function getDeepest(collection) {\n      return collection.sort(function(a, b) {\n        if (contains_default(a, b)) {\n          return 1;\n        }\n        return -1;\n      })[0];\n    }\n    function isNodeInContext(node, context3) {\n      var include = context3.include && getDeepest(context3.include.filter(function(candidate) {\n        return contains_default(candidate, node);\n      }));\n      var exclude = context3.exclude && getDeepest(context3.exclude.filter(function(candidate) {\n        return contains_default(candidate, node);\n      }));\n      if (!exclude && include || exclude && contains_default(exclude, include)) {\n        return true;\n      }\n      return false;\n    }\n    var is_node_in_context_default = isNodeInContext;\n    var memoizee = __toModule(require_memoizee());\n    axe._memoizedFns = [];\n    function memoizeImplementation(fn) {\n      var memoized = memoizee['default'](fn);\n      axe._memoizedFns.push(memoized);\n      return memoized;\n    }\n    var memoize_default = memoizeImplementation;\n    function parseSameOriginStylesheet(sheet, options, priority, importedUrls) {\n      var isCrossOrigin = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n      var rules = Array.from(sheet.cssRules);\n      if (!rules) {\n        return Promise.resolve();\n      }\n      var cssImportRules = rules.filter(function(r) {\n        return r.type === 3;\n      });\n      if (!cssImportRules.length) {\n        return Promise.resolve({\n          isCrossOrigin: isCrossOrigin,\n          priority: priority,\n          root: options.rootNode,\n          shadowId: options.shadowId,\n          sheet: sheet\n        });\n      }\n      var cssImportUrlsNotAlreadyImported = cssImportRules.filter(function(rule3) {\n        return rule3.href;\n      }).map(function(rule3) {\n        return rule3.href;\n      }).filter(function(url) {\n        return !importedUrls.includes(url);\n      });\n      var promises = cssImportUrlsNotAlreadyImported.map(function(importUrl, cssRuleIndex) {\n        var newPriority = [].concat(_toConsumableArray(priority), [ cssRuleIndex ]);\n        var isCrossOriginRequest = /^https?:\\/\\/|^\\/\\//i.test(importUrl);\n        return parse_crossorigin_stylesheet_default(importUrl, options, newPriority, importedUrls, isCrossOriginRequest);\n      });\n      var nonImportCSSRules = rules.filter(function(r) {\n        return r.type !== 3;\n      });\n      if (!nonImportCSSRules.length) {\n        return Promise.all(promises);\n      }\n      promises.push(Promise.resolve(options.convertDataToStylesheet({\n        data: nonImportCSSRules.map(function(rule3) {\n          return rule3.cssText;\n        }).join(),\n        isCrossOrigin: isCrossOrigin,\n        priority: priority,\n        root: options.rootNode,\n        shadowId: options.shadowId\n      })));\n      return Promise.all(promises);\n    }\n    var parse_sameorigin_stylesheet_default = parseSameOriginStylesheet;\n    function parseStylesheet(sheet, options, priority, importedUrls) {\n      var isCrossOrigin = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n      var isSameOrigin = isSameOriginStylesheet(sheet);\n      if (isSameOrigin) {\n        return parse_sameorigin_stylesheet_default(sheet, options, priority, importedUrls, isCrossOrigin);\n      }\n      return parse_crossorigin_stylesheet_default(sheet.href, options, priority, importedUrls, true);\n    }\n    function isSameOriginStylesheet(sheet) {\n      try {\n        var rules = sheet.cssRules;\n        if (!rules && sheet.href) {\n          return false;\n        }\n        return true;\n      } catch (e) {\n        return false;\n      }\n    }\n    var parse_stylesheet_default = parseStylesheet;\n    function parseCrossOriginStylesheet(url, options, priority, importedUrls, isCrossOrigin) {\n      importedUrls.push(url);\n      return new Promise(function(resolve, reject) {\n        var request = new XMLHttpRequest();\n        request.open('GET', url);\n        request.timeout = constants_default.preload.timeout;\n        request.addEventListener('error', reject);\n        request.addEventListener('timeout', reject);\n        request.addEventListener('loadend', function(event) {\n          if (event.loaded && request.responseText) {\n            return resolve(request.responseText);\n          }\n          reject(request.responseText);\n        });\n        request.send();\n      }).then(function(data2) {\n        var result = options.convertDataToStylesheet({\n          data: data2,\n          isCrossOrigin: isCrossOrigin,\n          priority: priority,\n          root: options.rootNode,\n          shadowId: options.shadowId\n        });\n        return parse_stylesheet_default(result.sheet, options, priority, importedUrls, result.isCrossOrigin);\n      });\n    }\n    var parse_crossorigin_stylesheet_default = parseCrossOriginStylesheet;\n    var performanceTimer = function() {\n      function now() {\n        if (window.performance && window.performance) {\n          return window.performance.now();\n        }\n      }\n      var originalTime = null;\n      var lastRecordedTime = now();\n      return {\n        start: function start() {\n          this.mark('mark_axe_start');\n        },\n        end: function end() {\n          this.mark('mark_axe_end');\n          this.measure('axe', 'mark_axe_start', 'mark_axe_end');\n          this.logMeasures('axe');\n        },\n        auditStart: function auditStart() {\n          this.mark('mark_audit_start');\n        },\n        auditEnd: function auditEnd() {\n          this.mark('mark_audit_end');\n          this.measure('audit_start_to_end', 'mark_audit_start', 'mark_audit_end');\n          this.logMeasures();\n        },\n        mark: function mark(markName) {\n          if (window.performance && window.performance.mark !== void 0) {\n            window.performance.mark(markName);\n          }\n        },\n        measure: function measure(measureName, startMark, endMark) {\n          if (window.performance && window.performance.measure !== void 0) {\n            window.performance.measure(measureName, startMark, endMark);\n          }\n        },\n        logMeasures: function logMeasures(measureName) {\n          function logMeasure(req2) {\n            log_default('Measure ' + req2.name + ' took ' + req2.duration + 'ms');\n          }\n          if (window.performance && window.performance.getEntriesByType !== void 0) {\n            var axeStart = window.performance.getEntriesByName('mark_axe_start')[0];\n            var measures = window.performance.getEntriesByType('measure').filter(function(measure) {\n              return measure.startTime >= axeStart.startTime;\n            });\n            for (var i = 0; i < measures.length; ++i) {\n              var req = measures[i];\n              if (req.name === measureName) {\n                logMeasure(req);\n                return;\n              }\n              logMeasure(req);\n            }\n          }\n        },\n        timeElapsed: function timeElapsed() {\n          return now() - lastRecordedTime;\n        },\n        reset: function reset() {\n          if (!originalTime) {\n            originalTime = now();\n          }\n          lastRecordedTime = now();\n        }\n      };\n    }();\n    var performance_timer_default = performanceTimer;\n    if (typeof Object.assign !== 'function') {\n      (function() {\n        Object.assign = function(target) {\n          if (target === void 0 || target === null) {\n            throw new TypeError('Cannot convert undefined or null to object');\n          }\n          var output = Object(target);\n          for (var index = 1; index < arguments.length; index++) {\n            var source = arguments[index];\n            if (source !== void 0 && source !== null) {\n              for (var nextKey in source) {\n                if (source.hasOwnProperty(nextKey)) {\n                  output[nextKey] = source[nextKey];\n                }\n              }\n            }\n          }\n          return output;\n        };\n      })();\n    }\n    if (!Array.prototype.find) {\n      Object.defineProperty(Array.prototype, 'find', {\n        value: function value(predicate) {\n          if (this === null) {\n            throw new TypeError('Array.prototype.find called on null or undefined');\n          }\n          if (typeof predicate !== 'function') {\n            throw new TypeError('predicate must be a function');\n          }\n          var list = Object(this);\n          var length = list.length >>> 0;\n          var thisArg = arguments[1];\n          var value;\n          for (var i = 0; i < length; i++) {\n            value = list[i];\n            if (predicate.call(thisArg, value, i, list)) {\n              return value;\n            }\n          }\n          return void 0;\n        }\n      });\n    }\n    function _pollyfillElementsFromPoint() {\n      if (document.elementsFromPoint) {\n        return document.elementsFromPoint;\n      }\n      if (document.msElementsFromPoint) {\n        return document.msElementsFromPoint;\n      }\n      var usePointer = function() {\n        var element = document.createElement('x');\n        element.style.cssText = 'pointer-events:auto';\n        return element.style.pointerEvents === 'auto';\n      }();\n      var cssProp = usePointer ? 'pointer-events' : 'visibility';\n      var cssDisableVal = usePointer ? 'none' : 'hidden';\n      var style = document.createElement('style');\n      style.innerHTML = usePointer ? '* { pointer-events: all }' : '* { visibility: visible }';\n      return function(x, y) {\n        var current, i, d;\n        var elements = [];\n        var previousPointerEvents = [];\n        document.head.appendChild(style);\n        while ((current = document.elementFromPoint(x, y)) && elements.indexOf(current) === -1) {\n          elements.push(current);\n          previousPointerEvents.push({\n            value: current.style.getPropertyValue(cssProp),\n            priority: current.style.getPropertyPriority(cssProp)\n          });\n          current.style.setProperty(cssProp, cssDisableVal, 'important');\n        }\n        if (elements.indexOf(document.documentElement) < elements.length - 1) {\n          elements.splice(elements.indexOf(document.documentElement), 1);\n          elements.push(document.documentElement);\n        }\n        for (i = previousPointerEvents.length; !!(d = previousPointerEvents[--i]); ) {\n          elements[i].style.setProperty(cssProp, d.value ? d.value : '', d.priority);\n        }\n        document.head.removeChild(style);\n        return elements;\n      };\n    }\n    if (typeof window.addEventListener === 'function') {\n      document.elementsFromPoint = _pollyfillElementsFromPoint();\n    }\n    if (!Array.prototype.includes) {\n      Object.defineProperty(Array.prototype, 'includes', {\n        value: function value(searchElement) {\n          var O = Object(this);\n          var len = parseInt(O.length, 10) || 0;\n          if (len === 0) {\n            return false;\n          }\n          var n = parseInt(arguments[1], 10) || 0;\n          var k;\n          if (n >= 0) {\n            k = n;\n          } else {\n            k = len + n;\n            if (k < 0) {\n              k = 0;\n            }\n          }\n          var currentElement;\n          while (k < len) {\n            currentElement = O[k];\n            if (searchElement === currentElement || searchElement !== searchElement && currentElement !== currentElement) {\n              return true;\n            }\n            k++;\n          }\n          return false;\n        }\n      });\n    }\n    if (!Array.prototype.some) {\n      Object.defineProperty(Array.prototype, 'some', {\n        value: function value(fun) {\n          if (this == null) {\n            throw new TypeError('Array.prototype.some called on null or undefined');\n          }\n          if (typeof fun !== 'function') {\n            throw new TypeError();\n          }\n          var t = Object(this);\n          var len = t.length >>> 0;\n          var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n          for (var i = 0; i < len; i++) {\n            if (i in t && fun.call(thisArg, t[i], i, t)) {\n              return true;\n            }\n          }\n          return false;\n        }\n      });\n    }\n    if (!Array.from) {\n      Object.defineProperty(Array, 'from', {\n        value: function() {\n          var toStr = Object.prototype.toString;\n          var isCallable = function isCallable(fn) {\n            return typeof fn === 'function' || toStr.call(fn) === '[object Function]';\n          };\n          var toInteger = function toInteger(value) {\n            var number = Number(value);\n            if (isNaN(number)) {\n              return 0;\n            }\n            if (number === 0 || !isFinite(number)) {\n              return number;\n            }\n            return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number));\n          };\n          var maxSafeInteger = Math.pow(2, 53) - 1;\n          var toLength = function toLength(value) {\n            var len = toInteger(value);\n            return Math.min(Math.max(len, 0), maxSafeInteger);\n          };\n          return function from(arrayLike) {\n            var C = this;\n            var items = Object(arrayLike);\n            if (arrayLike == null) {\n              throw new TypeError('Array.from requires an array-like object - not null or undefined');\n            }\n            var mapFn = arguments.length > 1 ? arguments[1] : void 0;\n            var T;\n            if (typeof mapFn !== 'undefined') {\n              if (!isCallable(mapFn)) {\n                throw new TypeError('Array.from: when provided, the second argument must be a function');\n              }\n              if (arguments.length > 2) {\n                T = arguments[2];\n              }\n            }\n            var len = toLength(items.length);\n            var A = isCallable(C) ? Object(new C(len)) : new Array(len);\n            var k = 0;\n            var kValue;\n            while (k < len) {\n              kValue = items[k];\n              if (mapFn) {\n                A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k);\n              } else {\n                A[k] = kValue;\n              }\n              k += 1;\n            }\n            A.length = len;\n            return A;\n          };\n        }()\n      });\n    }\n    if (!String.prototype.includes) {\n      String.prototype.includes = function(search, start) {\n        if (typeof start !== 'number') {\n          start = 0;\n        }\n        if (start + search.length > this.length) {\n          return false;\n        } else {\n          return this.indexOf(search, start) !== -1;\n        }\n      };\n    }\n    function uniqueArray(arr1, arr2) {\n      return arr1.concat(arr2).filter(function(elem, pos, arr) {\n        return arr.indexOf(elem) === pos;\n      });\n    }\n    var unique_array_default = uniqueArray;\n    function createLocalVariables(vNodes, anyLevel, thisLevel, parentShadowId) {\n      var retVal = {\n        vNodes: vNodes.slice(),\n        anyLevel: anyLevel,\n        thisLevel: thisLevel,\n        parentShadowId: parentShadowId\n      };\n      retVal.vNodes.reverse();\n      return retVal;\n    }\n    function matchExpressions(domTree, expressions, filter) {\n      var stack = [];\n      var vNodes = Array.isArray(domTree) ? domTree : [ domTree ];\n      var currentLevel = createLocalVariables(vNodes, expressions, [], domTree[0].shadowId);\n      var result = [];\n      while (currentLevel.vNodes.length) {\n        var vNode = currentLevel.vNodes.pop();\n        var childOnly = [];\n        var childAny = [];\n        var combined = currentLevel.anyLevel.slice().concat(currentLevel.thisLevel);\n        var added = false;\n        for (var _i7 = 0; _i7 < combined.length; _i7++) {\n          var exp = combined[_i7];\n          if ((!exp[0].id || vNode.shadowId === currentLevel.parentShadowId) && _matchesExpression(vNode, exp[0])) {\n            if (exp.length === 1) {\n              if (!added && (!filter || filter(vNode))) {\n                result.push(vNode);\n                added = true;\n              }\n            } else {\n              var rest = exp.slice(1);\n              if ([ ' ', '>' ].includes(rest[0].combinator) === false) {\n                throw new Error('axe.utils.querySelectorAll does not support the combinator: ' + exp[1].combinator);\n              }\n              if (rest[0].combinator === '>') {\n                childOnly.push(rest);\n              } else {\n                childAny.push(rest);\n              }\n            }\n          }\n          if ((!exp[0].id || vNode.shadowId === currentLevel.parentShadowId) && currentLevel.anyLevel.includes(exp)) {\n            childAny.push(exp);\n          }\n        }\n        if (vNode.children && vNode.children.length) {\n          stack.push(currentLevel);\n          currentLevel = createLocalVariables(vNode.children, childAny, childOnly, vNode.shadowId);\n        }\n        while (!currentLevel.vNodes.length && stack.length) {\n          currentLevel = stack.pop();\n        }\n      }\n      return result;\n    }\n    function querySelectorAllFilter(domTree, selector, filter) {\n      domTree = Array.isArray(domTree) ? domTree : [ domTree ];\n      var expressions = _convertSelector(selector);\n      return matchExpressions(domTree, expressions, filter);\n    }\n    var query_selector_all_filter_default = querySelectorAllFilter;\n    function preloadCssom(_ref15) {\n      var _ref15$treeRoot = _ref15.treeRoot, treeRoot = _ref15$treeRoot === void 0 ? axe._tree[0] : _ref15$treeRoot;\n      var rootNodes = getAllRootNodesInTree(treeRoot);\n      if (!rootNodes.length) {\n        return Promise.resolve();\n      }\n      var dynamicDoc = document.implementation.createHTMLDocument('Dynamic document for loading cssom');\n      var convertDataToStylesheet = get_stylesheet_factory_default(dynamicDoc);\n      return getCssomForAllRootNodes(rootNodes, convertDataToStylesheet).then(function(assets) {\n        return flattenAssets(assets);\n      });\n    }\n    var preload_cssom_default = preloadCssom;\n    function getAllRootNodesInTree(tree) {\n      var ids = [];\n      var rootNodes = query_selector_all_filter_default(tree, '*', function(node) {\n        if (ids.includes(node.shadowId)) {\n          return false;\n        }\n        ids.push(node.shadowId);\n        return true;\n      }).map(function(node) {\n        return {\n          shadowId: node.shadowId,\n          rootNode: get_root_node_default(node.actualNode)\n        };\n      });\n      return unique_array_default(rootNodes, []);\n    }\n    function getCssomForAllRootNodes(rootNodes, convertDataToStylesheet) {\n      var promises = [];\n      rootNodes.forEach(function(_ref16, index) {\n        var rootNode = _ref16.rootNode, shadowId = _ref16.shadowId;\n        var sheets = getStylesheetsOfRootNode(rootNode, shadowId, convertDataToStylesheet);\n        if (!sheets) {\n          return Promise.all(promises);\n        }\n        var rootIndex = index + 1;\n        var parseOptions = {\n          rootNode: rootNode,\n          shadowId: shadowId,\n          convertDataToStylesheet: convertDataToStylesheet,\n          rootIndex: rootIndex\n        };\n        var importedUrls = [];\n        var p = Promise.all(sheets.map(function(sheet, sheetIndex) {\n          var priority = [ rootIndex, sheetIndex ];\n          return parse_stylesheet_default(sheet, parseOptions, priority, importedUrls);\n        }));\n        promises.push(p);\n      });\n      return Promise.all(promises);\n    }\n    function flattenAssets(assets) {\n      return assets.reduce(function(acc, val) {\n        return Array.isArray(val) ? acc.concat(flattenAssets(val)) : acc.concat(val);\n      }, []);\n    }\n    function getStylesheetsOfRootNode(rootNode, shadowId, convertDataToStylesheet) {\n      var sheets;\n      if (rootNode.nodeType === 11 && shadowId) {\n        sheets = getStylesheetsFromDocumentFragment(rootNode, convertDataToStylesheet);\n      } else {\n        sheets = getStylesheetsFromDocument(rootNode);\n      }\n      return filterStylesheetsWithSameHref(sheets);\n    }\n    function getStylesheetsFromDocumentFragment(rootNode, convertDataToStylesheet) {\n      return Array.from(rootNode.children).filter(filerStyleAndLinkAttributesInDocumentFragment).reduce(function(out, node) {\n        var nodeName2 = node.nodeName.toUpperCase();\n        var data2 = nodeName2 === 'STYLE' ? node.textContent : node;\n        var isLink = nodeName2 === 'LINK';\n        var stylesheet = convertDataToStylesheet({\n          data: data2,\n          isLink: isLink,\n          root: rootNode\n        });\n        out.push(stylesheet.sheet);\n        return out;\n      }, []);\n    }\n    function getStylesheetsFromDocument(rootNode) {\n      return Array.from(rootNode.styleSheets).filter(function(sheet) {\n        return filterMediaIsPrint(sheet.media.mediaText);\n      });\n    }\n    function filerStyleAndLinkAttributesInDocumentFragment(node) {\n      var nodeName2 = node.nodeName.toUpperCase();\n      var linkHref = node.getAttribute('href');\n      var linkRel = node.getAttribute('rel');\n      var isLink = nodeName2 === 'LINK' && linkHref && linkRel && node.rel.toUpperCase().includes('STYLESHEET');\n      var isStyle = nodeName2 === 'STYLE';\n      return isStyle || isLink && filterMediaIsPrint(node.media);\n    }\n    function filterMediaIsPrint(media) {\n      if (!media) {\n        return true;\n      }\n      return !media.toUpperCase().includes('PRINT');\n    }\n    function filterStylesheetsWithSameHref(sheets) {\n      var hrefs = [];\n      return sheets.filter(function(sheet) {\n        if (!sheet.href) {\n          return true;\n        }\n        if (hrefs.includes(sheet.href)) {\n          return false;\n        }\n        hrefs.push(sheet.href);\n        return true;\n      });\n    }\n    function preloadMedia(_ref17) {\n      var _ref17$treeRoot = _ref17.treeRoot, treeRoot = _ref17$treeRoot === void 0 ? axe._tree[0] : _ref17$treeRoot;\n      var mediaVirtualNodes = query_selector_all_filter_default(treeRoot, 'video, audio', function(_ref18) {\n        var actualNode = _ref18.actualNode;\n        if (actualNode.hasAttribute('src')) {\n          return !!actualNode.getAttribute('src');\n        }\n        var sourceWithSrc = Array.from(actualNode.getElementsByTagName('source')).filter(function(source) {\n          return !!source.getAttribute('src');\n        });\n        if (sourceWithSrc.length <= 0) {\n          return false;\n        }\n        return true;\n      });\n      return Promise.all(mediaVirtualNodes.map(function(_ref19) {\n        var actualNode = _ref19.actualNode;\n        return isMediaElementReady(actualNode);\n      }));\n    }\n    var preload_media_default = preloadMedia;\n    function isMediaElementReady(elm) {\n      return new Promise(function(resolve) {\n        if (elm.readyState > 0) {\n          resolve(elm);\n        }\n        function onMediaReady() {\n          elm.removeEventListener('loadedmetadata', onMediaReady);\n          resolve(elm);\n        }\n        elm.addEventListener('loadedmetadata', onMediaReady);\n      });\n    }\n    function isValidPreloadObject(preload3) {\n      return _typeof(preload3) === 'object' && Array.isArray(preload3.assets);\n    }\n    function _shouldPreload(options) {\n      if (!options || options.preload === void 0 || options.preload === null) {\n        return true;\n      }\n      if (typeof options.preload === 'boolean') {\n        return options.preload;\n      }\n      return isValidPreloadObject(options.preload);\n    }\n    function _getPreloadConfig(options) {\n      var _constants_default$pr = constants_default.preload, assets = _constants_default$pr.assets, timeout = _constants_default$pr.timeout;\n      var config = {\n        assets: assets,\n        timeout: timeout\n      };\n      if (!options.preload) {\n        return config;\n      }\n      if (typeof options.preload === 'boolean') {\n        return config;\n      }\n      var areRequestedAssetsValid = options.preload.assets.every(function(a) {\n        return assets.includes(a.toLowerCase());\n      });\n      if (!areRequestedAssetsValid) {\n        throw new Error('Requested assets, not supported. Supported assets are: '.concat(assets.join(', '), '.'));\n      }\n      config.assets = unique_array_default(options.preload.assets.map(function(a) {\n        return a.toLowerCase();\n      }), []);\n      if (options.preload.timeout && typeof options.preload.timeout === 'number' && !isNaN(options.preload.timeout)) {\n        config.timeout = options.preload.timeout;\n      }\n      return config;\n    }\n    function preload(options) {\n      var preloadFunctionsMap = {\n        cssom: preload_cssom_default,\n        media: preload_media_default\n      };\n      if (!_shouldPreload(options)) {\n        return Promise.resolve();\n      }\n      return new Promise(function(resolve, reject) {\n        var _getPreloadConfig2 = _getPreloadConfig(options), assets = _getPreloadConfig2.assets, timeout = _getPreloadConfig2.timeout;\n        var preloadTimeout = setTimeout(function() {\n          return reject(new Error('Preload assets timed out.'));\n        }, timeout);\n        Promise.all(assets.map(function(asset) {\n          return preloadFunctionsMap[asset](options).then(function(results) {\n            return _defineProperty({}, asset, results);\n          });\n        })).then(function(results) {\n          var preloadAssets = results.reduce(function(out, result) {\n            return _extends({}, out, result);\n          }, {});\n          clearTimeout(preloadTimeout);\n          resolve(preloadAssets);\n        })['catch'](function(err2) {\n          clearTimeout(preloadTimeout);\n          reject(err2);\n        });\n      });\n    }\n    var preload_default = preload;\n    function getIncompleteReason(checkData, messages) {\n      function getDefaultMsg(messages2) {\n        if (messages2.incomplete && messages2.incomplete['default']) {\n          return messages2.incomplete['default'];\n        } else {\n          return incomplete_fallback_msg_default();\n        }\n      }\n      if (checkData && checkData.missingData) {\n        try {\n          var msg = messages.incomplete[checkData.missingData[0].reason];\n          if (!msg) {\n            throw new Error();\n          }\n          return msg;\n        } catch (e) {\n          if (typeof checkData.missingData === 'string') {\n            return messages.incomplete[checkData.missingData];\n          } else {\n            return getDefaultMsg(messages);\n          }\n        }\n      } else if (checkData && checkData.messageKey) {\n        return messages.incomplete[checkData.messageKey];\n      } else {\n        return getDefaultMsg(messages);\n      }\n    }\n    function extender(checksData, shouldBeTrue) {\n      return function(check4) {\n        var sourceData = checksData[check4.id] || {};\n        var messages = sourceData.messages || {};\n        var data2 = Object.assign({}, sourceData);\n        delete data2.messages;\n        if (check4.result === void 0) {\n          if (_typeof(messages.incomplete) === 'object' && !Array.isArray(check4.data)) {\n            data2.message = getIncompleteReason(check4.data, messages);\n          }\n          if (!data2.message) {\n            data2.message = messages.incomplete;\n          }\n        } else {\n          data2.message = check4.result === shouldBeTrue ? messages.pass : messages.fail;\n        }\n        if (typeof data2.message !== 'function') {\n          data2.message = process_message_default(data2.message, check4.data);\n        }\n        extend_meta_data_default(check4, data2);\n      };\n    }\n    function publishMetaData(ruleResult) {\n      var checksData = axe._audit.data.checks || {};\n      var rulesData = axe._audit.data.rules || {};\n      var rule3 = find_by_default(axe._audit.rules, 'id', ruleResult.id) || {};\n      ruleResult.tags = clone_default(rule3.tags || []);\n      var shouldBeTrue = extender(checksData, true);\n      var shouldBeFalse = extender(checksData, false);\n      ruleResult.nodes.forEach(function(detail) {\n        detail.any.forEach(shouldBeTrue);\n        detail.all.forEach(shouldBeTrue);\n        detail.none.forEach(shouldBeFalse);\n      });\n      extend_meta_data_default(ruleResult, clone_default(rulesData[ruleResult.id] || {}));\n    }\n    var publish_metadata_default = publishMetaData;\n    function querySelectorAll(domTree, selector) {\n      return query_selector_all_filter_default(domTree, selector);\n    }\n    var query_selector_all_default = querySelectorAll;\n    function matchTags(rule3, runOnly) {\n      var include, exclude, matching;\n      var defaultExclude = axe._audit && axe._audit.tagExclude ? axe._audit.tagExclude : [];\n      if (runOnly.hasOwnProperty('include') || runOnly.hasOwnProperty('exclude')) {\n        include = runOnly.include || [];\n        include = Array.isArray(include) ? include : [ include ];\n        exclude = runOnly.exclude || [];\n        exclude = Array.isArray(exclude) ? exclude : [ exclude ];\n        exclude = exclude.concat(defaultExclude.filter(function(tag) {\n          return include.indexOf(tag) === -1;\n        }));\n      } else {\n        include = Array.isArray(runOnly) ? runOnly : [ runOnly ];\n        exclude = defaultExclude.filter(function(tag) {\n          return include.indexOf(tag) === -1;\n        });\n      }\n      matching = include.some(function(tag) {\n        return rule3.tags.indexOf(tag) !== -1;\n      });\n      if (matching || include.length === 0 && rule3.enabled !== false) {\n        return exclude.every(function(tag) {\n          return rule3.tags.indexOf(tag) === -1;\n        });\n      } else {\n        return false;\n      }\n    }\n    function ruleShouldRun(rule3, context3, options) {\n      var runOnly = options.runOnly || {};\n      var ruleOptions = (options.rules || {})[rule3.id];\n      if (rule3.pageLevel && !context3.page) {\n        return false;\n      } else if (runOnly.type === 'rule') {\n        return runOnly.values.indexOf(rule3.id) !== -1;\n      } else if (ruleOptions && typeof ruleOptions.enabled === 'boolean') {\n        return ruleOptions.enabled;\n      } else if (runOnly.type === 'tag' && runOnly.values) {\n        return matchTags(rule3, runOnly.values);\n      } else {\n        return matchTags(rule3, []);\n      }\n    }\n    var rule_should_run_default = ruleShouldRun;\n    function attributeMatches(node, attrName, filterAttrs) {\n      if (typeof filterAttrs[attrName] === 'undefined') {\n        return false;\n      }\n      if (filterAttrs[attrName] === true) {\n        return true;\n      }\n      return element_matches_default(node, filterAttrs[attrName]);\n    }\n    function filterHtmlAttrs(element, filterAttrs) {\n      if (!filterAttrs) {\n        return element;\n      }\n      var node = element.cloneNode(false);\n      var outerHTML = node.outerHTML;\n      var attributes4 = get_node_attributes_default(node);\n      if (cache_default.get(outerHTML)) {\n        node = cache_default.get(outerHTML);\n      } else if (attributes4) {\n        node = document.createElement(node.nodeName);\n        Array.from(attributes4).forEach(function(attr) {\n          if (!attributeMatches(element, attr.name, filterAttrs)) {\n            node.setAttribute(attr.name, attr.value);\n          }\n        });\n        cache_default.set(outerHTML, node);\n      }\n      Array.from(element.childNodes).forEach(function(child) {\n        node.appendChild(filterHtmlAttrs(child, filterAttrs));\n      });\n      return node;\n    }\n    var filter_html_attrs_default = filterHtmlAttrs;\n    function pushNode(result, nodes) {\n      var temp;\n      if (result.length === 0) {\n        return nodes;\n      }\n      if (result.length < nodes.length) {\n        temp = result;\n        result = nodes;\n        nodes = temp;\n      }\n      for (var _i8 = 0, l = nodes.length; _i8 < l; _i8++) {\n        if (!result.includes(nodes[_i8])) {\n          result.push(nodes[_i8]);\n        }\n      }\n      return result;\n    }\n    function reduceIncludes(includes) {\n      return includes.reduce(function(res, el) {\n        if (!res.length || !contains_default(res[res.length - 1], el)) {\n          res.push(el);\n        }\n        return res;\n      }, []);\n    }\n    function select(selector, context3) {\n      var result = [];\n      var candidate;\n      if (axe._selectCache) {\n        for (var j = 0, l = axe._selectCache.length; j < l; j++) {\n          var item = axe._selectCache[j];\n          if (item.selector === selector) {\n            return item.result;\n          }\n        }\n      }\n      var curried = function(context4) {\n        return function(node) {\n          return is_node_in_context_default(node, context4);\n        };\n      }(context3);\n      var reducedIncludes = reduceIncludes(context3.include);\n      for (var _i9 = 0; _i9 < reducedIncludes.length; _i9++) {\n        candidate = reducedIncludes[_i9];\n        result = pushNode(result, query_selector_all_filter_default(candidate, selector, curried));\n      }\n      if (axe._selectCache) {\n        axe._selectCache.push({\n          selector: selector,\n          result: result\n        });\n      }\n      return result;\n    }\n    var select_default = select;\n    function setScroll(elm, top, left) {\n      if (elm === window) {\n        return elm.scroll(left, top);\n      } else {\n        elm.scrollTop = top;\n        elm.scrollLeft = left;\n      }\n    }\n    function setScrollState(scrollState) {\n      scrollState.forEach(function(_ref21) {\n        var elm = _ref21.elm, top = _ref21.top, left = _ref21.left;\n        return setScroll(elm, top, left);\n      });\n    }\n    var set_scroll_state_default = setScrollState;\n    function tokenList(str) {\n      return (str || '').trim().replace(/\\s{2,}/g, ' ').split(' ');\n    }\n    var token_list_default = tokenList;\n    function validInputTypes() {\n      return [ 'hidden', 'text', 'search', 'tel', 'url', 'email', 'password', 'date', 'month', 'week', 'time', 'datetime-local', 'number', 'range', 'color', 'checkbox', 'radio', 'file', 'submit', 'image', 'reset', 'button' ];\n    }\n    var valid_input_type_default = validInputTypes;\n    var langs = [ , [ , [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, , 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, , 1, 1, 1, , 1, 1, , 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, , 1, 1, 1, 1, 1, 1, 1, , 1, , 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, , , , , , 1, 1, 1, 1, , , 1, 1, 1, , 1, , 1, , 1, 1 ], [ 1, 1, 1, , 1, 1, , 1, 1, 1, , 1, , , 1, 1, 1, , , 1, 1, 1, , , , , 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, , , , , 1, 1, 1, , 1, 1, 1, 1, 1, 1, , 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , , 1, 1, 1 ], [ , 1, , , , , , 1, , 1, , , , , 1, , 1, , , , 1, 1, , 1, , , 1 ], [ 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, , 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , , , 1, 1, 1, 1, , , 1, , 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, , 1, 1, , , 1, , , , , 1, 1, 1, , 1, , 1, , 1, , , , , , 1 ], [ 1, , 1, 1, 1, 1, , , 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1 ], [ 1, , 1, , 1, , , , , 1, , 1, 1, 1, 1, 1, , , , 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, , 1, 1, 1, , 1, , 1, 1, 1, , , 1, 1, 1, 1, 1, 1, 1, 1 ], [ , , 1, , , 1, , 1, , , , 1, 1, 1, , , , , , , , , , , 1 ], [ 1, 1, 1, 1, 1, 1, , 1, 1, 1, , 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, , , 1, 1, 1 ], [ 1, 1, 1, 1, 1, , , 1, , , 1, , , 1, 1, 1, , , , , 1, , , , , , 1 ] ], [ , [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, , 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, , , 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, , , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, , 1, , , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, , 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ] ], [ , [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, , 1, 1, , 1, 1, 1, 1, 1, 1, 1, , 1 ], [ , 1, , 1, 1, 1, , 1, 1, , 1, , 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, , 1, 1, 1, 1, 1, 1, 1, 1, , , 1, 1, 1, , , 1, 1, , , , , , 1, 1 ], [ 1, 1, 1, , , , , 1, , , , 1, 1, , 1, , , , , , 1, , , , , 1 ], [ , 1, , , 1, , , 1, , , , , , 1 ], [ , 1, , 1, , , , 1, , , , 1 ], [ 1, , 1, 1, 1, , 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, , , 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, , , 1, , , 1, , 1, 1, , 1, , 1, , , , , 1, , 1 ], [ , 1, , , , 1, , , 1, 1, , 1, , 1, 1, 1, 1, , 1, 1, , , 1, , , 1 ], [ , 1, 1, , , , , , 1, , , , 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, , 1, 1, 1 ], [ , 1, , 1, 1, 1, , , 1, 1, 1, 1, 1, 1, , 1, , , , , 1, 1, , 1, , 1 ], [ , 1, , 1, , 1, , 1, , 1, , 1, 1, 1, 1, 1, , , 1, 1, 1 ], [ , 1, 1, 1, , , , 1, 1, 1, , 1, 1, , , 1, 1, , 1, 1, 1, 1, , 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, , , 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, , 1, 1, 1, , 1, , , , , 1, 1, 1, , , 1, , 1, , , 1, 1 ], [ , , , , 1, , , , , , , , , , , , , , , , , 1 ], [ 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1 ], [ , 1, , 1, 1, 1, , 1, 1, , , , 1, 1, 1, 1, 1, , , 1, 1, 1, , , , , 1 ], [ 1, 1, 1, 1, , , , 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, , , , , , , 1, , , , , , , 1 ], [ , 1, 1, , 1, 1, , 1, , , , , , , , , , , , , 1 ], , [ 1, 1, 1, , , , , , , , , , , , , 1 ], [ , , , , , , , , 1, , , 1, , , 1, 1, , , , , 1 ] ], [ , [ 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1 ], [ , 1, 1, , 1, 1, 1, 1, , 1, 1, , 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, , 1 ], [ , , , 1, , , , , , , , , , , , , , , 1 ], [ , 1, , , 1, 1, , 1, , 1, 1, , , , 1, 1, , , 1, 1, , , , 1 ], [ 1, , , 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, , 1, 1, 1, 1, , , 1, , , , 1 ], , [ , 1, 1, 1, 1, 1, , 1, 1, 1, , 1, 1, , 1, 1, , , 1, 1, 1, 1, , 1, 1, , 1 ], [ , 1, , , 1, , , 1, , 1, , , 1, 1, 1, 1, , , 1, 1, , 1, 1, 1, 1 ], [ , 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, , , 1, 1, 1, 1, 1, 1, 1, , , 1, , , 1, , 1 ], [ , 1, , , , , , , , , , 1, 1, , , , , , 1, 1, , , , , 1 ], [ , , , , , , , 1, , , , 1, , 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, , , , 1, 1, 1, 1, 1, , , 1, 1, , 1, 1, 1, 1, 1 ], [ , 1, , , 1, 1, , 1, , 1, 1, 1, , , 1, 1, , , 1, , 1, 1, 1, 1, , 1 ], [ , 1, 1, 1, , 1, 1, , 1, 1, , 1, 1, , 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1 ], [ , , , , , , , , , , , , , , , , 1 ], , [ , 1, 1, 1, 1, 1, , 1, 1, 1, , , 1, , 1, 1, , 1, 1, 1, 1, 1, , 1, , 1 ], [ , , 1, , , 1, , , 1, 1, , , 1, , 1, 1, , 1 ], [ , 1, 1, , 1, , , , 1, 1, , 1, , 1, 1, 1, 1, , 1, 1, 1, 1, , , , 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1 ], [ 1, 1 ], [ , 1, , , , , , , , , , 1, 1, , , , , , 1, 1, , 1, , 1, , 1, 1 ], , [ , 1, 1, , 1, , , 1, , 1, , , , 1, 1, 1, , , , , , 1, , , , 1 ], [ 1, 1, , , 1, 1, , 1, , , , , 1, , 1 ] ], [ , [ , 1 ], [ , , , 1, , , , 1, , , , 1, , , , 1, , , 1, , , 1 ], [ , , , , , , , , , , , , , , , , , , 1, 1, , , , , , 1 ], , [ 1, , , , , 1 ], [ , 1, , , , 1, , , , 1 ], [ , 1, , , , , , , , , , , 1, , , 1, , , , , , , , , 1, 1 ], [ , , , , , , , , , , , , , , , , , , , , , 1 ], [ , , , , , , , , , , , , , , , , 1, , , , 1, , 1 ], [ , 1 ], [ , 1, , 1, , 1, , 1, , 1, , 1, 1, 1, , 1, 1, , 1, , , , , , , 1 ], [ 1, , , , , 1, , , 1, 1, , 1, , 1, , 1, 1, , , , , 1, , , 1 ], [ , 1, 1, , , 1, , 1, , 1, , 1, , 1, 1, 1, 1, , , 1, , 1, , 1, 1, 1 ], [ 1, 1, 1, 1, 1, , 1, , 1, , , , 1, 1, 1, 1, , 1, 1, , , 1, 1, 1, 1 ], [ 1, , , , , , , , , , , , , , , , , , , , 1 ], [ , , , , , , , , , 1 ], , [ , 1, , , , , , 1, 1, 1, , 1, , , , 1, , , 1, 1, 1, , , 1 ], [ 1, , , , , 1, , 1, 1, 1, , 1, 1, 1, 1, 1, , 1, , 1, , 1, , , 1, 1 ], [ 1, , 1, 1, , , , , 1, , , , , , 1, 1, , , 1, 1, 1, 1, , , 1, , 1 ], [ 1, , , , , , , , , , , , , , , , , 1 ], [ , , , , , 1, , , 1, , , , , , 1 ], [ , , , , , , , , , , , , , , , 1 ], [ , , , , , , , , , , , , , , , , , , , , 1 ], [ , 1, , , , , , , , , , , , , , 1 ], [ , 1, , , , 1 ] ], [ , [ 1, 1, 1, , 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, , 1, , 1, 1, , , 1, 1, 1 ], [ , , , , , , , , , , , , 1 ], [ , , , , , , , , , , , , , , , , , , , 1 ], , [ , , , , , , , , , , , , , , , , , , 1 ], [ 1, , , , , , , , , 1, , , , 1 ], [ , , , , , , , , , , , , , , , , , , 1 ], , [ 1, 1, , , , 1, 1, , , , , , 1, , , , 1, , 1, , 1, 1, , 1 ], [ 1 ], [ , , , , , , , , , , , 1, , , , , , , , , , , 1 ], [ , 1, , , , , , , 1, 1, , , 1, , 1, , , , 1, , , , , , , 1 ], [ , , , , , , , , , , , , , , , , 1, , , , , 1 ], [ , , 1, , , , , 1, , 1 ], [ 1, , , , 1, , , , , 1, , , , 1, 1, , , , 1, 1, , , , , 1 ], [ , , , , , 1 ], [ , , , , , , , , , , , , , , , , , , , 1 ], [ 1, , , 1, 1, , , , , , , 1, , 1, , 1, 1, 1, 1, 1, 1 ], [ , , , , , 1, , , , , , , 1, , , , , , , 1 ], , [ , , 1, 1, 1, 1, 1, , 1, 1, 1, , , 1, 1, , , 1, 1, , 1, 1, 1, , , 1 ], [ , , , , , , , , , , , , , , , , , , 1 ], [ , 1, , , , 1 ], , [ 1 ] ], [ , [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1 ], [ , , , 1, 1, 1, 1, , , , , , 1, , 1, , , , 1, , 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, , , 1 ], [ , 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, , , , 1, , 1, , , 1, 1, 1, 1, 1 ], [ , , , , , , , , , , , 1, , , , , , , , , 1, , , , 1 ], [ , 1, 1, , 1, 1, , 1, , , , 1, 1, , 1, 1, , , 1, , 1, 1, , 1 ], [ , 1, , 1, , 1, , , 1, , , 1, 1, , 1, 1, , , 1, 1, 1 ], [ , 1, 1, 1, 1, 1, , 1, 1, , , , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1 ], [ , , , , , , , , , 1, , 1, , 1, 1, , , , 1, , , 1 ], [ , 1, , , 1, 1, , , , , , , , , 1, 1, 1, , , , , 1 ], [ 1, , , 1, 1, , , , 1, 1, 1, 1, 1, , , 1, , , 1, , , 1, , 1, , 1 ], [ , 1, 1, , 1, 1, , 1, 1, , , , 1, 1, 1, , , 1, 1, , , 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, , 1, 1, , 1, , , 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1 ], [ , 1, , , , 1, , , , , , , , , 1 ], [ , 1, , , , , , , , 1, , , , , 1, , , , 1, , , 1 ], [ , 1, 1, 1, 1, , , 1, 1, 1, 1, 1, , 1, , 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , , , , , 1, , 1, , , , , 1, 1, 1, 1, 1, , , 1, , , , 1 ], [ , 1, , , , , , , , 1, , , , , , , , , , , , 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1 ], [ 1, 1, , 1, , 1, 1, , , , 1, , 1, 1, 1, 1, 1, , 1, 1, , , , , , 1 ], [ , 1, 1, 1, 1, 1, 1, 1, , 1, 1, , , 1, 1, , , , 1, , 1, 1, , 1, 1 ], [ , , , , , , , , , , , , , , , , , , , , , , , , 1 ], [ , 1, 1, , 1, 1, 1, 1, , 1, , , 1, 1, 1, 1, , , 1, , , , , , , 1 ], [ , 1, , , , , , , , 1, , , , , 1 ] ], [ , [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , , 1, 1, 1, 1, 1 ], [ , 1, 1, , , , , , , , , , , , 1, 1, , , , , , 1 ], [ , 1, , , , , , , 1 ], [ , , , , , , , , , , , , , , 1, , , , , 1, , , , , , 1 ], [ 1, 1, , , 1, , , 1, 1, 1, , , , 1 ], , [ , , , , , , , , , , , , , 1, , , , , , , , , , 1 ], [ , , , , , , , , , 1, , , , , , , , , 1, , , , , , , 1 ], [ 1, 1, 1, , 1, , 1, 1, 1, 1, 1, 1, 1, 1, , 1, , , 1, , 1, , , 1, 1 ], [ , , , , , , , , , 1 ], [ , 1, , , , 1, , , , , , 1, , , 1, , , , , 1 ], [ , 1, 1, , 1, 1, , , , , , , , , , , , , , , 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, , , 1, 1, , 1, 1, 1, 1, , , , 1, 1, , , , 1, , 1 ], [ 1, 1, 1, 1, 1, 1, , , 1, 1, 1, 1, 1, 1, , 1, 1, , 1, 1, 1, , 1, 1, , 1, 1 ], [ , , , , , , , , , , , , , , , 1, , , , 1 ], , [ 1, 1, , 1, , 1, , , , , , 1, , 1, , 1, 1, , 1, , 1, 1, , 1, 1, , 1 ], [ , , 1, , , , , , 1, , , , 1, , 1, , , , , 1 ], [ 1, , , , , , , , , 1, , , , , , 1, , , , 1, , 1, , , 1 ], [ 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , , , 1, , 1, , , , , , 1, , , 1, , , , , , , , 1 ], [ , 1, , 1, , , , , , , , , , , , 1 ], , [ 1, 1, , , , , , , , , , , , , , , , , , , , , , 1, 1 ], [ 1 ] ], [ , [ 1, , , , , , , , , 1, , , , , 1, , 1, , 1 ], [ , 1, 1, , 1, 1, , 1, 1, 1, , , 1, 1, 1, , , , 1, , , 1, , , , 1 ], [ , 1, , , , , , , 1, , , , 1, , , , , , 1 ], [ 1, 1, 1, 1, 1, 1, , , , 1, , , , , , , , , 1, 1, 1, 1 ], [ 1 ], [ , 1, 1, , , 1, 1, , , , , 1, , 1, , , , , , , , 1, , , , 1 ], [ 1, , 1, , , 1, , 1, , , , , 1, 1, 1, 1, , , , 1, , , , 1 ], [ , , 1, , , , , , , 1, , , , , , , 1, , , , , , , 1 ], [ 1, , , , , , , , , , , , , , 1, , , , 1 ], [ , , , 1, , 1, , , , , 1, , , , 1, 1, , , , 1 ], [ 1, , , , , 1, , , , 1, , 1, 1, , , 1, 1, , 1, 1, 1, , 1, 1, 1, , 1 ], [ , 1, 1, , , , , 1, , 1, , 1, 1, 1, , 1, 1, , , 1, , 1, 1, 1 ], [ , 1, , , , 1, , , , 1, , , 1, , 1, 1, , , 1, 1, , , , , , 1 ], [ 1, , 1, 1, , 1, , 1, 1, , 1, , 1, 1, 1, 1, 1, , , 1, 1, , , , , , 1 ], [ 1, , , , , , , , , , , , , , , , , , 1, , , 1, , 1 ], [ , , , , , , , , , 1, , , , , , 1 ], [ , , , , , , , , , , , , , , , , , , , , , 1, , 1 ], [ , 1, , , , 1, , , 1, 1, , 1, , , 1, 1, , , 1, , , 1, , , 1, 1 ], [ 1, 1, , 1, 1, 1, , 1, 1, 1, , 1, , 1, 1, 1, , , 1, , 1, 1 ], [ 1, , 1, 1, 1, 1, , , , 1, , 1, 1, 1, , 1, , , 1, 1, 1, , 1, 1, 1, 1, 1 ], [ 1, , , , , , , , , , , , , 1 ], [ , , 1, , , , , , , , , , , , , , , , , , , , 1 ], [ 1, , , , , , , , , , , 1, , 1, , 1, , , , 1 ], [ , , , 1, , , , , , , , , 1 ], [ , 1, , , , , , , , , , , , , , 1, , , , , , , , , 1 ], [ , , , , , , , , 1, 1, , , , , , , , , 1, , , , , , , , 1 ] ], [ , [ 1, 1, 1, 1, 1, 1, 1, , 1, , 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, , , 1, 1, 1 ], [ , , , , , 1, , , , 1, 1, 1, , , 1, 1, , , 1, , 1, 1, , 1 ], [ , , , , , , , , , , , , , , , , , , , 1, 1 ], [ , 1, , , , , , 1, , , , , , , , , , , , , 1 ], [ , , 1, , , 1, , 1, 1, 1, , 1, 1, , 1, , , , 1, , 1, 1 ], , [ , , 1, , , 1, , , , , , 1, , , , 1 ], [ , , , , , , , , , 1, , , , , , , , , , 1 ], [ 1, 1, 1, 1, 1, 1, , 1, 1, 1, , , 1, 1, , 1, , 1, , , 1, 1, 1, , , 1 ], [ , , , , , 1, , , , , , , , , , , , , 1 ], [ , 1, , , , , , , , , , , , 1, , 1, 1, , 1, , , 1 ], [ , , , , , 1, , , , , , , , , , , , , , 1 ], [ , 1, 1, 1, 1, , , , , 1, , , 1, , 1, , , , 1, 1, , , , 1, 1 ], [ , 1, , , 1, , , 1, , 1, 1, , 1, , , , , , , 1 ], [ , , 1, , 1, , , 1, , , , , , , , , , , 1, 1, , , , 1 ], [ , 1, , , , , , , , , , , , , , , , , 1, , , , , , 1 ], [ , , , , , , , , , , , , , , , , , , 1 ], [ , 1, 1, , , , , , , , , , , , , , , , 1, , 1, 1 ], [ , , , , , , , , , , , , 1 ], , [ , 1, 1, 1, 1, , , , 1, 1, , 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, , 1, , 1 ], [ 1, , , , 1, , , , , , , , , , 1 ], [ 1, , , , , , , , , 1 ], , [ , 1, , , , 1, , , , , , , , , , , , , , , , , , , , 1 ] ], [ , [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, , 1, 1, 1, 1, , , , 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, , 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , , 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ] ], [ , [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, , 1, , 1, 1, 1, 1 ], [ 1, 1, 1, 1, , 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , , , 1, 1, 1, 1, , 1, , , , 1, 1, , , 1, 1, , 1 ], [ , 1, 1, , 1, , , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, , , , , , , , , , , , , 1 ], [ 1, 1, 1, , , , , 1, 1, 1, , 1, 1, 1, 1, , , 1, 1, , 1, 1, , , , , 1 ], [ , 1, , , , , , , 1, 1, , , 1, 1, 1, , 1, , , 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , , 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1 ], [ , 1, , , , 1, , , , 1, , , 1, , , , 1, , , , , , , 1, 1 ], [ , 1, 1, 1, 1, 1, , , 1, 1, 1, , 1, 1, 1, 1, , , 1, 1, 1, 1, , , , 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, , 1, , , 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , , 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, , 1, , , 1, 1, 1, 1, , 1, 1, 1, 1, , , , 1, , 1, , 1, , , 1 ], [ 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, , , , 1, , , , , , , , , 1, 1, , , , , , , , , 1 ], , [ , 1, , 1, , 1, , 1, , 1, , 1, 1, 1, 1, 1, , , 1, , 1, , 1, , , , 1 ], [ , 1, , , 1, 1, , 1, 1, 1, , , 1, 1, 1, 1, 1, , 1, 1, 1, , 1, , , 1 ], [ 1, , , 1, , , , 1, 1, 1, , , , , 1, 1, , , , 1, , 1 ], [ 1, 1, , 1, 1, 1, 1, , , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1 ], [ 1, 1, , , , , , , , 1, , 1, , , , , , , , 1, , 1 ], [ , 1, , , , 1, , 1, 1, , , , 1, 1, , 1, , , , 1, 1, 1, , 1 ], , [ , 1, , , , , , 1, , , , , , , 1 ], [ , , , , , , , , 1, , , , 1, , 1, , , , , , , , , , , , 1 ] ], [ , [ , 1, 1, , 1, 1, 1, 1, , 1, 1, 1, , 1, 1, , 1, 1, , 1, 1, 1, 1, 1, 1, , 1 ], [ , 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, , 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1 ], [ , 1, 1, , 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ] ], [ , [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , , 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , , 1, , 1 ], [ 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, , , 1, , , , , , , , 1, , , , , , 1, , , 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, , 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, , 1, , , , 1, 1, 1, , 1, 1, 1, 1, , , 1, 1, 1, 1, , , 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1 ], [ 1, 1, , 1, , 1, , 1, , 1, 1, 1, 1, 1, 1, 1, , 1, 1, , , 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, , 1, 1 ], [ , 1, 1, , , , , 1, 1, 1, , , 1, , 1, 1, , , , 1, , 1, , , 1, 1 ], [ , , , , , , , 1, , , , 1, 1, 1, 1, 1, , 1, , , , , , , , 1 ], [ 1, 1, 1, 1, , 1, 1, 1, , 1, , 1, 1, 1, 1, , 1, , 1, , 1, 1, , , 1, , 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , , , , 1, 1, , 1, , 1, 1, 1, , 1, , 1, 1, , 1, 1, , 1, , 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, , , , , , , , 1, , , , , 1, , 1 ], [ , 1, 1, 1, , 1, , 1, , 1, , , , 1, , 1, , , 1, , , , , , 1, 1 ], [ , 1, , , 1, 1, , 1, , 1, , 1, 1, 1, 1, 1, , 1, 1, , , 1, , , 1 ], [ 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, , 1, , , , , 1, , 1, , 1, , , , , , 1, , 1, , , , 1, 1 ] ], [ , [ , 1, , 1, , , , , , , , , , , , , , , 1, , , , 1 ], [ , , , , , , , , , 1, , 1, 1, 1, , 1, , , 1, , 1, 1 ], [ 1, 1, , , , , , , 1, , , , , , , 1, , , , , , 1 ], [ , 1, , , , , , , , , , 1, , , , , , , , , 1, 1 ], , [ , , , , , , , , , , , , , , , 1, , , , 1, , 1 ], [ , , 1, 1, , 1, , 1, , , , , , , , 1, , , , , , 1 ], [ , , , , , , , , , , , , , , , , , , , , 1, 1 ], [ , 1, , , , , , , , , , , , , 1 ], [ 1, , 1, 1, , , , 1, , , , , , , , , 1, , , 1, , , 1, 1 ], [ , 1, 1, , 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, , , 1, 1, , 1, 1, , 1 ], [ , 1, , , 1, 1, , , , , , 1, , 1, , 1, , , 1, , 1, 1 ], [ 1, 1, 1, 1, , 1, , 1, , 1, , 1, 1, , 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1 ], [ , 1, 1, , , 1, , 1, , 1, 1, 1, , , 1, 1, 1, , 1, 1, 1, 1, , 1, 1 ], [ , , , , 1, , , 1, , , , , , , 1, , , , 1, 1 ], [ , 1, , , , , , , , , , 1, , 1, , 1, , , , , 1, , , , , 1 ], , [ 1, 1, , 1, , 1, , 1, 1, , , , , , 1, 1, , , 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, , 1, , , , , , 1, , , , , , 1, 1, , , , 1, 1, , , 1 ], [ , 1, 1, , 1, 1, , , , 1, , 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, , 1, 1, 1, 1 ], [ , 1, 1, , , 1, , , , 1, , , , 1, 1 ], [ , , , , 1 ], [ , , , , , , , , , 1, , , 1 ], , [ , , 1, , 1, , , , , , , , , 1, , , , , , , , , , , , 1 ], [ , , , , , , , , , , , , , 1 ] ], [ , [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , , 1, 1, , 1, 1, 1, 1, 1, , , 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, , , 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, , 1, , , , , 1 ], [ , 1, , 1, , , , , , 1, , , , , 1, 1, , , , , 1, 1 ], [ , 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, , 1, , , 1, , 1, 1, 1 ], [ , 1, , , , 1, , , , , , , 1 ], [ , 1, , , 1, , , 1, , 1, , 1, 1, , 1, , , , , 1, , 1, , , , 1, 1 ], [ , 1, , , 1, , , 1, 1, 1, , 1, 1, 1, 1, 1, , 1, 1, , 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , , , , , , , , , , , , , , , , , , , , 1 ], [ , 1, 1, 1, , , , 1, 1, , , , , , 1, 1, 1, , 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1 ], [ , 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, , 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , , , 1, 1, 1, 1, 1, 1, 1, , 1, , 1, 1, 1, 1, 1, , 1, 1, , 1, 1, 1, 1, 1 ], [ , 1, , , , 1, , , , 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, , , , 1, , , , , , , , 1, , , , , , , , , , 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1 ], [ 1, 1, , 1, 1, 1, , 1, 1, 1, , , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, , 1 ], [ 1, 1, , , , , , , 1, 1, , , , , 1, 1, 1, 1, 1, , 1, 1, 1, 1, , 1 ], [ , 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, , 1, , 1, 1, 1, 1, , 1, 1, , 1, 1, 1, 1 ], , [ , 1, 1, , , , , 1, , 1, , , , 1, 1, 1, , , 1, , , , , 1 ], [ , , , , , , , , , , , , , 1 ], [ , , , , , 1, , , , , , , , 1, 1, , , , , 1, , 1, , , 1, 1 ], [ , , , , , , , , , , , , , , 1 ] ], [ , [ , 1 ], , , , , , , , , , , , , , , , , , , , [ 1, 1, 1, 1, 1, , 1, 1, 1, 1, , 1, 1, 1, 1, , 1, 1, 1, 1, , , 1, 1, 1, 1, 1 ], [ , 1, , 1, , 1, , , 1, 1, 1, , 1, 1, 1, 1, 1, , , 1, , , , 1, , 1, 1 ], [ , 1, , 1, , 1, , , 1, , , , , 1, , , , , , 1, 1 ], [ , 1, , 1, , , , , 1, , , , 1, , 1, 1, 1, 1, 1, 1, 1, 1, , 1 ], [ , 1, , , , , , , , , , , , , , , 1 ] ], [ , [ , 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , , 1, , , , , , , , , 1, 1, , , , 1 ], [ , , , , , , 1 ], [ , , 1 ], [ , 1, 1, , , 1, , 1, , 1, 1, , 1, 1, 1, , , , 1, 1, 1, , , , , 1 ], , [ , 1, , , , 1, , , , , , 1, , , 1, , , , 1, 1, , 1 ], [ , , , , , , , 1, , , , , , , , , 1 ], [ , 1, , , , 1, 1, , , , , , 1, 1, 1, , , , 1, , 1, 1 ], [ , , , , , , , 1, , 1, , , , , , , , , , 1 ], [ , 1, 1, , , , , , 1, 1, , , , 1, , , , , , , 1, , , 1 ], , [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, , , 1, , , 1, , , , , 1, , 1, , 1, , 1, , , , , 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, , , , , 1, 1, , 1, 1, , 1, , , 1, , 1 ], [ , , , , , , , , , , , , , , 1, , , , , , 1 ], , [ , , , , , , , , , 1, , , , , , 1, , , , , 1 ], [ , , 1, , , , , , , 1, , , 1, 1 ], [ , , , 1, , , , , 1, , , , , 1, , , , , , 1, , , , 1 ], [ 1, , 1, 1, , 1, 1, 1, 1, 1, , 1, , , , 1, 1, 1, , , 1, 1, , , , 1, 1 ], , [ 1, 1, , , , , , , , , , 1, , 1, , 1, , , 1 ], [ , , , , 1, , , , , , , , , , , , , , , , , , , 1 ], [ , , , , , , , , , , , , , , 1, , , , , 1, , 1 ], [ , , , , , , , , 1 ] ], [ , [ 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, , , 1, 1, 1, 1, 1, , 1, 1, , 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, , 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, , 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1 ], [ , , 1, , , 1, , , , , , , , 1, , , , , , 1, , , , 1 ], [ 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, , 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, , 1, 1, , 1, , , , 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, , 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, , 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, , 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1 ], [ , , 1, 1, 1, 1, , 1, , 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1 ], [ 1, 1, , , , , , , 1, , 1, 1, , 1, 1, 1, , 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, , 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1 ], [ 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1 ], [ 1, 1, 1, 1, , 1, , 1, , 1, 1, 1, 1, 1, , , , 1, 1, 1, 1, , 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, , 1, , , , , , 1, , 1, , , , , 1, 1, , , , , 1 ], [ 1, , 1, 1, , , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , , 1, 1, , 1, , 1, , , , 1, 1, 1, 1, 1, , , 1, 1, , 1, , 1 ], [ , 1, 1, 1, 1, , , , , 1, , 1, 1, 1, 1, 1, , , 1, 1, , , , 1, 1, 1 ], [ , 1, 1, 1, 1, 1, , 1, , , , , 1, , 1, , 1, , , 1, , , 1, 1, , 1 ] ], [ , [ 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, , 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, , 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , , , , , , , , , 1, , , , , 1, 1, , , 1, , 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , , , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, , , 1, 1, 1, 1, , 1, 1, , 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, , , , , , 1, , 1, 1, , 1, 1, 1, 1, 1, , , 1, , 1, , 1 ], [ 1, 1, 1, , 1, 1, 1, 1, , , , 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1 ], [ 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, , 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1 ], [ , 1, , 1, , 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1 ], [ , , 1, , , , , , , , , , 1, 1, 1, 1, 1, 1, 1, , 1, 1, , 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, , , 1, 1, , , , , , 1, 1, 1, 1, 1, , , , 1, 1, 1, , 1, 1, 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, 1, , , , 1, 1, 1, 1, 1, 1, 1, , 1, 1, , 1, 1, 1 ], [ , 1, 1, 1, , 1, , 1, 1, 1, 1, , , 1, 1, 1, , 1, 1, 1, 1, 1, , , 1, 1 ], [ 1, 1, , , , 1, , , 1, 1, 1, , 1, , 1, , 1, , 1, 1, 1, 1, 1, , 1, , 1 ], [ , 1, , , , , , , 1, , 1, , 1, 1, 1, 1, , , , , , , , , 1 ] ], [ , [ , , , , , , , , , , , , , 1, 1, , , , 1 ], [ , 1, , , , , , , , 1, , , 1, , , , , , 1, , , 1, , , , 1 ], , [ , 1, , , , 1, , 1, , 1, 1, , 1, 1, , , , , , , , 1 ], [ , , , , , , , , , , , , , , , , , , , 1 ], [ , , , , , , , , , 1 ], [ 1, 1, 1, , , 1, , , , , , , , , 1, 1, , , , , , , , , , 1 ], [ , 1, , , , , , , , , , , , , 1 ], [ , , , , , , , , , , , , , , , , , , , 1, , , 1 ], [ , , , , , , , , , 1 ], [ 1, 1, , , , , , 1, 1, 1, , 1, 1, , , , 1, 1, , 1, , 1, 1, 1, , 1 ], [ , 1, 1, 1, , 1, 1, , , 1, , 1, 1, 1, 1, , , , , , , 1, , 1 ], [ , 1, 1, 1, 1, , , 1, , 1, , , , 1, 1, 1, 1, , 1, 1, , 1 ], [ , 1, , , 1, 1, , 1, , , , 1, , 1, 1, , 1, , 1, , , 1, , , 1, , 1 ], [ , , , , , , , , , , , 1 ], [ , , , , , , , , , 1, , , , , , , , , , , , , 1 ], , [ 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, , 1, 1, 1, 1, 1, 1, 1 ], [ , 1, , , , , , , 1, 1, , 1, , , , , 1, , , 1, , 1 ], [ , 1, , , , 1, , , 1, , , , , , , , 1, , 1, , , 1 ], [ , , , , , , , , , , , , , 1, 1, , , , 1, , , 1 ], [ , , , , , 1, , , 1, , , , 1 ], [ , 1 ], , [ , 1 ], [ 1, , , , , , , , , , , , , , 1, , , , , 1 ] ], [ , [ , 1, , , , 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, , 1, 1, , 1, 1, , , 1 ], [ , , 1, , , , , , , , , 1 ], , , [ 1, , , 1, 1, , , , , , , , 1, 1, , 1, 1, , 1 ], , [ , , , , , , , , , , , , , , , , , , 1, , 1 ], , [ 1, , , 1, 1, , 1, 1, , , , , 1, , 1, , , , , 1, 1, , 1 ], , [ , 1, , , , , , , , 1, 1, 1, 1, 1, , 1, 1, , , , 1, 1 ], [ , , , , , , , , , , , , , , , , 1, , , 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , , 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1 ], [ , , , , , , , , , , , 1, , 1, , , 1 ], [ 1, , , , , , , , , , , , , , , , , , 1, , 1 ], , , [ , 1, , , , , , , , , , , , , , 1, , , , 1, 1 ], [ , , , , , , , , , 1, , , 1, , , , , , , , , , 1 ], [ , , , , , , , , , , , , , , , 1 ], [ , , , , , , , , , , , , , 1, 1, , , , , , 1 ], , [ , 1 ] ], [ , [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, , , 1, 1, , 1, 1, 1, 1, 1, 1, , , 1, 1, 1, 1, 1, , 1, 1 ], [ , 1, , , , , , , , 1 ], [ , , , , 1, , , 1, , , 1, 1, , , , , , , , , , 1, , , , 1 ], [ , 1, , 1, 1, , , 1, 1, 1, , , , 1, 1, 1, 1, , 1, 1, 1, 1, , 1 ], [ , , , , , , , 1 ], [ , 1, 1, , , , , 1, , 1, , , , , , 1, , , , , , 1, , 1, , 1 ], [ , 1, , , , , , 1, , , , 1, , , , , , , , , , 1 ], [ , , 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , , , 1, , 1, 1, 1, 1, , 1 ], [ , 1, , , , , , , , 1 ], [ , 1, 1, , 1, , , , , , , , 1, , , , , , 1, , , 1, , 1, , 1 ], [ , 1, , 1, , 1, , 1, 1, 1, , 1, 1, 1, , 1, , , 1, 1, , 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, , , 1, 1, , , , 1, 1, 1, , , , 1, 1, , , 1, 1 ], [ , , 1, 1, 1, 1, , 1, , 1, , 1, , 1, 1, 1, 1, , , , , 1, , 1, , 1 ], [ 1, 1, 1, 1, 1, 1, 1, 1, , 1, , 1, , 1, 1, 1, , , 1, 1, , , , 1, , 1 ], [ , , , 1 ], , [ , 1, 1, , 1, , , 1, 1, 1, , 1, 1, 1, 1, 1, 1, , 1, 1, , 1, 1, 1, 1, 1, 1 ], [ , 1, , , , , , 1, , 1, , 1, , , , , , , 1, 1, , 1, 1 ], [ , , , , , , 1, , 1, 1, , 1, , 1, , , , , , , , , , 1 ], [ , 1, 1, , 1, , , , 1, , , , 1, 1, 1, , , , 1, , 1, 1, 1, , 1, 1 ], , [ , 1, 1, , , , , , , , , , , , , 1, , , 1, , , , , 1 ], [ , 1, , , , , , , , , , , , , , , , , , , , , , 1 ], [ , 1, 1, , , , , , , 1, , , , 1, , , , , 1, , , , , , , 1 ] ], [ , [ , 1, 1, 1, 1, 1, , 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1 ], [ , 1, 1, 1, 1, 1, , 1, , 1, 1, , , 1, 1, 1, 1, , 1, , , , , 1, 1, 1 ], [ , , 1, 1, , 1, , 1, 1, , , , 1, 1, 1, 1, , , 1, , 1, 1, 1, 1, , 1 ], [ , 1, , 1, , , , , , , , 1, , 1, , 1, , , , , , , , , , 1 ], [ , , 1, , 1, , , 1, , , , , 1, 1, , , 1, , 1, 1, 1, 1 ], [ , 1 ], [ , 1, 1, , 1, , 1, 1, , 1, , , 1, 1, 1, , , , 1, , , 1, , 1 ], [ 1, 1, , 1, 1, 1, , , , , , , , , , , , , 1, , 1, 1, 1 ], [ , 1, 1, , , , , , , 1, , , 1, , 1, , 1, , 1, 1, , , 1, , , 1 ], [ , , 1, , , , , , , , , , , , , , , , , , 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, 1, 1, 1, , 1, , 1, , , , , 1, 1, 1, , , 1, , 1, , , , 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, , 1, , , 1, 1, 1, , 1, , 1, 1, 1, , , 1, 1, 1, 1, , , , 1, 1 ], [ , , , 1, 1, , , 1, , 1, , 1, , 1, 1, 1, 1, , 1, , , , , 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, , , , , , , , , , , , , , , , , , , 1 ], [ , 1, 1, , 1, 1, , 1, , 1, , , , 1, 1, , , 1, 1, , 1, 1, , 1 ], [ , 1, 1, 1, 1, 1, , , 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, , , 1 ], [ , 1, 1, 1, 1, 1, , 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1 ], [ , 1, 1, , 1, , , 1, , , 1, , 1, 1, 1, 1, 1, , 1, , 1, 1 ], [ , , , , , 1, , , , 1, , , , , 1, 1, , , , 1 ], [ , 1, , 1, 1, 1, , 1, , , 1, 1, 1, , , 1, , , 1, , 1, , , 1 ], [ , , 1, , , , , , , , , 1, , 1, , , , , 1, , 1 ], [ , 1, 1, , , , , , , , 1, 1, 1, , , , , , , , 1, , , , , 1 ], [ , , , , , , , , 1, , , , , 1, , , 1 ] ], [ , [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, 1, , 1, 1, , , 1, 1, 1, 1, 1, 1, 1, 1, , , , , , , , , 1, 1 ], [ , , , , , , , , 1, , , , 1, , 1, , 1 ], [ , 1, , , 1, 1, , 1, , , , 1, , , , , , , , 1 ], [ , 1, , 1, , 1, , , , 1, 1, , 1, , 1, , , , 1, 1, 1, 1, 1, , , 1 ], , [ , 1, , , , , , , , 1, , , 1, 1, , , 1, , 1, 1, , 1, , 1 ], [ , 1, , , 1, , , , , , , , 1, , , , , , , 1 ], [ 1, 1, , , , , 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1 ], , [ , 1, , , , , , 1, , 1, , 1, 1, 1, 1, 1, , , 1, , 1, 1, , , , 1 ], [ , 1, 1, , , 1, , 1, , 1, , , 1, 1, 1, 1, , , 1, , , 1, , , , 1 ], [ , 1, 1, 1, 1, 1, , 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , , , 1, , 1 ], [ , 1, , , 1, 1, , 1, 1, , , 1, 1, , 1, 1, , 1, , 1, , 1 ], [ 1, , 1, , , , , 1, , 1, , 1, 1, 1, 1, , , , , 1, 1, , , , 1, 1 ], [ , 1, 1, , , , , 1, 1, , , 1, , 1, 1, 1, 1, , , , , , , , , , 1 ], , [ , 1, 1, , , 1, , , , 1, , 1, 1, 1, 1, 1, , , , 1, , , , 1, , 1 ], [ , , , 1, 1, , , 1, , , , , 1, , 1, 1, 1, , 1, 1, , , , , , 1 ], [ , 1, , , , , , , , , , , 1, , , , 1, , , , , , , 1, , 1 ], [ , 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, , 1, 1, 1, , 1, 1, , 1, 1, 1, 1 ], [ , 1, , , , , , , , , , , , , , , , , , , 1 ], [ , 1, , , , , , 1, , , , , 1, , 1, , , 1, 1, , 1, 1, , 1 ], [ , 1, , , , , , 1, , , , , 1, 1, , , , , , , , 1, , , , 1 ], [ , , , , , , , , , , , , , , , , , , 1, , , 1, , , , , 1 ], [ , , , , , , , 1, , , , 1 ] ], [ , [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, , 1, , 1, , , , , , , 1, , , , , , , , 1, , , 1 ], [ , 1, , , , , , , 1 ], [ , , , , , , , , , , 1 ], [ , 1, , , , , , 1, 1, , , , , , 1 ], , [ , 1, 1, , , , , , 1, , , , , 1, 1, , , , 1 ], [ 1, , 1, , 1, , , , , 1, , , , , 1, , , , , , , , , 1, 1 ], [ , 1, 1, , , , , , , , , 1, 1, 1, 1, , , , 1, , , , , 1, , , 1 ], , [ , 1, 1, , 1, , , 1, 1, , , 1, , , 1, 1, 1, , 1, , 1, 1, 1, , , , 1 ], [ , , , , , 1, , , , , 1, , , 1, 1, , , 1, , 1, , , , 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , 1, , , 1, 1, , 1, , , , 1, , , , , , , , 1 ], [ , , , 1, , , , , 1, , , , , 1, , 1, , 1, 1, 1 ], [ , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], [ , , , , , 1 ], [ , 1, , , , , , 1, , , , , , , 1, 1, 1, , , 1 ], [ , 1, , , , , , , , , , 1, 1, 1, , , , , 1, , , 1 ], [ , , , , , 1, , 1, , , , , 1, 1, 1, , 1, 1, , 1, 1, 1, , , 1, 1 ], [ 1, 1, , , , , , , 1, , , , , 1, 1, , , , , , , , , , , 1 ], , [ , 1 ], [ , , , , , , , , , , , , , , , , , , , , , , , , 1 ], [ , , 1, , , , , 1, , , 1, , , , 1, , 1 ], [ , 1, , , , , , , , , 1 ] ] ];\n    function isValidLang(lang) {\n      var array = langs;\n      while (lang.length < 3) {\n        lang += '`';\n      }\n      for (var _i10 = 0; _i10 <= lang.length - 1; _i10++) {\n        var index = lang.charCodeAt(_i10) - 96;\n        array = array[index];\n        if (!array) {\n          return false;\n        }\n      }\n      return true;\n    }\n    function _validLangs(langArray) {\n      langArray = Array.isArray(langArray) ? langArray : langs;\n      var codes = [];\n      langArray.forEach(function(lang, index) {\n        var _char2 = String.fromCharCode(index + 96).replace('`', '');\n        if (Array.isArray(lang)) {\n          codes = codes.concat(_validLangs(lang).map(function(newLang) {\n            return _char2 + newLang;\n          }));\n        } else {\n          codes.push(_char2);\n        }\n      });\n      return codes;\n    }\n    var valid_langs_default = isValidLang;\n    axe._thisWillBeDeletedDoNotUse = axe._thisWillBeDeletedDoNotUse || {};\n    axe._thisWillBeDeletedDoNotUse.utils = {\n      setDefaultFrameMessenger: setDefaultFrameMessenger\n    };\n    var SerialVirtualNode = function(_abstract_virtual_nod2) {\n      _inherits(SerialVirtualNode, _abstract_virtual_nod2);\n      var _super2 = _createSuper(SerialVirtualNode);\n      function SerialVirtualNode(serialNode) {\n        var _this2;\n        _classCallCheck(this, SerialVirtualNode);\n        _this2 = _super2.call(this);\n        _this2._props = normaliseProps(serialNode);\n        _this2._attrs = normaliseAttrs(serialNode);\n        return _this2;\n      }\n      _createClass(SerialVirtualNode, [ {\n        key: 'attr',\n        value: function attr(attrName) {\n          return this._attrs[attrName] || null;\n        }\n      }, {\n        key: 'hasAttr',\n        value: function hasAttr(attrName) {\n          return this._attrs[attrName] !== void 0;\n        }\n      }, {\n        key: 'props',\n        get: function get() {\n          return this._props;\n        }\n      }, {\n        key: 'attrNames',\n        get: function get() {\n          return Object.keys(this._attrs);\n        }\n      } ]);\n      return SerialVirtualNode;\n    }(abstract_virtual_node_default);\n    function normaliseProps(serialNode) {\n      var nodeName2 = serialNode.nodeName;\n      var _serialNode$nodeType = serialNode.nodeType, nodeType = _serialNode$nodeType === void 0 ? 1 : _serialNode$nodeType;\n      assert_default(typeof nodeType === 'number', 'nodeType has to be a number, got \\''.concat(nodeType, '\\''));\n      assert_default(typeof nodeName2 === 'string', 'nodeName has to be a string, got \\''.concat(nodeName2, '\\''));\n      nodeName2 = nodeName2.toLowerCase();\n      var type = null;\n      if (nodeName2 === 'input') {\n        type = (serialNode.type || serialNode.attributes && serialNode.attributes.type || '').toLowerCase();\n        if (!valid_input_type_default().includes(type)) {\n          type = 'text';\n        }\n      }\n      var props = _extends({}, serialNode, {\n        nodeType: nodeType,\n        nodeName: nodeName2\n      });\n      if (type) {\n        props.type = type;\n      }\n      delete props.attributes;\n      return Object.freeze(props);\n    }\n    function normaliseAttrs(_ref22) {\n      var _ref22$attributes = _ref22.attributes, attributes4 = _ref22$attributes === void 0 ? {} : _ref22$attributes;\n      var attrMap = {\n        htmlFor: 'for',\n        className: 'class'\n      };\n      return Object.keys(attributes4).reduce(function(attrs, attrName) {\n        var value = attributes4[attrName];\n        assert_default(_typeof(value) !== 'object' || value === null, 'expects attributes not to be an object, \\''.concat(attrName, '\\' was'));\n        if (value !== void 0) {\n          var mappedName = attrMap[attrName] || attrName;\n          attrs[mappedName] = value !== null ? String(value) : null;\n        }\n        return attrs;\n      }, {});\n    }\n    var serial_virtual_node_default = SerialVirtualNode;\n    var aria_exports = {};\n    __export(aria_exports, {\n      allowedAttr: function allowedAttr() {\n        return allowed_attr_default;\n      },\n      arialabelText: function arialabelText() {\n        return arialabel_text_default;\n      },\n      arialabelledbyText: function arialabelledbyText() {\n        return arialabelledby_text_default;\n      },\n      getAccessibleRefs: function getAccessibleRefs() {\n        return get_accessible_refs_default;\n      },\n      getElementUnallowedRoles: function getElementUnallowedRoles() {\n        return get_element_unallowed_roles_default;\n      },\n      getExplicitRole: function getExplicitRole() {\n        return get_explicit_role_default;\n      },\n      getOwnedVirtual: function getOwnedVirtual() {\n        return get_owned_virtual_default;\n      },\n      getRole: function getRole() {\n        return get_role_default;\n      },\n      getRoleType: function getRoleType() {\n        return get_role_type_default;\n      },\n      getRolesByType: function getRolesByType() {\n        return get_roles_by_type_default;\n      },\n      getRolesWithNameFromContents: function getRolesWithNameFromContents() {\n        return get_roles_with_name_from_contents_default;\n      },\n      implicitNodes: function implicitNodes() {\n        return implicit_nodes_default;\n      },\n      implicitRole: function implicitRole() {\n        return implicit_role_default;\n      },\n      isAccessibleRef: function isAccessibleRef() {\n        return is_accessible_ref_default;\n      },\n      isAriaRoleAllowedOnElement: function isAriaRoleAllowedOnElement() {\n        return is_aria_role_allowed_on_element_default;\n      },\n      isUnsupportedRole: function isUnsupportedRole() {\n        return is_unsupported_role_default;\n      },\n      isValidRole: function isValidRole() {\n        return is_valid_role_default;\n      },\n      label: function label() {\n        return label_default2;\n      },\n      labelVirtual: function labelVirtual() {\n        return label_virtual_default;\n      },\n      lookupTable: function lookupTable() {\n        return lookup_table_default;\n      },\n      namedFromContents: function namedFromContents() {\n        return named_from_contents_default;\n      },\n      requiredAttr: function requiredAttr() {\n        return required_attr_default;\n      },\n      requiredContext: function requiredContext() {\n        return required_context_default;\n      },\n      requiredOwned: function requiredOwned() {\n        return required_owned_default;\n      },\n      validateAttr: function validateAttr() {\n        return validate_attr_default;\n      },\n      validateAttrValue: function validateAttrValue() {\n        return validate_attr_value_default;\n      }\n    });\n    function getGlobalAriaAttrs() {\n      if (cache_default.get('globalAriaAttrs')) {\n        return cache_default.get('globalAriaAttrs');\n      }\n      var globalAttrs = Object.keys(standards_default.ariaAttrs).filter(function(attrName) {\n        return standards_default.ariaAttrs[attrName].global;\n      });\n      cache_default.set('globalAriaAttrs', globalAttrs);\n      return globalAttrs;\n    }\n    var get_global_aria_attrs_default = getGlobalAriaAttrs;\n    function allowedAttr(role) {\n      var roleDef = standards_default.ariaRoles[role];\n      var attrs = _toConsumableArray(get_global_aria_attrs_default());\n      if (!roleDef) {\n        return attrs;\n      }\n      if (roleDef.allowedAttrs) {\n        attrs.push.apply(attrs, _toConsumableArray(roleDef.allowedAttrs));\n      }\n      if (roleDef.requiredAttrs) {\n        attrs.push.apply(attrs, _toConsumableArray(roleDef.requiredAttrs));\n      }\n      return attrs;\n    }\n    var allowed_attr_default = allowedAttr;\n    function arialabelText(vNode) {\n      if (!(vNode instanceof abstract_virtual_node_default)) {\n        if (vNode.nodeType !== 1) {\n          return '';\n        }\n        vNode = get_node_from_tree_default(vNode);\n      }\n      return vNode.attr('aria-label') || '';\n    }\n    var arialabel_text_default = arialabelText;\n    function isUnsupportedRole(role) {\n      var roleDefinition = standards_default.ariaRoles[role];\n      return roleDefinition ? !!roleDefinition.unsupported : false;\n    }\n    var is_unsupported_role_default = isUnsupportedRole;\n    function isValidRole(role) {\n      var _ref23 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, allowAbstract = _ref23.allowAbstract, _ref23$flagUnsupporte = _ref23.flagUnsupported, flagUnsupported = _ref23$flagUnsupporte === void 0 ? false : _ref23$flagUnsupporte;\n      var roleDefinition = standards_default.ariaRoles[role];\n      var isRoleUnsupported = is_unsupported_role_default(role);\n      if (!roleDefinition || flagUnsupported && isRoleUnsupported) {\n        return false;\n      }\n      return allowAbstract ? true : roleDefinition.type !== 'abstract';\n    }\n    var is_valid_role_default = isValidRole;\n    function getExplicitRole(vNode) {\n      var _ref24 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, fallback = _ref24.fallback, abstracts = _ref24.abstracts, dpub = _ref24.dpub;\n      vNode = vNode instanceof abstract_virtual_node_default ? vNode : get_node_from_tree_default(vNode);\n      if (vNode.props.nodeType !== 1) {\n        return null;\n      }\n      var roleAttr = (vNode.attr('role') || '').trim().toLowerCase();\n      var roleList = fallback ? token_list_default(roleAttr) : [ roleAttr ];\n      var firstValidRole = roleList.find(function(role) {\n        if (!dpub && role.substr(0, 4) === 'doc-') {\n          return false;\n        }\n        return is_valid_role_default(role, {\n          allowAbstract: abstracts\n        });\n      });\n      return firstValidRole || null;\n    }\n    var get_explicit_role_default = getExplicitRole;\n    function getElementsByContentType(type) {\n      return Object.keys(standards_default.htmlElms).filter(function(nodeName2) {\n        var elm = standards_default.htmlElms[nodeName2];\n        if (elm.contentTypes) {\n          return elm.contentTypes.includes(type);\n        }\n        if (!elm.variant) {\n          return false;\n        }\n        if (elm.variant['default'] && elm.variant['default'].contentTypes) {\n          return elm.variant['default'].contentTypes.includes(type);\n        }\n        return false;\n      });\n    }\n    var get_elements_by_content_type_default = getElementsByContentType;\n    function toGrid(node) {\n      var table5 = [];\n      var rows = node.rows;\n      for (var i = 0, rowLength = rows.length; i < rowLength; i++) {\n        var cells = rows[i].cells;\n        table5[i] = table5[i] || [];\n        var columnIndex = 0;\n        for (var j = 0, cellLength = cells.length; j < cellLength; j++) {\n          for (var colSpan = 0; colSpan < cells[j].colSpan; colSpan++) {\n            var rowspanAttr = cells[j].getAttribute('rowspan');\n            var rowspanValue = parseInt(rowspanAttr) === 0 || cells[j].rowspan === 0 ? rows.length : cells[j].rowSpan;\n            for (var rowSpan = 0; rowSpan < rowspanValue; rowSpan++) {\n              table5[i + rowSpan] = table5[i + rowSpan] || [];\n              while (table5[i + rowSpan][columnIndex]) {\n                columnIndex++;\n              }\n              table5[i + rowSpan][columnIndex] = cells[j];\n            }\n            columnIndex++;\n          }\n        }\n      }\n      return table5;\n    }\n    var to_grid_default = memoize_default(toGrid);\n    function getCellPosition(cell, tableGrid) {\n      var rowIndex, index;\n      if (!tableGrid) {\n        tableGrid = to_grid_default(find_up_default(cell, 'table'));\n      }\n      for (rowIndex = 0; rowIndex < tableGrid.length; rowIndex++) {\n        if (tableGrid[rowIndex]) {\n          index = tableGrid[rowIndex].indexOf(cell);\n          if (index !== -1) {\n            return {\n              x: index,\n              y: rowIndex\n            };\n          }\n        }\n      }\n    }\n    var get_cell_position_default = memoize_default(getCellPosition);\n    function getScope(cell) {\n      var scope = cell.getAttribute('scope');\n      var role = cell.getAttribute('role');\n      if (cell instanceof window.Element === false || [ 'TD', 'TH' ].indexOf(cell.nodeName.toUpperCase()) === -1) {\n        throw new TypeError('Expected TD or TH element');\n      }\n      if (role === 'columnheader') {\n        return 'col';\n      } else if (role === 'rowheader') {\n        return 'row';\n      } else if (scope === 'col' || scope === 'row') {\n        return scope;\n      } else if (cell.nodeName.toUpperCase() !== 'TH') {\n        return false;\n      }\n      var tableGrid = to_grid_default(find_up_default(cell, 'table'));\n      var pos = get_cell_position_default(cell, tableGrid);\n      var headerRow = tableGrid[pos.y].reduce(function(headerRow2, cell2) {\n        return headerRow2 && cell2.nodeName.toUpperCase() === 'TH';\n      }, true);\n      if (headerRow) {\n        return 'col';\n      }\n      var headerCol = tableGrid.map(function(col) {\n        return col[pos.x];\n      }).reduce(function(headerCol2, cell2) {\n        return headerCol2 && cell2 && cell2.nodeName.toUpperCase() === 'TH';\n      }, true);\n      if (headerCol) {\n        return 'row';\n      }\n      return 'auto';\n    }\n    var get_scope_default = getScope;\n    function isColumnHeader(element) {\n      return [ 'col', 'auto' ].indexOf(get_scope_default(element)) !== -1;\n    }\n    var is_column_header_default = isColumnHeader;\n    function isRowHeader(cell) {\n      return [ 'row', 'auto' ].includes(get_scope_default(cell));\n    }\n    var is_row_header_default = isRowHeader;\n    var sectioningElementSelector = get_elements_by_content_type_default('sectioning').map(function(nodeName2) {\n      return ''.concat(nodeName2, ':not([role])');\n    }).join(', ') + ' , main:not([role]), [role=article], [role=complementary], [role=main], [role=navigation], [role=region]';\n    function hasAccessibleName(vNode) {\n      var ariaLabelledby = sanitize_default(arialabelledby_text_default(vNode));\n      var ariaLabel = sanitize_default(arialabel_text_default(vNode));\n      return !!(ariaLabelledby || ariaLabel);\n    }\n    var implicitHtmlRoles = {\n      a: function a(vNode) {\n        return vNode.hasAttr('href') ? 'link' : null;\n      },\n      area: function area(vNode) {\n        return vNode.hasAttr('href') ? 'link' : null;\n      },\n      article: 'article',\n      aside: 'complementary',\n      body: 'document',\n      button: 'button',\n      datalist: 'listbox',\n      dd: 'definition',\n      dfn: 'term',\n      details: 'group',\n      dialog: 'dialog',\n      dt: 'term',\n      fieldset: 'group',\n      figure: 'figure',\n      footer: function footer(vNode) {\n        var sectioningElement = closest_default(vNode, sectioningElementSelector);\n        return !sectioningElement ? 'contentinfo' : null;\n      },\n      form: function form(vNode) {\n        return hasAccessibleName(vNode) ? 'form' : null;\n      },\n      h1: 'heading',\n      h2: 'heading',\n      h3: 'heading',\n      h4: 'heading',\n      h5: 'heading',\n      h6: 'heading',\n      header: function header(vNode) {\n        var sectioningElement = closest_default(vNode, sectioningElementSelector);\n        return !sectioningElement ? 'banner' : null;\n      },\n      hr: 'separator',\n      img: function img(vNode) {\n        var emptyAlt = vNode.hasAttr('alt') && !vNode.attr('alt');\n        var hasGlobalAria = get_global_aria_attrs_default().find(function(attr) {\n          return vNode.hasAttr(attr);\n        });\n        return emptyAlt && !hasGlobalAria && !is_focusable_default(vNode) ? 'presentation' : 'img';\n      },\n      input: function input(vNode) {\n        var suggestionsSourceElement;\n        if (vNode.hasAttr('list')) {\n          var listElement = idrefs_default(vNode.actualNode, 'list').filter(function(node) {\n            return !!node;\n          })[0];\n          suggestionsSourceElement = listElement && listElement.nodeName.toLowerCase() === 'datalist';\n        }\n        switch (vNode.props.type) {\n         case 'checkbox':\n          return 'checkbox';\n\n         case 'number':\n          return 'spinbutton';\n\n         case 'radio':\n          return 'radio';\n\n         case 'range':\n          return 'slider';\n\n         case 'search':\n          return !suggestionsSourceElement ? 'searchbox' : 'combobox';\n\n         case 'button':\n         case 'image':\n         case 'reset':\n         case 'submit':\n          return 'button';\n\n         case 'text':\n         case 'tel':\n         case 'url':\n         case 'email':\n         case '':\n          return !suggestionsSourceElement ? 'textbox' : 'combobox';\n\n         default:\n          return 'textbox';\n        }\n      },\n      li: 'listitem',\n      main: 'main',\n      math: 'math',\n      menu: 'list',\n      nav: 'navigation',\n      ol: 'list',\n      optgroup: 'group',\n      option: 'option',\n      output: 'status',\n      progress: 'progressbar',\n      section: function section(vNode) {\n        return hasAccessibleName(vNode) ? 'region' : null;\n      },\n      select: function select(vNode) {\n        return vNode.hasAttr('multiple') || parseInt(vNode.attr('size')) > 1 ? 'listbox' : 'combobox';\n      },\n      summary: 'button',\n      table: 'table',\n      tbody: 'rowgroup',\n      td: function td(vNode) {\n        var table5 = closest_default(vNode, 'table');\n        var role = get_explicit_role_default(table5);\n        return [ 'grid', 'treegrid' ].includes(role) ? 'gridcell' : 'cell';\n      },\n      textarea: 'textbox',\n      tfoot: 'rowgroup',\n      th: function th(vNode) {\n        if (is_column_header_default(vNode.actualNode)) {\n          return 'columnheader';\n        }\n        if (is_row_header_default(vNode.actualNode)) {\n          return 'rowheader';\n        }\n      },\n      thead: 'rowgroup',\n      tr: 'row',\n      ul: 'list'\n    };\n    var implicit_html_roles_default = implicitHtmlRoles;\n    function implicitRole(node) {\n      var vNode = node instanceof abstract_virtual_node_default ? node : get_node_from_tree_default(node);\n      node = vNode.actualNode;\n      if (!vNode) {\n        throw new ReferenceError('Cannot get implicit role of a node outside the current scope.');\n      }\n      if (node && node.namespaceURI === 'http://www.w3.org/2000/svg') {\n        return null;\n      }\n      var nodeName2 = vNode.props.nodeName;\n      var role = implicit_html_roles_default[nodeName2];\n      if (!role) {\n        return null;\n      }\n      if (typeof role === 'function') {\n        return role(vNode);\n      }\n      return role;\n    }\n    var implicit_role_default = implicitRole;\n    var inheritsPresentationChain = {\n      td: [ 'tr' ],\n      th: [ 'tr' ],\n      tr: [ 'thead', 'tbody', 'tfoot', 'table' ],\n      thead: [ 'table' ],\n      tbody: [ 'table' ],\n      tfoot: [ 'table' ],\n      li: [ 'ol', 'ul' ],\n      dt: [ 'dl', 'div' ],\n      dd: [ 'dl', 'div' ],\n      div: [ 'dl' ]\n    };\n    function getInheritedRole(vNode, explicitRoleOptions) {\n      var parentNodeNames = inheritsPresentationChain[vNode.props.nodeName];\n      if (!parentNodeNames) {\n        return null;\n      }\n      if (!vNode.parent) {\n        throw new ReferenceError('Cannot determine role presentational inheritance of a required parent outside the current scope.');\n      }\n      if (!parentNodeNames.includes(vNode.parent.props.nodeName)) {\n        return null;\n      }\n      var parentRole = get_explicit_role_default(vNode.parent, explicitRoleOptions);\n      if ([ 'none', 'presentation' ].includes(parentRole) && !hasConflictResolution(vNode.parent)) {\n        return parentRole;\n      }\n      if (parentRole) {\n        return null;\n      }\n      return getInheritedRole(vNode.parent, explicitRoleOptions);\n    }\n    function resolveImplicitRole(vNode, explicitRoleOptions) {\n      var implicitRole3 = implicit_role_default(vNode);\n      if (!implicitRole3) {\n        return null;\n      }\n      var presentationalRole = getInheritedRole(vNode, explicitRoleOptions);\n      if (presentationalRole) {\n        return presentationalRole;\n      }\n      return implicitRole3;\n    }\n    function hasConflictResolution(vNode) {\n      var hasGlobalAria = get_global_aria_attrs_default().some(function(attr) {\n        return vNode.hasAttr(attr);\n      });\n      return hasGlobalAria || is_focusable_default(vNode);\n    }\n    function resolveRole(node) {\n      var _ref25 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var noImplicit = _ref25.noImplicit, explicitRoleOptions = _objectWithoutProperties(_ref25, [ 'noImplicit' ]);\n      var vNode = node instanceof abstract_virtual_node_default ? node : get_node_from_tree_default(node);\n      if (vNode.props.nodeType !== 1) {\n        return null;\n      }\n      var explicitRole2 = get_explicit_role_default(vNode, explicitRoleOptions);\n      if (!explicitRole2) {\n        return noImplicit ? null : resolveImplicitRole(vNode, explicitRoleOptions);\n      }\n      if (![ 'presentation', 'none' ].includes(explicitRole2)) {\n        return explicitRole2;\n      }\n      if (hasConflictResolution(vNode)) {\n        return noImplicit ? null : resolveImplicitRole(vNode, explicitRoleOptions);\n      }\n      return explicitRole2;\n    }\n    function getRole(node) {\n      var _ref26 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var noPresentational = _ref26.noPresentational, options = _objectWithoutProperties(_ref26, [ 'noPresentational' ]);\n      var role = resolveRole(node, options);\n      if (noPresentational && [ 'presentation', 'none' ].includes(role)) {\n        return null;\n      }\n      return role;\n    }\n    var get_role_default = getRole;\n    function fromPrimative(someString, matcher) {\n      var matcherType = _typeof(matcher);\n      if (Array.isArray(matcher) && typeof someString !== 'undefined') {\n        return matcher.includes(someString);\n      }\n      if (matcherType === 'function') {\n        return !!matcher(someString);\n      }\n      if (someString !== null && someString !== void 0) {\n        if (matcher instanceof RegExp) {\n          return matcher.test(someString);\n        }\n        if (/^\\/.*\\/$/.test(matcher)) {\n          var pattern = matcher.substring(1, matcher.length - 1);\n          return new RegExp(pattern).test(someString);\n        }\n      }\n      return matcher === someString;\n    }\n    var from_primative_default = fromPrimative;\n    function fromFunction(getValue, matcher) {\n      var matcherType = _typeof(matcher);\n      if (matcherType !== 'object' || Array.isArray(matcher) || matcher instanceof RegExp) {\n        throw new Error('Expect matcher to be an object');\n      }\n      return Object.keys(matcher).every(function(propName) {\n        return from_primative_default(getValue(propName), matcher[propName]);\n      });\n    }\n    var from_function_default = fromFunction;\n    function attributes(vNode, matcher) {\n      if (!(vNode instanceof abstract_virtual_node_default)) {\n        vNode = get_node_from_tree_default(vNode);\n      }\n      return from_function_default(function(attrName) {\n        return vNode.attr(attrName);\n      }, matcher);\n    }\n    var attributes_default = attributes;\n    function condition(arg, condition4) {\n      return !!condition4(arg);\n    }\n    var condition_default = condition;\n    function explicitRole(vNode, matcher) {\n      return from_primative_default(get_explicit_role_default(vNode), matcher);\n    }\n    var explicit_role_default = explicitRole;\n    function implicitRole2(vNode, matcher) {\n      return from_primative_default(implicit_role_default(vNode), matcher);\n    }\n    var implicit_role_default2 = implicitRole2;\n    function nodeName(vNode, matcher) {\n      if (!(vNode instanceof abstract_virtual_node_default)) {\n        vNode = get_node_from_tree_default(vNode);\n      }\n      return from_primative_default(vNode.props.nodeName, matcher);\n    }\n    var node_name_default = nodeName;\n    function properties(vNode, matcher) {\n      if (!(vNode instanceof abstract_virtual_node_default)) {\n        vNode = get_node_from_tree_default(vNode);\n      }\n      return from_function_default(function(propName) {\n        return vNode.props[propName];\n      }, matcher);\n    }\n    var properties_default = properties;\n    function semanticRole(vNode, matcher) {\n      return from_primative_default(get_role_default(vNode), matcher);\n    }\n    var semantic_role_default = semanticRole;\n    var matchers = {\n      attributes: attributes_default,\n      condition: condition_default,\n      explicitRole: explicit_role_default,\n      implicitRole: implicit_role_default2,\n      nodeName: node_name_default,\n      properties: properties_default,\n      semanticRole: semantic_role_default\n    };\n    function fromDefinition(vNode, definition) {\n      if (!(vNode instanceof abstract_virtual_node_default)) {\n        vNode = get_node_from_tree_default(vNode);\n      }\n      if (Array.isArray(definition)) {\n        return definition.some(function(definitionItem) {\n          return fromDefinition(vNode, definitionItem);\n        });\n      }\n      if (typeof definition === 'string') {\n        return matches_default(vNode, definition);\n      }\n      return Object.keys(definition).every(function(matcherName) {\n        if (!matchers[matcherName]) {\n          throw new Error('Unknown matcher type \"'.concat(matcherName, '\"'));\n        }\n        var matchMethod = matchers[matcherName];\n        var matcher = definition[matcherName];\n        return matchMethod(vNode, matcher);\n      });\n    }\n    var from_definition_default = fromDefinition;\n    function matches5(vNode, definition) {\n      return from_definition_default(vNode, definition);\n    }\n    var matches_default2 = matches5;\n    matches_default2.attributes = attributes_default;\n    matches_default2.condition = condition_default;\n    matches_default2.explicitRole = explicit_role_default;\n    matches_default2.fromDefinition = from_definition_default;\n    matches_default2.fromFunction = from_function_default;\n    matches_default2.fromPrimative = from_primative_default;\n    matches_default2.implicitRole = implicit_role_default2;\n    matches_default2.nodeName = node_name_default;\n    matches_default2.properties = properties_default;\n    matches_default2.semanticRole = semantic_role_default;\n    var matches_default3 = matches_default2;\n    function getElementSpec(vNode) {\n      var standard = standards_default.htmlElms[vNode.props.nodeName];\n      if (!standard) {\n        return {};\n      }\n      if (!standard.variant) {\n        return standard;\n      }\n      var variant = standard.variant, spec = _objectWithoutProperties(standard, [ 'variant' ]);\n      for (var variantName in variant) {\n        if (!variant.hasOwnProperty(variantName) || variantName === 'default') {\n          continue;\n        }\n        var _variant$variantName = variant[variantName], matches14 = _variant$variantName.matches, props = _objectWithoutProperties(_variant$variantName, [ 'matches' ]);\n        if (matches_default3(vNode, matches14)) {\n          for (var propName in props) {\n            if (props.hasOwnProperty(propName)) {\n              spec[propName] = props[propName];\n            }\n          }\n        }\n      }\n      for (var _propName in variant['default']) {\n        if (variant['default'].hasOwnProperty(_propName) && typeof spec[_propName] === 'undefined') {\n          spec[_propName] = variant['default'][_propName];\n        }\n      }\n      return spec;\n    }\n    var get_element_spec_default = getElementSpec;\n    var alwaysTitleElements = [ 'iframe' ];\n    function titleText(node) {\n      var vNode = node instanceof abstract_virtual_node_default ? node : get_node_from_tree_default(node);\n      if (vNode.props.nodeType !== 1 || !node.hasAttr('title')) {\n        return '';\n      }\n      if (!matches_default2(vNode, alwaysTitleElements) && [ 'none', 'presentation' ].includes(get_role_default(vNode))) {\n        return '';\n      }\n      return vNode.attr('title');\n    }\n    var title_text_default = titleText;\n    function namedFromContents(vNode) {\n      var _ref27 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, strict = _ref27.strict;\n      vNode = vNode instanceof abstract_virtual_node_default ? vNode : get_node_from_tree_default(vNode);\n      if (vNode.props.nodeType !== 1) {\n        return false;\n      }\n      var role = get_role_default(vNode);\n      var roleDef = standards_default.ariaRoles[role];\n      if (roleDef && roleDef.nameFromContent) {\n        return true;\n      }\n      if (strict) {\n        return false;\n      }\n      return !roleDef || [ 'presentation', 'none' ].includes(role);\n    }\n    var named_from_contents_default = namedFromContents;\n    function getOwnedVirtual(virtualNode) {\n      var actualNode = virtualNode.actualNode, children = virtualNode.children;\n      if (!children) {\n        throw new Error('getOwnedVirtual requires a virtual node');\n      }\n      if (virtualNode.hasAttr('aria-owns')) {\n        var owns = idrefs_default(actualNode, 'aria-owns').filter(function(element) {\n          return !!element;\n        }).map(function(element) {\n          return axe.utils.getNodeFromTree(element);\n        });\n        return [].concat(_toConsumableArray(children), _toConsumableArray(owns));\n      }\n      return _toConsumableArray(children);\n    }\n    var get_owned_virtual_default = getOwnedVirtual;\n    function subtreeText(virtualNode) {\n      var context3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var alreadyProcessed2 = accessible_text_virtual_default.alreadyProcessed;\n      context3.startNode = context3.startNode || virtualNode;\n      var _context = context3, strict = _context.strict, inControlContext = _context.inControlContext, inLabelledByContext = _context.inLabelledByContext;\n      if (alreadyProcessed2(virtualNode, context3) || virtualNode.props.nodeType !== 1) {\n        return '';\n      }\n      if (!named_from_contents_default(virtualNode, {\n        strict: strict\n      }) && !context3.subtreeDescendant) {\n        return '';\n      }\n      if (!strict) {\n        var subtreeDescendant = !inControlContext && !inLabelledByContext;\n        context3 = _extends({\n          subtreeDescendant: subtreeDescendant\n        }, context3);\n      }\n      return get_owned_virtual_default(virtualNode).reduce(function(contentText, child) {\n        return appendAccessibleText(contentText, child, context3);\n      }, '');\n    }\n    var phrasingElements = get_elements_by_content_type_default('phrasing').concat([ '#text' ]);\n    function appendAccessibleText(contentText, virtualNode, context3) {\n      var nodeName2 = virtualNode.props.nodeName;\n      var contentTextAdd = accessible_text_virtual_default(virtualNode, context3);\n      if (!contentTextAdd) {\n        return contentText;\n      }\n      if (!phrasingElements.includes(nodeName2)) {\n        if (contentTextAdd[0] !== ' ') {\n          contentTextAdd += ' ';\n        }\n        if (contentText && contentText[contentText.length - 1] !== ' ') {\n          contentTextAdd = ' ' + contentTextAdd;\n        }\n      }\n      return contentText + contentTextAdd;\n    }\n    var subtree_text_default = subtreeText;\n    function labelText(virtualNode) {\n      var context3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var alreadyProcessed2 = accessible_text_virtual_default.alreadyProcessed;\n      if (context3.inControlContext || context3.inLabelledByContext || alreadyProcessed2(virtualNode, context3)) {\n        return '';\n      }\n      if (!context3.startNode) {\n        context3.startNode = virtualNode;\n      }\n      var labelContext = _extends({\n        inControlContext: true\n      }, context3);\n      var explicitLabels = getExplicitLabels(virtualNode);\n      var implicitLabel = closest_default(virtualNode, 'label');\n      var labels;\n      if (implicitLabel) {\n        labels = [].concat(_toConsumableArray(explicitLabels), [ implicitLabel.actualNode ]);\n        labels.sort(node_sorter_default);\n      } else {\n        labels = explicitLabels;\n      }\n      return labels.map(function(label5) {\n        return accessible_text_default(label5, labelContext);\n      }).filter(function(text32) {\n        return text32 !== '';\n      }).join(' ');\n    }\n    function getExplicitLabels(virtualNode) {\n      if (!virtualNode.attr('id')) {\n        return [];\n      }\n      if (!virtualNode.actualNode) {\n        throw new TypeError('Cannot resolve explicit label reference for non-DOM nodes');\n      }\n      return find_elms_in_context_default({\n        elm: 'label',\n        attr: 'for',\n        value: virtualNode.attr('id'),\n        context: virtualNode.actualNode\n      });\n    }\n    var label_text_default = labelText;\n    var defaultButtonValues = {\n      submit: 'Submit',\n      image: 'Submit',\n      reset: 'Reset',\n      button: ''\n    };\n    var nativeTextMethods = {\n      valueText: function valueText(_ref28) {\n        var actualNode = _ref28.actualNode;\n        return actualNode.value || '';\n      },\n      buttonDefaultText: function buttonDefaultText(_ref29) {\n        var actualNode = _ref29.actualNode;\n        return defaultButtonValues[actualNode.type] || '';\n      },\n      tableCaptionText: descendantText.bind(null, 'caption'),\n      figureText: descendantText.bind(null, 'figcaption'),\n      svgTitleText: descendantText.bind(null, 'title'),\n      fieldsetLegendText: descendantText.bind(null, 'legend'),\n      altText: attrText.bind(null, 'alt'),\n      tableSummaryText: attrText.bind(null, 'summary'),\n      titleText: title_text_default,\n      subtreeText: subtree_text_default,\n      labelText: label_text_default,\n      singleSpace: function singleSpace() {\n        return ' ';\n      },\n      placeholderText: attrText.bind(null, 'placeholder')\n    };\n    function attrText(attr, vNode) {\n      return vNode.attr(attr) || '';\n    }\n    function descendantText(nodeName2, _ref30, context3) {\n      var actualNode = _ref30.actualNode;\n      nodeName2 = nodeName2.toLowerCase();\n      var nodeNames = [ nodeName2, actualNode.nodeName.toLowerCase() ].join(',');\n      var candidate = actualNode.querySelector(nodeNames);\n      if (!candidate || candidate.nodeName.toLowerCase() !== nodeName2) {\n        return '';\n      }\n      return accessible_text_default(candidate, context3);\n    }\n    var native_text_methods_default = nativeTextMethods;\n    function nativeTextAlternative(virtualNode) {\n      var context3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var actualNode = virtualNode.actualNode;\n      if (virtualNode.props.nodeType !== 1 || [ 'presentation', 'none' ].includes(get_role_default(virtualNode))) {\n        return '';\n      }\n      var textMethods = findTextMethods(virtualNode);\n      var accName = textMethods.reduce(function(accName2, step) {\n        return accName2 || step(virtualNode, context3);\n      }, '');\n      if (context3.debug) {\n        axe.log(accName || '{empty-value}', actualNode, context3);\n      }\n      return accName;\n    }\n    function findTextMethods(virtualNode) {\n      var elmSpec = get_element_spec_default(virtualNode);\n      var methods = elmSpec.namingMethods || [];\n      return methods.map(function(methodName) {\n        return native_text_methods_default[methodName];\n      });\n    }\n    var native_text_alternative_default = nativeTextAlternative;\n    var unsupported = {\n      accessibleNameFromFieldValue: [ 'combobox', 'listbox', 'progressbar' ]\n    };\n    var unsupported_default = unsupported;\n    var nonTextInputTypes = [ 'button', 'checkbox', 'color', 'file', 'hidden', 'image', 'password', 'radio', 'reset', 'submit' ];\n    function isNativeTextbox(node) {\n      node = node instanceof abstract_virtual_node_default ? node : get_node_from_tree_default(node);\n      var nodeName2 = node.props.nodeName;\n      return nodeName2 === 'textarea' || nodeName2 === 'input' && !nonTextInputTypes.includes((node.attr('type') || '').toLowerCase());\n    }\n    var is_native_textbox_default = isNativeTextbox;\n    function isNativeSelect(node) {\n      node = node instanceof abstract_virtual_node_default ? node : get_node_from_tree_default(node);\n      var nodeName2 = node.props.nodeName;\n      return nodeName2 === 'select';\n    }\n    var is_native_select_default = isNativeSelect;\n    function isAriaTextbox(node) {\n      var role = get_explicit_role_default(node);\n      return role === 'textbox';\n    }\n    var is_aria_textbox_default = isAriaTextbox;\n    function isAriaListbox(node) {\n      var role = get_explicit_role_default(node);\n      return role === 'listbox';\n    }\n    var is_aria_listbox_default = isAriaListbox;\n    function isAriaCombobox(node) {\n      var role = get_explicit_role_default(node);\n      return role === 'combobox';\n    }\n    var is_aria_combobox_default = isAriaCombobox;\n    var rangeRoles = [ 'progressbar', 'scrollbar', 'slider', 'spinbutton' ];\n    function isAriaRange(node) {\n      var role = get_explicit_role_default(node);\n      return rangeRoles.includes(role);\n    }\n    var is_aria_range_default = isAriaRange;\n    var controlValueRoles = [ 'textbox', 'progressbar', 'scrollbar', 'slider', 'spinbutton', 'combobox', 'listbox' ];\n    var _formControlValueMethods = {\n      nativeTextboxValue: nativeTextboxValue,\n      nativeSelectValue: nativeSelectValue,\n      ariaTextboxValue: ariaTextboxValue,\n      ariaListboxValue: ariaListboxValue,\n      ariaComboboxValue: ariaComboboxValue,\n      ariaRangeValue: ariaRangeValue\n    };\n    function formControlValue(virtualNode) {\n      var context3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var actualNode = virtualNode.actualNode;\n      var unsupportedRoles = unsupported_default.accessibleNameFromFieldValue || [];\n      var role = get_role_default(virtualNode);\n      if (context3.startNode === virtualNode || !controlValueRoles.includes(role) || unsupportedRoles.includes(role)) {\n        return '';\n      }\n      var valueMethods = Object.keys(_formControlValueMethods).map(function(name) {\n        return _formControlValueMethods[name];\n      });\n      var valueString = valueMethods.reduce(function(accName, step) {\n        return accName || step(virtualNode, context3);\n      }, '');\n      if (context3.debug) {\n        log_default(valueString || '{empty-value}', actualNode, context3);\n      }\n      return valueString;\n    }\n    function nativeTextboxValue(node) {\n      var vNode = node instanceof abstract_virtual_node_default ? node : get_node_from_tree_default(node);\n      if (is_native_textbox_default(vNode)) {\n        return vNode.props.value || '';\n      }\n      return '';\n    }\n    function nativeSelectValue(node) {\n      var vNode = node instanceof abstract_virtual_node_default ? node : get_node_from_tree_default(node);\n      if (!is_native_select_default(vNode)) {\n        return '';\n      }\n      var options = query_selector_all_default(vNode, 'option');\n      var selectedOptions = options.filter(function(option) {\n        return option.hasAttr('selected');\n      });\n      if (!selectedOptions.length) {\n        selectedOptions.push(options[0]);\n      }\n      return selectedOptions.map(function(option) {\n        return visible_virtual_default(option);\n      }).join(' ') || '';\n    }\n    function ariaTextboxValue(node) {\n      var vNode = node instanceof abstract_virtual_node_default ? node : get_node_from_tree_default(node);\n      var actualNode = vNode.actualNode;\n      if (!is_aria_textbox_default(vNode)) {\n        return '';\n      }\n      if (!actualNode || actualNode && !is_hidden_with_css_default(actualNode)) {\n        return visible_virtual_default(vNode, true);\n      } else {\n        return actualNode.textContent;\n      }\n    }\n    function ariaListboxValue(node, context3) {\n      var vNode = node instanceof abstract_virtual_node_default ? node : get_node_from_tree_default(node);\n      if (!is_aria_listbox_default(vNode)) {\n        return '';\n      }\n      var selected = get_owned_virtual_default(vNode).filter(function(owned) {\n        return get_role_default(owned) === 'option' && owned.attr('aria-selected') === 'true';\n      });\n      if (selected.length === 0) {\n        return '';\n      }\n      return accessible_text_virtual_default(selected[0], context3);\n    }\n    function ariaComboboxValue(node, context3) {\n      var vNode = node instanceof abstract_virtual_node_default ? node : get_node_from_tree_default(node);\n      if (!is_aria_combobox_default(vNode)) {\n        return '';\n      }\n      var listbox = get_owned_virtual_default(vNode).filter(function(elm) {\n        return get_role_default(elm) === 'listbox';\n      })[0];\n      return listbox ? ariaListboxValue(listbox, context3) : '';\n    }\n    function ariaRangeValue(node) {\n      var vNode = node instanceof abstract_virtual_node_default ? node : get_node_from_tree_default(node);\n      if (!is_aria_range_default(vNode) || !vNode.hasAttr('aria-valuenow')) {\n        return '';\n      }\n      var valueNow = +vNode.attr('aria-valuenow');\n      return !isNaN(valueNow) ? String(valueNow) : '0';\n    }\n    var form_control_value_default = formControlValue;\n    function accessibleTextVirtual(virtualNode) {\n      var context3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var actualNode = virtualNode.actualNode;\n      context3 = prepareContext(virtualNode, context3);\n      if (shouldIgnoreHidden(virtualNode, context3)) {\n        return '';\n      }\n      var computationSteps = [ arialabelledby_text_default, arialabel_text_default, native_text_alternative_default, form_control_value_default, subtree_text_default, textNodeValue, title_text_default ];\n      var accName = computationSteps.reduce(function(accName2, step) {\n        if (context3.startNode === virtualNode) {\n          accName2 = sanitize_default(accName2);\n        }\n        if (accName2 !== '') {\n          return accName2;\n        }\n        return step(virtualNode, context3);\n      }, '');\n      if (context3.debug) {\n        axe.log(accName || '{empty-value}', actualNode, context3);\n      }\n      return accName;\n    }\n    function textNodeValue(virtualNode) {\n      if (virtualNode.props.nodeType !== 3) {\n        return '';\n      }\n      return virtualNode.props.nodeValue;\n    }\n    function shouldIgnoreHidden(_ref31, context3) {\n      var actualNode = _ref31.actualNode;\n      if (!actualNode) {\n        return false;\n      }\n      if (actualNode.nodeType !== 1 || context3.includeHidden) {\n        return false;\n      }\n      return !is_visible_default(actualNode, true);\n    }\n    function prepareContext(virtualNode, context3) {\n      var actualNode = virtualNode.actualNode;\n      if (!context3.startNode) {\n        context3 = _extends({\n          startNode: virtualNode\n        }, context3);\n      }\n      if (!actualNode) {\n        return context3;\n      }\n      if (actualNode.nodeType === 1 && context3.inLabelledByContext && context3.includeHidden === void 0) {\n        context3 = _extends({\n          includeHidden: !is_visible_default(actualNode, true)\n        }, context3);\n      }\n      return context3;\n    }\n    accessibleTextVirtual.alreadyProcessed = function alreadyProcessed(virtualnode, context3) {\n      context3.processed = context3.processed || [];\n      if (context3.processed.includes(virtualnode)) {\n        return true;\n      }\n      context3.processed.push(virtualnode);\n      return false;\n    };\n    var accessible_text_virtual_default = accessibleTextVirtual;\n    function accessibleText(element, context3) {\n      var virtualNode = get_node_from_tree_default(element);\n      return accessible_text_virtual_default(virtualNode, context3);\n    }\n    var accessible_text_default = accessibleText;\n    function arialabelledbyText(vNode) {\n      var context3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      if (!(vNode instanceof abstract_virtual_node_default)) {\n        if (vNode.nodeType !== 1) {\n          return '';\n        }\n        vNode = get_node_from_tree_default(vNode);\n      }\n      if (vNode.props.nodeType !== 1 || context3.inLabelledByContext || context3.inControlContext || !vNode.attr('aria-labelledby')) {\n        return '';\n      }\n      var refs = idrefs_default(vNode, 'aria-labelledby').filter(function(elm) {\n        return elm;\n      });\n      return refs.reduce(function(accessibleName, elm) {\n        var accessibleNameAdd = accessible_text_default(elm, _extends({\n          inLabelledByContext: true,\n          startNode: context3.startNode || vNode\n        }, context3));\n        if (!accessibleName) {\n          return accessibleNameAdd;\n        } else {\n          return ''.concat(accessibleName, ' ').concat(accessibleNameAdd);\n        }\n      }, '');\n    }\n    var arialabelledby_text_default = arialabelledbyText;\n    var text_exports = {};\n    __export(text_exports, {\n      accessibleText: function accessibleText() {\n        return accessible_text_default;\n      },\n      accessibleTextVirtual: function accessibleTextVirtual() {\n        return accessible_text_virtual_default;\n      },\n      autocomplete: function autocomplete() {\n        return _autocomplete;\n      },\n      formControlValue: function formControlValue() {\n        return form_control_value_default;\n      },\n      formControlValueMethods: function formControlValueMethods() {\n        return _formControlValueMethods;\n      },\n      hasUnicode: function hasUnicode() {\n        return has_unicode_default;\n      },\n      isHumanInterpretable: function isHumanInterpretable() {\n        return is_human_interpretable_default;\n      },\n      isIconLigature: function isIconLigature() {\n        return is_icon_ligature_default;\n      },\n      isValidAutocomplete: function isValidAutocomplete() {\n        return is_valid_autocomplete_default;\n      },\n      label: function label() {\n        return label_default;\n      },\n      labelText: function labelText() {\n        return label_text_default;\n      },\n      labelVirtual: function labelVirtual() {\n        return label_virtual_default2;\n      },\n      nativeElementType: function nativeElementType() {\n        return native_element_type_default;\n      },\n      nativeTextAlternative: function nativeTextAlternative() {\n        return native_text_alternative_default;\n      },\n      nativeTextMethods: function nativeTextMethods() {\n        return native_text_methods_default;\n      },\n      removeUnicode: function removeUnicode() {\n        return remove_unicode_default;\n      },\n      sanitize: function sanitize() {\n        return sanitize_default;\n      },\n      subtreeText: function subtreeText() {\n        return subtree_text_default;\n      },\n      titleText: function titleText() {\n        return title_text_default;\n      },\n      unsupported: function unsupported() {\n        return unsupported_default;\n      },\n      visible: function visible() {\n        return visible_default;\n      },\n      visibleTextNodes: function visibleTextNodes() {\n        return visible_text_nodes_default;\n      },\n      visibleVirtual: function visibleVirtual() {\n        return visible_virtual_default;\n      }\n    });\n    function getUnicodeNonBmpRegExp() {\n      return /[\\u1D00-\\u1D7F\\u1D80-\\u1DBF\\u1DC0-\\u1DFF\\u20A0-\\u20CF\\u20D0-\\u20FF\\u2100-\\u214F\\u2150-\\u218F\\u2190-\\u21FF\\u2200-\\u22FF\\u2300-\\u23FF\\u2400-\\u243F\\u2440-\\u245F\\u2460-\\u24FF\\u2500-\\u257F\\u2580-\\u259F\\u25A0-\\u25FF\\u2600-\\u26FF\\u2700-\\u27BF\\uE000-\\uF8FF]/g;\n    }\n    function getPunctuationRegExp() {\n      return /[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&\\xa3\\xa2\\xa5\\xa7\\u20ac()*+,\\-.\\/:;<=>?@\\[\\]^_`{|}~\\xb1]/g;\n    }\n    function getSupplementaryPrivateUseRegExp() {\n      return /[\\uDB80-\\uDBBF][\\uDC00-\\uDFFF]/g;\n    }\n    var emoji_regex = __toModule(require_emoji_regex());\n    function hasUnicode(str, options) {\n      var emoji = options.emoji, nonBmp = options.nonBmp, punctuations = options.punctuations;\n      if (emoji) {\n        return emoji_regex['default']().test(str);\n      }\n      if (nonBmp) {\n        return getUnicodeNonBmpRegExp().test(str) || getSupplementaryPrivateUseRegExp().test(str);\n      }\n      if (punctuations) {\n        return getPunctuationRegExp().test(str);\n      }\n      return false;\n    }\n    var has_unicode_default = hasUnicode;\n    var emoji_regex2 = __toModule(require_emoji_regex());\n    function removeUnicode(str, options) {\n      var emoji = options.emoji, nonBmp = options.nonBmp, punctuations = options.punctuations;\n      if (emoji) {\n        str = str.replace(emoji_regex2['default'](), '');\n      }\n      if (nonBmp) {\n        str = str.replace(getUnicodeNonBmpRegExp(), '');\n        str = str.replace(getSupplementaryPrivateUseRegExp(), '');\n      }\n      if (punctuations) {\n        str = str.replace(getPunctuationRegExp(), '');\n      }\n      return str;\n    }\n    var remove_unicode_default = removeUnicode;\n    function isHumanInterpretable(str) {\n      if (!str.length) {\n        return 0;\n      }\n      var alphaNumericIconMap = [ 'x', 'i' ];\n      if (alphaNumericIconMap.includes(str)) {\n        return 0;\n      }\n      var noUnicodeStr = remove_unicode_default(str, {\n        emoji: true,\n        nonBmp: true,\n        punctuations: true\n      });\n      if (!sanitize_default(noUnicodeStr)) {\n        return 0;\n      }\n      return 1;\n    }\n    var is_human_interpretable_default = isHumanInterpretable;\n    function isIconLigature(textVNode) {\n      var differenceThreshold = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : .15;\n      var occuranceThreshold = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3;\n      var nodeValue = textVNode.actualNode.nodeValue.trim();\n      if (!sanitize_default(nodeValue) || has_unicode_default(nodeValue, {\n        emoji: true,\n        nonBmp: true\n      })) {\n        return false;\n      }\n      if (!cache_default.get('canvasContext')) {\n        cache_default.set('canvasContext', document.createElement('canvas').getContext('2d'));\n      }\n      var canvasContext = cache_default.get('canvasContext');\n      var canvas = canvasContext.canvas;\n      if (!cache_default.get('fonts')) {\n        cache_default.set('fonts', {});\n      }\n      var fonts = cache_default.get('fonts');\n      var style = window.getComputedStyle(textVNode.parent.actualNode);\n      var fontFamily = style.getPropertyValue('font-family');\n      if (!fonts[fontFamily]) {\n        fonts[fontFamily] = {\n          occurances: 0,\n          numLigatures: 0\n        };\n      }\n      var font = fonts[fontFamily];\n      if (font.occurances >= occuranceThreshold) {\n        if (font.numLigatures / font.occurances === 1) {\n          return true;\n        } else if (font.numLigatures === 0) {\n          return false;\n        }\n      }\n      font.occurances++;\n      var fontSize = 30;\n      var fontStyle = ''.concat(fontSize, 'px ').concat(fontFamily);\n      canvasContext.font = fontStyle;\n      var firstChar = nodeValue.charAt(0);\n      var width = canvasContext.measureText(firstChar).width;\n      if (width < 30) {\n        var diff = 30 / width;\n        width *= diff;\n        fontSize *= diff;\n        fontStyle = ''.concat(fontSize, 'px ').concat(fontFamily);\n      }\n      canvas.width = width;\n      canvas.height = fontSize;\n      canvasContext.font = fontStyle;\n      canvasContext.textAlign = 'left';\n      canvasContext.textBaseline = 'top';\n      canvasContext.fillText(firstChar, 0, 0);\n      var compareData = new Uint32Array(canvasContext.getImageData(0, 0, width, fontSize).data.buffer);\n      if (!compareData.some(function(pixel) {\n        return pixel;\n      })) {\n        font.numLigatures++;\n        return true;\n      }\n      canvasContext.clearRect(0, 0, width, fontSize);\n      canvasContext.fillText(nodeValue, 0, 0);\n      var compareWith = new Uint32Array(canvasContext.getImageData(0, 0, width, fontSize).data.buffer);\n      var differences = compareData.reduce(function(diff, pixel, i) {\n        if (pixel === 0 && compareWith[i] === 0) {\n          return diff;\n        }\n        if (pixel !== 0 && compareWith[i] !== 0) {\n          return diff;\n        }\n        return ++diff;\n      }, 0);\n      var expectedWidth = nodeValue.split('').reduce(function(width2, _char3) {\n        return width2 + canvasContext.measureText(_char3).width;\n      }, 0);\n      var actualWidth = canvasContext.measureText(nodeValue).width;\n      var pixelDifference = differences / compareData.length;\n      var sizeDifference = 1 - actualWidth / expectedWidth;\n      if (pixelDifference >= differenceThreshold && sizeDifference >= differenceThreshold) {\n        font.numLigatures++;\n        return true;\n      }\n      return false;\n    }\n    var is_icon_ligature_default = isIconLigature;\n    var _autocomplete = {\n      stateTerms: [ 'on', 'off' ],\n      standaloneTerms: [ 'name', 'honorific-prefix', 'given-name', 'additional-name', 'family-name', 'honorific-suffix', 'nickname', 'username', 'new-password', 'current-password', 'organization-title', 'organization', 'street-address', 'address-line1', 'address-line2', 'address-line3', 'address-level4', 'address-level3', 'address-level2', 'address-level1', 'country', 'country-name', 'postal-code', 'cc-name', 'cc-given-name', 'cc-additional-name', 'cc-family-name', 'cc-number', 'cc-exp', 'cc-exp-month', 'cc-exp-year', 'cc-csc', 'cc-type', 'transaction-currency', 'transaction-amount', 'language', 'bday', 'bday-day', 'bday-month', 'bday-year', 'sex', 'url', 'photo', 'one-time-code' ],\n      qualifiers: [ 'home', 'work', 'mobile', 'fax', 'pager' ],\n      qualifiedTerms: [ 'tel', 'tel-country-code', 'tel-national', 'tel-area-code', 'tel-local', 'tel-local-prefix', 'tel-local-suffix', 'tel-extension', 'email', 'impp' ],\n      locations: [ 'billing', 'shipping' ]\n    };\n    function isValidAutocomplete(autocompleteValue) {\n      var _ref32 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, _ref32$looseTyped = _ref32.looseTyped, looseTyped = _ref32$looseTyped === void 0 ? false : _ref32$looseTyped, _ref32$stateTerms = _ref32.stateTerms, stateTerms = _ref32$stateTerms === void 0 ? [] : _ref32$stateTerms, _ref32$locations = _ref32.locations, locations = _ref32$locations === void 0 ? [] : _ref32$locations, _ref32$qualifiers = _ref32.qualifiers, qualifiers = _ref32$qualifiers === void 0 ? [] : _ref32$qualifiers, _ref32$standaloneTerm = _ref32.standaloneTerms, standaloneTerms = _ref32$standaloneTerm === void 0 ? [] : _ref32$standaloneTerm, _ref32$qualifiedTerms = _ref32.qualifiedTerms, qualifiedTerms = _ref32$qualifiedTerms === void 0 ? [] : _ref32$qualifiedTerms;\n      autocompleteValue = autocompleteValue.toLowerCase().trim();\n      stateTerms = stateTerms.concat(_autocomplete.stateTerms);\n      if (stateTerms.includes(autocompleteValue) || autocompleteValue === '') {\n        return true;\n      }\n      qualifiers = qualifiers.concat(_autocomplete.qualifiers);\n      locations = locations.concat(_autocomplete.locations);\n      standaloneTerms = standaloneTerms.concat(_autocomplete.standaloneTerms);\n      qualifiedTerms = qualifiedTerms.concat(_autocomplete.qualifiedTerms);\n      var autocompleteTerms = autocompleteValue.split(/\\s+/g);\n      if (!looseTyped) {\n        if (autocompleteTerms[0].length > 8 && autocompleteTerms[0].substr(0, 8) === 'section-') {\n          autocompleteTerms.shift();\n        }\n        if (locations.includes(autocompleteTerms[0])) {\n          autocompleteTerms.shift();\n        }\n        if (qualifiers.includes(autocompleteTerms[0])) {\n          autocompleteTerms.shift();\n          standaloneTerms = [];\n        }\n        if (autocompleteTerms.length !== 1) {\n          return false;\n        }\n      }\n      var purposeTerm = autocompleteTerms[autocompleteTerms.length - 1];\n      return standaloneTerms.includes(purposeTerm) || qualifiedTerms.includes(purposeTerm);\n    }\n    var is_valid_autocomplete_default = isValidAutocomplete;\n    function visible(element, screenReader, noRecursing) {\n      element = get_node_from_tree_default(element);\n      return visible_virtual_default(element, screenReader, noRecursing);\n    }\n    var visible_default = visible;\n    function labelVirtual2(virtualNode) {\n      var ref, candidate, doc;\n      candidate = label_virtual_default(virtualNode);\n      if (candidate) {\n        return candidate;\n      }\n      if (virtualNode.attr('id')) {\n        if (!virtualNode.actualNode) {\n          throw new TypeError('Cannot resolve explicit label reference for non-DOM nodes');\n        }\n        var id = escape_selector_default(virtualNode.attr('id'));\n        doc = get_root_node_default2(virtualNode.actualNode);\n        ref = doc.querySelector('label[for=\"' + id + '\"]');\n        candidate = ref && visible_default(ref, true);\n        if (candidate) {\n          return candidate;\n        }\n      }\n      ref = closest_default(virtualNode, 'label');\n      candidate = ref && visible_virtual_default(ref, true);\n      if (candidate) {\n        return candidate;\n      }\n      return null;\n    }\n    var label_virtual_default2 = labelVirtual2;\n    function label(node) {\n      node = get_node_from_tree_default(node);\n      return label_virtual_default2(node);\n    }\n    var label_default = label;\n    var nativeElementType = [ {\n      matches: [ {\n        nodeName: 'textarea'\n      }, {\n        nodeName: 'input',\n        properties: {\n          type: [ 'text', 'password', 'search', 'tel', 'email', 'url' ]\n        }\n      } ],\n      namingMethods: 'labelText'\n    }, {\n      matches: {\n        nodeName: 'input',\n        properties: {\n          type: [ 'button', 'submit', 'reset' ]\n        }\n      },\n      namingMethods: [ 'valueText', 'titleText', 'buttonDefaultText' ]\n    }, {\n      matches: {\n        nodeName: 'input',\n        properties: {\n          type: 'image'\n        }\n      },\n      namingMethods: [ 'altText', 'valueText', 'labelText', 'titleText', 'buttonDefaultText' ]\n    }, {\n      matches: 'button',\n      namingMethods: 'subtreeText'\n    }, {\n      matches: 'fieldset',\n      namingMethods: 'fieldsetLegendText'\n    }, {\n      matches: 'OUTPUT',\n      namingMethods: 'subtreeText'\n    }, {\n      matches: [ {\n        nodeName: 'select'\n      }, {\n        nodeName: 'input',\n        properties: {\n          type: /^(?!text|password|search|tel|email|url|button|submit|reset)/\n        }\n      } ],\n      namingMethods: 'labelText'\n    }, {\n      matches: 'summary',\n      namingMethods: 'subtreeText'\n    }, {\n      matches: 'figure',\n      namingMethods: [ 'figureText', 'titleText' ]\n    }, {\n      matches: 'img',\n      namingMethods: 'altText'\n    }, {\n      matches: 'table',\n      namingMethods: [ 'tableCaptionText', 'tableSummaryText' ]\n    }, {\n      matches: [ 'hr', 'br' ],\n      namingMethods: [ 'titleText', 'singleSpace' ]\n    } ];\n    var native_element_type_default = nativeElementType;\n    function visibleTextNodes(vNode) {\n      var parentVisible = is_visible_default(vNode.actualNode);\n      var nodes = [];\n      vNode.children.forEach(function(child) {\n        if (child.actualNode.nodeType === 3) {\n          if (parentVisible) {\n            nodes.push(child);\n          }\n        } else {\n          nodes = nodes.concat(visibleTextNodes(child));\n        }\n      });\n      return nodes;\n    }\n    var visible_text_nodes_default = visibleTextNodes;\n    var idRefsRegex = /^idrefs?$/;\n    function cacheIdRefs(node, idRefs, refAttrs) {\n      if (node.hasAttribute) {\n        if (node.nodeName.toUpperCase() === 'LABEL' && node.hasAttribute('for')) {\n          var id = node.getAttribute('for');\n          idRefs[id] = idRefs[id] || [];\n          idRefs[id].push(node);\n        }\n        for (var _i11 = 0; _i11 < refAttrs.length; ++_i11) {\n          var attr = refAttrs[_i11];\n          var attrValue = sanitize_default(node.getAttribute(attr) || '');\n          if (!attrValue) {\n            continue;\n          }\n          var tokens = token_list_default(attrValue);\n          for (var k = 0; k < tokens.length; ++k) {\n            idRefs[tokens[k]] = idRefs[tokens[k]] || [];\n            idRefs[tokens[k]].push(node);\n          }\n        }\n      }\n      for (var _i12 = 0; _i12 < node.children.length; _i12++) {\n        cacheIdRefs(node.children[_i12], idRefs, refAttrs);\n      }\n    }\n    function getAccessibleRefs(node) {\n      node = node.actualNode || node;\n      var root = get_root_node_default2(node);\n      root = root.documentElement || root;\n      var idRefsByRoot = cache_default.get('idRefsByRoot');\n      if (!idRefsByRoot) {\n        idRefsByRoot = new WeakMap();\n        cache_default.set('idRefsByRoot', idRefsByRoot);\n      }\n      var idRefs = idRefsByRoot.get(root);\n      if (!idRefs) {\n        idRefs = {};\n        idRefsByRoot.set(root, idRefs);\n        var refAttrs = Object.keys(standards_default.ariaAttrs).filter(function(attr) {\n          var type = standards_default.ariaAttrs[attr].type;\n          return idRefsRegex.test(type);\n        });\n        cacheIdRefs(root, idRefs, refAttrs);\n      }\n      return idRefs[node.id] || [];\n    }\n    var get_accessible_refs_default = getAccessibleRefs;\n    function getRoleType(role) {\n      var roleDef = standards_default.ariaRoles[role];\n      if (!roleDef) {\n        return null;\n      }\n      return roleDef.type;\n    }\n    var get_role_type_default = getRoleType;\n    function isAriaRoleAllowedOnElement(node, role) {\n      var vNode = node instanceof abstract_virtual_node_default ? node : get_node_from_tree_default(node);\n      var implicitRole3 = implicit_role_default(vNode);\n      if (role === implicitRole3) {\n        return true;\n      }\n      var spec = get_element_spec_default(vNode);\n      if (Array.isArray(spec.allowedRoles)) {\n        return spec.allowedRoles.includes(role);\n      }\n      return !!spec.allowedRoles;\n    }\n    var is_aria_role_allowed_on_element_default = isAriaRoleAllowedOnElement;\n    var dpubRoles2 = [ 'doc-backlink', 'doc-biblioentry', 'doc-biblioref', 'doc-cover', 'doc-endnote', 'doc-glossref', 'doc-noteref' ];\n    function getRoleSegments(node) {\n      var roles = [];\n      if (!node) {\n        return roles;\n      }\n      if (node.hasAttribute('role')) {\n        var nodeRoles = token_list_default(node.getAttribute('role').toLowerCase());\n        roles = roles.concat(nodeRoles);\n      }\n      if (node.hasAttributeNS('http://www.idpf.org/2007/ops', 'type')) {\n        var epubRoles = token_list_default(node.getAttributeNS('http://www.idpf.org/2007/ops', 'type').toLowerCase()).map(function(role) {\n          return 'doc-'.concat(role);\n        });\n        roles = roles.concat(epubRoles);\n      }\n      roles = roles.filter(function(role) {\n        return is_valid_role_default(role);\n      });\n      return roles;\n    }\n    function getElementUnallowedRoles(node) {\n      var allowImplicit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n      var tagName = node.nodeName.toUpperCase();\n      if (!is_html_element_default(node)) {\n        return [];\n      }\n      var roleSegments = getRoleSegments(node);\n      var implicitRole3 = implicit_role_default(node);\n      var unallowedRoles = roleSegments.filter(function(role) {\n        if (allowImplicit && role === implicitRole3) {\n          return false;\n        }\n        if (allowImplicit && dpubRoles2.includes(role)) {\n          var roleType = get_role_type_default(role);\n          if (implicitRole3 !== roleType) {\n            return true;\n          }\n        }\n        if (!allowImplicit && !(role === 'row' && tagName === 'TR' && element_matches_default(node, 'table[role=\"grid\"] > tr'))) {\n          return true;\n        }\n        return !is_aria_role_allowed_on_element_default(node, role);\n      });\n      return unallowedRoles;\n    }\n    var get_element_unallowed_roles_default = getElementUnallowedRoles;\n    function getAriaRolesByType(type) {\n      return Object.keys(standards_default.ariaRoles).filter(function(roleName) {\n        return standards_default.ariaRoles[roleName].type === type;\n      });\n    }\n    var get_aria_roles_by_type_default = getAriaRolesByType;\n    function getRolesByType(roleType) {\n      return get_aria_roles_by_type_default(roleType);\n    }\n    var get_roles_by_type_default = getRolesByType;\n    function getAriaRolesSupportingNameFromContent() {\n      if (cache_default.get('ariaRolesNameFromContent')) {\n        return cache_default.get('ariaRolesNameFromContent');\n      }\n      var contentRoles = Object.keys(standards_default.ariaRoles).filter(function(roleName) {\n        return standards_default.ariaRoles[roleName].nameFromContent;\n      });\n      cache_default.set('ariaRolesNameFromContent', contentRoles);\n      return contentRoles;\n    }\n    var get_aria_roles_supporting_name_from_content_default = getAriaRolesSupportingNameFromContent;\n    function getRolesWithNameFromContents() {\n      return get_aria_roles_supporting_name_from_content_default();\n    }\n    var get_roles_with_name_from_contents_default = getRolesWithNameFromContents;\n    var isNull = function isNull(value) {\n      return value === null;\n    };\n    var isNotNull = function isNotNull(value) {\n      return value !== null;\n    };\n    var lookupTable = {};\n    lookupTable.attributes = {\n      'aria-activedescendant': {\n        type: 'idref',\n        allowEmpty: true,\n        unsupported: false\n      },\n      'aria-atomic': {\n        type: 'boolean',\n        values: [ 'true', 'false' ],\n        unsupported: false\n      },\n      'aria-autocomplete': {\n        type: 'nmtoken',\n        values: [ 'inline', 'list', 'both', 'none' ],\n        unsupported: false\n      },\n      'aria-busy': {\n        type: 'boolean',\n        values: [ 'true', 'false' ],\n        unsupported: false\n      },\n      'aria-checked': {\n        type: 'nmtoken',\n        values: [ 'true', 'false', 'mixed', 'undefined' ],\n        unsupported: false\n      },\n      'aria-colcount': {\n        type: 'int',\n        unsupported: false\n      },\n      'aria-colindex': {\n        type: 'int',\n        unsupported: false\n      },\n      'aria-colspan': {\n        type: 'int',\n        unsupported: false\n      },\n      'aria-controls': {\n        type: 'idrefs',\n        allowEmpty: true,\n        unsupported: false\n      },\n      'aria-current': {\n        type: 'nmtoken',\n        allowEmpty: true,\n        values: [ 'page', 'step', 'location', 'date', 'time', 'true', 'false' ],\n        unsupported: false\n      },\n      'aria-describedby': {\n        type: 'idrefs',\n        allowEmpty: true,\n        unsupported: false\n      },\n      'aria-describedat': {\n        unsupported: true,\n        unstandardized: true\n      },\n      'aria-details': {\n        type: 'idref',\n        allowEmpty: true,\n        unsupported: false\n      },\n      'aria-disabled': {\n        type: 'boolean',\n        values: [ 'true', 'false' ],\n        unsupported: false\n      },\n      'aria-dropeffect': {\n        type: 'nmtokens',\n        values: [ 'copy', 'move', 'reference', 'execute', 'popup', 'none' ],\n        unsupported: false\n      },\n      'aria-errormessage': {\n        type: 'idref',\n        allowEmpty: true,\n        unsupported: false\n      },\n      'aria-expanded': {\n        type: 'nmtoken',\n        values: [ 'true', 'false', 'undefined' ],\n        unsupported: false\n      },\n      'aria-flowto': {\n        type: 'idrefs',\n        allowEmpty: true,\n        unsupported: false\n      },\n      'aria-grabbed': {\n        type: 'nmtoken',\n        values: [ 'true', 'false', 'undefined' ],\n        unsupported: false\n      },\n      'aria-haspopup': {\n        type: 'nmtoken',\n        allowEmpty: true,\n        values: [ 'true', 'false', 'menu', 'listbox', 'tree', 'grid', 'dialog' ],\n        unsupported: false\n      },\n      'aria-hidden': {\n        type: 'boolean',\n        values: [ 'true', 'false' ],\n        unsupported: false\n      },\n      'aria-invalid': {\n        type: 'nmtoken',\n        allowEmpty: true,\n        values: [ 'true', 'false', 'spelling', 'grammar' ],\n        unsupported: false\n      },\n      'aria-keyshortcuts': {\n        type: 'string',\n        allowEmpty: true,\n        unsupported: false\n      },\n      'aria-label': {\n        type: 'string',\n        allowEmpty: true,\n        unsupported: false\n      },\n      'aria-labelledby': {\n        type: 'idrefs',\n        allowEmpty: true,\n        unsupported: false\n      },\n      'aria-level': {\n        type: 'int',\n        unsupported: false\n      },\n      'aria-live': {\n        type: 'nmtoken',\n        values: [ 'off', 'polite', 'assertive' ],\n        unsupported: false\n      },\n      'aria-modal': {\n        type: 'boolean',\n        values: [ 'true', 'false' ],\n        unsupported: false\n      },\n      'aria-multiline': {\n        type: 'boolean',\n        values: [ 'true', 'false' ],\n        unsupported: false\n      },\n      'aria-multiselectable': {\n        type: 'boolean',\n        values: [ 'true', 'false' ],\n        unsupported: false\n      },\n      'aria-orientation': {\n        type: 'nmtoken',\n        values: [ 'horizontal', 'vertical' ],\n        unsupported: false\n      },\n      'aria-owns': {\n        type: 'idrefs',\n        allowEmpty: true,\n        unsupported: false\n      },\n      'aria-placeholder': {\n        type: 'string',\n        allowEmpty: true,\n        unsupported: false\n      },\n      'aria-posinset': {\n        type: 'int',\n        unsupported: false\n      },\n      'aria-pressed': {\n        type: 'nmtoken',\n        values: [ 'true', 'false', 'mixed', 'undefined' ],\n        unsupported: false\n      },\n      'aria-readonly': {\n        type: 'boolean',\n        values: [ 'true', 'false' ],\n        unsupported: false\n      },\n      'aria-relevant': {\n        type: 'nmtokens',\n        values: [ 'additions', 'removals', 'text', 'all' ],\n        unsupported: false\n      },\n      'aria-required': {\n        type: 'boolean',\n        values: [ 'true', 'false' ],\n        unsupported: false\n      },\n      'aria-roledescription': {\n        type: 'string',\n        allowEmpty: true,\n        unsupported: false\n      },\n      'aria-rowcount': {\n        type: 'int',\n        unsupported: false\n      },\n      'aria-rowindex': {\n        type: 'int',\n        unsupported: false\n      },\n      'aria-rowspan': {\n        type: 'int',\n        unsupported: false\n      },\n      'aria-selected': {\n        type: 'nmtoken',\n        values: [ 'true', 'false', 'undefined' ],\n        unsupported: false\n      },\n      'aria-setsize': {\n        type: 'int',\n        unsupported: false\n      },\n      'aria-sort': {\n        type: 'nmtoken',\n        values: [ 'ascending', 'descending', 'other', 'none' ],\n        unsupported: false\n      },\n      'aria-valuemax': {\n        type: 'decimal',\n        unsupported: false\n      },\n      'aria-valuemin': {\n        type: 'decimal',\n        unsupported: false\n      },\n      'aria-valuenow': {\n        type: 'decimal',\n        unsupported: false\n      },\n      'aria-valuetext': {\n        type: 'string',\n        unsupported: false\n      }\n    };\n    lookupTable.globalAttributes = [ 'aria-atomic', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-flowto', 'aria-grabbed', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-relevant', 'aria-roledescription' ];\n    lookupTable.role = {\n      alert: {\n        type: 'widget',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      alertdialog: {\n        type: 'widget',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-modal', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'dialog', 'section' ]\n      },\n      application: {\n        type: 'landmark',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage', 'aria-activedescendant' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'article', 'audio', 'embed', 'iframe', 'object', 'section', 'svg', 'video' ]\n      },\n      article: {\n        type: 'structure',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-posinset', 'aria-setsize', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        implicit: [ 'article' ],\n        unsupported: false\n      },\n      banner: {\n        type: 'landmark',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        implicit: [ 'header' ],\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      button: {\n        type: 'widget',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-pressed', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author', 'contents' ],\n        context: null,\n        implicit: [ 'button', 'input[type=\"button\"]', 'input[type=\"image\"]', 'input[type=\"reset\"]', 'input[type=\"submit\"]', 'summary' ],\n        unsupported: false,\n        allowedElements: [ {\n          nodeName: 'a',\n          attributes: {\n            href: isNotNull\n          }\n        } ]\n      },\n      cell: {\n        type: 'structure',\n        attributes: {\n          allowed: [ 'aria-colindex', 'aria-colspan', 'aria-rowindex', 'aria-rowspan', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author', 'contents' ],\n        context: [ 'row' ],\n        implicit: [ 'td', 'th' ],\n        unsupported: false\n      },\n      checkbox: {\n        type: 'widget',\n        attributes: {\n          allowed: [ 'aria-checked', 'aria-required', 'aria-readonly', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author', 'contents' ],\n        context: null,\n        implicit: [ 'input[type=\"checkbox\"]' ],\n        unsupported: false,\n        allowedElements: [ 'button' ]\n      },\n      columnheader: {\n        type: 'structure',\n        attributes: {\n          allowed: [ 'aria-colindex', 'aria-colspan', 'aria-expanded', 'aria-rowindex', 'aria-rowspan', 'aria-required', 'aria-readonly', 'aria-selected', 'aria-sort', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author', 'contents' ],\n        context: [ 'row' ],\n        implicit: [ 'th' ],\n        unsupported: false\n      },\n      combobox: {\n        type: 'composite',\n        attributes: {\n          allowed: [ 'aria-autocomplete', 'aria-required', 'aria-activedescendant', 'aria-orientation', 'aria-errormessage' ],\n          required: [ 'aria-expanded' ]\n        },\n        owned: {\n          all: [ 'listbox', 'tree', 'grid', 'dialog', 'textbox' ]\n        },\n        nameFrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ {\n          nodeName: 'input',\n          properties: {\n            type: [ 'text', 'search', 'tel', 'url', 'email' ]\n          }\n        } ]\n      },\n      command: {\n        nameFrom: [ 'author' ],\n        type: 'abstract',\n        unsupported: false\n      },\n      complementary: {\n        type: 'landmark',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        implicit: [ 'aside' ],\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      composite: {\n        nameFrom: [ 'author' ],\n        type: 'abstract',\n        unsupported: false\n      },\n      contentinfo: {\n        type: 'landmark',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        implicit: [ 'footer' ],\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      definition: {\n        type: 'structure',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        implicit: [ 'dd', 'dfn' ],\n        unsupported: false\n      },\n      dialog: {\n        type: 'widget',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-modal', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        implicit: [ 'dialog' ],\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      directory: {\n        type: 'structure',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author', 'contents' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'ol', 'ul' ]\n      },\n      document: {\n        type: 'structure',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        implicit: [ 'body' ],\n        unsupported: false,\n        allowedElements: [ 'article', 'embed', 'iframe', 'object', 'section', 'svg' ]\n      },\n      'doc-abstract': {\n        type: 'section',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      'doc-acknowledgments': {\n        type: 'landmark',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      'doc-afterword': {\n        type: 'landmark',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      'doc-appendix': {\n        type: 'landmark',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      'doc-backlink': {\n        type: 'link',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author', 'contents' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ {\n          nodeName: 'a',\n          attributes: {\n            href: isNotNull\n          }\n        } ]\n      },\n      'doc-biblioentry': {\n        type: 'listitem',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-level', 'aria-posinset', 'aria-setsize', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: [ 'doc-bibliography' ],\n        unsupported: false,\n        allowedElements: [ 'li' ]\n      },\n      'doc-bibliography': {\n        type: 'landmark',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: {\n          one: [ 'doc-biblioentry' ]\n        },\n        nameFrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      'doc-biblioref': {\n        type: 'link',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author', 'contents' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ {\n          nodeName: 'a',\n          attributes: {\n            href: isNotNull\n          }\n        } ]\n      },\n      'doc-chapter': {\n        type: 'landmark',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        namefrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      'doc-colophon': {\n        type: 'section',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        namefrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      'doc-conclusion': {\n        type: 'landmark',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        namefrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      'doc-cover': {\n        type: 'img',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        namefrom: [ 'author' ],\n        context: null,\n        unsupported: false\n      },\n      'doc-credit': {\n        type: 'section',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        namefrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      'doc-credits': {\n        type: 'landmark',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        namefrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      'doc-dedication': {\n        type: 'section',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        namefrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      'doc-endnote': {\n        type: 'listitem',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-level', 'aria-posinset', 'aria-setsize', 'aria-errormessage' ]\n        },\n        owned: null,\n        namefrom: [ 'author' ],\n        context: [ 'doc-endnotes' ],\n        unsupported: false,\n        allowedElements: [ 'li' ]\n      },\n      'doc-endnotes': {\n        type: 'landmark',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: {\n          one: [ 'doc-endnote' ]\n        },\n        namefrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      'doc-epigraph': {\n        type: 'section',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        namefrom: [ 'author' ],\n        context: null,\n        unsupported: false\n      },\n      'doc-epilogue': {\n        type: 'landmark',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        namefrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      'doc-errata': {\n        type: 'landmark',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        namefrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      'doc-example': {\n        type: 'section',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        namefrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'aside', 'section' ]\n      },\n      'doc-footnote': {\n        type: 'section',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        namefrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'aside', 'footer', 'header' ]\n      },\n      'doc-foreword': {\n        type: 'landmark',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        namefrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      'doc-glossary': {\n        type: 'landmark',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: [ 'term', 'definition' ],\n        namefrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'dl' ]\n      },\n      'doc-glossref': {\n        type: 'link',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        namefrom: [ 'author', 'contents' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ {\n          nodeName: 'a',\n          attributes: {\n            href: isNotNull\n          }\n        } ]\n      },\n      'doc-index': {\n        type: 'navigation',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        namefrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'nav', 'section' ]\n      },\n      'doc-introduction': {\n        type: 'landmark',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        namefrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      'doc-noteref': {\n        type: 'link',\n        attributes: {\n          allowed: [ 'aria-expanded' ]\n        },\n        owned: null,\n        namefrom: [ 'author', 'contents' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ {\n          nodeName: 'a',\n          attributes: {\n            href: isNotNull\n          }\n        } ]\n      },\n      'doc-notice': {\n        type: 'note',\n        attributes: {\n          allowed: [ 'aria-expanded' ]\n        },\n        owned: null,\n        namefrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      'doc-pagebreak': {\n        type: 'separator',\n        attributes: {\n          allowed: [ 'aria-expanded' ]\n        },\n        owned: null,\n        namefrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'hr' ]\n      },\n      'doc-pagelist': {\n        type: 'navigation',\n        attributes: {\n          allowed: [ 'aria-expanded' ]\n        },\n        owned: null,\n        namefrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'nav', 'section' ]\n      },\n      'doc-part': {\n        type: 'landmark',\n        attributes: {\n          allowed: [ 'aria-expanded' ]\n        },\n        owned: null,\n        namefrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      'doc-preface': {\n        type: 'landmark',\n        attributes: {\n          allowed: [ 'aria-expanded' ]\n        },\n        owned: null,\n        namefrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      'doc-prologue': {\n        type: 'landmark',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        namefrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      'doc-pullquote': {\n        type: 'none',\n        attributes: {\n          allowed: [ 'aria-expanded' ]\n        },\n        owned: null,\n        namefrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'aside', 'section' ]\n      },\n      'doc-qna': {\n        type: 'section',\n        attributes: {\n          allowed: [ 'aria-expanded' ]\n        },\n        owned: null,\n        namefrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      'doc-subtitle': {\n        type: 'sectionhead',\n        attributes: {\n          allowed: [ 'aria-expanded' ]\n        },\n        owned: null,\n        namefrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: {\n          nodeName: [ 'h1', 'h2', 'h3', 'h4', 'h5', 'h6' ]\n        }\n      },\n      'doc-tip': {\n        type: 'note',\n        attributes: {\n          allowed: [ 'aria-expanded' ]\n        },\n        owned: null,\n        namefrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'aside' ]\n      },\n      'doc-toc': {\n        type: 'navigation',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        namefrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'nav', 'section' ]\n      },\n      feed: {\n        type: 'structure',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: {\n          one: [ 'article' ]\n        },\n        nameFrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'article', 'aside', 'section' ]\n      },\n      figure: {\n        type: 'structure',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author', 'contents' ],\n        context: null,\n        implicit: [ 'figure' ],\n        unsupported: false\n      },\n      form: {\n        type: 'landmark',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        implicit: [ 'form' ],\n        unsupported: false\n      },\n      grid: {\n        type: 'composite',\n        attributes: {\n          allowed: [ 'aria-activedescendant', 'aria-expanded', 'aria-colcount', 'aria-level', 'aria-multiselectable', 'aria-readonly', 'aria-rowcount', 'aria-errormessage' ]\n        },\n        owned: {\n          one: [ 'rowgroup', 'row' ]\n        },\n        nameFrom: [ 'author' ],\n        context: null,\n        implicit: [ 'table' ],\n        unsupported: false\n      },\n      gridcell: {\n        type: 'widget',\n        attributes: {\n          allowed: [ 'aria-colindex', 'aria-colspan', 'aria-expanded', 'aria-rowindex', 'aria-rowspan', 'aria-selected', 'aria-readonly', 'aria-required', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author', 'contents' ],\n        context: [ 'row' ],\n        implicit: [ 'td', 'th' ],\n        unsupported: false\n      },\n      group: {\n        type: 'structure',\n        attributes: {\n          allowed: [ 'aria-activedescendant', 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        implicit: [ 'details', 'optgroup' ],\n        unsupported: false,\n        allowedElements: [ 'dl', 'figcaption', 'fieldset', 'figure', 'footer', 'header', 'ol', 'ul' ]\n      },\n      heading: {\n        type: 'structure',\n        attributes: {\n          required: [ 'aria-level' ],\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author', 'contents' ],\n        context: null,\n        implicit: [ 'h1', 'h2', 'h3', 'h4', 'h5', 'h6' ],\n        unsupported: false\n      },\n      img: {\n        type: 'structure',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        implicit: [ 'img' ],\n        unsupported: false,\n        allowedElements: [ 'embed', 'iframe', 'object', 'svg' ]\n      },\n      input: {\n        nameFrom: [ 'author' ],\n        type: 'abstract',\n        unsupported: false\n      },\n      landmark: {\n        nameFrom: [ 'author' ],\n        type: 'abstract',\n        unsupported: false\n      },\n      link: {\n        type: 'widget',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author', 'contents' ],\n        context: null,\n        implicit: [ 'a[href]', 'area[href]' ],\n        unsupported: false,\n        allowedElements: [ 'button', {\n          nodeName: 'input',\n          properties: {\n            type: [ 'image', 'button' ]\n          }\n        } ]\n      },\n      list: {\n        type: 'structure',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: {\n          all: [ 'listitem' ]\n        },\n        nameFrom: [ 'author' ],\n        context: null,\n        implicit: [ 'ol', 'ul', 'dl' ],\n        unsupported: false\n      },\n      listbox: {\n        type: 'composite',\n        attributes: {\n          allowed: [ 'aria-activedescendant', 'aria-multiselectable', 'aria-readonly', 'aria-required', 'aria-expanded', 'aria-orientation', 'aria-errormessage' ]\n        },\n        owned: {\n          all: [ 'option' ]\n        },\n        nameFrom: [ 'author' ],\n        context: null,\n        implicit: [ 'select' ],\n        unsupported: false,\n        allowedElements: [ 'ol', 'ul' ]\n      },\n      listitem: {\n        type: 'structure',\n        attributes: {\n          allowed: [ 'aria-level', 'aria-posinset', 'aria-setsize', 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author', 'contents' ],\n        context: [ 'list' ],\n        implicit: [ 'li', 'dt' ],\n        unsupported: false\n      },\n      log: {\n        type: 'widget',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      main: {\n        type: 'landmark',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        implicit: [ 'main' ],\n        unsupported: false,\n        allowedElements: [ 'article', 'section' ]\n      },\n      marquee: {\n        type: 'widget',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      math: {\n        type: 'structure',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        implicit: [ 'math' ],\n        unsupported: false\n      },\n      menu: {\n        type: 'composite',\n        attributes: {\n          allowed: [ 'aria-activedescendant', 'aria-expanded', 'aria-orientation', 'aria-errormessage' ]\n        },\n        owned: {\n          one: [ 'menuitem', 'menuitemradio', 'menuitemcheckbox' ]\n        },\n        nameFrom: [ 'author' ],\n        context: null,\n        implicit: [ 'menu[type=\"context\"]' ],\n        unsupported: false,\n        allowedElements: [ 'ol', 'ul' ]\n      },\n      menubar: {\n        type: 'composite',\n        attributes: {\n          allowed: [ 'aria-activedescendant', 'aria-expanded', 'aria-orientation', 'aria-errormessage' ]\n        },\n        owned: {\n          one: [ 'menuitem', 'menuitemradio', 'menuitemcheckbox' ]\n        },\n        nameFrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'ol', 'ul' ]\n      },\n      menuitem: {\n        type: 'widget',\n        attributes: {\n          allowed: [ 'aria-posinset', 'aria-setsize', 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author', 'contents' ],\n        context: [ 'menu', 'menubar' ],\n        implicit: [ 'menuitem[type=\"command\"]' ],\n        unsupported: false,\n        allowedElements: [ 'button', 'li', {\n          nodeName: 'iput',\n          properties: {\n            type: [ 'image', 'button' ]\n          }\n        }, {\n          nodeName: 'a',\n          attributes: {\n            href: isNotNull\n          }\n        } ]\n      },\n      menuitemcheckbox: {\n        type: 'widget',\n        attributes: {\n          allowed: [ 'aria-checked', 'aria-posinset', 'aria-setsize', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author', 'contents' ],\n        context: [ 'menu', 'menubar' ],\n        implicit: [ 'menuitem[type=\"checkbox\"]' ],\n        unsupported: false,\n        allowedElements: [ {\n          nodeName: [ 'button', 'li' ]\n        }, {\n          nodeName: 'input',\n          properties: {\n            type: [ 'checkbox', 'image', 'button' ]\n          }\n        }, {\n          nodeName: 'a',\n          attributes: {\n            href: isNotNull\n          }\n        } ]\n      },\n      menuitemradio: {\n        type: 'widget',\n        attributes: {\n          allowed: [ 'aria-checked', 'aria-selected', 'aria-posinset', 'aria-setsize', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author', 'contents' ],\n        context: [ 'menu', 'menubar' ],\n        implicit: [ 'menuitem[type=\"radio\"]' ],\n        unsupported: false,\n        allowedElements: [ {\n          nodeName: [ 'button', 'li' ]\n        }, {\n          nodeName: 'input',\n          properties: {\n            type: [ 'image', 'button', 'radio' ]\n          }\n        }, {\n          nodeName: 'a',\n          attributes: {\n            href: isNotNull\n          }\n        } ]\n      },\n      navigation: {\n        type: 'landmark',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        implicit: [ 'nav' ],\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      none: {\n        type: 'structure',\n        attributes: null,\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ {\n          nodeName: [ 'article', 'aside', 'dl', 'embed', 'figcaption', 'fieldset', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hr', 'iframe', 'li', 'ol', 'section', 'ul' ]\n        }, {\n          nodeName: 'img',\n          attributes: {\n            alt: isNotNull\n          }\n        } ]\n      },\n      note: {\n        type: 'structure',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'aside' ]\n      },\n      option: {\n        type: 'widget',\n        attributes: {\n          allowed: [ 'aria-selected', 'aria-posinset', 'aria-setsize', 'aria-checked', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author', 'contents' ],\n        context: [ 'listbox' ],\n        implicit: [ 'option' ],\n        unsupported: false,\n        allowedElements: [ {\n          nodeName: [ 'button', 'li' ]\n        }, {\n          nodeName: 'input',\n          properties: {\n            type: [ 'checkbox', 'button' ]\n          }\n        }, {\n          nodeName: 'a',\n          attributes: {\n            href: isNotNull\n          }\n        } ]\n      },\n      presentation: {\n        type: 'structure',\n        attributes: null,\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ {\n          nodeName: [ 'article', 'aside', 'dl', 'embed', 'figcaption', 'fieldset', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hr', 'iframe', 'li', 'ol', 'section', 'ul' ]\n        }, {\n          nodeName: 'img',\n          attributes: {\n            alt: isNotNull\n          }\n        } ]\n      },\n      progressbar: {\n        type: 'widget',\n        attributes: {\n          allowed: [ 'aria-valuetext', 'aria-valuenow', 'aria-valuemax', 'aria-valuemin', 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        implicit: [ 'progress' ],\n        unsupported: false\n      },\n      radio: {\n        type: 'widget',\n        attributes: {\n          allowed: [ 'aria-selected', 'aria-posinset', 'aria-setsize', 'aria-required', 'aria-errormessage', 'aria-checked' ]\n        },\n        owned: null,\n        nameFrom: [ 'author', 'contents' ],\n        context: null,\n        implicit: [ 'input[type=\"radio\"]' ],\n        unsupported: false,\n        allowedElements: [ {\n          nodeName: [ 'button', 'li' ]\n        }, {\n          nodeName: 'input',\n          properties: {\n            type: [ 'image', 'button' ]\n          }\n        } ]\n      },\n      radiogroup: {\n        type: 'composite',\n        attributes: {\n          allowed: [ 'aria-activedescendant', 'aria-required', 'aria-expanded', 'aria-readonly', 'aria-errormessage', 'aria-orientation' ]\n        },\n        owned: {\n          all: [ 'radio' ]\n        },\n        nameFrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: {\n          nodeName: [ 'ol', 'ul', 'fieldset' ]\n        }\n      },\n      range: {\n        nameFrom: [ 'author' ],\n        type: 'abstract',\n        unsupported: false\n      },\n      region: {\n        type: 'landmark',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        implicit: [ 'section[aria-label]', 'section[aria-labelledby]', 'section[title]' ],\n        unsupported: false,\n        allowedElements: {\n          nodeName: [ 'article', 'aside' ]\n        }\n      },\n      roletype: {\n        type: 'abstract',\n        unsupported: false\n      },\n      row: {\n        type: 'structure',\n        attributes: {\n          allowed: [ 'aria-activedescendant', 'aria-colindex', 'aria-expanded', 'aria-level', 'aria-selected', 'aria-rowindex', 'aria-errormessage' ]\n        },\n        owned: {\n          one: [ 'cell', 'columnheader', 'rowheader', 'gridcell' ]\n        },\n        nameFrom: [ 'author', 'contents' ],\n        context: [ 'rowgroup', 'grid', 'treegrid', 'table' ],\n        implicit: [ 'tr' ],\n        unsupported: false\n      },\n      rowgroup: {\n        type: 'structure',\n        attributes: {\n          allowed: [ 'aria-activedescendant', 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: {\n          all: [ 'row' ]\n        },\n        nameFrom: [ 'author', 'contents' ],\n        context: [ 'grid', 'table', 'treegrid' ],\n        implicit: [ 'tbody', 'thead', 'tfoot' ],\n        unsupported: false\n      },\n      rowheader: {\n        type: 'structure',\n        attributes: {\n          allowed: [ 'aria-colindex', 'aria-colspan', 'aria-expanded', 'aria-rowindex', 'aria-rowspan', 'aria-required', 'aria-readonly', 'aria-selected', 'aria-sort', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author', 'contents' ],\n        context: [ 'row' ],\n        implicit: [ 'th' ],\n        unsupported: false\n      },\n      scrollbar: {\n        type: 'widget',\n        attributes: {\n          required: [ 'aria-controls', 'aria-valuenow' ],\n          allowed: [ 'aria-valuetext', 'aria-orientation', 'aria-errormessage', 'aria-valuemax', 'aria-valuemin' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        unsupported: false\n      },\n      search: {\n        type: 'landmark',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: {\n          nodeName: [ 'aside', 'form', 'section' ]\n        }\n      },\n      searchbox: {\n        type: 'widget',\n        attributes: {\n          allowed: [ 'aria-activedescendant', 'aria-autocomplete', 'aria-multiline', 'aria-readonly', 'aria-required', 'aria-placeholder', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        implicit: [ 'input[type=\"search\"]' ],\n        unsupported: false,\n        allowedElements: {\n          nodeName: 'input',\n          properties: {\n            type: 'text'\n          }\n        }\n      },\n      section: {\n        nameFrom: [ 'author', 'contents' ],\n        type: 'abstract',\n        unsupported: false\n      },\n      sectionhead: {\n        nameFrom: [ 'author', 'contents' ],\n        type: 'abstract',\n        unsupported: false\n      },\n      select: {\n        nameFrom: [ 'author' ],\n        type: 'abstract',\n        unsupported: false\n      },\n      separator: {\n        type: 'structure',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-orientation', 'aria-valuenow', 'aria-valuemax', 'aria-valuemin', 'aria-valuetext', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        implicit: [ 'hr' ],\n        unsupported: false,\n        allowedElements: [ 'li' ]\n      },\n      slider: {\n        type: 'widget',\n        attributes: {\n          allowed: [ 'aria-valuetext', 'aria-orientation', 'aria-readonly', 'aria-errormessage', 'aria-valuemax', 'aria-valuemin' ],\n          required: [ 'aria-valuenow' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        implicit: [ 'input[type=\"range\"]' ],\n        unsupported: false\n      },\n      spinbutton: {\n        type: 'widget',\n        attributes: {\n          allowed: [ 'aria-valuetext', 'aria-required', 'aria-readonly', 'aria-errormessage', 'aria-valuemax', 'aria-valuemin' ],\n          required: [ 'aria-valuenow' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        implicit: [ 'input[type=\"number\"]' ],\n        unsupported: false,\n        allowedElements: {\n          nodeName: 'input',\n          properties: {\n            type: [ 'text', 'tel' ]\n          }\n        }\n      },\n      status: {\n        type: 'widget',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        implicit: [ 'output' ],\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      structure: {\n        type: 'abstract',\n        unsupported: false\n      },\n      switch: {\n        type: 'widget',\n        attributes: {\n          allowed: [ 'aria-errormessage' ],\n          required: [ 'aria-checked' ]\n        },\n        owned: null,\n        nameFrom: [ 'author', 'contents' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'button', {\n          nodeName: 'input',\n          properties: {\n            type: [ 'checkbox', 'image', 'button' ]\n          }\n        }, {\n          nodeName: 'a',\n          attributes: {\n            href: isNotNull\n          }\n        } ]\n      },\n      tab: {\n        type: 'widget',\n        attributes: {\n          allowed: [ 'aria-selected', 'aria-expanded', 'aria-setsize', 'aria-posinset', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author', 'contents' ],\n        context: [ 'tablist' ],\n        unsupported: false,\n        allowedElements: [ {\n          nodeName: [ 'button', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'li' ]\n        }, {\n          nodeName: 'input',\n          properties: {\n            type: 'button'\n          }\n        }, {\n          nodeName: 'a',\n          attributes: {\n            href: isNotNull\n          }\n        } ]\n      },\n      table: {\n        type: 'structure',\n        attributes: {\n          allowed: [ 'aria-colcount', 'aria-rowcount', 'aria-errormessage' ]\n        },\n        owned: {\n          one: [ 'rowgroup', 'row' ]\n        },\n        nameFrom: [ 'author', 'contents' ],\n        context: null,\n        implicit: [ 'table' ],\n        unsupported: false\n      },\n      tablist: {\n        type: 'composite',\n        attributes: {\n          allowed: [ 'aria-activedescendant', 'aria-expanded', 'aria-level', 'aria-multiselectable', 'aria-orientation', 'aria-errormessage' ]\n        },\n        owned: {\n          all: [ 'tab' ]\n        },\n        nameFrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'ol', 'ul' ]\n      },\n      tabpanel: {\n        type: 'widget',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'section' ]\n      },\n      term: {\n        type: 'structure',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author', 'contents' ],\n        context: null,\n        implicit: [ 'dt' ],\n        unsupported: false\n      },\n      textbox: {\n        type: 'widget',\n        attributes: {\n          allowed: [ 'aria-activedescendant', 'aria-autocomplete', 'aria-multiline', 'aria-readonly', 'aria-required', 'aria-placeholder', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        implicit: [ 'input[type=\"text\"]', 'input[type=\"email\"]', 'input[type=\"password\"]', 'input[type=\"tel\"]', 'input[type=\"url\"]', 'input:not([type])', 'textarea' ],\n        unsupported: false\n      },\n      timer: {\n        type: 'widget',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        unsupported: false\n      },\n      toolbar: {\n        type: 'structure',\n        attributes: {\n          allowed: [ 'aria-activedescendant', 'aria-expanded', 'aria-orientation', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author' ],\n        context: null,\n        implicit: [ 'menu[type=\"toolbar\"]' ],\n        unsupported: false,\n        allowedElements: [ 'ol', 'ul' ]\n      },\n      tooltip: {\n        type: 'structure',\n        attributes: {\n          allowed: [ 'aria-expanded', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author', 'contents' ],\n        context: null,\n        unsupported: false\n      },\n      tree: {\n        type: 'composite',\n        attributes: {\n          allowed: [ 'aria-activedescendant', 'aria-multiselectable', 'aria-required', 'aria-expanded', 'aria-orientation', 'aria-errormessage' ]\n        },\n        owned: {\n          all: [ 'treeitem' ]\n        },\n        nameFrom: [ 'author' ],\n        context: null,\n        unsupported: false,\n        allowedElements: [ 'ol', 'ul' ]\n      },\n      treegrid: {\n        type: 'composite',\n        attributes: {\n          allowed: [ 'aria-activedescendant', 'aria-colcount', 'aria-expanded', 'aria-level', 'aria-multiselectable', 'aria-readonly', 'aria-required', 'aria-rowcount', 'aria-orientation', 'aria-errormessage' ]\n        },\n        owned: {\n          one: [ 'rowgroup', 'row' ]\n        },\n        nameFrom: [ 'author' ],\n        context: null,\n        unsupported: false\n      },\n      treeitem: {\n        type: 'widget',\n        attributes: {\n          allowed: [ 'aria-checked', 'aria-selected', 'aria-expanded', 'aria-level', 'aria-posinset', 'aria-setsize', 'aria-errormessage' ]\n        },\n        owned: null,\n        nameFrom: [ 'author', 'contents' ],\n        context: [ 'group', 'tree' ],\n        unsupported: false,\n        allowedElements: [ 'li', {\n          nodeName: 'a',\n          attributes: {\n            href: isNotNull\n          }\n        } ]\n      },\n      widget: {\n        type: 'abstract',\n        unsupported: false\n      },\n      window: {\n        nameFrom: [ 'author' ],\n        type: 'abstract',\n        unsupported: false\n      }\n    };\n    lookupTable.implicitHtmlRole = implicit_html_roles_default;\n    lookupTable.elementsAllowedNoRole = [ {\n      nodeName: [ 'base', 'body', 'caption', 'col', 'colgroup', 'datalist', 'dd', 'details', 'dt', 'head', 'html', 'keygen', 'label', 'legend', 'main', 'map', 'math', 'meta', 'meter', 'noscript', 'optgroup', 'param', 'picture', 'progress', 'script', 'source', 'style', 'template', 'textarea', 'title', 'track' ]\n    }, {\n      nodeName: 'area',\n      attributes: {\n        href: isNotNull\n      }\n    }, {\n      nodeName: 'input',\n      properties: {\n        type: [ 'color', 'data', 'datatime', 'file', 'hidden', 'month', 'number', 'password', 'range', 'reset', 'submit', 'time', 'week' ]\n      }\n    }, {\n      nodeName: 'link',\n      attributes: {\n        href: isNotNull\n      }\n    }, {\n      nodeName: 'menu',\n      attributes: {\n        type: 'context'\n      }\n    }, {\n      nodeName: 'menuitem',\n      attributes: {\n        type: [ 'command', 'checkbox', 'radio' ]\n      }\n    }, {\n      nodeName: 'select',\n      condition: function condition(vNode) {\n        if (!(vNode instanceof axe.AbstractVirtualNode)) {\n          vNode = axe.utils.getNodeFromTree(vNode);\n        }\n        return Number(vNode.attr('size')) > 1;\n      },\n      properties: {\n        multiple: true\n      }\n    }, {\n      nodeName: [ 'clippath', 'cursor', 'defs', 'desc', 'feblend', 'fecolormatrix', 'fecomponenttransfer', 'fecomposite', 'feconvolvematrix', 'fediffuselighting', 'fedisplacementmap', 'fedistantlight', 'fedropshadow', 'feflood', 'fefunca', 'fefuncb', 'fefuncg', 'fefuncr', 'fegaussianblur', 'feimage', 'femerge', 'femergenode', 'femorphology', 'feoffset', 'fepointlight', 'fespecularlighting', 'fespotlight', 'fetile', 'feturbulence', 'filter', 'hatch', 'hatchpath', 'lineargradient', 'marker', 'mask', 'meshgradient', 'meshpatch', 'meshrow', 'metadata', 'mpath', 'pattern', 'radialgradient', 'solidcolor', 'stop', 'switch', 'view' ]\n    } ];\n    lookupTable.elementsAllowedAnyRole = [ {\n      nodeName: 'a',\n      attributes: {\n        href: isNull\n      }\n    }, {\n      nodeName: 'img',\n      attributes: {\n        alt: isNull\n      }\n    }, {\n      nodeName: [ 'abbr', 'address', 'canvas', 'div', 'p', 'pre', 'blockquote', 'ins', 'del', 'output', 'span', 'table', 'tbody', 'thead', 'tfoot', 'td', 'em', 'strong', 'small', 's', 'cite', 'q', 'dfn', 'abbr', 'time', 'code', 'var', 'samp', 'kbd', 'sub', 'sup', 'i', 'b', 'u', 'mark', 'ruby', 'rt', 'rp', 'bdi', 'bdo', 'br', 'wbr', 'th', 'tr' ]\n    } ];\n    lookupTable.evaluateRoleForElement = {\n      A: function A(_ref33) {\n        var node = _ref33.node, out = _ref33.out;\n        if (node.namespaceURI === 'http://www.w3.org/2000/svg') {\n          return true;\n        }\n        if (node.href.length) {\n          return out;\n        }\n        return true;\n      },\n      AREA: function AREA(_ref34) {\n        var node = _ref34.node;\n        return !node.href;\n      },\n      BUTTON: function BUTTON(_ref35) {\n        var node = _ref35.node, role = _ref35.role, out = _ref35.out;\n        if (node.getAttribute('type') === 'menu') {\n          return role === 'menuitem';\n        }\n        return out;\n      },\n      IMG: function IMG(_ref36) {\n        var node = _ref36.node, role = _ref36.role, out = _ref36.out;\n        switch (node.alt) {\n         case null:\n          return out;\n\n         case '':\n          return role === 'presentation' || role === 'none';\n\n         default:\n          return role !== 'presentation' && role !== 'none';\n        }\n      },\n      INPUT: function INPUT(_ref37) {\n        var node = _ref37.node, role = _ref37.role, out = _ref37.out;\n        switch (node.type) {\n         case 'button':\n         case 'image':\n          return out;\n\n         case 'checkbox':\n          if (role === 'button' && node.hasAttribute('aria-pressed')) {\n            return true;\n          }\n          return out;\n\n         case 'radio':\n          return role === 'menuitemradio';\n\n         case 'text':\n          return role === 'combobox' || role === 'searchbox' || role === 'spinbutton';\n\n         case 'tel':\n          return role === 'combobox' || role === 'spinbutton';\n\n         case 'url':\n         case 'search':\n         case 'email':\n          return role === 'combobox';\n\n         default:\n          return false;\n        }\n      },\n      LI: function LI(_ref38) {\n        var node = _ref38.node, out = _ref38.out;\n        var hasImplicitListitemRole = axe.utils.matchesSelector(node, 'ol li, ul li');\n        if (hasImplicitListitemRole) {\n          return out;\n        }\n        return true;\n      },\n      MENU: function MENU(_ref39) {\n        var node = _ref39.node;\n        if (node.getAttribute('type') === 'context') {\n          return false;\n        }\n        return true;\n      },\n      OPTION: function OPTION(_ref40) {\n        var node = _ref40.node;\n        var withinOptionList = axe.utils.matchesSelector(node, 'select > option, datalist > option, optgroup > option');\n        return !withinOptionList;\n      },\n      SELECT: function SELECT(_ref41) {\n        var node = _ref41.node, role = _ref41.role;\n        return !node.multiple && node.size <= 1 && role === 'menu';\n      },\n      SVG: function SVG(_ref42) {\n        var node = _ref42.node, out = _ref42.out;\n        if (node.parentNode && node.parentNode.namespaceURI === 'http://www.w3.org/2000/svg') {\n          return true;\n        }\n        return out;\n      }\n    };\n    lookupTable.rolesOfType = {\n      widget: [ 'button', 'checkbox', 'dialog', 'gridcell', 'link', 'log', 'marquee', 'menuitem', 'menuitemcheckbox', 'menuitemradio', 'option', 'progressbar', 'radio', 'scrollbar', 'searchbox', 'slider', 'spinbutton', 'status', 'switch', 'tab', 'tabpanel', 'textbox', 'timer', 'tooltip', 'tree', 'treeitem' ]\n    };\n    var lookup_table_default = lookupTable;\n    function implicitNodes(role) {\n      var implicit = null;\n      var roles = lookup_table_default.role[role];\n      if (roles && roles.implicit) {\n        implicit = clone_default(roles.implicit);\n      }\n      return implicit;\n    }\n    var implicit_nodes_default = implicitNodes;\n    function isAccessibleRef(node) {\n      return !!get_accessible_refs_default(node).length;\n    }\n    var is_accessible_ref_default = isAccessibleRef;\n    function label3(node) {\n      node = get_node_from_tree_default(node);\n      return label_virtual_default(node);\n    }\n    var label_default2 = label3;\n    function requiredAttr(role) {\n      var roleDef = standards_default.ariaRoles[role];\n      if (!roleDef || !Array.isArray(roleDef.requiredAttrs)) {\n        return [];\n      }\n      return _toConsumableArray(roleDef.requiredAttrs);\n    }\n    var required_attr_default = requiredAttr;\n    function requiredContext(role) {\n      var roleDef = standards_default.ariaRoles[role];\n      if (!roleDef || !Array.isArray(roleDef.requiredContext)) {\n        return null;\n      }\n      return _toConsumableArray(roleDef.requiredContext);\n    }\n    var required_context_default = requiredContext;\n    function requiredOwned(role) {\n      var roleDef = standards_default.ariaRoles[role];\n      if (!roleDef || !Array.isArray(roleDef.requiredOwned)) {\n        return null;\n      }\n      return _toConsumableArray(roleDef.requiredOwned);\n    }\n    var required_owned_default = requiredOwned;\n    function validateAttrValue(node, attr) {\n      var matches14;\n      var list;\n      var value = node.getAttribute(attr);\n      var attrInfo = standards_default.ariaAttrs[attr];\n      var doc = get_root_node_default2(node);\n      if (!attrInfo) {\n        return true;\n      }\n      if (attrInfo.allowEmpty && (!value || value.trim() === '')) {\n        return true;\n      }\n      switch (attrInfo.type) {\n       case 'boolean':\n        return [ 'true', 'false' ].includes(value.toLowerCase());\n\n       case 'nmtoken':\n        return typeof value === 'string' && attrInfo.values.includes(value.toLowerCase());\n\n       case 'nmtokens':\n        list = token_list_default(value);\n        return list.reduce(function(result, token) {\n          return result && attrInfo.values.includes(token);\n        }, list.length !== 0);\n\n       case 'idref':\n        return !!(value && doc.getElementById(value));\n\n       case 'idrefs':\n        list = token_list_default(value);\n        return list.some(function(token) {\n          return doc.getElementById(token);\n        });\n\n       case 'string':\n        return value.trim() !== '';\n\n       case 'decimal':\n        matches14 = value.match(/^[-+]?([0-9]*)\\.?([0-9]*)$/);\n        return !!(matches14 && (matches14[1] || matches14[2]));\n\n       case 'int':\n        var minValue = typeof attrInfo.minValue !== 'undefined' ? attrInfo.minValue : -Infinity;\n        return /^[-+]?[0-9]+$/.test(value) && parseInt(value) >= minValue;\n      }\n    }\n    var validate_attr_value_default = validateAttrValue;\n    function validateAttr(att) {\n      var attrDefinition = standards_default.ariaAttrs[att];\n      return !!attrDefinition;\n    }\n    var validate_attr_default = validateAttr;\n    function abstractroleEvaluate(node, options, virtualNode) {\n      var abstractRoles = token_list_default(virtualNode.attr('role')).filter(function(role) {\n        return get_role_type_default(role) === 'abstract';\n      });\n      if (abstractRoles.length > 0) {\n        this.data(abstractRoles);\n        return true;\n      }\n      return false;\n    }\n    var abstractrole_evaluate_default = abstractroleEvaluate;\n    function ariaAllowedAttrEvaluate(node, options, virtualNode) {\n      var invalid = [];\n      var role = get_role_default(virtualNode);\n      var attrs = virtualNode.attrNames;\n      var allowed = allowed_attr_default(role);\n      if (Array.isArray(options[role])) {\n        allowed = unique_array_default(options[role].concat(allowed));\n      }\n      if (role && allowed) {\n        for (var _i13 = 0; _i13 < attrs.length; _i13++) {\n          var attrName = attrs[_i13];\n          if (validate_attr_default(attrName) && !allowed.includes(attrName)) {\n            invalid.push(attrName + '=\"' + virtualNode.attr(attrName) + '\"');\n          }\n        }\n      }\n      if (invalid.length) {\n        this.data(invalid);\n        return false;\n      }\n      return true;\n    }\n    var aria_allowed_attr_evaluate_default = ariaAllowedAttrEvaluate;\n    function ariaAllowedRoledEvaluate(node) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var _options$allowImplici = options.allowImplicit, allowImplicit = _options$allowImplici === void 0 ? true : _options$allowImplici, _options$ignoredTags = options.ignoredTags, ignoredTags = _options$ignoredTags === void 0 ? [] : _options$ignoredTags;\n      var tagName = node.nodeName.toUpperCase();\n      if (ignoredTags.map(function(t) {\n        return t.toUpperCase();\n      }).includes(tagName)) {\n        return true;\n      }\n      var unallowedRoles = get_element_unallowed_roles_default(node, allowImplicit);\n      if (unallowedRoles.length) {\n        this.data(unallowedRoles);\n        if (!is_visible_default(node, true)) {\n          return void 0;\n        }\n        return false;\n      }\n      return true;\n    }\n    var aria_allowed_role_evaluate_default = ariaAllowedRoledEvaluate;\n    function ariaErrormessageEvaluate(node, options) {\n      options = Array.isArray(options) ? options : [];\n      var attr = node.getAttribute('aria-errormessage');\n      var hasAttr = node.hasAttribute('aria-errormessage');\n      var invaid = node.getAttribute('aria-invalid');\n      var hasInvallid = node.hasAttribute('aria-invalid');\n      if (!hasInvallid || invaid === 'false') {\n        return true;\n      }\n      var doc = get_root_node_default2(node);\n      function validateAttrValue2(attr2) {\n        if (attr2.trim() === '') {\n          return standards_default.ariaAttrs['aria-errormessage'].allowEmpty;\n        }\n        var idref = attr2 && doc.getElementById(attr2);\n        if (idref) {\n          return idref.getAttribute('role') === 'alert' || idref.getAttribute('aria-live') === 'assertive' || idref.getAttribute('aria-live') === 'polite' || token_list_default(node.getAttribute('aria-describedby')).indexOf(attr2) > -1;\n        }\n        return;\n      }\n      if (options.indexOf(attr) === -1 && hasAttr) {\n        this.data(token_list_default(attr));\n        return validateAttrValue2(attr);\n      }\n      return true;\n    }\n    var aria_errormessage_evaluate_default = ariaErrormessageEvaluate;\n    function ariaHiddenBodyEvaluate(node, options, virtualNode) {\n      return virtualNode.attr('aria-hidden') !== 'true';\n    }\n    var aria_hidden_body_evaluate_default = ariaHiddenBodyEvaluate;\n    function ariaProhibitedAttrEvaluate(node) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var virtualNode = arguments.length > 2 ? arguments[2] : undefined;\n      var _options$elementsAllo = options.elementsAllowedAriaLabel, elementsAllowedAriaLabel = _options$elementsAllo === void 0 ? [] : _options$elementsAllo;\n      var prohibitedList = listProhibitedAttrs(virtualNode, elementsAllowedAriaLabel);\n      var prohibited = prohibitedList.filter(function(attrName) {\n        if (!virtualNode.attrNames.includes(attrName)) {\n          return false;\n        }\n        return sanitize_default(virtualNode.attr(attrName)) !== '';\n      });\n      if (prohibited.length === 0) {\n        return false;\n      }\n      this.data(prohibited);\n      var hasTextContent = sanitize_default(subtree_text_default(virtualNode)) !== '';\n      return hasTextContent ? void 0 : true;\n    }\n    function listProhibitedAttrs(virtualNode, elementsAllowedAriaLabel) {\n      var role = get_role_default(virtualNode);\n      var roleSpec = standards_default.ariaRoles[role];\n      if (roleSpec) {\n        return roleSpec.prohibitedAttrs || [];\n      }\n      var nodeName2 = virtualNode.props.nodeName;\n      if (elementsAllowedAriaLabel.includes(nodeName2)) {\n        return [];\n      }\n      return [ 'aria-label', 'aria-labelledby' ];\n    }\n    var aria_prohibited_attr_evaluate_default = ariaProhibitedAttrEvaluate;\n    var standards_exports = {};\n    __export(standards_exports, {\n      getAriaRolesByType: function getAriaRolesByType() {\n        return get_aria_roles_by_type_default;\n      },\n      getAriaRolesSupportingNameFromContent: function getAriaRolesSupportingNameFromContent() {\n        return get_aria_roles_supporting_name_from_content_default;\n      },\n      getElementSpec: function getElementSpec() {\n        return get_element_spec_default;\n      },\n      getElementsByContentType: function getElementsByContentType() {\n        return get_elements_by_content_type_default;\n      },\n      getGlobalAriaAttrs: function getGlobalAriaAttrs() {\n        return get_global_aria_attrs_default;\n      },\n      implicitHtmlRoles: function implicitHtmlRoles() {\n        return implicit_html_roles_default;\n      }\n    });\n    function ariaRequiredAttrEvaluate(node) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var virtualNode = arguments.length > 2 ? arguments[2] : undefined;\n      var missing = [];\n      var attrs = virtualNode.attrNames;\n      if (attrs.length) {\n        var role = get_explicit_role_default(virtualNode);\n        var required = required_attr_default(role);\n        var elmSpec = get_element_spec_default(virtualNode);\n        if (Array.isArray(options[role])) {\n          required = unique_array_default(options[role], required);\n        }\n        if (role && required) {\n          for (var _i14 = 0, l = required.length; _i14 < l; _i14++) {\n            var attr = required[_i14];\n            if (!virtualNode.attr(attr) && !(elmSpec.implicitAttrs && typeof elmSpec.implicitAttrs[attr] !== 'undefined')) {\n              missing.push(attr);\n            }\n          }\n        }\n      }\n      if (missing.length) {\n        this.data(missing);\n        return false;\n      }\n      return true;\n    }\n    var aria_required_attr_evaluate_default = ariaRequiredAttrEvaluate;\n    function getOwnedRoles(virtualNode, required) {\n      var ownedRoles = [];\n      var ownedElements = get_owned_virtual_default(virtualNode);\n      var _loop4 = function _loop4(_i15) {\n        var ownedElement = ownedElements[_i15];\n        var role = get_role_default(ownedElement, {\n          noPresentational: true\n        });\n        if (!role || [ 'group', 'rowgroup' ].includes(role) && required.some(function(requiredRole) {\n          return requiredRole === role;\n        })) {\n          ownedElements.push.apply(ownedElements, _toConsumableArray(ownedElement.children));\n        } else if (role) {\n          ownedRoles.push(role);\n        }\n      };\n      for (var _i15 = 0; _i15 < ownedElements.length; _i15++) {\n        _loop4(_i15);\n      }\n      return ownedRoles;\n    }\n    function missingRequiredChildren(virtualNode, role, required, ownedRoles) {\n      var isCombobox = role === 'combobox';\n      if (isCombobox) {\n        var textTypeInputs = [ 'text', 'search', 'email', 'url', 'tel' ];\n        if (virtualNode.props.nodeName === 'input' && textTypeInputs.includes(virtualNode.props.type) || ownedRoles.includes('searchbox')) {\n          required = required.filter(function(requiredRole) {\n            return requiredRole !== 'textbox';\n          });\n        }\n        var expandedChildRoles = [ 'listbox', 'tree', 'grid', 'dialog' ];\n        var expandedValue = virtualNode.attr('aria-expanded');\n        var expanded = expandedValue && expandedValue.toLowerCase() !== 'false';\n        var popupRole = (virtualNode.attr('aria-haspopup') || 'listbox').toLowerCase();\n        required = required.filter(function(requiredRole) {\n          return !expandedChildRoles.includes(requiredRole) || expanded && requiredRole === popupRole;\n        });\n      }\n      for (var _i16 = 0; _i16 < ownedRoles.length; _i16++) {\n        var ownedRole = ownedRoles[_i16];\n        if (required.includes(ownedRole)) {\n          required = required.filter(function(requiredRole) {\n            return requiredRole !== ownedRole;\n          });\n          if (!isCombobox) {\n            return null;\n          }\n        }\n      }\n      if (required.length) {\n        return required;\n      }\n      return null;\n    }\n    function ariaRequiredChildrenEvaluate(node, options, virtualNode) {\n      var reviewEmpty = options && Array.isArray(options.reviewEmpty) ? options.reviewEmpty : [];\n      var role = get_explicit_role_default(virtualNode, {\n        dpub: true\n      });\n      var required = required_owned_default(role);\n      if (required === null) {\n        return true;\n      }\n      var ownedRoles = getOwnedRoles(virtualNode, required);\n      var missing = missingRequiredChildren(virtualNode, role, required, ownedRoles);\n      if (!missing) {\n        return true;\n      }\n      this.data(missing);\n      if (reviewEmpty.includes(role) && !has_content_virtual_default(virtualNode, false, true) && !ownedRoles.length && (!virtualNode.hasAttr('aria-owns') || !idrefs_default(node, 'aria-owns').length)) {\n        return void 0;\n      }\n      return false;\n    }\n    var aria_required_children_evaluate_default = ariaRequiredChildrenEvaluate;\n    function getMissingContext(virtualNode, ownGroupRoles, reqContext, includeElement) {\n      var explicitRole2 = get_explicit_role_default(virtualNode);\n      if (!reqContext) {\n        reqContext = required_context_default(explicitRole2);\n      }\n      if (!reqContext) {\n        return null;\n      }\n      var vNode = includeElement ? virtualNode : virtualNode.parent;\n      while (vNode) {\n        var parentRole = get_role_default(vNode);\n        if (reqContext.includes('group') && parentRole === 'group') {\n          if (ownGroupRoles.includes(explicitRole2)) {\n            reqContext.push(explicitRole2);\n          }\n          vNode = vNode.parent;\n          continue;\n        }\n        if (reqContext.includes(parentRole)) {\n          return null;\n        } else if (parentRole && ![ 'presentation', 'none' ].includes(parentRole)) {\n          return reqContext;\n        }\n        vNode = vNode.parent;\n      }\n      return reqContext;\n    }\n    function getAriaOwners(element) {\n      var owners = [], o = null;\n      while (element) {\n        if (element.getAttribute('id')) {\n          var id = escape_selector_default(element.getAttribute('id'));\n          var doc = get_root_node_default2(element);\n          o = doc.querySelector('[aria-owns~='.concat(id, ']'));\n          if (o) {\n            owners.push(o);\n          }\n        }\n        element = element.parentElement;\n      }\n      return owners.length ? owners : null;\n    }\n    function ariaRequiredParentEvaluate(node, options, virtualNode) {\n      var ownGroupRoles = options && Array.isArray(options.ownGroupRoles) ? options.ownGroupRoles : [];\n      var missingParents = getMissingContext(virtualNode, ownGroupRoles);\n      if (!missingParents) {\n        return true;\n      }\n      var owners = getAriaOwners(node);\n      if (owners) {\n        for (var _i17 = 0, l = owners.length; _i17 < l; _i17++) {\n          missingParents = getMissingContext(get_node_from_tree_default(owners[_i17]), ownGroupRoles, missingParents, true);\n          if (!missingParents) {\n            return true;\n          }\n        }\n      }\n      this.data(missingParents);\n      return false;\n    }\n    var aria_required_parent_evaluate_default = ariaRequiredParentEvaluate;\n    function ariaRoledescriptionEvaluate(node) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var role = get_role_default(node);\n      var supportedRoles = options.supportedRoles || [];\n      if (supportedRoles.includes(role)) {\n        return true;\n      }\n      if (role && role !== 'presentation' && role !== 'none') {\n        return void 0;\n      }\n      return false;\n    }\n    var aria_roledescription_evaluate_default = ariaRoledescriptionEvaluate;\n    function ariaUnsupportedAttrEvaluate(node, options, virtualNode) {\n      var unsupportedAttrs = virtualNode.attrNames.filter(function(name) {\n        var attribute = standards_default.ariaAttrs[name];\n        if (!validate_attr_default(name)) {\n          return false;\n        }\n        var unsupported4 = attribute.unsupported;\n        if (_typeof(unsupported4) !== 'object') {\n          return !!unsupported4;\n        }\n        return !matches_default3(node, unsupported4.exceptions);\n      });\n      if (unsupportedAttrs.length) {\n        this.data(unsupportedAttrs);\n        return true;\n      }\n      return false;\n    }\n    var aria_unsupported_attr_evaluate_default = ariaUnsupportedAttrEvaluate;\n    function ariaValidAttrEvaluate(node, options) {\n      options = Array.isArray(options.value) ? options.value : [];\n      var invalid = [], aria43 = /^aria-/;\n      var attr, attrs = get_node_attributes_default(node);\n      for (var i = 0, l = attrs.length; i < l; i++) {\n        attr = attrs[i].name;\n        if (options.indexOf(attr) === -1 && aria43.test(attr) && !validate_attr_default(attr)) {\n          invalid.push(attr);\n        }\n      }\n      if (invalid.length) {\n        this.data(invalid);\n        return false;\n      }\n      return true;\n    }\n    var aria_valid_attr_evaluate_default = ariaValidAttrEvaluate;\n    function ariaValidAttrValueEvaluate(node, options) {\n      options = Array.isArray(options.value) ? options.value : [];\n      var needsReview = '';\n      var messageKey = '';\n      var invalid = [];\n      var aria43 = /^aria-/;\n      var attrs = get_node_attributes_default(node);\n      var skipAttrs = [ 'aria-errormessage' ];\n      var preChecks = {\n        'aria-controls': function ariaControls() {\n          return node.getAttribute('aria-expanded') !== 'false' && node.getAttribute('aria-selected') !== 'false';\n        },\n        'aria-current': function ariaCurrent() {\n          if (!validate_attr_value_default(node, 'aria-current')) {\n            needsReview = 'aria-current=\"'.concat(node.getAttribute('aria-current'), '\"');\n            messageKey = 'ariaCurrent';\n          }\n          return;\n        },\n        'aria-owns': function ariaOwns() {\n          return node.getAttribute('aria-expanded') !== 'false';\n        },\n        'aria-describedby': function ariaDescribedby() {\n          if (!validate_attr_value_default(node, 'aria-describedby')) {\n            needsReview = 'aria-describedby=\"'.concat(node.getAttribute('aria-describedby'), '\"');\n            messageKey = 'noId';\n          }\n          return;\n        },\n        'aria-labelledby': function ariaLabelledby() {\n          if (!validate_attr_value_default(node, 'aria-labelledby')) {\n            needsReview = 'aria-labelledby=\"'.concat(node.getAttribute('aria-labelledby'), '\"');\n            messageKey = 'noId';\n          }\n        }\n      };\n      for (var _i18 = 0, l = attrs.length; _i18 < l; _i18++) {\n        var attr = attrs[_i18];\n        var attrName = attr.name;\n        if (!skipAttrs.includes(attrName) && options.indexOf(attrName) === -1 && aria43.test(attrName) && (preChecks[attrName] ? preChecks[attrName]() : true) && !validate_attr_value_default(node, attrName)) {\n          invalid.push(''.concat(attrName, '=\"').concat(attr.nodeValue, '\"'));\n        }\n      }\n      if (needsReview) {\n        this.data({\n          messageKey: messageKey,\n          needsReview: needsReview\n        });\n        return void 0;\n      }\n      if (invalid.length) {\n        this.data(invalid);\n        return false;\n      }\n      return true;\n    }\n    var aria_valid_attr_value_evaluate_default = ariaValidAttrValueEvaluate;\n    function fallbackroleEvaluate(node, options, virtualNode) {\n      return token_list_default(virtualNode.attr('role')).length > 1;\n    }\n    var fallbackrole_evaluate_default = fallbackroleEvaluate;\n    function hasGlobalAriaAttributeEvaluate(node, options, virtualNode) {\n      var globalAttrs = get_global_aria_attrs_default().filter(function(attr) {\n        return virtualNode.hasAttr(attr);\n      });\n      this.data(globalAttrs);\n      return globalAttrs.length > 0;\n    }\n    var has_global_aria_attribute_evaluate_default = hasGlobalAriaAttributeEvaluate;\n    function hasWidgetRoleEvaluate(node) {\n      var role = node.getAttribute('role');\n      if (role === null) {\n        return false;\n      }\n      var roleType = get_role_type_default(role);\n      return roleType === 'widget' || roleType === 'composite';\n    }\n    var has_widget_role_evaluate_default = hasWidgetRoleEvaluate;\n    function invalidroleEvaluate(node, options, virtualNode) {\n      var allRoles = token_list_default(virtualNode.attr('role'));\n      var allInvalid = allRoles.every(function(role) {\n        return !is_valid_role_default(role, {\n          allowAbstract: true\n        });\n      });\n      if (allInvalid) {\n        this.data(allRoles);\n        return true;\n      }\n      return false;\n    }\n    var invalidrole_evaluate_default = invalidroleEvaluate;\n    function isElementFocusableEvaluate(node, options, virtualNode) {\n      return is_focusable_default(virtualNode);\n    }\n    var is_element_focusable_evaluate_default = isElementFocusableEvaluate;\n    function noImplicitExplicitLabelEvaluate(node, options, virtualNode) {\n      var role = get_role_default(virtualNode, {\n        noImplicit: true\n      });\n      this.data(role);\n      var label5;\n      var accText;\n      try {\n        label5 = sanitize_default(label_text_default(virtualNode)).toLowerCase();\n        accText = sanitize_default(accessible_text_virtual_default(virtualNode)).toLowerCase();\n      } catch (e) {\n        return void 0;\n      }\n      if (!accText && !label5) {\n        return false;\n      }\n      if (!accText && label5) {\n        return void 0;\n      }\n      if (!accText.includes(label5)) {\n        return void 0;\n      }\n      return false;\n    }\n    var no_implicit_explicit_label_evaluate_default = noImplicitExplicitLabelEvaluate;\n    function unsupportedroleEvaluate(node, options, virtualNode) {\n      return is_unsupported_role_default(get_role_default(virtualNode));\n    }\n    var unsupportedrole_evaluate_default = unsupportedroleEvaluate;\n    var VALID_TAG_NAMES_FOR_SCROLLABLE_REGIONS = {\n      ARTICLE: true,\n      ASIDE: true,\n      NAV: true,\n      SECTION: true\n    };\n    var VALID_ROLES_FOR_SCROLLABLE_REGIONS = {\n      application: true,\n      banner: false,\n      complementary: true,\n      contentinfo: true,\n      form: true,\n      main: true,\n      navigation: true,\n      region: true,\n      search: false\n    };\n    function validScrollableTagName(node) {\n      var nodeName2 = node.nodeName.toUpperCase();\n      return VALID_TAG_NAMES_FOR_SCROLLABLE_REGIONS[nodeName2] || false;\n    }\n    function validScrollableRole(node, options) {\n      var role = get_explicit_role_default(node);\n      if (!role) {\n        return false;\n      }\n      return VALID_ROLES_FOR_SCROLLABLE_REGIONS[role] || options.roles.includes(role) || false;\n    }\n    function validScrollableSemanticsEvaluate(node, options) {\n      return validScrollableRole(node, options) || validScrollableTagName(node);\n    }\n    var valid_scrollable_semantics_evaluate_default = validScrollableSemanticsEvaluate;\n    var table_exports = {};\n    __export(table_exports, {\n      getAllCells: function getAllCells() {\n        return get_all_cells_default;\n      },\n      getCellPosition: function getCellPosition() {\n        return get_cell_position_default;\n      },\n      getHeaders: function getHeaders() {\n        return get_headers_default;\n      },\n      getScope: function getScope() {\n        return get_scope_default;\n      },\n      isColumnHeader: function isColumnHeader() {\n        return is_column_header_default;\n      },\n      isDataCell: function isDataCell() {\n        return is_data_cell_default;\n      },\n      isDataTable: function isDataTable() {\n        return is_data_table_default;\n      },\n      isHeader: function isHeader() {\n        return is_header_default;\n      },\n      isRowHeader: function isRowHeader() {\n        return is_row_header_default;\n      },\n      toArray: function toArray() {\n        return to_grid_default;\n      },\n      toGrid: function toGrid() {\n        return to_grid_default;\n      },\n      traverse: function traverse() {\n        return traverse_default;\n      }\n    });\n    function getAllCells(tableElm) {\n      var rowIndex, cellIndex, rowLength, cellLength;\n      var cells = [];\n      for (rowIndex = 0, rowLength = tableElm.rows.length; rowIndex < rowLength; rowIndex++) {\n        for (cellIndex = 0, cellLength = tableElm.rows[rowIndex].cells.length; cellIndex < cellLength; cellIndex++) {\n          cells.push(tableElm.rows[rowIndex].cells[cellIndex]);\n        }\n      }\n      return cells;\n    }\n    var get_all_cells_default = getAllCells;\n    function traverseForHeaders(headerType, position, tableGrid) {\n      var property = headerType === 'row' ? '_rowHeaders' : '_colHeaders';\n      var predicate = headerType === 'row' ? is_row_header_default : is_column_header_default;\n      var startCell = tableGrid[position.y][position.x];\n      var colspan = startCell.colSpan - 1;\n      var rowspanAttr = startCell.getAttribute('rowspan');\n      var rowspanValue = parseInt(rowspanAttr) === 0 || startCell.rowspan === 0 ? tableGrid.length : startCell.rowSpan;\n      var rowspan = rowspanValue - 1;\n      var rowStart = position.y + rowspan;\n      var colStart = position.x + colspan;\n      var rowEnd = headerType === 'row' ? position.y : 0;\n      var colEnd = headerType === 'row' ? 0 : position.x;\n      var headers;\n      var cells = [];\n      for (var row = rowStart; row >= rowEnd && !headers; row--) {\n        for (var col = colStart; col >= colEnd; col--) {\n          var cell = tableGrid[row] ? tableGrid[row][col] : void 0;\n          if (!cell) {\n            continue;\n          }\n          var vNode = axe.utils.getNodeFromTree(cell);\n          if (vNode[property]) {\n            headers = vNode[property];\n            break;\n          }\n          cells.push(cell);\n        }\n      }\n      headers = (headers || []).concat(cells.filter(predicate));\n      cells.forEach(function(tableCell) {\n        var vNode = axe.utils.getNodeFromTree(tableCell);\n        vNode[property] = headers;\n      });\n      return headers;\n    }\n    function getHeaders(cell, tableGrid) {\n      if (cell.getAttribute('headers')) {\n        var headers = idrefs_default(cell, 'headers');\n        if (headers.filter(function(header) {\n          return header;\n        }).length) {\n          return headers;\n        }\n      }\n      if (!tableGrid) {\n        tableGrid = to_grid_default(find_up_default(cell, 'table'));\n      }\n      var position = get_cell_position_default(cell, tableGrid);\n      var rowHeaders = traverseForHeaders('row', position, tableGrid);\n      var colHeaders = traverseForHeaders('col', position, tableGrid);\n      return [].concat(rowHeaders, colHeaders).reverse();\n    }\n    var get_headers_default = getHeaders;\n    function isDataCell(cell) {\n      if (!cell.children.length && !cell.textContent.trim()) {\n        return false;\n      }\n      var role = cell.getAttribute('role');\n      if (is_valid_role_default(role)) {\n        return [ 'cell', 'gridcell' ].includes(role);\n      } else {\n        return cell.nodeName.toUpperCase() === 'TD';\n      }\n    }\n    var is_data_cell_default = isDataCell;\n    function isDataTable(node) {\n      var role = (node.getAttribute('role') || '').toLowerCase();\n      if ((role === 'presentation' || role === 'none') && !is_focusable_default(node)) {\n        return false;\n      }\n      if (node.getAttribute('contenteditable') === 'true' || find_up_default(node, '[contenteditable=\"true\"]')) {\n        return true;\n      }\n      if (role === 'grid' || role === 'treegrid' || role === 'table') {\n        return true;\n      }\n      if (get_role_type_default(role) === 'landmark') {\n        return true;\n      }\n      if (node.getAttribute('datatable') === '0') {\n        return false;\n      }\n      if (node.getAttribute('summary')) {\n        return true;\n      }\n      if (node.tHead || node.tFoot || node.caption) {\n        return true;\n      }\n      for (var childIndex = 0, childLength = node.children.length; childIndex < childLength; childIndex++) {\n        if (node.children[childIndex].nodeName.toUpperCase() === 'COLGROUP') {\n          return true;\n        }\n      }\n      var cells = 0;\n      var rowLength = node.rows.length;\n      var row, cell;\n      var hasBorder = false;\n      for (var rowIndex = 0; rowIndex < rowLength; rowIndex++) {\n        row = node.rows[rowIndex];\n        for (var cellIndex = 0, cellLength = row.cells.length; cellIndex < cellLength; cellIndex++) {\n          cell = row.cells[cellIndex];\n          if (cell.nodeName.toUpperCase() === 'TH') {\n            return true;\n          }\n          if (!hasBorder && (cell.offsetWidth !== cell.clientWidth || cell.offsetHeight !== cell.clientHeight)) {\n            hasBorder = true;\n          }\n          if (cell.getAttribute('scope') || cell.getAttribute('headers') || cell.getAttribute('abbr')) {\n            return true;\n          }\n          if ([ 'columnheader', 'rowheader' ].includes((cell.getAttribute('role') || '').toLowerCase())) {\n            return true;\n          }\n          if (cell.children.length === 1 && cell.children[0].nodeName.toUpperCase() === 'ABBR') {\n            return true;\n          }\n          cells++;\n        }\n      }\n      if (node.getElementsByTagName('table').length) {\n        return false;\n      }\n      if (rowLength < 2) {\n        return false;\n      }\n      var sampleRow = node.rows[Math.ceil(rowLength / 2)];\n      if (sampleRow.cells.length === 1 && sampleRow.cells[0].colSpan === 1) {\n        return false;\n      }\n      if (sampleRow.cells.length >= 5) {\n        return true;\n      }\n      if (hasBorder) {\n        return true;\n      }\n      var bgColor, bgImage;\n      for (rowIndex = 0; rowIndex < rowLength; rowIndex++) {\n        row = node.rows[rowIndex];\n        if (bgColor && bgColor !== window.getComputedStyle(row).getPropertyValue('background-color')) {\n          return true;\n        } else {\n          bgColor = window.getComputedStyle(row).getPropertyValue('background-color');\n        }\n        if (bgImage && bgImage !== window.getComputedStyle(row).getPropertyValue('background-image')) {\n          return true;\n        } else {\n          bgImage = window.getComputedStyle(row).getPropertyValue('background-image');\n        }\n      }\n      if (rowLength >= 20) {\n        return true;\n      }\n      if (get_element_coordinates_default(node).width > get_viewport_size_default(window).width * .95) {\n        return false;\n      }\n      if (cells < 10) {\n        return false;\n      }\n      if (node.querySelector('object, embed, iframe, applet')) {\n        return false;\n      }\n      return true;\n    }\n    var is_data_table_default = isDataTable;\n    function isHeader(cell) {\n      if (is_column_header_default(cell) || is_row_header_default(cell)) {\n        return true;\n      }\n      if (cell.getAttribute('id')) {\n        var id = escape_selector_default(cell.getAttribute('id'));\n        return !!document.querySelector('[headers~=\"'.concat(id, '\"]'));\n      }\n      return false;\n    }\n    var is_header_default = isHeader;\n    function traverseTable(dir, position, tableGrid, callback) {\n      var result;\n      var cell = tableGrid[position.y] ? tableGrid[position.y][position.x] : void 0;\n      if (!cell) {\n        return [];\n      }\n      if (typeof callback === 'function') {\n        result = callback(cell, position, tableGrid);\n        if (result === true) {\n          return [ cell ];\n        }\n      }\n      result = traverseTable(dir, {\n        x: position.x + dir.x,\n        y: position.y + dir.y\n      }, tableGrid, callback);\n      result.unshift(cell);\n      return result;\n    }\n    function traverse(dir, startPos, tableGrid, callback) {\n      if (Array.isArray(startPos)) {\n        callback = tableGrid;\n        tableGrid = startPos;\n        startPos = {\n          x: 0,\n          y: 0\n        };\n      }\n      if (typeof dir === 'string') {\n        switch (dir) {\n         case 'left':\n          dir = {\n            x: -1,\n            y: 0\n          };\n          break;\n\n         case 'up':\n          dir = {\n            x: 0,\n            y: -1\n          };\n          break;\n\n         case 'right':\n          dir = {\n            x: 1,\n            y: 0\n          };\n          break;\n\n         case 'down':\n          dir = {\n            x: 0,\n            y: 1\n          };\n          break;\n        }\n      }\n      return traverseTable(dir, {\n        x: startPos.x + dir.x,\n        y: startPos.y + dir.y\n      }, tableGrid, callback);\n    }\n    var traverse_default = traverse;\n    function captionFakedEvaluate(node) {\n      var table5 = to_grid_default(node);\n      var firstRow = table5[0];\n      if (table5.length <= 1 || firstRow.length <= 1 || node.rows.length <= 1) {\n        return true;\n      }\n      return firstRow.reduce(function(out, curr, i) {\n        return out || curr !== firstRow[i + 1] && firstRow[i + 1] !== void 0;\n      }, false);\n    }\n    var caption_faked_evaluate_default = captionFakedEvaluate;\n    function html5ScopeEvaluate(node) {\n      if (!is_html5_default(document)) {\n        return true;\n      }\n      return node.nodeName.toUpperCase() === 'TH';\n    }\n    var html5_scope_evaluate_default = html5ScopeEvaluate;\n    function sameCaptionSummaryEvaluate(node) {\n      return !!(node.summary && node.caption) && node.summary.toLowerCase() === accessible_text_default(node.caption).toLowerCase();\n    }\n    var same_caption_summary_evaluate_default = sameCaptionSummaryEvaluate;\n    function scopeValueEvaluate(node, options) {\n      var value = node.getAttribute('scope').toLowerCase();\n      return options.values.indexOf(value) !== -1;\n    }\n    var scope_value_evaluate_default = scopeValueEvaluate;\n    function tdHasHeaderEvaluate(node) {\n      var badCells = [];\n      var cells = get_all_cells_default(node);\n      var tableGrid = to_grid_default(node);\n      cells.forEach(function(cell) {\n        if (has_content_default(cell) && is_data_cell_default(cell) && !label_default2(cell)) {\n          var hasHeaders = get_headers_default(cell, tableGrid).some(function(header) {\n            return header !== null && !!has_content_default(header);\n          });\n          if (!hasHeaders) {\n            badCells.push(cell);\n          }\n        }\n      });\n      if (badCells.length) {\n        this.relatedNodes(badCells);\n        return false;\n      }\n      return true;\n    }\n    var td_has_header_evaluate_default = tdHasHeaderEvaluate;\n    function tdHeadersAttrEvaluate(node) {\n      var cells = [];\n      var reviewCells = [];\n      var badCells = [];\n      for (var rowIndex = 0; rowIndex < node.rows.length; rowIndex++) {\n        var row = node.rows[rowIndex];\n        for (var cellIndex = 0; cellIndex < row.cells.length; cellIndex++) {\n          cells.push(row.cells[cellIndex]);\n        }\n      }\n      var ids = cells.reduce(function(ids2, cell) {\n        if (cell.getAttribute('id')) {\n          ids2.push(cell.getAttribute('id'));\n        }\n        return ids2;\n      }, []);\n      cells.forEach(function(cell) {\n        var isSelf = false;\n        var notOfTable = false;\n        if (!cell.hasAttribute('headers')) {\n          return;\n        }\n        var headersAttr = cell.getAttribute('headers').trim();\n        if (!headersAttr) {\n          return reviewCells.push(cell);\n        }\n        var headers = token_list_default(headersAttr);\n        if (headers.length !== 0) {\n          if (cell.getAttribute('id')) {\n            isSelf = headers.indexOf(cell.getAttribute('id').trim()) !== -1;\n          }\n          notOfTable = headers.some(function(header) {\n            return !ids.includes(header);\n          });\n          if (isSelf || notOfTable) {\n            badCells.push(cell);\n          }\n        }\n      });\n      if (badCells.length > 0) {\n        this.relatedNodes(badCells);\n        return false;\n      }\n      if (reviewCells.length) {\n        this.relatedNodes(reviewCells);\n        return void 0;\n      }\n      return true;\n    }\n    var td_headers_attr_evaluate_default = tdHeadersAttrEvaluate;\n    function thHasDataCellsEvaluate(node) {\n      var cells = get_all_cells_default(node);\n      var checkResult = this;\n      var reffedHeaders = [];\n      cells.forEach(function(cell) {\n        var headers2 = cell.getAttribute('headers');\n        if (headers2) {\n          reffedHeaders = reffedHeaders.concat(headers2.split(/\\s+/));\n        }\n        var ariaLabel = cell.getAttribute('aria-labelledby');\n        if (ariaLabel) {\n          reffedHeaders = reffedHeaders.concat(ariaLabel.split(/\\s+/));\n        }\n      });\n      var headers = cells.filter(function(cell) {\n        if (sanitize_default(cell.textContent) === '') {\n          return false;\n        }\n        return cell.nodeName.toUpperCase() === 'TH' || [ 'rowheader', 'columnheader' ].indexOf(cell.getAttribute('role')) !== -1;\n      });\n      var tableGrid = to_grid_default(node);\n      var out = true;\n      headers.forEach(function(header) {\n        if (header.getAttribute('id') && reffedHeaders.includes(header.getAttribute('id'))) {\n          return;\n        }\n        var pos = get_cell_position_default(header, tableGrid);\n        var hasCell = false;\n        if (is_column_header_default(header)) {\n          hasCell = traverse_default('down', pos, tableGrid).find(function(cell) {\n            return !is_column_header_default(cell) && get_headers_default(cell, tableGrid).includes(header);\n          });\n        }\n        if (!hasCell && is_row_header_default(header)) {\n          hasCell = traverse_default('right', pos, tableGrid).find(function(cell) {\n            return !is_row_header_default(cell) && get_headers_default(cell, tableGrid).includes(header);\n          });\n        }\n        if (!hasCell) {\n          checkResult.relatedNodes(header);\n        }\n        out = out && hasCell;\n      });\n      return out ? true : void 0;\n    }\n    var th_has_data_cells_evaluate_default = thHasDataCellsEvaluate;\n    function hiddenContentEvaluate(node, options, virtualNode) {\n      var whitelist = [ 'SCRIPT', 'HEAD', 'TITLE', 'NOSCRIPT', 'STYLE', 'TEMPLATE' ];\n      if (!whitelist.includes(node.nodeName.toUpperCase()) && has_content_virtual_default(virtualNode)) {\n        var styles = window.getComputedStyle(node);\n        if (styles.getPropertyValue('display') === 'none') {\n          return void 0;\n        } else if (styles.getPropertyValue('visibility') === 'hidden') {\n          var parent = get_composed_parent_default(node);\n          var parentStyle = parent && window.getComputedStyle(parent);\n          if (!parentStyle || parentStyle.getPropertyValue('visibility') !== 'hidden') {\n            return void 0;\n          }\n        }\n      }\n      return true;\n    }\n    var hidden_content_evaluate_default = hiddenContentEvaluate;\n    var color_exports = {};\n    __export(color_exports, {\n      Color: function Color() {\n        return color_default;\n      },\n      centerPointOfRect: function centerPointOfRect() {\n        return center_point_of_rect_default;\n      },\n      elementHasImage: function elementHasImage() {\n        return element_has_image_default;\n      },\n      elementIsDistinct: function elementIsDistinct() {\n        return element_is_distinct_default;\n      },\n      filteredRectStack: function filteredRectStack() {\n        return filtered_rect_stack_default;\n      },\n      flattenColors: function flattenColors() {\n        return flatten_colors_default;\n      },\n      getBackgroundColor: function getBackgroundColor() {\n        return get_background_color_default;\n      },\n      getBackgroundStack: function getBackgroundStack() {\n        return get_background_stack_default;\n      },\n      getContrast: function getContrast() {\n        return get_contrast_default;\n      },\n      getForegroundColor: function getForegroundColor() {\n        return get_foreground_color_default;\n      },\n      getOwnBackgroundColor: function getOwnBackgroundColor() {\n        return get_own_background_color_default;\n      },\n      getRectStack: function getRectStack() {\n        return get_rect_stack_default;\n      },\n      getTextShadowColors: function getTextShadowColors() {\n        return get_text_shadow_colors_default;\n      },\n      hasValidContrastRatio: function hasValidContrastRatio() {\n        return has_valid_contrast_ratio_default;\n      },\n      incompleteData: function incompleteData() {\n        return incomplete_data_default;\n      }\n    });\n    function centerPointOfRect(rect) {\n      if (rect.left > window.innerWidth) {\n        return void 0;\n      }\n      if (rect.top > window.innerHeight) {\n        return void 0;\n      }\n      var x = Math.min(Math.ceil(rect.left + rect.width / 2), window.innerWidth - 1);\n      var y = Math.min(Math.ceil(rect.top + rect.height / 2), window.innerHeight - 1);\n      return {\n        x: x,\n        y: y\n      };\n    }\n    var center_point_of_rect_default = centerPointOfRect;\n    function _getFonts(style) {\n      return style.getPropertyValue('font-family').split(/[,;]/g).map(function(font) {\n        return font.trim().toLowerCase();\n      });\n    }\n    function elementIsDistinct(node, ancestorNode) {\n      var nodeStyle = window.getComputedStyle(node);\n      if (nodeStyle.getPropertyValue('background-image') !== 'none') {\n        return true;\n      }\n      var hasBorder = [ 'border-bottom', 'border-top', 'outline' ].reduce(function(result, edge) {\n        var borderClr = new color_default();\n        borderClr.parseString(nodeStyle.getPropertyValue(edge + '-color'));\n        return result || nodeStyle.getPropertyValue(edge + '-style') !== 'none' && parseFloat(nodeStyle.getPropertyValue(edge + '-width')) > 0 && borderClr.alpha !== 0;\n      }, false);\n      if (hasBorder) {\n        return true;\n      }\n      var parentStyle = window.getComputedStyle(ancestorNode);\n      if (_getFonts(nodeStyle)[0] !== _getFonts(parentStyle)[0]) {\n        return true;\n      }\n      var hasStyle = [ 'text-decoration-line', 'text-decoration-style', 'font-weight', 'font-style', 'font-size' ].reduce(function(result, cssProp) {\n        return result || nodeStyle.getPropertyValue(cssProp) !== parentStyle.getPropertyValue(cssProp);\n      }, false);\n      var tDec = nodeStyle.getPropertyValue('text-decoration');\n      if (tDec.split(' ').length < 3) {\n        hasStyle = hasStyle || tDec !== parentStyle.getPropertyValue('text-decoration');\n      }\n      return hasStyle;\n    }\n    var element_is_distinct_default = elementIsDistinct;\n    function getRectStack2(elm) {\n      var boundingStack = get_element_stack_default(elm);\n      var filteredArr = get_text_element_stack_default(elm);\n      if (!filteredArr || filteredArr.length <= 1) {\n        return [ boundingStack ];\n      }\n      if (filteredArr.some(function(stack) {\n        return stack === void 0;\n      })) {\n        return null;\n      }\n      filteredArr.splice(0, 0, boundingStack);\n      return filteredArr;\n    }\n    var get_rect_stack_default = getRectStack2;\n    function filteredRectStack(elm) {\n      var rectStack = get_rect_stack_default(elm);\n      if (rectStack && rectStack.length === 1) {\n        return rectStack[0];\n      }\n      if (rectStack && rectStack.length > 1) {\n        var boundingStack = rectStack.shift();\n        var isSame;\n        rectStack.forEach(function(rectList, index) {\n          if (index === 0) {\n            return;\n          }\n          var rectA = rectStack[index - 1], rectB = rectStack[index];\n          isSame = rectA.every(function(element, elementIndex) {\n            return element === rectB[elementIndex];\n          }) || boundingStack.includes(elm);\n        });\n        if (!isSame) {\n          incomplete_data_default.set('bgColor', 'elmPartiallyObscuring');\n          return null;\n        }\n        return rectStack[0];\n      }\n      incomplete_data_default.set('bgColor', 'outsideViewport');\n      return null;\n    }\n    var filtered_rect_stack_default = filteredRectStack;\n    function flattenColors(fgColor, bgColor) {\n      var alpha = fgColor.alpha;\n      var r = (1 - alpha) * bgColor.red + alpha * fgColor.red;\n      var g = (1 - alpha) * bgColor.green + alpha * fgColor.green;\n      var b = (1 - alpha) * bgColor.blue + alpha * fgColor.blue;\n      var a = fgColor.alpha + bgColor.alpha * (1 - fgColor.alpha);\n      return new color_default(r, g, b, a);\n    }\n    var flatten_colors_default = flattenColors;\n    function contentOverlapping(targetElement, bgNode) {\n      var targetRect = targetElement.getClientRects()[0];\n      var obscuringElements = shadow_elements_from_point_default(targetRect.left, targetRect.top);\n      if (obscuringElements) {\n        for (var i = 0; i < obscuringElements.length; i++) {\n          if (obscuringElements[i] !== targetElement && obscuringElements[i] === bgNode) {\n            return true;\n          }\n        }\n      }\n      return false;\n    }\n    function calculateObscuringElement(elmIndex, elmStack, originalElm) {\n      if (elmIndex > 0) {\n        for (var i = elmIndex - 1; i >= 0; i--) {\n          var bgElm = elmStack[i];\n          if (contentOverlapping(originalElm, bgElm)) {\n            return true;\n          } else {\n            elmStack.splice(i, 1);\n          }\n        }\n      }\n      return false;\n    }\n    function sortPageBackground(elmStack) {\n      var bodyIndex = elmStack.indexOf(document.body);\n      var bgNodes = elmStack;\n      var sortBodyElement = bodyIndex > 1 || bodyIndex === -1;\n      if (sortBodyElement && !element_has_image_default(document.documentElement) && get_own_background_color_default(window.getComputedStyle(document.documentElement)).alpha === 0) {\n        if (bodyIndex > 1) {\n          bgNodes.splice(bodyIndex, 1);\n        }\n        bgNodes.splice(elmStack.indexOf(document.documentElement), 1);\n        bgNodes.push(document.body);\n      }\n      return bgNodes;\n    }\n    function getBackgroundStack(elm) {\n      var elmStack = filtered_rect_stack_default(elm);\n      if (elmStack === null) {\n        return null;\n      }\n      elmStack = reduce_to_elements_below_floating_default(elmStack, elm);\n      elmStack = sortPageBackground(elmStack);\n      var elmIndex = elmStack.indexOf(elm);\n      if (calculateObscuringElement(elmIndex, elmStack, elm)) {\n        incomplete_data_default.set('bgColor', 'bgOverlap');\n        return null;\n      }\n      return elmIndex !== -1 ? elmStack : null;\n    }\n    var get_background_stack_default = getBackgroundStack;\n    function getTextShadowColors(node) {\n      var _ref43 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, minRatio = _ref43.minRatio, maxRatio = _ref43.maxRatio;\n      var style = window.getComputedStyle(node);\n      var textShadow = style.getPropertyValue('text-shadow');\n      if (textShadow === 'none') {\n        return [];\n      }\n      var fontSizeStr = style.getPropertyValue('font-size');\n      var fontSize = parseInt(fontSizeStr);\n      assert_default(isNaN(fontSize) === false, 'Unable to determine font-size value '.concat(fontSizeStr));\n      var shadowColors = [];\n      var shadows = parseTextShadows(textShadow);\n      shadows.forEach(function(_ref44) {\n        var colorStr = _ref44.colorStr, pixels = _ref44.pixels;\n        colorStr = colorStr || style.getPropertyValue('color');\n        var _pixels = _slicedToArray(pixels, 3), offsetY = _pixels[0], offsetX = _pixels[1], _pixels$ = _pixels[2], blurRadius = _pixels$ === void 0 ? 0 : _pixels$;\n        if ((!minRatio || blurRadius >= fontSize * minRatio) && (!maxRatio || blurRadius < fontSize * maxRatio)) {\n          var color10 = textShadowColor({\n            colorStr: colorStr,\n            offsetY: offsetY,\n            offsetX: offsetX,\n            blurRadius: blurRadius,\n            fontSize: fontSize\n          });\n          shadowColors.push(color10);\n        }\n      });\n      return shadowColors;\n    }\n    function parseTextShadows(textShadow) {\n      var current = {\n        pixels: []\n      };\n      var str = textShadow.trim();\n      var shadows = [ current ];\n      if (!str) {\n        return [];\n      }\n      while (str) {\n        var colorMatch = str.match(/^rgba?\\([0-9,.\\s]+\\)/i) || str.match(/^[a-z]+/i) || str.match(/^#[0-9a-f]+/i);\n        var pixelMatch = str.match(/^([0-9.-]+)px/i) || str.match(/^(0)/);\n        if (colorMatch) {\n          assert_default(!current.colorStr, 'Multiple colors identified in text-shadow: '.concat(textShadow));\n          str = str.replace(colorMatch[0], '').trim();\n          current.colorStr = colorMatch[0];\n        } else if (pixelMatch) {\n          assert_default(current.pixels.length < 3, 'Too many pixel units in text-shadow: '.concat(textShadow));\n          str = str.replace(pixelMatch[0], '').trim();\n          var pixelUnit = parseFloat((pixelMatch[1][0] === '.' ? '0' : '') + pixelMatch[1]);\n          current.pixels.push(pixelUnit);\n        } else if (str[0] === ',') {\n          assert_default(current.pixels.length >= 2, 'Missing pixel value in text-shadow: '.concat(textShadow));\n          current = {\n            pixels: []\n          };\n          shadows.push(current);\n          str = str.substr(1).trim();\n        } else {\n          throw new Error('Unable to process text-shadows: '.concat(textShadow));\n        }\n      }\n      return shadows;\n    }\n    function textShadowColor(_ref45) {\n      var colorStr = _ref45.colorStr, offsetX = _ref45.offsetX, offsetY = _ref45.offsetY, blurRadius = _ref45.blurRadius, fontSize = _ref45.fontSize;\n      if (offsetX > blurRadius || offsetY > blurRadius) {\n        return new color_default(0, 0, 0, 0);\n      }\n      var shadowColor = new color_default();\n      shadowColor.parseString(colorStr);\n      shadowColor.alpha *= blurRadiusToAlpha(blurRadius, fontSize);\n      return shadowColor;\n    }\n    function blurRadiusToAlpha(blurRadius, fontSize) {\n      var relativeBlur = blurRadius / fontSize;\n      return .185 / (relativeBlur + .4);\n    }\n    var get_text_shadow_colors_default = getTextShadowColors;\n    function elmPartiallyObscured(elm, bgElm, bgColor) {\n      var obscured = elm !== bgElm && !visually_contains_default(elm, bgElm) && bgColor.alpha !== 0;\n      if (obscured) {\n        incomplete_data_default.set('bgColor', 'elmPartiallyObscured');\n      }\n      return obscured;\n    }\n    function getBackgroundColor(elm) {\n      var bgElms = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n      var shadowOutlineEmMax = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : .1;\n      var bgColors = get_text_shadow_colors_default(elm, {\n        minRatio: shadowOutlineEmMax\n      });\n      var elmStack = get_background_stack_default(elm);\n      (elmStack || []).some(function(bgElm) {\n        var bgElmStyle = window.getComputedStyle(bgElm);\n        var bgColor = get_own_background_color_default(bgElmStyle);\n        if (elmPartiallyObscured(elm, bgElm, bgColor) || element_has_image_default(bgElm, bgElmStyle)) {\n          bgColors = null;\n          bgElms.push(bgElm);\n          return true;\n        }\n        if (bgColor.alpha !== 0) {\n          bgElms.push(bgElm);\n          bgColors.push(bgColor);\n          return bgColor.alpha === 1;\n        } else {\n          return false;\n        }\n      });\n      if (bgColors === null || elmStack === null) {\n        return null;\n      }\n      bgColors.push(new color_default(255, 255, 255, 1));\n      var colors = bgColors.reduce(flatten_colors_default);\n      return colors;\n    }\n    var get_background_color_default = getBackgroundColor;\n    function getContrast(bgColor, fgColor) {\n      if (!fgColor || !bgColor) {\n        return null;\n      }\n      if (fgColor.alpha < 1) {\n        fgColor = flatten_colors_default(fgColor, bgColor);\n      }\n      var bL = bgColor.getRelativeLuminance();\n      var fL = fgColor.getRelativeLuminance();\n      return (Math.max(fL, bL) + .05) / (Math.min(fL, bL) + .05);\n    }\n    var get_contrast_default = getContrast;\n    function getOpacity(node) {\n      if (!node) {\n        return 1;\n      }\n      var vNode = get_node_from_tree_default(node);\n      if (vNode && vNode._opacity !== void 0 && vNode._opacity !== null) {\n        return vNode._opacity;\n      }\n      var nodeStyle = window.getComputedStyle(node);\n      var opacity = nodeStyle.getPropertyValue('opacity');\n      var finalOpacity = opacity * getOpacity(node.parentElement);\n      if (vNode) {\n        vNode._opacity = finalOpacity;\n      }\n      return finalOpacity;\n    }\n    function getForegroundColor(node, _, bgColor) {\n      var nodeStyle = window.getComputedStyle(node);\n      var fgColor = new color_default();\n      fgColor.parseString(nodeStyle.getPropertyValue('color'));\n      var opacity = getOpacity(node);\n      fgColor.alpha = fgColor.alpha * opacity;\n      if (fgColor.alpha === 1) {\n        return fgColor;\n      }\n      if (!bgColor) {\n        bgColor = get_background_color_default(node, []);\n      }\n      if (bgColor === null) {\n        var reason = incomplete_data_default.get('bgColor');\n        incomplete_data_default.set('fgColor', reason);\n        return null;\n      }\n      return flatten_colors_default(fgColor, bgColor);\n    }\n    var get_foreground_color_default = getForegroundColor;\n    function hasValidContrastRatio(bg, fg, fontSize, isBold) {\n      var contrast = get_contrast_default(bg, fg);\n      var isSmallFont = isBold && Math.ceil(fontSize * 72) / 96 < 14 || !isBold && Math.ceil(fontSize * 72) / 96 < 18;\n      var expectedContrastRatio = isSmallFont ? 4.5 : 3;\n      return {\n        isValid: contrast > expectedContrastRatio,\n        contrastRatio: contrast,\n        expectedContrastRatio: expectedContrastRatio\n      };\n    }\n    var has_valid_contrast_ratio_default = hasValidContrastRatio;\n    var hasPsuedoElement = memoize_default(function hasPsuedoElement2(node, pseudo) {\n      var style = window.getComputedStyle(node, pseudo);\n      var backgroundColor = get_own_background_color_default(style);\n      return style.getPropertyValue('content') !== 'none' && style.getPropertyValue('position') === 'absolute' && parseInt(style.getPropertyValue('width')) !== 0 && parseInt(style.getPropertyValue('height')) !== 0 && (backgroundColor.alpha !== 0 || style.getPropertyValue('background-image') !== 'none');\n    });\n    function colorContrastEvaluate(node, options, virtualNode) {\n      if (!is_visible_default(node, false)) {\n        return true;\n      }\n      var ignoreUnicode = options.ignoreUnicode, ignoreLength = options.ignoreLength, boldValue = options.boldValue, boldTextPt = options.boldTextPt, largeTextPt = options.largeTextPt, contrastRatio = options.contrastRatio, shadowOutlineEmMax = options.shadowOutlineEmMax;\n      var visibleText = visible_virtual_default(virtualNode, false, true);\n      var textContainsOnlyUnicode = has_unicode_default(visibleText, {\n        nonBmp: true\n      }) && sanitize_default(remove_unicode_default(visibleText, {\n        nonBmp: true\n      })) === '';\n      if (textContainsOnlyUnicode && ignoreUnicode) {\n        this.data({\n          messageKey: 'nonBmp'\n        });\n        return void 0;\n      }\n      var bgNodes = [];\n      var bgColor = get_background_color_default(node, bgNodes, shadowOutlineEmMax);\n      var fgColor = get_foreground_color_default(node, false, bgColor);\n      var shadowColors = get_text_shadow_colors_default(node, {\n        maxRatio: shadowOutlineEmMax\n      });\n      var nodeStyle = window.getComputedStyle(node);\n      var fontSize = parseFloat(nodeStyle.getPropertyValue('font-size'));\n      var fontWeight = nodeStyle.getPropertyValue('font-weight');\n      var bold = parseFloat(fontWeight) >= boldValue || fontWeight === 'bold';\n      var contrast = null;\n      if (shadowColors.length === 0) {\n        contrast = get_contrast_default(bgColor, fgColor);\n      } else if (fgColor && bgColor) {\n        var shadowColor = [].concat(_toConsumableArray(shadowColors), [ bgColor ]).reduce(flatten_colors_default);\n        var bgContrast = get_contrast_default(bgColor, shadowColor);\n        var fgContrast = get_contrast_default(shadowColor, fgColor);\n        contrast = Math.max(bgContrast, fgContrast);\n      }\n      var ptSize = Math.ceil(fontSize * 72) / 96;\n      var isSmallFont = bold && ptSize < boldTextPt || !bold && ptSize < largeTextPt;\n      var _ref46 = isSmallFont ? contrastRatio.normal : contrastRatio.large, expected = _ref46.expected, minThreshold = _ref46.minThreshold, maxThreshold = _ref46.maxThreshold;\n      var isValid = contrast > expected;\n      var parentNode = node.parentElement;\n      while (parentNode) {\n        if (hasPsuedoElement(parentNode, ':before') || hasPsuedoElement(parentNode, ':after')) {\n          this.data({\n            messageKey: 'pseudoContent'\n          });\n          this.relatedNodes(parentNode);\n          return void 0;\n        }\n        parentNode = parentNode.parentElement;\n      }\n      if (typeof minThreshold === 'number' && contrast < minThreshold || typeof maxThreshold === 'number' && contrast > maxThreshold) {\n        return true;\n      }\n      var truncatedResult = Math.floor(contrast * 100) / 100;\n      var missing;\n      if (bgColor === null) {\n        missing = incomplete_data_default.get('bgColor');\n      }\n      var equalRatio = truncatedResult === 1;\n      var shortTextContent = visibleText.length === 1;\n      if (equalRatio) {\n        missing = incomplete_data_default.set('bgColor', 'equalRatio');\n      } else if (shortTextContent && !ignoreLength) {\n        missing = 'shortTextContent';\n      }\n      var data2 = {\n        fgColor: fgColor ? fgColor.toHexString() : void 0,\n        bgColor: bgColor ? bgColor.toHexString() : void 0,\n        contrastRatio: truncatedResult,\n        fontSize: ''.concat((fontSize * 72 / 96).toFixed(1), 'pt (').concat(fontSize, 'px)'),\n        fontWeight: bold ? 'bold' : 'normal',\n        messageKey: missing,\n        expectedContrastRatio: expected + ':1'\n      };\n      this.data(data2);\n      if (fgColor === null || bgColor === null || equalRatio || shortTextContent && !ignoreLength && !isValid) {\n        missing = null;\n        incomplete_data_default.clear();\n        this.relatedNodes(bgNodes);\n        return void 0;\n      }\n      if (!isValid) {\n        this.relatedNodes(bgNodes);\n      }\n      return isValid;\n    }\n    var color_contrast_evaluate_default = colorContrastEvaluate;\n    function getContrast2(color1, color22) {\n      var c1lum = color1.getRelativeLuminance();\n      var c2lum = color22.getRelativeLuminance();\n      return (Math.max(c1lum, c2lum) + .05) / (Math.min(c1lum, c2lum) + .05);\n    }\n    var blockLike2 = [ 'block', 'list-item', 'table', 'flex', 'grid', 'inline-block' ];\n    function isBlock2(elm) {\n      var display = window.getComputedStyle(elm).getPropertyValue('display');\n      return blockLike2.indexOf(display) !== -1 || display.substr(0, 6) === 'table-';\n    }\n    function linkInTextBlockEvaluate(node) {\n      if (isBlock2(node)) {\n        return false;\n      }\n      var parentBlock = get_composed_parent_default(node);\n      while (parentBlock.nodeType === 1 && !isBlock2(parentBlock)) {\n        parentBlock = get_composed_parent_default(parentBlock);\n      }\n      this.relatedNodes([ parentBlock ]);\n      if (element_is_distinct_default(node, parentBlock)) {\n        return true;\n      } else {\n        var nodeColor, parentColor;\n        nodeColor = get_foreground_color_default(node);\n        parentColor = get_foreground_color_default(parentBlock);\n        if (!nodeColor || !parentColor) {\n          return void 0;\n        }\n        var contrast = getContrast2(nodeColor, parentColor);\n        if (contrast === 1) {\n          return true;\n        } else if (contrast >= 3) {\n          incomplete_data_default.set('fgColor', 'bgContrast');\n          this.data({\n            messageKey: incomplete_data_default.get('fgColor')\n          });\n          incomplete_data_default.clear();\n          return void 0;\n        }\n        nodeColor = get_background_color_default(node);\n        parentColor = get_background_color_default(parentBlock);\n        if (!nodeColor || !parentColor || getContrast2(nodeColor, parentColor) >= 3) {\n          var reason;\n          if (!nodeColor || !parentColor) {\n            reason = incomplete_data_default.get('bgColor');\n          } else {\n            reason = 'bgContrast';\n          }\n          incomplete_data_default.set('fgColor', reason);\n          this.data({\n            messageKey: incomplete_data_default.get('fgColor')\n          });\n          incomplete_data_default.clear();\n          return void 0;\n        }\n      }\n      return false;\n    }\n    var link_in_text_block_evaluate_default = linkInTextBlockEvaluate;\n    function autocompleteAppropriateEvaluate(node, options, virtualNode) {\n      if (virtualNode.props.nodeName !== 'input') {\n        return true;\n      }\n      var number = [ 'text', 'search', 'number', 'tel' ];\n      var url = [ 'text', 'search', 'url' ];\n      var allowedTypesMap = {\n        bday: [ 'text', 'search', 'date' ],\n        email: [ 'text', 'search', 'email' ],\n        username: [ 'text', 'search', 'email' ],\n        'street-address': [ 'text' ],\n        tel: [ 'text', 'search', 'tel' ],\n        'tel-country-code': [ 'text', 'search', 'tel' ],\n        'tel-national': [ 'text', 'search', 'tel' ],\n        'tel-area-code': [ 'text', 'search', 'tel' ],\n        'tel-local': [ 'text', 'search', 'tel' ],\n        'tel-local-prefix': [ 'text', 'search', 'tel' ],\n        'tel-local-suffix': [ 'text', 'search', 'tel' ],\n        'tel-extension': [ 'text', 'search', 'tel' ],\n        'cc-number': number,\n        'cc-exp': [ 'text', 'search', 'month', 'tel' ],\n        'cc-exp-month': number,\n        'cc-exp-year': number,\n        'cc-csc': number,\n        'transaction-amount': number,\n        'bday-day': number,\n        'bday-month': number,\n        'bday-year': number,\n        'new-password': [ 'text', 'search', 'password' ],\n        'current-password': [ 'text', 'search', 'password' ],\n        url: url,\n        photo: url,\n        impp: url\n      };\n      if (_typeof(options) === 'object') {\n        Object.keys(options).forEach(function(key) {\n          if (!allowedTypesMap[key]) {\n            allowedTypesMap[key] = [];\n          }\n          allowedTypesMap[key] = allowedTypesMap[key].concat(options[key]);\n        });\n      }\n      var autocompleteAttr = virtualNode.attr('autocomplete');\n      var autocompleteTerms = autocompleteAttr.split(/\\s+/g).map(function(term) {\n        return term.toLowerCase();\n      });\n      var purposeTerm = autocompleteTerms[autocompleteTerms.length - 1];\n      if (_autocomplete.stateTerms.includes(purposeTerm)) {\n        return true;\n      }\n      var allowedTypes = allowedTypesMap[purposeTerm];\n      var type = virtualNode.hasAttr('type') ? sanitize_default(virtualNode.attr('type')).toLowerCase() : 'text';\n      type = valid_input_type_default().includes(type) ? type : 'text';\n      if (typeof allowedTypes === 'undefined') {\n        return type === 'text';\n      }\n      return allowedTypes.includes(type);\n    }\n    var autocomplete_appropriate_evaluate_default = autocompleteAppropriateEvaluate;\n    function autocompleteValidEvaluate(node, options, virtualNode) {\n      var autocomplete2 = virtualNode.attr('autocomplete') || '';\n      return is_valid_autocomplete_default(autocomplete2, options);\n    }\n    var autocomplete_valid_evaluate_default = autocompleteValidEvaluate;\n    function attrNonSpaceContentEvaluate(node) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var vNode = arguments.length > 2 ? arguments[2] : undefined;\n      if (!options.attribute || typeof options.attribute !== 'string') {\n        throw new TypeError('attr-non-space-content requires options.attribute to be a string');\n      }\n      if (!vNode.hasAttr(options.attribute)) {\n        this.data({\n          messageKey: 'noAttr'\n        });\n        return false;\n      }\n      var attribute = vNode.attr(options.attribute);\n      var attributeIsEmpty = !sanitize_default(attribute);\n      if (attributeIsEmpty) {\n        this.data({\n          messageKey: 'emptyAttr'\n        });\n        return false;\n      }\n      return true;\n    }\n    var attr_non_space_content_evaluate_default = attrNonSpaceContentEvaluate;\n    function pageHasElmAfter(results) {\n      var elmUsedAnywhere = results.some(function(frameResult) {\n        return frameResult.result === true;\n      });\n      if (elmUsedAnywhere) {\n        results.forEach(function(result) {\n          result.result = true;\n        });\n      }\n      return results;\n    }\n    var has_descendant_after_default = pageHasElmAfter;\n    function hasDescendant(node, options, virtualNode) {\n      if (!options || !options.selector || typeof options.selector !== 'string') {\n        throw new TypeError('has-descendant requires options.selector to be a string');\n      }\n      var matchingElms = query_selector_all_filter_default(virtualNode, options.selector, function(vNode) {\n        return is_visible_default(vNode.actualNode, true);\n      });\n      this.relatedNodes(matchingElms.map(function(vNode) {\n        return vNode.actualNode;\n      }));\n      return matchingElms.length > 0;\n    }\n    var has_descendant_evaluate_default = hasDescendant;\n    function hasTextContentEvaluate(node, options, virtualNode) {\n      try {\n        return sanitize_default(subtree_text_default(virtualNode)) !== '';\n      } catch (e) {\n        return void 0;\n      }\n    }\n    var has_text_content_evaluate_default = hasTextContentEvaluate;\n    function matchesDefinitionEvaluate(_, options, virtualNode) {\n      return matches_default3(virtualNode, options.matcher);\n    }\n    var matches_definition_evaluate_default = matchesDefinitionEvaluate;\n    function pageNoDuplicateAfter(results) {\n      return results.filter(function(checkResult) {\n        return checkResult.data !== 'ignored';\n      });\n    }\n    var page_no_duplicate_after_default = pageNoDuplicateAfter;\n    function pageNoDuplicateEvaluate(node, options, virtualNode) {\n      if (!options || !options.selector || typeof options.selector !== 'string') {\n        throw new TypeError('page-no-duplicate requires options.selector to be a string');\n      }\n      var key = 'page-no-duplicate;' + options.selector;\n      if (cache_default.get(key)) {\n        this.data('ignored');\n        return;\n      }\n      cache_default.set(key, true);\n      var elms = query_selector_all_filter_default(axe._tree[0], options.selector, function(elm) {\n        return is_visible_default(elm.actualNode);\n      });\n      if (typeof options.nativeScopeFilter === 'string') {\n        elms = elms.filter(function(elm) {\n          return elm.actualNode.hasAttribute('role') || !find_up_virtual_default(elm, options.nativeScopeFilter);\n        });\n      }\n      this.relatedNodes(elms.filter(function(elm) {\n        return elm !== virtualNode;\n      }).map(function(elm) {\n        return elm.actualNode;\n      }));\n      return elms.length <= 1;\n    }\n    var page_no_duplicate_evaluate_default = pageNoDuplicateEvaluate;\n    var joinStr = ' > ';\n    function getFramePath(ancestry, nodePath) {\n      ancestry = ancestry.slice(0, ancestry.length - 1);\n      if (nodePath) {\n        ancestry = ancestry.concat(nodePath);\n      }\n      return ancestry.join(joinStr);\n    }\n    function headingOrderAfter(results) {\n      if (results.length < 2) {\n        return results;\n      }\n      var pageResult = results.find(function(result) {\n        return !result.node._fromFrame;\n      });\n      var headingOrder = pageResult.data.headingOrder.map(function(heading) {\n        return _extends({}, heading, {\n          ancestry: getFramePath(pageResult.node.ancestry, heading.ancestry)\n        });\n      });\n      var nestedResults = results.filter(function(result) {\n        return result.data && result.data.headingOrder && result.node._fromFrame;\n      });\n      nestedResults.forEach(function(result) {\n        result.data.headingOrder = result.data.headingOrder.map(function(heading) {\n          return _extends({}, heading, {\n            ancestry: getFramePath(result.node.ancestry, heading.ancestry)\n          });\n        });\n      });\n      function getFrameIndex(result) {\n        var path = getFramePath(result.node.ancestry);\n        var heading = headingOrder.find(function(heading2) {\n          return heading2.ancestry === path;\n        });\n        return headingOrder.indexOf(heading);\n      }\n      function replaceFrameWithResults(index, result) {\n        var _headingOrder;\n        (_headingOrder = headingOrder).splice.apply(_headingOrder, [ index, 1 ].concat(_toConsumableArray(result.data.headingOrder)));\n      }\n      var replaced = false;\n      while (nestedResults.length) {\n        for (var _i19 = 0; _i19 < nestedResults.length; ) {\n          var nestedResult = nestedResults[_i19];\n          var index = getFrameIndex(nestedResult);\n          if (index !== -1) {\n            replaceFrameWithResults(index, nestedResult);\n            replaced = true;\n            nestedResults.splice(_i19, 1);\n          } else {\n            _i19++;\n          }\n        }\n        if (!replaced) {\n          throw new Error('Unable to find parent iframe of heading-order results');\n        }\n      }\n      results.forEach(function(result) {\n        var path = result.node.ancestry.join(joinStr);\n        var heading = headingOrder.find(function(heading2) {\n          return heading2.ancestry === path;\n        });\n        var index = headingOrder.indexOf(heading);\n        headingOrder.splice(index, 1, {\n          level: headingOrder[index].level,\n          result: result\n        });\n      });\n      headingOrder = headingOrder.filter(function(heading) {\n        return heading.level > 0;\n      });\n      var _loop5 = function _loop5(_i20) {\n        var result = results[_i20];\n        var heading = headingOrder.find(function(heading2) {\n          return heading2.result === result;\n        });\n        var index = headingOrder.indexOf(heading);\n        var currLevel = headingOrder[index].level;\n        var prevLevel = headingOrder[index - 1].level;\n        if (currLevel - prevLevel > 1) {\n          result.result = false;\n        }\n      };\n      for (var _i20 = 1; _i20 < results.length; _i20++) {\n        _loop5(_i20);\n      }\n      return results;\n    }\n    var heading_order_after_default = headingOrderAfter;\n    function getLevel(vNode) {\n      var role = vNode.attr('role');\n      if (role && role.includes('heading')) {\n        var ariaHeadingLevel = vNode.attr('aria-level');\n        var level = parseInt(ariaHeadingLevel, 10);\n        if (isNaN(level) || level < 1 || level > 6) {\n          return 2;\n        }\n        return level;\n      }\n      var headingLevel = vNode.props.nodeName.match(/h(\\d)/);\n      if (headingLevel) {\n        return parseInt(headingLevel[1], 10);\n      }\n      return -1;\n    }\n    function headingOrderEvaluate() {\n      var headingOrder = cache_default.get('headingOrder');\n      if (headingOrder) {\n        return true;\n      }\n      var selector = 'h1, h2, h3, h4, h5, h6, [role=heading], iframe, frame';\n      var vNodes = query_selector_all_filter_default(axe._tree[0], selector, function(vNode) {\n        return is_visible_default(vNode.actualNode, true);\n      });\n      headingOrder = vNodes.map(function(vNode) {\n        return {\n          ancestry: [ _getAncestry(vNode.actualNode) ],\n          level: getLevel(vNode)\n        };\n      });\n      this.data({\n        headingOrder: headingOrder\n      });\n      cache_default.set('headingOrder', vNodes);\n      return true;\n    }\n    var heading_order_evaluate_default = headingOrderEvaluate;\n    function isIdenticalObject(a, b) {\n      if (!a || !b) {\n        return false;\n      }\n      var aProps = Object.getOwnPropertyNames(a);\n      var bProps = Object.getOwnPropertyNames(b);\n      if (aProps.length !== bProps.length) {\n        return false;\n      }\n      var result = aProps.every(function(propName) {\n        var aValue = a[propName];\n        var bValue = b[propName];\n        if (_typeof(aValue) !== _typeof(bValue)) {\n          return false;\n        }\n        if (typeof aValue === 'object' || typeof bValue === 'object') {\n          return isIdenticalObject(aValue, bValue);\n        }\n        return aValue === bValue;\n      });\n      return result;\n    }\n    function identicalLinksSamePurposeAfter(results) {\n      if (results.length < 2) {\n        return results;\n      }\n      var incompleteResults = results.filter(function(_ref47) {\n        var result = _ref47.result;\n        return result !== void 0;\n      });\n      var uniqueResults = [];\n      var nameMap = {};\n      var _loop6 = function _loop6(index) {\n        var _currentResult$relate;\n        var currentResult = incompleteResults[index];\n        var _currentResult$data = currentResult.data, name = _currentResult$data.name, urlProps = _currentResult$data.urlProps;\n        if (nameMap[name]) {\n          return 'continue';\n        }\n        var sameNameResults = incompleteResults.filter(function(_ref48, resultNum) {\n          var data2 = _ref48.data;\n          return data2.name === name && resultNum !== index;\n        });\n        var isSameUrl = sameNameResults.every(function(_ref49) {\n          var data2 = _ref49.data;\n          return isIdenticalObject(data2.urlProps, urlProps);\n        });\n        if (sameNameResults.length && !isSameUrl) {\n          currentResult.result = void 0;\n        }\n        currentResult.relatedNodes = [];\n        (_currentResult$relate = currentResult.relatedNodes).push.apply(_currentResult$relate, _toConsumableArray(sameNameResults.map(function(node) {\n          return node.relatedNodes[0];\n        })));\n        nameMap[name] = sameNameResults;\n        uniqueResults.push(currentResult);\n      };\n      for (var index = 0; index < incompleteResults.length; index++) {\n        var _ret2 = _loop6(index);\n        if (_ret2 === 'continue') {\n          continue;\n        }\n      }\n      return uniqueResults;\n    }\n    var identical_links_same_purpose_after_default = identicalLinksSamePurposeAfter;\n    var commons_exports = {};\n    __export(commons_exports, {\n      aria: function aria() {\n        return aria_exports;\n      },\n      color: function color() {\n        return color_exports;\n      },\n      dom: function dom() {\n        return dom_exports;\n      },\n      forms: function forms() {\n        return forms_exports;\n      },\n      matches: function matches() {\n        return matches_default3;\n      },\n      standards: function standards() {\n        return standards_exports;\n      },\n      table: function table() {\n        return table_exports;\n      },\n      text: function text() {\n        return text_exports;\n      },\n      utils: function utils() {\n        return utils_exports;\n      }\n    });\n    var forms_exports = {};\n    __export(forms_exports, {\n      isAriaCombobox: function isAriaCombobox() {\n        return is_aria_combobox_default;\n      },\n      isAriaListbox: function isAriaListbox() {\n        return is_aria_listbox_default;\n      },\n      isAriaRange: function isAriaRange() {\n        return is_aria_range_default;\n      },\n      isAriaTextbox: function isAriaTextbox() {\n        return is_aria_textbox_default;\n      },\n      isDisabled: function isDisabled() {\n        return is_disabled_default;\n      },\n      isNativeSelect: function isNativeSelect() {\n        return is_native_select_default;\n      },\n      isNativeTextbox: function isNativeTextbox() {\n        return is_native_textbox_default;\n      }\n    });\n    var disabledNodeNames = [ 'fieldset', 'button', 'select', 'input', 'textarea' ];\n    function isDisabled(virtualNode) {\n      var disabledState = virtualNode._isDisabled;\n      if (typeof disabledState === 'boolean') {\n        return disabledState;\n      }\n      var nodeName2 = virtualNode.props.nodeName;\n      var ariaDisabled = virtualNode.attr('aria-disabled');\n      if (disabledNodeNames.includes(nodeName2) && virtualNode.hasAttr('disabled')) {\n        disabledState = true;\n      } else if (ariaDisabled) {\n        disabledState = ariaDisabled.toLowerCase() === 'true';\n      } else if (virtualNode.parent) {\n        disabledState = isDisabled(virtualNode.parent);\n      } else {\n        disabledState = false;\n      }\n      virtualNode._isDisabled = disabledState;\n      return disabledState;\n    }\n    var is_disabled_default = isDisabled;\n    var commons = {\n      aria: aria_exports,\n      color: color_exports,\n      dom: dom_exports,\n      forms: forms_exports,\n      matches: matches_default3,\n      standards: standards_exports,\n      table: table_exports,\n      text: text_exports,\n      utils: utils_exports\n    };\n    function identicalLinksSamePurposeEvaluate(node, options, virtualNode) {\n      var accText = text_exports.accessibleTextVirtual(virtualNode);\n      var name = text_exports.sanitize(text_exports.removeUnicode(accText, {\n        emoji: true,\n        nonBmp: true,\n        punctuations: true\n      })).toLowerCase();\n      if (!name) {\n        return void 0;\n      }\n      var afterData = {\n        name: name,\n        urlProps: dom_exports.urlPropsFromAttribute(node, 'href')\n      };\n      this.data(afterData);\n      this.relatedNodes([ node ]);\n      return true;\n    }\n    var identical_links_same_purpose_evaluate_default = identicalLinksSamePurposeEvaluate;\n    function internalLinkPresentEvaluate(node, options, virtualNode) {\n      var links = query_selector_all_default(virtualNode, 'a[href]');\n      return links.some(function(vLink) {\n        return /^#[^/!]/.test(vLink.actualNode.getAttribute('href'));\n      });\n    }\n    var internal_link_present_evaluate_default = internalLinkPresentEvaluate;\n    function metaRefreshEvaluate(node, options, virtualNode) {\n      var content = virtualNode.attr('content') || '', parsedParams = content.split(/[;,]/);\n      return content === '' || parsedParams[0] === '0';\n    }\n    var meta_refresh_evaluate_default = metaRefreshEvaluate;\n    function normalizeFontWeight(weight) {\n      switch (weight) {\n       case 'lighter':\n        return 100;\n\n       case 'normal':\n        return 400;\n\n       case 'bold':\n        return 700;\n\n       case 'bolder':\n        return 900;\n      }\n      weight = parseInt(weight);\n      return !isNaN(weight) ? weight : 400;\n    }\n    function getTextContainer(elm) {\n      var nextNode = elm;\n      var outerText = elm.textContent.trim();\n      var innerText = outerText;\n      while (innerText === outerText && nextNode !== void 0) {\n        var _i21 = -1;\n        elm = nextNode;\n        if (elm.children.length === 0) {\n          return elm;\n        }\n        do {\n          _i21++;\n          innerText = elm.children[_i21].textContent.trim();\n        } while (innerText === '' && _i21 + 1 < elm.children.length);\n        nextNode = elm.children[_i21];\n      }\n      return elm;\n    }\n    function getStyleValues(node) {\n      var style = window.getComputedStyle(getTextContainer(node));\n      return {\n        fontWeight: normalizeFontWeight(style.getPropertyValue('font-weight')),\n        fontSize: parseInt(style.getPropertyValue('font-size')),\n        isItalic: style.getPropertyValue('font-style') === 'italic'\n      };\n    }\n    function isHeaderStyle(styleA, styleB, margins) {\n      return margins.reduce(function(out, margin) {\n        return out || (!margin.size || styleA.fontSize / margin.size > styleB.fontSize) && (!margin.weight || styleA.fontWeight - margin.weight > styleB.fontWeight) && (!margin.italic || styleA.isItalic && !styleB.isItalic);\n      }, false);\n    }\n    function pAsHeadingEvaluate(node, options, virtualNode) {\n      var siblings = Array.from(node.parentNode.children);\n      var currentIndex = siblings.indexOf(node);\n      options = options || {};\n      var margins = options.margins || [];\n      var nextSibling = siblings.slice(currentIndex + 1).find(function(elm) {\n        return elm.nodeName.toUpperCase() === 'P';\n      });\n      var prevSibling = siblings.slice(0, currentIndex).reverse().find(function(elm) {\n        return elm.nodeName.toUpperCase() === 'P';\n      });\n      var currStyle = getStyleValues(node);\n      var nextStyle = nextSibling ? getStyleValues(nextSibling) : null;\n      var prevStyle = prevSibling ? getStyleValues(prevSibling) : null;\n      if (!nextStyle || !isHeaderStyle(currStyle, nextStyle, margins)) {\n        return true;\n      }\n      var blockquote = find_up_virtual_default(virtualNode, 'blockquote');\n      if (blockquote && blockquote.nodeName.toUpperCase() === 'BLOCKQUOTE') {\n        return void 0;\n      }\n      if (prevStyle && !isHeaderStyle(currStyle, prevStyle, margins)) {\n        return void 0;\n      }\n      return false;\n    }\n    var p_as_heading_evaluate_default = pAsHeadingEvaluate;\n    var landmarkRoles = get_aria_roles_by_type_default('landmark');\n    var implicitAriaLiveRoles = [ 'alert', 'log', 'status' ];\n    function isRegion(virtualNode, options) {\n      var node = virtualNode.actualNode;\n      var role = get_role_default(virtualNode);\n      var ariaLive = (node.getAttribute('aria-live') || '').toLowerCase().trim();\n      if ([ 'assertive', 'polite' ].includes(ariaLive) || implicitAriaLiveRoles.includes(role)) {\n        return true;\n      }\n      if (landmarkRoles.includes(role)) {\n        return true;\n      }\n      if (options.regionMatcher && matches_default3(virtualNode, options.regionMatcher)) {\n        return true;\n      }\n      return false;\n    }\n    function findRegionlessElms(virtualNode, options) {\n      var node = virtualNode.actualNode;\n      if (isRegion(virtualNode, options) || is_skip_link_default(virtualNode.actualNode) && get_element_by_reference_default(virtualNode.actualNode, 'href') || !is_visible_default(node, true)) {\n        var vNode = virtualNode;\n        while (vNode) {\n          vNode._hasRegionDescendant = true;\n          vNode = vNode.parent;\n        }\n        return [];\n      } else if (node !== document.body && has_content_default(node, true)) {\n        return [ virtualNode ];\n      } else {\n        return virtualNode.children.filter(function(_ref50) {\n          var actualNode = _ref50.actualNode;\n          return actualNode.nodeType === 1;\n        }).map(function(vNode) {\n          return findRegionlessElms(vNode, options);\n        }).reduce(function(a, b) {\n          return a.concat(b);\n        }, []);\n      }\n    }\n    function regionEvaluate(node, options, virtualNode) {\n      var regionlessNodes = cache_default.get('regionlessNodes');\n      if (regionlessNodes) {\n        return !regionlessNodes.includes(virtualNode);\n      }\n      var tree = axe._tree;\n      regionlessNodes = findRegionlessElms(tree[0], options).map(function(vNode) {\n        while (vNode.parent && !vNode.parent._hasRegionDescendant && vNode.parent.actualNode !== document.body) {\n          vNode = vNode.parent;\n        }\n        return vNode;\n      }).filter(function(vNode, index, array) {\n        return array.indexOf(vNode) === index;\n      });\n      cache_default.set('regionlessNodes', regionlessNodes);\n      return !regionlessNodes.includes(virtualNode);\n    }\n    var region_evaluate_default = regionEvaluate;\n    function skipLinkEvaluate(node) {\n      var target = get_element_by_reference_default(node, 'href');\n      if (target) {\n        return is_visible_default(target, true) || void 0;\n      }\n      return false;\n    }\n    var skip_link_evaluate_default = skipLinkEvaluate;\n    function uniqueFrameTitleAfter(results) {\n      var titles = {};\n      results.forEach(function(r) {\n        titles[r.data] = titles[r.data] !== void 0 ? ++titles[r.data] : 0;\n      });\n      results.forEach(function(r) {\n        r.result = !!titles[r.data];\n      });\n      return results;\n    }\n    var unique_frame_title_after_default = uniqueFrameTitleAfter;\n    function uniqueFrameTitleEvaluate(node, options, vNode) {\n      var title = sanitize_default(vNode.attr('title')).toLowerCase();\n      this.data(title);\n      return true;\n    }\n    var unique_frame_title_evaluate_default = uniqueFrameTitleEvaluate;\n    function ariaLabelEvaluate(node, options, virtualNode) {\n      return !!sanitize_default(arialabel_text_default(virtualNode));\n    }\n    var aria_label_evaluate_default = ariaLabelEvaluate;\n    function ariaLabelledbyEvaluate(node, options, virtualNode) {\n      try {\n        return !!sanitize_default(arialabelledby_text_default(virtualNode));\n      } catch (e) {\n        return void 0;\n      }\n    }\n    var aria_labelledby_evaluate_default = ariaLabelledbyEvaluate;\n    function avoidInlineSpacingEvaluate(node, options) {\n      var overriddenProperties = options.cssProperties.filter(function(property) {\n        if (node.style.getPropertyPriority(property) === 'important') {\n          return property;\n        }\n      });\n      if (overriddenProperties.length > 0) {\n        this.data(overriddenProperties);\n        return false;\n      }\n      return true;\n    }\n    var avoid_inline_spacing_evaluate_default = avoidInlineSpacingEvaluate;\n    function docHasTitleEvaluate() {\n      var title = document.title;\n      return !!sanitize_default(title);\n    }\n    var doc_has_title_evaluate_default = docHasTitleEvaluate;\n    function existsEvaluate() {\n      return void 0;\n    }\n    var exists_evaluate_default = existsEvaluate;\n    function hasAltEvaluate(node, options, virtualNode) {\n      var nodeName2 = virtualNode.props.nodeName;\n      if (![ 'img', 'input', 'area' ].includes(nodeName2)) {\n        return false;\n      }\n      return virtualNode.hasAttr('alt');\n    }\n    var has_alt_evaluate_default = hasAltEvaluate;\n    function isOnScreenEvaluate(node) {\n      return is_visible_default(node, false) && !is_offscreen_default(node);\n    }\n    var is_on_screen_evaluate_default = isOnScreenEvaluate;\n    function nonEmptyIfPresentEvaluate(node, options, virtualNode) {\n      var nodeName2 = virtualNode.props.nodeName;\n      var type = (virtualNode.attr('type') || '').toLowerCase();\n      var label5 = virtualNode.attr('value');\n      if (label5) {\n        this.data({\n          messageKey: 'has-label'\n        });\n      }\n      if (nodeName2 === 'input' && [ 'submit', 'reset' ].includes(type)) {\n        return label5 === null;\n      }\n      return false;\n    }\n    var non_empty_if_present_evaluate_default = nonEmptyIfPresentEvaluate;\n    function presentationalRoleEvaluate(node, options, virtualNode) {\n      var role = get_role_default(virtualNode);\n      var explicitRole2 = get_explicit_role_default(virtualNode);\n      if ([ 'presentation', 'none' ].includes(role)) {\n        this.data({\n          role: role\n        });\n        return true;\n      }\n      if (![ 'presentation', 'none' ].includes(explicitRole2)) {\n        return false;\n      }\n      var hasGlobalAria = get_global_aria_attrs_default().some(function(attr) {\n        return virtualNode.hasAttr(attr);\n      });\n      var focusable = is_focusable_default(virtualNode);\n      var messageKey;\n      if (hasGlobalAria && !focusable) {\n        messageKey = 'globalAria';\n      } else if (!hasGlobalAria && focusable) {\n        messageKey = 'focusable';\n      } else {\n        messageKey = 'both';\n      }\n      this.data({\n        messageKey: messageKey,\n        role: role\n      });\n      return false;\n    }\n    var presentational_role_evaluate_default = presentationalRoleEvaluate;\n    function svgNonEmptyTitleEvaluate(node, options, virtualNode) {\n      if (!virtualNode.children) {\n        return void 0;\n      }\n      var titleNode = virtualNode.children.find(function(_ref51) {\n        var props = _ref51.props;\n        return props.nodeName === 'title';\n      });\n      if (!titleNode) {\n        this.data({\n          messageKey: 'noTitle'\n        });\n        return false;\n      }\n      try {\n        if (visible_virtual_default(titleNode) === '') {\n          this.data({\n            messageKey: 'emptyTitle'\n          });\n          return false;\n        }\n      } catch (e) {\n        return void 0;\n      }\n      return true;\n    }\n    var svg_non_empty_title_evaluate_default = svgNonEmptyTitleEvaluate;\n    function cssOrientationLockEvaluate(node, options, virtualNode, context3) {\n      var _ref52 = context3 || {}, _ref52$cssom = _ref52.cssom, cssom = _ref52$cssom === void 0 ? void 0 : _ref52$cssom;\n      var _ref53 = options || {}, _ref53$degreeThreshol = _ref53.degreeThreshold, degreeThreshold = _ref53$degreeThreshol === void 0 ? 0 : _ref53$degreeThreshol;\n      if (!cssom || !cssom.length) {\n        return void 0;\n      }\n      var isLocked = false;\n      var relatedElements = [];\n      var rulesGroupByDocumentFragment = groupCssomByDocument(cssom);\n      var _loop7 = function _loop7() {\n        var key = _Object$keys2[_i22];\n        var _rulesGroupByDocument = rulesGroupByDocumentFragment[key], root = _rulesGroupByDocument.root, rules = _rulesGroupByDocument.rules;\n        var orientationRules = rules.filter(isMediaRuleWithOrientation);\n        if (!orientationRules.length) {\n          return 'continue';\n        }\n        orientationRules.forEach(function(_ref54) {\n          var cssRules = _ref54.cssRules;\n          Array.from(cssRules).forEach(function(cssRule) {\n            var locked = getIsOrientationLocked(cssRule);\n            if (locked && cssRule.selectorText.toUpperCase() !== 'HTML') {\n              var elms = Array.from(root.querySelectorAll(cssRule.selectorText)) || [];\n              relatedElements = relatedElements.concat(elms);\n            }\n            isLocked = isLocked || locked;\n          });\n        });\n      };\n      for (var _i22 = 0, _Object$keys2 = Object.keys(rulesGroupByDocumentFragment); _i22 < _Object$keys2.length; _i22++) {\n        var _ret3 = _loop7();\n        if (_ret3 === 'continue') {\n          continue;\n        }\n      }\n      if (!isLocked) {\n        return true;\n      }\n      if (relatedElements.length) {\n        this.relatedNodes(relatedElements);\n      }\n      return false;\n      function groupCssomByDocument(cssObjectModel) {\n        return cssObjectModel.reduce(function(out, _ref55) {\n          var sheet = _ref55.sheet, root = _ref55.root, shadowId = _ref55.shadowId;\n          var key = shadowId ? shadowId : 'topDocument';\n          if (!out[key]) {\n            out[key] = {\n              root: root,\n              rules: []\n            };\n          }\n          if (!sheet || !sheet.cssRules) {\n            return out;\n          }\n          var rules = Array.from(sheet.cssRules);\n          out[key].rules = out[key].rules.concat(rules);\n          return out;\n        }, {});\n      }\n      function isMediaRuleWithOrientation(_ref56) {\n        var type = _ref56.type, cssText = _ref56.cssText;\n        if (type !== 4) {\n          return false;\n        }\n        return /orientation:\\s*landscape/i.test(cssText) || /orientation:\\s*portrait/i.test(cssText);\n      }\n      function getIsOrientationLocked(_ref57) {\n        var selectorText = _ref57.selectorText, style = _ref57.style;\n        if (!selectorText || style.length <= 0) {\n          return false;\n        }\n        var transformStyle = style.transform || style.webkitTransform || style.msTransform || false;\n        if (!transformStyle) {\n          return false;\n        }\n        var matches14 = transformStyle.match(/(rotate|rotateZ|rotate3d|matrix|matrix3d)\\(([^)]+)\\)(?!.*(rotate|rotateZ|rotate3d|matrix|matrix3d))/);\n        if (!matches14) {\n          return false;\n        }\n        var _matches = _slicedToArray(matches14, 3), transformFn = _matches[1], transformFnValue = _matches[2];\n        var degrees = getRotationInDegrees(transformFn, transformFnValue);\n        if (!degrees) {\n          return false;\n        }\n        degrees = Math.abs(degrees);\n        if (Math.abs(degrees - 180) % 180 <= degreeThreshold) {\n          return false;\n        }\n        return Math.abs(degrees - 90) % 90 <= degreeThreshold;\n      }\n      function getRotationInDegrees(transformFunction, transformFnValue) {\n        switch (transformFunction) {\n         case 'rotate':\n         case 'rotateZ':\n          return getAngleInDegrees(transformFnValue);\n\n         case 'rotate3d':\n          var _transformFnValue$spl = transformFnValue.split(',').map(function(value) {\n            return value.trim();\n          }), _transformFnValue$spl2 = _slicedToArray(_transformFnValue$spl, 4), z = _transformFnValue$spl2[2], angleWithUnit = _transformFnValue$spl2[3];\n          if (parseInt(z) === 0) {\n            return;\n          }\n          return getAngleInDegrees(angleWithUnit);\n\n         case 'matrix':\n         case 'matrix3d':\n          return getAngleInDegreesFromMatrixTransform(transformFnValue);\n\n         default:\n          return;\n        }\n      }\n      function getAngleInDegrees(angleWithUnit) {\n        var _ref58 = angleWithUnit.match(/(deg|grad|rad|turn)/) || [], _ref59 = _slicedToArray(_ref58, 1), unit = _ref59[0];\n        if (!unit) {\n          return;\n        }\n        var angle = parseFloat(angleWithUnit.replace(unit, ''));\n        switch (unit) {\n         case 'rad':\n          return convertRadToDeg(angle);\n\n         case 'grad':\n          return convertGradToDeg(angle);\n\n         case 'turn':\n          return convertTurnToDeg(angle);\n\n         case 'deg':\n         default:\n          return parseInt(angle);\n        }\n      }\n      function getAngleInDegreesFromMatrixTransform(transformFnValue) {\n        var values = transformFnValue.split(',');\n        if (values.length <= 6) {\n          var _values = _slicedToArray(values, 2), a = _values[0], b2 = _values[1];\n          var radians = Math.atan2(parseFloat(b2), parseFloat(a));\n          return convertRadToDeg(radians);\n        }\n        var sinB = parseFloat(values[8]);\n        var b = Math.asin(sinB);\n        var cosB = Math.cos(b);\n        var rotateZRadians = Math.acos(parseFloat(values[0]) / cosB);\n        return convertRadToDeg(rotateZRadians);\n      }\n      function convertRadToDeg(radians) {\n        return Math.round(radians * (180 / Math.PI));\n      }\n      function convertGradToDeg(grad) {\n        grad = grad % 400;\n        if (grad < 0) {\n          grad += 400;\n        }\n        return Math.round(grad / 400 * 360);\n      }\n      function convertTurnToDeg(turn) {\n        return Math.round(360 / (1 / turn));\n      }\n    }\n    var css_orientation_lock_evaluate_default = cssOrientationLockEvaluate;\n    function metaViewportScaleEvaluate(node, options, virtualNode) {\n      var _ref60 = options || {}, _ref60$scaleMinimum = _ref60.scaleMinimum, scaleMinimum = _ref60$scaleMinimum === void 0 ? 2 : _ref60$scaleMinimum, _ref60$lowerBound = _ref60.lowerBound, lowerBound = _ref60$lowerBound === void 0 ? false : _ref60$lowerBound;\n      var content = virtualNode.attr('content') || '';\n      if (!content) {\n        return true;\n      }\n      var result = content.split(/[;,]/).reduce(function(out, item) {\n        var contentValue = item.trim();\n        if (!contentValue) {\n          return out;\n        }\n        var _contentValue$split = contentValue.split('='), _contentValue$split2 = _slicedToArray(_contentValue$split, 2), key = _contentValue$split2[0], value = _contentValue$split2[1];\n        if (!key || !value) {\n          return out;\n        }\n        var curatedKey = key.toLowerCase().trim();\n        var curatedValue = value.toLowerCase().trim();\n        if (curatedKey === 'maximum-scale' && curatedValue === 'yes') {\n          curatedValue = 1;\n        }\n        if (curatedKey === 'maximum-scale' && parseFloat(curatedValue) < 0) {\n          return out;\n        }\n        out[curatedKey] = curatedValue;\n        return out;\n      }, {});\n      if (lowerBound && result['maximum-scale'] && parseFloat(result['maximum-scale']) < lowerBound) {\n        return true;\n      }\n      if (!lowerBound && result['user-scalable'] === 'no') {\n        this.data('user-scalable=no');\n        return false;\n      }\n      if (result['maximum-scale'] && parseFloat(result['maximum-scale']) < scaleMinimum) {\n        this.data('maximum-scale');\n        return false;\n      }\n      return true;\n    }\n    var meta_viewport_scale_evaluate_default = metaViewportScaleEvaluate;\n    function duplicateIdAfter(results) {\n      var uniqueIds = [];\n      return results.filter(function(r) {\n        if (uniqueIds.indexOf(r.data) === -1) {\n          uniqueIds.push(r.data);\n          return true;\n        }\n        return false;\n      });\n    }\n    var duplicate_id_after_default = duplicateIdAfter;\n    function duplicateIdEvaluate(node) {\n      var id = node.getAttribute('id').trim();\n      if (!id) {\n        return true;\n      }\n      var root = get_root_node_default2(node);\n      var matchingNodes = Array.from(root.querySelectorAll('[id=\"'.concat(escape_selector_default(id), '\"]'))).filter(function(foundNode) {\n        return foundNode !== node;\n      });\n      if (matchingNodes.length) {\n        this.relatedNodes(matchingNodes);\n      }\n      this.data(id);\n      return matchingNodes.length === 0;\n    }\n    var duplicate_id_evaluate_default = duplicateIdEvaluate;\n    function accesskeysAfter(results) {\n      var seen = {};\n      return results.filter(function(r) {\n        if (!r.data) {\n          return false;\n        }\n        var key = r.data.toUpperCase();\n        if (!seen[key]) {\n          seen[key] = r;\n          r.relatedNodes = [];\n          return true;\n        }\n        seen[key].relatedNodes.push(r.relatedNodes[0]);\n        return false;\n      }).map(function(r) {\n        r.result = !!r.relatedNodes.length;\n        return r;\n      });\n    }\n    var accesskeys_after_default = accesskeysAfter;\n    function accesskeysEvaluate(node) {\n      if (is_visible_default(node, false)) {\n        this.data(node.getAttribute('accesskey'));\n        this.relatedNodes([ node ]);\n      }\n      return true;\n    }\n    var accesskeys_evaluate_default = accesskeysEvaluate;\n    function focusableContentEvaluate(node, options, virtualNode) {\n      var tabbableElements = virtualNode.tabbableElements;\n      if (!tabbableElements) {\n        return false;\n      }\n      var tabbableContentElements = tabbableElements.filter(function(el) {\n        return el !== virtualNode;\n      });\n      return tabbableContentElements.length > 0;\n    }\n    var focusable_content_evaluate_default = focusableContentEvaluate;\n    function focusableDisabledEvaluate(node, options, virtualNode) {\n      var elementsThatCanBeDisabled = [ 'BUTTON', 'FIELDSET', 'INPUT', 'SELECT', 'TEXTAREA' ];\n      var tabbableElements = virtualNode.tabbableElements;\n      if (!tabbableElements || !tabbableElements.length) {\n        return true;\n      }\n      var relatedNodes = tabbableElements.reduce(function(out, _ref61) {\n        var el = _ref61.actualNode;\n        var nodeName2 = el.nodeName.toUpperCase();\n        if (elementsThatCanBeDisabled.includes(nodeName2)) {\n          out.push(el);\n        }\n        return out;\n      }, []);\n      this.relatedNodes(relatedNodes);\n      if (relatedNodes.length && is_modal_open_default()) {\n        return true;\n      }\n      return relatedNodes.length === 0;\n    }\n    var focusable_disabled_evaluate_default = focusableDisabledEvaluate;\n    function focusableElementEvaluate(node, options, virtualNode) {\n      if (virtualNode.hasAttr('contenteditable') && isContenteditable(virtualNode)) {\n        return true;\n      }\n      var isFocusable2 = virtualNode.isFocusable;\n      var tabIndex = parseInt(virtualNode.attr('tabindex'), 10);\n      tabIndex = !isNaN(tabIndex) ? tabIndex : null;\n      return tabIndex ? isFocusable2 && tabIndex >= 0 : isFocusable2;\n      function isContenteditable(vNode) {\n        var contenteditable = vNode.attr('contenteditable');\n        if (contenteditable === 'true' || contenteditable === '') {\n          return true;\n        }\n        if (contenteditable === 'false') {\n          return false;\n        }\n        var ancestor = closest_default(virtualNode.parent, '[contenteditable]');\n        if (!ancestor) {\n          return false;\n        }\n        return isContenteditable(ancestor);\n      }\n    }\n    var focusable_element_evaluate_default = focusableElementEvaluate;\n    function focusableModalOpenEvaluate(node, options, virtualNode) {\n      var tabbableElements = virtualNode.tabbableElements.map(function(_ref62) {\n        var actualNode = _ref62.actualNode;\n        return actualNode;\n      });\n      if (!tabbableElements || !tabbableElements.length) {\n        return true;\n      }\n      if (is_modal_open_default()) {\n        this.relatedNodes(tabbableElements);\n        return void 0;\n      }\n      return true;\n    }\n    var focusable_modal_open_evaluate_default = focusableModalOpenEvaluate;\n    function focusableNoNameEvaluate(node, options, virtualNode) {\n      var tabIndex = virtualNode.attr('tabindex');\n      var inFocusOrder = is_focusable_default(virtualNode) && tabIndex > -1;\n      if (!inFocusOrder) {\n        return false;\n      }\n      try {\n        return !accessible_text_virtual_default(virtualNode);\n      } catch (e) {\n        return void 0;\n      }\n    }\n    var focusable_no_name_evaluate_default = focusableNoNameEvaluate;\n    function focusableNotTabbableEvaluate(node, options, virtualNode) {\n      var elementsThatCanBeDisabled = [ 'BUTTON', 'FIELDSET', 'INPUT', 'SELECT', 'TEXTAREA' ];\n      var tabbableElements = virtualNode.tabbableElements;\n      if (!tabbableElements || !tabbableElements.length) {\n        return true;\n      }\n      var relatedNodes = tabbableElements.reduce(function(out, _ref63) {\n        var el = _ref63.actualNode;\n        var nodeName2 = el.nodeName.toUpperCase();\n        if (!elementsThatCanBeDisabled.includes(nodeName2)) {\n          out.push(el);\n        }\n        return out;\n      }, []);\n      this.relatedNodes(relatedNodes);\n      if (relatedNodes.length > 0 && is_modal_open_default()) {\n        return true;\n      }\n      return relatedNodes.length === 0;\n    }\n    var focusable_not_tabbable_evaluate_default = focusableNotTabbableEvaluate;\n    function landmarkIsTopLevelEvaluate(node) {\n      var landmarks = get_aria_roles_by_type_default('landmark');\n      var parent = get_composed_parent_default(node);\n      var nodeRole = get_role_default(node);\n      this.data({\n        role: nodeRole\n      });\n      while (parent) {\n        var role = parent.getAttribute('role');\n        if (!role && parent.nodeName.toUpperCase() !== 'FORM') {\n          role = implicit_role_default(parent);\n        }\n        if (role && landmarks.includes(role) && !(role === 'main' && nodeRole === 'complementary')) {\n          return false;\n        }\n        parent = get_composed_parent_default(parent);\n      }\n      return true;\n    }\n    var landmark_is_top_level_evaluate_default = landmarkIsTopLevelEvaluate;\n    function focusableDescendants(vNode) {\n      if (is_focusable_default(vNode)) {\n        return true;\n      }\n      if (!vNode.children) {\n        if (vNode.props.nodeType === 1) {\n          throw new Error('Cannot determine children');\n        }\n        return false;\n      }\n      return vNode.children.some(function(child) {\n        return focusableDescendants(child);\n      });\n    }\n    function noFocusbleContentEvaluate(node, options, virtualNode) {\n      if (!virtualNode.children) {\n        return void 0;\n      }\n      try {\n        return !virtualNode.children.some(function(child) {\n          return focusableDescendants(child);\n        });\n      } catch (e) {\n        return void 0;\n      }\n    }\n    var no_focusable_content_evaluate_default = noFocusbleContentEvaluate;\n    function tabindexEvaluate(node, options, virtualNode) {\n      var tabIndex = parseInt(virtualNode.attr('tabindex'), 10);\n      return isNaN(tabIndex) ? true : tabIndex <= 0;\n    }\n    var tabindex_evaluate_default = tabindexEvaluate;\n    function altSpaceValueEvaluate(node, options, virtualNode) {\n      var alt = virtualNode.attr('alt');\n      var isOnlySpace = /^\\s+$/;\n      return typeof alt === 'string' && isOnlySpace.test(alt);\n    }\n    var alt_space_value_evaluate_default = altSpaceValueEvaluate;\n    function duplicateImgLabelEvaluate(node, options, virtualNode) {\n      if ([ 'none', 'presentation' ].includes(get_role_default(virtualNode))) {\n        return false;\n      }\n      var parentVNode = closest_default(virtualNode, options.parentSelector);\n      if (!parentVNode) {\n        return false;\n      }\n      var visibleText = visible_virtual_default(parentVNode, true).toLowerCase();\n      if (visibleText === '') {\n        return false;\n      }\n      return visibleText === accessible_text_virtual_default(virtualNode).toLowerCase();\n    }\n    var duplicate_img_label_evaluate_default = duplicateImgLabelEvaluate;\n    function explicitEvaluate(node, options, virtualNode) {\n      if (virtualNode.attr('id')) {\n        if (!virtualNode.actualNode) {\n          return void 0;\n        }\n        var root = get_root_node_default2(virtualNode.actualNode);\n        var id = escape_selector_default(virtualNode.attr('id'));\n        var labels = Array.from(root.querySelectorAll('label[for=\"'.concat(id, '\"]')));\n        if (labels.length) {\n          try {\n            return labels.some(function(label5) {\n              if (!is_visible_default(label5)) {\n                return true;\n              } else {\n                return !!accessible_text_default(label5);\n              }\n            });\n          } catch (e) {\n            return void 0;\n          }\n        }\n      }\n      return false;\n    }\n    var explicit_evaluate_default = explicitEvaluate;\n    function helpSameAsLabelEvaluate(node, options, virtualNode) {\n      var labelText2 = label_virtual_default2(virtualNode), check4 = node.getAttribute('title');\n      if (!labelText2) {\n        return false;\n      }\n      if (!check4) {\n        check4 = '';\n        if (node.getAttribute('aria-describedby')) {\n          var ref = idrefs_default(node, 'aria-describedby');\n          check4 = ref.map(function(thing) {\n            return thing ? accessible_text_default(thing) : '';\n          }).join('');\n        }\n      }\n      return sanitize_default(check4) === sanitize_default(labelText2);\n    }\n    var help_same_as_label_evaluate_default = helpSameAsLabelEvaluate;\n    function hiddenExplicitLabelEvaluate(node, options, virtualNode) {\n      if (virtualNode.hasAttr('id')) {\n        if (!virtualNode.actualNode) {\n          return void 0;\n        }\n        var root = get_root_node_default2(node);\n        var id = escape_selector_default(node.getAttribute('id'));\n        var label5 = root.querySelector('label[for=\"'.concat(id, '\"]'));\n        if (label5 && !is_visible_default(label5, true)) {\n          var name;\n          try {\n            name = accessible_text_virtual_default(virtualNode).trim();\n          } catch (e) {\n            return void 0;\n          }\n          var isNameEmpty = name === '';\n          return isNameEmpty;\n        }\n      }\n      return false;\n    }\n    var hidden_explicit_label_evaluate_default = hiddenExplicitLabelEvaluate;\n    function implicitEvaluate(node, options, virtualNode) {\n      try {\n        var label5 = closest_default(virtualNode, 'label');\n        if (label5) {\n          return !!accessible_text_virtual_default(label5, {\n            inControlContext: true\n          });\n        }\n        return false;\n      } catch (e) {\n        return void 0;\n      }\n    }\n    var implicit_evaluate_default = implicitEvaluate;\n    function isStringContained(compare, compareWith) {\n      var curatedCompareWith = curateString(compareWith);\n      var curatedCompare = curateString(compare);\n      if (!curatedCompareWith || !curatedCompare) {\n        return false;\n      }\n      return curatedCompareWith.includes(curatedCompare);\n    }\n    function curateString(str) {\n      var noUnicodeStr = remove_unicode_default(str, {\n        emoji: true,\n        nonBmp: true,\n        punctuations: true\n      });\n      return sanitize_default(noUnicodeStr);\n    }\n    function labelContentNameMismatchEvaluate(node, options, virtualNode) {\n      var _ref64 = options || {}, pixelThreshold = _ref64.pixelThreshold, occuranceThreshold = _ref64.occuranceThreshold;\n      var accText = accessible_text_default(node).toLowerCase();\n      if (is_human_interpretable_default(accText) < 1) {\n        return void 0;\n      }\n      var textVNodes = visible_text_nodes_default(virtualNode);\n      var nonLigatureText = textVNodes.filter(function(textVNode) {\n        return !is_icon_ligature_default(textVNode, pixelThreshold, occuranceThreshold);\n      }).map(function(textVNode) {\n        return textVNode.actualNode.nodeValue;\n      }).join('');\n      var visibleText = sanitize_default(nonLigatureText).toLowerCase();\n      if (!visibleText) {\n        return true;\n      }\n      if (is_human_interpretable_default(visibleText) < 1) {\n        if (isStringContained(visibleText, accText)) {\n          return true;\n        }\n        return void 0;\n      }\n      return isStringContained(visibleText, accText);\n    }\n    var label_content_name_mismatch_evaluate_default = labelContentNameMismatchEvaluate;\n    function multipleLabelEvaluate(node) {\n      var id = escape_selector_default(node.getAttribute('id'));\n      var parent = node.parentNode;\n      var root = get_root_node_default2(node);\n      root = root.documentElement || root;\n      var labels = Array.from(root.querySelectorAll('label[for=\"'.concat(id, '\"]')));\n      if (labels.length) {\n        labels = labels.filter(function(label5) {\n          return is_visible_default(label5);\n        });\n      }\n      while (parent) {\n        if (parent.nodeName.toUpperCase() === 'LABEL' && labels.indexOf(parent) === -1) {\n          labels.push(parent);\n        }\n        parent = parent.parentNode;\n      }\n      this.relatedNodes(labels);\n      if (labels.length > 1) {\n        var ATVisibleLabels = labels.filter(function(label5) {\n          return is_visible_default(label5, true);\n        });\n        if (ATVisibleLabels.length > 1) {\n          return void 0;\n        }\n        var labelledby = idrefs_default(node, 'aria-labelledby');\n        return !labelledby.includes(ATVisibleLabels[0]) ? void 0 : false;\n      }\n      return false;\n    }\n    var multiple_label_evaluate_default = multipleLabelEvaluate;\n    function titleOnlyEvaluate(node, options, virtualNode) {\n      var labelText2 = label_virtual_default2(virtualNode);\n      var title = title_text_default(virtualNode);\n      var ariaDescribedBy = virtualNode.attr('aria-describedby');\n      return !labelText2 && !!(title || ariaDescribedBy);\n    }\n    var title_only_evaluate_default = titleOnlyEvaluate;\n    function landmarkIsUniqueAfter(results) {\n      var uniqueLandmarks = [];\n      return results.filter(function(currentResult) {\n        var findMatch = function findMatch(someResult) {\n          return currentResult.data.role === someResult.data.role && currentResult.data.accessibleText === someResult.data.accessibleText;\n        };\n        var matchedResult = uniqueLandmarks.find(findMatch);\n        if (matchedResult) {\n          matchedResult.result = false;\n          matchedResult.relatedNodes.push(currentResult.relatedNodes[0]);\n          return false;\n        }\n        uniqueLandmarks.push(currentResult);\n        currentResult.relatedNodes = [];\n        return true;\n      });\n    }\n    var landmark_is_unique_after_default = landmarkIsUniqueAfter;\n    function landmarkIsUniqueEvaluate(node, options, virtualNode) {\n      var role = get_role_default(node);\n      var accessibleText2 = accessible_text_virtual_default(virtualNode);\n      accessibleText2 = accessibleText2 ? accessibleText2.toLowerCase() : null;\n      this.data({\n        role: role,\n        accessibleText: accessibleText2\n      });\n      this.relatedNodes([ node ]);\n      return true;\n    }\n    var landmark_is_unique_evaluate_default = landmarkIsUniqueEvaluate;\n    function hasValue(value) {\n      return (value || '').trim() !== '';\n    }\n    function hasLangEvaluate(node, options, virtualNode) {\n      var xhtml2 = typeof document !== 'undefined' ? is_xhtml_default(document) : false;\n      if (options.attributes.includes('xml:lang') && options.attributes.includes('lang') && hasValue(virtualNode.attr('xml:lang')) && !hasValue(virtualNode.attr('lang')) && !xhtml2) {\n        this.data({\n          messageKey: 'noXHTML'\n        });\n        return false;\n      }\n      var hasLang = options.attributes.some(function(name) {\n        return hasValue(virtualNode.attr(name));\n      });\n      if (!hasLang) {\n        this.data({\n          messageKey: 'noLang'\n        });\n        return false;\n      }\n      return true;\n    }\n    var has_lang_evaluate_default = hasLangEvaluate;\n    function validLangEvaluate(node, options, virtualNode) {\n      var invalid = [];\n      options.attributes.forEach(function(langAttr) {\n        var langVal = virtualNode.attr(langAttr);\n        if (typeof langVal !== 'string') {\n          return;\n        }\n        var baselangVal = get_base_lang_default(langVal);\n        var invalidLang = options.value ? !options.value.map(get_base_lang_default).includes(baselangVal) : !valid_langs_default(baselangVal);\n        if (baselangVal !== '' && invalidLang || langVal !== '' && !sanitize_default(langVal)) {\n          invalid.push(langAttr + '=\"' + virtualNode.attr(langAttr) + '\"');\n        }\n      });\n      if (invalid.length) {\n        this.data(invalid);\n        return true;\n      }\n      return false;\n    }\n    var valid_lang_evaluate_default = validLangEvaluate;\n    function xmlLangMismatchEvaluate(node, options, vNode) {\n      var primaryLangValue = get_base_lang_default(vNode.attr('lang'));\n      var primaryXmlLangValue = get_base_lang_default(vNode.attr('xml:lang'));\n      return primaryLangValue === primaryXmlLangValue;\n    }\n    var xml_lang_mismatch_evaluate_default = xmlLangMismatchEvaluate;\n    function dlitemEvaluate(node) {\n      var parent = get_composed_parent_default(node);\n      var parentTagName = parent.nodeName.toUpperCase();\n      var parentRole = get_explicit_role_default(parent);\n      if (parentTagName === 'DIV' && [ 'presentation', 'none', null ].includes(parentRole)) {\n        parent = get_composed_parent_default(parent);\n        parentTagName = parent.nodeName.toUpperCase();\n        parentRole = get_explicit_role_default(parent);\n      }\n      if (parentTagName !== 'DL') {\n        return false;\n      }\n      if (!parentRole || [ 'presentation', 'none', 'list' ].includes(parentRole)) {\n        return true;\n      }\n      return false;\n    }\n    var dlitem_evaluate_default = dlitemEvaluate;\n    function listitemEvaluate(node) {\n      var parent = get_composed_parent_default(node);\n      if (!parent) {\n        return void 0;\n      }\n      var parentTagName = parent.nodeName.toUpperCase();\n      var parentRole = (parent.getAttribute('role') || '').toLowerCase();\n      if ([ 'presentation', 'none', 'list' ].includes(parentRole)) {\n        return true;\n      }\n      if (parentRole && is_valid_role_default(parentRole)) {\n        this.data({\n          messageKey: 'roleNotValid'\n        });\n        return false;\n      }\n      return [ 'UL', 'OL' ].includes(parentTagName);\n    }\n    var listitem_evaluate_default = listitemEvaluate;\n    function onlyDlitemsEvaluate(node, options, virtualNode) {\n      var ALLOWED_ROLES = [ 'definition', 'term', 'list' ];\n      var base = {\n        badNodes: [],\n        hasNonEmptyTextNode: false\n      };\n      var content = virtualNode.children.reduce(function(content2, child) {\n        var actualNode = child.actualNode;\n        if (actualNode.nodeName.toUpperCase() === 'DIV' && get_role_default(actualNode) === null) {\n          return content2.concat(child.children);\n        }\n        return content2.concat(child);\n      }, []);\n      var result = content.reduce(function(out, childNode) {\n        var actualNode = childNode.actualNode;\n        var tagName = actualNode.nodeName.toUpperCase();\n        if (actualNode.nodeType === 1 && is_visible_default(actualNode, true, false)) {\n          var explicitRole2 = get_explicit_role_default(actualNode);\n          if (tagName !== 'DT' && tagName !== 'DD' || explicitRole2) {\n            if (!ALLOWED_ROLES.includes(explicitRole2)) {\n              out.badNodes.push(actualNode);\n            }\n          }\n        } else if (actualNode.nodeType === 3 && actualNode.nodeValue.trim() !== '') {\n          out.hasNonEmptyTextNode = true;\n        }\n        return out;\n      }, base);\n      if (result.badNodes.length) {\n        this.relatedNodes(result.badNodes);\n      }\n      return !!result.badNodes.length || result.hasNonEmptyTextNode;\n    }\n    var only_dlitems_evaluate_default = onlyDlitemsEvaluate;\n    function onlyListitemsEvaluate(node, options, virtualNode) {\n      var hasNonEmptyTextNode = false;\n      var atLeastOneListitem = false;\n      var isEmpty = true;\n      var badNodes = [];\n      var badRoleNodes = [];\n      var badRoles = [];\n      virtualNode.children.forEach(function(vNode) {\n        var actualNode = vNode.actualNode;\n        if (actualNode.nodeType === 3 && actualNode.nodeValue.trim() !== '') {\n          hasNonEmptyTextNode = true;\n          return;\n        }\n        if (actualNode.nodeType !== 1 || !is_visible_default(actualNode, true, false)) {\n          return;\n        }\n        isEmpty = false;\n        var isLi = actualNode.nodeName.toUpperCase() === 'LI';\n        var role = get_role_default(vNode);\n        var isListItemRole = role === 'listitem';\n        if (!isLi && !isListItemRole) {\n          badNodes.push(actualNode);\n        }\n        if (isLi && !isListItemRole) {\n          badRoleNodes.push(actualNode);\n          if (!badRoles.includes(role)) {\n            badRoles.push(role);\n          }\n        }\n        if (isListItemRole) {\n          atLeastOneListitem = true;\n        }\n      });\n      if (hasNonEmptyTextNode || badNodes.length) {\n        this.relatedNodes(badNodes);\n        return true;\n      }\n      if (isEmpty || atLeastOneListitem) {\n        return false;\n      }\n      this.relatedNodes(badRoleNodes);\n      this.data({\n        messageKey: 'roleNotValid',\n        roles: badRoles.join(', ')\n      });\n      return true;\n    }\n    var only_listitems_evaluate_default = onlyListitemsEvaluate;\n    function structuredDlitemsEvaluate(node, options, virtualNode) {\n      var children = virtualNode.children;\n      if (!children || !children.length) {\n        return false;\n      }\n      var hasDt = false, hasDd = false, nodeName2;\n      for (var i = 0; i < children.length; i++) {\n        nodeName2 = children[i].props.nodeName.toUpperCase();\n        if (nodeName2 === 'DT') {\n          hasDt = true;\n        }\n        if (hasDt && nodeName2 === 'DD') {\n          return false;\n        }\n        if (nodeName2 === 'DD') {\n          hasDd = true;\n        }\n      }\n      return hasDt || hasDd;\n    }\n    var structured_dlitems_evaluate_default = structuredDlitemsEvaluate;\n    function captionEvaluate(node, options, virtualNode) {\n      var tracks = query_selector_all_default(virtualNode, 'track');\n      var hasCaptions = tracks.some(function(vNode) {\n        return (vNode.attr('kind') || '').toLowerCase() === 'captions';\n      });\n      return hasCaptions ? false : void 0;\n    }\n    var caption_evaluate_default = captionEvaluate;\n    function frameTestedEvaluate(node, options) {\n      var resolve = this.async();\n      var _Object$assign = Object.assign({\n        isViolation: false,\n        timeout: 500\n      }, options), isViolation = _Object$assign.isViolation, timeout = _Object$assign.timeout;\n      var timer = setTimeout(function() {\n        timer = setTimeout(function() {\n          timer = null;\n          resolve(isViolation ? false : void 0);\n        }, 0);\n      }, timeout);\n      _respondable(node.contentWindow, 'axe.ping', null, void 0, function() {\n        if (timer !== null) {\n          clearTimeout(timer);\n          resolve(true);\n        }\n      });\n    }\n    var frame_tested_evaluate_default = frameTestedEvaluate;\n    function noAutoplayAudioEvaluate(node, options) {\n      if (!node.duration) {\n        console.warn('axe.utils.preloadMedia did not load metadata');\n        return void 0;\n      }\n      var _options$allowedDurat = options.allowedDuration, allowedDuration = _options$allowedDurat === void 0 ? 3 : _options$allowedDurat;\n      var playableDuration = getPlayableDuration(node);\n      if (playableDuration <= allowedDuration && !node.hasAttribute('loop')) {\n        return true;\n      }\n      if (!node.hasAttribute('controls')) {\n        return false;\n      }\n      return true;\n      function getPlayableDuration(elm) {\n        if (!elm.currentSrc) {\n          return 0;\n        }\n        var playbackRange = getPlaybackRange(elm.currentSrc);\n        if (!playbackRange) {\n          return Math.abs(elm.duration - (elm.currentTime || 0));\n        }\n        if (playbackRange.length === 1) {\n          return Math.abs(elm.duration - playbackRange[0]);\n        }\n        return Math.abs(playbackRange[1] - playbackRange[0]);\n      }\n      function getPlaybackRange(src) {\n        var match = src.match(/#t=(.*)/);\n        if (!match) {\n          return;\n        }\n        var _match = _slicedToArray(match, 2), value = _match[1];\n        var ranges = value.split(',');\n        return ranges.map(function(range) {\n          if (/:/.test(range)) {\n            return convertHourMinSecToSeconds(range);\n          }\n          return parseFloat(range);\n        });\n      }\n      function convertHourMinSecToSeconds(hhMmSs) {\n        var parts = hhMmSs.split(':');\n        var secs = 0;\n        var mins = 1;\n        while (parts.length > 0) {\n          secs += mins * parseInt(parts.pop(), 10);\n          mins *= 60;\n        }\n        return parseFloat(secs);\n      }\n    }\n    var no_autoplay_audio_evaluate_default = noAutoplayAudioEvaluate;\n    function ariaAllowedAttrMatches(node, virtualNode) {\n      var aria43 = /^aria-/;\n      var attrs = virtualNode.attrNames;\n      if (attrs.length) {\n        for (var _i23 = 0, l = attrs.length; _i23 < l; _i23++) {\n          if (aria43.test(attrs[_i23])) {\n            return true;\n          }\n        }\n      }\n      return false;\n    }\n    var aria_allowed_attr_matches_default = ariaAllowedAttrMatches;\n    function ariaAllowedRoleMatches(node) {\n      return get_explicit_role_default(node, {\n        dpub: true,\n        fallback: true\n      }) !== null;\n    }\n    var aria_allowed_role_matches_default = ariaAllowedRoleMatches;\n    function ariaHasAttrMatches(node) {\n      var aria43 = /^aria-/;\n      if (node.hasAttributes()) {\n        var attrs = get_node_attributes_default(node);\n        for (var i = 0, l = attrs.length; i < l; i++) {\n          if (aria43.test(attrs[i].name)) {\n            return true;\n          }\n        }\n      }\n      return false;\n    }\n    var aria_has_attr_matches_default = ariaHasAttrMatches;\n    function shouldMatchElement(el) {\n      if (!el) {\n        return true;\n      }\n      if (el.getAttribute('aria-hidden') === 'true') {\n        return false;\n      }\n      return shouldMatchElement(get_composed_parent_default(el));\n    }\n    function ariaHiddenFocusMatches(node) {\n      return shouldMatchElement(get_composed_parent_default(node));\n    }\n    var aria_hidden_focus_matches_default = ariaHiddenFocusMatches;\n    function ariaRequiredChildrenMatches(node, virtualNode) {\n      var role = get_explicit_role_default(virtualNode, {\n        dpub: true\n      });\n      return !!required_owned_default(role);\n    }\n    var aria_required_children_matches_default = ariaRequiredChildrenMatches;\n    function ariaRequiredParentMatches(node, virtualNode) {\n      var role = get_explicit_role_default(virtualNode);\n      return !!required_context_default(role);\n    }\n    var aria_required_parent_matches_default = ariaRequiredParentMatches;\n    function autocompleteMatches(node, virtualNode) {\n      var autocomplete2 = virtualNode.attr('autocomplete');\n      if (!autocomplete2 || sanitize_default(autocomplete2) === '') {\n        return false;\n      }\n      var nodeName2 = virtualNode.props.nodeName;\n      if ([ 'textarea', 'input', 'select' ].includes(nodeName2) === false) {\n        return false;\n      }\n      var excludedInputTypes = [ 'submit', 'reset', 'button', 'hidden' ];\n      if (nodeName2 === 'input' && excludedInputTypes.includes(virtualNode.props.type)) {\n        return false;\n      }\n      var ariaDisabled = virtualNode.attr('aria-disabled') || 'false';\n      if (virtualNode.hasAttr('disabled') || ariaDisabled.toLowerCase() === 'true') {\n        return false;\n      }\n      var role = virtualNode.attr('role');\n      var tabIndex = virtualNode.attr('tabindex');\n      if (tabIndex === '-1' && role) {\n        var roleDef = standards_default.ariaRoles[role];\n        if (roleDef === void 0 || roleDef.type !== 'widget') {\n          return false;\n        }\n      }\n      if (tabIndex === '-1' && virtualNode.actualNode && !is_visible_default(virtualNode.actualNode, false) && !is_visible_default(virtualNode.actualNode, true)) {\n        return false;\n      }\n      return true;\n    }\n    var autocomplete_matches_default = autocompleteMatches;\n    function isInitiatorMatches(node, virtualNode, context3) {\n      return context3.initiator;\n    }\n    var is_initiator_matches_default = isInitiatorMatches;\n    function bypassMatches(node, virtualNode, context3) {\n      if (is_initiator_matches_default(node, virtualNode, context3)) {\n        return !!node.querySelector('a[href]');\n      }\n      return true;\n    }\n    var bypass_matches_default = bypassMatches;\n    function colorContrastMatches(node, virtualNode) {\n      var _virtualNode$props = virtualNode.props, nodeName2 = _virtualNode$props.nodeName, inputType = _virtualNode$props.type;\n      if (nodeName2 === 'option') {\n        return false;\n      }\n      if (nodeName2 === 'select' && !node.options.length) {\n        return false;\n      }\n      var nonTextInput = [ 'hidden', 'range', 'color', 'checkbox', 'radio', 'image' ];\n      if (nodeName2 === 'input' && nonTextInput.includes(inputType)) {\n        return false;\n      }\n      if (is_disabled_default(virtualNode)) {\n        return false;\n      }\n      var formElements = [ 'input', 'select', 'textarea' ];\n      if (formElements.includes(nodeName2)) {\n        var style = window.getComputedStyle(node);\n        var textIndent = parseInt(style.getPropertyValue('text-indent'), 10);\n        if (textIndent) {\n          var rect = node.getBoundingClientRect();\n          rect = {\n            top: rect.top,\n            bottom: rect.bottom,\n            left: rect.left + textIndent,\n            right: rect.right + textIndent\n          };\n          if (!visually_overlaps_default(rect, node)) {\n            return false;\n          }\n        }\n        return true;\n      }\n      var nodeParentLabel = find_up_virtual_default(virtualNode, 'label');\n      if (nodeName2 === 'label' || nodeParentLabel) {\n        var labelNode = nodeParentLabel || node;\n        var labelVirtual3 = nodeParentLabel ? get_node_from_tree_default(nodeParentLabel) : virtualNode;\n        if (labelNode.htmlFor) {\n          var doc = get_root_node_default2(labelNode);\n          var explicitControl = doc.getElementById(labelNode.htmlFor);\n          var explicitControlVirtual = explicitControl && get_node_from_tree_default(explicitControl);\n          if (explicitControlVirtual && is_disabled_default(explicitControlVirtual)) {\n            return false;\n          }\n        }\n        var query = 'input:not([type=\"hidden\"],[type=\"image\"],[type=\"button\"],[type=\"submit\"],[type=\"reset\"]), select, textarea';\n        var implicitControl = query_selector_all_default(labelVirtual3, query)[0];\n        if (implicitControl && is_disabled_default(implicitControl)) {\n          return false;\n        }\n      }\n      var ariaLabelledbyControls = [];\n      var ancestorNode = virtualNode;\n      while (ancestorNode) {\n        if (ancestorNode.props.id) {\n          var virtualControls = get_accessible_refs_default(ancestorNode).filter(function(control) {\n            return token_list_default(control.getAttribute('aria-labelledby') || '').includes(ancestorNode.props.id);\n          }).map(function(control) {\n            return get_node_from_tree_default(control);\n          });\n          ariaLabelledbyControls.push.apply(ariaLabelledbyControls, _toConsumableArray(virtualControls));\n        }\n        ancestorNode = ancestorNode.parent;\n      }\n      if (ariaLabelledbyControls.length > 0 && ariaLabelledbyControls.every(is_disabled_default)) {\n        return false;\n      }\n      var visibleText = visible_virtual_default(virtualNode, false, true);\n      var removeUnicodeOptions = {\n        emoji: true,\n        nonBmp: false,\n        punctuations: true\n      };\n      if (!visibleText || !remove_unicode_default(visibleText, removeUnicodeOptions)) {\n        return false;\n      }\n      var range = document.createRange();\n      var childNodes = virtualNode.children;\n      for (var index = 0; index < childNodes.length; index++) {\n        var child = childNodes[index];\n        if (child.actualNode.nodeType === 3 && sanitize_default(child.actualNode.nodeValue) !== '') {\n          range.selectNodeContents(child.actualNode);\n        }\n      }\n      var rects = range.getClientRects();\n      for (var _index = 0; _index < rects.length; _index++) {\n        if (visually_overlaps_default(rects[_index], node)) {\n          return true;\n        }\n      }\n      return false;\n    }\n    var color_contrast_matches_default = colorContrastMatches;\n    function dataTableLargeMatches(node) {\n      if (is_data_table_default(node)) {\n        var tableArray = to_grid_default(node);\n        return tableArray.length >= 3 && tableArray[0].length >= 3 && tableArray[1].length >= 3 && tableArray[2].length >= 3;\n      }\n      return false;\n    }\n    var data_table_large_matches_default = dataTableLargeMatches;\n    function dataTableMatches(node) {\n      return is_data_table_default(node);\n    }\n    var data_table_matches_default = dataTableMatches;\n    function duplicateIdActiveMatches(node) {\n      var id = node.getAttribute('id').trim();\n      var idSelector = '*[id=\"'.concat(escape_selector_default(id), '\"]');\n      var idMatchingElms = Array.from(get_root_node_default2(node).querySelectorAll(idSelector));\n      return !is_accessible_ref_default(node) && idMatchingElms.some(is_focusable_default);\n    }\n    var duplicate_id_active_matches_default = duplicateIdActiveMatches;\n    function duplicateIdAriaMatches(node) {\n      return is_accessible_ref_default(node);\n    }\n    var duplicate_id_aria_matches_default = duplicateIdAriaMatches;\n    function duplicateIdMiscMatches(node) {\n      var id = node.getAttribute('id').trim();\n      var idSelector = '*[id=\"'.concat(escape_selector_default(id), '\"]');\n      var idMatchingElms = Array.from(get_root_node_default2(node).querySelectorAll(idSelector));\n      return !is_accessible_ref_default(node) && idMatchingElms.every(function(elm) {\n        return !is_focusable_default(elm);\n      });\n    }\n    var duplicate_id_misc_matches_default = duplicateIdMiscMatches;\n    function frameFocusableContentMatches(node, virtualNode, context3) {\n      return !context3.initiator && !context3.focusable && context3.boundingClientRect.width * context3.boundingClientRect.height > 1;\n    }\n    var frame_focusable_content_matches_default = frameFocusableContentMatches;\n    function frameTitleHasTextMatches(node) {\n      var title = node.getAttribute('title');\n      return !!sanitize_default(title);\n    }\n    var frame_title_has_text_matches_default = frameTitleHasTextMatches;\n    function headingMatches(node) {\n      var explicitRoles;\n      if (node.hasAttribute('role')) {\n        explicitRoles = node.getAttribute('role').split(/\\s+/i).filter(axe.commons.aria.isValidRole);\n      }\n      if (explicitRoles && explicitRoles.length > 0) {\n        return explicitRoles.includes('heading');\n      } else {\n        return axe.commons.aria.implicitRole(node) === 'heading';\n      }\n    }\n    var heading_matches_default = headingMatches;\n    function svgNamespaceMatches(node, virtualNode) {\n      try {\n        var nodeName2 = virtualNode.props.nodeName;\n        if (nodeName2 === 'svg') {\n          return true;\n        }\n        return !!closest_default(virtualNode, 'svg');\n      } catch (e) {\n        return false;\n      }\n    }\n    var svg_namespace_matches_default = svgNamespaceMatches;\n    function htmlNamespaceMatches(node, virtualNode) {\n      return !svg_namespace_matches_default(node, virtualNode);\n    }\n    var html_namespace_matches_default = htmlNamespaceMatches;\n    function identicalLinksSamePurposeMatches(node, virtualNode) {\n      var hasAccName = !!accessible_text_virtual_default(virtualNode);\n      if (!hasAccName) {\n        return false;\n      }\n      var role = get_role_default(node);\n      if (role && role !== 'link') {\n        return false;\n      }\n      return true;\n    }\n    var identical_links_same_purpose_matches_default = identicalLinksSamePurposeMatches;\n    function insertedIntoFocusOrderMatches(node) {\n      return inserted_into_focus_order_default(node);\n    }\n    var inserted_into_focus_order_matches_default = insertedIntoFocusOrderMatches;\n    function labelContentNameMismatchMatches(node, virtualNode) {\n      var role = get_role_default(node);\n      if (!role) {\n        return false;\n      }\n      var widgetRoles = get_aria_roles_by_type_default('widget');\n      var isWidgetType = widgetRoles.includes(role);\n      if (!isWidgetType) {\n        return false;\n      }\n      var rolesWithNameFromContents = get_aria_roles_supporting_name_from_content_default();\n      if (!rolesWithNameFromContents.includes(role)) {\n        return false;\n      }\n      if (!sanitize_default(arialabel_text_default(virtualNode)) && !sanitize_default(arialabelledby_text_default(node))) {\n        return false;\n      }\n      if (!sanitize_default(visible_virtual_default(virtualNode))) {\n        return false;\n      }\n      return true;\n    }\n    var label_content_name_mismatch_matches_default = labelContentNameMismatchMatches;\n    function labelMatches(node, virtualNode) {\n      if (virtualNode.props.nodeName !== 'input' || virtualNode.hasAttr('type') === false) {\n        return true;\n      }\n      var type = virtualNode.attr('type').toLowerCase();\n      return [ 'hidden', 'image', 'button', 'submit', 'reset' ].includes(type) === false;\n    }\n    var label_matches_default = labelMatches;\n    function landmarkHasBodyContextMatches(node, virtualNode) {\n      var nativeScopeFilter = 'article, aside, main, nav, section';\n      return node.hasAttribute('role') || !find_up_virtual_default(virtualNode, nativeScopeFilter);\n    }\n    var landmark_has_body_context_matches_default = landmarkHasBodyContextMatches;\n    function landmarkUniqueMatches(node, virtualNode) {\n      var excludedParentsForHeaderFooterLandmarks = [ 'article', 'aside', 'main', 'nav', 'section' ].join(',');\n      function isHeaderFooterLandmark(headerFooterElement) {\n        return !find_up_virtual_default(headerFooterElement, excludedParentsForHeaderFooterLandmarks);\n      }\n      function isLandmarkVirtual(virtualNode2) {\n        var actualNode = virtualNode2.actualNode;\n        var landmarkRoles2 = get_aria_roles_by_type_default('landmark');\n        var role = get_role_default(actualNode);\n        if (!role) {\n          return false;\n        }\n        var nodeName2 = actualNode.nodeName.toUpperCase();\n        if (nodeName2 === 'HEADER' || nodeName2 === 'FOOTER') {\n          return isHeaderFooterLandmark(virtualNode2);\n        }\n        if (nodeName2 === 'SECTION' || nodeName2 === 'FORM') {\n          var accessibleText2 = accessible_text_virtual_default(virtualNode2);\n          return !!accessibleText2;\n        }\n        return landmarkRoles2.indexOf(role) >= 0 || role === 'region';\n      }\n      return isLandmarkVirtual(virtualNode) && is_visible_default(node, true);\n    }\n    var landmark_unique_matches_default = landmarkUniqueMatches;\n    function dataTableMatches2(node) {\n      return !is_data_table_default(node) && !is_focusable_default(node);\n    }\n    var layout_table_matches_default = dataTableMatches2;\n    function linkInTextBlockMatches(node) {\n      var text32 = sanitize_default(node.textContent);\n      var role = node.getAttribute('role');\n      if (role && role !== 'link') {\n        return false;\n      }\n      if (!text32) {\n        return false;\n      }\n      if (!is_visible_default(node, false)) {\n        return false;\n      }\n      return is_in_text_block_default(node);\n    }\n    var link_in_text_block_matches_default = linkInTextBlockMatches;\n    function nestedInteractiveMatches(node, virtualNode) {\n      var role = get_role_default(virtualNode);\n      if (!role) {\n        return false;\n      }\n      return !!standards_default.ariaRoles[role].childrenPresentational;\n    }\n    var nested_interactive_matches_default = nestedInteractiveMatches;\n    function noAutoplayAudioMatches(node) {\n      if (!node.currentSrc) {\n        return false;\n      }\n      if (node.hasAttribute('paused') || node.hasAttribute('muted')) {\n        return false;\n      }\n      return true;\n    }\n    var no_autoplay_audio_matches_default = noAutoplayAudioMatches;\n    function noEmptyRoleMatches(node, virtualNode) {\n      if (!virtualNode.hasAttr('role')) {\n        return false;\n      }\n      if (!virtualNode.attr('role').trim()) {\n        return false;\n      }\n      return true;\n    }\n    var no_empty_role_matches_default = noEmptyRoleMatches;\n    function noExplicitNameRequired(node, virtualNode) {\n      var role = get_explicit_role_default(virtualNode);\n      if (!role || [ 'none', 'presentation' ].includes(role)) {\n        return true;\n      }\n      var _ref65 = aria_roles_default[role] || {}, accessibleNameRequired = _ref65.accessibleNameRequired;\n      if (accessibleNameRequired || is_focusable_default(virtualNode)) {\n        return true;\n      }\n      return false;\n    }\n    var no_explicit_name_required_matches_default = noExplicitNameRequired;\n    function noNamingMethodMatches(node, virtualNode) {\n      var _get_element_spec_def = get_element_spec_default(virtualNode), namingMethods = _get_element_spec_def.namingMethods;\n      if (namingMethods && namingMethods.length !== 0) {\n        return false;\n      }\n      if (get_explicit_role_default(virtualNode) === 'combobox' && query_selector_all_default(virtualNode, 'input:not([type=\"hidden\"])').length) {\n        return false;\n      }\n      return true;\n    }\n    var no_naming_method_matches_default = noNamingMethodMatches;\n    function noRoleMatches(node) {\n      return !node.getAttribute('role');\n    }\n    var no_role_matches_default = noRoleMatches;\n    function notHtmlMatches(node, virtualNode) {\n      return virtualNode.props.nodeName !== 'html';\n    }\n    var not_html_matches_default = notHtmlMatches;\n    function pAsHeadingMatches(node) {\n      var children = Array.from(node.parentNode.childNodes);\n      var nodeText = node.textContent.trim();\n      var isSentence = /[.!?:;](?![.!?:;])/g;\n      if (nodeText.length === 0 || (nodeText.match(isSentence) || []).length >= 2) {\n        return false;\n      }\n      var siblingsAfter = children.slice(children.indexOf(node) + 1).filter(function(elm) {\n        return elm.nodeName.toUpperCase() === 'P' && elm.textContent.trim() !== '';\n      });\n      return siblingsAfter.length !== 0;\n    }\n    var p_as_heading_matches_default = pAsHeadingMatches;\n    function scrollableRegionFocusableMatches(node, virtualNode) {\n      if (!!get_scroll_default(node, 13) === false) {\n        return false;\n      }\n      var role = get_explicit_role_default(virtualNode);\n      if (standards_default.ariaRoles.combobox.requiredOwned.includes(role)) {\n        if (closest_default(virtualNode, '[role~=\"combobox\"]')) {\n          return false;\n        }\n        var id = virtualNode.attr('id');\n        if (id) {\n          var doc = get_root_node_default(node);\n          var owned = Array.from(doc.querySelectorAll('[aria-owns~=\"'.concat(id, '\"], [aria-controls~=\"').concat(id, '\"]')));\n          var comboboxOwned = owned.some(function(el) {\n            var roles = token_list_default(el.getAttribute('role'));\n            return roles.includes('combobox');\n          });\n          if (comboboxOwned) {\n            return false;\n          }\n        }\n      }\n      var nodeAndDescendents = query_selector_all_default(virtualNode, '*');\n      var hasVisibleChildren = nodeAndDescendents.some(function(elm) {\n        return has_content_virtual_default(elm, true, true);\n      });\n      if (!hasVisibleChildren) {\n        return false;\n      }\n      return true;\n    }\n    var scrollable_region_focusable_matches_default = scrollableRegionFocusableMatches;\n    function skipLinkMatches(node) {\n      return is_skip_link_default(node) && is_offscreen_default(node);\n    }\n    var skip_link_matches_default = skipLinkMatches;\n    function windowIsTopMatches(node) {\n      return node.ownerDocument.defaultView.self === node.ownerDocument.defaultView.top;\n    }\n    var window_is_top_matches_default = windowIsTopMatches;\n    function xmlLangMismatchMatches(node) {\n      var primaryLangValue = get_base_lang_default(node.getAttribute('lang'));\n      var primaryXmlLangValue = get_base_lang_default(node.getAttribute('xml:lang'));\n      return valid_langs_default(primaryLangValue) && valid_langs_default(primaryXmlLangValue);\n    }\n    var xml_lang_mismatch_matches_default = xmlLangMismatchMatches;\n    var metadataFunctionMap = {\n      'abstractrole-evaluate': abstractrole_evaluate_default,\n      'aria-allowed-attr-evaluate': aria_allowed_attr_evaluate_default,\n      'aria-allowed-role-evaluate': aria_allowed_role_evaluate_default,\n      'aria-errormessage-evaluate': aria_errormessage_evaluate_default,\n      'aria-hidden-body-evaluate': aria_hidden_body_evaluate_default,\n      'aria-prohibited-attr-evaluate': aria_prohibited_attr_evaluate_default,\n      'aria-required-attr-evaluate': aria_required_attr_evaluate_default,\n      'aria-required-children-evaluate': aria_required_children_evaluate_default,\n      'aria-required-parent-evaluate': aria_required_parent_evaluate_default,\n      'aria-roledescription-evaluate': aria_roledescription_evaluate_default,\n      'aria-unsupported-attr-evaluate': aria_unsupported_attr_evaluate_default,\n      'aria-valid-attr-evaluate': aria_valid_attr_evaluate_default,\n      'aria-valid-attr-value-evaluate': aria_valid_attr_value_evaluate_default,\n      'fallbackrole-evaluate': fallbackrole_evaluate_default,\n      'has-global-aria-attribute-evaluate': has_global_aria_attribute_evaluate_default,\n      'has-widget-role-evaluate': has_widget_role_evaluate_default,\n      'invalidrole-evaluate': invalidrole_evaluate_default,\n      'is-element-focusable-evaluate': is_element_focusable_evaluate_default,\n      'no-implicit-explicit-label-evaluate': no_implicit_explicit_label_evaluate_default,\n      'unsupportedrole-evaluate': unsupportedrole_evaluate_default,\n      'valid-scrollable-semantics-evaluate': valid_scrollable_semantics_evaluate_default,\n      'caption-faked-evaluate': caption_faked_evaluate_default,\n      'html5-scope-evaluate': html5_scope_evaluate_default,\n      'same-caption-summary-evaluate': same_caption_summary_evaluate_default,\n      'scope-value-evaluate': scope_value_evaluate_default,\n      'td-has-header-evaluate': td_has_header_evaluate_default,\n      'td-headers-attr-evaluate': td_headers_attr_evaluate_default,\n      'th-has-data-cells-evaluate': th_has_data_cells_evaluate_default,\n      'hidden-content-evaluate': hidden_content_evaluate_default,\n      'color-contrast-evaluate': color_contrast_evaluate_default,\n      'link-in-text-block-evaluate': link_in_text_block_evaluate_default,\n      'autocomplete-appropriate-evaluate': autocomplete_appropriate_evaluate_default,\n      'autocomplete-valid-evaluate': autocomplete_valid_evaluate_default,\n      'attr-non-space-content-evaluate': attr_non_space_content_evaluate_default,\n      'has-descendant-after': has_descendant_after_default,\n      'has-descendant-evaluate': has_descendant_evaluate_default,\n      'has-text-content-evaluate': has_text_content_evaluate_default,\n      'matches-definition-evaluate': matches_definition_evaluate_default,\n      'page-no-duplicate-after': page_no_duplicate_after_default,\n      'page-no-duplicate-evaluate': page_no_duplicate_evaluate_default,\n      'heading-order-after': heading_order_after_default,\n      'heading-order-evaluate': heading_order_evaluate_default,\n      'identical-links-same-purpose-after': identical_links_same_purpose_after_default,\n      'identical-links-same-purpose-evaluate': identical_links_same_purpose_evaluate_default,\n      'internal-link-present-evaluate': internal_link_present_evaluate_default,\n      'meta-refresh-evaluate': meta_refresh_evaluate_default,\n      'p-as-heading-evaluate': p_as_heading_evaluate_default,\n      'region-evaluate': region_evaluate_default,\n      'skip-link-evaluate': skip_link_evaluate_default,\n      'unique-frame-title-after': unique_frame_title_after_default,\n      'unique-frame-title-evaluate': unique_frame_title_evaluate_default,\n      'aria-label-evaluate': aria_label_evaluate_default,\n      'aria-labelledby-evaluate': aria_labelledby_evaluate_default,\n      'avoid-inline-spacing-evaluate': avoid_inline_spacing_evaluate_default,\n      'doc-has-title-evaluate': doc_has_title_evaluate_default,\n      'exists-evaluate': exists_evaluate_default,\n      'has-alt-evaluate': has_alt_evaluate_default,\n      'is-on-screen-evaluate': is_on_screen_evaluate_default,\n      'non-empty-if-present-evaluate': non_empty_if_present_evaluate_default,\n      'presentational-role-evaluate': presentational_role_evaluate_default,\n      'svg-non-empty-title-evaluate': svg_non_empty_title_evaluate_default,\n      'css-orientation-lock-evaluate': css_orientation_lock_evaluate_default,\n      'meta-viewport-scale-evaluate': meta_viewport_scale_evaluate_default,\n      'duplicate-id-after': duplicate_id_after_default,\n      'duplicate-id-evaluate': duplicate_id_evaluate_default,\n      'accesskeys-after': accesskeys_after_default,\n      'accesskeys-evaluate': accesskeys_evaluate_default,\n      'focusable-content-evaluate': focusable_content_evaluate_default,\n      'focusable-disabled-evaluate': focusable_disabled_evaluate_default,\n      'focusable-element-evaluate': focusable_element_evaluate_default,\n      'focusable-modal-open-evaluate': focusable_modal_open_evaluate_default,\n      'focusable-no-name-evaluate': focusable_no_name_evaluate_default,\n      'focusable-not-tabbable-evaluate': focusable_not_tabbable_evaluate_default,\n      'landmark-is-top-level-evaluate': landmark_is_top_level_evaluate_default,\n      'no-focusable-content-evaluate': no_focusable_content_evaluate_default,\n      'tabindex-evaluate': tabindex_evaluate_default,\n      'alt-space-value-evaluate': alt_space_value_evaluate_default,\n      'duplicate-img-label-evaluate': duplicate_img_label_evaluate_default,\n      'explicit-evaluate': explicit_evaluate_default,\n      'help-same-as-label-evaluate': help_same_as_label_evaluate_default,\n      'hidden-explicit-label-evaluate': hidden_explicit_label_evaluate_default,\n      'implicit-evaluate': implicit_evaluate_default,\n      'label-content-name-mismatch-evaluate': label_content_name_mismatch_evaluate_default,\n      'multiple-label-evaluate': multiple_label_evaluate_default,\n      'title-only-evaluate': title_only_evaluate_default,\n      'landmark-is-unique-after': landmark_is_unique_after_default,\n      'landmark-is-unique-evaluate': landmark_is_unique_evaluate_default,\n      'has-lang-evaluate': has_lang_evaluate_default,\n      'valid-lang-evaluate': valid_lang_evaluate_default,\n      'xml-lang-mismatch-evaluate': xml_lang_mismatch_evaluate_default,\n      'dlitem-evaluate': dlitem_evaluate_default,\n      'listitem-evaluate': listitem_evaluate_default,\n      'only-dlitems-evaluate': only_dlitems_evaluate_default,\n      'only-listitems-evaluate': only_listitems_evaluate_default,\n      'structured-dlitems-evaluate': structured_dlitems_evaluate_default,\n      'caption-evaluate': caption_evaluate_default,\n      'frame-tested-evaluate': frame_tested_evaluate_default,\n      'no-autoplay-audio-evaluate': no_autoplay_audio_evaluate_default,\n      'aria-allowed-attr-matches': aria_allowed_attr_matches_default,\n      'aria-allowed-role-matches': aria_allowed_role_matches_default,\n      'aria-form-field-name-matches': no_naming_method_matches_default,\n      'aria-has-attr-matches': aria_has_attr_matches_default,\n      'aria-hidden-focus-matches': aria_hidden_focus_matches_default,\n      'aria-required-children-matches': aria_required_children_matches_default,\n      'aria-required-parent-matches': aria_required_parent_matches_default,\n      'autocomplete-matches': autocomplete_matches_default,\n      'bypass-matches': bypass_matches_default,\n      'color-contrast-matches': color_contrast_matches_default,\n      'data-table-large-matches': data_table_large_matches_default,\n      'data-table-matches': data_table_matches_default,\n      'duplicate-id-active-matches': duplicate_id_active_matches_default,\n      'duplicate-id-aria-matches': duplicate_id_aria_matches_default,\n      'duplicate-id-misc-matches': duplicate_id_misc_matches_default,\n      'frame-focusable-content-matches': frame_focusable_content_matches_default,\n      'frame-title-has-text-matches': frame_title_has_text_matches_default,\n      'heading-matches': heading_matches_default,\n      'html-namespace-matches': html_namespace_matches_default,\n      'identical-links-same-purpose-matches': identical_links_same_purpose_matches_default,\n      'inserted-into-focus-order-matches': inserted_into_focus_order_matches_default,\n      'is-initiator-matches': is_initiator_matches_default,\n      'label-content-name-mismatch-matches': label_content_name_mismatch_matches_default,\n      'label-matches': label_matches_default,\n      'landmark-has-body-context-matches': landmark_has_body_context_matches_default,\n      'landmark-unique-matches': landmark_unique_matches_default,\n      'layout-table-matches': layout_table_matches_default,\n      'link-in-text-block-matches': link_in_text_block_matches_default,\n      'nested-interactive-matches': nested_interactive_matches_default,\n      'no-autoplay-audio-matches': no_autoplay_audio_matches_default,\n      'no-empty-role-matches': no_empty_role_matches_default,\n      'no-explicit-name-required-matches': no_explicit_name_required_matches_default,\n      'no-naming-method-matches': no_naming_method_matches_default,\n      'no-role-matches': no_role_matches_default,\n      'not-html-matches': not_html_matches_default,\n      'p-as-heading-matches': p_as_heading_matches_default,\n      'scrollable-region-focusable-matches': scrollable_region_focusable_matches_default,\n      'skip-link-matches': skip_link_matches_default,\n      'svg-namespace-matches': svg_namespace_matches_default,\n      'window-is-top-matches': window_is_top_matches_default,\n      'xml-lang-mismatch-matches': xml_lang_mismatch_matches_default\n    };\n    var metadata_function_map_default = metadataFunctionMap;\n    function CheckResult(check4) {\n      this.id = check4.id;\n      this.data = null;\n      this.relatedNodes = [];\n      this.result = null;\n    }\n    var check_result_default = CheckResult;\n    function createExecutionContext(spec) {\n      if (typeof spec === 'string') {\n        if (metadata_function_map_default[spec]) {\n          return metadata_function_map_default[spec];\n        }\n        if (/^\\s*function[\\s\\w]*\\(/.test(spec)) {\n          return new Function('return ' + spec + ';')();\n        }\n        throw new ReferenceError('Function ID does not exist in the metadata-function-map: '.concat(spec));\n      }\n      return spec;\n    }\n    function normalizeOptions() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      if (Array.isArray(options) || _typeof(options) !== 'object') {\n        options = {\n          value: options\n        };\n      }\n      return options;\n    }\n    function Check(spec) {\n      if (spec) {\n        this.id = spec.id;\n        this.configure(spec);\n      }\n    }\n    Check.prototype.enabled = true;\n    Check.prototype.run = function run(node, options, context3, resolve, reject) {\n      options = options || {};\n      var enabled = options.hasOwnProperty('enabled') ? options.enabled : this.enabled;\n      var checkOptions = this.getOptions(options.options);\n      if (enabled) {\n        var checkResult = new check_result_default(this);\n        var helper = check_helper_default(checkResult, options, resolve, reject);\n        var result;\n        try {\n          result = this.evaluate.call(helper, node.actualNode, checkOptions, node, context3);\n        } catch (e) {\n          if (node && node.actualNode) {\n            e.errorNode = new dq_element_default(node.actualNode).toJSON();\n          }\n          reject(e);\n          return;\n        }\n        if (!helper.isAsync) {\n          checkResult.result = result;\n          resolve(checkResult);\n        }\n      } else {\n        resolve(null);\n      }\n    };\n    Check.prototype.runSync = function runSync(node, options, context3) {\n      options = options || {};\n      var _options = options, _options$enabled = _options.enabled, enabled = _options$enabled === void 0 ? this.enabled : _options$enabled;\n      if (!enabled) {\n        return null;\n      }\n      var checkOptions = this.getOptions(options.options);\n      var checkResult = new check_result_default(this);\n      var helper = check_helper_default(checkResult, options);\n      helper.async = function async() {\n        throw new Error('Cannot run async check while in a synchronous run');\n      };\n      var result;\n      try {\n        result = this.evaluate.call(helper, node.actualNode, checkOptions, node, context3);\n      } catch (e) {\n        if (node && node.actualNode) {\n          e.errorNode = new dq_element_default(node.actualNode).toJSON();\n        }\n        throw e;\n      }\n      checkResult.result = result;\n      return checkResult;\n    };\n    Check.prototype.configure = function configure(spec) {\n      var _this3 = this;\n      if (!spec.evaluate || metadata_function_map_default[spec.evaluate]) {\n        this._internalCheck = true;\n      }\n      if (spec.hasOwnProperty('enabled')) {\n        this.enabled = spec.enabled;\n      }\n      if (spec.hasOwnProperty('options')) {\n        if (this._internalCheck) {\n          this.options = normalizeOptions(spec.options);\n        } else {\n          this.options = spec.options;\n        }\n      }\n      [ 'evaluate', 'after' ].filter(function(prop) {\n        return spec.hasOwnProperty(prop);\n      }).forEach(function(prop) {\n        return _this3[prop] = createExecutionContext(spec[prop]);\n      });\n    };\n    Check.prototype.getOptions = function getOptions(options) {\n      if (this._internalCheck) {\n        return deep_merge_default(this.options, normalizeOptions(options || {}));\n      } else {\n        return options || this.options;\n      }\n    };\n    var check_default = Check;\n    function RuleResult(rule3) {\n      this.id = rule3.id;\n      this.result = constants_default.NA;\n      this.pageLevel = rule3.pageLevel;\n      this.impact = null;\n      this.nodes = [];\n    }\n    var rule_result_default = RuleResult;\n    function Rule(spec, parentAudit) {\n      this._audit = parentAudit;\n      this.id = spec.id;\n      this.selector = spec.selector || '*';\n      if (spec.impact) {\n        assert_default(constants_default.impact.includes(spec.impact), 'Impact '.concat(spec.impact, ' is not a valid impact'));\n        this.impact = spec.impact;\n      }\n      this.excludeHidden = typeof spec.excludeHidden === 'boolean' ? spec.excludeHidden : true;\n      this.enabled = typeof spec.enabled === 'boolean' ? spec.enabled : true;\n      this.pageLevel = typeof spec.pageLevel === 'boolean' ? spec.pageLevel : false;\n      this.reviewOnFail = typeof spec.reviewOnFail === 'boolean' ? spec.reviewOnFail : false;\n      this.any = spec.any || [];\n      this.all = spec.all || [];\n      this.none = spec.none || [];\n      this.tags = spec.tags || [];\n      this.preload = spec.preload ? true : false;\n      if (spec.matches) {\n        this.matches = createExecutionContext(spec.matches);\n      }\n    }\n    Rule.prototype.matches = function matches13() {\n      return true;\n    };\n    Rule.prototype.gather = function gather(context3) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var markStart = 'mark_gather_start_' + this.id;\n      var markEnd = 'mark_gather_end_' + this.id;\n      var markHiddenStart = 'mark_isHidden_start_' + this.id;\n      var markHiddenEnd = 'mark_isHidden_end_' + this.id;\n      if (options.performanceTimer) {\n        performance_timer_default.mark(markStart);\n      }\n      var elements = select_default(this.selector, context3);\n      if (this.excludeHidden) {\n        if (options.performanceTimer) {\n          performance_timer_default.mark(markHiddenStart);\n        }\n        elements = elements.filter(function(element) {\n          return !is_hidden_default(element.actualNode);\n        });\n        if (options.performanceTimer) {\n          performance_timer_default.mark(markHiddenEnd);\n          performance_timer_default.measure('rule_' + this.id + '#gather_axe.utils.isHidden', markHiddenStart, markHiddenEnd);\n        }\n      }\n      if (options.performanceTimer) {\n        performance_timer_default.mark(markEnd);\n        performance_timer_default.measure('rule_' + this.id + '#gather', markStart, markEnd);\n      }\n      return elements;\n    };\n    Rule.prototype.runChecks = function runChecks(type, node, options, context3, resolve, reject) {\n      var self2 = this;\n      var checkQueue = queue_default();\n      this[type].forEach(function(c) {\n        var check4 = self2._audit.checks[c.id || c];\n        var option = get_check_option_default(check4, self2.id, options);\n        checkQueue.defer(function(res, rej) {\n          check4.run(node, option, context3, res, rej);\n        });\n      });\n      checkQueue.then(function(results) {\n        results = results.filter(function(check4) {\n          return check4;\n        });\n        resolve({\n          type: type,\n          results: results\n        });\n      })['catch'](reject);\n    };\n    Rule.prototype.runChecksSync = function runChecksSync(type, node, options, context3) {\n      var self2 = this;\n      var results = [];\n      this[type].forEach(function(c) {\n        var check4 = self2._audit.checks[c.id || c];\n        var option = get_check_option_default(check4, self2.id, options);\n        results.push(check4.runSync(node, option, context3));\n      });\n      results = results.filter(function(check4) {\n        return check4;\n      });\n      return {\n        type: type,\n        results: results\n      };\n    };\n    Rule.prototype.run = function run2(context3) {\n      var _this4 = this;\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var resolve = arguments.length > 2 ? arguments[2] : undefined;\n      var reject = arguments.length > 3 ? arguments[3] : undefined;\n      if (options.performanceTimer) {\n        this._trackPerformance();\n      }\n      var q = queue_default();\n      var ruleResult = new rule_result_default(this);\n      var nodes;\n      try {\n        nodes = this.gatherAndMatchNodes(context3, options);\n      } catch (error) {\n        reject(new SupportError({\n          cause: error,\n          ruleId: this.id\n        }));\n        return;\n      }\n      if (options.performanceTimer) {\n        this._logGatherPerformance(nodes);\n      }\n      nodes.forEach(function(node) {\n        q.defer(function(resolveNode, rejectNode) {\n          var checkQueue = queue_default();\n          [ 'any', 'all', 'none' ].forEach(function(type) {\n            checkQueue.defer(function(res, rej) {\n              _this4.runChecks(type, node, options, context3, res, rej);\n            });\n          });\n          checkQueue.then(function(results) {\n            var result = getResult(results);\n            if (result) {\n              result.node = new dq_element_default(node.actualNode, options);\n              ruleResult.nodes.push(result);\n              if (_this4.reviewOnFail) {\n                [ 'any', 'all' ].forEach(function(type) {\n                  result[type].forEach(function(checkResult) {\n                    if (checkResult.result === false) {\n                      checkResult.result = void 0;\n                    }\n                  });\n                });\n                result.none.forEach(function(checkResult) {\n                  if (checkResult.result === true) {\n                    checkResult.result = void 0;\n                  }\n                });\n              }\n            }\n            resolveNode();\n          })['catch'](function(err2) {\n            return rejectNode(err2);\n          });\n        });\n      });\n      q.defer(function(resolve2) {\n        return setTimeout(resolve2, 0);\n      });\n      if (options.performanceTimer) {\n        this._logRulePerformance();\n      }\n      q.then(function() {\n        return resolve(ruleResult);\n      })['catch'](function(error) {\n        return reject(error);\n      });\n    };\n    Rule.prototype.runSync = function runSync2(context3) {\n      var _this5 = this;\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      if (options.performanceTimer) {\n        this._trackPerformance();\n      }\n      var ruleResult = new rule_result_default(this);\n      var nodes;\n      try {\n        nodes = this.gatherAndMatchNodes(context3, options);\n      } catch (error) {\n        throw new SupportError({\n          cause: error,\n          ruleId: this.id\n        });\n      }\n      if (options.performanceTimer) {\n        this._logGatherPerformance(nodes);\n      }\n      nodes.forEach(function(node) {\n        var results = [];\n        [ 'any', 'all', 'none' ].forEach(function(type) {\n          results.push(_this5.runChecksSync(type, node, options, context3));\n        });\n        var result = getResult(results);\n        if (result) {\n          result.node = node.actualNode ? new dq_element_default(node.actualNode, options) : null;\n          ruleResult.nodes.push(result);\n          if (_this5.reviewOnFail) {\n            [ 'any', 'all' ].forEach(function(type) {\n              result[type].forEach(function(checkResult) {\n                if (checkResult.result === false) {\n                  checkResult.result = void 0;\n                }\n              });\n            });\n            result.none.forEach(function(checkResult) {\n              if (checkResult.result === true) {\n                checkResult.result = void 0;\n              }\n            });\n          }\n        }\n      });\n      if (options.performanceTimer) {\n        this._logRulePerformance();\n      }\n      return ruleResult;\n    };\n    Rule.prototype._trackPerformance = function _trackPerformance() {\n      this._markStart = 'mark_rule_start_' + this.id;\n      this._markEnd = 'mark_rule_end_' + this.id;\n      this._markChecksStart = 'mark_runchecks_start_' + this.id;\n      this._markChecksEnd = 'mark_runchecks_end_' + this.id;\n    };\n    Rule.prototype._logGatherPerformance = function _logGatherPerformance(nodes) {\n      log_default('gather (', nodes.length, '):', performance_timer_default.timeElapsed() + 'ms');\n      performance_timer_default.mark(this._markChecksStart);\n    };\n    Rule.prototype._logRulePerformance = function _logRulePerformance() {\n      performance_timer_default.mark(this._markChecksEnd);\n      performance_timer_default.mark(this._markEnd);\n      performance_timer_default.measure('runchecks_' + this.id, this._markChecksStart, this._markChecksEnd);\n      performance_timer_default.measure('rule_' + this.id, this._markStart, this._markEnd);\n    };\n    function getResult(results) {\n      if (results.length) {\n        var hasResults = false;\n        var result = {};\n        results.forEach(function(r) {\n          var res = r.results.filter(function(result2) {\n            return result2;\n          });\n          result[r.type] = res;\n          if (res.length) {\n            hasResults = true;\n          }\n        });\n        if (hasResults) {\n          return result;\n        }\n        return null;\n      }\n    }\n    Rule.prototype.gatherAndMatchNodes = function gatherAndMatchNodes(context3, options) {\n      var _this6 = this;\n      var markMatchesStart = 'mark_matches_start_' + this.id;\n      var markMatchesEnd = 'mark_matches_end_' + this.id;\n      var nodes = this.gather(context3, options);\n      if (options.performanceTimer) {\n        performance_timer_default.mark(markMatchesStart);\n      }\n      nodes = nodes.filter(function(node) {\n        return _this6.matches(node.actualNode, node, context3);\n      });\n      if (options.performanceTimer) {\n        performance_timer_default.mark(markMatchesEnd);\n        performance_timer_default.measure('rule_' + this.id + '#matches', markMatchesStart, markMatchesEnd);\n      }\n      return nodes;\n    };\n    function findAfterChecks(rule3) {\n      return get_all_checks_default(rule3).map(function(c) {\n        var check4 = rule3._audit.checks[c.id || c];\n        return check4 && typeof check4.after === 'function' ? check4 : null;\n      }).filter(Boolean);\n    }\n    function findCheckResults(nodes, checkID) {\n      var checkResults = [];\n      nodes.forEach(function(nodeResult) {\n        var checks = get_all_checks_default(nodeResult);\n        checks.forEach(function(checkResult) {\n          if (checkResult.id === checkID) {\n            checkResult.node = nodeResult.node;\n            checkResults.push(checkResult);\n          }\n        });\n      });\n      return checkResults;\n    }\n    function filterChecks(checks) {\n      return checks.filter(function(check4) {\n        return check4.filtered !== true;\n      });\n    }\n    function sanitizeNodes(result) {\n      var checkTypes2 = [ 'any', 'all', 'none' ];\n      var nodes = result.nodes.filter(function(detail) {\n        var length = 0;\n        checkTypes2.forEach(function(type) {\n          detail[type] = filterChecks(detail[type]);\n          length += detail[type].length;\n        });\n        return length > 0;\n      });\n      if (result.pageLevel && nodes.length) {\n        nodes = [ nodes.reduce(function(a, b) {\n          if (a) {\n            checkTypes2.forEach(function(type) {\n              a[type].push.apply(a[type], b[type]);\n            });\n            return a;\n          }\n        }) ];\n      }\n      return nodes;\n    }\n    Rule.prototype.after = function after(result, options) {\n      var afterChecks = findAfterChecks(this);\n      var ruleID = this.id;\n      afterChecks.forEach(function(check4) {\n        var beforeResults = findCheckResults(result.nodes, check4.id);\n        var option = get_check_option_default(check4, ruleID, options);\n        var afterResults = check4.after(beforeResults, option);\n        beforeResults.forEach(function(item) {\n          delete item.node;\n          if (afterResults.indexOf(item) === -1) {\n            item.filtered = true;\n          }\n        });\n      });\n      result.nodes = sanitizeNodes(result);\n      return result;\n    };\n    Rule.prototype.configure = function configure2(spec) {\n      if (spec.hasOwnProperty('selector')) {\n        this.selector = spec.selector;\n      }\n      if (spec.hasOwnProperty('excludeHidden')) {\n        this.excludeHidden = typeof spec.excludeHidden === 'boolean' ? spec.excludeHidden : true;\n      }\n      if (spec.hasOwnProperty('enabled')) {\n        this.enabled = typeof spec.enabled === 'boolean' ? spec.enabled : true;\n      }\n      if (spec.hasOwnProperty('pageLevel')) {\n        this.pageLevel = typeof spec.pageLevel === 'boolean' ? spec.pageLevel : false;\n      }\n      if (spec.hasOwnProperty('reviewOnFail')) {\n        this.reviewOnFail = typeof spec.reviewOnFail === 'boolean' ? spec.reviewOnFail : false;\n      }\n      if (spec.hasOwnProperty('any')) {\n        this.any = spec.any;\n      }\n      if (spec.hasOwnProperty('all')) {\n        this.all = spec.all;\n      }\n      if (spec.hasOwnProperty('none')) {\n        this.none = spec.none;\n      }\n      if (spec.hasOwnProperty('tags')) {\n        this.tags = spec.tags;\n      }\n      if (spec.hasOwnProperty('matches')) {\n        this.matches = createExecutionContext(spec.matches);\n      }\n      if (spec.impact) {\n        assert_default(constants_default.impact.includes(spec.impact), 'Impact '.concat(spec.impact, ' is not a valid impact'));\n        this.impact = spec.impact;\n      }\n    };\n    var rule_default = Rule;\n    var dot = __toModule(require_doT());\n    var dotRegex = /\\{\\{.+?\\}\\}/g;\n    function getDefaultOrigin() {\n      if (window.origin) {\n        return window.origin;\n      }\n      if (window.location && window.location.origin) {\n        return window.location.origin;\n      }\n    }\n    function getDefaultConfiguration(audit3) {\n      var config;\n      if (audit3) {\n        config = clone_default(audit3);\n        config.commons = audit3.commons;\n      } else {\n        config = {};\n      }\n      config.reporter = config.reporter || null;\n      config.noHtml = config.noHtml || false;\n      if (!config.allowedOrigins) {\n        var defaultOrigin = getDefaultOrigin();\n        config.allowedOrigins = defaultOrigin ? [ defaultOrigin ] : [];\n      }\n      config.rules = config.rules || [];\n      config.checks = config.checks || [];\n      config.data = _extends({\n        checks: {},\n        rules: {}\n      }, config.data);\n      return config;\n    }\n    function unpackToObject(collection, audit3, method) {\n      var i, l;\n      for (i = 0, l = collection.length; i < l; i++) {\n        audit3[method](collection[i]);\n      }\n    }\n    var mergeCheckLocale = function mergeCheckLocale(a, b) {\n      var pass = b.pass, fail = b.fail;\n      if (typeof pass === 'string' && dotRegex.test(pass)) {\n        pass = dot['default'].compile(pass);\n      }\n      if (typeof fail === 'string' && dotRegex.test(fail)) {\n        fail = dot['default'].compile(fail);\n      }\n      return _extends({}, a, {\n        messages: {\n          pass: pass || a.messages.pass,\n          fail: fail || a.messages.fail,\n          incomplete: _typeof(a.messages.incomplete) === 'object' ? _extends({}, a.messages.incomplete, b.incomplete) : b.incomplete\n        }\n      });\n    };\n    var mergeRuleLocale = function mergeRuleLocale(a, b) {\n      var help = b.help, description = b.description;\n      if (typeof help === 'string' && dotRegex.test(help)) {\n        help = dot['default'].compile(help);\n      }\n      if (typeof description === 'string' && dotRegex.test(description)) {\n        description = dot['default'].compile(description);\n      }\n      return _extends({}, a, {\n        help: help || a.help,\n        description: description || a.description\n      });\n    };\n    var mergeFailureMessage = function mergeFailureMessage(a, b) {\n      var failureMessage = b.failureMessage;\n      if (typeof failureMessage === 'string' && dotRegex.test(failureMessage)) {\n        failureMessage = dot['default'].compile(failureMessage);\n      }\n      return _extends({}, a, {\n        failureMessage: failureMessage || a.failureMessage\n      });\n    };\n    var mergeFallbackMessage = function mergeFallbackMessage(a, b) {\n      if (typeof b === 'string' && dotRegex.test(b)) {\n        b = dot['default'].compile(b);\n      }\n      return b || a;\n    };\n    var Audit = function() {\n      function Audit(audit3) {\n        _classCallCheck(this, Audit);\n        this.lang = 'en';\n        this.defaultConfig = audit3;\n        this.standards = standards_default;\n        this._init();\n        this._defaultLocale = null;\n      }\n      _createClass(Audit, [ {\n        key: '_setDefaultLocale',\n        value: function _setDefaultLocale() {\n          if (this._defaultLocale) {\n            return;\n          }\n          var locale = {\n            checks: {},\n            rules: {},\n            failureSummaries: {},\n            incompleteFallbackMessage: '',\n            lang: this.lang\n          };\n          var checkIDs = Object.keys(this.data.checks);\n          for (var _i24 = 0; _i24 < checkIDs.length; _i24++) {\n            var id = checkIDs[_i24];\n            var check4 = this.data.checks[id];\n            var _check4$messages = check4.messages, pass = _check4$messages.pass, fail = _check4$messages.fail, incomplete = _check4$messages.incomplete;\n            locale.checks[id] = {\n              pass: pass,\n              fail: fail,\n              incomplete: incomplete\n            };\n          }\n          var ruleIDs = Object.keys(this.data.rules);\n          for (var _i25 = 0; _i25 < ruleIDs.length; _i25++) {\n            var _id = ruleIDs[_i25];\n            var rule3 = this.data.rules[_id];\n            var description = rule3.description, help = rule3.help;\n            locale.rules[_id] = {\n              description: description,\n              help: help\n            };\n          }\n          var failureSummaries = Object.keys(this.data.failureSummaries);\n          for (var _i26 = 0; _i26 < failureSummaries.length; _i26++) {\n            var type = failureSummaries[_i26];\n            var failureSummary2 = this.data.failureSummaries[type];\n            var failureMessage = failureSummary2.failureMessage;\n            locale.failureSummaries[type] = {\n              failureMessage: failureMessage\n            };\n          }\n          locale.incompleteFallbackMessage = this.data.incompleteFallbackMessage;\n          this._defaultLocale = locale;\n        }\n      }, {\n        key: '_resetLocale',\n        value: function _resetLocale() {\n          var defaultLocale = this._defaultLocale;\n          if (!defaultLocale) {\n            return;\n          }\n          this.applyLocale(defaultLocale);\n        }\n      }, {\n        key: '_applyCheckLocale',\n        value: function _applyCheckLocale(checks) {\n          var keys = Object.keys(checks);\n          for (var _i27 = 0; _i27 < keys.length; _i27++) {\n            var id = keys[_i27];\n            if (!this.data.checks[id]) {\n              throw new Error('Locale provided for unknown check: \"'.concat(id, '\"'));\n            }\n            this.data.checks[id] = mergeCheckLocale(this.data.checks[id], checks[id]);\n          }\n        }\n      }, {\n        key: '_applyRuleLocale',\n        value: function _applyRuleLocale(rules) {\n          var keys = Object.keys(rules);\n          for (var _i28 = 0; _i28 < keys.length; _i28++) {\n            var id = keys[_i28];\n            if (!this.data.rules[id]) {\n              throw new Error('Locale provided for unknown rule: \"'.concat(id, '\"'));\n            }\n            this.data.rules[id] = mergeRuleLocale(this.data.rules[id], rules[id]);\n          }\n        }\n      }, {\n        key: '_applyFailureSummaries',\n        value: function _applyFailureSummaries(messages) {\n          var keys = Object.keys(messages);\n          for (var _i29 = 0; _i29 < keys.length; _i29++) {\n            var key = keys[_i29];\n            if (!this.data.failureSummaries[key]) {\n              throw new Error('Locale provided for unknown failureMessage: \"'.concat(key, '\"'));\n            }\n            this.data.failureSummaries[key] = mergeFailureMessage(this.data.failureSummaries[key], messages[key]);\n          }\n        }\n      }, {\n        key: 'applyLocale',\n        value: function applyLocale(locale) {\n          this._setDefaultLocale();\n          if (locale.checks) {\n            this._applyCheckLocale(locale.checks);\n          }\n          if (locale.rules) {\n            this._applyRuleLocale(locale.rules);\n          }\n          if (locale.failureSummaries) {\n            this._applyFailureSummaries(locale.failureSummaries, 'failureSummaries');\n          }\n          if (locale.incompleteFallbackMessage) {\n            this.data.incompleteFallbackMessage = mergeFallbackMessage(this.data.incompleteFallbackMessage, locale.incompleteFallbackMessage);\n          }\n          if (locale.lang) {\n            this.lang = locale.lang;\n          }\n        }\n      }, {\n        key: 'setAllowedOrigins',\n        value: function setAllowedOrigins(allowedOrigins) {\n          var defaultOrigin = getDefaultOrigin();\n          this.allowedOrigins = [];\n          var _iterator2 = _createForOfIteratorHelper(allowedOrigins), _step2;\n          try {\n            for (_iterator2.s(); !(_step2 = _iterator2.n()).done; ) {\n              var origin = _step2.value;\n              if (origin === constants_default.allOrigins) {\n                this.allowedOrigins = [ '*' ];\n                return;\n              } else if (origin !== constants_default.sameOrigin) {\n                this.allowedOrigins.push(origin);\n              } else if (defaultOrigin) {\n                this.allowedOrigins.push(defaultOrigin);\n              }\n            }\n          } catch (err) {\n            _iterator2.e(err);\n          } finally {\n            _iterator2.f();\n          }\n        }\n      }, {\n        key: '_init',\n        value: function _init() {\n          var audit3 = getDefaultConfiguration(this.defaultConfig);\n          this.lang = audit3.lang || 'en';\n          this.reporter = audit3.reporter;\n          this.commands = {};\n          this.rules = [];\n          this.checks = {};\n          this.brand = 'axe';\n          this.application = 'axeAPI';\n          this.tagExclude = [ 'experimental' ];\n          this.noHtml = audit3.noHtml;\n          this.allowedOrigins = audit3.allowedOrigins;\n          unpackToObject(audit3.rules, this, 'addRule');\n          unpackToObject(audit3.checks, this, 'addCheck');\n          this.data = {};\n          this.data.checks = audit3.data && audit3.data.checks || {};\n          this.data.rules = audit3.data && audit3.data.rules || {};\n          this.data.failureSummaries = audit3.data && audit3.data.failureSummaries || {};\n          this.data.incompleteFallbackMessage = audit3.data && audit3.data.incompleteFallbackMessage || '';\n          this._constructHelpUrls();\n        }\n      }, {\n        key: 'registerCommand',\n        value: function registerCommand(command) {\n          this.commands[command.id] = command.callback;\n        }\n      }, {\n        key: 'addRule',\n        value: function addRule(spec) {\n          if (spec.metadata) {\n            this.data.rules[spec.id] = spec.metadata;\n          }\n          var rule3 = this.getRule(spec.id);\n          if (rule3) {\n            rule3.configure(spec);\n          } else {\n            this.rules.push(new rule_default(spec, this));\n          }\n        }\n      }, {\n        key: 'addCheck',\n        value: function addCheck(spec) {\n          var metadata = spec.metadata;\n          if (_typeof(metadata) === 'object') {\n            this.data.checks[spec.id] = metadata;\n            if (_typeof(metadata.messages) === 'object') {\n              Object.keys(metadata.messages).filter(function(prop) {\n                return metadata.messages.hasOwnProperty(prop) && typeof metadata.messages[prop] === 'string';\n              }).forEach(function(prop) {\n                if (metadata.messages[prop].indexOf('function') === 0) {\n                  metadata.messages[prop] = new Function('return ' + metadata.messages[prop] + ';')();\n                }\n              });\n            }\n          }\n          if (this.checks[spec.id]) {\n            this.checks[spec.id].configure(spec);\n          } else {\n            this.checks[spec.id] = new check_default(spec);\n          }\n        }\n      }, {\n        key: 'run',\n        value: function run(context3, options, resolve, reject) {\n          this.normalizeOptions(options);\n          axe._selectCache = [];\n          var allRulesToRun = getRulesToRun(this.rules, context3, options);\n          var runNowRules = allRulesToRun.now;\n          var runLaterRules = allRulesToRun.later;\n          var nowRulesQueue = queue_default();\n          runNowRules.forEach(function(rule3) {\n            nowRulesQueue.defer(getDefferedRule(rule3, context3, options));\n          });\n          var preloaderQueue = queue_default();\n          if (runLaterRules.length) {\n            preloaderQueue.defer(function(resolve2) {\n              preload_default(options).then(function(assets) {\n                return resolve2(assets);\n              })['catch'](function(err2) {\n                console.warn('Couldn\\'t load preload assets: ', err2);\n                resolve2(void 0);\n              });\n            });\n          }\n          var queueForNowRulesAndPreloader = queue_default();\n          queueForNowRulesAndPreloader.defer(nowRulesQueue);\n          queueForNowRulesAndPreloader.defer(preloaderQueue);\n          queueForNowRulesAndPreloader.then(function(nowRulesAndPreloaderResults) {\n            var assetsFromQueue = nowRulesAndPreloaderResults.pop();\n            if (assetsFromQueue && assetsFromQueue.length) {\n              var assets = assetsFromQueue[0];\n              if (assets) {\n                context3 = _extends({}, context3, assets);\n              }\n            }\n            var nowRulesResults = nowRulesAndPreloaderResults[0];\n            if (!runLaterRules.length) {\n              axe._selectCache = void 0;\n              resolve(nowRulesResults.filter(function(result) {\n                return !!result;\n              }));\n              return;\n            }\n            var laterRulesQueue = queue_default();\n            runLaterRules.forEach(function(rule3) {\n              var deferredRule = getDefferedRule(rule3, context3, options);\n              laterRulesQueue.defer(deferredRule);\n            });\n            laterRulesQueue.then(function(laterRuleResults) {\n              axe._selectCache = void 0;\n              resolve(nowRulesResults.concat(laterRuleResults).filter(function(result) {\n                return !!result;\n              }));\n            })['catch'](reject);\n          })['catch'](reject);\n        }\n      }, {\n        key: 'after',\n        value: function after(results, options) {\n          var rules = this.rules;\n          return results.map(function(ruleResult) {\n            var rule3 = find_by_default(rules, 'id', ruleResult.id);\n            if (!rule3) {\n              throw new Error('Result for unknown rule. You may be running mismatch axe-core versions');\n            }\n            return rule3.after(ruleResult, options);\n          });\n        }\n      }, {\n        key: 'getRule',\n        value: function getRule(ruleId) {\n          return this.rules.find(function(rule3) {\n            return rule3.id === ruleId;\n          });\n        }\n      }, {\n        key: 'normalizeOptions',\n        value: function normalizeOptions(options) {\n          var audit3 = this;\n          var tags = [];\n          var ruleIds = [];\n          audit3.rules.forEach(function(rule3) {\n            ruleIds.push(rule3.id);\n            rule3.tags.forEach(function(tag) {\n              if (!tags.includes(tag)) {\n                tags.push(tag);\n              }\n            });\n          });\n          if (_typeof(options.runOnly) === 'object') {\n            if (Array.isArray(options.runOnly)) {\n              var hasTag = options.runOnly.find(function(value) {\n                return tags.includes(value);\n              });\n              var hasRule = options.runOnly.find(function(value) {\n                return ruleIds.includes(value);\n              });\n              if (hasTag && hasRule) {\n                throw new Error('runOnly cannot be both rules and tags');\n              }\n              if (hasRule) {\n                options.runOnly = {\n                  type: 'rule',\n                  values: options.runOnly\n                };\n              } else {\n                options.runOnly = {\n                  type: 'tag',\n                  values: options.runOnly\n                };\n              }\n            }\n            var only = options.runOnly;\n            if (only.value && !only.values) {\n              only.values = only.value;\n              delete only.value;\n            }\n            if (!Array.isArray(only.values) || only.values.length === 0) {\n              throw new Error('runOnly.values must be a non-empty array');\n            }\n            if ([ 'rule', 'rules' ].includes(only.type)) {\n              only.type = 'rule';\n              only.values.forEach(function(ruleId) {\n                if (!ruleIds.includes(ruleId)) {\n                  throw new Error('unknown rule `' + ruleId + '` in options.runOnly');\n                }\n              });\n            } else if ([ 'tag', 'tags', void 0 ].includes(only.type)) {\n              only.type = 'tag';\n              var unmatchedTags = only.values.filter(function(tag) {\n                return !tags.includes(tag);\n              });\n              if (unmatchedTags.length !== 0) {\n                log_default('Could not find tags `' + unmatchedTags.join('`, `') + '`');\n              }\n            } else {\n              throw new Error('Unknown runOnly type \\''.concat(only.type, '\\''));\n            }\n          }\n          if (_typeof(options.rules) === 'object') {\n            Object.keys(options.rules).forEach(function(ruleId) {\n              if (!ruleIds.includes(ruleId)) {\n                throw new Error('unknown rule `' + ruleId + '` in options.rules');\n              }\n            });\n          }\n          return options;\n        }\n      }, {\n        key: 'setBranding',\n        value: function setBranding(branding) {\n          var previous = {\n            brand: this.brand,\n            application: this.application\n          };\n          if (branding && branding.hasOwnProperty('brand') && branding.brand && typeof branding.brand === 'string') {\n            this.brand = branding.brand;\n          }\n          if (branding && branding.hasOwnProperty('application') && branding.application && typeof branding.application === 'string') {\n            this.application = branding.application;\n          }\n          this._constructHelpUrls(previous);\n        }\n      }, {\n        key: '_constructHelpUrls',\n        value: function _constructHelpUrls() {\n          var _this7 = this;\n          var previous = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n          var version = (axe.version.match(/^[1-9][0-9]*\\.[0-9]+/) || [ 'x.y' ])[0];\n          this.rules.forEach(function(rule3) {\n            if (!_this7.data.rules[rule3.id]) {\n              _this7.data.rules[rule3.id] = {};\n            }\n            var metaData = _this7.data.rules[rule3.id];\n            if (typeof metaData.helpUrl !== 'string' || previous && metaData.helpUrl === getHelpUrl(previous, rule3.id, version)) {\n              metaData.helpUrl = getHelpUrl(_this7, rule3.id, version);\n            }\n          });\n        }\n      }, {\n        key: 'resetRulesAndChecks',\n        value: function resetRulesAndChecks() {\n          this._init();\n          this._resetLocale();\n        }\n      } ]);\n      return Audit;\n    }();\n    function getRulesToRun(rules, context3, options) {\n      var base = {\n        now: [],\n        later: []\n      };\n      var splitRules = rules.reduce(function(out, rule3) {\n        if (!rule_should_run_default(rule3, context3, options)) {\n          return out;\n        }\n        if (rule3.preload) {\n          out.later.push(rule3);\n          return out;\n        }\n        out.now.push(rule3);\n        return out;\n      }, base);\n      return splitRules;\n    }\n    function getDefferedRule(rule3, context3, options) {\n      if (options.performanceTimer) {\n        performance_timer_default.mark('mark_rule_start_' + rule3.id);\n      }\n      return function(resolve, reject) {\n        rule3.run(context3, options, function(ruleResult) {\n          resolve(ruleResult);\n        }, function(err2) {\n          if (!options.debug) {\n            var errResult = Object.assign(new rule_result_default(rule3), {\n              result: constants_default.CANTTELL,\n              description: 'An error occured while running this rule',\n              message: err2.message,\n              stack: err2.stack,\n              error: err2,\n              errorNode: err2.errorNode\n            });\n            resolve(errResult);\n          } else {\n            reject(err2);\n          }\n        });\n      };\n    }\n    function getHelpUrl(_ref66, ruleId, version) {\n      var brand = _ref66.brand, application = _ref66.application, lang = _ref66.lang;\n      return constants_default.helpUrlBase + brand + '/' + (version || axe.version.substring(0, axe.version.lastIndexOf('.'))) + '/' + ruleId + '?application=' + encodeURIComponent(application) + (lang && lang !== 'en' ? '&lang=' + encodeURIComponent(lang) : '');\n    }\n    var audit_default = Audit;\n    function pushUniqueFrame(collection, frame) {\n      if (is_hidden_default(frame)) {\n        return;\n      }\n      var fr = find_by_default(collection, 'node', frame);\n      if (!fr) {\n        collection.push({\n          node: frame,\n          include: [],\n          exclude: []\n        });\n      }\n    }\n    function pushUniqueFrameSelector(context3, type, selectorArray) {\n      context3.frames = context3.frames || [];\n      var result, frame;\n      var frames = document.querySelectorAll(selectorArray.shift());\n      frameloop: for (var i = 0, l = frames.length; i < l; i++) {\n        frame = frames[i];\n        for (var j = 0, l2 = context3.frames.length; j < l2; j++) {\n          if (context3.frames[j].node === frame) {\n            context3.frames[j][type].push(selectorArray);\n            break frameloop;\n          }\n        }\n        result = {\n          node: frame,\n          include: [],\n          exclude: []\n        };\n        if (selectorArray) {\n          result[type].push(selectorArray);\n        }\n        context3.frames.push(result);\n      }\n    }\n    function normalizeContext(context3) {\n      if (context3 && _typeof(context3) === 'object' || context3 instanceof window.NodeList) {\n        if (context3 instanceof window.Node) {\n          return {\n            include: [ context3 ],\n            exclude: []\n          };\n        }\n        if (context3.hasOwnProperty('include') || context3.hasOwnProperty('exclude')) {\n          return {\n            include: context3.include && +context3.include.length ? context3.include : [ document ],\n            exclude: context3.exclude || []\n          };\n        }\n        if (context3.length === +context3.length) {\n          return {\n            include: context3,\n            exclude: []\n          };\n        }\n      }\n      if (typeof context3 === 'string') {\n        return {\n          include: [ context3 ],\n          exclude: []\n        };\n      }\n      return {\n        include: [ document ],\n        exclude: []\n      };\n    }\n    function parseSelectorArray(context3, type) {\n      var item, result = [], nodeList;\n      for (var i = 0, l = context3[type].length; i < l; i++) {\n        item = context3[type][i];\n        if (typeof item === 'string') {\n          nodeList = Array.from(document.querySelectorAll(item));\n          result = result.concat(nodeList.map(function(node) {\n            return get_node_from_tree_default(node);\n          }));\n          break;\n        } else if (item && item.length && !(item instanceof window.Node)) {\n          if (item.length > 1) {\n            pushUniqueFrameSelector(context3, type, item);\n          } else {\n            nodeList = Array.from(document.querySelectorAll(item[0]));\n            result = result.concat(nodeList.map(function(node) {\n              return get_node_from_tree_default(node);\n            }));\n          }\n        } else if (item instanceof window.Node) {\n          if (item.documentElement instanceof window.Node) {\n            result.push(context3.flatTree[0]);\n          } else {\n            result.push(get_node_from_tree_default(item));\n          }\n        }\n      }\n      return result.filter(function(r) {\n        return r;\n      });\n    }\n    function validateContext(context3) {\n      if (context3.include.length === 0) {\n        if (context3.frames.length === 0) {\n          var env = _respondable.isInFrame() ? 'frame' : 'page';\n          return new Error('No elements found for include in ' + env + ' Context');\n        }\n        context3.frames.forEach(function(frame, i) {\n          if (frame.include.length === 0) {\n            return new Error('No elements found for include in Context of frame ' + i);\n          }\n        });\n      }\n    }\n    function getRootNode2(_ref67) {\n      var include = _ref67.include, exclude = _ref67.exclude;\n      var selectors = Array.from(include).concat(Array.from(exclude));\n      for (var i = 0; i < selectors.length; ++i) {\n        var item = selectors[i];\n        if (item instanceof window.Element) {\n          return item.ownerDocument.documentElement;\n        }\n        if (item instanceof window.Document) {\n          return item.documentElement;\n        }\n      }\n      return document.documentElement;\n    }\n    function Context(spec) {\n      var _this8 = this;\n      this.frames = [];\n      this.initiator = spec && typeof spec.initiator === 'boolean' ? spec.initiator : true;\n      this.focusable = spec && typeof spec.focusable === 'boolean' ? spec.focusable : true;\n      this.boundingClientRect = spec && _typeof(spec.boundingClientRect) === 'object' ? spec.boundingClientRect : {};\n      this.page = false;\n      spec = normalizeContext(spec);\n      this.flatTree = get_flattened_tree_default(getRootNode2(spec));\n      this.exclude = spec.exclude;\n      this.include = spec.include;\n      this.include = parseSelectorArray(this, 'include');\n      this.exclude = parseSelectorArray(this, 'exclude');\n      select_default('frame, iframe', this).forEach(function(frame) {\n        if (is_node_in_context_default(frame, _this8)) {\n          pushUniqueFrame(_this8.frames, frame.actualNode);\n        }\n      });\n      if (this.include.length === 1 && this.include[0].actualNode === document.documentElement) {\n        this.page = true;\n      }\n      var err2 = validateContext(this);\n      if (err2 instanceof Error) {\n        throw err2;\n      }\n      if (!Array.isArray(this.include)) {\n        this.include = Array.from(this.include);\n      }\n      this.include.sort(node_sorter_default);\n    }\n    var context_default = Context;\n    var imports_exports = {};\n    __export(imports_exports, {\n      CssSelectorParser: function CssSelectorParser() {\n        return css_selector_parser2.CssSelectorParser;\n      },\n      doT: function doT() {\n        return dot2['default'];\n      },\n      emojiRegexText: function emojiRegexText() {\n        return emoji_regex3['default'];\n      },\n      memoize: function memoize() {\n        return memoizee2['default'];\n      }\n    });\n    var css_selector_parser2 = __toModule(require_lib());\n    var dot2 = __toModule(require_doT());\n    var emoji_regex3 = __toModule(require_emoji_regex());\n    var memoizee2 = __toModule(require_memoizee());\n    var es6_promise = __toModule(require_es6_promise());\n    var typedarray = __toModule(require_typedarray());\n    var weakmap_polyfill = __toModule(require_weakmap_polyfill());\n    if (!('Promise' in window)) {\n      es6_promise['default'].polyfill();\n    }\n    if (!('Uint32Array' in window)) {\n      window.Uint32Array = typedarray.Uint32Array;\n    }\n    if (window.Uint32Array) {\n      if (!('some' in window.Uint32Array.prototype)) {\n        Object.defineProperty(window.Uint32Array.prototype, 'some', {\n          value: Array.prototype.some\n        });\n      }\n      if (!('reduce' in window.Uint32Array.prototype)) {\n        Object.defineProperty(window.Uint32Array.prototype, 'reduce', {\n          value: Array.prototype.reduce\n        });\n      }\n    }\n    function cleanup(resolve, reject) {\n      resolve = resolve || function res() {};\n      reject = reject || axe.log;\n      if (!axe._audit) {\n        throw new Error('No audit configured');\n      }\n      var q = axe.utils.queue();\n      var cleanupErrors = [];\n      Object.keys(axe.plugins).forEach(function(key) {\n        q.defer(function(res) {\n          var rej = function rej2(err2) {\n            cleanupErrors.push(err2);\n            res();\n          };\n          try {\n            axe.plugins[key].cleanup(res, rej);\n          } catch (err2) {\n            rej(err2);\n          }\n        });\n      });\n      var flattenedTree = axe.utils.getFlattenedTree(document.body);\n      axe.utils.querySelectorAll(flattenedTree, 'iframe, frame').forEach(function(node) {\n        q.defer(function(res, rej) {\n          return axe.utils.sendCommandToFrame(node.actualNode, {\n            command: 'cleanup-plugin'\n          }, res, rej);\n        });\n      });\n      q.then(function(results) {\n        if (cleanupErrors.length === 0) {\n          resolve(results);\n        } else {\n          reject(cleanupErrors);\n        }\n      })['catch'](reject);\n    }\n    var cleanup_default = cleanup;\n    var reporters = {};\n    var defaultReporter;\n    function hasReporter(reporterName) {\n      return reporters.hasOwnProperty(reporterName);\n    }\n    function getReporter(reporter4) {\n      if (typeof reporter4 === 'string' && reporters[reporter4]) {\n        return reporters[reporter4];\n      }\n      if (typeof reporter4 === 'function') {\n        return reporter4;\n      }\n      return defaultReporter;\n    }\n    function addReporter(name, cb, isDefault) {\n      reporters[name] = cb;\n      if (isDefault) {\n        defaultReporter = cb;\n      }\n    }\n    function configure3(spec) {\n      var audit3;\n      audit3 = axe._audit;\n      if (!audit3) {\n        throw new Error('No audit configured');\n      }\n      if (spec.axeVersion || spec.ver) {\n        var specVersion = spec.axeVersion || spec.ver;\n        if (!/^\\d+\\.\\d+\\.\\d+(-canary)?/.test(specVersion)) {\n          throw new Error('Invalid configured version '.concat(specVersion));\n        }\n        var _specVersion$split = specVersion.split('-'), _specVersion$split2 = _slicedToArray(_specVersion$split, 2), version = _specVersion$split2[0], canary = _specVersion$split2[1];\n        var _version$split$map = version.split('.').map(Number), _version$split$map2 = _slicedToArray(_version$split$map, 3), major = _version$split$map2[0], minor = _version$split$map2[1], patch = _version$split$map2[2];\n        var _axe$version$split = axe.version.split('-'), _axe$version$split2 = _slicedToArray(_axe$version$split, 2), axeVersion = _axe$version$split2[0], axeCanary = _axe$version$split2[1];\n        var _axeVersion$split$map = axeVersion.split('.').map(Number), _axeVersion$split$map2 = _slicedToArray(_axeVersion$split$map, 3), axeMajor = _axeVersion$split$map2[0], axeMinor = _axeVersion$split$map2[1], axePatch = _axeVersion$split$map2[2];\n        if (major !== axeMajor || axeMinor < minor || axeMinor === minor && axePatch < patch || major === axeMajor && minor === axeMinor && patch === axePatch && canary && canary !== axeCanary) {\n          throw new Error('Configured version '.concat(specVersion, ' is not compatible with current axe version ').concat(axe.version));\n        }\n      }\n      if (spec.reporter && (typeof spec.reporter === 'function' || hasReporter(spec.reporter))) {\n        audit3.reporter = spec.reporter;\n      }\n      if (spec.checks) {\n        if (!Array.isArray(spec.checks)) {\n          throw new TypeError('Checks property must be an array');\n        }\n        spec.checks.forEach(function(check4) {\n          if (!check4.id) {\n            throw new TypeError('Configured check '.concat(JSON.stringify(check4), ' is invalid. Checks must be an object with at least an id property'));\n          }\n          audit3.addCheck(check4);\n        });\n      }\n      var modifiedRules = [];\n      if (spec.rules) {\n        if (!Array.isArray(spec.rules)) {\n          throw new TypeError('Rules property must be an array');\n        }\n        spec.rules.forEach(function(rule3) {\n          if (!rule3.id) {\n            throw new TypeError('Configured rule '.concat(JSON.stringify(rule3), ' is invalid. Rules must be an object with at least an id property'));\n          }\n          modifiedRules.push(rule3.id);\n          audit3.addRule(rule3);\n        });\n      }\n      if (spec.disableOtherRules) {\n        audit3.rules.forEach(function(rule3) {\n          if (modifiedRules.includes(rule3.id) === false) {\n            rule3.enabled = false;\n          }\n        });\n      }\n      if (typeof spec.branding !== 'undefined') {\n        audit3.setBranding(spec.branding);\n      } else {\n        audit3._constructHelpUrls();\n      }\n      if (spec.tagExclude) {\n        audit3.tagExclude = spec.tagExclude;\n      }\n      if (spec.locale) {\n        audit3.applyLocale(spec.locale);\n      }\n      if (spec.standards) {\n        configureStandards(spec.standards);\n      }\n      if (spec.noHtml) {\n        audit3.noHtml = true;\n      }\n      if (spec.allowedOrigins) {\n        if (!Array.isArray(spec.allowedOrigins)) {\n          throw new TypeError('Allowed origins property must be an array');\n        }\n        if (spec.allowedOrigins.includes('*')) {\n          throw new Error('\"*\" is not allowed. Use \"'.concat(constants_default.allOrigins, '\" instead'));\n        }\n        audit3.setAllowedOrigins(spec.allowedOrigins);\n      }\n    }\n    var configure_default = configure3;\n    function frameMessenger2(frameHandler) {\n      _respondable.updateMessenger(frameHandler);\n    }\n    function getRules(tags) {\n      tags = tags || [];\n      var matchingRules = !tags.length ? axe._audit.rules : axe._audit.rules.filter(function(item) {\n        return !!tags.filter(function(tag) {\n          return item.tags.indexOf(tag) !== -1;\n        }).length;\n      });\n      var ruleData = axe._audit.data.rules || {};\n      return matchingRules.map(function(matchingRule) {\n        var rd = ruleData[matchingRule.id] || {};\n        return {\n          ruleId: matchingRule.id,\n          description: rd.description,\n          help: rd.help,\n          helpUrl: rd.helpUrl,\n          tags: matchingRule.tags\n        };\n      });\n    }\n    var get_rules_default = getRules;\n    function teardown() {\n      if (cache_default.get('globalDocumentSet')) {\n        document = null;\n      }\n      if (cache_default.get('globalWindowSet')) {\n        window = null;\n      }\n      axe._memoizedFns.forEach(function(fn) {\n        return fn.clear();\n      });\n      cache_default.clear();\n      axe._tree = void 0;\n      axe._selectorData = void 0;\n      axe._selectCache = void 0;\n    }\n    var teardown_default = teardown;\n    function runRules(context3, options, resolve, reject) {\n      try {\n        context3 = new context_default(context3);\n        axe._tree = context3.flatTree;\n        axe._selectorData = _getSelectorData(context3.flatTree);\n      } catch (e) {\n        teardown_default();\n        return reject(e);\n      }\n      var q = queue_default();\n      var audit3 = axe._audit;\n      if (options.performanceTimer) {\n        performance_timer_default.auditStart();\n      }\n      if (context3.frames.length && options.iframes !== false) {\n        q.defer(function(res, rej) {\n          collect_results_from_frames_default(context3, options, 'rules', null, res, rej);\n        });\n      }\n      q.defer(function(res, rej) {\n        audit3.run(context3, options, res, rej);\n      });\n      q.then(function(data2) {\n        try {\n          if (options.performanceTimer) {\n            performance_timer_default.auditEnd();\n          }\n          var results = merge_results_default(data2.map(function(results2) {\n            return {\n              results: results2\n            };\n          }));\n          if (context3.initiator) {\n            results = audit3.after(results, options);\n            results.forEach(publish_metadata_default);\n            results = results.map(finalize_result_default);\n          }\n          try {\n            resolve(results, teardown_default);\n          } catch (e) {\n            teardown_default();\n            log_default(e);\n          }\n        } catch (e) {\n          teardown_default();\n          reject(e);\n        }\n      })['catch'](function(e) {\n        teardown_default();\n        reject(e);\n      });\n    }\n    var run_rules_default = runRules;\n    function runCommand(data2, keepalive, callback) {\n      var resolve = callback;\n      var reject = function reject2(err2) {\n        if (err2 instanceof Error === false) {\n          err2 = new Error(err2);\n        }\n        callback(err2);\n      };\n      var context3 = data2 && data2.context || {};\n      if (context3.hasOwnProperty('include') && !context3.include.length) {\n        context3.include = [ document ];\n      }\n      var options = data2 && data2.options || {};\n      switch (data2.command) {\n       case 'rules':\n        return run_rules_default(context3, options, function(results, cleanup5) {\n          resolve(results);\n          cleanup5();\n        }, reject);\n\n       case 'cleanup-plugin':\n        return cleanup_default(resolve, reject);\n\n       default:\n        if (axe._audit && axe._audit.commands && axe._audit.commands[data2.command]) {\n          return axe._audit.commands[data2.command](data2, callback);\n        }\n      }\n    }\n    if (window.top !== window) {\n      _respondable.subscribe('axe.start', runCommand);\n      _respondable.subscribe('axe.ping', function(data2, keepalive, respond) {\n        respond({\n          axe: true\n        });\n      });\n    }\n    function load(audit3) {\n      axe._audit = new audit_default(audit3);\n    }\n    var load_default = load;\n    function Plugin(spec) {\n      this._run = spec.run;\n      this._collect = spec.collect;\n      this._registry = {};\n      spec.commands.forEach(function(command) {\n        axe._audit.registerCommand(command);\n      });\n    }\n    Plugin.prototype.run = function run3() {\n      return this._run.apply(this, arguments);\n    };\n    Plugin.prototype.collect = function collect() {\n      return this._collect.apply(this, arguments);\n    };\n    Plugin.prototype.cleanup = function cleanup3(done) {\n      var q = axe.utils.queue();\n      var that = this;\n      Object.keys(this._registry).forEach(function(key) {\n        q.defer(function(_done) {\n          that._registry[key].cleanup(_done);\n        });\n      });\n      q.then(done);\n    };\n    Plugin.prototype.add = function add(impl) {\n      this._registry[impl.id] = impl;\n    };\n    function registerPlugin(plugin) {\n      axe.plugins[plugin.id] = new Plugin(plugin);\n    }\n    var plugins_default = registerPlugin;\n    function reset() {\n      var audit3 = axe._audit;\n      if (!audit3) {\n        throw new Error('No audit configured');\n      }\n      audit3.resetRulesAndChecks();\n      resetStandards();\n    }\n    var reset_default = reset;\n    function runVirtualRule(ruleId, vNode) {\n      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      options.reporter = options.reporter || axe._audit.reporter || 'v1';\n      axe._selectorData = {};\n      if (!(vNode instanceof abstract_virtual_node_default)) {\n        vNode = new serial_virtual_node_default(vNode);\n      }\n      var rule3 = get_rule_default(ruleId);\n      if (!rule3) {\n        throw new Error('unknown rule `' + ruleId + '`');\n      }\n      rule3 = Object.create(rule3, {\n        excludeHidden: {\n          value: false\n        }\n      });\n      var context3 = {\n        initiator: true,\n        include: [ vNode ]\n      };\n      var rawResults = rule3.runSync(context3, options);\n      publish_metadata_default(rawResults);\n      finalize_result_default(rawResults);\n      var results = aggregate_result_default([ rawResults ]);\n      results.violations.forEach(function(result) {\n        return result.nodes.forEach(function(nodeResult) {\n          nodeResult.failureSummary = failure_summary_default(nodeResult);\n        });\n      });\n      return _extends({}, get_environment_data_default(), results, {\n        toolOptions: options\n      });\n    }\n    var run_virtual_rule_default = runVirtualRule;\n    function isContext(potential) {\n      switch (true) {\n       case typeof potential === 'string':\n       case Array.isArray(potential):\n       case window.Node && potential instanceof window.Node:\n       case window.NodeList && potential instanceof window.NodeList:\n        return true;\n\n       case _typeof(potential) !== 'object':\n        return false;\n\n       case potential.include !== void 0:\n       case potential.exclude !== void 0:\n       case typeof potential.length === 'number':\n        return true;\n\n       default:\n        return false;\n      }\n    }\n    var noop2 = function noop3() {};\n    function normalizeRunParams(context3, options, callback) {\n      var typeErr = new TypeError('axe.run arguments are invalid');\n      if (!isContext(context3)) {\n        if (callback !== void 0) {\n          throw typeErr;\n        }\n        callback = options;\n        options = context3;\n        context3 = document;\n      }\n      if (_typeof(options) !== 'object') {\n        if (callback !== void 0) {\n          throw typeErr;\n        }\n        callback = options;\n        options = {};\n      }\n      if (typeof callback !== 'function' && callback !== void 0) {\n        throw typeErr;\n      }\n      return {\n        context: context3,\n        options: options,\n        callback: callback || noop2\n      };\n    }\n    function run4(context3, options, callback) {\n      if (!axe._audit) {\n        throw new Error('No audit configured');\n      }\n      var hasWindow = window && 'Node' in window && 'NodeList' in window;\n      var hasDoc = !!document;\n      if (!hasWindow || !hasDoc) {\n        if (!context3 || !context3.ownerDocument) {\n          throw new Error('Required \"window\" or \"document\" globals not defined and cannot be deduced from the context. Either set the globals before running or pass in a valid Element.');\n        }\n        if (!hasDoc) {\n          cache_default.set('globalDocumentSet', true);\n          document = context3.ownerDocument;\n        }\n        if (!hasWindow) {\n          cache_default.set('globalWindowSet', true);\n          window = document.defaultView;\n        }\n      }\n      var args = normalizeRunParams(context3, options, callback);\n      context3 = args.context;\n      options = args.options;\n      callback = args.callback;\n      options.reporter = options.reporter || axe._audit.reporter || 'v1';\n      if (options.performanceTimer) {\n        axe.utils.performanceTimer.start();\n      }\n      var p;\n      var reject = noop2;\n      var resolve = noop2;\n      if (typeof Promise === 'function' && callback === noop2) {\n        p = new Promise(function(_resolve, _reject) {\n          reject = _reject;\n          resolve = _resolve;\n        });\n      }\n      if (axe._running) {\n        var err2 = 'Axe is already running. Use `await axe.run()` to wait for the previous run to finish before starting a new run.';\n        callback(err2);\n        reject(err2);\n        return p;\n      }\n      axe._running = true;\n      axe._runRules(context3, options, function(rawResults, cleanup5) {\n        var respond = function respond(results) {\n          axe._running = false;\n          cleanup5();\n          try {\n            callback(null, results);\n          } catch (e) {\n            axe.log(e);\n          }\n          resolve(results);\n        };\n        if (options.performanceTimer) {\n          axe.utils.performanceTimer.end();\n        }\n        try {\n          var reporter4 = getReporter(options.reporter);\n          var results = reporter4(rawResults, options, respond);\n          if (results !== void 0) {\n            respond(results);\n          }\n        } catch (err2) {\n          axe._running = false;\n          cleanup5();\n          callback(err2);\n          reject(err2);\n        }\n      }, function(err2) {\n        axe._running = false;\n        callback(err2);\n        reject(err2);\n      });\n      return p;\n    }\n    var run_default = run4;\n    function setup(node) {\n      if (axe._tree) {\n        throw new Error('Axe is already setup. Call `axe.teardown()` before calling `axe.setup` again.');\n      }\n      axe._tree = get_flattened_tree_default(node);\n      axe._selectorData = _getSelectorData(axe._tree);\n      return axe._tree[0];\n    }\n    var setup_default = setup;\n    var naReporter = function naReporter(results, options, callback) {\n      console.warn('\"na\" reporter will be deprecated in axe v4.0. Use the \"v2\" reporter instead.');\n      if (typeof options === 'function') {\n        callback = options;\n        options = {};\n      }\n      var out = process_aggregate_default(results, options);\n      callback(_extends({}, get_environment_data_default(), {\n        toolOptions: options,\n        violations: out.violations,\n        passes: out.passes,\n        incomplete: out.incomplete,\n        inapplicable: out.inapplicable\n      }));\n    };\n    var na_default = naReporter;\n    var noPassesReporter = function noPassesReporter(results, options, callback) {\n      if (typeof options === 'function') {\n        callback = options;\n        options = {};\n      }\n      options.resultTypes = [ 'violations' ];\n      var out = process_aggregate_default(results, options);\n      callback(_extends({}, get_environment_data_default(), {\n        toolOptions: options,\n        violations: out.violations\n      }));\n    };\n    var no_passes_default = noPassesReporter;\n    var rawReporter = function rawReporter(results, options, callback) {\n      if (typeof options === 'function') {\n        callback = options;\n        options = {};\n      }\n      if (!results || !Array.isArray(results)) {\n        return callback(results);\n      }\n      var transformedResults = results.map(function(result) {\n        var transformedResult = _extends({}, result);\n        var types = [ 'passes', 'violations', 'incomplete', 'inapplicable' ];\n        for (var _i30 = 0, _types = types; _i30 < _types.length; _i30++) {\n          var type = _types[_i30];\n          if (transformedResult[type] && Array.isArray(transformedResult[type])) {\n            transformedResult[type] = transformedResult[type].map(function(typeResult) {\n              return _extends({}, typeResult, {\n                node: typeResult.node.toJSON()\n              });\n            });\n          }\n        }\n        return transformedResult;\n      });\n      callback(transformedResults);\n    };\n    var raw_default = rawReporter;\n    var rawEnvReporter = function rawEnvReporter(results, options, callback) {\n      if (typeof options === 'function') {\n        callback = options;\n        options = {};\n      }\n      function rawCallback(raw3) {\n        var env = get_environment_data_default();\n        callback({\n          raw: raw3,\n          env: env\n        });\n      }\n      raw_default(results, options, rawCallback);\n    };\n    var raw_env_default = rawEnvReporter;\n    var v1Reporter = function v1Reporter(results, options, callback) {\n      if (typeof options === 'function') {\n        callback = options;\n        options = {};\n      }\n      var out = process_aggregate_default(results, options);\n      var addFailureSummaries = function addFailureSummaries(result) {\n        result.nodes.forEach(function(nodeResult) {\n          nodeResult.failureSummary = failure_summary_default(nodeResult);\n        });\n      };\n      out.incomplete.forEach(addFailureSummaries);\n      out.violations.forEach(addFailureSummaries);\n      callback(_extends({}, get_environment_data_default(), {\n        toolOptions: options,\n        violations: out.violations,\n        passes: out.passes,\n        incomplete: out.incomplete,\n        inapplicable: out.inapplicable\n      }));\n    };\n    var v1_default = v1Reporter;\n    var v2Reporter = function v2Reporter(results, options, callback) {\n      if (typeof options === 'function') {\n        callback = options;\n        options = {};\n      }\n      var out = process_aggregate_default(results, options);\n      callback(_extends({}, get_environment_data_default(), {\n        toolOptions: options,\n        violations: out.violations,\n        passes: out.passes,\n        incomplete: out.incomplete,\n        inapplicable: out.inapplicable\n      }));\n    };\n    var v2_default = v2Reporter;\n    axe.constants = constants_default;\n    axe.log = log_default;\n    axe.AbstractVirtualNode = abstract_virtual_node_default;\n    axe.SerialVirtualNode = serial_virtual_node_default;\n    axe.VirtualNode = virtual_node_default;\n    axe._cache = cache_default;\n    axe._thisWillBeDeletedDoNotUse = axe._thisWillBeDeletedDoNotUse || {};\n    axe._thisWillBeDeletedDoNotUse.base = {\n      Audit: audit_default,\n      CheckResult: check_result_default,\n      Check: check_default,\n      Context: context_default,\n      RuleResult: rule_result_default,\n      Rule: rule_default,\n      metadataFunctionMap: metadata_function_map_default\n    };\n    axe.imports = imports_exports;\n    axe.cleanup = cleanup_default;\n    axe.configure = configure_default;\n    axe.frameMessenger = frameMessenger2;\n    axe.getRules = get_rules_default;\n    axe._load = load_default;\n    axe.plugins = {};\n    axe.registerPlugin = plugins_default;\n    axe.hasReporter = hasReporter;\n    axe.getReporter = getReporter;\n    axe.addReporter = addReporter;\n    axe.reset = reset_default;\n    axe._runRules = run_rules_default;\n    axe.runVirtualRule = run_virtual_rule_default;\n    axe.run = run_default;\n    axe.setup = setup_default;\n    axe.teardown = teardown_default;\n    axe.commons = commons_exports;\n    axe.utils = utils_exports;\n    axe.addReporter('na', na_default);\n    axe.addReporter('no-passes', no_passes_default);\n    axe.addReporter('rawEnv', raw_env_default);\n    axe.addReporter('raw', raw_default);\n    axe.addReporter('v1', v1_default);\n    axe.addReporter('v2', v2_default, true);\n  })();\n  'use strict';\n  axe._load({\n    lang: 'en',\n    data: {\n      rules: {\n        accesskeys: {\n          description: 'Ensures every accesskey attribute value is unique',\n          help: 'accesskey attribute value should be unique'\n        },\n        'area-alt': {\n          description: 'Ensures <area> elements of image maps have alternate text',\n          help: 'Active <area> elements must have alternate text'\n        },\n        'aria-allowed-attr': {\n          description: 'Ensures ARIA attributes are allowed for an element\\'s role',\n          help: 'Elements must only use allowed ARIA attributes'\n        },\n        'aria-allowed-role': {\n          description: 'Ensures role attribute has an appropriate value for the element',\n          help: 'ARIA role should be appropriate for the element'\n        },\n        'aria-command-name': {\n          description: 'Ensures every ARIA button, link and menuitem has an accessible name',\n          help: 'ARIA commands must have an accessible name'\n        },\n        'aria-dialog-name': {\n          description: 'Ensures every ARIA dialog and alertdialog node has an accessible name',\n          help: 'ARIA dialog and alertdialog nodes should have an accessible name'\n        },\n        'aria-hidden-body': {\n          description: 'Ensures aria-hidden=\\'true\\' is not present on the document body.',\n          help: 'aria-hidden=\\'true\\' must not be present on the document body'\n        },\n        'aria-hidden-focus': {\n          description: 'Ensures aria-hidden elements do not contain focusable elements',\n          help: 'ARIA hidden element must not contain focusable elements'\n        },\n        'aria-input-field-name': {\n          description: 'Ensures every ARIA input field has an accessible name',\n          help: 'ARIA input fields must have an accessible name'\n        },\n        'aria-meter-name': {\n          description: 'Ensures every ARIA meter node has an accessible name',\n          help: 'ARIA meter nodes must have an accessible name'\n        },\n        'aria-progressbar-name': {\n          description: 'Ensures every ARIA progressbar node has an accessible name',\n          help: 'ARIA progressbar nodes must have an accessible name'\n        },\n        'aria-required-attr': {\n          description: 'Ensures elements with ARIA roles have all required ARIA attributes',\n          help: 'Required ARIA attributes must be provided'\n        },\n        'aria-required-children': {\n          description: 'Ensures elements with an ARIA role that require child roles contain them',\n          help: 'Certain ARIA roles must contain particular children'\n        },\n        'aria-required-parent': {\n          description: 'Ensures elements with an ARIA role that require parent roles are contained by them',\n          help: 'Certain ARIA roles must be contained by particular parents'\n        },\n        'aria-roledescription': {\n          description: 'Ensure aria-roledescription is only used on elements with an implicit or explicit role',\n          help: 'Use aria-roledescription on elements with a semantic role'\n        },\n        'aria-roles': {\n          description: 'Ensures all elements with a role attribute use a valid value',\n          help: 'ARIA roles used must conform to valid values'\n        },\n        'aria-text': {\n          description: 'Ensures \"role=text\" is used on elements with no focusable descendants',\n          help: '\"role=text\" should have no focusable descendants'\n        },\n        'aria-toggle-field-name': {\n          description: 'Ensures every ARIA toggle field has an accessible name',\n          help: 'ARIA toggle fields have an accessible name'\n        },\n        'aria-tooltip-name': {\n          description: 'Ensures every ARIA tooltip node has an accessible name',\n          help: 'ARIA tooltip nodes must have an accessible name'\n        },\n        'aria-treeitem-name': {\n          description: 'Ensures every ARIA treeitem node has an accessible name',\n          help: 'ARIA treeitem nodes should have an accessible name'\n        },\n        'aria-valid-attr-value': {\n          description: 'Ensures all ARIA attributes have valid values',\n          help: 'ARIA attributes must conform to valid values'\n        },\n        'aria-valid-attr': {\n          description: 'Ensures attributes that begin with aria- are valid ARIA attributes',\n          help: 'ARIA attributes must conform to valid names'\n        },\n        'audio-caption': {\n          description: 'Ensures <audio> elements have captions',\n          help: '<audio> elements must have a captions track'\n        },\n        'autocomplete-valid': {\n          description: 'Ensure the autocomplete attribute is correct and suitable for the form field',\n          help: 'autocomplete attribute must be used correctly'\n        },\n        'avoid-inline-spacing': {\n          description: 'Ensure that text spacing set through style attributes can be adjusted with custom stylesheets',\n          help: 'Inline text spacing must be adjustable with custom stylesheets'\n        },\n        blink: {\n          description: 'Ensures <blink> elements are not used',\n          help: '<blink> elements are deprecated and must not be used'\n        },\n        'button-name': {\n          description: 'Ensures buttons have discernible text',\n          help: 'Buttons must have discernible text'\n        },\n        bypass: {\n          description: 'Ensures each page has at least one mechanism for a user to bypass navigation and jump straight to the content',\n          help: 'Page must have means to bypass repeated blocks'\n        },\n        'color-contrast': {\n          description: 'Ensures the contrast between foreground and background colors meets WCAG 2 AA contrast ratio thresholds',\n          help: 'Elements must have sufficient color contrast'\n        },\n        'css-orientation-lock': {\n          description: 'Ensures content is not locked to any specific display orientation, and the content is operable in all display orientations',\n          help: 'CSS Media queries are not used to lock display orientation'\n        },\n        'definition-list': {\n          description: 'Ensures <dl> elements are structured correctly',\n          help: '<dl> elements must only directly contain properly-ordered <dt> and <dd> groups, <script>, <template> or <div> elements'\n        },\n        dlitem: {\n          description: 'Ensures <dt> and <dd> elements are contained by a <dl>',\n          help: '<dt> and <dd> elements must be contained by a <dl>'\n        },\n        'document-title': {\n          description: 'Ensures each HTML document contains a non-empty <title> element',\n          help: 'Documents must have <title> element to aid in navigation'\n        },\n        'duplicate-id-active': {\n          description: 'Ensures every id attribute value of active elements is unique',\n          help: 'IDs of active elements must be unique'\n        },\n        'duplicate-id-aria': {\n          description: 'Ensures every id attribute value used in ARIA and in labels is unique',\n          help: 'IDs used in ARIA and labels must be unique'\n        },\n        'duplicate-id': {\n          description: 'Ensures every id attribute value is unique',\n          help: 'id attribute value must be unique'\n        },\n        'empty-heading': {\n          description: 'Ensures headings have discernible text',\n          help: 'Headings should not be empty'\n        },\n        'empty-table-header': {\n          description: 'Ensures table headers have discernible text',\n          help: 'Table header text must not be empty'\n        },\n        'focus-order-semantics': {\n          description: 'Ensures elements in the focus order have an appropriate role',\n          help: 'Elements in the focus order need a role appropriate for interactive content'\n        },\n        'form-field-multiple-labels': {\n          description: 'Ensures form field does not have multiple label elements',\n          help: 'Form field must not have multiple label elements'\n        },\n        'frame-focusable-content': {\n          description: 'Ensures <frame> and <iframe> elements with focusable content do not have tabindex=-1',\n          help: 'Frames with focusable content must not have tabindex=-1'\n        },\n        'frame-tested': {\n          description: 'Ensures <iframe> and <frame> elements contain the axe-core script',\n          help: 'Frames should be tested with axe-core'\n        },\n        'frame-title-unique': {\n          description: 'Ensures <iframe> and <frame> elements contain a unique title attribute',\n          help: 'Frames should have a unique title attribute'\n        },\n        'frame-title': {\n          description: 'Ensures <iframe> and <frame> elements have an accessible name',\n          help: 'Frames must have an accessible name'\n        },\n        'heading-order': {\n          description: 'Ensures the order of headings is semantically correct',\n          help: 'Heading levels should only increase by one'\n        },\n        'hidden-content': {\n          description: 'Informs users about hidden content.',\n          help: 'Hidden content on the page cannot be analyzed'\n        },\n        'html-has-lang': {\n          description: 'Ensures every HTML document has a lang attribute',\n          help: '<html> element must have a lang attribute'\n        },\n        'html-lang-valid': {\n          description: 'Ensures the lang attribute of the <html> element has a valid value',\n          help: '<html> element must have a valid value for the lang attribute'\n        },\n        'html-xml-lang-mismatch': {\n          description: 'Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page',\n          help: 'HTML elements with lang and xml:lang must have the same base language'\n        },\n        'identical-links-same-purpose': {\n          description: 'Ensure that links with the same accessible name serve a similar purpose',\n          help: 'Links with the same name have a similar purpose'\n        },\n        'image-alt': {\n          description: 'Ensures <img> elements have alternate text or a role of none or presentation',\n          help: 'Images must have alternate text'\n        },\n        'image-redundant-alt': {\n          description: 'Ensure image alternative is not repeated as text',\n          help: 'Alternative text of images should not be repeated as text'\n        },\n        'input-button-name': {\n          description: 'Ensures input buttons have discernible text',\n          help: 'Input buttons must have discernible text'\n        },\n        'input-image-alt': {\n          description: 'Ensures <input type=\"image\"> elements have alternate text',\n          help: 'Image buttons must have alternate text'\n        },\n        'label-content-name-mismatch': {\n          description: 'Ensures that elements labelled through their content must have their visible text as part of their accessible name',\n          help: 'Elements must have their visible text as part of their accessible name'\n        },\n        'label-title-only': {\n          description: 'Ensures that every form element is not solely labeled using the title or aria-describedby attributes',\n          help: 'Form elements should have a visible label'\n        },\n        label: {\n          description: 'Ensures every form element has a label',\n          help: 'Form elements must have labels'\n        },\n        'landmark-banner-is-top-level': {\n          description: 'Ensures the banner landmark is at top level',\n          help: 'Banner landmark should not be contained in another landmark'\n        },\n        'landmark-complementary-is-top-level': {\n          description: 'Ensures the complementary landmark or aside is at top level',\n          help: 'Aside should not be contained in another landmark'\n        },\n        'landmark-contentinfo-is-top-level': {\n          description: 'Ensures the contentinfo landmark is at top level',\n          help: 'Contentinfo landmark should not be contained in another landmark'\n        },\n        'landmark-main-is-top-level': {\n          description: 'Ensures the main landmark is at top level',\n          help: 'Main landmark should not be contained in another landmark'\n        },\n        'landmark-no-duplicate-banner': {\n          description: 'Ensures the document has at most one banner landmark',\n          help: 'Document should not have more than one banner landmark'\n        },\n        'landmark-no-duplicate-contentinfo': {\n          description: 'Ensures the document has at most one contentinfo landmark',\n          help: 'Document should not have more than one contentinfo landmark'\n        },\n        'landmark-no-duplicate-main': {\n          description: 'Ensures the document has at most one main landmark',\n          help: 'Document should not have more than one main landmark'\n        },\n        'landmark-one-main': {\n          description: 'Ensures the document has a main landmark',\n          help: 'Document should have one main landmark'\n        },\n        'landmark-unique': {\n          help: 'Ensures landmarks are unique',\n          description: 'Landmarks should have a unique role or role/label/title (i.e. accessible name) combination'\n        },\n        'link-in-text-block': {\n          description: 'Links can be distinguished without relying on color',\n          help: 'Links must be distinguished from surrounding text in a way that does not rely on color'\n        },\n        'link-name': {\n          description: 'Ensures links have discernible text',\n          help: 'Links must have discernible text'\n        },\n        list: {\n          description: 'Ensures that lists are structured correctly',\n          help: '<ul> and <ol> must only directly contain <li>, <script> or <template> elements'\n        },\n        listitem: {\n          description: 'Ensures <li> elements are used semantically',\n          help: '<li> elements must be contained in a <ul> or <ol>'\n        },\n        marquee: {\n          description: 'Ensures <marquee> elements are not used',\n          help: '<marquee> elements are deprecated and must not be used'\n        },\n        'meta-refresh': {\n          description: 'Ensures <meta http-equiv=\"refresh\"> is not used',\n          help: 'Timed refresh must not exist'\n        },\n        'meta-viewport-large': {\n          description: 'Ensures <meta name=\"viewport\"> can scale a significant amount',\n          help: 'Users should be able to zoom and scale the text up to 500%'\n        },\n        'meta-viewport': {\n          description: 'Ensures <meta name=\"viewport\"> does not disable text scaling and zooming',\n          help: 'Zooming and scaling should not be disabled'\n        },\n        'nested-interactive': {\n          description: 'Nested interactive controls are not announced by screen readers',\n          help: 'Ensure interactive controls are not nested'\n        },\n        'no-autoplay-audio': {\n          description: 'Ensures <video> or <audio> elements do not autoplay audio for more than 3 seconds without a control mechanism to stop or mute the audio',\n          help: '<video> or <audio> elements do not autoplay audio'\n        },\n        'object-alt': {\n          description: 'Ensures <object> elements have alternate text',\n          help: '<object> elements must have alternate text'\n        },\n        'p-as-heading': {\n          description: 'Ensure p elements are not used to style headings',\n          help: 'Bold, italic text and font-size are not used to style p elements as a heading'\n        },\n        'page-has-heading-one': {\n          description: 'Ensure that the page, or at least one of its frames contains a level-one heading',\n          help: 'Page should contain a level-one heading'\n        },\n        'presentation-role-conflict': {\n          description: 'Flags elements whose role is none or presentation and which cause the role conflict resolution to trigger.',\n          help: 'Elements of role none or presentation should be flagged'\n        },\n        region: {\n          description: 'Ensures all page content is contained by landmarks',\n          help: 'All page content should be contained by landmarks'\n        },\n        'role-img-alt': {\n          description: 'Ensures [role=\\'img\\'] elements have alternate text',\n          help: '[role=\\'img\\'] elements have an alternative text'\n        },\n        'scope-attr-valid': {\n          description: 'Ensures the scope attribute is used correctly on tables',\n          help: 'scope attribute should be used correctly'\n        },\n        'scrollable-region-focusable': {\n          description: 'Elements that have scrollable content must be accessible by keyboard',\n          help: 'Ensure that scrollable region has keyboard access'\n        },\n        'select-name': {\n          description: 'Ensures select element has an accessible name',\n          help: 'Select element must have an accessible name'\n        },\n        'server-side-image-map': {\n          description: 'Ensures that server-side image maps are not used',\n          help: 'Server-side image maps must not be used'\n        },\n        'skip-link': {\n          description: 'Ensure all skip links have a focusable target',\n          help: 'The skip-link target should exist and be focusable'\n        },\n        'svg-img-alt': {\n          description: 'Ensures svg elements with an img, graphics-document or graphics-symbol role have an accessible text',\n          help: 'svg elements with an img role have an alternative text'\n        },\n        tabindex: {\n          description: 'Ensures tabindex attribute values are not greater than 0',\n          help: 'Elements should not have tabindex greater than zero'\n        },\n        'table-duplicate-name': {\n          description: 'Ensure that tables do not have the same summary and caption',\n          help: 'The <caption> element should not contain the same text as the summary attribute'\n        },\n        'table-fake-caption': {\n          description: 'Ensure that tables with a caption use the <caption> element.',\n          help: 'Data or header cells must not be used to give caption to a data table.'\n        },\n        'td-has-header': {\n          description: 'Ensure that each non-empty data cell in a large table has one or more table headers',\n          help: 'All non-empty td element in table larger than 3 by 3 must have an associated table header'\n        },\n        'td-headers-attr': {\n          description: 'Ensure that each cell in a table using the headers refers to another cell in that table',\n          help: 'All cells in a table element that use the headers attribute must only refer to other cells of that same table'\n        },\n        'th-has-data-cells': {\n          description: 'Ensure that each table header in a data table refers to data cells',\n          help: 'All th elements and elements with role=columnheader/rowheader must have data cells they describe'\n        },\n        'valid-lang': {\n          description: 'Ensures lang attributes have valid values',\n          help: 'lang attribute must have a valid value'\n        },\n        'video-caption': {\n          description: 'Ensures <video> elements have captions',\n          help: '<video> elements must have captions'\n        }\n      },\n      checks: {\n        abstractrole: {\n          impact: 'serious',\n          messages: {\n            pass: 'Abstract roles are not used',\n            fail: {\n              singular: 'Abstract role cannot be directly used: ${data.values}',\n              plural: 'Abstract roles cannot be directly used: ${data.values}'\n            }\n          }\n        },\n        'aria-allowed-attr': {\n          impact: 'critical',\n          messages: {\n            pass: 'ARIA attributes are used correctly for the defined role',\n            fail: {\n              singular: 'ARIA attribute is not allowed: ${data.values}',\n              plural: 'ARIA attributes are not allowed: ${data.values}'\n            }\n          }\n        },\n        'aria-allowed-role': {\n          impact: 'minor',\n          messages: {\n            pass: 'ARIA role is allowed for given element',\n            fail: {\n              singular: 'ARIA role ${data.values} is not allowed for given element',\n              plural: 'ARIA roles ${data.values} are not allowed for given element'\n            },\n            incomplete: {\n              singular: 'ARIA role ${data.values} must be removed when the element is made visible, as it is not allowed for the element',\n              plural: 'ARIA roles ${data.values} must be removed when the element is made visible, as they are not allowed for the element'\n            }\n          }\n        },\n        'aria-errormessage': {\n          impact: 'critical',\n          messages: {\n            pass: 'aria-errormessage exists and references elements visible to screen readers that use a supported aria-errormessage technique',\n            fail: {\n              singular: 'aria-errormessage value `${data.values}` must use a technique to announce the message (e.g., aria-live, aria-describedby, role=alert, etc.)',\n              plural: 'aria-errormessage values `${data.values}` must use a technique to announce the message (e.g., aria-live, aria-describedby, role=alert, etc.)'\n            },\n            incomplete: {\n              singular: 'ensure aria-errormessage value `${data.values}` references an existing element',\n              plural: 'ensure aria-errormessage values `${data.values}` reference existing elements'\n            }\n          }\n        },\n        'aria-hidden-body': {\n          impact: 'critical',\n          messages: {\n            pass: 'No aria-hidden attribute is present on document body',\n            fail: 'aria-hidden=true should not be present on the document body'\n          }\n        },\n        'aria-prohibited-attr': {\n          impact: 'serious',\n          messages: {\n            pass: 'ARIA attribute is allowed',\n            fail: 'ARIA attribute cannot be used, add a role attribute or use a different element: ${data.values}',\n            incomplete: 'ARIA attribute is not well supported on the element and the text content will be used instead: ${data.values}'\n          }\n        },\n        'aria-required-attr': {\n          impact: 'critical',\n          messages: {\n            pass: 'All required ARIA attributes are present',\n            fail: {\n              singular: 'Required ARIA attribute not present: ${data.values}',\n              plural: 'Required ARIA attributes not present: ${data.values}'\n            }\n          }\n        },\n        'aria-required-children': {\n          impact: 'critical',\n          messages: {\n            pass: 'Required ARIA children are present',\n            fail: {\n              singular: 'Required ARIA child role not present: ${data.values}',\n              plural: 'Required ARIA children role not present: ${data.values}'\n            },\n            incomplete: {\n              singular: 'Expecting ARIA child role to be added: ${data.values}',\n              plural: 'Expecting ARIA children role to be added: ${data.values}'\n            }\n          }\n        },\n        'aria-required-parent': {\n          impact: 'critical',\n          messages: {\n            pass: 'Required ARIA parent role present',\n            fail: {\n              singular: 'Required ARIA parent role not present: ${data.values}',\n              plural: 'Required ARIA parents role not present: ${data.values}'\n            }\n          }\n        },\n        'aria-roledescription': {\n          impact: 'serious',\n          messages: {\n            pass: 'aria-roledescription used on a supported semantic role',\n            incomplete: 'Check that the aria-roledescription is announced by supported screen readers',\n            fail: 'Give the element a role that supports aria-roledescription'\n          }\n        },\n        'aria-unsupported-attr': {\n          impact: 'critical',\n          messages: {\n            pass: 'ARIA attribute is supported',\n            fail: 'ARIA attribute is not widely supported in screen readers and assistive technologies: ${data.values}'\n          }\n        },\n        'aria-valid-attr-value': {\n          impact: 'critical',\n          messages: {\n            pass: 'ARIA attribute values are valid',\n            fail: {\n              singular: 'Invalid ARIA attribute value: ${data.values}',\n              plural: 'Invalid ARIA attribute values: ${data.values}'\n            },\n            incomplete: {\n              noId: 'ARIA attribute element ID does not exist on the page: ${data.needsReview}',\n              ariaCurrent: 'ARIA attribute value is invalid and will be treated as \"aria-current=true\": ${data.needsReview}'\n            }\n          }\n        },\n        'aria-valid-attr': {\n          impact: 'critical',\n          messages: {\n            pass: 'ARIA attribute name is valid',\n            fail: {\n              singular: 'Invalid ARIA attribute name: ${data.values}',\n              plural: 'Invalid ARIA attribute names: ${data.values}'\n            }\n          }\n        },\n        fallbackrole: {\n          impact: 'serious',\n          messages: {\n            pass: 'Only one role value used',\n            fail: 'Use only one role value, since fallback roles are not supported in older browsers'\n          }\n        },\n        'has-global-aria-attribute': {\n          impact: 'minor',\n          messages: {\n            pass: {\n              singular: 'Element has global ARIA attribute: ${data.values}',\n              plural: 'Element has global ARIA attributes: ${data.values}'\n            },\n            fail: 'Element does not have global ARIA attribute'\n          }\n        },\n        'has-widget-role': {\n          impact: 'minor',\n          messages: {\n            pass: 'Element has a widget role.',\n            fail: 'Element does not have a widget role.'\n          }\n        },\n        invalidrole: {\n          impact: 'critical',\n          messages: {\n            pass: 'ARIA role is valid',\n            fail: {\n              singular: 'Role must be one of the valid ARIA roles: ${data.values}',\n              plural: 'Roles must be one of the valid ARIA roles: ${data.values}'\n            }\n          }\n        },\n        'is-element-focusable': {\n          impact: 'minor',\n          messages: {\n            pass: 'Element is focusable.',\n            fail: 'Element is not focusable.'\n          }\n        },\n        'no-implicit-explicit-label': {\n          impact: 'moderate',\n          messages: {\n            pass: 'There is no mismatch between a <label> and accessible name',\n            incomplete: 'Check that the <label> does not need be part of the ARIA ${data} field\\'s name'\n          }\n        },\n        unsupportedrole: {\n          impact: 'critical',\n          messages: {\n            pass: 'ARIA role is supported',\n            fail: 'The role used is not widely supported in screen readers and assistive technologies: ${data.values}'\n          }\n        },\n        'valid-scrollable-semantics': {\n          impact: 'minor',\n          messages: {\n            pass: 'Element has valid semantics for an element in the focus order.',\n            fail: 'Element has invalid semantics for an element in the focus order.'\n          }\n        },\n        'color-contrast': {\n          impact: 'serious',\n          messages: {\n            pass: 'Element has sufficient color contrast of ${data.contrastRatio}',\n            fail: 'Element has insufficient color contrast of ${data.contrastRatio} (foreground color: ${data.fgColor}, background color: ${data.bgColor}, font size: ${data.fontSize}, font weight: ${data.fontWeight}). Expected contrast ratio of ${data.expectedContrastRatio}',\n            incomplete: {\n              default: 'Unable to determine contrast ratio',\n              bgImage: 'Element\\'s background color could not be determined due to a background image',\n              bgGradient: 'Element\\'s background color could not be determined due to a background gradient',\n              imgNode: 'Element\\'s background color could not be determined because element contains an image node',\n              bgOverlap: 'Element\\'s background color could not be determined because it is overlapped by another element',\n              fgAlpha: 'Element\\'s foreground color could not be determined because of alpha transparency',\n              elmPartiallyObscured: 'Element\\'s background color could not be determined because it\\'s partially obscured by another element',\n              elmPartiallyObscuring: 'Element\\'s background color could not be determined because it partially overlaps other elements',\n              outsideViewport: 'Element\\'s background color could not be determined because it\\'s outside the viewport',\n              equalRatio: 'Element has a 1:1 contrast ratio with the background',\n              shortTextContent: 'Element content is too short to determine if it is actual text content',\n              nonBmp: 'Element content contains only non-text characters',\n              pseudoContent: 'Element\\'s background color could not be determined due to a pseudo element'\n            }\n          }\n        },\n        'link-in-text-block': {\n          impact: 'serious',\n          messages: {\n            pass: 'Links can be distinguished from surrounding text in some way other than by color',\n            fail: 'Links need to be distinguished from surrounding text in some way other than by color',\n            incomplete: {\n              default: 'Unable to determine contrast ratio',\n              bgContrast: 'Element\\'s contrast ratio could not be determined. Check for a distinct hover/focus style',\n              bgImage: 'Element\\'s contrast ratio could not be determined due to a background image',\n              bgGradient: 'Element\\'s contrast ratio could not be determined due to a background gradient',\n              imgNode: 'Element\\'s contrast ratio could not be determined because element contains an image node',\n              bgOverlap: 'Element\\'s contrast ratio could not be determined because of element overlap'\n            }\n          }\n        },\n        'autocomplete-appropriate': {\n          impact: 'serious',\n          messages: {\n            pass: 'the autocomplete value is on an appropriate element',\n            fail: 'the autocomplete value is inappropriate for this type of input'\n          }\n        },\n        'autocomplete-valid': {\n          impact: 'serious',\n          messages: {\n            pass: 'the autocomplete attribute is correctly formatted',\n            fail: 'the autocomplete attribute is incorrectly formatted'\n          }\n        },\n        accesskeys: {\n          impact: 'serious',\n          messages: {\n            pass: 'Accesskey attribute value is unique',\n            fail: 'Document has multiple elements with the same accesskey'\n          }\n        },\n        'focusable-content': {\n          impact: 'moderate',\n          messages: {\n            pass: 'Element contains focusable elements',\n            fail: 'Element should have focusable content'\n          }\n        },\n        'focusable-disabled': {\n          impact: 'serious',\n          messages: {\n            pass: 'No focusable elements contained within element',\n            fail: 'Focusable content should be disabled or be removed from the DOM'\n          }\n        },\n        'focusable-element': {\n          impact: 'moderate',\n          messages: {\n            pass: 'Element is focusable',\n            fail: 'Element should be focusable'\n          }\n        },\n        'focusable-modal-open': {\n          impact: 'serious',\n          messages: {\n            pass: 'No focusable elements while a modal is open',\n            incomplete: 'Check that focusable elements are not tabbable in the current state'\n          }\n        },\n        'focusable-no-name': {\n          impact: 'serious',\n          messages: {\n            pass: 'Element is not in tab order or has accessible text',\n            fail: 'Element is in tab order and does not have accessible text',\n            incomplete: 'Unable to determine if element has an accessible name'\n          }\n        },\n        'focusable-not-tabbable': {\n          impact: 'serious',\n          messages: {\n            pass: 'No focusable elements contained within element',\n            fail: 'Focusable content should have tabindex=\\'-1\\' or be removed from the DOM'\n          }\n        },\n        'frame-focusable-content': {\n          impact: 'serious',\n          messages: {\n            pass: 'Element does not have focusable descendants',\n            fail: 'Element has focusable descendants',\n            incomplete: 'Could not determine if element has descendants'\n          }\n        },\n        'landmark-is-top-level': {\n          impact: 'moderate',\n          messages: {\n            pass: 'The ${data.role} landmark is at the top level.',\n            fail: 'The ${data.role} landmark is contained in another landmark.'\n          }\n        },\n        'no-focusable-content': {\n          impact: 'serious',\n          messages: {\n            pass: 'Element does not have focusable descendants',\n            fail: 'Element has focusable descendants',\n            incomplete: 'Could not determine if element has descendants'\n          }\n        },\n        'page-has-heading-one': {\n          impact: 'moderate',\n          messages: {\n            pass: 'Page has at least one level-one heading',\n            fail: 'Page must have a level-one heading'\n          }\n        },\n        'page-has-main': {\n          impact: 'moderate',\n          messages: {\n            pass: 'Document has at least one main landmark',\n            fail: 'Document does not have a main landmark'\n          }\n        },\n        'page-no-duplicate-banner': {\n          impact: 'moderate',\n          messages: {\n            pass: 'Document does not have more than one banner landmark',\n            fail: 'Document has more than one banner landmark'\n          }\n        },\n        'page-no-duplicate-contentinfo': {\n          impact: 'moderate',\n          messages: {\n            pass: 'Document does not have more than one contentinfo landmark',\n            fail: 'Document has more than one contentinfo landmark'\n          }\n        },\n        'page-no-duplicate-main': {\n          impact: 'moderate',\n          messages: {\n            pass: 'Document does not have more than one main landmark',\n            fail: 'Document has more than one main landmark'\n          }\n        },\n        tabindex: {\n          impact: 'serious',\n          messages: {\n            pass: 'Element does not have a tabindex greater than 0',\n            fail: 'Element has a tabindex greater than 0'\n          }\n        },\n        'alt-space-value': {\n          impact: 'critical',\n          messages: {\n            pass: 'Element has a valid alt attribute value',\n            fail: 'Element has an alt attribute containing only a space character, which is not ignored by all screen readers'\n          }\n        },\n        'duplicate-img-label': {\n          impact: 'minor',\n          messages: {\n            pass: 'Element does not duplicate existing text in <img> alt text',\n            fail: 'Element contains <img> element with alt text that duplicates existing text'\n          }\n        },\n        'explicit-label': {\n          impact: 'critical',\n          messages: {\n            pass: 'Form element has an explicit <label>',\n            fail: 'Form element does not have an explicit <label>',\n            incomplete: 'Unable to determine if form element has an explicit <label>'\n          }\n        },\n        'help-same-as-label': {\n          impact: 'minor',\n          messages: {\n            pass: 'Help text (title or aria-describedby) does not duplicate label text',\n            fail: 'Help text (title or aria-describedby) text is the same as the label text'\n          }\n        },\n        'hidden-explicit-label': {\n          impact: 'critical',\n          messages: {\n            pass: 'Form element has a visible explicit <label>',\n            fail: 'Form element has explicit <label> that is hidden',\n            incomplete: 'Unable to determine if form element has explicit <label> that is hidden'\n          }\n        },\n        'implicit-label': {\n          impact: 'critical',\n          messages: {\n            pass: 'Form element has an implicit (wrapped) <label>',\n            fail: 'Form element does not have an implicit (wrapped) <label>',\n            incomplete: 'Unable to determine if form element has an implicit (wrapped} <label>'\n          }\n        },\n        'label-content-name-mismatch': {\n          impact: 'serious',\n          messages: {\n            pass: 'Element contains visible text as part of it\\'s accessible name',\n            fail: 'Text inside the element is not included in the accessible name'\n          }\n        },\n        'multiple-label': {\n          impact: 'moderate',\n          messages: {\n            pass: 'Form field does not have multiple label elements',\n            incomplete: 'Multiple label elements is not widely supported in assistive technologies. Ensure the first label contains all necessary information.'\n          }\n        },\n        'title-only': {\n          impact: 'serious',\n          messages: {\n            pass: 'Form element does not solely use title attribute for its label',\n            fail: 'Only title used to generate label for form element'\n          }\n        },\n        'landmark-is-unique': {\n          impact: 'moderate',\n          messages: {\n            pass: 'Landmarks must have a unique role or role/label/title (i.e. accessible name) combination',\n            fail: 'The landmark must have a unique aria-label, aria-labelledby, or title to make landmarks distinguishable'\n          }\n        },\n        'has-lang': {\n          impact: 'serious',\n          messages: {\n            pass: 'The <html> element has a lang attribute',\n            fail: {\n              noXHTML: 'The xml:lang attribute is not valid on HTML pages, use the lang attribute.',\n              noLang: 'The <html> element does not have a lang attribute'\n            }\n          }\n        },\n        'valid-lang': {\n          impact: 'serious',\n          messages: {\n            pass: 'Value of lang attribute is included in the list of valid languages',\n            fail: 'Value of lang attribute not included in the list of valid languages'\n          }\n        },\n        'xml-lang-mismatch': {\n          impact: 'moderate',\n          messages: {\n            pass: 'Lang and xml:lang attributes have the same base language',\n            fail: 'Lang and xml:lang attributes do not have the same base language'\n          }\n        },\n        dlitem: {\n          impact: 'serious',\n          messages: {\n            pass: 'Description list item has a <dl> parent element',\n            fail: 'Description list item does not have a <dl> parent element'\n          }\n        },\n        listitem: {\n          impact: 'serious',\n          messages: {\n            pass: 'List item has a <ul>, <ol> or role=\"list\" parent element',\n            fail: {\n              default: 'List item does not have a <ul>, <ol> parent element',\n              roleNotValid: 'List item does not have a <ul>, <ol> parent element without a role, or a role=\"list\"'\n            }\n          }\n        },\n        'only-dlitems': {\n          impact: 'serious',\n          messages: {\n            pass: 'List element only has direct children that are allowed inside <dt> or <dd> elements',\n            fail: 'List element has direct children that are not allowed inside <dt> or <dd> elements'\n          }\n        },\n        'only-listitems': {\n          impact: 'serious',\n          messages: {\n            pass: 'List element only has direct children that are allowed inside <li> elements',\n            fail: {\n              default: 'List element has direct children that are not allowed inside <li> elements',\n              roleNotValid: 'List element has direct children with a role that is not allowed: ${data.roles}'\n            }\n          }\n        },\n        'structured-dlitems': {\n          impact: 'serious',\n          messages: {\n            pass: 'When not empty, element has both <dt> and <dd> elements',\n            fail: 'When not empty, element does not have at least one <dt> element followed by at least one <dd> element'\n          }\n        },\n        caption: {\n          impact: 'critical',\n          messages: {\n            pass: 'The multimedia element has a captions track',\n            incomplete: 'Check that captions is available for the element'\n          }\n        },\n        'frame-tested': {\n          impact: 'critical',\n          messages: {\n            pass: 'The iframe was tested with axe-core',\n            fail: 'The iframe could not be tested with axe-core',\n            incomplete: 'The iframe still has to be tested with axe-core'\n          }\n        },\n        'no-autoplay-audio': {\n          impact: 'moderate',\n          messages: {\n            pass: '<video> or <audio> does not output audio for more than allowed duration or has controls mechanism',\n            fail: '<video> or <audio> outputs audio for more than allowed duration and does not have a controls mechanism',\n            incomplete: 'Check that the <video> or <audio> does not output audio for more than allowed duration or provides a controls mechanism'\n          }\n        },\n        'css-orientation-lock': {\n          impact: 'serious',\n          messages: {\n            pass: 'Display is operable, and orientation lock does not exist',\n            fail: 'CSS Orientation lock is applied, and makes display inoperable',\n            incomplete: 'CSS Orientation lock cannot be determined'\n          }\n        },\n        'meta-viewport-large': {\n          impact: 'minor',\n          messages: {\n            pass: '<meta> tag does not prevent significant zooming on mobile devices',\n            fail: '<meta> tag limits zooming on mobile devices'\n          }\n        },\n        'meta-viewport': {\n          impact: 'critical',\n          messages: {\n            pass: '<meta> tag does not disable zooming on mobile devices',\n            fail: '${data} on <meta> tag disables zooming on mobile devices'\n          }\n        },\n        'header-present': {\n          impact: 'serious',\n          messages: {\n            pass: 'Page has a heading',\n            fail: 'Page does not have a heading'\n          }\n        },\n        'heading-order': {\n          impact: 'moderate',\n          messages: {\n            pass: 'Heading order valid',\n            fail: 'Heading order invalid'\n          }\n        },\n        'identical-links-same-purpose': {\n          impact: 'minor',\n          messages: {\n            pass: 'There are no other links with the same name, that go to a different URL',\n            incomplete: 'Check that links have the same purpose, or are intentionally ambiguous.'\n          }\n        },\n        'internal-link-present': {\n          impact: 'serious',\n          messages: {\n            pass: 'Valid skip link found',\n            fail: 'No valid skip link found'\n          }\n        },\n        landmark: {\n          impact: 'serious',\n          messages: {\n            pass: 'Page has a landmark region',\n            fail: 'Page does not have a landmark region'\n          }\n        },\n        'meta-refresh': {\n          impact: 'critical',\n          messages: {\n            pass: '<meta> tag does not immediately refresh the page',\n            fail: '<meta> tag forces timed refresh of page'\n          }\n        },\n        'p-as-heading': {\n          impact: 'serious',\n          messages: {\n            pass: '<p> elements are not styled as headings',\n            fail: 'Heading elements should be used instead of styled p elements'\n          }\n        },\n        region: {\n          impact: 'moderate',\n          messages: {\n            pass: 'All page content is contained by landmarks',\n            fail: 'Some page content is not contained by landmarks'\n          }\n        },\n        'skip-link': {\n          impact: 'moderate',\n          messages: {\n            pass: 'Skip link target exists',\n            incomplete: 'Skip link target should become visible on activation',\n            fail: 'No skip link target'\n          }\n        },\n        'unique-frame-title': {\n          impact: 'serious',\n          messages: {\n            pass: 'Element\\'s title attribute is unique',\n            fail: 'Element\\'s title attribute is not unique'\n          }\n        },\n        'duplicate-id-active': {\n          impact: 'serious',\n          messages: {\n            pass: 'Document has no active elements that share the same id attribute',\n            fail: 'Document has active elements with the same id attribute: ${data}'\n          }\n        },\n        'duplicate-id-aria': {\n          impact: 'critical',\n          messages: {\n            pass: 'Document has no elements referenced with ARIA or labels that share the same id attribute',\n            fail: 'Document has multiple elements referenced with ARIA with the same id attribute: ${data}'\n          }\n        },\n        'duplicate-id': {\n          impact: 'minor',\n          messages: {\n            pass: 'Document has no static elements that share the same id attribute',\n            fail: 'Document has multiple static elements with the same id attribute: ${data}'\n          }\n        },\n        'aria-label': {\n          impact: 'serious',\n          messages: {\n            pass: 'aria-label attribute exists and is not empty',\n            fail: 'aria-label attribute does not exist or is empty'\n          }\n        },\n        'aria-labelledby': {\n          impact: 'serious',\n          messages: {\n            pass: 'aria-labelledby attribute exists and references elements that are visible to screen readers',\n            fail: 'aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty',\n            incomplete: 'ensure aria-labelledby references an existing element'\n          }\n        },\n        'avoid-inline-spacing': {\n          impact: 'serious',\n          messages: {\n            pass: 'No inline styles with \\'!important\\' that affect text spacing has been specified',\n            fail: {\n              singular: 'Remove \\'!important\\' from inline style ${data.values}, as overriding this is not supported by most browsers',\n              plural: 'Remove \\'!important\\' from inline styles ${data.values}, as overriding this is not supported by most browsers'\n            }\n          }\n        },\n        'button-has-visible-text': {\n          impact: 'critical',\n          messages: {\n            pass: 'Element has inner text that is visible to screen readers',\n            fail: 'Element does not have inner text that is visible to screen readers',\n            incomplete: 'Unable to determine if element has children'\n          }\n        },\n        'doc-has-title': {\n          impact: 'serious',\n          messages: {\n            pass: 'Document has a non-empty <title> element',\n            fail: 'Document does not have a non-empty <title> element'\n          }\n        },\n        exists: {\n          impact: 'minor',\n          messages: {\n            pass: 'Element does not exist',\n            incomplete: 'Element exists'\n          }\n        },\n        'has-alt': {\n          impact: 'critical',\n          messages: {\n            pass: 'Element has an alt attribute',\n            fail: 'Element does not have an alt attribute'\n          }\n        },\n        'has-visible-text': {\n          impact: 'minor',\n          messages: {\n            pass: 'Element has text that is visible to screen readers',\n            fail: 'Element does not have text that is visible to screen readers',\n            incomplete: 'Unable to determine if element has children'\n          }\n        },\n        'is-on-screen': {\n          impact: 'serious',\n          messages: {\n            pass: 'Element is not visible',\n            fail: 'Element is visible'\n          }\n        },\n        'non-empty-alt': {\n          impact: 'critical',\n          messages: {\n            pass: 'Element has a non-empty alt attribute',\n            fail: {\n              noAttr: 'Element has no alt attribute',\n              emptyAttr: 'Element has an empty alt attribute'\n            }\n          }\n        },\n        'non-empty-if-present': {\n          impact: 'critical',\n          messages: {\n            pass: {\n              default: 'Element does not have a value attribute',\n              'has-label': 'Element has a non-empty value attribute'\n            },\n            fail: 'Element has a value attribute and the value attribute is empty'\n          }\n        },\n        'non-empty-placeholder': {\n          impact: 'serious',\n          messages: {\n            pass: 'Element has a placeholder attribute',\n            fail: {\n              noAttr: 'Element has no placeholder attribute',\n              emptyAttr: 'Element has an empty placeholder attribute'\n            }\n          }\n        },\n        'non-empty-title': {\n          impact: 'serious',\n          messages: {\n            pass: 'Element has a title attribute',\n            fail: {\n              noAttr: 'Element has no title attribute',\n              emptyAttr: 'Element has an empty title attribute'\n            }\n          }\n        },\n        'non-empty-value': {\n          impact: 'critical',\n          messages: {\n            pass: 'Element has a non-empty value attribute',\n            fail: {\n              noAttr: 'Element has no value attribute',\n              emptyAttr: 'Element has an empty value attribute'\n            }\n          }\n        },\n        'presentational-role': {\n          impact: 'minor',\n          messages: {\n            pass: 'Element\\'s default semantics were overriden with role=\"${data.role}\"',\n            fail: {\n              default: 'Element\\'s default semantics were not overridden with role=\"none\" or role=\"presentation\"',\n              globalAria: 'Element\\'s role is not presentational because it has a global ARIA attribute',\n              focusable: 'Element\\'s role is not presentational because it is focusable',\n              both: 'Element\\'s role is not presentational because it has a global ARIA attribute and is focusable'\n            }\n          }\n        },\n        'role-none': {\n          impact: 'minor',\n          messages: {\n            pass: 'Element\\'s default semantics were overriden with role=\"none\"',\n            fail: 'Element\\'s default semantics were not overridden with role=\"none\"'\n          }\n        },\n        'role-presentation': {\n          impact: 'minor',\n          messages: {\n            pass: 'Element\\'s default semantics were overriden with role=\"presentation\"',\n            fail: 'Element\\'s default semantics were not overridden with role=\"presentation\"'\n          }\n        },\n        'svg-non-empty-title': {\n          impact: 'serious',\n          messages: {\n            pass: 'Element has a child that is a title',\n            fail: {\n              noTitle: 'Element has no child that is a title',\n              emptyTitle: 'Element child title is empty'\n            },\n            incomplete: 'Unable to determine element has a child that is a title'\n          }\n        },\n        'caption-faked': {\n          impact: 'serious',\n          messages: {\n            pass: 'The first row of a table is not used as a caption',\n            fail: 'The first child of the table should be a caption instead of a table cell'\n          }\n        },\n        'html5-scope': {\n          impact: 'moderate',\n          messages: {\n            pass: 'Scope attribute is only used on table header elements (<th>)',\n            fail: 'In HTML 5, scope attributes may only be used on table header elements (<th>)'\n          }\n        },\n        'same-caption-summary': {\n          impact: 'minor',\n          messages: {\n            pass: 'Content of summary attribute and <caption> are not duplicated',\n            fail: 'Content of summary attribute and <caption> element are identical'\n          }\n        },\n        'scope-value': {\n          impact: 'critical',\n          messages: {\n            pass: 'Scope attribute is used correctly',\n            fail: 'The value of the scope attribute may only be \\'row\\' or \\'col\\''\n          }\n        },\n        'td-has-header': {\n          impact: 'critical',\n          messages: {\n            pass: 'All non-empty data cells have table headers',\n            fail: 'Some non-empty data cells do not have table headers'\n          }\n        },\n        'td-headers-attr': {\n          impact: 'serious',\n          messages: {\n            pass: 'The headers attribute is exclusively used to refer to other cells in the table',\n            incomplete: 'The headers attribute is empty',\n            fail: 'The headers attribute is not exclusively used to refer to other cells in the table'\n          }\n        },\n        'th-has-data-cells': {\n          impact: 'serious',\n          messages: {\n            pass: 'All table header cells refer to data cells',\n            fail: 'Not all table header cells refer to data cells',\n            incomplete: 'Table data cells are missing or empty'\n          }\n        },\n        'hidden-content': {\n          impact: 'minor',\n          messages: {\n            pass: 'All content on the page has been analyzed.',\n            fail: 'There were problems analyzing the content on this page.',\n            incomplete: 'There is hidden content on the page that was not analyzed. You will need to trigger the display of this content in order to analyze it.'\n          }\n        }\n      },\n      failureSummaries: {\n        any: {\n          failureMessage: function anonymous(it) {\n            var out = 'Fix any of the following:';\n            var arr1 = it;\n            if (arr1) {\n              var value, i1 = -1, l1 = arr1.length - 1;\n              while (i1 < l1) {\n                value = arr1[i1 += 1];\n                out += '\\n  ' + value.split('\\n').join('\\n  ');\n              }\n            }\n            return out;\n          }\n        },\n        none: {\n          failureMessage: function anonymous(it) {\n            var out = 'Fix all of the following:';\n            var arr1 = it;\n            if (arr1) {\n              var value, i1 = -1, l1 = arr1.length - 1;\n              while (i1 < l1) {\n                value = arr1[i1 += 1];\n                out += '\\n  ' + value.split('\\n').join('\\n  ');\n              }\n            }\n            return out;\n          }\n        }\n      },\n      incompleteFallbackMessage: {}\n    },\n    rules: [ {\n      id: 'accesskeys',\n      selector: '[accesskey]',\n      excludeHidden: false,\n      tags: [ 'cat.keyboard', 'best-practice' ],\n      all: [],\n      any: [],\n      none: [ 'accesskeys' ]\n    }, {\n      id: 'area-alt',\n      selector: 'map area[href]',\n      excludeHidden: false,\n      tags: [ 'cat.text-alternatives', 'wcag2a', 'wcag111', 'wcag244', 'wcag412', 'section508', 'section508.22.a', 'ACT' ],\n      all: [],\n      any: [ {\n        options: {\n          attribute: 'alt'\n        },\n        id: 'non-empty-alt'\n      }, 'aria-label', 'aria-labelledby', {\n        options: {\n          attribute: 'title'\n        },\n        id: 'non-empty-title'\n      } ],\n      none: []\n    }, {\n      id: 'aria-allowed-attr',\n      matches: 'aria-allowed-attr-matches',\n      tags: [ 'cat.aria', 'wcag2a', 'wcag412' ],\n      all: [],\n      any: [ 'aria-allowed-attr' ],\n      none: [ 'aria-unsupported-attr', {\n        options: {\n          elementsAllowedAriaLabel: [ 'audio', 'applet', 'canvas', 'dl', 'embed', 'iframe', 'input', 'label', 'meter', 'object', 'svg', 'video' ]\n        },\n        id: 'aria-prohibited-attr'\n      } ]\n    }, {\n      id: 'aria-allowed-role',\n      excludeHidden: false,\n      selector: '[role]',\n      matches: 'aria-allowed-role-matches',\n      tags: [ 'cat.aria', 'best-practice' ],\n      all: [],\n      any: [ {\n        options: {\n          allowImplicit: true,\n          ignoredTags: []\n        },\n        id: 'aria-allowed-role'\n      } ],\n      none: []\n    }, {\n      id: 'aria-command-name',\n      selector: '[role=\"link\"], [role=\"button\"], [role=\"menuitem\"]',\n      matches: 'no-naming-method-matches',\n      tags: [ 'cat.aria', 'wcag2a', 'wcag412' ],\n      all: [],\n      any: [ 'has-visible-text', 'aria-label', 'aria-labelledby', {\n        options: {\n          attribute: 'title'\n        },\n        id: 'non-empty-title'\n      } ],\n      none: []\n    }, {\n      id: 'aria-dialog-name',\n      selector: '[role=\"dialog\"], [role=\"alertdialog\"]',\n      matches: 'no-naming-method-matches',\n      tags: [ 'cat.aria', 'best-practice' ],\n      all: [],\n      any: [ 'aria-label', 'aria-labelledby', {\n        options: {\n          attribute: 'title'\n        },\n        id: 'non-empty-title'\n      } ],\n      none: []\n    }, {\n      id: 'aria-hidden-body',\n      selector: 'body',\n      excludeHidden: false,\n      matches: 'is-initiator-matches',\n      tags: [ 'cat.aria', 'wcag2a', 'wcag412' ],\n      all: [],\n      any: [ 'aria-hidden-body' ],\n      none: []\n    }, {\n      id: 'aria-hidden-focus',\n      selector: '[aria-hidden=\"true\"]',\n      matches: 'aria-hidden-focus-matches',\n      excludeHidden: false,\n      tags: [ 'cat.name-role-value', 'wcag2a', 'wcag412', 'wcag131' ],\n      all: [ 'focusable-modal-open', 'focusable-disabled', 'focusable-not-tabbable' ],\n      any: [],\n      none: []\n    }, {\n      id: 'aria-input-field-name',\n      selector: '[role=\"combobox\"], [role=\"listbox\"], [role=\"searchbox\"], [role=\"slider\"], [role=\"spinbutton\"], [role=\"textbox\"]',\n      matches: 'no-naming-method-matches',\n      tags: [ 'cat.aria', 'wcag2a', 'wcag412', 'ACT' ],\n      all: [],\n      any: [ 'aria-label', 'aria-labelledby', {\n        options: {\n          attribute: 'title'\n        },\n        id: 'non-empty-title'\n      } ],\n      none: [ 'no-implicit-explicit-label' ]\n    }, {\n      id: 'aria-meter-name',\n      selector: '[role=\"meter\"]',\n      matches: 'no-naming-method-matches',\n      tags: [ 'cat.aria', 'wcag2a', 'wcag111' ],\n      all: [],\n      any: [ 'aria-label', 'aria-labelledby', {\n        options: {\n          attribute: 'title'\n        },\n        id: 'non-empty-title'\n      } ],\n      none: []\n    }, {\n      id: 'aria-progressbar-name',\n      selector: '[role=\"progressbar\"]',\n      matches: 'no-naming-method-matches',\n      tags: [ 'cat.aria', 'wcag2a', 'wcag111' ],\n      all: [],\n      any: [ 'aria-label', 'aria-labelledby', {\n        options: {\n          attribute: 'title'\n        },\n        id: 'non-empty-title'\n      } ],\n      none: []\n    }, {\n      id: 'aria-required-attr',\n      selector: '[role]',\n      tags: [ 'cat.aria', 'wcag2a', 'wcag412' ],\n      all: [],\n      any: [ 'aria-required-attr' ],\n      none: []\n    }, {\n      id: 'aria-required-children',\n      selector: '[role]',\n      matches: 'aria-required-children-matches',\n      tags: [ 'cat.aria', 'wcag2a', 'wcag131' ],\n      all: [],\n      any: [ {\n        options: {\n          reviewEmpty: [ 'doc-bibliography', 'doc-endnotes', 'grid', 'list', 'listbox', 'table', 'tablist', 'tree', 'treegrid', 'rowgroup' ]\n        },\n        id: 'aria-required-children'\n      } ],\n      none: []\n    }, {\n      id: 'aria-required-parent',\n      selector: '[role]',\n      matches: 'aria-required-parent-matches',\n      tags: [ 'cat.aria', 'wcag2a', 'wcag131' ],\n      all: [],\n      any: [ {\n        options: {\n          ownGroupRoles: [ 'listitem', 'treeitem' ]\n        },\n        id: 'aria-required-parent'\n      } ],\n      none: []\n    }, {\n      id: 'aria-roledescription',\n      selector: '[aria-roledescription]',\n      tags: [ 'cat.aria', 'wcag2a', 'wcag412' ],\n      all: [],\n      any: [ {\n        options: {\n          supportedRoles: [ 'button', 'img', 'checkbox', 'radio', 'combobox', 'menuitemcheckbox', 'menuitemradio' ]\n        },\n        id: 'aria-roledescription'\n      } ],\n      none: []\n    }, {\n      id: 'aria-roles',\n      selector: '[role]',\n      matches: 'no-empty-role-matches',\n      tags: [ 'cat.aria', 'wcag2a', 'wcag412' ],\n      all: [],\n      any: [],\n      none: [ 'fallbackrole', 'invalidrole', 'abstractrole', 'unsupportedrole' ]\n    }, {\n      id: 'aria-text',\n      selector: '[role=text]',\n      tags: [ 'cat.aria', 'best-practice' ],\n      all: [],\n      any: [ 'no-focusable-content' ],\n      none: []\n    }, {\n      id: 'aria-toggle-field-name',\n      selector: '[role=\"checkbox\"], [role=\"menuitemcheckbox\"], [role=\"menuitemradio\"], [role=\"radio\"], [role=\"switch\"], [role=\"option\"]',\n      matches: 'no-naming-method-matches',\n      tags: [ 'cat.aria', 'wcag2a', 'wcag412', 'ACT' ],\n      all: [],\n      any: [ 'has-visible-text', 'aria-label', 'aria-labelledby', {\n        options: {\n          attribute: 'title'\n        },\n        id: 'non-empty-title'\n      } ],\n      none: [ 'no-implicit-explicit-label' ]\n    }, {\n      id: 'aria-tooltip-name',\n      selector: '[role=\"tooltip\"]',\n      matches: 'no-naming-method-matches',\n      tags: [ 'cat.aria', 'wcag2a', 'wcag412' ],\n      all: [],\n      any: [ 'has-visible-text', 'aria-label', 'aria-labelledby', {\n        options: {\n          attribute: 'title'\n        },\n        id: 'non-empty-title'\n      } ],\n      none: []\n    }, {\n      id: 'aria-treeitem-name',\n      selector: '[role=\"treeitem\"]',\n      matches: 'no-naming-method-matches',\n      tags: [ 'cat.aria', 'best-practice' ],\n      all: [],\n      any: [ 'has-visible-text', 'aria-label', 'aria-labelledby', {\n        options: {\n          attribute: 'title'\n        },\n        id: 'non-empty-title'\n      } ],\n      none: []\n    }, {\n      id: 'aria-valid-attr-value',\n      matches: 'aria-has-attr-matches',\n      tags: [ 'cat.aria', 'wcag2a', 'wcag412' ],\n      all: [ {\n        options: [],\n        id: 'aria-valid-attr-value'\n      }, 'aria-errormessage' ],\n      any: [],\n      none: []\n    }, {\n      id: 'aria-valid-attr',\n      matches: 'aria-has-attr-matches',\n      tags: [ 'cat.aria', 'wcag2a', 'wcag412' ],\n      all: [],\n      any: [ {\n        options: [],\n        id: 'aria-valid-attr'\n      } ],\n      none: []\n    }, {\n      id: 'audio-caption',\n      selector: 'audio',\n      enabled: false,\n      excludeHidden: false,\n      tags: [ 'cat.time-and-media', 'wcag2a', 'wcag121', 'section508', 'section508.22.a' ],\n      all: [],\n      any: [],\n      none: [ 'caption' ]\n    }, {\n      id: 'autocomplete-valid',\n      matches: 'autocomplete-matches',\n      tags: [ 'cat.forms', 'wcag21aa', 'wcag135' ],\n      all: [ 'autocomplete-valid', 'autocomplete-appropriate' ],\n      any: [],\n      none: []\n    }, {\n      id: 'avoid-inline-spacing',\n      selector: '[style]',\n      tags: [ 'cat.structure', 'wcag21aa', 'wcag1412' ],\n      all: [ {\n        options: {\n          cssProperties: [ 'line-height', 'letter-spacing', 'word-spacing' ]\n        },\n        id: 'avoid-inline-spacing'\n      } ],\n      any: [],\n      none: []\n    }, {\n      id: 'blink',\n      selector: 'blink',\n      excludeHidden: false,\n      tags: [ 'cat.time-and-media', 'wcag2a', 'wcag222', 'section508', 'section508.22.j' ],\n      all: [],\n      any: [],\n      none: [ 'is-on-screen' ]\n    }, {\n      id: 'button-name',\n      selector: 'button',\n      matches: 'no-explicit-name-required-matches',\n      tags: [ 'cat.name-role-value', 'wcag2a', 'wcag412', 'section508', 'section508.22.a', 'ACT' ],\n      all: [],\n      any: [ 'button-has-visible-text', 'aria-label', 'aria-labelledby', {\n        options: {\n          attribute: 'title'\n        },\n        id: 'non-empty-title'\n      }, 'presentational-role' ],\n      none: []\n    }, {\n      id: 'bypass',\n      selector: 'html',\n      pageLevel: true,\n      matches: 'bypass-matches',\n      reviewOnFail: true,\n      tags: [ 'cat.keyboard', 'wcag2a', 'wcag241', 'section508', 'section508.22.o' ],\n      all: [],\n      any: [ 'internal-link-present', {\n        options: {\n          selector: ':is(h1, h2, h3, h4, h5, h6):not([role]), [role=heading]'\n        },\n        id: 'header-present'\n      }, {\n        options: {\n          selector: 'main, [role=main]'\n        },\n        id: 'landmark'\n      } ],\n      none: []\n    }, {\n      id: 'color-contrast',\n      matches: 'color-contrast-matches',\n      excludeHidden: false,\n      tags: [ 'cat.color', 'wcag2aa', 'wcag143' ],\n      all: [],\n      any: [ {\n        options: {\n          ignoreUnicode: true,\n          ignoreLength: false,\n          boldValue: 700,\n          boldTextPt: 14,\n          largeTextPt: 18,\n          contrastRatio: {\n            normal: {\n              expected: 4.5\n            },\n            large: {\n              expected: 3\n            }\n          },\n          shadowOutlineEmMax: .1\n        },\n        id: 'color-contrast'\n      } ],\n      none: []\n    }, {\n      id: 'css-orientation-lock',\n      selector: 'html',\n      tags: [ 'cat.structure', 'wcag134', 'wcag21aa', 'experimental' ],\n      all: [ {\n        options: {\n          degreeThreshold: 2\n        },\n        id: 'css-orientation-lock'\n      } ],\n      any: [],\n      none: [],\n      preload: true\n    }, {\n      id: 'definition-list',\n      selector: 'dl',\n      matches: 'no-role-matches',\n      tags: [ 'cat.structure', 'wcag2a', 'wcag131' ],\n      all: [],\n      any: [],\n      none: [ 'structured-dlitems', 'only-dlitems' ]\n    }, {\n      id: 'dlitem',\n      selector: 'dd, dt',\n      matches: 'no-role-matches',\n      tags: [ 'cat.structure', 'wcag2a', 'wcag131' ],\n      all: [],\n      any: [ 'dlitem' ],\n      none: []\n    }, {\n      id: 'document-title',\n      selector: 'html',\n      matches: 'is-initiator-matches',\n      tags: [ 'cat.text-alternatives', 'wcag2a', 'wcag242', 'ACT' ],\n      all: [],\n      any: [ 'doc-has-title' ],\n      none: []\n    }, {\n      id: 'duplicate-id-active',\n      selector: '[id]',\n      matches: 'duplicate-id-active-matches',\n      excludeHidden: false,\n      tags: [ 'cat.parsing', 'wcag2a', 'wcag411' ],\n      all: [],\n      any: [ 'duplicate-id-active' ],\n      none: []\n    }, {\n      id: 'duplicate-id-aria',\n      selector: '[id]',\n      matches: 'duplicate-id-aria-matches',\n      excludeHidden: false,\n      tags: [ 'cat.parsing', 'wcag2a', 'wcag411' ],\n      all: [],\n      any: [ 'duplicate-id-aria' ],\n      none: []\n    }, {\n      id: 'duplicate-id',\n      selector: '[id]',\n      matches: 'duplicate-id-misc-matches',\n      excludeHidden: false,\n      tags: [ 'cat.parsing', 'wcag2a', 'wcag411' ],\n      all: [],\n      any: [ 'duplicate-id' ],\n      none: []\n    }, {\n      id: 'empty-heading',\n      selector: 'h1, h2, h3, h4, h5, h6, [role=\"heading\"]',\n      matches: 'heading-matches',\n      tags: [ 'cat.name-role-value', 'best-practice' ],\n      impact: 'minor',\n      all: [],\n      any: [ 'has-visible-text', 'aria-label', 'aria-labelledby', {\n        options: {\n          attribute: 'title'\n        },\n        id: 'non-empty-title'\n      } ],\n      none: []\n    }, {\n      id: 'empty-table-header',\n      selector: 'th, [role=\"rowheader\"], [role=\"columnheader\"]',\n      tags: [ 'wcag131', 'cat.aria' ],\n      reviewOnFail: true,\n      all: [],\n      any: [ 'has-visible-text' ],\n      none: []\n    }, {\n      id: 'focus-order-semantics',\n      selector: 'div, h1, h2, h3, h4, h5, h6, [role=heading], p, span',\n      matches: 'inserted-into-focus-order-matches',\n      tags: [ 'cat.keyboard', 'best-practice', 'experimental' ],\n      all: [],\n      any: [ {\n        options: [],\n        id: 'has-widget-role'\n      }, {\n        options: {\n          roles: [ 'tooltip' ]\n        },\n        id: 'valid-scrollable-semantics'\n      } ],\n      none: []\n    }, {\n      id: 'form-field-multiple-labels',\n      selector: 'input, select, textarea',\n      matches: 'label-matches',\n      tags: [ 'cat.forms', 'wcag2a', 'wcag332' ],\n      all: [],\n      any: [],\n      none: [ 'multiple-label' ]\n    }, {\n      id: 'frame-focusable-content',\n      selector: 'html',\n      matches: 'frame-focusable-content-matches',\n      tags: [ 'cat.keyboard', 'wcag2a', 'wcag211' ],\n      all: [],\n      any: [ 'frame-focusable-content' ],\n      none: []\n    }, {\n      id: 'frame-tested',\n      selector: 'frame, iframe',\n      tags: [ 'cat.structure', 'review-item', 'best-practice' ],\n      all: [ {\n        options: {\n          isViolation: false\n        },\n        id: 'frame-tested'\n      } ],\n      any: [],\n      none: []\n    }, {\n      id: 'frame-title-unique',\n      selector: 'frame[title], iframe[title]',\n      matches: 'frame-title-has-text-matches',\n      tags: [ 'cat.text-alternatives', 'best-practice' ],\n      all: [],\n      any: [],\n      none: [ 'unique-frame-title' ]\n    }, {\n      id: 'frame-title',\n      selector: 'frame, iframe',\n      tags: [ 'cat.text-alternatives', 'wcag2a', 'wcag241', 'wcag412', 'section508', 'section508.22.i' ],\n      all: [],\n      any: [ {\n        options: {\n          attribute: 'title'\n        },\n        id: 'non-empty-title'\n      }, 'aria-label', 'aria-labelledby', 'presentational-role' ],\n      none: []\n    }, {\n      id: 'heading-order',\n      selector: 'h1, h2, h3, h4, h5, h6, [role=heading]',\n      matches: 'heading-matches',\n      tags: [ 'cat.semantics', 'best-practice' ],\n      all: [],\n      any: [ 'heading-order' ],\n      none: []\n    }, {\n      id: 'hidden-content',\n      selector: '*',\n      excludeHidden: false,\n      tags: [ 'cat.structure', 'experimental', 'review-item', 'best-practice' ],\n      all: [],\n      any: [ 'hidden-content' ],\n      none: []\n    }, {\n      id: 'html-has-lang',\n      selector: 'html',\n      matches: 'is-initiator-matches',\n      tags: [ 'cat.language', 'wcag2a', 'wcag311', 'ACT' ],\n      all: [],\n      any: [ {\n        options: {\n          attributes: [ 'lang', 'xml:lang' ]\n        },\n        id: 'has-lang'\n      } ],\n      none: []\n    }, {\n      id: 'html-lang-valid',\n      selector: 'html[lang], html[xml\\\\:lang]',\n      tags: [ 'cat.language', 'wcag2a', 'wcag311', 'ACT' ],\n      all: [],\n      any: [],\n      none: [ {\n        options: {\n          attributes: [ 'lang', 'xml:lang' ]\n        },\n        id: 'valid-lang'\n      } ]\n    }, {\n      id: 'html-xml-lang-mismatch',\n      selector: 'html[lang][xml\\\\:lang]',\n      matches: 'xml-lang-mismatch-matches',\n      tags: [ 'cat.language', 'wcag2a', 'wcag311', 'ACT' ],\n      all: [ 'xml-lang-mismatch' ],\n      any: [],\n      none: []\n    }, {\n      id: 'identical-links-same-purpose',\n      selector: 'a[href], area[href], [role=\"link\"]',\n      excludeHidden: false,\n      matches: 'identical-links-same-purpose-matches',\n      tags: [ 'cat.semantics', 'wcag2aaa', 'wcag249', 'best-practice' ],\n      all: [ 'identical-links-same-purpose' ],\n      any: [],\n      none: []\n    }, {\n      id: 'image-alt',\n      selector: 'img',\n      matches: 'no-explicit-name-required-matches',\n      tags: [ 'cat.text-alternatives', 'wcag2a', 'wcag111', 'section508', 'section508.22.a', 'ACT' ],\n      all: [],\n      any: [ 'has-alt', 'aria-label', 'aria-labelledby', {\n        options: {\n          attribute: 'title'\n        },\n        id: 'non-empty-title'\n      }, 'presentational-role' ],\n      none: [ 'alt-space-value' ]\n    }, {\n      id: 'image-redundant-alt',\n      selector: 'img',\n      tags: [ 'cat.text-alternatives', 'best-practice' ],\n      all: [],\n      any: [],\n      none: [ {\n        options: {\n          parentSelector: 'button, [role=button], a[href], p, li, td, th'\n        },\n        id: 'duplicate-img-label'\n      } ]\n    }, {\n      id: 'input-button-name',\n      selector: 'input[type=\"button\"], input[type=\"submit\"], input[type=\"reset\"]',\n      matches: 'no-explicit-name-required-matches',\n      tags: [ 'cat.name-role-value', 'wcag2a', 'wcag412', 'section508', 'section508.22.a' ],\n      all: [],\n      any: [ 'non-empty-if-present', {\n        options: {\n          attribute: 'value'\n        },\n        id: 'non-empty-value'\n      }, 'aria-label', 'aria-labelledby', {\n        options: {\n          attribute: 'title'\n        },\n        id: 'non-empty-title'\n      }, 'presentational-role' ],\n      none: []\n    }, {\n      id: 'input-image-alt',\n      selector: 'input[type=\"image\"]',\n      matches: 'no-explicit-name-required-matches',\n      tags: [ 'cat.text-alternatives', 'wcag2a', 'wcag111', 'section508', 'section508.22.a', 'ACT' ],\n      all: [],\n      any: [ {\n        options: {\n          attribute: 'alt'\n        },\n        id: 'non-empty-alt'\n      }, 'aria-label', 'aria-labelledby', {\n        options: {\n          attribute: 'title'\n        },\n        id: 'non-empty-title'\n      } ],\n      none: []\n    }, {\n      id: 'label-content-name-mismatch',\n      matches: 'label-content-name-mismatch-matches',\n      tags: [ 'cat.semantics', 'wcag21a', 'wcag253', 'experimental' ],\n      all: [],\n      any: [ {\n        options: {\n          pixelThreshold: .1,\n          occuranceThreshold: 3\n        },\n        id: 'label-content-name-mismatch'\n      } ],\n      none: []\n    }, {\n      id: 'label-title-only',\n      selector: 'input, select, textarea',\n      matches: 'label-matches',\n      tags: [ 'cat.forms', 'best-practice' ],\n      all: [],\n      any: [],\n      none: [ 'title-only' ]\n    }, {\n      id: 'label',\n      selector: 'input, textarea',\n      matches: 'label-matches',\n      tags: [ 'cat.forms', 'wcag2a', 'wcag412', 'wcag131', 'section508', 'section508.22.n', 'ACT' ],\n      all: [],\n      any: [ 'implicit-label', 'explicit-label', 'aria-label', 'aria-labelledby', {\n        options: {\n          attribute: 'title'\n        },\n        id: 'non-empty-title'\n      }, {\n        options: {\n          attribute: 'placeholder'\n        },\n        id: 'non-empty-placeholder'\n      }, 'presentational-role' ],\n      none: [ 'help-same-as-label', 'hidden-explicit-label' ]\n    }, {\n      id: 'landmark-banner-is-top-level',\n      selector: 'header:not([role]), [role=banner]',\n      matches: 'landmark-has-body-context-matches',\n      tags: [ 'cat.semantics', 'best-practice' ],\n      all: [],\n      any: [ 'landmark-is-top-level' ],\n      none: []\n    }, {\n      id: 'landmark-complementary-is-top-level',\n      selector: 'aside:not([role]), [role=complementary]',\n      tags: [ 'cat.semantics', 'best-practice' ],\n      all: [],\n      any: [ 'landmark-is-top-level' ],\n      none: []\n    }, {\n      id: 'landmark-contentinfo-is-top-level',\n      selector: 'footer:not([role]), [role=contentinfo]',\n      matches: 'landmark-has-body-context-matches',\n      tags: [ 'cat.semantics', 'best-practice' ],\n      all: [],\n      any: [ 'landmark-is-top-level' ],\n      none: []\n    }, {\n      id: 'landmark-main-is-top-level',\n      selector: 'main:not([role]), [role=main]',\n      tags: [ 'cat.semantics', 'best-practice' ],\n      all: [],\n      any: [ 'landmark-is-top-level' ],\n      none: []\n    }, {\n      id: 'landmark-no-duplicate-banner',\n      selector: 'header:not([role]), [role=banner]',\n      tags: [ 'cat.semantics', 'best-practice' ],\n      all: [],\n      any: [ {\n        options: {\n          selector: 'header:not([role]), [role=banner]',\n          nativeScopeFilter: 'article, aside, main, nav, section'\n        },\n        id: 'page-no-duplicate-banner'\n      } ],\n      none: []\n    }, {\n      id: 'landmark-no-duplicate-contentinfo',\n      selector: 'footer:not([role]), [role=contentinfo]',\n      tags: [ 'cat.semantics', 'best-practice' ],\n      all: [],\n      any: [ {\n        options: {\n          selector: 'footer:not([role]), [role=contentinfo]',\n          nativeScopeFilter: 'article, aside, main, nav, section'\n        },\n        id: 'page-no-duplicate-contentinfo'\n      } ],\n      none: []\n    }, {\n      id: 'landmark-no-duplicate-main',\n      selector: 'main:not([role]), [role=main]',\n      tags: [ 'cat.semantics', 'best-practice' ],\n      all: [],\n      any: [ {\n        options: {\n          selector: 'main:not([role]), [role=\\'main\\']'\n        },\n        id: 'page-no-duplicate-main'\n      } ],\n      none: []\n    }, {\n      id: 'landmark-one-main',\n      selector: 'html',\n      tags: [ 'cat.semantics', 'best-practice' ],\n      all: [ {\n        options: {\n          selector: 'main:not([role]), [role=\\'main\\']'\n        },\n        id: 'page-has-main'\n      } ],\n      any: [],\n      none: []\n    }, {\n      id: 'landmark-unique',\n      selector: '[role=banner], [role=complementary], [role=contentinfo], [role=main], [role=navigation], [role=region], [role=search], [role=form], form, footer, header, aside, main, nav, section',\n      tags: [ 'cat.semantics', 'best-practice' ],\n      matches: 'landmark-unique-matches',\n      all: [],\n      any: [ 'landmark-is-unique' ],\n      none: []\n    }, {\n      id: 'link-in-text-block',\n      selector: 'a[href], [role=link]',\n      matches: 'link-in-text-block-matches',\n      excludeHidden: false,\n      tags: [ 'cat.color', 'experimental', 'wcag2a', 'wcag141' ],\n      all: [ 'link-in-text-block' ],\n      any: [],\n      none: []\n    }, {\n      id: 'link-name',\n      selector: 'a[href]',\n      tags: [ 'cat.name-role-value', 'wcag2a', 'wcag412', 'wcag244', 'section508', 'section508.22.a', 'ACT' ],\n      all: [],\n      any: [ 'has-visible-text', 'aria-label', 'aria-labelledby', {\n        options: {\n          attribute: 'title'\n        },\n        id: 'non-empty-title'\n      } ],\n      none: [ 'focusable-no-name' ]\n    }, {\n      id: 'list',\n      selector: 'ul, ol',\n      matches: 'no-role-matches',\n      tags: [ 'cat.structure', 'wcag2a', 'wcag131' ],\n      all: [],\n      any: [],\n      none: [ 'only-listitems' ]\n    }, {\n      id: 'listitem',\n      selector: 'li',\n      matches: 'no-role-matches',\n      tags: [ 'cat.structure', 'wcag2a', 'wcag131' ],\n      all: [],\n      any: [ 'listitem' ],\n      none: []\n    }, {\n      id: 'marquee',\n      selector: 'marquee',\n      excludeHidden: false,\n      tags: [ 'cat.parsing', 'wcag2a', 'wcag222' ],\n      all: [],\n      any: [],\n      none: [ 'is-on-screen' ]\n    }, {\n      id: 'meta-refresh',\n      selector: 'meta[http-equiv=\"refresh\"]',\n      excludeHidden: false,\n      tags: [ 'cat.time-and-media', 'wcag2a', 'wcag2aaa', 'wcag221', 'wcag224', 'wcag325' ],\n      all: [],\n      any: [ 'meta-refresh' ],\n      none: []\n    }, {\n      id: 'meta-viewport-large',\n      selector: 'meta[name=\"viewport\"]',\n      excludeHidden: false,\n      tags: [ 'cat.sensory-and-visual-cues', 'best-practice' ],\n      all: [],\n      any: [ {\n        options: {\n          scaleMinimum: 5,\n          lowerBound: 2\n        },\n        id: 'meta-viewport-large'\n      } ],\n      none: []\n    }, {\n      id: 'meta-viewport',\n      selector: 'meta[name=\"viewport\"]',\n      excludeHidden: false,\n      tags: [ 'cat.sensory-and-visual-cues', 'best-practice', 'ACT' ],\n      all: [],\n      any: [ {\n        options: {\n          scaleMinimum: 2\n        },\n        id: 'meta-viewport'\n      } ],\n      none: []\n    }, {\n      id: 'nested-interactive',\n      matches: 'nested-interactive-matches',\n      tags: [ 'cat.keyboard', 'wcag2a', 'wcag412' ],\n      all: [],\n      any: [ 'no-focusable-content' ],\n      none: []\n    }, {\n      id: 'no-autoplay-audio',\n      excludeHidden: false,\n      selector: 'audio[autoplay], video[autoplay]',\n      matches: 'no-autoplay-audio-matches',\n      tags: [ 'cat.time-and-media', 'wcag2a', 'wcag142', 'experimental' ],\n      preload: true,\n      all: [ {\n        options: {\n          allowedDuration: 3\n        },\n        id: 'no-autoplay-audio'\n      } ],\n      any: [],\n      none: []\n    }, {\n      id: 'object-alt',\n      selector: 'object',\n      matches: 'no-explicit-name-required-matches',\n      tags: [ 'cat.text-alternatives', 'wcag2a', 'wcag111', 'section508', 'section508.22.a' ],\n      all: [],\n      any: [ 'aria-label', 'aria-labelledby', {\n        options: {\n          attribute: 'title'\n        },\n        id: 'non-empty-title'\n      }, 'presentational-role' ],\n      none: []\n    }, {\n      id: 'p-as-heading',\n      selector: 'p',\n      matches: 'p-as-heading-matches',\n      tags: [ 'cat.semantics', 'wcag2a', 'wcag131', 'experimental' ],\n      all: [ {\n        options: {\n          margins: [ {\n            weight: 150,\n            italic: true\n          }, {\n            weight: 150,\n            size: 1.15\n          }, {\n            italic: true,\n            size: 1.15\n          }, {\n            size: 1.4\n          } ]\n        },\n        id: 'p-as-heading'\n      } ],\n      any: [],\n      none: []\n    }, {\n      id: 'page-has-heading-one',\n      selector: 'html',\n      tags: [ 'cat.semantics', 'best-practice' ],\n      all: [ {\n        options: {\n          selector: 'h1:not([role], [aria-level]), :is(h1, h2, h3, h4, h5, h6):not([role])[aria-level=1], [role=heading][aria-level=1]'\n        },\n        id: 'page-has-heading-one'\n      } ],\n      any: [],\n      none: []\n    }, {\n      id: 'presentation-role-conflict',\n      selector: '[role=\"none\"], [role=\"presentation\"]',\n      tags: [ 'cat.aria', 'best-practice' ],\n      all: [],\n      any: [],\n      none: [ 'is-element-focusable', 'has-global-aria-attribute' ]\n    }, {\n      id: 'region',\n      selector: 'body *',\n      tags: [ 'cat.keyboard', 'best-practice' ],\n      all: [],\n      any: [ {\n        options: {\n          regionMatcher: 'dialog, [role=dialog], [role=alertdialog], svg, iframe'\n        },\n        id: 'region'\n      } ],\n      none: []\n    }, {\n      id: 'role-img-alt',\n      selector: '[role=\\'img\\']:not(img, area, input, object)',\n      matches: 'html-namespace-matches',\n      tags: [ 'cat.text-alternatives', 'wcag2a', 'wcag111', 'section508', 'section508.22.a', 'ACT' ],\n      all: [],\n      any: [ 'aria-label', 'aria-labelledby', {\n        options: {\n          attribute: 'title'\n        },\n        id: 'non-empty-title'\n      } ],\n      none: []\n    }, {\n      id: 'scope-attr-valid',\n      selector: 'td[scope], th[scope]',\n      tags: [ 'cat.tables', 'best-practice' ],\n      all: [ 'html5-scope', {\n        options: {\n          values: [ 'row', 'col', 'rowgroup', 'colgroup' ]\n        },\n        id: 'scope-value'\n      } ],\n      any: [],\n      none: []\n    }, {\n      id: 'scrollable-region-focusable',\n      matches: 'scrollable-region-focusable-matches',\n      tags: [ 'cat.keyboard', 'wcag2a', 'wcag211' ],\n      all: [],\n      any: [ 'focusable-content', 'focusable-element' ],\n      none: []\n    }, {\n      id: 'select-name',\n      selector: 'select',\n      tags: [ 'cat.forms', 'wcag2a', 'wcag412', 'wcag131', 'section508', 'section508.22.n', 'ACT' ],\n      all: [],\n      any: [ 'implicit-label', 'explicit-label', 'aria-label', 'aria-labelledby', {\n        options: {\n          attribute: 'title'\n        },\n        id: 'non-empty-title'\n      }, 'presentational-role' ],\n      none: [ 'help-same-as-label', 'hidden-explicit-label' ]\n    }, {\n      id: 'server-side-image-map',\n      selector: 'img[ismap]',\n      tags: [ 'cat.text-alternatives', 'wcag2a', 'wcag211', 'section508', 'section508.22.f' ],\n      all: [],\n      any: [],\n      none: [ 'exists' ]\n    }, {\n      id: 'skip-link',\n      selector: 'a[href^=\"#\"], a[href^=\"/#\"]',\n      matches: 'skip-link-matches',\n      tags: [ 'cat.keyboard', 'best-practice' ],\n      all: [],\n      any: [ 'skip-link' ],\n      none: []\n    }, {\n      id: 'svg-img-alt',\n      selector: '[role=\"img\"], [role=\"graphics-symbol\"], svg[role=\"graphics-document\"]',\n      matches: 'svg-namespace-matches',\n      tags: [ 'cat.text-alternatives', 'wcag2a', 'wcag111', 'section508', 'section508.22.a', 'ACT' ],\n      all: [],\n      any: [ 'svg-non-empty-title', 'aria-label', 'aria-labelledby', {\n        options: {\n          attribute: 'title'\n        },\n        id: 'non-empty-title'\n      } ],\n      none: []\n    }, {\n      id: 'tabindex',\n      selector: '[tabindex]',\n      tags: [ 'cat.keyboard', 'best-practice' ],\n      all: [],\n      any: [ 'tabindex' ],\n      none: []\n    }, {\n      id: 'table-duplicate-name',\n      selector: 'table',\n      tags: [ 'cat.tables', 'best-practice' ],\n      all: [],\n      any: [],\n      none: [ 'same-caption-summary' ]\n    }, {\n      id: 'table-fake-caption',\n      selector: 'table',\n      matches: 'data-table-matches',\n      tags: [ 'cat.tables', 'experimental', 'wcag2a', 'wcag131', 'section508', 'section508.22.g' ],\n      all: [ 'caption-faked' ],\n      any: [],\n      none: []\n    }, {\n      id: 'td-has-header',\n      selector: 'table',\n      matches: 'data-table-large-matches',\n      tags: [ 'cat.tables', 'experimental', 'wcag2a', 'wcag131', 'section508', 'section508.22.g' ],\n      all: [ 'td-has-header' ],\n      any: [],\n      none: []\n    }, {\n      id: 'td-headers-attr',\n      selector: 'table',\n      tags: [ 'cat.tables', 'wcag2a', 'wcag131', 'section508', 'section508.22.g' ],\n      all: [ 'td-headers-attr' ],\n      any: [],\n      none: []\n    }, {\n      id: 'th-has-data-cells',\n      selector: 'table',\n      matches: 'data-table-matches',\n      tags: [ 'cat.tables', 'wcag2a', 'wcag131', 'section508', 'section508.22.g' ],\n      all: [ 'th-has-data-cells' ],\n      any: [],\n      none: []\n    }, {\n      id: 'valid-lang',\n      selector: '[lang], [xml\\\\:lang]',\n      matches: 'not-html-matches',\n      tags: [ 'cat.language', 'wcag2aa', 'wcag312' ],\n      all: [],\n      any: [],\n      none: [ {\n        options: {\n          attributes: [ 'lang', 'xml:lang' ]\n        },\n        id: 'valid-lang'\n      } ]\n    }, {\n      id: 'video-caption',\n      selector: 'video',\n      excludeHidden: false,\n      tags: [ 'cat.text-alternatives', 'wcag2a', 'wcag122', 'section508', 'section508.22.a' ],\n      all: [],\n      any: [],\n      none: [ 'caption' ]\n    } ],\n    checks: [ {\n      id: 'abstractrole',\n      evaluate: 'abstractrole-evaluate'\n    }, {\n      id: 'aria-allowed-attr',\n      evaluate: 'aria-allowed-attr-evaluate'\n    }, {\n      id: 'aria-allowed-role',\n      evaluate: 'aria-allowed-role-evaluate',\n      options: {\n        allowImplicit: true,\n        ignoredTags: []\n      }\n    }, {\n      id: 'aria-errormessage',\n      evaluate: 'aria-errormessage-evaluate'\n    }, {\n      id: 'aria-hidden-body',\n      evaluate: 'aria-hidden-body-evaluate'\n    }, {\n      id: 'aria-prohibited-attr',\n      evaluate: 'aria-prohibited-attr-evaluate',\n      options: {\n        elementsAllowedAriaLabel: [ 'audio', 'applet', 'canvas', 'dl', 'embed', 'iframe', 'input', 'label', 'meter', 'object', 'svg', 'video' ]\n      }\n    }, {\n      id: 'aria-required-attr',\n      evaluate: 'aria-required-attr-evaluate'\n    }, {\n      id: 'aria-required-children',\n      evaluate: 'aria-required-children-evaluate',\n      options: {\n        reviewEmpty: [ 'doc-bibliography', 'doc-endnotes', 'grid', 'list', 'listbox', 'table', 'tablist', 'tree', 'treegrid', 'rowgroup' ]\n      }\n    }, {\n      id: 'aria-required-parent',\n      evaluate: 'aria-required-parent-evaluate',\n      options: {\n        ownGroupRoles: [ 'listitem', 'treeitem' ]\n      }\n    }, {\n      id: 'aria-roledescription',\n      evaluate: 'aria-roledescription-evaluate',\n      options: {\n        supportedRoles: [ 'button', 'img', 'checkbox', 'radio', 'combobox', 'menuitemcheckbox', 'menuitemradio' ]\n      }\n    }, {\n      id: 'aria-unsupported-attr',\n      evaluate: 'aria-unsupported-attr-evaluate'\n    }, {\n      id: 'aria-valid-attr-value',\n      evaluate: 'aria-valid-attr-value-evaluate',\n      options: []\n    }, {\n      id: 'aria-valid-attr',\n      evaluate: 'aria-valid-attr-evaluate',\n      options: []\n    }, {\n      id: 'fallbackrole',\n      evaluate: 'fallbackrole-evaluate'\n    }, {\n      id: 'has-global-aria-attribute',\n      evaluate: 'has-global-aria-attribute-evaluate'\n    }, {\n      id: 'has-widget-role',\n      evaluate: 'has-widget-role-evaluate',\n      options: []\n    }, {\n      id: 'invalidrole',\n      evaluate: 'invalidrole-evaluate'\n    }, {\n      id: 'is-element-focusable',\n      evaluate: 'is-element-focusable-evaluate'\n    }, {\n      id: 'no-implicit-explicit-label',\n      evaluate: 'no-implicit-explicit-label-evaluate'\n    }, {\n      id: 'unsupportedrole',\n      evaluate: 'unsupportedrole-evaluate'\n    }, {\n      id: 'valid-scrollable-semantics',\n      evaluate: 'valid-scrollable-semantics-evaluate',\n      options: {\n        roles: [ 'tooltip' ]\n      }\n    }, {\n      id: 'color-contrast',\n      evaluate: 'color-contrast-evaluate',\n      options: {\n        ignoreUnicode: true,\n        ignoreLength: false,\n        boldValue: 700,\n        boldTextPt: 14,\n        largeTextPt: 18,\n        contrastRatio: {\n          normal: {\n            expected: 4.5\n          },\n          large: {\n            expected: 3\n          }\n        },\n        shadowOutlineEmMax: .1\n      }\n    }, {\n      id: 'link-in-text-block',\n      evaluate: 'link-in-text-block-evaluate'\n    }, {\n      id: 'autocomplete-appropriate',\n      evaluate: 'autocomplete-appropriate-evaluate'\n    }, {\n      id: 'autocomplete-valid',\n      evaluate: 'autocomplete-valid-evaluate'\n    }, {\n      id: 'accesskeys',\n      evaluate: 'accesskeys-evaluate',\n      after: 'accesskeys-after'\n    }, {\n      id: 'focusable-content',\n      evaluate: 'focusable-content-evaluate'\n    }, {\n      id: 'focusable-disabled',\n      evaluate: 'focusable-disabled-evaluate'\n    }, {\n      id: 'focusable-element',\n      evaluate: 'focusable-element-evaluate'\n    }, {\n      id: 'focusable-modal-open',\n      evaluate: 'focusable-modal-open-evaluate'\n    }, {\n      id: 'focusable-no-name',\n      evaluate: 'focusable-no-name-evaluate'\n    }, {\n      id: 'focusable-not-tabbable',\n      evaluate: 'focusable-not-tabbable-evaluate'\n    }, {\n      id: 'frame-focusable-content',\n      evaluate: 'no-focusable-content-evaluate'\n    }, {\n      id: 'landmark-is-top-level',\n      evaluate: 'landmark-is-top-level-evaluate'\n    }, {\n      id: 'no-focusable-content',\n      evaluate: 'no-focusable-content-evaluate'\n    }, {\n      id: 'page-has-heading-one',\n      evaluate: 'has-descendant-evaluate',\n      after: 'has-descendant-after',\n      options: {\n        selector: 'h1:not([role], [aria-level]), :is(h1, h2, h3, h4, h5, h6):not([role])[aria-level=1], [role=heading][aria-level=1]'\n      }\n    }, {\n      id: 'page-has-main',\n      evaluate: 'has-descendant-evaluate',\n      after: 'has-descendant-after',\n      options: {\n        selector: 'main:not([role]), [role=\\'main\\']'\n      }\n    }, {\n      id: 'page-no-duplicate-banner',\n      evaluate: 'page-no-duplicate-evaluate',\n      after: 'page-no-duplicate-after',\n      options: {\n        selector: 'header:not([role]), [role=banner]',\n        nativeScopeFilter: 'article, aside, main, nav, section'\n      }\n    }, {\n      id: 'page-no-duplicate-contentinfo',\n      evaluate: 'page-no-duplicate-evaluate',\n      after: 'page-no-duplicate-after',\n      options: {\n        selector: 'footer:not([role]), [role=contentinfo]',\n        nativeScopeFilter: 'article, aside, main, nav, section'\n      }\n    }, {\n      id: 'page-no-duplicate-main',\n      evaluate: 'page-no-duplicate-evaluate',\n      after: 'page-no-duplicate-after',\n      options: {\n        selector: 'main:not([role]), [role=\\'main\\']'\n      }\n    }, {\n      id: 'tabindex',\n      evaluate: 'tabindex-evaluate'\n    }, {\n      id: 'alt-space-value',\n      evaluate: 'alt-space-value-evaluate'\n    }, {\n      id: 'duplicate-img-label',\n      evaluate: 'duplicate-img-label-evaluate',\n      options: {\n        parentSelector: 'button, [role=button], a[href], p, li, td, th'\n      }\n    }, {\n      id: 'explicit-label',\n      evaluate: 'explicit-evaluate'\n    }, {\n      id: 'help-same-as-label',\n      evaluate: 'help-same-as-label-evaluate',\n      enabled: false\n    }, {\n      id: 'hidden-explicit-label',\n      evaluate: 'hidden-explicit-label-evaluate'\n    }, {\n      id: 'implicit-label',\n      evaluate: 'implicit-evaluate'\n    }, {\n      id: 'label-content-name-mismatch',\n      evaluate: 'label-content-name-mismatch-evaluate',\n      options: {\n        pixelThreshold: .1,\n        occuranceThreshold: 3\n      }\n    }, {\n      id: 'multiple-label',\n      evaluate: 'multiple-label-evaluate'\n    }, {\n      id: 'title-only',\n      evaluate: 'title-only-evaluate'\n    }, {\n      id: 'landmark-is-unique',\n      evaluate: 'landmark-is-unique-evaluate',\n      after: 'landmark-is-unique-after'\n    }, {\n      id: 'has-lang',\n      evaluate: 'has-lang-evaluate',\n      options: {\n        attributes: [ 'lang', 'xml:lang' ]\n      }\n    }, {\n      id: 'valid-lang',\n      evaluate: 'valid-lang-evaluate',\n      options: {\n        attributes: [ 'lang', 'xml:lang' ]\n      }\n    }, {\n      id: 'xml-lang-mismatch',\n      evaluate: 'xml-lang-mismatch-evaluate'\n    }, {\n      id: 'dlitem',\n      evaluate: 'dlitem-evaluate'\n    }, {\n      id: 'listitem',\n      evaluate: 'listitem-evaluate'\n    }, {\n      id: 'only-dlitems',\n      evaluate: 'only-dlitems-evaluate'\n    }, {\n      id: 'only-listitems',\n      evaluate: 'only-listitems-evaluate'\n    }, {\n      id: 'structured-dlitems',\n      evaluate: 'structured-dlitems-evaluate'\n    }, {\n      id: 'caption',\n      evaluate: 'caption-evaluate'\n    }, {\n      id: 'frame-tested',\n      evaluate: 'frame-tested-evaluate',\n      options: {\n        isViolation: false\n      }\n    }, {\n      id: 'no-autoplay-audio',\n      evaluate: 'no-autoplay-audio-evaluate',\n      options: {\n        allowedDuration: 3\n      }\n    }, {\n      id: 'css-orientation-lock',\n      evaluate: 'css-orientation-lock-evaluate',\n      options: {\n        degreeThreshold: 2\n      }\n    }, {\n      id: 'meta-viewport-large',\n      evaluate: 'meta-viewport-scale-evaluate',\n      options: {\n        scaleMinimum: 5,\n        lowerBound: 2\n      }\n    }, {\n      id: 'meta-viewport',\n      evaluate: 'meta-viewport-scale-evaluate',\n      options: {\n        scaleMinimum: 2\n      }\n    }, {\n      id: 'header-present',\n      evaluate: 'has-descendant-evaluate',\n      after: 'has-descendant-after',\n      options: {\n        selector: ':is(h1, h2, h3, h4, h5, h6):not([role]), [role=heading]'\n      }\n    }, {\n      id: 'heading-order',\n      evaluate: 'heading-order-evaluate',\n      after: 'heading-order-after'\n    }, {\n      id: 'identical-links-same-purpose',\n      evaluate: 'identical-links-same-purpose-evaluate',\n      after: 'identical-links-same-purpose-after'\n    }, {\n      id: 'internal-link-present',\n      evaluate: 'internal-link-present-evaluate'\n    }, {\n      id: 'landmark',\n      evaluate: 'has-descendant-evaluate',\n      options: {\n        selector: 'main, [role=main]'\n      }\n    }, {\n      id: 'meta-refresh',\n      evaluate: 'meta-refresh-evaluate'\n    }, {\n      id: 'p-as-heading',\n      evaluate: 'p-as-heading-evaluate',\n      options: {\n        margins: [ {\n          weight: 150,\n          italic: true\n        }, {\n          weight: 150,\n          size: 1.15\n        }, {\n          italic: true,\n          size: 1.15\n        }, {\n          size: 1.4\n        } ]\n      }\n    }, {\n      id: 'region',\n      evaluate: 'region-evaluate',\n      options: {\n        regionMatcher: 'dialog, [role=dialog], [role=alertdialog], svg, iframe'\n      }\n    }, {\n      id: 'skip-link',\n      evaluate: 'skip-link-evaluate'\n    }, {\n      id: 'unique-frame-title',\n      evaluate: 'unique-frame-title-evaluate',\n      after: 'unique-frame-title-after'\n    }, {\n      id: 'duplicate-id-active',\n      evaluate: 'duplicate-id-evaluate',\n      after: 'duplicate-id-after'\n    }, {\n      id: 'duplicate-id-aria',\n      evaluate: 'duplicate-id-evaluate',\n      after: 'duplicate-id-after'\n    }, {\n      id: 'duplicate-id',\n      evaluate: 'duplicate-id-evaluate',\n      after: 'duplicate-id-after'\n    }, {\n      id: 'aria-label',\n      evaluate: 'aria-label-evaluate'\n    }, {\n      id: 'aria-labelledby',\n      evaluate: 'aria-labelledby-evaluate'\n    }, {\n      id: 'avoid-inline-spacing',\n      evaluate: 'avoid-inline-spacing-evaluate',\n      options: {\n        cssProperties: [ 'line-height', 'letter-spacing', 'word-spacing' ]\n      }\n    }, {\n      id: 'button-has-visible-text',\n      evaluate: 'has-text-content-evaluate'\n    }, {\n      id: 'doc-has-title',\n      evaluate: 'doc-has-title-evaluate'\n    }, {\n      id: 'exists',\n      evaluate: 'exists-evaluate'\n    }, {\n      id: 'has-alt',\n      evaluate: 'has-alt-evaluate'\n    }, {\n      id: 'has-visible-text',\n      evaluate: 'has-text-content-evaluate'\n    }, {\n      id: 'is-on-screen',\n      evaluate: 'is-on-screen-evaluate'\n    }, {\n      id: 'non-empty-alt',\n      evaluate: 'attr-non-space-content-evaluate',\n      options: {\n        attribute: 'alt'\n      }\n    }, {\n      id: 'non-empty-if-present',\n      evaluate: 'non-empty-if-present-evaluate'\n    }, {\n      id: 'non-empty-placeholder',\n      evaluate: 'attr-non-space-content-evaluate',\n      options: {\n        attribute: 'placeholder'\n      }\n    }, {\n      id: 'non-empty-title',\n      evaluate: 'attr-non-space-content-evaluate',\n      options: {\n        attribute: 'title'\n      }\n    }, {\n      id: 'non-empty-value',\n      evaluate: 'attr-non-space-content-evaluate',\n      options: {\n        attribute: 'value'\n      }\n    }, {\n      id: 'presentational-role',\n      evaluate: 'presentational-role-evaluate'\n    }, {\n      id: 'role-none',\n      evaluate: 'matches-definition-evaluate',\n      deprecated: true,\n      options: {\n        matcher: {\n          attributes: {\n            role: 'none'\n          }\n        }\n      }\n    }, {\n      id: 'role-presentation',\n      evaluate: 'matches-definition-evaluate',\n      deprecated: true,\n      options: {\n        matcher: {\n          attributes: {\n            role: 'presentation'\n          }\n        }\n      }\n    }, {\n      id: 'svg-non-empty-title',\n      evaluate: 'svg-non-empty-title-evaluate'\n    }, {\n      id: 'caption-faked',\n      evaluate: 'caption-faked-evaluate'\n    }, {\n      id: 'html5-scope',\n      evaluate: 'html5-scope-evaluate'\n    }, {\n      id: 'same-caption-summary',\n      evaluate: 'same-caption-summary-evaluate'\n    }, {\n      id: 'scope-value',\n      evaluate: 'scope-value-evaluate',\n      options: {\n        values: [ 'row', 'col', 'rowgroup', 'colgroup' ]\n      }\n    }, {\n      id: 'td-has-header',\n      evaluate: 'td-has-header-evaluate'\n    }, {\n      id: 'td-headers-attr',\n      evaluate: 'td-headers-attr-evaluate'\n    }, {\n      id: 'th-has-data-cells',\n      evaluate: 'th-has-data-cells-evaluate'\n    }, {\n      id: 'hidden-content',\n      evaluate: 'hidden-content-evaluate'\n    } ]\n  });\n})(typeof window === 'object' ? window : this);", "export default function(url, options) {\n\toptions = options || {};\n\treturn new Promise( (resolve, reject) => {\n\t\tconst request = new XMLHttpRequest();\n\t\tconst keys = [];\n\t\tconst all = [];\n\t\tconst headers = {};\n\n\t\tconst response = () => ({\n\t\t\tok: (request.status/100|0) == 2,\t\t// 200-299\n\t\t\tstatusText: request.statusText,\n\t\t\tstatus: request.status,\n\t\t\turl: request.responseURL,\n\t\t\ttext: () => Promise.resolve(request.responseText),\n\t\t\tjson: () => Promise.resolve(request.responseText).then(JSON.parse),\n\t\t\tblob: () => Promise.resolve(new Blob([request.response])),\n\t\t\tclone: response,\n\t\t\theaders: {\n\t\t\t\tkeys: () => keys,\n\t\t\t\tentries: () => all,\n\t\t\t\tget: n => headers[n.toLowerCase()],\n\t\t\t\thas: n => n.toLowerCase() in headers\n\t\t\t}\n\t\t});\n\n\t\trequest.open(options.method || 'get', url, true);\n\n\t\trequest.onload = () => {\n\t\t\trequest.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm, (m, key, value) => {\n\t\t\t\tkeys.push(key = key.toLowerCase());\n\t\t\t\tall.push([key, value]);\n\t\t\t\theaders[key] = headers[key] ? `${headers[key]},${value}` : value;\n\t\t\t});\n\t\t\tresolve(response());\n\t\t};\n\n\t\trequest.onerror = reject;\n\n\t\trequest.withCredentials = options.credentials=='include';\n\n\t\tfor (const i in options.headers) {\n\t\t\trequest.setRequestHeader(i, options.headers[i]);\n\t\t}\n\n\t\trequest.send(options.body || null);\n\t});\n}\n", "module.exports = self.fetch || (self.fetch = require('unfetch').default || require('unfetch'));\n", "/*! VelocityJS.org (1.5.2). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */\r\n\r\n/*************************\r\n Velocity jQuery Shim\r\n *************************/\r\n\r\n/*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */\r\n\r\n/* This file contains the jQuery functions that Velocity relies on, thereby removing Velocity's dependency on a full copy of jQuery, and allowing it to work in any environment. */\r\n/* These shimmed functions are only used if jQuery isn't present. If both this shim and jQuery are loaded, Velocity defaults to jQuery proper. */\r\n/* Browser support: Using this shim instead of jQuery proper removes support for IE8. */\r\n\r\n(function(window) {\r\n\t\"use strict\";\r\n\t/***************\r\n\t Setup\r\n\t ***************/\r\n\r\n\t/* If jQuery is already loaded, there's no point in loading this shim. */\r\n\tif (window.jQuery) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t/* jQuery base. */\r\n\tvar $ = function(selector, context) {\r\n\t\treturn new $.fn.init(selector, context);\r\n\t};\r\n\r\n\t/********************\r\n\t Private Methods\r\n\t ********************/\r\n\r\n\t/* jQuery */\r\n\t$.isWindow = function(obj) {\r\n\t\t/* jshint eqeqeq: false */\r\n\t\treturn obj && obj === obj.window;\r\n\t};\r\n\r\n\t/* jQuery */\r\n\t$.type = function(obj) {\r\n\t\tif (!obj) {\r\n\t\t\treturn obj + \"\";\r\n\t\t}\r\n\r\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\r\n\t\t\t\tclass2type[toString.call(obj)] || \"object\" :\r\n\t\t\t\ttypeof obj;\r\n\t};\r\n\r\n\t/* jQuery */\r\n\t$.isArray = Array.isArray || function(obj) {\r\n\t\treturn $.type(obj) === \"array\";\r\n\t};\r\n\r\n\t/* jQuery */\r\n\tfunction isArraylike(obj) {\r\n\t\tvar length = obj.length,\r\n\t\t\t\ttype = $.type(obj);\r\n\r\n\t\tif (type === \"function\" || $.isWindow(obj)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (obj.nodeType === 1 && length) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn type === \"array\" || length === 0 || typeof length === \"number\" && length > 0 && (length - 1) in obj;\r\n\t}\r\n\r\n\t/***************\r\n\t $ Methods\r\n\t ***************/\r\n\r\n\t/* jQuery: Support removed for IE<9. */\r\n\t$.isPlainObject = function(obj) {\r\n\t\tvar key;\r\n\r\n\t\tif (!obj || $.type(obj) !== \"object\" || obj.nodeType || $.isWindow(obj)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tif (obj.constructor &&\r\n\t\t\t\t\t!hasOwn.call(obj, \"constructor\") &&\r\n\t\t\t\t\t!hasOwn.call(obj.constructor.prototype, \"isPrototypeOf\")) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfor (key in obj) {\r\n\t\t}\r\n\r\n\t\treturn key === undefined || hasOwn.call(obj, key);\r\n\t};\r\n\r\n\t/* jQuery */\r\n\t$.each = function(obj, callback, args) {\r\n\t\tvar value,\r\n\t\t\t\ti = 0,\r\n\t\t\t\tlength = obj.length,\r\n\t\t\t\tisArray = isArraylike(obj);\r\n\r\n\t\tif (args) {\r\n\t\t\tif (isArray) {\r\n\t\t\t\tfor (; i < length; i++) {\r\n\t\t\t\t\tvalue = callback.apply(obj[i], args);\r\n\r\n\t\t\t\t\tif (value === false) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfor (i in obj) {\r\n\t\t\t\t\tif (!obj.hasOwnProperty(i)) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvalue = callback.apply(obj[i], args);\r\n\r\n\t\t\t\t\tif (value === false) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\tif (isArray) {\r\n\t\t\t\tfor (; i < length; i++) {\r\n\t\t\t\t\tvalue = callback.call(obj[i], i, obj[i]);\r\n\r\n\t\t\t\t\tif (value === false) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfor (i in obj) {\r\n\t\t\t\t\tif (!obj.hasOwnProperty(i)) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvalue = callback.call(obj[i], i, obj[i]);\r\n\r\n\t\t\t\t\tif (value === false) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn obj;\r\n\t};\r\n\r\n\t/* Custom */\r\n\t$.data = function(node, key, value) {\r\n\t\t/* $.getData() */\r\n\t\tif (value === undefined) {\r\n\t\t\tvar getId = node[$.expando],\r\n\t\t\t\t\tstore = getId && cache[getId];\r\n\r\n\t\t\tif (key === undefined) {\r\n\t\t\t\treturn store;\r\n\t\t\t} else if (store) {\r\n\t\t\t\tif (key in store) {\r\n\t\t\t\t\treturn store[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t/* $.setData() */\r\n\t\t} else if (key !== undefined) {\r\n\t\t\tvar setId = node[$.expando] || (node[$.expando] = ++$.uuid);\r\n\r\n\t\t\tcache[setId] = cache[setId] || {};\r\n\t\t\tcache[setId][key] = value;\r\n\r\n\t\t\treturn value;\r\n\t\t}\r\n\t};\r\n\r\n\t/* Custom */\r\n\t$.removeData = function(node, keys) {\r\n\t\tvar id = node[$.expando],\r\n\t\t\t\tstore = id && cache[id];\r\n\r\n\t\tif (store) {\r\n\t\t\t// Cleanup the entire store if no keys are provided.\r\n\t\t\tif (!keys) {\r\n\t\t\t\tdelete cache[id];\r\n\t\t\t} else {\r\n\t\t\t\t$.each(keys, function(_, key) {\r\n\t\t\t\t\tdelete store[key];\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t/* jQuery */\r\n\t$.extend = function() {\r\n\t\tvar src, copyIsArray, copy, name, options, clone,\r\n\t\t\t\ttarget = arguments[0] || {},\r\n\t\t\t\ti = 1,\r\n\t\t\t\tlength = arguments.length,\r\n\t\t\t\tdeep = false;\r\n\r\n\t\tif (typeof target === \"boolean\") {\r\n\t\t\tdeep = target;\r\n\r\n\t\t\ttarget = arguments[i] || {};\r\n\t\t\ti++;\r\n\t\t}\r\n\r\n\t\tif (typeof target !== \"object\" && $.type(target) !== \"function\") {\r\n\t\t\ttarget = {};\r\n\t\t}\r\n\r\n\t\tif (i === length) {\r\n\t\t\ttarget = this;\r\n\t\t\ti--;\r\n\t\t}\r\n\r\n\t\tfor (; i < length; i++) {\r\n\t\t\tif ((options = arguments[i])) {\r\n\t\t\t\tfor (name in options) {\r\n\t\t\t\t\tif (!options.hasOwnProperty(name)) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tsrc = target[name];\r\n\t\t\t\t\tcopy = options[name];\r\n\r\n\t\t\t\t\tif (target === copy) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (deep && copy && ($.isPlainObject(copy) || (copyIsArray = $.isArray(copy)))) {\r\n\t\t\t\t\t\tif (copyIsArray) {\r\n\t\t\t\t\t\t\tcopyIsArray = false;\r\n\t\t\t\t\t\t\tclone = src && $.isArray(src) ? src : [];\r\n\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tclone = src && $.isPlainObject(src) ? src : {};\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\ttarget[name] = $.extend(deep, clone, copy);\r\n\r\n\t\t\t\t\t} else if (copy !== undefined) {\r\n\t\t\t\t\t\ttarget[name] = copy;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn target;\r\n\t};\r\n\r\n\t/* jQuery 1.4.3 */\r\n\t$.queue = function(elem, type, data) {\r\n\t\tfunction $makeArray(arr, results) {\r\n\t\t\tvar ret = results || [];\r\n\r\n\t\t\tif (arr) {\r\n\t\t\t\tif (isArraylike(Object(arr))) {\r\n\t\t\t\t\t/* $.merge */\r\n\t\t\t\t\t(function(first, second) {\r\n\t\t\t\t\t\tvar len = +second.length,\r\n\t\t\t\t\t\t\t\tj = 0,\r\n\t\t\t\t\t\t\t\ti = first.length;\r\n\r\n\t\t\t\t\t\twhile (j < len) {\r\n\t\t\t\t\t\t\tfirst[i++] = second[j++];\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (len !== len) {\r\n\t\t\t\t\t\t\twhile (second[j] !== undefined) {\r\n\t\t\t\t\t\t\t\tfirst[i++] = second[j++];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfirst.length = i;\r\n\r\n\t\t\t\t\t\treturn first;\r\n\t\t\t\t\t})(ret, typeof arr === \"string\" ? [arr] : arr);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t[].push.call(ret, arr);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn ret;\r\n\t\t}\r\n\r\n\t\tif (!elem) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttype = (type || \"fx\") + \"queue\";\r\n\r\n\t\tvar q = $.data(elem, type);\r\n\r\n\t\tif (!data) {\r\n\t\t\treturn q || [];\r\n\t\t}\r\n\r\n\t\tif (!q || $.isArray(data)) {\r\n\t\t\tq = $.data(elem, type, $makeArray(data));\r\n\t\t} else {\r\n\t\t\tq.push(data);\r\n\t\t}\r\n\r\n\t\treturn q;\r\n\t};\r\n\r\n\t/* jQuery 1.4.3 */\r\n\t$.dequeue = function(elems, type) {\r\n\t\t/* Custom: Embed element iteration. */\r\n\t\t$.each(elems.nodeType ? [elems] : elems, function(i, elem) {\r\n\t\t\ttype = type || \"fx\";\r\n\r\n\t\t\tvar queue = $.queue(elem, type),\r\n\t\t\t\t\tfn = queue.shift();\r\n\r\n\t\t\tif (fn === \"inprogress\") {\r\n\t\t\t\tfn = queue.shift();\r\n\t\t\t}\r\n\r\n\t\t\tif (fn) {\r\n\t\t\t\tif (type === \"fx\") {\r\n\t\t\t\t\tqueue.unshift(\"inprogress\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfn.call(elem, function() {\r\n\t\t\t\t\t$.dequeue(elem, type);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\t/******************\r\n\t $.fn Methods\r\n\t ******************/\r\n\r\n\t/* jQuery */\r\n\t$.fn = $.prototype = {\r\n\t\tinit: function(selector) {\r\n\t\t\t/* Just return the element wrapped inside an array; don't proceed with the actual jQuery node wrapping process. */\r\n\t\t\tif (selector.nodeType) {\r\n\t\t\t\tthis[0] = selector;\r\n\r\n\t\t\t\treturn this;\r\n\t\t\t} else {\r\n\t\t\t\tthrow new Error(\"Not a DOM node.\");\r\n\t\t\t}\r\n\t\t},\r\n\t\toffset: function() {\r\n\t\t\t/* jQuery altered code: Dropped disconnected DOM node checking. */\r\n\t\t\tvar box = this[0].getBoundingClientRect ? this[0].getBoundingClientRect() : {top: 0, left: 0};\r\n\r\n\t\t\treturn {\r\n\t\t\t\ttop: box.top + (window.pageYOffset || document.scrollTop || 0) - (document.clientTop || 0),\r\n\t\t\t\tleft: box.left + (window.pageXOffset || document.scrollLeft || 0) - (document.clientLeft || 0)\r\n\t\t\t};\r\n\t\t},\r\n\t\tposition: function() {\r\n\t\t\t/* jQuery */\r\n\t\t\tfunction offsetParentFn(elem) {\r\n\t\t\t\tvar offsetParent = elem.offsetParent;\r\n\r\n\t\t\t\twhile (offsetParent && (offsetParent.nodeName.toLowerCase() !== \"html\" && offsetParent.style && offsetParent.style.position.toLowerCase() === \"static\")) {\r\n\t\t\t\t\toffsetParent = offsetParent.offsetParent;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn offsetParent || document;\r\n\t\t\t}\r\n\r\n\t\t\t/* Zepto */\r\n\t\t\tvar elem = this[0],\r\n\t\t\t\t\toffsetParent = offsetParentFn(elem),\r\n\t\t\t\t\toffset = this.offset(),\r\n\t\t\t\t\tparentOffset = /^(?:body|html)$/i.test(offsetParent.nodeName) ? {top: 0, left: 0} : $(offsetParent).offset();\r\n\r\n\t\t\toffset.top -= parseFloat(elem.style.marginTop) || 0;\r\n\t\t\toffset.left -= parseFloat(elem.style.marginLeft) || 0;\r\n\r\n\t\t\tif (offsetParent.style) {\r\n\t\t\t\tparentOffset.top += parseFloat(offsetParent.style.borderTopWidth) || 0;\r\n\t\t\t\tparentOffset.left += parseFloat(offsetParent.style.borderLeftWidth) || 0;\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\ttop: offset.top - parentOffset.top,\r\n\t\t\t\tleft: offset.left - parentOffset.left\r\n\t\t\t};\r\n\t\t}\r\n\t};\r\n\r\n\t/**********************\r\n\t Private Variables\r\n\t **********************/\r\n\r\n\t/* For $.data() */\r\n\tvar cache = {};\r\n\t$.expando = \"velocity\" + (new Date().getTime());\r\n\t$.uuid = 0;\r\n\r\n\t/* For $.queue() */\r\n\tvar class2type = {},\r\n\t\t\thasOwn = class2type.hasOwnProperty,\r\n\t\t\ttoString = class2type.toString;\r\n\r\n\tvar types = \"Boolean Number String Function Array Date RegExp Object Error\".split(\" \");\r\n\tfor (var i = 0; i < types.length; i++) {\r\n\t\tclass2type[\"[object \" + types[i] + \"]\"] = types[i].toLowerCase();\r\n\t}\r\n\r\n\t/* Makes $(node) possible, without having to call init. */\r\n\t$.fn.init.prototype = $.fn;\r\n\r\n\t/* Globalize Velocity onto the window, and assign its Utilities property. */\r\n\twindow.Velocity = {Utilities: $};\r\n})(window);\r\n\r\n/******************\r\n Velocity.js\r\n ******************/\r\n\r\n(function(factory) {\r\n\t\"use strict\";\r\n\t/* CommonJS module. */\r\n\tif (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n\t\tmodule.exports = factory();\r\n\t\t/* AMD module. */\r\n\t} else if (typeof define === \"function\" && define.amd) {\r\n\t\tdefine(factory);\r\n\t\t/* Browser globals. */\r\n\t} else {\r\n\t\tfactory();\r\n\t}\r\n}(function() {\r\n\t\"use strict\";\r\n\treturn function(global, window, document, undefined) {\r\n\r\n\t\t/***************\r\n\t\t Summary\r\n\t\t ***************/\r\n\r\n\t\t/*\r\n\t\t - CSS: CSS stack that works independently from the rest of Velocity.\r\n\t\t - animate(): Core animation method that iterates over the targeted elements and queues the incoming call onto each element individually.\r\n\t\t - Pre-Queueing: Prepare the element for animation by instantiating its data cache and processing the call's options.\r\n\t\t - Queueing: The logic that runs once the call has reached its point of execution in the element's $.queue() stack.\r\n\t\t Most logic is placed here to avoid risking it becoming stale (if the element's properties have changed).\r\n\t\t - Pushing: Consolidation of the tween data followed by its push onto the global in-progress calls container.\r\n\t\t - tick(): The single requestAnimationFrame loop responsible for tweening all in-progress calls.\r\n\t\t - completeCall(): Handles the cleanup process for each Velocity call.\r\n\t\t */\r\n\r\n\t\t/*********************\r\n\t\t Helper Functions\r\n\t\t *********************/\r\n\r\n\t\t/* IE detection. Gist: https://gist.github.com/julianshapiro/9098609 */\r\n\t\tvar IE = (function() {\r\n\t\t\tif (document.documentMode) {\r\n\t\t\t\treturn document.documentMode;\r\n\t\t\t} else {\r\n\t\t\t\tfor (var i = 7; i > 4; i--) {\r\n\t\t\t\t\tvar div = document.createElement(\"div\");\r\n\r\n\t\t\t\t\tdiv.innerHTML = \"<!--[if IE \" + i + \"]><span></span><![endif]-->\";\r\n\r\n\t\t\t\t\tif (div.getElementsByTagName(\"span\").length) {\r\n\t\t\t\t\t\tdiv = null;\r\n\r\n\t\t\t\t\t\treturn i;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn undefined;\r\n\t\t})();\r\n\r\n\t\t/* rAF shim. Gist: https://gist.github.com/julianshapiro/9497513 */\r\n\t\tvar rAFShim = (function() {\r\n\t\t\tvar timeLast = 0;\r\n\r\n\t\t\treturn window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function(callback) {\r\n\t\t\t\tvar timeCurrent = (new Date()).getTime(),\r\n\t\t\t\t\t\ttimeDelta;\r\n\r\n\t\t\t\t/* Dynamically set delay on a per-tick basis to match 60fps. */\r\n\t\t\t\t/* Technique by Erik Moller. MIT license: https://gist.github.com/paulirish/1579671 */\r\n\t\t\t\ttimeDelta = Math.max(0, 16 - (timeCurrent - timeLast));\r\n\t\t\t\ttimeLast = timeCurrent + timeDelta;\r\n\r\n\t\t\t\treturn setTimeout(function() {\r\n\t\t\t\t\tcallback(timeCurrent + timeDelta);\r\n\t\t\t\t}, timeDelta);\r\n\t\t\t};\r\n\t\t})();\r\n\r\n\t\tvar performance = (function() {\r\n\t\t\tvar perf = window.performance || {};\r\n\r\n\t\t\tif (typeof perf.now !== \"function\") {\r\n\t\t\t\tvar nowOffset = perf.timing && perf.timing.navigationStart ? perf.timing.navigationStart : (new Date()).getTime();\r\n\r\n\t\t\t\tperf.now = function() {\r\n\t\t\t\t\treturn (new Date()).getTime() - nowOffset;\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\treturn perf;\r\n\t\t})();\r\n\r\n\t\t/* Array compacting. Copyright Lo-Dash. MIT License: https://github.com/lodash/lodash/blob/master/LICENSE.txt */\r\n\t\tfunction compactSparseArray(array) {\r\n\t\t\tvar index = -1,\r\n\t\t\t\t\tlength = array ? array.length : 0,\r\n\t\t\t\t\tresult = [];\r\n\r\n\t\t\twhile (++index < length) {\r\n\t\t\t\tvar value = array[index];\r\n\r\n\t\t\t\tif (value) {\r\n\t\t\t\t\tresult.push(value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * Shim for \"fixing\" IE's lack of support (IE < 9) for applying slice\r\n\t\t * on host objects like NamedNodeMap, NodeList, and HTMLCollection\r\n\t\t * (technically, since host objects have been implementation-dependent,\r\n\t\t * at least before ES2015, IE hasn't needed to work this way).\r\n\t\t * Also works on strings, fixes IE < 9 to allow an explicit undefined\r\n\t\t * for the 2nd argument (as in Firefox), and prevents errors when\r\n\t\t * called on other DOM objects.\r\n\t\t */\r\n\t\tvar _slice = (function() {\r\n\t\t\tvar slice = Array.prototype.slice;\r\n\r\n\t\t\ttry {\r\n\t\t\t\t// Can't be used with DOM elements in IE < 9\r\n\t\t\t\tslice.call(document.documentElement);\r\n\t\t\t\treturn slice;\r\n\t\t\t} catch (e) { // Fails in IE < 9\r\n\r\n\t\t\t\t// This will work for genuine arrays, array-like objects, \r\n\t\t\t\t// NamedNodeMap (attributes, entities, notations),\r\n\t\t\t\t// NodeList (e.g., getElementsByTagName), HTMLCollection (e.g., childNodes),\r\n\t\t\t\t// and will not fail on other DOM objects (as do DOM elements in IE < 9)\r\n\t\t\t\treturn function(begin, end) {\r\n\t\t\t\t\tvar len = this.length;\r\n\r\n\t\t\t\t\tif (typeof begin !== \"number\") {\r\n\t\t\t\t\t\tbegin = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// IE < 9 gets unhappy with an undefined end argument\r\n\t\t\t\t\tif (typeof end !== \"number\") {\r\n\t\t\t\t\t\tend = len;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// For native Array objects, we use the native slice function\r\n\t\t\t\t\tif (this.slice) {\r\n\t\t\t\t\t\treturn slice.call(this, begin, end);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// For array like object we handle it ourselves.\r\n\t\t\t\t\tvar i,\r\n\t\t\t\t\t\t\tcloned = [],\r\n\t\t\t\t\t\t\t// Handle negative value for \"begin\"\r\n\t\t\t\t\t\t\tstart = (begin >= 0) ? begin : Math.max(0, len + begin),\r\n\t\t\t\t\t\t\t// Handle negative value for \"end\"\r\n\t\t\t\t\t\t\tupTo = end < 0 ? len + end : Math.min(end, len),\r\n\t\t\t\t\t\t\t// Actual expected size of the slice\r\n\t\t\t\t\t\t\tsize = upTo - start;\r\n\r\n\t\t\t\t\tif (size > 0) {\r\n\t\t\t\t\t\tcloned = new Array(size);\r\n\t\t\t\t\t\tif (this.charAt) {\r\n\t\t\t\t\t\t\tfor (i = 0; i < size; i++) {\r\n\t\t\t\t\t\t\t\tcloned[i] = this.charAt(start + i);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tfor (i = 0; i < size; i++) {\r\n\t\t\t\t\t\t\t\tcloned[i] = this[start + i];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn cloned;\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t})();\r\n\r\n\t\t/* .indexOf doesn't exist in IE<9 */\r\n\t\tvar _inArray = (function() {\r\n\t\t\tif (Array.prototype.includes) {\r\n\t\t\t\treturn function(arr, val) {\r\n\t\t\t\t\treturn arr.includes(val);\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\tif (Array.prototype.indexOf) {\r\n\t\t\t\treturn function(arr, val) {\r\n\t\t\t\t\treturn arr.indexOf(val) >= 0;\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\treturn function(arr, val) {\r\n\t\t\t\tfor (var i = 0; i < arr.length; i++) {\r\n\t\t\t\t\tif (arr[i] === val) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tfunction sanitizeElements(elements) {\r\n\t\t\t/* Unwrap jQuery/Zepto objects. */\r\n\t\t\tif (Type.isWrapped(elements)) {\r\n\t\t\t\telements = _slice.call(elements);\r\n\t\t\t\t/* Wrap a single element in an array so that $.each() can iterate with the element instead of its node's children. */\r\n\t\t\t} else if (Type.isNode(elements)) {\r\n\t\t\t\telements = [elements];\r\n\t\t\t}\r\n\r\n\t\t\treturn elements;\r\n\t\t}\r\n\r\n\t\tvar Type = {\r\n\t\t\tisNumber: function(variable) {\r\n\t\t\t\treturn (typeof variable === \"number\");\r\n\t\t\t},\r\n\t\t\tisString: function(variable) {\r\n\t\t\t\treturn (typeof variable === \"string\");\r\n\t\t\t},\r\n\t\t\tisArray: Array.isArray || function(variable) {\r\n\t\t\t\treturn Object.prototype.toString.call(variable) === \"[object Array]\";\r\n\t\t\t},\r\n\t\t\tisFunction: function(variable) {\r\n\t\t\t\treturn Object.prototype.toString.call(variable) === \"[object Function]\";\r\n\t\t\t},\r\n\t\t\tisNode: function(variable) {\r\n\t\t\t\treturn variable && variable.nodeType;\r\n\t\t\t},\r\n\t\t\t/* Determine if variable is an array-like wrapped jQuery, Zepto or similar element, or even a NodeList etc. */\r\n\t\t\t/* NOTE: HTMLFormElements also have a length. */\r\n\t\t\tisWrapped: function(variable) {\r\n\t\t\t\treturn variable\r\n\t\t\t\t\t\t&& variable !== window\r\n\t\t\t\t\t\t&& Type.isNumber(variable.length)\r\n\t\t\t\t\t\t&& !Type.isString(variable)\r\n\t\t\t\t\t\t&& !Type.isFunction(variable)\r\n\t\t\t\t\t\t&& !Type.isNode(variable)\r\n\t\t\t\t\t\t&& (variable.length === 0 || Type.isNode(variable[0]));\r\n\t\t\t},\r\n\t\t\tisSVG: function(variable) {\r\n\t\t\t\treturn window.SVGElement && (variable instanceof window.SVGElement);\r\n\t\t\t},\r\n\t\t\tisEmptyObject: function(variable) {\r\n\t\t\t\tfor (var name in variable) {\r\n\t\t\t\t\tif (variable.hasOwnProperty(name)) {\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/*****************\r\n\t\t Dependencies\r\n\t\t *****************/\r\n\r\n\t\tvar $,\r\n\t\t\t\tisJQuery = false;\r\n\r\n\t\tif (global.fn && global.fn.jquery) {\r\n\t\t\t$ = global;\r\n\t\t\tisJQuery = true;\r\n\t\t} else {\r\n\t\t\t$ = window.Velocity.Utilities;\r\n\t\t}\r\n\r\n\t\tif (IE <= 8 && !isJQuery) {\r\n\t\t\tthrow new Error(\"Velocity: IE8 and below require jQuery to be loaded before Velocity.\");\r\n\t\t} else if (IE <= 7) {\r\n\t\t\t/* Revert to jQuery's $.animate(), and lose Velocity's extra features. */\r\n\t\t\tjQuery.fn.velocity = jQuery.fn.animate;\r\n\r\n\t\t\t/* Now that $.fn.velocity is aliased, abort this Velocity declaration. */\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t/*****************\r\n\t\t Constants\r\n\t\t *****************/\r\n\r\n\t\tvar DURATION_DEFAULT = 400,\r\n\t\t\t\tEASING_DEFAULT = \"swing\";\r\n\r\n\t\t/*************\r\n\t\t State\r\n\t\t *************/\r\n\r\n\t\tvar Velocity = {\r\n\t\t\t/* Container for page-wide Velocity state data. */\r\n\t\t\tState: {\r\n\t\t\t\t/* Detect mobile devices to determine if mobileHA should be turned on. */\r\n\t\t\t\tisMobile: /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(window.navigator.userAgent),\r\n\t\t\t\t/* The mobileHA option's behavior changes on older Android devices (Gingerbread, versions 2.3.3-2.3.7). */\r\n\t\t\t\tisAndroid: /Android/i.test(window.navigator.userAgent),\r\n\t\t\t\tisGingerbread: /Android 2\\.3\\.[3-7]/i.test(window.navigator.userAgent),\r\n\t\t\t\tisChrome: window.chrome,\r\n\t\t\t\tisFirefox: /Firefox/i.test(window.navigator.userAgent),\r\n\t\t\t\t/* Create a cached element for re-use when checking for CSS property prefixes. */\r\n\t\t\t\tprefixElement: document.createElement(\"div\"),\r\n\t\t\t\t/* Cache every prefix match to avoid repeating lookups. */\r\n\t\t\t\tprefixMatches: {},\r\n\t\t\t\t/* Cache the anchor used for animating window scrolling. */\r\n\t\t\t\tscrollAnchor: null,\r\n\t\t\t\t/* Cache the browser-specific property names associated with the scroll anchor. */\r\n\t\t\t\tscrollPropertyLeft: null,\r\n\t\t\t\tscrollPropertyTop: null,\r\n\t\t\t\t/* Keep track of whether our RAF tick is running. */\r\n\t\t\t\tisTicking: false,\r\n\t\t\t\t/* Container for every in-progress call to Velocity. */\r\n\t\t\t\tcalls: [],\r\n\t\t\t\tdelayedElements: {\r\n\t\t\t\t\tcount: 0\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t/* Velocity's custom CSS stack. Made global for unit testing. */\r\n\t\t\tCSS: {/* Defined below. */},\r\n\t\t\t/* A shim of the jQuery utility functions used by Velocity -- provided by Velocity's optional jQuery shim. */\r\n\t\t\tUtilities: $,\r\n\t\t\t/* Container for the user's custom animation redirects that are referenced by name in place of the properties map argument. */\r\n\t\t\tRedirects: {/* Manually registered by the user. */},\r\n\t\t\tEasings: {/* Defined below. */},\r\n\t\t\t/* Attempt to use ES6 Promises by default. Users can override this with a third-party promises library. */\r\n\t\t\tPromise: window.Promise,\r\n\t\t\t/* Velocity option defaults, which can be overriden by the user. */\r\n\t\t\tdefaults: {\r\n\t\t\t\tqueue: \"\",\r\n\t\t\t\tduration: DURATION_DEFAULT,\r\n\t\t\t\teasing: EASING_DEFAULT,\r\n\t\t\t\tbegin: undefined,\r\n\t\t\t\tcomplete: undefined,\r\n\t\t\t\tprogress: undefined,\r\n\t\t\t\tdisplay: undefined,\r\n\t\t\t\tvisibility: undefined,\r\n\t\t\t\tloop: false,\r\n\t\t\t\tdelay: false,\r\n\t\t\t\tmobileHA: true,\r\n\t\t\t\t/* Advanced: Set to false to prevent property values from being cached between consecutive Velocity-initiated chain calls. */\r\n\t\t\t\t_cacheValues: true,\r\n\t\t\t\t/* Advanced: Set to false if the promise should always resolve on empty element lists. */\r\n\t\t\t\tpromiseRejectEmpty: true\r\n\t\t\t},\r\n\t\t\t/* A design goal of Velocity is to cache data wherever possible in order to avoid DOM requerying. Accordingly, each element has a data cache. */\r\n\t\t\tinit: function(element) {\r\n\t\t\t\t$.data(element, \"velocity\", {\r\n\t\t\t\t\t/* Store whether this is an SVG element, since its properties are retrieved and updated differently than standard HTML elements. */\r\n\t\t\t\t\tisSVG: Type.isSVG(element),\r\n\t\t\t\t\t/* Keep track of whether the element is currently being animated by Velocity.\r\n\t\t\t\t\t This is used to ensure that property values are not transferred between non-consecutive (stale) calls. */\r\n\t\t\t\t\tisAnimating: false,\r\n\t\t\t\t\t/* A reference to the element's live computedStyle object. Learn more here: https://developer.mozilla.org/en/docs/Web/API/window.getComputedStyle */\r\n\t\t\t\t\tcomputedStyle: null,\r\n\t\t\t\t\t/* Tween data is cached for each animation on the element so that data can be passed across calls --\r\n\t\t\t\t\t in particular, end values are used as subsequent start values in consecutive Velocity calls. */\r\n\t\t\t\t\ttweensContainer: null,\r\n\t\t\t\t\t/* The full root property values of each CSS hook being animated on this element are cached so that:\r\n\t\t\t\t\t 1) Concurrently-animating hooks sharing the same root can have their root values' merged into one while tweening.\r\n\t\t\t\t\t 2) Post-hook-injection root values can be transferred over to consecutively chained Velocity calls as starting root values. */\r\n\t\t\t\t\trootPropertyValueCache: {},\r\n\t\t\t\t\t/* A cache for transform updates, which must be manually flushed via CSS.flushTransformCache(). */\r\n\t\t\t\t\ttransformCache: {}\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\t/* A parallel to jQuery's $.css(), used for getting/setting Velocity's hooked CSS properties. */\r\n\t\t\thook: null, /* Defined below. */\r\n\t\t\t/* Velocity-wide animation time remapping for testing purposes. */\r\n\t\t\tmock: false,\r\n\t\t\tversion: {major: 1, minor: 5, patch: 2},\r\n\t\t\t/* Set to 1 or 2 (most verbose) to output debug info to console. */\r\n\t\t\tdebug: false,\r\n\t\t\t/* Use rAF high resolution timestamp when available */\r\n\t\t\ttimestamp: true,\r\n\t\t\t/* Pause all animations */\r\n\t\t\tpauseAll: function(queueName) {\r\n\t\t\t\tvar currentTime = (new Date()).getTime();\r\n\r\n\t\t\t\t$.each(Velocity.State.calls, function(i, activeCall) {\r\n\r\n\t\t\t\t\tif (activeCall) {\r\n\r\n\t\t\t\t\t\t/* If we have a queueName and this call is not on that queue, skip */\r\n\t\t\t\t\t\tif (queueName !== undefined && ((activeCall[2].queue !== queueName) || (activeCall[2].queue === false))) {\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Set call to paused */\r\n\t\t\t\t\t\tactiveCall[5] = {\r\n\t\t\t\t\t\t\tresume: false\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t/* Pause timers on any currently delayed calls */\r\n\t\t\t\t$.each(Velocity.State.delayedElements, function(k, element) {\r\n\t\t\t\t\tif (!element) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tpauseDelayOnElement(element, currentTime);\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\t/* Resume all animations */\r\n\t\t\tresumeAll: function(queueName) {\r\n\t\t\t\tvar currentTime = (new Date()).getTime();\r\n\r\n\t\t\t\t$.each(Velocity.State.calls, function(i, activeCall) {\r\n\r\n\t\t\t\t\tif (activeCall) {\r\n\r\n\t\t\t\t\t\t/* If we have a queueName and this call is not on that queue, skip */\r\n\t\t\t\t\t\tif (queueName !== undefined && ((activeCall[2].queue !== queueName) || (activeCall[2].queue === false))) {\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Set call to resumed if it was paused */\r\n\t\t\t\t\t\tif (activeCall[5]) {\r\n\t\t\t\t\t\t\tactiveCall[5].resume = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\t/* Resume timers on any currently delayed calls */\r\n\t\t\t\t$.each(Velocity.State.delayedElements, function(k, element) {\r\n\t\t\t\t\tif (!element) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tresumeDelayOnElement(element, currentTime);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/* Retrieve the appropriate scroll anchor and property name for the browser: https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollY */\r\n\t\tif (window.pageYOffset !== undefined) {\r\n\t\t\tVelocity.State.scrollAnchor = window;\r\n\t\t\tVelocity.State.scrollPropertyLeft = \"pageXOffset\";\r\n\t\t\tVelocity.State.scrollPropertyTop = \"pageYOffset\";\r\n\t\t} else {\r\n\t\t\tVelocity.State.scrollAnchor = document.documentElement || document.body.parentNode || document.body;\r\n\t\t\tVelocity.State.scrollPropertyLeft = \"scrollLeft\";\r\n\t\t\tVelocity.State.scrollPropertyTop = \"scrollTop\";\r\n\t\t}\r\n\r\n\t\t/* Shorthand alias for jQuery's $.data() utility. */\r\n\t\tfunction Data(element) {\r\n\t\t\t/* Hardcode a reference to the plugin name. */\r\n\t\t\tvar response = $.data(element, \"velocity\");\r\n\r\n\t\t\t/* jQuery <=1.4.2 returns null instead of undefined when no match is found. We normalize this behavior. */\r\n\t\t\treturn response === null ? undefined : response;\r\n\t\t}\r\n\r\n\t\t/**************\r\n\t\t Delay Timer\r\n\t\t **************/\r\n\r\n\t\tfunction pauseDelayOnElement(element, currentTime) {\r\n\t\t\t/* Check for any delay timers, and pause the set timeouts (while preserving time data)\r\n\t\t\t to be resumed when the \"resume\" command is issued */\r\n\t\t\tvar data = Data(element);\r\n\t\t\tif (data && data.delayTimer && !data.delayPaused) {\r\n\t\t\t\tdata.delayRemaining = data.delay - currentTime + data.delayBegin;\r\n\t\t\t\tdata.delayPaused = true;\r\n\t\t\t\tclearTimeout(data.delayTimer.setTimeout);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction resumeDelayOnElement(element, currentTime) {\r\n\t\t\t/* Check for any paused timers and resume */\r\n\t\t\tvar data = Data(element);\r\n\t\t\tif (data && data.delayTimer && data.delayPaused) {\r\n\t\t\t\t/* If the element was mid-delay, re initiate the timeout with the remaining delay */\r\n\t\t\t\tdata.delayPaused = false;\r\n\t\t\t\tdata.delayTimer.setTimeout = setTimeout(data.delayTimer.next, data.delayRemaining);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\r\n\t\t/**************\r\n\t\t Easing\r\n\t\t **************/\r\n\r\n\t\t/* Step easing generator. */\r\n\t\tfunction generateStep(steps) {\r\n\t\t\treturn function(p) {\r\n\t\t\t\treturn Math.round(p * steps) * (1 / steps);\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\t/* Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License */\r\n\t\tfunction generateBezier(mX1, mY1, mX2, mY2) {\r\n\t\t\tvar NEWTON_ITERATIONS = 4,\r\n\t\t\t\t\tNEWTON_MIN_SLOPE = 0.001,\r\n\t\t\t\t\tSUBDIVISION_PRECISION = 0.0000001,\r\n\t\t\t\t\tSUBDIVISION_MAX_ITERATIONS = 10,\r\n\t\t\t\t\tkSplineTableSize = 11,\r\n\t\t\t\t\tkSampleStepSize = 1.0 / (kSplineTableSize - 1.0),\r\n\t\t\t\t\tfloat32ArraySupported = \"Float32Array\" in window;\r\n\r\n\t\t\t/* Must contain four arguments. */\r\n\t\t\tif (arguments.length !== 4) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t/* Arguments must be numbers. */\r\n\t\t\tfor (var i = 0; i < 4; ++i) {\r\n\t\t\t\tif (typeof arguments[i] !== \"number\" || isNaN(arguments[i]) || !isFinite(arguments[i])) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/* X values must be in the [0, 1] range. */\r\n\t\t\tmX1 = Math.min(mX1, 1);\r\n\t\t\tmX2 = Math.min(mX2, 1);\r\n\t\t\tmX1 = Math.max(mX1, 0);\r\n\t\t\tmX2 = Math.max(mX2, 0);\r\n\r\n\t\t\tvar mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\r\n\r\n\t\t\tfunction A(aA1, aA2) {\r\n\t\t\t\treturn 1.0 - 3.0 * aA2 + 3.0 * aA1;\r\n\t\t\t}\r\n\t\t\tfunction B(aA1, aA2) {\r\n\t\t\t\treturn 3.0 * aA2 - 6.0 * aA1;\r\n\t\t\t}\r\n\t\t\tfunction C(aA1) {\r\n\t\t\t\treturn 3.0 * aA1;\r\n\t\t\t}\r\n\r\n\t\t\tfunction calcBezier(aT, aA1, aA2) {\r\n\t\t\t\treturn ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\r\n\t\t\t}\r\n\r\n\t\t\tfunction getSlope(aT, aA1, aA2) {\r\n\t\t\t\treturn 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\r\n\t\t\t}\r\n\r\n\t\t\tfunction newtonRaphsonIterate(aX, aGuessT) {\r\n\t\t\t\tfor (var i = 0; i < NEWTON_ITERATIONS; ++i) {\r\n\t\t\t\t\tvar currentSlope = getSlope(aGuessT, mX1, mX2);\r\n\r\n\t\t\t\t\tif (currentSlope === 0.0) {\r\n\t\t\t\t\t\treturn aGuessT;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar currentX = calcBezier(aGuessT, mX1, mX2) - aX;\r\n\t\t\t\t\taGuessT -= currentX / currentSlope;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn aGuessT;\r\n\t\t\t}\r\n\r\n\t\t\tfunction calcSampleValues() {\r\n\t\t\t\tfor (var i = 0; i < kSplineTableSize; ++i) {\r\n\t\t\t\t\tmSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction binarySubdivide(aX, aA, aB) {\r\n\t\t\t\tvar currentX, currentT, i = 0;\r\n\r\n\t\t\t\tdo {\r\n\t\t\t\t\tcurrentT = aA + (aB - aA) / 2.0;\r\n\t\t\t\t\tcurrentX = calcBezier(currentT, mX1, mX2) - aX;\r\n\t\t\t\t\tif (currentX > 0.0) {\r\n\t\t\t\t\t\taB = currentT;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\taA = currentT;\r\n\t\t\t\t\t}\r\n\t\t\t\t} while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\r\n\r\n\t\t\t\treturn currentT;\r\n\t\t\t}\r\n\r\n\t\t\tfunction getTForX(aX) {\r\n\t\t\t\tvar intervalStart = 0.0,\r\n\t\t\t\t\t\tcurrentSample = 1,\r\n\t\t\t\t\t\tlastSample = kSplineTableSize - 1;\r\n\r\n\t\t\t\tfor (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\r\n\t\t\t\t\tintervalStart += kSampleStepSize;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t--currentSample;\r\n\r\n\t\t\t\tvar dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]),\r\n\t\t\t\t\t\tguessForT = intervalStart + dist * kSampleStepSize,\r\n\t\t\t\t\t\tinitialSlope = getSlope(guessForT, mX1, mX2);\r\n\r\n\t\t\t\tif (initialSlope >= NEWTON_MIN_SLOPE) {\r\n\t\t\t\t\treturn newtonRaphsonIterate(aX, guessForT);\r\n\t\t\t\t} else if (initialSlope === 0.0) {\r\n\t\t\t\t\treturn guessForT;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar _precomputed = false;\r\n\r\n\t\t\tfunction precompute() {\r\n\t\t\t\t_precomputed = true;\r\n\t\t\t\tif (mX1 !== mY1 || mX2 !== mY2) {\r\n\t\t\t\t\tcalcSampleValues();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar f = function(aX) {\r\n\t\t\t\tif (!_precomputed) {\r\n\t\t\t\t\tprecompute();\r\n\t\t\t\t}\r\n\t\t\t\tif (mX1 === mY1 && mX2 === mY2) {\r\n\t\t\t\t\treturn aX;\r\n\t\t\t\t}\r\n\t\t\t\tif (aX === 0) {\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t}\r\n\t\t\t\tif (aX === 1) {\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn calcBezier(getTForX(aX), mY1, mY2);\r\n\t\t\t};\r\n\r\n\t\t\tf.getControlPoints = function() {\r\n\t\t\t\treturn [{x: mX1, y: mY1}, {x: mX2, y: mY2}];\r\n\t\t\t};\r\n\r\n\t\t\tvar str = \"generateBezier(\" + [mX1, mY1, mX2, mY2] + \")\";\r\n\t\t\tf.toString = function() {\r\n\t\t\t\treturn str;\r\n\t\t\t};\r\n\r\n\t\t\treturn f;\r\n\t\t}\r\n\r\n\t\t/* Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */\r\n\t\t/* Given a tension, friction, and duration, a simulation at 60FPS will first run without a defined duration in order to calculate the full path. A second pass\r\n\t\t then adjusts the time delta -- using the relation between actual time and duration -- to calculate the path for the duration-constrained animation. */\r\n\t\tvar generateSpringRK4 = (function() {\r\n\t\t\tfunction springAccelerationForState(state) {\r\n\t\t\t\treturn (-state.tension * state.x) - (state.friction * state.v);\r\n\t\t\t}\r\n\r\n\t\t\tfunction springEvaluateStateWithDerivative(initialState, dt, derivative) {\r\n\t\t\t\tvar state = {\r\n\t\t\t\t\tx: initialState.x + derivative.dx * dt,\r\n\t\t\t\t\tv: initialState.v + derivative.dv * dt,\r\n\t\t\t\t\ttension: initialState.tension,\r\n\t\t\t\t\tfriction: initialState.friction\r\n\t\t\t\t};\r\n\r\n\t\t\t\treturn {dx: state.v, dv: springAccelerationForState(state)};\r\n\t\t\t}\r\n\r\n\t\t\tfunction springIntegrateState(state, dt) {\r\n\t\t\t\tvar a = {\r\n\t\t\t\t\tdx: state.v,\r\n\t\t\t\t\tdv: springAccelerationForState(state)\r\n\t\t\t\t},\r\n\t\t\t\t\t\tb = springEvaluateStateWithDerivative(state, dt * 0.5, a),\r\n\t\t\t\t\t\tc = springEvaluateStateWithDerivative(state, dt * 0.5, b),\r\n\t\t\t\t\t\td = springEvaluateStateWithDerivative(state, dt, c),\r\n\t\t\t\t\t\tdxdt = 1.0 / 6.0 * (a.dx + 2.0 * (b.dx + c.dx) + d.dx),\r\n\t\t\t\t\t\tdvdt = 1.0 / 6.0 * (a.dv + 2.0 * (b.dv + c.dv) + d.dv);\r\n\r\n\t\t\t\tstate.x = state.x + dxdt * dt;\r\n\t\t\t\tstate.v = state.v + dvdt * dt;\r\n\r\n\t\t\t\treturn state;\r\n\t\t\t}\r\n\r\n\t\t\treturn function springRK4Factory(tension, friction, duration) {\r\n\r\n\t\t\t\tvar initState = {\r\n\t\t\t\t\tx: -1,\r\n\t\t\t\t\tv: 0,\r\n\t\t\t\t\ttension: null,\r\n\t\t\t\t\tfriction: null\r\n\t\t\t\t},\r\n\t\t\t\t\t\tpath = [0],\r\n\t\t\t\t\t\ttime_lapsed = 0,\r\n\t\t\t\t\t\ttolerance = 1 / 10000,\r\n\t\t\t\t\t\tDT = 16 / 1000,\r\n\t\t\t\t\t\thave_duration, dt, last_state;\r\n\r\n\t\t\t\ttension = parseFloat(tension) || 500;\r\n\t\t\t\tfriction = parseFloat(friction) || 20;\r\n\t\t\t\tduration = duration || null;\r\n\r\n\t\t\t\tinitState.tension = tension;\r\n\t\t\t\tinitState.friction = friction;\r\n\r\n\t\t\t\thave_duration = duration !== null;\r\n\r\n\t\t\t\t/* Calculate the actual time it takes for this animation to complete with the provided conditions. */\r\n\t\t\t\tif (have_duration) {\r\n\t\t\t\t\t/* Run the simulation without a duration. */\r\n\t\t\t\t\ttime_lapsed = springRK4Factory(tension, friction);\r\n\t\t\t\t\t/* Compute the adjusted time delta. */\r\n\t\t\t\t\tdt = time_lapsed / duration * DT;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdt = DT;\r\n\t\t\t\t}\r\n\r\n\t\t\t\twhile (true) {\r\n\t\t\t\t\t/* Next/step function .*/\r\n\t\t\t\t\tlast_state = springIntegrateState(last_state || initState, dt);\r\n\t\t\t\t\t/* Store the position. */\r\n\t\t\t\t\tpath.push(1 + last_state.x);\r\n\t\t\t\t\ttime_lapsed += 16;\r\n\t\t\t\t\t/* If the change threshold is reached, break. */\r\n\t\t\t\t\tif (!(Math.abs(last_state.x) > tolerance && Math.abs(last_state.v) > tolerance)) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* If duration is not defined, return the actual time required for completing this animation. Otherwise, return a closure that holds the\r\n\t\t\t\t computed path and returns a snapshot of the position according to a given percentComplete. */\r\n\t\t\t\treturn !have_duration ? time_lapsed : function(percentComplete) {\r\n\t\t\t\t\treturn path[ (percentComplete * (path.length - 1)) | 0 ];\r\n\t\t\t\t};\r\n\t\t\t};\r\n\t\t}());\r\n\r\n\t\t/* jQuery easings. */\r\n\t\tVelocity.Easings = {\r\n\t\t\tlinear: function(p) {\r\n\t\t\t\treturn p;\r\n\t\t\t},\r\n\t\t\tswing: function(p) {\r\n\t\t\t\treturn 0.5 - Math.cos(p * Math.PI) / 2;\r\n\t\t\t},\r\n\t\t\t/* Bonus \"spring\" easing, which is a less exaggerated version of easeInOutElastic. */\r\n\t\t\tspring: function(p) {\r\n\t\t\t\treturn 1 - (Math.cos(p * 4.5 * Math.PI) * Math.exp(-p * 6));\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/* CSS3 and Robert Penner easings. */\r\n\t\t$.each(\r\n\t\t\t\t[\r\n\t\t\t\t\t[\"ease\", [0.25, 0.1, 0.25, 1.0]],\r\n\t\t\t\t\t[\"ease-in\", [0.42, 0.0, 1.00, 1.0]],\r\n\t\t\t\t\t[\"ease-out\", [0.00, 0.0, 0.58, 1.0]],\r\n\t\t\t\t\t[\"ease-in-out\", [0.42, 0.0, 0.58, 1.0]],\r\n\t\t\t\t\t[\"easeInSine\", [0.47, 0, 0.745, 0.715]],\r\n\t\t\t\t\t[\"easeOutSine\", [0.39, 0.575, 0.565, 1]],\r\n\t\t\t\t\t[\"easeInOutSine\", [0.445, 0.05, 0.55, 0.95]],\r\n\t\t\t\t\t[\"easeInQuad\", [0.55, 0.085, 0.68, 0.53]],\r\n\t\t\t\t\t[\"easeOutQuad\", [0.25, 0.46, 0.45, 0.94]],\r\n\t\t\t\t\t[\"easeInOutQuad\", [0.455, 0.03, 0.515, 0.955]],\r\n\t\t\t\t\t[\"easeInCubic\", [0.55, 0.055, 0.675, 0.19]],\r\n\t\t\t\t\t[\"easeOutCubic\", [0.215, 0.61, 0.355, 1]],\r\n\t\t\t\t\t[\"easeInOutCubic\", [0.645, 0.045, 0.355, 1]],\r\n\t\t\t\t\t[\"easeInQuart\", [0.895, 0.03, 0.685, 0.22]],\r\n\t\t\t\t\t[\"easeOutQuart\", [0.165, 0.84, 0.44, 1]],\r\n\t\t\t\t\t[\"easeInOutQuart\", [0.77, 0, 0.175, 1]],\r\n\t\t\t\t\t[\"easeInQuint\", [0.755, 0.05, 0.855, 0.06]],\r\n\t\t\t\t\t[\"easeOutQuint\", [0.23, 1, 0.32, 1]],\r\n\t\t\t\t\t[\"easeInOutQuint\", [0.86, 0, 0.07, 1]],\r\n\t\t\t\t\t[\"easeInExpo\", [0.95, 0.05, 0.795, 0.035]],\r\n\t\t\t\t\t[\"easeOutExpo\", [0.19, 1, 0.22, 1]],\r\n\t\t\t\t\t[\"easeInOutExpo\", [1, 0, 0, 1]],\r\n\t\t\t\t\t[\"easeInCirc\", [0.6, 0.04, 0.98, 0.335]],\r\n\t\t\t\t\t[\"easeOutCirc\", [0.075, 0.82, 0.165, 1]],\r\n\t\t\t\t\t[\"easeInOutCirc\", [0.785, 0.135, 0.15, 0.86]]\r\n\t\t\t\t], function(i, easingArray) {\r\n\t\t\tVelocity.Easings[easingArray[0]] = generateBezier.apply(null, easingArray[1]);\r\n\t\t});\r\n\r\n\t\t/* Determine the appropriate easing type given an easing input. */\r\n\t\tfunction getEasing(value, duration) {\r\n\t\t\tvar easing = value;\r\n\r\n\t\t\t/* The easing option can either be a string that references a pre-registered easing,\r\n\t\t\t or it can be a two-/four-item array of integers to be converted into a bezier/spring function. */\r\n\t\t\tif (Type.isString(value)) {\r\n\t\t\t\t/* Ensure that the easing has been assigned to jQuery's Velocity.Easings object. */\r\n\t\t\t\tif (!Velocity.Easings[value]) {\r\n\t\t\t\t\teasing = false;\r\n\t\t\t\t}\r\n\t\t\t} else if (Type.isArray(value) && value.length === 1) {\r\n\t\t\t\teasing = generateStep.apply(null, value);\r\n\t\t\t} else if (Type.isArray(value) && value.length === 2) {\r\n\t\t\t\t/* springRK4 must be passed the animation's duration. */\r\n\t\t\t\t/* Note: If the springRK4 array contains non-numbers, generateSpringRK4() returns an easing\r\n\t\t\t\t function generated with default tension and friction values. */\r\n\t\t\t\teasing = generateSpringRK4.apply(null, value.concat([duration]));\r\n\t\t\t} else if (Type.isArray(value) && value.length === 4) {\r\n\t\t\t\t/* Note: If the bezier array contains non-numbers, generateBezier() returns false. */\r\n\t\t\t\teasing = generateBezier.apply(null, value);\r\n\t\t\t} else {\r\n\t\t\t\teasing = false;\r\n\t\t\t}\r\n\r\n\t\t\t/* Revert to the Velocity-wide default easing type, or fall back to \"swing\" (which is also jQuery's default)\r\n\t\t\t if the Velocity-wide default has been incorrectly modified. */\r\n\t\t\tif (easing === false) {\r\n\t\t\t\tif (Velocity.Easings[Velocity.defaults.easing]) {\r\n\t\t\t\t\teasing = Velocity.defaults.easing;\r\n\t\t\t\t} else {\r\n\t\t\t\t\teasing = EASING_DEFAULT;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn easing;\r\n\t\t}\r\n\r\n\t\t/*****************\r\n\t\t CSS Stack\r\n\t\t *****************/\r\n\r\n\t\t/* The CSS object is a highly condensed and performant CSS stack that fully replaces jQuery's.\r\n\t\t It handles the validation, getting, and setting of both standard CSS properties and CSS property hooks. */\r\n\t\t/* Note: A \"CSS\" shorthand is aliased so that our code is easier to read. */\r\n\t\tvar CSS = Velocity.CSS = {\r\n\t\t\t/*************\r\n\t\t\t RegEx\r\n\t\t\t *************/\r\n\r\n\t\t\tRegEx: {\r\n\t\t\t\tisHex: /^#([A-f\\d]{3}){1,2}$/i,\r\n\t\t\t\t/* Unwrap a property value's surrounding text, e.g. \"rgba(4, 3, 2, 1)\" ==> \"4, 3, 2, 1\" and \"rect(4px 3px 2px 1px)\" ==> \"4px 3px 2px 1px\". */\r\n\t\t\t\tvalueUnwrap: /^[A-z]+\\((.*)\\)$/i,\r\n\t\t\t\twrappedValueAlreadyExtracted: /[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,\r\n\t\t\t\t/* Split a multi-value property into an array of subvalues, e.g. \"rgba(4, 3, 2, 1) 4px 3px 2px 1px\" ==> [ \"rgba(4, 3, 2, 1)\", \"4px\", \"3px\", \"2px\", \"1px\" ]. */\r\n\t\t\t\tvalueSplit: /([A-z]+\\(.+\\))|(([A-z0-9#-.]+?)(?=\\s|$))/ig\r\n\t\t\t},\r\n\t\t\t/************\r\n\t\t\t Lists\r\n\t\t\t ************/\r\n\r\n\t\t\tLists: {\r\n\t\t\t\tcolors: [\"fill\", \"stroke\", \"stopColor\", \"color\", \"backgroundColor\", \"borderColor\", \"borderTopColor\", \"borderRightColor\", \"borderBottomColor\", \"borderLeftColor\", \"outlineColor\"],\r\n\t\t\t\ttransformsBase: [\"translateX\", \"translateY\", \"scale\", \"scaleX\", \"scaleY\", \"skewX\", \"skewY\", \"rotateZ\"],\r\n\t\t\t\ttransforms3D: [\"transformPerspective\", \"translateZ\", \"scaleZ\", \"rotateX\", \"rotateY\"],\r\n\t\t\t\tunits: [\r\n\t\t\t\t\t\"%\", // relative\r\n\t\t\t\t\t\"em\", \"ex\", \"ch\", \"rem\", // font relative\r\n\t\t\t\t\t\"vw\", \"vh\", \"vmin\", \"vmax\", // viewport relative\r\n\t\t\t\t\t\"cm\", \"mm\", \"Q\", \"in\", \"pc\", \"pt\", \"px\", // absolute lengths\r\n\t\t\t\t\t\"deg\", \"grad\", \"rad\", \"turn\", // angles\r\n\t\t\t\t\t\"s\", \"ms\" // time\r\n\t\t\t\t],\r\n\t\t\t\tcolorNames: {\r\n\t\t\t\t\t\"aliceblue\": \"240,248,255\",\r\n\t\t\t\t\t\"antiquewhite\": \"250,235,215\",\r\n\t\t\t\t\t\"aquamarine\": \"127,255,212\",\r\n\t\t\t\t\t\"aqua\": \"0,255,255\",\r\n\t\t\t\t\t\"azure\": \"240,255,255\",\r\n\t\t\t\t\t\"beige\": \"245,245,220\",\r\n\t\t\t\t\t\"bisque\": \"255,228,196\",\r\n\t\t\t\t\t\"black\": \"0,0,0\",\r\n\t\t\t\t\t\"blanchedalmond\": \"255,235,205\",\r\n\t\t\t\t\t\"blueviolet\": \"138,43,226\",\r\n\t\t\t\t\t\"blue\": \"0,0,255\",\r\n\t\t\t\t\t\"brown\": \"165,42,42\",\r\n\t\t\t\t\t\"burlywood\": \"222,184,135\",\r\n\t\t\t\t\t\"cadetblue\": \"95,158,160\",\r\n\t\t\t\t\t\"chartreuse\": \"127,255,0\",\r\n\t\t\t\t\t\"chocolate\": \"210,105,30\",\r\n\t\t\t\t\t\"coral\": \"255,127,80\",\r\n\t\t\t\t\t\"cornflowerblue\": \"100,149,237\",\r\n\t\t\t\t\t\"cornsilk\": \"255,248,220\",\r\n\t\t\t\t\t\"crimson\": \"220,20,60\",\r\n\t\t\t\t\t\"cyan\": \"0,255,255\",\r\n\t\t\t\t\t\"darkblue\": \"0,0,139\",\r\n\t\t\t\t\t\"darkcyan\": \"0,139,139\",\r\n\t\t\t\t\t\"darkgoldenrod\": \"184,134,11\",\r\n\t\t\t\t\t\"darkgray\": \"169,169,169\",\r\n\t\t\t\t\t\"darkgrey\": \"169,169,169\",\r\n\t\t\t\t\t\"darkgreen\": \"0,100,0\",\r\n\t\t\t\t\t\"darkkhaki\": \"189,183,107\",\r\n\t\t\t\t\t\"darkmagenta\": \"139,0,139\",\r\n\t\t\t\t\t\"darkolivegreen\": \"85,107,47\",\r\n\t\t\t\t\t\"darkorange\": \"255,140,0\",\r\n\t\t\t\t\t\"darkorchid\": \"153,50,204\",\r\n\t\t\t\t\t\"darkred\": \"139,0,0\",\r\n\t\t\t\t\t\"darksalmon\": \"233,150,122\",\r\n\t\t\t\t\t\"darkseagreen\": \"143,188,143\",\r\n\t\t\t\t\t\"darkslateblue\": \"72,61,139\",\r\n\t\t\t\t\t\"darkslategray\": \"47,79,79\",\r\n\t\t\t\t\t\"darkturquoise\": \"0,206,209\",\r\n\t\t\t\t\t\"darkviolet\": \"148,0,211\",\r\n\t\t\t\t\t\"deeppink\": \"255,20,147\",\r\n\t\t\t\t\t\"deepskyblue\": \"0,191,255\",\r\n\t\t\t\t\t\"dimgray\": \"105,105,105\",\r\n\t\t\t\t\t\"dimgrey\": \"105,105,105\",\r\n\t\t\t\t\t\"dodgerblue\": \"30,144,255\",\r\n\t\t\t\t\t\"firebrick\": \"178,34,34\",\r\n\t\t\t\t\t\"floralwhite\": \"255,250,240\",\r\n\t\t\t\t\t\"forestgreen\": \"34,139,34\",\r\n\t\t\t\t\t\"fuchsia\": \"255,0,255\",\r\n\t\t\t\t\t\"gainsboro\": \"220,220,220\",\r\n\t\t\t\t\t\"ghostwhite\": \"248,248,255\",\r\n\t\t\t\t\t\"gold\": \"255,215,0\",\r\n\t\t\t\t\t\"goldenrod\": \"218,165,32\",\r\n\t\t\t\t\t\"gray\": \"128,128,128\",\r\n\t\t\t\t\t\"grey\": \"128,128,128\",\r\n\t\t\t\t\t\"greenyellow\": \"173,255,47\",\r\n\t\t\t\t\t\"green\": \"0,128,0\",\r\n\t\t\t\t\t\"honeydew\": \"240,255,240\",\r\n\t\t\t\t\t\"hotpink\": \"255,105,180\",\r\n\t\t\t\t\t\"indianred\": \"205,92,92\",\r\n\t\t\t\t\t\"indigo\": \"75,0,130\",\r\n\t\t\t\t\t\"ivory\": \"255,255,240\",\r\n\t\t\t\t\t\"khaki\": \"240,230,140\",\r\n\t\t\t\t\t\"lavenderblush\": \"255,240,245\",\r\n\t\t\t\t\t\"lavender\": \"230,230,250\",\r\n\t\t\t\t\t\"lawngreen\": \"124,252,0\",\r\n\t\t\t\t\t\"lemonchiffon\": \"255,250,205\",\r\n\t\t\t\t\t\"lightblue\": \"173,216,230\",\r\n\t\t\t\t\t\"lightcoral\": \"240,128,128\",\r\n\t\t\t\t\t\"lightcyan\": \"224,255,255\",\r\n\t\t\t\t\t\"lightgoldenrodyellow\": \"250,250,210\",\r\n\t\t\t\t\t\"lightgray\": \"211,211,211\",\r\n\t\t\t\t\t\"lightgrey\": \"211,211,211\",\r\n\t\t\t\t\t\"lightgreen\": \"144,238,144\",\r\n\t\t\t\t\t\"lightpink\": \"255,182,193\",\r\n\t\t\t\t\t\"lightsalmon\": \"255,160,122\",\r\n\t\t\t\t\t\"lightseagreen\": \"32,178,170\",\r\n\t\t\t\t\t\"lightskyblue\": \"135,206,250\",\r\n\t\t\t\t\t\"lightslategray\": \"119,136,153\",\r\n\t\t\t\t\t\"lightsteelblue\": \"176,196,222\",\r\n\t\t\t\t\t\"lightyellow\": \"255,255,224\",\r\n\t\t\t\t\t\"limegreen\": \"50,205,50\",\r\n\t\t\t\t\t\"lime\": \"0,255,0\",\r\n\t\t\t\t\t\"linen\": \"250,240,230\",\r\n\t\t\t\t\t\"magenta\": \"255,0,255\",\r\n\t\t\t\t\t\"maroon\": \"128,0,0\",\r\n\t\t\t\t\t\"mediumaquamarine\": \"102,205,170\",\r\n\t\t\t\t\t\"mediumblue\": \"0,0,205\",\r\n\t\t\t\t\t\"mediumorchid\": \"186,85,211\",\r\n\t\t\t\t\t\"mediumpurple\": \"147,112,219\",\r\n\t\t\t\t\t\"mediumseagreen\": \"60,179,113\",\r\n\t\t\t\t\t\"mediumslateblue\": \"123,104,238\",\r\n\t\t\t\t\t\"mediumspringgreen\": \"0,250,154\",\r\n\t\t\t\t\t\"mediumturquoise\": \"72,209,204\",\r\n\t\t\t\t\t\"mediumvioletred\": \"199,21,133\",\r\n\t\t\t\t\t\"midnightblue\": \"25,25,112\",\r\n\t\t\t\t\t\"mintcream\": \"245,255,250\",\r\n\t\t\t\t\t\"mistyrose\": \"255,228,225\",\r\n\t\t\t\t\t\"moccasin\": \"255,228,181\",\r\n\t\t\t\t\t\"navajowhite\": \"255,222,173\",\r\n\t\t\t\t\t\"navy\": \"0,0,128\",\r\n\t\t\t\t\t\"oldlace\": \"253,245,230\",\r\n\t\t\t\t\t\"olivedrab\": \"107,142,35\",\r\n\t\t\t\t\t\"olive\": \"128,128,0\",\r\n\t\t\t\t\t\"orangered\": \"255,69,0\",\r\n\t\t\t\t\t\"orange\": \"255,165,0\",\r\n\t\t\t\t\t\"orchid\": \"218,112,214\",\r\n\t\t\t\t\t\"palegoldenrod\": \"238,232,170\",\r\n\t\t\t\t\t\"palegreen\": \"152,251,152\",\r\n\t\t\t\t\t\"paleturquoise\": \"175,238,238\",\r\n\t\t\t\t\t\"palevioletred\": \"219,112,147\",\r\n\t\t\t\t\t\"papayawhip\": \"255,239,213\",\r\n\t\t\t\t\t\"peachpuff\": \"255,218,185\",\r\n\t\t\t\t\t\"peru\": \"205,133,63\",\r\n\t\t\t\t\t\"pink\": \"255,192,203\",\r\n\t\t\t\t\t\"plum\": \"221,160,221\",\r\n\t\t\t\t\t\"powderblue\": \"176,224,230\",\r\n\t\t\t\t\t\"purple\": \"128,0,128\",\r\n\t\t\t\t\t\"red\": \"255,0,0\",\r\n\t\t\t\t\t\"rosybrown\": \"188,143,143\",\r\n\t\t\t\t\t\"royalblue\": \"65,105,225\",\r\n\t\t\t\t\t\"saddlebrown\": \"139,69,19\",\r\n\t\t\t\t\t\"salmon\": \"250,128,114\",\r\n\t\t\t\t\t\"sandybrown\": \"244,164,96\",\r\n\t\t\t\t\t\"seagreen\": \"46,139,87\",\r\n\t\t\t\t\t\"seashell\": \"255,245,238\",\r\n\t\t\t\t\t\"sienna\": \"160,82,45\",\r\n\t\t\t\t\t\"silver\": \"192,192,192\",\r\n\t\t\t\t\t\"skyblue\": \"135,206,235\",\r\n\t\t\t\t\t\"slateblue\": \"106,90,205\",\r\n\t\t\t\t\t\"slategray\": \"112,128,144\",\r\n\t\t\t\t\t\"snow\": \"255,250,250\",\r\n\t\t\t\t\t\"springgreen\": \"0,255,127\",\r\n\t\t\t\t\t\"steelblue\": \"70,130,180\",\r\n\t\t\t\t\t\"tan\": \"210,180,140\",\r\n\t\t\t\t\t\"teal\": \"0,128,128\",\r\n\t\t\t\t\t\"thistle\": \"216,191,216\",\r\n\t\t\t\t\t\"tomato\": \"255,99,71\",\r\n\t\t\t\t\t\"turquoise\": \"64,224,208\",\r\n\t\t\t\t\t\"violet\": \"238,130,238\",\r\n\t\t\t\t\t\"wheat\": \"245,222,179\",\r\n\t\t\t\t\t\"whitesmoke\": \"245,245,245\",\r\n\t\t\t\t\t\"white\": \"255,255,255\",\r\n\t\t\t\t\t\"yellowgreen\": \"154,205,50\",\r\n\t\t\t\t\t\"yellow\": \"255,255,0\"\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t/************\r\n\t\t\t Hooks\r\n\t\t\t ************/\r\n\r\n\t\t\t/* Hooks allow a subproperty (e.g. \"boxShadowBlur\") of a compound-value CSS property\r\n\t\t\t (e.g. \"boxShadow: X Y Blur Spread Color\") to be animated as if it were a discrete property. */\r\n\t\t\t/* Note: Beyond enabling fine-grained property animation, hooking is necessary since Velocity only\r\n\t\t\t tweens properties with single numeric values; unlike CSS transitions, Velocity does not interpolate compound-values. */\r\n\t\t\tHooks: {\r\n\t\t\t\t/********************\r\n\t\t\t\t Registration\r\n\t\t\t\t ********************/\r\n\r\n\t\t\t\t/* Templates are a concise way of indicating which subproperties must be individually registered for each compound-value CSS property. */\r\n\t\t\t\t/* Each template consists of the compound-value's base name, its constituent subproperty names, and those subproperties' default values. */\r\n\t\t\t\ttemplates: {\r\n\t\t\t\t\t\"textShadow\": [\"Color X Y Blur\", \"black 0px 0px 0px\"],\r\n\t\t\t\t\t\"boxShadow\": [\"Color X Y Blur Spread\", \"black 0px 0px 0px 0px\"],\r\n\t\t\t\t\t\"clip\": [\"Top Right Bottom Left\", \"0px 0px 0px 0px\"],\r\n\t\t\t\t\t\"backgroundPosition\": [\"X Y\", \"0% 0%\"],\r\n\t\t\t\t\t\"transformOrigin\": [\"X Y Z\", \"50% 50% 0px\"],\r\n\t\t\t\t\t\"perspectiveOrigin\": [\"X Y\", \"50% 50%\"]\r\n\t\t\t\t},\r\n\t\t\t\t/* A \"registered\" hook is one that has been converted from its template form into a live,\r\n\t\t\t\t tweenable property. It contains data to associate it with its root property. */\r\n\t\t\t\tregistered: {\r\n\t\t\t\t\t/* Note: A registered hook looks like this ==> textShadowBlur: [ \"textShadow\", 3 ],\r\n\t\t\t\t\t which consists of the subproperty's name, the associated root property's name,\r\n\t\t\t\t\t and the subproperty's position in the root's value. */\r\n\t\t\t\t},\r\n\t\t\t\t/* Convert the templates into individual hooks then append them to the registered object above. */\r\n\t\t\t\tregister: function() {\r\n\t\t\t\t\t/* Color hooks registration: Colors are defaulted to white -- as opposed to black -- since colors that are\r\n\t\t\t\t\t currently set to \"transparent\" default to their respective template below when color-animated,\r\n\t\t\t\t\t and white is typically a closer match to transparent than black is. An exception is made for text (\"color\"),\r\n\t\t\t\t\t which is almost always set closer to black than white. */\r\n\t\t\t\t\tfor (var i = 0; i < CSS.Lists.colors.length; i++) {\r\n\t\t\t\t\t\tvar rgbComponents = (CSS.Lists.colors[i] === \"color\") ? \"0 0 0 1\" : \"255 255 255 1\";\r\n\t\t\t\t\t\tCSS.Hooks.templates[CSS.Lists.colors[i]] = [\"Red Green Blue Alpha\", rgbComponents];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar rootProperty,\r\n\t\t\t\t\t\t\thookTemplate,\r\n\t\t\t\t\t\t\thookNames;\r\n\r\n\t\t\t\t\t/* In IE, color values inside compound-value properties are positioned at the end the value instead of at the beginning.\r\n\t\t\t\t\t Thus, we re-arrange the templates accordingly. */\r\n\t\t\t\t\tif (IE) {\r\n\t\t\t\t\t\tfor (rootProperty in CSS.Hooks.templates) {\r\n\t\t\t\t\t\t\tif (!CSS.Hooks.templates.hasOwnProperty(rootProperty)) {\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\thookTemplate = CSS.Hooks.templates[rootProperty];\r\n\t\t\t\t\t\t\thookNames = hookTemplate[0].split(\" \");\r\n\r\n\t\t\t\t\t\t\tvar defaultValues = hookTemplate[1].match(CSS.RegEx.valueSplit);\r\n\r\n\t\t\t\t\t\t\tif (hookNames[0] === \"Color\") {\r\n\t\t\t\t\t\t\t\t/* Reposition both the hook's name and its default value to the end of their respective strings. */\r\n\t\t\t\t\t\t\t\thookNames.push(hookNames.shift());\r\n\t\t\t\t\t\t\t\tdefaultValues.push(defaultValues.shift());\r\n\r\n\t\t\t\t\t\t\t\t/* Replace the existing template for the hook's root property. */\r\n\t\t\t\t\t\t\t\tCSS.Hooks.templates[rootProperty] = [hookNames.join(\" \"), defaultValues.join(\" \")];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* Hook registration. */\r\n\t\t\t\t\tfor (rootProperty in CSS.Hooks.templates) {\r\n\t\t\t\t\t\tif (!CSS.Hooks.templates.hasOwnProperty(rootProperty)) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\thookTemplate = CSS.Hooks.templates[rootProperty];\r\n\t\t\t\t\t\thookNames = hookTemplate[0].split(\" \");\r\n\r\n\t\t\t\t\t\tfor (var j in hookNames) {\r\n\t\t\t\t\t\t\tif (!hookNames.hasOwnProperty(j)) {\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tvar fullHookName = rootProperty + hookNames[j],\r\n\t\t\t\t\t\t\t\t\thookPosition = j;\r\n\r\n\t\t\t\t\t\t\t/* For each hook, register its full name (e.g. textShadowBlur) with its root property (e.g. textShadow)\r\n\t\t\t\t\t\t\t and the hook's position in its template's default value string. */\r\n\t\t\t\t\t\t\tCSS.Hooks.registered[fullHookName] = [rootProperty, hookPosition];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t/*****************************\r\n\t\t\t\t Injection and Extraction\r\n\t\t\t\t *****************************/\r\n\r\n\t\t\t\t/* Look up the root property associated with the hook (e.g. return \"textShadow\" for \"textShadowBlur\"). */\r\n\t\t\t\t/* Since a hook cannot be set directly (the browser won't recognize it), style updating for hooks is routed through the hook's root property. */\r\n\t\t\t\tgetRoot: function(property) {\r\n\t\t\t\t\tvar hookData = CSS.Hooks.registered[property];\r\n\r\n\t\t\t\t\tif (hookData) {\r\n\t\t\t\t\t\treturn hookData[0];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t/* If there was no hook match, return the property name untouched. */\r\n\t\t\t\t\t\treturn property;\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tgetUnit: function(str, start) {\r\n\t\t\t\t\tvar unit = (str.substr(start || 0, 5).match(/^[a-z%]+/) || [])[0] || \"\";\r\n\r\n\t\t\t\t\tif (unit && _inArray(CSS.Lists.units, unit)) {\r\n\t\t\t\t\t\treturn unit;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn \"\";\r\n\t\t\t\t},\r\n\t\t\t\tfixColors: function(str) {\r\n\t\t\t\t\treturn str.replace(/(rgba?\\(\\s*)?(\\b[a-z]+\\b)/g, function($0, $1, $2) {\r\n\t\t\t\t\t\tif (CSS.Lists.colorNames.hasOwnProperty($2)) {\r\n\t\t\t\t\t\t\treturn ($1 ? $1 : \"rgba(\") + CSS.Lists.colorNames[$2] + ($1 ? \"\" : \",1)\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn $1 + $2;\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\t/* Convert any rootPropertyValue, null or otherwise, into a space-delimited list of hook values so that\r\n\t\t\t\t the targeted hook can be injected or extracted at its standard position. */\r\n\t\t\t\tcleanRootPropertyValue: function(rootProperty, rootPropertyValue) {\r\n\t\t\t\t\t/* If the rootPropertyValue is wrapped with \"rgb()\", \"clip()\", etc., remove the wrapping to normalize the value before manipulation. */\r\n\t\t\t\t\tif (CSS.RegEx.valueUnwrap.test(rootPropertyValue)) {\r\n\t\t\t\t\t\trootPropertyValue = rootPropertyValue.match(CSS.RegEx.valueUnwrap)[1];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* If rootPropertyValue is a CSS null-value (from which there's inherently no hook value to extract),\r\n\t\t\t\t\t default to the root's default value as defined in CSS.Hooks.templates. */\r\n\t\t\t\t\t/* Note: CSS null-values include \"none\", \"auto\", and \"transparent\". They must be converted into their\r\n\t\t\t\t\t zero-values (e.g. textShadow: \"none\" ==> textShadow: \"0px 0px 0px black\") for hook manipulation to proceed. */\r\n\t\t\t\t\tif (CSS.Values.isCSSNullValue(rootPropertyValue)) {\r\n\t\t\t\t\t\trootPropertyValue = CSS.Hooks.templates[rootProperty][1];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn rootPropertyValue;\r\n\t\t\t\t},\r\n\t\t\t\t/* Extracted the hook's value from its root property's value. This is used to get the starting value of an animating hook. */\r\n\t\t\t\textractValue: function(fullHookName, rootPropertyValue) {\r\n\t\t\t\t\tvar hookData = CSS.Hooks.registered[fullHookName];\r\n\r\n\t\t\t\t\tif (hookData) {\r\n\t\t\t\t\t\tvar hookRoot = hookData[0],\r\n\t\t\t\t\t\t\t\thookPosition = hookData[1];\r\n\r\n\t\t\t\t\t\trootPropertyValue = CSS.Hooks.cleanRootPropertyValue(hookRoot, rootPropertyValue);\r\n\r\n\t\t\t\t\t\t/* Split rootPropertyValue into its constituent hook values then grab the desired hook at its standard position. */\r\n\t\t\t\t\t\treturn rootPropertyValue.toString().match(CSS.RegEx.valueSplit)[hookPosition];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t/* If the provided fullHookName isn't a registered hook, return the rootPropertyValue that was passed in. */\r\n\t\t\t\t\t\treturn rootPropertyValue;\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t/* Inject the hook's value into its root property's value. This is used to piece back together the root property\r\n\t\t\t\t once Velocity has updated one of its individually hooked values through tweening. */\r\n\t\t\t\tinjectValue: function(fullHookName, hookValue, rootPropertyValue) {\r\n\t\t\t\t\tvar hookData = CSS.Hooks.registered[fullHookName];\r\n\r\n\t\t\t\t\tif (hookData) {\r\n\t\t\t\t\t\tvar hookRoot = hookData[0],\r\n\t\t\t\t\t\t\t\thookPosition = hookData[1],\r\n\t\t\t\t\t\t\t\trootPropertyValueParts,\r\n\t\t\t\t\t\t\t\trootPropertyValueUpdated;\r\n\r\n\t\t\t\t\t\trootPropertyValue = CSS.Hooks.cleanRootPropertyValue(hookRoot, rootPropertyValue);\r\n\r\n\t\t\t\t\t\t/* Split rootPropertyValue into its individual hook values, replace the targeted value with hookValue,\r\n\t\t\t\t\t\t then reconstruct the rootPropertyValue string. */\r\n\t\t\t\t\t\trootPropertyValueParts = rootPropertyValue.toString().match(CSS.RegEx.valueSplit);\r\n\t\t\t\t\t\trootPropertyValueParts[hookPosition] = hookValue;\r\n\t\t\t\t\t\trootPropertyValueUpdated = rootPropertyValueParts.join(\" \");\r\n\r\n\t\t\t\t\t\treturn rootPropertyValueUpdated;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t/* If the provided fullHookName isn't a registered hook, return the rootPropertyValue that was passed in. */\r\n\t\t\t\t\t\treturn rootPropertyValue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t/*******************\r\n\t\t\t Normalizations\r\n\t\t\t *******************/\r\n\r\n\t\t\t/* Normalizations standardize CSS property manipulation by pollyfilling browser-specific implementations (e.g. opacity)\r\n\t\t\t and reformatting special properties (e.g. clip, rgba) to look like standard ones. */\r\n\t\t\tNormalizations: {\r\n\t\t\t\t/* Normalizations are passed a normalization target (either the property's name, its extracted value, or its injected value),\r\n\t\t\t\t the targeted element (which may need to be queried), and the targeted property value. */\r\n\t\t\t\tregistered: {\r\n\t\t\t\t\tclip: function(type, element, propertyValue) {\r\n\t\t\t\t\t\tswitch (type) {\r\n\t\t\t\t\t\t\tcase \"name\":\r\n\t\t\t\t\t\t\t\treturn \"clip\";\r\n\t\t\t\t\t\t\t\t/* Clip needs to be unwrapped and stripped of its commas during extraction. */\r\n\t\t\t\t\t\t\tcase \"extract\":\r\n\t\t\t\t\t\t\t\tvar extracted;\r\n\r\n\t\t\t\t\t\t\t\t/* If Velocity also extracted this value, skip extraction. */\r\n\t\t\t\t\t\t\t\tif (CSS.RegEx.wrappedValueAlreadyExtracted.test(propertyValue)) {\r\n\t\t\t\t\t\t\t\t\textracted = propertyValue;\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t/* Remove the \"rect()\" wrapper. */\r\n\t\t\t\t\t\t\t\t\textracted = propertyValue.toString().match(CSS.RegEx.valueUnwrap);\r\n\r\n\t\t\t\t\t\t\t\t\t/* Strip off commas. */\r\n\t\t\t\t\t\t\t\t\textracted = extracted ? extracted[1].replace(/,(\\s+)?/g, \" \") : propertyValue;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\treturn extracted;\r\n\t\t\t\t\t\t\t\t/* Clip needs to be re-wrapped during injection. */\r\n\t\t\t\t\t\t\tcase \"inject\":\r\n\t\t\t\t\t\t\t\treturn \"rect(\" + propertyValue + \")\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tblur: function(type, element, propertyValue) {\r\n\t\t\t\t\t\tswitch (type) {\r\n\t\t\t\t\t\t\tcase \"name\":\r\n\t\t\t\t\t\t\t\treturn Velocity.State.isFirefox ? \"filter\" : \"-webkit-filter\";\r\n\t\t\t\t\t\t\tcase \"extract\":\r\n\t\t\t\t\t\t\t\tvar extracted = parseFloat(propertyValue);\r\n\r\n\t\t\t\t\t\t\t\t/* If extracted is NaN, meaning the value isn't already extracted. */\r\n\t\t\t\t\t\t\t\tif (!(extracted || extracted === 0)) {\r\n\t\t\t\t\t\t\t\t\tvar blurComponent = propertyValue.toString().match(/blur\\(([0-9]+[A-z]+)\\)/i);\r\n\r\n\t\t\t\t\t\t\t\t\t/* If the filter string had a blur component, return just the blur value and unit type. */\r\n\t\t\t\t\t\t\t\t\tif (blurComponent) {\r\n\t\t\t\t\t\t\t\t\t\textracted = blurComponent[1];\r\n\t\t\t\t\t\t\t\t\t\t/* If the component doesn't exist, default blur to 0. */\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\textracted = 0;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\treturn extracted;\r\n\t\t\t\t\t\t\t\t/* Blur needs to be re-wrapped during injection. */\r\n\t\t\t\t\t\t\tcase \"inject\":\r\n\t\t\t\t\t\t\t\t/* For the blur effect to be fully de-applied, it needs to be set to \"none\" instead of 0. */\r\n\t\t\t\t\t\t\t\tif (!parseFloat(propertyValue)) {\r\n\t\t\t\t\t\t\t\t\treturn \"none\";\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\treturn \"blur(\" + propertyValue + \")\";\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t/* <=IE8 do not support the standard opacity property. They use filter:alpha(opacity=INT) instead. */\r\n\t\t\t\t\topacity: function(type, element, propertyValue) {\r\n\t\t\t\t\t\tif (IE <= 8) {\r\n\t\t\t\t\t\t\tswitch (type) {\r\n\t\t\t\t\t\t\t\tcase \"name\":\r\n\t\t\t\t\t\t\t\t\treturn \"filter\";\r\n\t\t\t\t\t\t\t\tcase \"extract\":\r\n\t\t\t\t\t\t\t\t\t/* <=IE8 return a \"filter\" value of \"alpha(opacity=\\d{1,3})\".\r\n\t\t\t\t\t\t\t\t\t Extract the value and convert it to a decimal value to match the standard CSS opacity property's formatting. */\r\n\t\t\t\t\t\t\t\t\tvar extracted = propertyValue.toString().match(/alpha\\(opacity=(.*)\\)/i);\r\n\r\n\t\t\t\t\t\t\t\t\tif (extracted) {\r\n\t\t\t\t\t\t\t\t\t\t/* Convert to decimal value. */\r\n\t\t\t\t\t\t\t\t\t\tpropertyValue = extracted[1] / 100;\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t/* When extracting opacity, default to 1 since a null value means opacity hasn't been set. */\r\n\t\t\t\t\t\t\t\t\t\tpropertyValue = 1;\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturn propertyValue;\r\n\t\t\t\t\t\t\t\tcase \"inject\":\r\n\t\t\t\t\t\t\t\t\t/* Opacified elements are required to have their zoom property set to a non-zero value. */\r\n\t\t\t\t\t\t\t\t\telement.style.zoom = 1;\r\n\r\n\t\t\t\t\t\t\t\t\t/* Setting the filter property on elements with certain font property combinations can result in a\r\n\t\t\t\t\t\t\t\t\t highly unappealing ultra-bolding effect. There's no way to remedy this throughout a tween, but dropping the\r\n\t\t\t\t\t\t\t\t\t value altogether (when opacity hits 1) at leasts ensures that the glitch is gone post-tweening. */\r\n\t\t\t\t\t\t\t\t\tif (parseFloat(propertyValue) >= 1) {\r\n\t\t\t\t\t\t\t\t\t\treturn \"\";\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t/* As per the filter property's spec, convert the decimal value to a whole number and wrap the value. */\r\n\t\t\t\t\t\t\t\t\t\treturn \"alpha(opacity=\" + parseInt(parseFloat(propertyValue) * 100, 10) + \")\";\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t/* With all other browsers, normalization is not required; return the same values that were passed in. */\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tswitch (type) {\r\n\t\t\t\t\t\t\t\tcase \"name\":\r\n\t\t\t\t\t\t\t\t\treturn \"opacity\";\r\n\t\t\t\t\t\t\t\tcase \"extract\":\r\n\t\t\t\t\t\t\t\t\treturn propertyValue;\r\n\t\t\t\t\t\t\t\tcase \"inject\":\r\n\t\t\t\t\t\t\t\t\treturn propertyValue;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t/*****************************\r\n\t\t\t\t Batched Registrations\r\n\t\t\t\t *****************************/\r\n\r\n\t\t\t\t/* Note: Batched normalizations extend the CSS.Normalizations.registered object. */\r\n\t\t\t\tregister: function() {\r\n\r\n\t\t\t\t\t/*****************\r\n\t\t\t\t\t Transforms\r\n\t\t\t\t\t *****************/\r\n\r\n\t\t\t\t\t/* Transforms are the subproperties contained by the CSS \"transform\" property. Transforms must undergo normalization\r\n\t\t\t\t\t so that they can be referenced in a properties map by their individual names. */\r\n\t\t\t\t\t/* Note: When transforms are \"set\", they are actually assigned to a per-element transformCache. When all transform\r\n\t\t\t\t\t setting is complete complete, CSS.flushTransformCache() must be manually called to flush the values to the DOM.\r\n\t\t\t\t\t Transform setting is batched in this way to improve performance: the transform style only needs to be updated\r\n\t\t\t\t\t once when multiple transform subproperties are being animated simultaneously. */\r\n\t\t\t\t\t/* Note: IE9 and Android Gingerbread have support for 2D -- but not 3D -- transforms. Since animating unsupported\r\n\t\t\t\t\t transform properties results in the browser ignoring the *entire* transform string, we prevent these 3D values\r\n\t\t\t\t\t from being normalized for these browsers so that tweening skips these properties altogether\r\n\t\t\t\t\t (since it will ignore them as being unsupported by the browser.) */\r\n\t\t\t\t\tif ((!IE || IE > 9) && !Velocity.State.isGingerbread) {\r\n\t\t\t\t\t\t/* Note: Since the standalone CSS \"perspective\" property and the CSS transform \"perspective\" subproperty\r\n\t\t\t\t\t\t share the same name, the latter is given a unique token within Velocity: \"transformPerspective\". */\r\n\t\t\t\t\t\tCSS.Lists.transformsBase = CSS.Lists.transformsBase.concat(CSS.Lists.transforms3D);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfor (var i = 0; i < CSS.Lists.transformsBase.length; i++) {\r\n\t\t\t\t\t\t/* Wrap the dynamically generated normalization function in a new scope so that transformName's value is\r\n\t\t\t\t\t\t paired with its respective function. (Otherwise, all functions would take the final for loop's transformName.) */\r\n\t\t\t\t\t\t(function() {\r\n\t\t\t\t\t\t\tvar transformName = CSS.Lists.transformsBase[i];\r\n\r\n\t\t\t\t\t\t\tCSS.Normalizations.registered[transformName] = function(type, element, propertyValue) {\r\n\t\t\t\t\t\t\t\tswitch (type) {\r\n\t\t\t\t\t\t\t\t\t/* The normalized property name is the parent \"transform\" property -- the property that is actually set in CSS. */\r\n\t\t\t\t\t\t\t\t\tcase \"name\":\r\n\t\t\t\t\t\t\t\t\t\treturn \"transform\";\r\n\t\t\t\t\t\t\t\t\t\t/* Transform values are cached onto a per-element transformCache object. */\r\n\t\t\t\t\t\t\t\t\tcase \"extract\":\r\n\t\t\t\t\t\t\t\t\t\t/* If this transform has yet to be assigned a value, return its null value. */\r\n\t\t\t\t\t\t\t\t\t\tif (Data(element) === undefined || Data(element).transformCache[transformName] === undefined) {\r\n\t\t\t\t\t\t\t\t\t\t\t/* Scale CSS.Lists.transformsBase default to 1 whereas all other transform properties default to 0. */\r\n\t\t\t\t\t\t\t\t\t\t\treturn /^scale/i.test(transformName) ? 1 : 0;\r\n\t\t\t\t\t\t\t\t\t\t\t/* When transform values are set, they are wrapped in parentheses as per the CSS spec.\r\n\t\t\t\t\t\t\t\t\t\t\t Thus, when extracting their values (for tween calculations), we strip off the parentheses. */\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\treturn Data(element).transformCache[transformName].replace(/[()]/g, \"\");\r\n\t\t\t\t\t\t\t\t\tcase \"inject\":\r\n\t\t\t\t\t\t\t\t\t\tvar invalid = false;\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* If an individual transform property contains an unsupported unit type, the browser ignores the *entire* transform property.\r\n\t\t\t\t\t\t\t\t\t\t Thus, protect users from themselves by skipping setting for transform values supplied with invalid unit types. */\r\n\t\t\t\t\t\t\t\t\t\t/* Switch on the base transform type; ignore the axis by removing the last letter from the transform's name. */\r\n\t\t\t\t\t\t\t\t\t\tswitch (transformName.substr(0, transformName.length - 1)) {\r\n\t\t\t\t\t\t\t\t\t\t\t/* Whitelist unit types for each transform. */\r\n\t\t\t\t\t\t\t\t\t\t\tcase \"translate\":\r\n\t\t\t\t\t\t\t\t\t\t\t\tinvalid = !/(%|px|em|rem|vw|vh|\\d)$/i.test(propertyValue);\r\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t\t/* Since an axis-free \"scale\" property is supported as well, a little hack is used here to detect it by chopping off its last letter. */\r\n\t\t\t\t\t\t\t\t\t\t\tcase \"scal\":\r\n\t\t\t\t\t\t\t\t\t\t\tcase \"scale\":\r\n\t\t\t\t\t\t\t\t\t\t\t\t/* Chrome on Android has a bug in which scaled elements blur if their initial scale\r\n\t\t\t\t\t\t\t\t\t\t\t\t value is below 1 (which can happen with forcefeeding). Thus, we detect a yet-unset scale property\r\n\t\t\t\t\t\t\t\t\t\t\t\t and ensure that its first value is always 1. More info: http://stackoverflow.com/questions/10417890/css3-animations-with-transform-causes-blurred-elements-on-webkit/10417962#10417962 */\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (Velocity.State.isAndroid && Data(element).transformCache[transformName] === undefined && propertyValue < 1) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tpropertyValue = 1;\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\tinvalid = !/(\\d)$/i.test(propertyValue);\r\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\tcase \"skew\":\r\n\t\t\t\t\t\t\t\t\t\t\t\tinvalid = !/(deg|\\d)$/i.test(propertyValue);\r\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\tcase \"rotate\":\r\n\t\t\t\t\t\t\t\t\t\t\t\tinvalid = !/(deg|\\d)$/i.test(propertyValue);\r\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (!invalid) {\r\n\t\t\t\t\t\t\t\t\t\t\t/* As per the CSS spec, wrap the value in parentheses. */\r\n\t\t\t\t\t\t\t\t\t\t\tData(element).transformCache[transformName] = \"(\" + propertyValue + \")\";\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* Although the value is set on the transformCache object, return the newly-updated value for the calling code to process as normal. */\r\n\t\t\t\t\t\t\t\t\t\treturn Data(element).transformCache[transformName];\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t})();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/*************\r\n\t\t\t\t\t Colors\r\n\t\t\t\t\t *************/\r\n\r\n\t\t\t\t\t/* Since Velocity only animates a single numeric value per property, color animation is achieved by hooking the individual RGBA components of CSS color properties.\r\n\t\t\t\t\t Accordingly, color values must be normalized (e.g. \"#ff0000\", \"red\", and \"rgb(255, 0, 0)\" ==> \"255 0 0 1\") so that their components can be injected/extracted by CSS.Hooks logic. */\r\n\t\t\t\t\tfor (var j = 0; j < CSS.Lists.colors.length; j++) {\r\n\t\t\t\t\t\t/* Wrap the dynamically generated normalization function in a new scope so that colorName's value is paired with its respective function.\r\n\t\t\t\t\t\t (Otherwise, all functions would take the final for loop's colorName.) */\r\n\t\t\t\t\t\t(function() {\r\n\t\t\t\t\t\t\tvar colorName = CSS.Lists.colors[j];\r\n\r\n\t\t\t\t\t\t\t/* Note: In IE<=8, which support rgb but not rgba, color properties are reverted to rgb by stripping off the alpha component. */\r\n\t\t\t\t\t\t\tCSS.Normalizations.registered[colorName] = function(type, element, propertyValue) {\r\n\t\t\t\t\t\t\t\tswitch (type) {\r\n\t\t\t\t\t\t\t\t\tcase \"name\":\r\n\t\t\t\t\t\t\t\t\t\treturn colorName;\r\n\t\t\t\t\t\t\t\t\t\t/* Convert all color values into the rgb format. (Old IE can return hex values and color names instead of rgb/rgba.) */\r\n\t\t\t\t\t\t\t\t\tcase \"extract\":\r\n\t\t\t\t\t\t\t\t\t\tvar extracted;\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* If the color is already in its hookable form (e.g. \"255 255 255 1\") due to having been previously extracted, skip extraction. */\r\n\t\t\t\t\t\t\t\t\t\tif (CSS.RegEx.wrappedValueAlreadyExtracted.test(propertyValue)) {\r\n\t\t\t\t\t\t\t\t\t\t\textracted = propertyValue;\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\tvar converted,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolorNames = {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tblack: \"rgb(0, 0, 0)\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tblue: \"rgb(0, 0, 255)\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgray: \"rgb(128, 128, 128)\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgreen: \"rgb(0, 128, 0)\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tred: \"rgb(255, 0, 0)\",\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\twhite: \"rgb(255, 255, 255)\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t/* Convert color names to rgb. */\r\n\t\t\t\t\t\t\t\t\t\t\tif (/^[A-z]+$/i.test(propertyValue)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (colorNames[propertyValue] !== undefined) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconverted = colorNames[propertyValue];\r\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t/* If an unmatched color name is provided, default to black. */\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tconverted = colorNames.black;\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t/* Convert hex values to rgb. */\r\n\t\t\t\t\t\t\t\t\t\t\t} else if (CSS.RegEx.isHex.test(propertyValue)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tconverted = \"rgb(\" + CSS.Values.hexToRgb(propertyValue).join(\" \") + \")\";\r\n\t\t\t\t\t\t\t\t\t\t\t\t/* If the provided color doesn't match any of the accepted color formats, default to black. */\r\n\t\t\t\t\t\t\t\t\t\t\t} else if (!(/^rgba?\\(/i.test(propertyValue))) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tconverted = colorNames.black;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t/* Remove the surrounding \"rgb/rgba()\" string then replace commas with spaces and strip\r\n\t\t\t\t\t\t\t\t\t\t\t repeated spaces (in case the value included spaces to begin with). */\r\n\t\t\t\t\t\t\t\t\t\t\textracted = (converted || propertyValue).toString().match(CSS.RegEx.valueUnwrap)[1].replace(/,(\\s+)?/g, \" \");\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* So long as this isn't <=IE8, add a fourth (alpha) component if it's missing and default it to 1 (visible). */\r\n\t\t\t\t\t\t\t\t\t\tif ((!IE || IE > 8) && extracted.split(\" \").length === 3) {\r\n\t\t\t\t\t\t\t\t\t\t\textracted += \" 1\";\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\treturn extracted;\r\n\t\t\t\t\t\t\t\t\tcase \"inject\":\r\n\t\t\t\t\t\t\t\t\t\t/* If we have a pattern then it might already have the right values */\r\n\t\t\t\t\t\t\t\t\t\tif (/^rgb/.test(propertyValue)) {\r\n\t\t\t\t\t\t\t\t\t\t\treturn propertyValue;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* If this is IE<=8 and an alpha component exists, strip it off. */\r\n\t\t\t\t\t\t\t\t\t\tif (IE <= 8) {\r\n\t\t\t\t\t\t\t\t\t\t\tif (propertyValue.split(\" \").length === 4) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tpropertyValue = propertyValue.split(/\\s+/).slice(0, 3).join(\" \");\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t/* Otherwise, add a fourth (alpha) component if it's missing and default it to 1 (visible). */\r\n\t\t\t\t\t\t\t\t\t\t} else if (propertyValue.split(\" \").length === 3) {\r\n\t\t\t\t\t\t\t\t\t\t\tpropertyValue += \" 1\";\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* Re-insert the browser-appropriate wrapper(\"rgb/rgba()\"), insert commas, and strip off decimal units\r\n\t\t\t\t\t\t\t\t\t\t on all values but the fourth (R, G, and B only accept whole numbers). */\r\n\t\t\t\t\t\t\t\t\t\treturn (IE <= 8 ? \"rgb\" : \"rgba\") + \"(\" + propertyValue.replace(/\\s+/g, \",\").replace(/\\.(\\d)+(?=,)/g, \"\") + \")\";\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t})();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/**************\r\n\t\t\t\t\t Dimensions\r\n\t\t\t\t\t **************/\r\n\t\t\t\t\tfunction augmentDimension(name, element, wantInner) {\r\n\t\t\t\t\t\tvar isBorderBox = CSS.getPropertyValue(element, \"boxSizing\").toString().toLowerCase() === \"border-box\";\r\n\r\n\t\t\t\t\t\tif (isBorderBox === (wantInner || false)) {\r\n\t\t\t\t\t\t\t/* in box-sizing mode, the CSS width / height accessors already give the outerWidth / outerHeight. */\r\n\t\t\t\t\t\t\tvar i,\r\n\t\t\t\t\t\t\t\t\tvalue,\r\n\t\t\t\t\t\t\t\t\taugment = 0,\r\n\t\t\t\t\t\t\t\t\tsides = name === \"width\" ? [\"Left\", \"Right\"] : [\"Top\", \"Bottom\"],\r\n\t\t\t\t\t\t\t\t\tfields = [\"padding\" + sides[0], \"padding\" + sides[1], \"border\" + sides[0] + \"Width\", \"border\" + sides[1] + \"Width\"];\r\n\r\n\t\t\t\t\t\t\tfor (i = 0; i < fields.length; i++) {\r\n\t\t\t\t\t\t\t\tvalue = parseFloat(CSS.getPropertyValue(element, fields[i]));\r\n\t\t\t\t\t\t\t\tif (!isNaN(value)) {\r\n\t\t\t\t\t\t\t\t\taugment += value;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn wantInner ? -augment : augment;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfunction getDimension(name, wantInner) {\r\n\t\t\t\t\t\treturn function(type, element, propertyValue) {\r\n\t\t\t\t\t\t\tswitch (type) {\r\n\t\t\t\t\t\t\t\tcase \"name\":\r\n\t\t\t\t\t\t\t\t\treturn name;\r\n\t\t\t\t\t\t\t\tcase \"extract\":\r\n\t\t\t\t\t\t\t\t\treturn parseFloat(propertyValue) + augmentDimension(name, element, wantInner);\r\n\t\t\t\t\t\t\t\tcase \"inject\":\r\n\t\t\t\t\t\t\t\t\treturn (parseFloat(propertyValue) - augmentDimension(name, element, wantInner)) + \"px\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t\tCSS.Normalizations.registered.innerWidth = getDimension(\"width\", true);\r\n\t\t\t\t\tCSS.Normalizations.registered.innerHeight = getDimension(\"height\", true);\r\n\t\t\t\t\tCSS.Normalizations.registered.outerWidth = getDimension(\"width\");\r\n\t\t\t\t\tCSS.Normalizations.registered.outerHeight = getDimension(\"height\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t/************************\r\n\t\t\t CSS Property Names\r\n\t\t\t ************************/\r\n\r\n\t\t\tNames: {\r\n\t\t\t\t/* Camelcase a property name into its JavaScript notation (e.g. \"background-color\" ==> \"backgroundColor\").\r\n\t\t\t\t Camelcasing is used to normalize property names between and across calls. */\r\n\t\t\t\tcamelCase: function(property) {\r\n\t\t\t\t\treturn property.replace(/-(\\w)/g, function(match, subMatch) {\r\n\t\t\t\t\t\treturn subMatch.toUpperCase();\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\t/* For SVG elements, some properties (namely, dimensional ones) are GET/SET via the element's HTML attributes (instead of via CSS styles). */\r\n\t\t\t\tSVGAttribute: function(property) {\r\n\t\t\t\t\tvar SVGAttributes = \"width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2\";\r\n\r\n\t\t\t\t\t/* Certain browsers require an SVG transform to be applied as an attribute. (Otherwise, application via CSS is preferable due to 3D support.) */\r\n\t\t\t\t\tif (IE || (Velocity.State.isAndroid && !Velocity.State.isChrome)) {\r\n\t\t\t\t\t\tSVGAttributes += \"|transform\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn new RegExp(\"^(\" + SVGAttributes + \")$\", \"i\").test(property);\r\n\t\t\t\t},\r\n\t\t\t\t/* Determine whether a property should be set with a vendor prefix. */\r\n\t\t\t\t/* If a prefixed version of the property exists, return it. Otherwise, return the original property name.\r\n\t\t\t\t If the property is not at all supported by the browser, return a false flag. */\r\n\t\t\t\tprefixCheck: function(property) {\r\n\t\t\t\t\t/* If this property has already been checked, return the cached value. */\r\n\t\t\t\t\tif (Velocity.State.prefixMatches[property]) {\r\n\t\t\t\t\t\treturn [Velocity.State.prefixMatches[property], true];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar vendors = [\"\", \"Webkit\", \"Moz\", \"ms\", \"O\"];\r\n\r\n\t\t\t\t\t\tfor (var i = 0, vendorsLength = vendors.length; i < vendorsLength; i++) {\r\n\t\t\t\t\t\t\tvar propertyPrefixed;\r\n\r\n\t\t\t\t\t\t\tif (i === 0) {\r\n\t\t\t\t\t\t\t\tpropertyPrefixed = property;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t/* Capitalize the first letter of the property to conform to JavaScript vendor prefix notation (e.g. webkitFilter). */\r\n\t\t\t\t\t\t\t\tpropertyPrefixed = vendors[i] + property.replace(/^\\w/, function(match) {\r\n\t\t\t\t\t\t\t\t\treturn match.toUpperCase();\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* Check if the browser supports this property as prefixed. */\r\n\t\t\t\t\t\t\tif (Type.isString(Velocity.State.prefixElement.style[propertyPrefixed])) {\r\n\t\t\t\t\t\t\t\t/* Cache the match. */\r\n\t\t\t\t\t\t\t\tVelocity.State.prefixMatches[property] = propertyPrefixed;\r\n\r\n\t\t\t\t\t\t\t\treturn [propertyPrefixed, true];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* If the browser doesn't support this property in any form, include a false flag so that the caller can decide how to proceed. */\r\n\t\t\t\t\t\treturn [property, false];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t/************************\r\n\t\t\t CSS Property Values\r\n\t\t\t ************************/\r\n\r\n\t\t\tValues: {\r\n\t\t\t\t/* Hex to RGB conversion. Copyright Tim Down: http://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb */\r\n\t\t\t\thexToRgb: function(hex) {\r\n\t\t\t\t\tvar shortformRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i,\r\n\t\t\t\t\t\t\tlongformRegex = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i,\r\n\t\t\t\t\t\t\trgbParts;\r\n\r\n\t\t\t\t\thex = hex.replace(shortformRegex, function(m, r, g, b) {\r\n\t\t\t\t\t\treturn r + r + g + g + b + b;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\trgbParts = longformRegex.exec(hex);\r\n\r\n\t\t\t\t\treturn rgbParts ? [parseInt(rgbParts[1], 16), parseInt(rgbParts[2], 16), parseInt(rgbParts[3], 16)] : [0, 0, 0];\r\n\t\t\t\t},\r\n\t\t\t\tisCSSNullValue: function(value) {\r\n\t\t\t\t\t/* The browser defaults CSS values that have not been set to either 0 or one of several possible null-value strings.\r\n\t\t\t\t\t Thus, we check for both falsiness and these special strings. */\r\n\t\t\t\t\t/* Null-value checking is performed to default the special strings to 0 (for the sake of tweening) or their hook\r\n\t\t\t\t\t templates as defined as CSS.Hooks (for the sake of hook injection/extraction). */\r\n\t\t\t\t\t/* Note: Chrome returns \"rgba(0, 0, 0, 0)\" for an undefined color whereas IE returns \"transparent\". */\r\n\t\t\t\t\treturn (!value || /^(none|auto|transparent|(rgba\\(0, ?0, ?0, ?0\\)))$/i.test(value));\r\n\t\t\t\t},\r\n\t\t\t\t/* Retrieve a property's default unit type. Used for assigning a unit type when one is not supplied by the user. */\r\n\t\t\t\tgetUnitType: function(property) {\r\n\t\t\t\t\tif (/^(rotate|skew)/i.test(property)) {\r\n\t\t\t\t\t\treturn \"deg\";\r\n\t\t\t\t\t} else if (/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(property)) {\r\n\t\t\t\t\t\t/* The above properties are unitless. */\r\n\t\t\t\t\t\treturn \"\";\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t/* Default to px for all other properties. */\r\n\t\t\t\t\t\treturn \"px\";\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t/* HTML elements default to an associated display type when they're not set to display:none. */\r\n\t\t\t\t/* Note: This function is used for correctly setting the non-\"none\" display value in certain Velocity redirects, such as fadeIn/Out. */\r\n\t\t\t\tgetDisplayType: function(element) {\r\n\t\t\t\t\tvar tagName = element && element.tagName.toString().toLowerCase();\r\n\r\n\t\t\t\t\tif (/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(tagName)) {\r\n\t\t\t\t\t\treturn \"inline\";\r\n\t\t\t\t\t} else if (/^(li)$/i.test(tagName)) {\r\n\t\t\t\t\t\treturn \"list-item\";\r\n\t\t\t\t\t} else if (/^(tr)$/i.test(tagName)) {\r\n\t\t\t\t\t\treturn \"table-row\";\r\n\t\t\t\t\t} else if (/^(table)$/i.test(tagName)) {\r\n\t\t\t\t\t\treturn \"table\";\r\n\t\t\t\t\t} else if (/^(tbody)$/i.test(tagName)) {\r\n\t\t\t\t\t\treturn \"table-row-group\";\r\n\t\t\t\t\t\t/* Default to \"block\" when no match is found. */\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn \"block\";\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t/* The class add/remove functions are used to temporarily apply a \"velocity-animating\" class to elements while they're animating. */\r\n\t\t\t\taddClass: function(element, className) {\r\n\t\t\t\t\tif (element) {\r\n\t\t\t\t\t\tif (element.classList) {\r\n\t\t\t\t\t\t\telement.classList.add(className);\r\n\t\t\t\t\t\t} else if (Type.isString(element.className)) {\r\n\t\t\t\t\t\t\t// Element.className is around 15% faster then set/getAttribute\r\n\t\t\t\t\t\t\telement.className += (element.className.length ? \" \" : \"\") + className;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// Work around for IE strict mode animating SVG - and anything else that doesn't behave correctly - the same way jQuery does it\r\n\t\t\t\t\t\t\tvar currentClass = element.getAttribute(IE <= 7 ? \"className\" : \"class\") || \"\";\r\n\r\n\t\t\t\t\t\t\telement.setAttribute(\"class\", currentClass + (currentClass ? \" \" : \"\") + className);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tremoveClass: function(element, className) {\r\n\t\t\t\t\tif (element) {\r\n\t\t\t\t\t\tif (element.classList) {\r\n\t\t\t\t\t\t\telement.classList.remove(className);\r\n\t\t\t\t\t\t} else if (Type.isString(element.className)) {\r\n\t\t\t\t\t\t\t// Element.className is around 15% faster then set/getAttribute\r\n\t\t\t\t\t\t\t// TODO: Need some jsperf tests on performance - can we get rid of the regex and maybe use split / array manipulation?\r\n\t\t\t\t\t\t\telement.className = element.className.toString().replace(new RegExp(\"(^|\\\\s)\" + className.split(\" \").join(\"|\") + \"(\\\\s|$)\", \"gi\"), \" \");\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// Work around for IE strict mode animating SVG - and anything else that doesn't behave correctly - the same way jQuery does it\r\n\t\t\t\t\t\t\tvar currentClass = element.getAttribute(IE <= 7 ? \"className\" : \"class\") || \"\";\r\n\r\n\t\t\t\t\t\t\telement.setAttribute(\"class\", currentClass.replace(new RegExp(\"(^|\\s)\" + className.split(\" \").join(\"|\") + \"(\\s|$)\", \"gi\"), \" \"));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t/****************************\r\n\t\t\t Style Getting & Setting\r\n\t\t\t ****************************/\r\n\r\n\t\t\t/* The singular getPropertyValue, which routes the logic for all normalizations, hooks, and standard CSS properties. */\r\n\t\t\tgetPropertyValue: function(element, property, rootPropertyValue, forceStyleLookup) {\r\n\t\t\t\t/* Get an element's computed property value. */\r\n\t\t\t\t/* Note: Retrieving the value of a CSS property cannot simply be performed by checking an element's\r\n\t\t\t\t style attribute (which only reflects user-defined values). Instead, the browser must be queried for a property's\r\n\t\t\t\t *computed* value. You can read more about getComputedStyle here: https://developer.mozilla.org/en/docs/Web/API/window.getComputedStyle */\r\n\t\t\t\tfunction computePropertyValue(element, property) {\r\n\t\t\t\t\t/* When box-sizing isn't set to border-box, height and width style values are incorrectly computed when an\r\n\t\t\t\t\t element's scrollbars are visible (which expands the element's dimensions). Thus, we defer to the more accurate\r\n\t\t\t\t\t offsetHeight/Width property, which includes the total dimensions for interior, border, padding, and scrollbar.\r\n\t\t\t\t\t We subtract border and padding to get the sum of interior + scrollbar. */\r\n\t\t\t\t\tvar computedValue = 0;\r\n\r\n\t\t\t\t\t/* IE<=8 doesn't support window.getComputedStyle, thus we defer to jQuery, which has an extensive array\r\n\t\t\t\t\t of hacks to accurately retrieve IE8 property values. Re-implementing that logic here is not worth bloating the\r\n\t\t\t\t\t codebase for a dying browser. The performance repercussions of using jQuery here are minimal since\r\n\t\t\t\t\t Velocity is optimized to rarely (and sometimes never) query the DOM. Further, the $.css() codepath isn't that slow. */\r\n\t\t\t\t\tif (IE <= 8) {\r\n\t\t\t\t\t\tcomputedValue = $.css(element, property); /* GET */\r\n\t\t\t\t\t\t/* All other browsers support getComputedStyle. The returned live object reference is cached onto its\r\n\t\t\t\t\t\t associated element so that it does not need to be refetched upon every GET. */\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t/* Browsers do not return height and width values for elements that are set to display:\"none\". Thus, we temporarily\r\n\t\t\t\t\t\t toggle display to the element type's default value. */\r\n\t\t\t\t\t\tvar toggleDisplay = false;\r\n\r\n\t\t\t\t\t\tif (/^(width|height)$/.test(property) && CSS.getPropertyValue(element, \"display\") === 0) {\r\n\t\t\t\t\t\t\ttoggleDisplay = true;\r\n\t\t\t\t\t\t\tCSS.setPropertyValue(element, \"display\", CSS.Values.getDisplayType(element));\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tvar revertDisplay = function() {\r\n\t\t\t\t\t\t\tif (toggleDisplay) {\r\n\t\t\t\t\t\t\t\tCSS.setPropertyValue(element, \"display\", \"none\");\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tif (!forceStyleLookup) {\r\n\t\t\t\t\t\t\tif (property === \"height\" && CSS.getPropertyValue(element, \"boxSizing\").toString().toLowerCase() !== \"border-box\") {\r\n\t\t\t\t\t\t\t\tvar contentBoxHeight = element.offsetHeight - (parseFloat(CSS.getPropertyValue(element, \"borderTopWidth\")) || 0) - (parseFloat(CSS.getPropertyValue(element, \"borderBottomWidth\")) || 0) - (parseFloat(CSS.getPropertyValue(element, \"paddingTop\")) || 0) - (parseFloat(CSS.getPropertyValue(element, \"paddingBottom\")) || 0);\r\n\t\t\t\t\t\t\t\trevertDisplay();\r\n\r\n\t\t\t\t\t\t\t\treturn contentBoxHeight;\r\n\t\t\t\t\t\t\t} else if (property === \"width\" && CSS.getPropertyValue(element, \"boxSizing\").toString().toLowerCase() !== \"border-box\") {\r\n\t\t\t\t\t\t\t\tvar contentBoxWidth = element.offsetWidth - (parseFloat(CSS.getPropertyValue(element, \"borderLeftWidth\")) || 0) - (parseFloat(CSS.getPropertyValue(element, \"borderRightWidth\")) || 0) - (parseFloat(CSS.getPropertyValue(element, \"paddingLeft\")) || 0) - (parseFloat(CSS.getPropertyValue(element, \"paddingRight\")) || 0);\r\n\t\t\t\t\t\t\t\trevertDisplay();\r\n\r\n\t\t\t\t\t\t\t\treturn contentBoxWidth;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tvar computedStyle;\r\n\r\n\t\t\t\t\t\t/* For elements that Velocity hasn't been called on directly (e.g. when Velocity queries the DOM on behalf\r\n\t\t\t\t\t\t of a parent of an element its animating), perform a direct getComputedStyle lookup since the object isn't cached. */\r\n\t\t\t\t\t\tif (Data(element) === undefined) {\r\n\t\t\t\t\t\t\tcomputedStyle = window.getComputedStyle(element, null); /* GET */\r\n\t\t\t\t\t\t\t/* If the computedStyle object has yet to be cached, do so now. */\r\n\t\t\t\t\t\t} else if (!Data(element).computedStyle) {\r\n\t\t\t\t\t\t\tcomputedStyle = Data(element).computedStyle = window.getComputedStyle(element, null); /* GET */\r\n\t\t\t\t\t\t\t/* If computedStyle is cached, use it. */\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tcomputedStyle = Data(element).computedStyle;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* IE and Firefox do not return a value for the generic borderColor -- they only return individual values for each border side's color.\r\n\t\t\t\t\t\t Also, in all browsers, when border colors aren't all the same, a compound value is returned that Velocity isn't setup to parse.\r\n\t\t\t\t\t\t So, as a polyfill for querying individual border side colors, we just return the top border's color and animate all borders from that value. */\r\n\t\t\t\t\t\tif (property === \"borderColor\") {\r\n\t\t\t\t\t\t\tproperty = \"borderTopColor\";\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* IE9 has a bug in which the \"filter\" property must be accessed from computedStyle using the getPropertyValue method\r\n\t\t\t\t\t\t instead of a direct property lookup. The getPropertyValue method is slower than a direct lookup, which is why we avoid it by default. */\r\n\t\t\t\t\t\tif (IE === 9 && property === \"filter\") {\r\n\t\t\t\t\t\t\tcomputedValue = computedStyle.getPropertyValue(property); /* GET */\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tcomputedValue = computedStyle[property];\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Fall back to the property's style value (if defined) when computedValue returns nothing,\r\n\t\t\t\t\t\t which can happen when the element hasn't been painted. */\r\n\t\t\t\t\t\tif (computedValue === \"\" || computedValue === null) {\r\n\t\t\t\t\t\t\tcomputedValue = element.style[property];\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trevertDisplay();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* For top, right, bottom, and left (TRBL) values that are set to \"auto\" on elements of \"fixed\" or \"absolute\" position,\r\n\t\t\t\t\t defer to jQuery for converting \"auto\" to a numeric value. (For elements with a \"static\" or \"relative\" position, \"auto\" has the same\r\n\t\t\t\t\t effect as being set to 0, so no conversion is necessary.) */\r\n\t\t\t\t\t/* An example of why numeric conversion is necessary: When an element with \"position:absolute\" has an untouched \"left\"\r\n\t\t\t\t\t property, which reverts to \"auto\", left's value is 0 relative to its parent element, but is often non-zero relative\r\n\t\t\t\t\t to its *containing* (not parent) element, which is the nearest \"position:relative\" ancestor or the viewport (and always the viewport in the case of \"position:fixed\"). */\r\n\t\t\t\t\tif (computedValue === \"auto\" && /^(top|right|bottom|left)$/i.test(property)) {\r\n\t\t\t\t\t\tvar position = computePropertyValue(element, \"position\"); /* GET */\r\n\r\n\t\t\t\t\t\t/* For absolute positioning, jQuery's $.position() only returns values for top and left;\r\n\t\t\t\t\t\t right and bottom will have their \"auto\" value reverted to 0. */\r\n\t\t\t\t\t\t/* Note: A jQuery object must be created here since jQuery doesn't have a low-level alias for $.position().\r\n\t\t\t\t\t\t Not a big deal since we're currently in a GET batch anyway. */\r\n\t\t\t\t\t\tif (position === \"fixed\" || (position === \"absolute\" && /top|left/i.test(property))) {\r\n\t\t\t\t\t\t\t/* Note: jQuery strips the pixel unit from its returned values; we re-add it here to conform with computePropertyValue's behavior. */\r\n\t\t\t\t\t\t\tcomputedValue = $(element).position()[property] + \"px\"; /* GET */\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn computedValue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar propertyValue;\r\n\r\n\t\t\t\t/* If this is a hooked property (e.g. \"clipLeft\" instead of the root property of \"clip\"),\r\n\t\t\t\t extract the hook's value from a normalized rootPropertyValue using CSS.Hooks.extractValue(). */\r\n\t\t\t\tif (CSS.Hooks.registered[property]) {\r\n\t\t\t\t\tvar hook = property,\r\n\t\t\t\t\t\t\thookRoot = CSS.Hooks.getRoot(hook);\r\n\r\n\t\t\t\t\t/* If a cached rootPropertyValue wasn't passed in (which Velocity always attempts to do in order to avoid requerying the DOM),\r\n\t\t\t\t\t query the DOM for the root property's value. */\r\n\t\t\t\t\tif (rootPropertyValue === undefined) {\r\n\t\t\t\t\t\t/* Since the browser is now being directly queried, use the official post-prefixing property name for this lookup. */\r\n\t\t\t\t\t\trootPropertyValue = CSS.getPropertyValue(element, CSS.Names.prefixCheck(hookRoot)[0]); /* GET */\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* If this root has a normalization registered, peform the associated normalization extraction. */\r\n\t\t\t\t\tif (CSS.Normalizations.registered[hookRoot]) {\r\n\t\t\t\t\t\trootPropertyValue = CSS.Normalizations.registered[hookRoot](\"extract\", element, rootPropertyValue);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* Extract the hook's value. */\r\n\t\t\t\t\tpropertyValue = CSS.Hooks.extractValue(hook, rootPropertyValue);\r\n\r\n\t\t\t\t\t/* If this is a normalized property (e.g. \"opacity\" becomes \"filter\" in <=IE8) or \"translateX\" becomes \"transform\"),\r\n\t\t\t\t\t normalize the property's name and value, and handle the special case of transforms. */\r\n\t\t\t\t\t/* Note: Normalizing a property is mutually exclusive from hooking a property since hook-extracted values are strictly\r\n\t\t\t\t\t numerical and therefore do not require normalization extraction. */\r\n\t\t\t\t} else if (CSS.Normalizations.registered[property]) {\r\n\t\t\t\t\tvar normalizedPropertyName,\r\n\t\t\t\t\t\t\tnormalizedPropertyValue;\r\n\r\n\t\t\t\t\tnormalizedPropertyName = CSS.Normalizations.registered[property](\"name\", element);\r\n\r\n\t\t\t\t\t/* Transform values are calculated via normalization extraction (see below), which checks against the element's transformCache.\r\n\t\t\t\t\t At no point do transform GETs ever actually query the DOM; initial stylesheet values are never processed.\r\n\t\t\t\t\t This is because parsing 3D transform matrices is not always accurate and would bloat our codebase;\r\n\t\t\t\t\t thus, normalization extraction defaults initial transform values to their zero-values (e.g. 1 for scaleX and 0 for translateX). */\r\n\t\t\t\t\tif (normalizedPropertyName !== \"transform\") {\r\n\t\t\t\t\t\tnormalizedPropertyValue = computePropertyValue(element, CSS.Names.prefixCheck(normalizedPropertyName)[0]); /* GET */\r\n\r\n\t\t\t\t\t\t/* If the value is a CSS null-value and this property has a hook template, use that zero-value template so that hooks can be extracted from it. */\r\n\t\t\t\t\t\tif (CSS.Values.isCSSNullValue(normalizedPropertyValue) && CSS.Hooks.templates[property]) {\r\n\t\t\t\t\t\t\tnormalizedPropertyValue = CSS.Hooks.templates[property][1];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tpropertyValue = CSS.Normalizations.registered[property](\"extract\", element, normalizedPropertyValue);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* If a (numeric) value wasn't produced via hook extraction or normalization, query the DOM. */\r\n\t\t\t\tif (!/^[\\d-]/.test(propertyValue)) {\r\n\t\t\t\t\t/* For SVG elements, dimensional properties (which SVGAttribute() detects) are tweened via\r\n\t\t\t\t\t their HTML attribute values instead of their CSS style values. */\r\n\t\t\t\t\tvar data = Data(element);\r\n\r\n\t\t\t\t\tif (data && data.isSVG && CSS.Names.SVGAttribute(property)) {\r\n\t\t\t\t\t\t/* Since the height/width attribute values must be set manually, they don't reflect computed values.\r\n\t\t\t\t\t\t Thus, we use use getBBox() to ensure we always get values for elements with undefined height/width attributes. */\r\n\t\t\t\t\t\tif (/^(height|width)$/i.test(property)) {\r\n\t\t\t\t\t\t\t/* Firefox throws an error if .getBBox() is called on an SVG that isn't attached to the DOM. */\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\tpropertyValue = element.getBBox()[property];\r\n\t\t\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\t\t\tpropertyValue = 0;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t/* Otherwise, access the attribute value directly. */\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tpropertyValue = element.getAttribute(property);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tpropertyValue = computePropertyValue(element, CSS.Names.prefixCheck(property)[0]); /* GET */\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Since property lookups are for animation purposes (which entails computing the numeric delta between start and end values),\r\n\t\t\t\t convert CSS null-values to an integer of value 0. */\r\n\t\t\t\tif (CSS.Values.isCSSNullValue(propertyValue)) {\r\n\t\t\t\t\tpropertyValue = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (Velocity.debug >= 2) {\r\n\t\t\t\t\tconsole.log(\"Get \" + property + \": \" + propertyValue);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn propertyValue;\r\n\t\t\t},\r\n\t\t\t/* The singular setPropertyValue, which routes the logic for all normalizations, hooks, and standard CSS properties. */\r\n\t\t\tsetPropertyValue: function(element, property, propertyValue, rootPropertyValue, scrollData) {\r\n\t\t\t\tvar propertyName = property;\r\n\r\n\t\t\t\t/* In order to be subjected to call options and element queueing, scroll animation is routed through Velocity as if it were a standard CSS property. */\r\n\t\t\t\tif (property === \"scroll\") {\r\n\t\t\t\t\t/* If a container option is present, scroll the container instead of the browser window. */\r\n\t\t\t\t\tif (scrollData.container) {\r\n\t\t\t\t\t\tscrollData.container[\"scroll\" + scrollData.direction] = propertyValue;\r\n\t\t\t\t\t\t/* Otherwise, Velocity defaults to scrolling the browser window. */\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (scrollData.direction === \"Left\") {\r\n\t\t\t\t\t\t\twindow.scrollTo(propertyValue, scrollData.alternateValue);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\twindow.scrollTo(scrollData.alternateValue, propertyValue);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t/* Transforms (translateX, rotateZ, etc.) are applied to a per-element transformCache object, which is manually flushed via flushTransformCache().\r\n\t\t\t\t\t Thus, for now, we merely cache transforms being SET. */\r\n\t\t\t\t\tif (CSS.Normalizations.registered[property] && CSS.Normalizations.registered[property](\"name\", element) === \"transform\") {\r\n\t\t\t\t\t\t/* Perform a normalization injection. */\r\n\t\t\t\t\t\t/* Note: The normalization logic handles the transformCache updating. */\r\n\t\t\t\t\t\tCSS.Normalizations.registered[property](\"inject\", element, propertyValue);\r\n\r\n\t\t\t\t\t\tpropertyName = \"transform\";\r\n\t\t\t\t\t\tpropertyValue = Data(element).transformCache[property];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t/* Inject hooks. */\r\n\t\t\t\t\t\tif (CSS.Hooks.registered[property]) {\r\n\t\t\t\t\t\t\tvar hookName = property,\r\n\t\t\t\t\t\t\t\t\thookRoot = CSS.Hooks.getRoot(property);\r\n\r\n\t\t\t\t\t\t\t/* If a cached rootPropertyValue was not provided, query the DOM for the hookRoot's current value. */\r\n\t\t\t\t\t\t\trootPropertyValue = rootPropertyValue || CSS.getPropertyValue(element, hookRoot); /* GET */\r\n\r\n\t\t\t\t\t\t\tpropertyValue = CSS.Hooks.injectValue(hookName, propertyValue, rootPropertyValue);\r\n\t\t\t\t\t\t\tproperty = hookRoot;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Normalize names and values. */\r\n\t\t\t\t\t\tif (CSS.Normalizations.registered[property]) {\r\n\t\t\t\t\t\t\tpropertyValue = CSS.Normalizations.registered[property](\"inject\", element, propertyValue);\r\n\t\t\t\t\t\t\tproperty = CSS.Normalizations.registered[property](\"name\", element);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Assign the appropriate vendor prefix before performing an official style update. */\r\n\t\t\t\t\t\tpropertyName = CSS.Names.prefixCheck(property)[0];\r\n\r\n\t\t\t\t\t\t/* A try/catch is used for IE<=8, which throws an error when \"invalid\" CSS values are set, e.g. a negative width.\r\n\t\t\t\t\t\t Try/catch is avoided for other browsers since it incurs a performance overhead. */\r\n\t\t\t\t\t\tif (IE <= 8) {\r\n\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\telement.style[propertyName] = propertyValue;\r\n\t\t\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\t\t\tif (Velocity.debug) {\r\n\t\t\t\t\t\t\t\t\tconsole.log(\"Browser does not support [\" + propertyValue + \"] for [\" + propertyName + \"]\");\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t/* SVG elements have their dimensional properties (width, height, x, y, cx, etc.) applied directly as attributes instead of as styles. */\r\n\t\t\t\t\t\t\t/* Note: IE8 does not support SVG elements, so it's okay that we skip it for SVG animation. */\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tvar data = Data(element);\r\n\r\n\t\t\t\t\t\t\tif (data && data.isSVG && CSS.Names.SVGAttribute(property)) {\r\n\t\t\t\t\t\t\t\t/* Note: For SVG attributes, vendor-prefixed property names are never used. */\r\n\t\t\t\t\t\t\t\t/* Note: Not all CSS properties can be animated via attributes, but the browser won't throw an error for unsupported properties. */\r\n\t\t\t\t\t\t\t\telement.setAttribute(property, propertyValue);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\telement.style[propertyName] = propertyValue;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (Velocity.debug >= 2) {\r\n\t\t\t\t\t\t\tconsole.log(\"Set \" + property + \" (\" + propertyName + \"): \" + propertyValue);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Return the normalized property name and value in case the caller wants to know how these values were modified before being applied to the DOM. */\r\n\t\t\t\treturn [propertyName, propertyValue];\r\n\t\t\t},\r\n\t\t\t/* To increase performance by batching transform updates into a single SET, transforms are not directly applied to an element until flushTransformCache() is called. */\r\n\t\t\t/* Note: Velocity applies transform properties in the same order that they are chronogically introduced to the element's CSS styles. */\r\n\t\t\tflushTransformCache: function(element) {\r\n\t\t\t\tvar transformString = \"\",\r\n\t\t\t\t\t\tdata = Data(element);\r\n\r\n\t\t\t\t/* Certain browsers require that SVG transforms be applied as an attribute. However, the SVG transform attribute takes a modified version of CSS's transform string\r\n\t\t\t\t (units are dropped and, except for skewX/Y, subproperties are merged into their master property -- e.g. scaleX and scaleY are merged into scale(X Y). */\r\n\t\t\t\tif ((IE || (Velocity.State.isAndroid && !Velocity.State.isChrome)) && data && data.isSVG) {\r\n\t\t\t\t\t/* Since transform values are stored in their parentheses-wrapped form, we use a helper function to strip out their numeric values.\r\n\t\t\t\t\t Further, SVG transform properties only take unitless (representing pixels) values, so it's okay that parseFloat() strips the unit suffixed to the float value. */\r\n\t\t\t\t\tvar getTransformFloat = function(transformProperty) {\r\n\t\t\t\t\t\treturn parseFloat(CSS.getPropertyValue(element, transformProperty));\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t/* Create an object to organize all the transforms that we'll apply to the SVG element. To keep the logic simple,\r\n\t\t\t\t\t we process *all* transform properties -- even those that may not be explicitly applied (since they default to their zero-values anyway). */\r\n\t\t\t\t\tvar SVGTransforms = {\r\n\t\t\t\t\t\ttranslate: [getTransformFloat(\"translateX\"), getTransformFloat(\"translateY\")],\r\n\t\t\t\t\t\tskewX: [getTransformFloat(\"skewX\")], skewY: [getTransformFloat(\"skewY\")],\r\n\t\t\t\t\t\t/* If the scale property is set (non-1), use that value for the scaleX and scaleY values\r\n\t\t\t\t\t\t (this behavior mimics the result of animating all these properties at once on HTML elements). */\r\n\t\t\t\t\t\tscale: getTransformFloat(\"scale\") !== 1 ? [getTransformFloat(\"scale\"), getTransformFloat(\"scale\")] : [getTransformFloat(\"scaleX\"), getTransformFloat(\"scaleY\")],\r\n\t\t\t\t\t\t/* Note: SVG's rotate transform takes three values: rotation degrees followed by the X and Y values\r\n\t\t\t\t\t\t defining the rotation's origin point. We ignore the origin values (default them to 0). */\r\n\t\t\t\t\t\trotate: [getTransformFloat(\"rotateZ\"), 0, 0]\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t/* Iterate through the transform properties in the user-defined property map order.\r\n\t\t\t\t\t (This mimics the behavior of non-SVG transform animation.) */\r\n\t\t\t\t\t$.each(Data(element).transformCache, function(transformName) {\r\n\t\t\t\t\t\t/* Except for with skewX/Y, revert the axis-specific transform subproperties to their axis-free master\r\n\t\t\t\t\t\t properties so that they match up with SVG's accepted transform properties. */\r\n\t\t\t\t\t\tif (/^translate/i.test(transformName)) {\r\n\t\t\t\t\t\t\ttransformName = \"translate\";\r\n\t\t\t\t\t\t} else if (/^scale/i.test(transformName)) {\r\n\t\t\t\t\t\t\ttransformName = \"scale\";\r\n\t\t\t\t\t\t} else if (/^rotate/i.test(transformName)) {\r\n\t\t\t\t\t\t\ttransformName = \"rotate\";\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Check that we haven't yet deleted the property from the SVGTransforms container. */\r\n\t\t\t\t\t\tif (SVGTransforms[transformName]) {\r\n\t\t\t\t\t\t\t/* Append the transform property in the SVG-supported transform format. As per the spec, surround the space-delimited values in parentheses. */\r\n\t\t\t\t\t\t\ttransformString += transformName + \"(\" + SVGTransforms[transformName].join(\" \") + \")\" + \" \";\r\n\r\n\t\t\t\t\t\t\t/* After processing an SVG transform property, delete it from the SVGTransforms container so we don't\r\n\t\t\t\t\t\t\t re-insert the same master property if we encounter another one of its axis-specific properties. */\r\n\t\t\t\t\t\t\tdelete SVGTransforms[transformName];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar transformValue,\r\n\t\t\t\t\t\t\tperspective;\r\n\r\n\t\t\t\t\t/* Transform properties are stored as members of the transformCache object. Concatenate all the members into a string. */\r\n\t\t\t\t\t$.each(Data(element).transformCache, function(transformName) {\r\n\t\t\t\t\t\ttransformValue = Data(element).transformCache[transformName];\r\n\r\n\t\t\t\t\t\t/* Transform's perspective subproperty must be set first in order to take effect. Store it temporarily. */\r\n\t\t\t\t\t\tif (transformName === \"transformPerspective\") {\r\n\t\t\t\t\t\t\tperspective = transformValue;\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* IE9 only supports one rotation type, rotateZ, which it refers to as \"rotate\". */\r\n\t\t\t\t\t\tif (IE === 9 && transformName === \"rotateZ\") {\r\n\t\t\t\t\t\t\ttransformName = \"rotate\";\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\ttransformString += transformName + transformValue + \" \";\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t/* If present, set the perspective subproperty first. */\r\n\t\t\t\t\tif (perspective) {\r\n\t\t\t\t\t\ttransformString = \"perspective\" + perspective + \" \" + transformString;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tCSS.setPropertyValue(element, \"transform\", transformString);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/* Register hooks and normalizations. */\r\n\t\tCSS.Hooks.register();\r\n\t\tCSS.Normalizations.register();\r\n\r\n\t\t/* Allow hook setting in the same fashion as jQuery's $.css(). */\r\n\t\tVelocity.hook = function(elements, arg2, arg3) {\r\n\t\t\tvar value;\r\n\r\n\t\t\telements = sanitizeElements(elements);\r\n\r\n\t\t\t$.each(elements, function(i, element) {\r\n\t\t\t\t/* Initialize Velocity's per-element data cache if this element hasn't previously been animated. */\r\n\t\t\t\tif (Data(element) === undefined) {\r\n\t\t\t\t\tVelocity.init(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Get property value. If an element set was passed in, only return the value for the first element. */\r\n\t\t\t\tif (arg3 === undefined) {\r\n\t\t\t\t\tif (value === undefined) {\r\n\t\t\t\t\t\tvalue = CSS.getPropertyValue(element, arg2);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t/* Set property value. */\r\n\t\t\t\t} else {\r\n\t\t\t\t\t/* sPV returns an array of the normalized propertyName/propertyValue pair used to update the DOM. */\r\n\t\t\t\t\tvar adjustedSet = CSS.setPropertyValue(element, arg2, arg3);\r\n\r\n\t\t\t\t\t/* Transform properties don't automatically set. They have to be flushed to the DOM. */\r\n\t\t\t\t\tif (adjustedSet[0] === \"transform\") {\r\n\t\t\t\t\t\tVelocity.CSS.flushTransformCache(element);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvalue = adjustedSet;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn value;\r\n\t\t};\r\n\r\n\t\t/*****************\r\n\t\t Animation\r\n\t\t *****************/\r\n\r\n\t\tvar animate = function() {\r\n\t\t\tvar opts;\r\n\r\n\t\t\t/******************\r\n\t\t\t Call Chain\r\n\t\t\t ******************/\r\n\r\n\t\t\t/* Logic for determining what to return to the call stack when exiting out of Velocity. */\r\n\t\t\tfunction getChain() {\r\n\t\t\t\t/* If we are using the utility function, attempt to return this call's promise. If no promise library was detected,\r\n\t\t\t\t default to null instead of returning the targeted elements so that utility function's return value is standardized. */\r\n\t\t\t\tif (isUtility) {\r\n\t\t\t\t\treturn promiseData.promise || null;\r\n\t\t\t\t\t/* Otherwise, if we're using $.fn, return the jQuery-/Zepto-wrapped element set. */\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn elementsWrapped;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/*************************\r\n\t\t\t Arguments Assignment\r\n\t\t\t *************************/\r\n\r\n\t\t\t/* To allow for expressive CoffeeScript code, Velocity supports an alternative syntax in which \"elements\" (or \"e\"), \"properties\" (or \"p\"), and \"options\" (or \"o\")\r\n\t\t\t objects are defined on a container object that's passed in as Velocity's sole argument. */\r\n\t\t\t/* Note: Some browsers automatically populate arguments with a \"properties\" object. We detect it by checking for its default \"names\" property. */\r\n\t\t\tvar syntacticSugar = (arguments[0] && (arguments[0].p || (($.isPlainObject(arguments[0].properties) && !arguments[0].properties.names) || Type.isString(arguments[0].properties)))),\r\n\t\t\t\t\t/* Whether Velocity was called via the utility function (as opposed to on a jQuery/Zepto object). */\r\n\t\t\t\t\tisUtility,\r\n\t\t\t\t\t/* When Velocity is called via the utility function ($.Velocity()/Velocity()), elements are explicitly\r\n\t\t\t\t\t passed in as the first parameter. Thus, argument positioning varies. We normalize them here. */\r\n\t\t\t\t\telementsWrapped,\r\n\t\t\t\t\targumentIndex;\r\n\r\n\t\t\tvar elements,\r\n\t\t\t\t\tpropertiesMap,\r\n\t\t\t\t\toptions;\r\n\r\n\t\t\t/* Detect jQuery/Zepto elements being animated via the $.fn method. */\r\n\t\t\tif (Type.isWrapped(this)) {\r\n\t\t\t\tisUtility = false;\r\n\r\n\t\t\t\targumentIndex = 0;\r\n\t\t\t\telements = this;\r\n\t\t\t\telementsWrapped = this;\r\n\t\t\t\t/* Otherwise, raw elements are being animated via the utility function. */\r\n\t\t\t} else {\r\n\t\t\t\tisUtility = true;\r\n\r\n\t\t\t\targumentIndex = 1;\r\n\t\t\t\telements = syntacticSugar ? (arguments[0].elements || arguments[0].e) : arguments[0];\r\n\t\t\t}\r\n\r\n\t\t\t/***************\r\n\t\t\t Promises\r\n\t\t\t ***************/\r\n\r\n\t\t\tvar promiseData = {\r\n\t\t\t\tpromise: null,\r\n\t\t\t\tresolver: null,\r\n\t\t\t\trejecter: null\r\n\t\t\t};\r\n\r\n\t\t\t/* If this call was made via the utility function (which is the default method of invocation when jQuery/Zepto are not being used), and if\r\n\t\t\t promise support was detected, create a promise object for this call and store references to its resolver and rejecter methods. The resolve\r\n\t\t\t method is used when a call completes naturally or is prematurely stopped by the user. In both cases, completeCall() handles the associated\r\n\t\t\t call cleanup and promise resolving logic. The reject method is used when an invalid set of arguments is passed into a Velocity call. */\r\n\t\t\t/* Note: Velocity employs a call-based queueing architecture, which means that stopping an animating element actually stops the full call that\r\n\t\t\t triggered it -- not that one element exclusively. Similarly, there is one promise per call, and all elements targeted by a Velocity call are\r\n\t\t\t grouped together for the purposes of resolving and rejecting a promise. */\r\n\t\t\tif (isUtility && Velocity.Promise) {\r\n\t\t\t\tpromiseData.promise = new Velocity.Promise(function(resolve, reject) {\r\n\t\t\t\t\tpromiseData.resolver = resolve;\r\n\t\t\t\t\tpromiseData.rejecter = reject;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (syntacticSugar) {\r\n\t\t\t\tpropertiesMap = arguments[0].properties || arguments[0].p;\r\n\t\t\t\toptions = arguments[0].options || arguments[0].o;\r\n\t\t\t} else {\r\n\t\t\t\tpropertiesMap = arguments[argumentIndex];\r\n\t\t\t\toptions = arguments[argumentIndex + 1];\r\n\t\t\t}\r\n\r\n\t\t\telements = sanitizeElements(elements);\r\n\r\n\t\t\tif (!elements) {\r\n\t\t\t\tif (promiseData.promise) {\r\n\t\t\t\t\tif (!propertiesMap || !options || options.promiseRejectEmpty !== false) {\r\n\t\t\t\t\t\tpromiseData.rejecter();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tpromiseData.resolver();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t/* The length of the element set (in the form of a nodeList or an array of elements) is defaulted to 1 in case a\r\n\t\t\t single raw DOM element is passed in (which doesn't contain a length property). */\r\n\t\t\tvar elementsLength = elements.length,\r\n\t\t\t\t\telementsIndex = 0;\r\n\r\n\t\t\t/***************************\r\n\t\t\t Argument Overloading\r\n\t\t\t ***************************/\r\n\r\n\t\t\t/* Support is included for jQuery's argument overloading: $.animate(propertyMap [, duration] [, easing] [, complete]).\r\n\t\t\t Overloading is detected by checking for the absence of an object being passed into options. */\r\n\t\t\t/* Note: The stop/finish/pause/resume actions do not accept animation options, and are therefore excluded from this check. */\r\n\t\t\tif (!/^(stop|finish|finishAll|pause|resume)$/i.test(propertiesMap) && !$.isPlainObject(options)) {\r\n\t\t\t\t/* The utility function shifts all arguments one position to the right, so we adjust for that offset. */\r\n\t\t\t\tvar startingArgumentPosition = argumentIndex + 1;\r\n\r\n\t\t\t\toptions = {};\r\n\r\n\t\t\t\t/* Iterate through all options arguments */\r\n\t\t\t\tfor (var i = startingArgumentPosition; i < arguments.length; i++) {\r\n\t\t\t\t\t/* Treat a number as a duration. Parse it out. */\r\n\t\t\t\t\t/* Note: The following RegEx will return true if passed an array with a number as its first item.\r\n\t\t\t\t\t Thus, arrays are skipped from this check. */\r\n\t\t\t\t\tif (!Type.isArray(arguments[i]) && (/^(fast|normal|slow)$/i.test(arguments[i]) || /^\\d/.test(arguments[i]))) {\r\n\t\t\t\t\t\toptions.duration = arguments[i];\r\n\t\t\t\t\t\t/* Treat strings and arrays as easings. */\r\n\t\t\t\t\t} else if (Type.isString(arguments[i]) || Type.isArray(arguments[i])) {\r\n\t\t\t\t\t\toptions.easing = arguments[i];\r\n\t\t\t\t\t\t/* Treat a function as a complete callback. */\r\n\t\t\t\t\t} else if (Type.isFunction(arguments[i])) {\r\n\t\t\t\t\t\toptions.complete = arguments[i];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/*********************\r\n\t\t\t Action Detection\r\n\t\t\t *********************/\r\n\r\n\t\t\t/* Velocity's behavior is categorized into \"actions\": Elements can either be specially scrolled into view,\r\n\t\t\t or they can be started, stopped, paused, resumed, or reversed . If a literal or referenced properties map is passed in as Velocity's\r\n\t\t\t first argument, the associated action is \"start\". Alternatively, \"scroll\", \"reverse\", \"pause\", \"resume\" or \"stop\" can be passed in \r\n\t\t\t instead of a properties map. */\r\n\t\t\tvar action;\r\n\r\n\t\t\tswitch (propertiesMap) {\r\n\t\t\t\tcase \"scroll\":\r\n\t\t\t\t\taction = \"scroll\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"reverse\":\r\n\t\t\t\t\taction = \"reverse\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"pause\":\r\n\r\n\t\t\t\t\t/*******************\r\n\t\t\t\t\t Action: Pause\r\n\t\t\t\t\t *******************/\r\n\r\n\t\t\t\t\tvar currentTime = (new Date()).getTime();\r\n\r\n\t\t\t\t\t/* Handle delay timers */\r\n\t\t\t\t\t$.each(elements, function(i, element) {\r\n\t\t\t\t\t\tpauseDelayOnElement(element, currentTime);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t/* Pause and Resume are call-wide (not on a per element basis). Thus, calling pause or resume on a \r\n\t\t\t\t\t single element will cause any calls that containt tweens for that element to be paused/resumed\r\n\t\t\t\t\t as well. */\r\n\r\n\t\t\t\t\t/* Iterate through all calls and pause any that contain any of our elements */\r\n\t\t\t\t\t$.each(Velocity.State.calls, function(i, activeCall) {\r\n\r\n\t\t\t\t\t\tvar found = false;\r\n\t\t\t\t\t\t/* Inactive calls are set to false by the logic inside completeCall(). Skip them. */\r\n\t\t\t\t\t\tif (activeCall) {\r\n\t\t\t\t\t\t\t/* Iterate through the active call's targeted elements. */\r\n\t\t\t\t\t\t\t$.each(activeCall[1], function(k, activeElement) {\r\n\t\t\t\t\t\t\t\tvar queueName = (options === undefined) ? \"\" : options;\r\n\r\n\t\t\t\t\t\t\t\tif (queueName !== true && (activeCall[2].queue !== queueName) && !(options === undefined && activeCall[2].queue === false)) {\r\n\t\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t/* Iterate through the calls targeted by the stop command. */\r\n\t\t\t\t\t\t\t\t$.each(elements, function(l, element) {\r\n\t\t\t\t\t\t\t\t\t/* Check that this call was applied to the target element. */\r\n\t\t\t\t\t\t\t\t\tif (element === activeElement) {\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* Set call to paused */\r\n\t\t\t\t\t\t\t\t\t\tactiveCall[5] = {\r\n\t\t\t\t\t\t\t\t\t\t\tresume: false\r\n\t\t\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* Once we match an element, we can bounce out to the next call entirely */\r\n\t\t\t\t\t\t\t\t\t\tfound = true;\r\n\t\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t/* Proceed to check next call if we have already matched */\r\n\t\t\t\t\t\t\t\tif (found) {\r\n\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t/* Since pause creates no new tweens, exit out of Velocity. */\r\n\t\t\t\t\treturn getChain();\r\n\r\n\t\t\t\tcase \"resume\":\r\n\r\n\t\t\t\t\t/*******************\r\n\t\t\t\t\t Action: Resume\r\n\t\t\t\t\t *******************/\r\n\r\n\t\t\t\t\t/* Handle delay timers */\r\n\t\t\t\t\t$.each(elements, function(i, element) {\r\n\t\t\t\t\t\tresumeDelayOnElement(element, currentTime);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t/* Pause and Resume are call-wide (not on a per elemnt basis). Thus, calling pause or resume on a \r\n\t\t\t\t\t single element will cause any calls that containt tweens for that element to be paused/resumed\r\n\t\t\t\t\t as well. */\r\n\r\n\t\t\t\t\t/* Iterate through all calls and pause any that contain any of our elements */\r\n\t\t\t\t\t$.each(Velocity.State.calls, function(i, activeCall) {\r\n\t\t\t\t\t\tvar found = false;\r\n\t\t\t\t\t\t/* Inactive calls are set to false by the logic inside completeCall(). Skip them. */\r\n\t\t\t\t\t\tif (activeCall) {\r\n\t\t\t\t\t\t\t/* Iterate through the active call's targeted elements. */\r\n\t\t\t\t\t\t\t$.each(activeCall[1], function(k, activeElement) {\r\n\t\t\t\t\t\t\t\tvar queueName = (options === undefined) ? \"\" : options;\r\n\r\n\t\t\t\t\t\t\t\tif (queueName !== true && (activeCall[2].queue !== queueName) && !(options === undefined && activeCall[2].queue === false)) {\r\n\t\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t/* Skip any calls that have never been paused */\r\n\t\t\t\t\t\t\t\tif (!activeCall[5]) {\r\n\t\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t/* Iterate through the calls targeted by the stop command. */\r\n\t\t\t\t\t\t\t\t$.each(elements, function(l, element) {\r\n\t\t\t\t\t\t\t\t\t/* Check that this call was applied to the target element. */\r\n\t\t\t\t\t\t\t\t\tif (element === activeElement) {\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* Flag a pause object to be resumed, which will occur during the next tick. In\r\n\t\t\t\t\t\t\t\t\t\t addition, the pause object will at that time be deleted */\r\n\t\t\t\t\t\t\t\t\t\tactiveCall[5].resume = true;\r\n\r\n\t\t\t\t\t\t\t\t\t\t/* Once we match an element, we can bounce out to the next call entirely */\r\n\t\t\t\t\t\t\t\t\t\tfound = true;\r\n\t\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t/* Proceed to check next call if we have already matched */\r\n\t\t\t\t\t\t\t\tif (found) {\r\n\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t/* Since resume creates no new tweens, exit out of Velocity. */\r\n\t\t\t\t\treturn getChain();\r\n\r\n\t\t\t\tcase \"finish\":\r\n\t\t\t\tcase \"finishAll\":\r\n\t\t\t\tcase \"stop\":\r\n\t\t\t\t\t/*******************\r\n\t\t\t\t\t Action: Stop\r\n\t\t\t\t\t *******************/\r\n\r\n\t\t\t\t\t/* Clear the currently-active delay on each targeted element. */\r\n\t\t\t\t\t$.each(elements, function(i, element) {\r\n\t\t\t\t\t\tif (Data(element) && Data(element).delayTimer) {\r\n\t\t\t\t\t\t\t/* Stop the timer from triggering its cached next() function. */\r\n\t\t\t\t\t\t\tclearTimeout(Data(element).delayTimer.setTimeout);\r\n\r\n\t\t\t\t\t\t\t/* Manually call the next() function so that the subsequent queue items can progress. */\r\n\t\t\t\t\t\t\tif (Data(element).delayTimer.next) {\r\n\t\t\t\t\t\t\t\tData(element).delayTimer.next();\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tdelete Data(element).delayTimer;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* If we want to finish everything in the queue, we have to iterate through it\r\n\t\t\t\t\t\t and call each function. This will make them active calls below, which will\r\n\t\t\t\t\t\t cause them to be applied via the duration setting. */\r\n\t\t\t\t\t\tif (propertiesMap === \"finishAll\" && (options === true || Type.isString(options))) {\r\n\t\t\t\t\t\t\t/* Iterate through the items in the element's queue. */\r\n\t\t\t\t\t\t\t$.each($.queue(element, Type.isString(options) ? options : \"\"), function(_, item) {\r\n\t\t\t\t\t\t\t\t/* The queue array can contain an \"inprogress\" string, which we skip. */\r\n\t\t\t\t\t\t\t\tif (Type.isFunction(item)) {\r\n\t\t\t\t\t\t\t\t\titem();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t/* Clearing the $.queue() array is achieved by resetting it to []. */\r\n\t\t\t\t\t\t\t$.queue(element, Type.isString(options) ? options : \"\", []);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tvar callsToStop = [];\r\n\r\n\t\t\t\t\t/* When the stop action is triggered, the elements' currently active call is immediately stopped. The active call might have\r\n\t\t\t\t\t been applied to multiple elements, in which case all of the call's elements will be stopped. When an element\r\n\t\t\t\t\t is stopped, the next item in its animation queue is immediately triggered. */\r\n\t\t\t\t\t/* An additional argument may be passed in to clear an element's remaining queued calls. Either true (which defaults to the \"fx\" queue)\r\n\t\t\t\t\t or a custom queue string can be passed in. */\r\n\t\t\t\t\t/* Note: The stop command runs prior to Velocity's Queueing phase since its behavior is intended to take effect *immediately*,\r\n\t\t\t\t\t regardless of the element's current queue state. */\r\n\r\n\t\t\t\t\t/* Iterate through every active call. */\r\n\t\t\t\t\t$.each(Velocity.State.calls, function(i, activeCall) {\r\n\t\t\t\t\t\t/* Inactive calls are set to false by the logic inside completeCall(). Skip them. */\r\n\t\t\t\t\t\tif (activeCall) {\r\n\t\t\t\t\t\t\t/* Iterate through the active call's targeted elements. */\r\n\t\t\t\t\t\t\t$.each(activeCall[1], function(k, activeElement) {\r\n\t\t\t\t\t\t\t\t/* If true was passed in as a secondary argument, clear absolutely all calls on this element. Otherwise, only\r\n\t\t\t\t\t\t\t\t clear calls associated with the relevant queue. */\r\n\t\t\t\t\t\t\t\t/* Call stopping logic works as follows:\r\n\t\t\t\t\t\t\t\t - options === true --> stop current default queue calls (and queue:false calls), including remaining queued ones.\r\n\t\t\t\t\t\t\t\t - options === undefined --> stop current queue:\"\" call and all queue:false calls.\r\n\t\t\t\t\t\t\t\t - options === false --> stop only queue:false calls.\r\n\t\t\t\t\t\t\t\t - options === \"custom\" --> stop current queue:\"custom\" call, including remaining queued ones (there is no functionality to only clear the currently-running queue:\"custom\" call). */\r\n\t\t\t\t\t\t\t\tvar queueName = (options === undefined) ? \"\" : options;\r\n\r\n\t\t\t\t\t\t\t\tif (queueName !== true && (activeCall[2].queue !== queueName) && !(options === undefined && activeCall[2].queue === false)) {\r\n\t\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t/* Iterate through the calls targeted by the stop command. */\r\n\t\t\t\t\t\t\t\t$.each(elements, function(l, element) {\r\n\t\t\t\t\t\t\t\t\t/* Check that this call was applied to the target element. */\r\n\t\t\t\t\t\t\t\t\tif (element === activeElement) {\r\n\t\t\t\t\t\t\t\t\t\t/* Optionally clear the remaining queued calls. If we're doing \"finishAll\" this won't find anything,\r\n\t\t\t\t\t\t\t\t\t\t due to the queue-clearing above. */\r\n\t\t\t\t\t\t\t\t\t\tif (options === true || Type.isString(options)) {\r\n\t\t\t\t\t\t\t\t\t\t\t/* Iterate through the items in the element's queue. */\r\n\t\t\t\t\t\t\t\t\t\t\t$.each($.queue(element, Type.isString(options) ? options : \"\"), function(_, item) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t/* The queue array can contain an \"inprogress\" string, which we skip. */\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (Type.isFunction(item)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t/* Pass the item's callback a flag indicating that we want to abort from the queue call.\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t (Specifically, the queue will resolve the call's associated promise then abort.)  */\r\n\t\t\t\t\t\t\t\t\t\t\t\t\titem(null, true);\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t/* Clearing the $.queue() array is achieved by resetting it to []. */\r\n\t\t\t\t\t\t\t\t\t\t\t$.queue(element, Type.isString(options) ? options : \"\", []);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (propertiesMap === \"stop\") {\r\n\t\t\t\t\t\t\t\t\t\t\t/* Since \"reverse\" uses cached start values (the previous call's endValues), these values must be\r\n\t\t\t\t\t\t\t\t\t\t\t changed to reflect the final value that the elements were actually tweened to. */\r\n\t\t\t\t\t\t\t\t\t\t\t/* Note: If only queue:false/queue:\"custom\" animations are currently running on an element, it won't have a tweensContainer\r\n\t\t\t\t\t\t\t\t\t\t\t object. Also, queue:false/queue:\"custom\" animations can't be reversed. */\r\n\t\t\t\t\t\t\t\t\t\t\tvar data = Data(element);\r\n\t\t\t\t\t\t\t\t\t\t\tif (data && data.tweensContainer && (queueName === true || queueName === \"\")) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t$.each(data.tweensContainer, function(m, activeTween) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tactiveTween.endValue = activeTween.currentValue;\r\n\t\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tcallsToStop.push(i);\r\n\t\t\t\t\t\t\t\t\t\t} else if (propertiesMap === \"finish\" || propertiesMap === \"finishAll\") {\r\n\t\t\t\t\t\t\t\t\t\t\t/* To get active tweens to finish immediately, we forcefully shorten their durations to 1ms so that\r\n\t\t\t\t\t\t\t\t\t\t\t they finish upon the next rAf tick then proceed with normal call completion logic. */\r\n\t\t\t\t\t\t\t\t\t\t\tactiveCall[2].duration = 1;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t/* Prematurely call completeCall() on each matched active call. Pass an additional flag for \"stop\" to indicate\r\n\t\t\t\t\t that the complete callback and display:none setting should be skipped since we're completing prematurely. */\r\n\t\t\t\t\tif (propertiesMap === \"stop\") {\r\n\t\t\t\t\t\t$.each(callsToStop, function(i, j) {\r\n\t\t\t\t\t\t\tcompleteCall(j, true);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif (promiseData.promise) {\r\n\t\t\t\t\t\t\t/* Immediately resolve the promise associated with this stop call since stop runs synchronously. */\r\n\t\t\t\t\t\t\tpromiseData.resolver(elements);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* Since we're stopping, and not proceeding with queueing, exit out of Velocity. */\r\n\t\t\t\t\treturn getChain();\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\t/* Treat a non-empty plain object as a literal properties map. */\r\n\t\t\t\t\tif ($.isPlainObject(propertiesMap) && !Type.isEmptyObject(propertiesMap)) {\r\n\t\t\t\t\t\taction = \"start\";\r\n\r\n\t\t\t\t\t\t/****************\r\n\t\t\t\t\t\t Redirects\r\n\t\t\t\t\t\t ****************/\r\n\r\n\t\t\t\t\t\t/* Check if a string matches a registered redirect (see Redirects above). */\r\n\t\t\t\t\t} else if (Type.isString(propertiesMap) && Velocity.Redirects[propertiesMap]) {\r\n\t\t\t\t\t\topts = $.extend({}, options);\r\n\r\n\t\t\t\t\t\tvar durationOriginal = opts.duration,\r\n\t\t\t\t\t\t\t\tdelayOriginal = opts.delay || 0;\r\n\r\n\t\t\t\t\t\t/* If the backwards option was passed in, reverse the element set so that elements animate from the last to the first. */\r\n\t\t\t\t\t\tif (opts.backwards === true) {\r\n\t\t\t\t\t\t\telements = $.extend(true, [], elements).reverse();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Individually trigger the redirect for each element in the set to prevent users from having to handle iteration logic in their redirect. */\r\n\t\t\t\t\t\t$.each(elements, function(elementIndex, element) {\r\n\t\t\t\t\t\t\t/* If the stagger option was passed in, successively delay each element by the stagger value (in ms). Retain the original delay value. */\r\n\t\t\t\t\t\t\tif (parseFloat(opts.stagger)) {\r\n\t\t\t\t\t\t\t\topts.delay = delayOriginal + (parseFloat(opts.stagger) * elementIndex);\r\n\t\t\t\t\t\t\t} else if (Type.isFunction(opts.stagger)) {\r\n\t\t\t\t\t\t\t\topts.delay = delayOriginal + opts.stagger.call(element, elementIndex, elementsLength);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* If the drag option was passed in, successively increase/decrease (depending on the presense of opts.backwards)\r\n\t\t\t\t\t\t\t the duration of each element's animation, using floors to prevent producing very short durations. */\r\n\t\t\t\t\t\t\tif (opts.drag) {\r\n\t\t\t\t\t\t\t\t/* Default the duration of UI pack effects (callouts and transitions) to 1000ms instead of the usual default duration of 400ms. */\r\n\t\t\t\t\t\t\t\topts.duration = parseFloat(durationOriginal) || (/^(callout|transition)/.test(propertiesMap) ? 1000 : DURATION_DEFAULT);\r\n\r\n\t\t\t\t\t\t\t\t/* For each element, take the greater duration of: A) animation completion percentage relative to the original duration,\r\n\t\t\t\t\t\t\t\t B) 75% of the original duration, or C) a 200ms fallback (in case duration is already set to a low value).\r\n\t\t\t\t\t\t\t\t The end result is a baseline of 75% of the redirect's duration that increases/decreases as the end of the element set is approached. */\r\n\t\t\t\t\t\t\t\topts.duration = Math.max(opts.duration * (opts.backwards ? 1 - elementIndex / elementsLength : (elementIndex + 1) / elementsLength), opts.duration * 0.75, 200);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* Pass in the call's opts object so that the redirect can optionally extend it. It defaults to an empty object instead of null to\r\n\t\t\t\t\t\t\t reduce the opts checking logic required inside the redirect. */\r\n\t\t\t\t\t\t\tVelocity.Redirects[propertiesMap].call(element, element, opts || {}, elementIndex, elementsLength, elements, promiseData.promise ? promiseData : undefined);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t/* Since the animation logic resides within the redirect's own code, abort the remainder of this call.\r\n\t\t\t\t\t\t (The performance overhead up to this point is virtually non-existant.) */\r\n\t\t\t\t\t\t/* Note: The jQuery call chain is kept intact by returning the complete element set. */\r\n\t\t\t\t\t\treturn getChain();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar abortError = \"Velocity: First argument (\" + propertiesMap + \") was not a property map, a known action, or a registered redirect. Aborting.\";\r\n\r\n\t\t\t\t\t\tif (promiseData.promise) {\r\n\t\t\t\t\t\t\tpromiseData.rejecter(new Error(abortError));\r\n\t\t\t\t\t\t} else if (window.console) {\r\n\t\t\t\t\t\t\tconsole.log(abortError);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn getChain();\r\n\t\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/**************************\r\n\t\t\t Call-Wide Variables\r\n\t\t\t **************************/\r\n\r\n\t\t\t/* A container for CSS unit conversion ratios (e.g. %, rem, and em ==> px) that is used to cache ratios across all elements\r\n\t\t\t being animated in a single Velocity call. Calculating unit ratios necessitates DOM querying and updating, and is therefore\r\n\t\t\t avoided (via caching) wherever possible. This container is call-wide instead of page-wide to avoid the risk of using stale\r\n\t\t\t conversion metrics across Velocity animations that are not immediately consecutively chained. */\r\n\t\t\tvar callUnitConversionData = {\r\n\t\t\t\tlastParent: null,\r\n\t\t\t\tlastPosition: null,\r\n\t\t\t\tlastFontSize: null,\r\n\t\t\t\tlastPercentToPxWidth: null,\r\n\t\t\t\tlastPercentToPxHeight: null,\r\n\t\t\t\tlastEmToPx: null,\r\n\t\t\t\tremToPx: null,\r\n\t\t\t\tvwToPx: null,\r\n\t\t\t\tvhToPx: null\r\n\t\t\t};\r\n\r\n\t\t\t/* A container for all the ensuing tween data and metadata associated with this call. This container gets pushed to the page-wide\r\n\t\t\t Velocity.State.calls array that is processed during animation ticking. */\r\n\t\t\tvar call = [];\r\n\r\n\t\t\t/************************\r\n\t\t\t Element Processing\r\n\t\t\t ************************/\r\n\r\n\t\t\t/* Element processing consists of three parts -- data processing that cannot go stale and data processing that *can* go stale (i.e. third-party style modifications):\r\n\t\t\t 1) Pre-Queueing: Element-wide variables, including the element's data storage, are instantiated. Call options are prepared. If triggered, the Stop action is executed.\r\n\t\t\t 2) Queueing: The logic that runs once this call has reached its point of execution in the element's $.queue() stack. Most logic is placed here to avoid risking it becoming stale.\r\n\t\t\t 3) Pushing: Consolidation of the tween data followed by its push onto the global in-progress calls container.\r\n\t\t\t `elementArrayIndex` allows passing index of the element in the original array to value functions.\r\n\t\t\t If `elementsIndex` were used instead the index would be determined by the elements' per-element queue.\r\n\t\t\t */\r\n\t\t\tfunction processElement(element, elementArrayIndex) {\r\n\r\n\t\t\t\t/*************************\r\n\t\t\t\t Part I: Pre-Queueing\r\n\t\t\t\t *************************/\r\n\r\n\t\t\t\t/***************************\r\n\t\t\t\t Element-Wide Variables\r\n\t\t\t\t ***************************/\r\n\r\n\t\t\t\tvar /* The runtime opts object is the extension of the current call's options and Velocity's page-wide option defaults. */\r\n\t\t\t\t\t\topts = $.extend({}, Velocity.defaults, options),\r\n\t\t\t\t\t\t/* A container for the processed data associated with each property in the propertyMap.\r\n\t\t\t\t\t\t (Each property in the map produces its own \"tween\".) */\r\n\t\t\t\t\t\ttweensContainer = {},\r\n\t\t\t\t\t\telementUnitConversionData;\r\n\r\n\t\t\t\t/******************\r\n\t\t\t\t Element Init\r\n\t\t\t\t ******************/\r\n\r\n\t\t\t\tif (Data(element) === undefined) {\r\n\t\t\t\t\tVelocity.init(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/******************\r\n\t\t\t\t Option: Delay\r\n\t\t\t\t ******************/\r\n\r\n\t\t\t\t/* Since queue:false doesn't respect the item's existing queue, we avoid injecting its delay here (it's set later on). */\r\n\t\t\t\t/* Note: Velocity rolls its own delay function since jQuery doesn't have a utility alias for $.fn.delay()\r\n\t\t\t\t (and thus requires jQuery element creation, which we avoid since its overhead includes DOM querying). */\r\n\t\t\t\tif (parseFloat(opts.delay) && opts.queue !== false) {\r\n\t\t\t\t\t$.queue(element, opts.queue, function(next, clearQueue) {\r\n\t\t\t\t\t\tif (clearQueue === true) {\r\n\t\t\t\t\t\t\t/* Do not continue with animation queueing. */\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* This is a flag used to indicate to the upcoming completeCall() function that this queue entry was initiated by Velocity. See completeCall() for further details. */\r\n\t\t\t\t\t\tVelocity.velocityQueueEntryFlag = true;\r\n\r\n\t\t\t\t\t\t/* The ensuing queue item (which is assigned to the \"next\" argument that $.queue() automatically passes in) will be triggered after a setTimeout delay.\r\n\t\t\t\t\t\t The setTimeout is stored so that it can be subjected to clearTimeout() if this animation is prematurely stopped via Velocity's \"stop\" command, and\r\n\t\t\t\t\t\t delayBegin/delayTime is used to ensure we can \"pause\" and \"resume\" a tween that is still mid-delay. */\r\n\r\n\t\t\t\t\t\t/* Temporarily store delayed elements to facilite access for global pause/resume */\r\n\t\t\t\t\t\tvar callIndex = Velocity.State.delayedElements.count++;\r\n\t\t\t\t\t\tVelocity.State.delayedElements[callIndex] = element;\r\n\r\n\t\t\t\t\t\tvar delayComplete = (function(index) {\r\n\t\t\t\t\t\t\treturn function() {\r\n\t\t\t\t\t\t\t\t/* Clear the temporary element */\r\n\t\t\t\t\t\t\t\tVelocity.State.delayedElements[index] = false;\r\n\r\n\t\t\t\t\t\t\t\t/* Finally, issue the call */\r\n\t\t\t\t\t\t\t\tnext();\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t})(callIndex);\r\n\r\n\r\n\t\t\t\t\t\tData(element).delayBegin = (new Date()).getTime();\r\n\t\t\t\t\t\tData(element).delay = parseFloat(opts.delay);\r\n\t\t\t\t\t\tData(element).delayTimer = {\r\n\t\t\t\t\t\t\tsetTimeout: setTimeout(next, parseFloat(opts.delay)),\r\n\t\t\t\t\t\t\tnext: delayComplete\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/*********************\r\n\t\t\t\t Option: Duration\r\n\t\t\t\t *********************/\r\n\r\n\t\t\t\t/* Support for jQuery's named durations. */\r\n\t\t\t\tswitch (opts.duration.toString().toLowerCase()) {\r\n\t\t\t\t\tcase \"fast\":\r\n\t\t\t\t\t\topts.duration = 200;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"normal\":\r\n\t\t\t\t\t\topts.duration = DURATION_DEFAULT;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase \"slow\":\r\n\t\t\t\t\t\topts.duration = 600;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t/* Remove the potential \"ms\" suffix and default to 1 if the user is attempting to set a duration of 0 (in order to produce an immediate style change). */\r\n\t\t\t\t\t\topts.duration = parseFloat(opts.duration) || 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/************************\r\n\t\t\t\t Global Option: Mock\r\n\t\t\t\t ************************/\r\n\r\n\t\t\t\tif (Velocity.mock !== false) {\r\n\t\t\t\t\t/* In mock mode, all animations are forced to 1ms so that they occur immediately upon the next rAF tick.\r\n\t\t\t\t\t Alternatively, a multiplier can be passed in to time remap all delays and durations. */\r\n\t\t\t\t\tif (Velocity.mock === true) {\r\n\t\t\t\t\t\topts.duration = opts.delay = 1;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\topts.duration *= parseFloat(Velocity.mock) || 1;\r\n\t\t\t\t\t\topts.delay *= parseFloat(Velocity.mock) || 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/*******************\r\n\t\t\t\t Option: Easing\r\n\t\t\t\t *******************/\r\n\r\n\t\t\t\topts.easing = getEasing(opts.easing, opts.duration);\r\n\r\n\t\t\t\t/**********************\r\n\t\t\t\t Option: Callbacks\r\n\t\t\t\t **********************/\r\n\r\n\t\t\t\t/* Callbacks must functions. Otherwise, default to null. */\r\n\t\t\t\tif (opts.begin && !Type.isFunction(opts.begin)) {\r\n\t\t\t\t\topts.begin = null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (opts.progress && !Type.isFunction(opts.progress)) {\r\n\t\t\t\t\topts.progress = null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (opts.complete && !Type.isFunction(opts.complete)) {\r\n\t\t\t\t\topts.complete = null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/*********************************\r\n\t\t\t\t Option: Display & Visibility\r\n\t\t\t\t *********************************/\r\n\r\n\t\t\t\t/* Refer to Velocity's documentation (VelocityJS.org/#displayAndVisibility) for a description of the display and visibility options' behavior. */\r\n\t\t\t\t/* Note: We strictly check for undefined instead of falsiness because display accepts an empty string value. */\r\n\t\t\t\tif (opts.display !== undefined && opts.display !== null) {\r\n\t\t\t\t\topts.display = opts.display.toString().toLowerCase();\r\n\r\n\t\t\t\t\t/* Users can pass in a special \"auto\" value to instruct Velocity to set the element to its default display value. */\r\n\t\t\t\t\tif (opts.display === \"auto\") {\r\n\t\t\t\t\t\topts.display = Velocity.CSS.Values.getDisplayType(element);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (opts.visibility !== undefined && opts.visibility !== null) {\r\n\t\t\t\t\topts.visibility = opts.visibility.toString().toLowerCase();\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/**********************\r\n\t\t\t\t Option: mobileHA\r\n\t\t\t\t **********************/\r\n\r\n\t\t\t\t/* When set to true, and if this is a mobile device, mobileHA automatically enables hardware acceleration (via a null transform hack)\r\n\t\t\t\t on animating elements. HA is removed from the element at the completion of its animation. */\r\n\t\t\t\t/* Note: Android Gingerbread doesn't support HA. If a null transform hack (mobileHA) is in fact set, it will prevent other tranform subproperties from taking effect. */\r\n\t\t\t\t/* Note: You can read more about the use of mobileHA in Velocity's documentation: VelocityJS.org/#mobileHA. */\r\n\t\t\t\topts.mobileHA = (opts.mobileHA && Velocity.State.isMobile && !Velocity.State.isGingerbread);\r\n\r\n\t\t\t\t/***********************\r\n\t\t\t\t Part II: Queueing\r\n\t\t\t\t ***********************/\r\n\r\n\t\t\t\t/* When a set of elements is targeted by a Velocity call, the set is broken up and each element has the current Velocity call individually queued onto it.\r\n\t\t\t\t In this way, each element's existing queue is respected; some elements may already be animating and accordingly should not have this current Velocity call triggered immediately. */\r\n\t\t\t\t/* In each queue, tween data is processed for each animating property then pushed onto the call-wide calls array. When the last element in the set has had its tweens processed,\r\n\t\t\t\t the call array is pushed to Velocity.State.calls for live processing by the requestAnimationFrame tick. */\r\n\t\t\t\tfunction buildQueue(next) {\r\n\t\t\t\t\tvar data, lastTweensContainer;\r\n\r\n\t\t\t\t\t/*******************\r\n\t\t\t\t\t Option: Begin\r\n\t\t\t\t\t *******************/\r\n\r\n\t\t\t\t\t/* The begin callback is fired once per call -- not once per elemenet -- and is passed the full raw DOM element set as both its context and its first argument. */\r\n\t\t\t\t\tif (opts.begin && elementsIndex === 0) {\r\n\t\t\t\t\t\t/* We throw callbacks in a setTimeout so that thrown errors don't halt the execution of Velocity itself. */\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\topts.begin.call(elements, elements);\r\n\t\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\t\tthrow error;\r\n\t\t\t\t\t\t\t}, 1);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/*****************************************\r\n\t\t\t\t\t Tween Data Construction (for Scroll)\r\n\t\t\t\t\t *****************************************/\r\n\r\n\t\t\t\t\t/* Note: In order to be subjected to chaining and animation options, scroll's tweening is routed through Velocity as if it were a standard CSS property animation. */\r\n\t\t\t\t\tif (action === \"scroll\") {\r\n\t\t\t\t\t\t/* The scroll action uniquely takes an optional \"offset\" option -- specified in pixels -- that offsets the targeted scroll position. */\r\n\t\t\t\t\t\tvar scrollDirection = (/^x$/i.test(opts.axis) ? \"Left\" : \"Top\"),\r\n\t\t\t\t\t\t\t\tscrollOffset = parseFloat(opts.offset) || 0,\r\n\t\t\t\t\t\t\t\tscrollPositionCurrent,\r\n\t\t\t\t\t\t\t\tscrollPositionCurrentAlternate,\r\n\t\t\t\t\t\t\t\tscrollPositionEnd;\r\n\r\n\t\t\t\t\t\t/* Scroll also uniquely takes an optional \"container\" option, which indicates the parent element that should be scrolled --\r\n\t\t\t\t\t\t as opposed to the browser window itself. This is useful for scrolling toward an element that's inside an overflowing parent element. */\r\n\t\t\t\t\t\tif (opts.container) {\r\n\t\t\t\t\t\t\t/* Ensure that either a jQuery object or a raw DOM element was passed in. */\r\n\t\t\t\t\t\t\tif (Type.isWrapped(opts.container) || Type.isNode(opts.container)) {\r\n\t\t\t\t\t\t\t\t/* Extract the raw DOM element from the jQuery wrapper. */\r\n\t\t\t\t\t\t\t\topts.container = opts.container[0] || opts.container;\r\n\t\t\t\t\t\t\t\t/* Note: Unlike other properties in Velocity, the browser's scroll position is never cached since it so frequently changes\r\n\t\t\t\t\t\t\t\t (due to the user's natural interaction with the page). */\r\n\t\t\t\t\t\t\t\tscrollPositionCurrent = opts.container[\"scroll\" + scrollDirection]; /* GET */\r\n\r\n\t\t\t\t\t\t\t\t/* $.position() values are relative to the container's currently viewable area (without taking into account the container's true dimensions\r\n\t\t\t\t\t\t\t\t -- say, for example, if the container was not overflowing). Thus, the scroll end value is the sum of the child element's position *and*\r\n\t\t\t\t\t\t\t\t the scroll container's current scroll position. */\r\n\t\t\t\t\t\t\t\tscrollPositionEnd = (scrollPositionCurrent + $(element).position()[scrollDirection.toLowerCase()]) + scrollOffset; /* GET */\r\n\t\t\t\t\t\t\t\t/* If a value other than a jQuery object or a raw DOM element was passed in, default to null so that this option is ignored. */\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\topts.container = null;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t/* If the window itself is being scrolled -- not a containing element -- perform a live scroll position lookup using\r\n\t\t\t\t\t\t\t the appropriate cached property names (which differ based on browser type). */\r\n\t\t\t\t\t\t\tscrollPositionCurrent = Velocity.State.scrollAnchor[Velocity.State[\"scrollProperty\" + scrollDirection]]; /* GET */\r\n\t\t\t\t\t\t\t/* When scrolling the browser window, cache the alternate axis's current value since window.scrollTo() doesn't let us change only one value at a time. */\r\n\t\t\t\t\t\t\tscrollPositionCurrentAlternate = Velocity.State.scrollAnchor[Velocity.State[\"scrollProperty\" + (scrollDirection === \"Left\" ? \"Top\" : \"Left\")]]; /* GET */\r\n\r\n\t\t\t\t\t\t\t/* Unlike $.position(), $.offset() values are relative to the browser window's true dimensions -- not merely its currently viewable area --\r\n\t\t\t\t\t\t\t and therefore end values do not need to be compounded onto current values. */\r\n\t\t\t\t\t\t\tscrollPositionEnd = $(element).offset()[scrollDirection.toLowerCase()] + scrollOffset; /* GET */\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Since there's only one format that scroll's associated tweensContainer can take, we create it manually. */\r\n\t\t\t\t\t\ttweensContainer = {\r\n\t\t\t\t\t\t\tscroll: {\r\n\t\t\t\t\t\t\t\trootPropertyValue: false,\r\n\t\t\t\t\t\t\t\tstartValue: scrollPositionCurrent,\r\n\t\t\t\t\t\t\t\tcurrentValue: scrollPositionCurrent,\r\n\t\t\t\t\t\t\t\tendValue: scrollPositionEnd,\r\n\t\t\t\t\t\t\t\tunitType: \"\",\r\n\t\t\t\t\t\t\t\teasing: opts.easing,\r\n\t\t\t\t\t\t\t\tscrollData: {\r\n\t\t\t\t\t\t\t\t\tcontainer: opts.container,\r\n\t\t\t\t\t\t\t\t\tdirection: scrollDirection,\r\n\t\t\t\t\t\t\t\t\talternateValue: scrollPositionCurrentAlternate\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\telement: element\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tif (Velocity.debug) {\r\n\t\t\t\t\t\t\tconsole.log(\"tweensContainer (scroll): \", tweensContainer.scroll, element);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/******************************************\r\n\t\t\t\t\t\t Tween Data Construction (for Reverse)\r\n\t\t\t\t\t\t ******************************************/\r\n\r\n\t\t\t\t\t\t/* Reverse acts like a \"start\" action in that a property map is animated toward. The only difference is\r\n\t\t\t\t\t\t that the property map used for reverse is the inverse of the map used in the previous call. Thus, we manipulate\r\n\t\t\t\t\t\t the previous call to construct our new map: use the previous map's end values as our new map's start values. Copy over all other data. */\r\n\t\t\t\t\t\t/* Note: Reverse can be directly called via the \"reverse\" parameter, or it can be indirectly triggered via the loop option. (Loops are composed of multiple reverses.) */\r\n\t\t\t\t\t\t/* Note: Reverse calls do not need to be consecutively chained onto a currently-animating element in order to operate on cached values;\r\n\t\t\t\t\t\t there is no harm to reverse being called on a potentially stale data cache since reverse's behavior is simply defined\r\n\t\t\t\t\t\t as reverting to the element's values as they were prior to the previous *Velocity* call. */\r\n\t\t\t\t\t} else if (action === \"reverse\") {\r\n\t\t\t\t\t\tdata = Data(element);\r\n\r\n\t\t\t\t\t\t/* Abort if there is no prior animation data to reverse to. */\r\n\t\t\t\t\t\tif (!data) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!data.tweensContainer) {\r\n\t\t\t\t\t\t\t/* Dequeue the element so that this queue entry releases itself immediately, allowing subsequent queue entries to run. */\r\n\t\t\t\t\t\t\t$.dequeue(element, opts.queue);\r\n\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t/*********************\r\n\t\t\t\t\t\t\t Options Parsing\r\n\t\t\t\t\t\t\t *********************/\r\n\r\n\t\t\t\t\t\t\t/* If the element was hidden via the display option in the previous call,\r\n\t\t\t\t\t\t\t revert display to \"auto\" prior to reversal so that the element is visible again. */\r\n\t\t\t\t\t\t\tif (data.opts.display === \"none\") {\r\n\t\t\t\t\t\t\t\tdata.opts.display = \"auto\";\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (data.opts.visibility === \"hidden\") {\r\n\t\t\t\t\t\t\t\tdata.opts.visibility = \"visible\";\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* If the loop option was set in the previous call, disable it so that \"reverse\" calls aren't recursively generated.\r\n\t\t\t\t\t\t\t Further, remove the previous call's callback options; typically, users do not want these to be refired. */\r\n\t\t\t\t\t\t\tdata.opts.loop = false;\r\n\t\t\t\t\t\t\tdata.opts.begin = null;\r\n\t\t\t\t\t\t\tdata.opts.complete = null;\r\n\r\n\t\t\t\t\t\t\t/* Since we're extending an opts object that has already been extended with the defaults options object,\r\n\t\t\t\t\t\t\t we remove non-explicitly-defined properties that are auto-assigned values. */\r\n\t\t\t\t\t\t\tif (!options.easing) {\r\n\t\t\t\t\t\t\t\tdelete opts.easing;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (!options.duration) {\r\n\t\t\t\t\t\t\t\tdelete opts.duration;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* The opts object used for reversal is an extension of the options object optionally passed into this\r\n\t\t\t\t\t\t\t reverse call plus the options used in the previous Velocity call. */\r\n\t\t\t\t\t\t\topts = $.extend({}, data.opts, opts);\r\n\r\n\t\t\t\t\t\t\t/*************************************\r\n\t\t\t\t\t\t\t Tweens Container Reconstruction\r\n\t\t\t\t\t\t\t *************************************/\r\n\r\n\t\t\t\t\t\t\t/* Create a deepy copy (indicated via the true flag) of the previous call's tweensContainer. */\r\n\t\t\t\t\t\t\tlastTweensContainer = $.extend(true, {}, data ? data.tweensContainer : null);\r\n\r\n\t\t\t\t\t\t\t/* Manipulate the previous tweensContainer by replacing its end values and currentValues with its start values. */\r\n\t\t\t\t\t\t\tfor (var lastTween in lastTweensContainer) {\r\n\t\t\t\t\t\t\t\t/* In addition to tween data, tweensContainers contain an element property that we ignore here. */\r\n\t\t\t\t\t\t\t\tif (lastTweensContainer.hasOwnProperty(lastTween) && lastTween !== \"element\") {\r\n\t\t\t\t\t\t\t\t\tvar lastStartValue = lastTweensContainer[lastTween].startValue;\r\n\r\n\t\t\t\t\t\t\t\t\tlastTweensContainer[lastTween].startValue = lastTweensContainer[lastTween].currentValue = lastTweensContainer[lastTween].endValue;\r\n\t\t\t\t\t\t\t\t\tlastTweensContainer[lastTween].endValue = lastStartValue;\r\n\r\n\t\t\t\t\t\t\t\t\t/* Easing is the only option that embeds into the individual tween data (since it can be defined on a per-property basis).\r\n\t\t\t\t\t\t\t\t\t Accordingly, every property's easing value must be updated when an options object is passed in with a reverse call.\r\n\t\t\t\t\t\t\t\t\t The side effect of this extensibility is that all per-property easing values are forcefully reset to the new value. */\r\n\t\t\t\t\t\t\t\t\tif (!Type.isEmptyObject(options)) {\r\n\t\t\t\t\t\t\t\t\t\tlastTweensContainer[lastTween].easing = opts.easing;\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tif (Velocity.debug) {\r\n\t\t\t\t\t\t\t\t\t\tconsole.log(\"reverse tweensContainer (\" + lastTween + \"): \" + JSON.stringify(lastTweensContainer[lastTween]), element);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\ttweensContainer = lastTweensContainer;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/*****************************************\r\n\t\t\t\t\t\t Tween Data Construction (for Start)\r\n\t\t\t\t\t\t *****************************************/\r\n\r\n\t\t\t\t\t} else if (action === \"start\") {\r\n\r\n\t\t\t\t\t\t/*************************\r\n\t\t\t\t\t\t Value Transferring\r\n\t\t\t\t\t\t *************************/\r\n\r\n\t\t\t\t\t\t/* If this queue entry follows a previous Velocity-initiated queue entry *and* if this entry was created\r\n\t\t\t\t\t\t while the element was in the process of being animated by Velocity, then this current call is safe to use\r\n\t\t\t\t\t\t the end values from the prior call as its start values. Velocity attempts to perform this value transfer\r\n\t\t\t\t\t\t process whenever possible in order to avoid requerying the DOM. */\r\n\t\t\t\t\t\t/* If values aren't transferred from a prior call and start values were not forcefed by the user (more on this below),\r\n\t\t\t\t\t\t then the DOM is queried for the element's current values as a last resort. */\r\n\t\t\t\t\t\t/* Note: Conversely, animation reversal (and looping) *always* perform inter-call value transfers; they never requery the DOM. */\r\n\r\n\t\t\t\t\t\tdata = Data(element);\r\n\r\n\t\t\t\t\t\t/* The per-element isAnimating flag is used to indicate whether it's safe (i.e. the data isn't stale)\r\n\t\t\t\t\t\t to transfer over end values to use as start values. If it's set to true and there is a previous\r\n\t\t\t\t\t\t Velocity call to pull values from, do so. */\r\n\t\t\t\t\t\tif (data && data.tweensContainer && data.isAnimating === true) {\r\n\t\t\t\t\t\t\tlastTweensContainer = data.tweensContainer;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/***************************\r\n\t\t\t\t\t\t Tween Data Calculation\r\n\t\t\t\t\t\t ***************************/\r\n\r\n\t\t\t\t\t\t/* This function parses property data and defaults endValue, easing, and startValue as appropriate. */\r\n\t\t\t\t\t\t/* Property map values can either take the form of 1) a single value representing the end value,\r\n\t\t\t\t\t\t or 2) an array in the form of [ endValue, [, easing] [, startValue] ].\r\n\t\t\t\t\t\t The optional third parameter is a forcefed startValue to be used instead of querying the DOM for\r\n\t\t\t\t\t\t the element's current value. Read Velocity's docmentation to learn more about forcefeeding: VelocityJS.org/#forcefeeding */\r\n\t\t\t\t\t\tvar parsePropertyValue = function(valueData, skipResolvingEasing) {\r\n\t\t\t\t\t\t\tvar endValue, easing, startValue;\r\n\r\n\t\t\t\t\t\t\t/* If we have a function as the main argument then resolve it first, in case it returns an array that needs to be split */\r\n\t\t\t\t\t\t\tif (Type.isFunction(valueData)) {\r\n\t\t\t\t\t\t\t\tvalueData = valueData.call(element, elementArrayIndex, elementsLength);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* Handle the array format, which can be structured as one of three potential overloads:\r\n\t\t\t\t\t\t\t A) [ endValue, easing, startValue ], B) [ endValue, easing ], or C) [ endValue, startValue ] */\r\n\t\t\t\t\t\t\tif (Type.isArray(valueData)) {\r\n\t\t\t\t\t\t\t\t/* endValue is always the first item in the array. Don't bother validating endValue's value now\r\n\t\t\t\t\t\t\t\t since the ensuing property cycling logic does that. */\r\n\t\t\t\t\t\t\t\tendValue = valueData[0];\r\n\r\n\t\t\t\t\t\t\t\t/* Two-item array format: If the second item is a number, function, or hex string, treat it as a\r\n\t\t\t\t\t\t\t\t start value since easings can only be non-hex strings or arrays. */\r\n\t\t\t\t\t\t\t\tif ((!Type.isArray(valueData[1]) && /^[\\d-]/.test(valueData[1])) || Type.isFunction(valueData[1]) || CSS.RegEx.isHex.test(valueData[1])) {\r\n\t\t\t\t\t\t\t\t\tstartValue = valueData[1];\r\n\t\t\t\t\t\t\t\t\t/* Two or three-item array: If the second item is a non-hex string easing name or an array, treat it as an easing. */\r\n\t\t\t\t\t\t\t\t} else if ((Type.isString(valueData[1]) && !CSS.RegEx.isHex.test(valueData[1]) && Velocity.Easings[valueData[1]]) || Type.isArray(valueData[1])) {\r\n\t\t\t\t\t\t\t\t\teasing = skipResolvingEasing ? valueData[1] : getEasing(valueData[1], opts.duration);\r\n\r\n\t\t\t\t\t\t\t\t\t/* Don't bother validating startValue's value now since the ensuing property cycling logic inherently does that. */\r\n\t\t\t\t\t\t\t\t\tstartValue = valueData[2];\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tstartValue = valueData[1] || valueData[2];\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t/* Handle the single-value format. */\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tendValue = valueData;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* Default to the call's easing if a per-property easing type was not defined. */\r\n\t\t\t\t\t\t\tif (!skipResolvingEasing) {\r\n\t\t\t\t\t\t\t\teasing = easing || opts.easing;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* If functions were passed in as values, pass the function the current element as its context,\r\n\t\t\t\t\t\t\t plus the element's index and the element set's size as arguments. Then, assign the returned value. */\r\n\t\t\t\t\t\t\tif (Type.isFunction(endValue)) {\r\n\t\t\t\t\t\t\t\tendValue = endValue.call(element, elementArrayIndex, elementsLength);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (Type.isFunction(startValue)) {\r\n\t\t\t\t\t\t\t\tstartValue = startValue.call(element, elementArrayIndex, elementsLength);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* Allow startValue to be left as undefined to indicate to the ensuing code that its value was not forcefed. */\r\n\t\t\t\t\t\t\treturn [endValue || 0, easing, startValue];\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tvar fixPropertyValue = function(property, valueData) {\r\n\t\t\t\t\t\t\t/* In case this property is a hook, there are circumstances where we will intend to work on the hook's root property and not the hooked subproperty. */\r\n\t\t\t\t\t\t\tvar rootProperty = CSS.Hooks.getRoot(property),\r\n\t\t\t\t\t\t\t\t\trootPropertyValue = false,\r\n\t\t\t\t\t\t\t\t\t/* Parse out endValue, easing, and startValue from the property's data. */\r\n\t\t\t\t\t\t\t\t\tendValue = valueData[0],\r\n\t\t\t\t\t\t\t\t\teasing = valueData[1],\r\n\t\t\t\t\t\t\t\t\tstartValue = valueData[2],\r\n\t\t\t\t\t\t\t\t\tpattern;\r\n\r\n\t\t\t\t\t\t\t/**************************\r\n\t\t\t\t\t\t\t Start Value Sourcing\r\n\t\t\t\t\t\t\t **************************/\r\n\r\n\t\t\t\t\t\t\t/* Other than for the dummy tween property, properties that are not supported by the browser (and do not have an associated normalization) will\r\n\t\t\t\t\t\t\t inherently produce no style changes when set, so they are skipped in order to decrease animation tick overhead.\r\n\t\t\t\t\t\t\t Property support is determined via prefixCheck(), which returns a false flag when no supported is detected. */\r\n\t\t\t\t\t\t\t/* Note: Since SVG elements have some of their properties directly applied as HTML attributes,\r\n\t\t\t\t\t\t\t there is no way to check for their explicit browser support, and so we skip skip this check for them. */\r\n\t\t\t\t\t\t\tif ((!data || !data.isSVG) && rootProperty !== \"tween\" && CSS.Names.prefixCheck(rootProperty)[1] === false && CSS.Normalizations.registered[rootProperty] === undefined) {\r\n\t\t\t\t\t\t\t\tif (Velocity.debug) {\r\n\t\t\t\t\t\t\t\t\tconsole.log(\"Skipping [\" + rootProperty + \"] due to a lack of browser support.\");\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* If the display option is being set to a non-\"none\" (e.g. \"block\") and opacity (filter on IE<=8) is being\r\n\t\t\t\t\t\t\t animated to an endValue of non-zero, the user's intention is to fade in from invisible, thus we forcefeed opacity\r\n\t\t\t\t\t\t\t a startValue of 0 if its startValue hasn't already been sourced by value transferring or prior forcefeeding. */\r\n\t\t\t\t\t\t\tif (((opts.display !== undefined && opts.display !== null && opts.display !== \"none\") || (opts.visibility !== undefined && opts.visibility !== \"hidden\")) && /opacity|filter/.test(property) && !startValue && endValue !== 0) {\r\n\t\t\t\t\t\t\t\tstartValue = 0;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* If values have been transferred from the previous Velocity call, extract the endValue and rootPropertyValue\r\n\t\t\t\t\t\t\t for all of the current call's properties that were *also* animated in the previous call. */\r\n\t\t\t\t\t\t\t/* Note: Value transferring can optionally be disabled by the user via the _cacheValues option. */\r\n\t\t\t\t\t\t\tif (opts._cacheValues && lastTweensContainer && lastTweensContainer[property]) {\r\n\t\t\t\t\t\t\t\tif (startValue === undefined) {\r\n\t\t\t\t\t\t\t\t\tstartValue = lastTweensContainer[property].endValue + lastTweensContainer[property].unitType;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t/* The previous call's rootPropertyValue is extracted from the element's data cache since that's the\r\n\t\t\t\t\t\t\t\t instance of rootPropertyValue that gets freshly updated by the tweening process, whereas the rootPropertyValue\r\n\t\t\t\t\t\t\t\t attached to the incoming lastTweensContainer is equal to the root property's value prior to any tweening. */\r\n\t\t\t\t\t\t\t\trootPropertyValue = data.rootPropertyValueCache[rootProperty];\r\n\t\t\t\t\t\t\t\t/* If values were not transferred from a previous Velocity call, query the DOM as needed. */\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t/* Handle hooked properties. */\r\n\t\t\t\t\t\t\t\tif (CSS.Hooks.registered[property]) {\r\n\t\t\t\t\t\t\t\t\tif (startValue === undefined) {\r\n\t\t\t\t\t\t\t\t\t\trootPropertyValue = CSS.getPropertyValue(element, rootProperty); /* GET */\r\n\t\t\t\t\t\t\t\t\t\t/* Note: The following getPropertyValue() call does not actually trigger a DOM query;\r\n\t\t\t\t\t\t\t\t\t\t getPropertyValue() will extract the hook from rootPropertyValue. */\r\n\t\t\t\t\t\t\t\t\t\tstartValue = CSS.getPropertyValue(element, property, rootPropertyValue);\r\n\t\t\t\t\t\t\t\t\t\t/* If startValue is already defined via forcefeeding, do not query the DOM for the root property's value;\r\n\t\t\t\t\t\t\t\t\t\t just grab rootProperty's zero-value template from CSS.Hooks. This overwrites the element's actual\r\n\t\t\t\t\t\t\t\t\t\t root property value (if one is set), but this is acceptable since the primary reason users forcefeed is\r\n\t\t\t\t\t\t\t\t\t\t to avoid DOM queries, and thus we likewise avoid querying the DOM for the root property's value. */\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t/* Grab this hook's zero-value template, e.g. \"0px 0px 0px black\". */\r\n\t\t\t\t\t\t\t\t\t\trootPropertyValue = CSS.Hooks.templates[rootProperty][1];\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t/* Handle non-hooked properties that haven't already been defined via forcefeeding. */\r\n\t\t\t\t\t\t\t\t} else if (startValue === undefined) {\r\n\t\t\t\t\t\t\t\t\tstartValue = CSS.getPropertyValue(element, property); /* GET */\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/**************************\r\n\t\t\t\t\t\t\t Value Data Extraction\r\n\t\t\t\t\t\t\t **************************/\r\n\r\n\t\t\t\t\t\t\tvar separatedValue,\r\n\t\t\t\t\t\t\t\t\tendValueUnitType,\r\n\t\t\t\t\t\t\t\t\tstartValueUnitType,\r\n\t\t\t\t\t\t\t\t\toperator = false;\r\n\r\n\t\t\t\t\t\t\t/* Separates a property value into its numeric value and its unit type. */\r\n\t\t\t\t\t\t\tvar separateValue = function(property, value) {\r\n\t\t\t\t\t\t\t\tvar unitType,\r\n\t\t\t\t\t\t\t\t\t\tnumericValue;\r\n\r\n\t\t\t\t\t\t\t\tnumericValue = (value || \"0\")\r\n\t\t\t\t\t\t\t\t\t\t.toString()\r\n\t\t\t\t\t\t\t\t\t\t.toLowerCase()\r\n\t\t\t\t\t\t\t\t\t\t/* Match the unit type at the end of the value. */\r\n\t\t\t\t\t\t\t\t\t\t.replace(/[%A-z]+$/, function(match) {\r\n\t\t\t\t\t\t\t\t\t\t\t/* Grab the unit type. */\r\n\t\t\t\t\t\t\t\t\t\t\tunitType = match;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t/* Strip the unit type off of value. */\r\n\t\t\t\t\t\t\t\t\t\t\treturn \"\";\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t/* If no unit type was supplied, assign one that is appropriate for this property (e.g. \"deg\" for rotateZ or \"px\" for width). */\r\n\t\t\t\t\t\t\t\tif (!unitType) {\r\n\t\t\t\t\t\t\t\t\tunitType = CSS.Values.getUnitType(property);\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\treturn [numericValue, unitType];\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\tif (startValue !== endValue && Type.isString(startValue) && Type.isString(endValue)) {\r\n\t\t\t\t\t\t\t\tpattern = \"\";\r\n\t\t\t\t\t\t\t\tvar iStart = 0, // index in startValue\r\n\t\t\t\t\t\t\t\t\t\tiEnd = 0, // index in endValue\r\n\t\t\t\t\t\t\t\t\t\taStart = [], // array of startValue numbers\r\n\t\t\t\t\t\t\t\t\t\taEnd = [], // array of endValue numbers\r\n\t\t\t\t\t\t\t\t\t\tinCalc = 0, // Keep track of being inside a \"calc()\" so we don't duplicate it\r\n\t\t\t\t\t\t\t\t\t\tinRGB = 0, // Keep track of being inside an RGB as we can't use fractional values\r\n\t\t\t\t\t\t\t\t\t\tinRGBA = 0; // Keep track of being inside an RGBA as we must pass fractional for the alpha channel\r\n\r\n\t\t\t\t\t\t\t\tstartValue = CSS.Hooks.fixColors(startValue);\r\n\t\t\t\t\t\t\t\tendValue = CSS.Hooks.fixColors(endValue);\r\n\t\t\t\t\t\t\t\twhile (iStart < startValue.length && iEnd < endValue.length) {\r\n\t\t\t\t\t\t\t\t\tvar cStart = startValue[iStart],\r\n\t\t\t\t\t\t\t\t\t\t\tcEnd = endValue[iEnd];\r\n\r\n\t\t\t\t\t\t\t\t\tif (/[\\d\\.-]/.test(cStart) && /[\\d\\.-]/.test(cEnd)) {\r\n\t\t\t\t\t\t\t\t\t\tvar tStart = cStart, // temporary character buffer\r\n\t\t\t\t\t\t\t\t\t\t\t\ttEnd = cEnd, // temporary character buffer\r\n\t\t\t\t\t\t\t\t\t\t\t\tdotStart = \".\", // Make sure we can only ever match a single dot in a decimal\r\n\t\t\t\t\t\t\t\t\t\t\t\tdotEnd = \".\"; // Make sure we can only ever match a single dot in a decimal\r\n\r\n\t\t\t\t\t\t\t\t\t\twhile (++iStart < startValue.length) {\r\n\t\t\t\t\t\t\t\t\t\t\tcStart = startValue[iStart];\r\n\t\t\t\t\t\t\t\t\t\t\tif (cStart === dotStart) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tdotStart = \"..\"; // Can never match two characters\r\n\t\t\t\t\t\t\t\t\t\t\t} else if (!/\\d/.test(cStart)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\ttStart += cStart;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\twhile (++iEnd < endValue.length) {\r\n\t\t\t\t\t\t\t\t\t\t\tcEnd = endValue[iEnd];\r\n\t\t\t\t\t\t\t\t\t\t\tif (cEnd === dotEnd) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tdotEnd = \"..\"; // Can never match two characters\r\n\t\t\t\t\t\t\t\t\t\t\t} else if (!/\\d/.test(cEnd)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\ttEnd += cEnd;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tvar uStart = CSS.Hooks.getUnit(startValue, iStart), // temporary unit type\r\n\t\t\t\t\t\t\t\t\t\t\t\tuEnd = CSS.Hooks.getUnit(endValue, iEnd); // temporary unit type\r\n\r\n\t\t\t\t\t\t\t\t\t\tiStart += uStart.length;\r\n\t\t\t\t\t\t\t\t\t\tiEnd += uEnd.length;\r\n\t\t\t\t\t\t\t\t\t\tif (uStart === uEnd) {\r\n\t\t\t\t\t\t\t\t\t\t\t// Same units\r\n\t\t\t\t\t\t\t\t\t\t\tif (tStart === tEnd) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t// Same numbers, so just copy over\r\n\t\t\t\t\t\t\t\t\t\t\t\tpattern += tStart + uStart;\r\n\t\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t// Different numbers, so store them\r\n\t\t\t\t\t\t\t\t\t\t\t\tpattern += \"{\" + aStart.length + (inRGB ? \"!\" : \"\") + \"}\" + uStart;\r\n\t\t\t\t\t\t\t\t\t\t\t\taStart.push(parseFloat(tStart));\r\n\t\t\t\t\t\t\t\t\t\t\t\taEnd.push(parseFloat(tEnd));\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t// Different units, so put into a \"calc(from + to)\" and animate each side to/from zero\r\n\t\t\t\t\t\t\t\t\t\t\tvar nStart = parseFloat(tStart),\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tnEnd = parseFloat(tEnd);\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tpattern += (inCalc < 5 ? \"calc\" : \"\") + \"(\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t+ (nStart ? \"{\" + aStart.length + (inRGB ? \"!\" : \"\") + \"}\" : \"0\") + uStart\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t+ \" + \"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t+ (nEnd ? \"{\" + (aStart.length + (nStart ? 1 : 0)) + (inRGB ? \"!\" : \"\") + \"}\" : \"0\") + uEnd\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t+ \")\";\r\n\t\t\t\t\t\t\t\t\t\t\tif (nStart) {\r\n\t\t\t\t\t\t\t\t\t\t\t\taStart.push(nStart);\r\n\t\t\t\t\t\t\t\t\t\t\t\taEnd.push(0);\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tif (nEnd) {\r\n\t\t\t\t\t\t\t\t\t\t\t\taStart.push(0);\r\n\t\t\t\t\t\t\t\t\t\t\t\taEnd.push(nEnd);\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t} else if (cStart === cEnd) {\r\n\t\t\t\t\t\t\t\t\t\tpattern += cStart;\r\n\t\t\t\t\t\t\t\t\t\tiStart++;\r\n\t\t\t\t\t\t\t\t\t\tiEnd++;\r\n\t\t\t\t\t\t\t\t\t\t// Keep track of being inside a calc()\r\n\t\t\t\t\t\t\t\t\t\tif (inCalc === 0 && cStart === \"c\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inCalc === 1 && cStart === \"a\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inCalc === 2 && cStart === \"l\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inCalc === 3 && cStart === \"c\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inCalc >= 4 && cStart === \"(\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\t\t\t\tinCalc++;\r\n\t\t\t\t\t\t\t\t\t\t} else if ((inCalc && inCalc < 5)\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inCalc >= 4 && cStart === \")\" && --inCalc < 5) {\r\n\t\t\t\t\t\t\t\t\t\t\tinCalc = 0;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t// Keep track of being inside an rgb() / rgba()\r\n\t\t\t\t\t\t\t\t\t\tif (inRGB === 0 && cStart === \"r\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inRGB === 1 && cStart === \"g\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inRGB === 2 && cStart === \"b\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inRGB === 3 && cStart === \"a\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inRGB >= 3 && cStart === \"(\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\t\t\t\tif (inRGB === 3 && cStart === \"a\") {\r\n\t\t\t\t\t\t\t\t\t\t\t\tinRGBA = 1;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tinRGB++;\r\n\t\t\t\t\t\t\t\t\t\t} else if (inRGBA && cStart === \",\") {\r\n\t\t\t\t\t\t\t\t\t\t\tif (++inRGBA > 3) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tinRGB = inRGBA = 0;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t} else if ((inRGBA && inRGB < (inRGBA ? 5 : 4))\r\n\t\t\t\t\t\t\t\t\t\t\t\t|| inRGB >= (inRGBA ? 4 : 3) && cStart === \")\" && --inRGB < (inRGBA ? 5 : 4)) {\r\n\t\t\t\t\t\t\t\t\t\t\tinRGB = inRGBA = 0;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\tinCalc = 0;\r\n\t\t\t\t\t\t\t\t\t\t// TODO: changing units, fixing colours\r\n\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (iStart !== startValue.length || iEnd !== endValue.length) {\r\n\t\t\t\t\t\t\t\t\tif (Velocity.debug) {\r\n\t\t\t\t\t\t\t\t\t\tconsole.error(\"Trying to pattern match mis-matched strings [\\\"\" + endValue + \"\\\", \\\"\" + startValue + \"\\\"]\");\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tpattern = undefined;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (pattern) {\r\n\t\t\t\t\t\t\t\t\tif (aStart.length) {\r\n\t\t\t\t\t\t\t\t\t\tif (Velocity.debug) {\r\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(\"Pattern found \\\"\" + pattern + \"\\\" -> \", aStart, aEnd, \"[\" + startValue + \",\" + endValue + \"]\");\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tstartValue = aStart;\r\n\t\t\t\t\t\t\t\t\t\tendValue = aEnd;\r\n\t\t\t\t\t\t\t\t\t\tendValueUnitType = startValueUnitType = \"\";\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\tpattern = undefined;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (!pattern) {\r\n\t\t\t\t\t\t\t\t/* Separate startValue. */\r\n\t\t\t\t\t\t\t\tseparatedValue = separateValue(property, startValue);\r\n\t\t\t\t\t\t\t\tstartValue = separatedValue[0];\r\n\t\t\t\t\t\t\t\tstartValueUnitType = separatedValue[1];\r\n\r\n\t\t\t\t\t\t\t\t/* Separate endValue, and extract a value operator (e.g. \"+=\", \"-=\") if one exists. */\r\n\t\t\t\t\t\t\t\tseparatedValue = separateValue(property, endValue);\r\n\t\t\t\t\t\t\t\tendValue = separatedValue[0].replace(/^([+-\\/*])=/, function(match, subMatch) {\r\n\t\t\t\t\t\t\t\t\toperator = subMatch;\r\n\r\n\t\t\t\t\t\t\t\t\t/* Strip the operator off of the value. */\r\n\t\t\t\t\t\t\t\t\treturn \"\";\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\tendValueUnitType = separatedValue[1];\r\n\r\n\t\t\t\t\t\t\t\t/* Parse float values from endValue and startValue. Default to 0 if NaN is returned. */\r\n\t\t\t\t\t\t\t\tstartValue = parseFloat(startValue) || 0;\r\n\t\t\t\t\t\t\t\tendValue = parseFloat(endValue) || 0;\r\n\r\n\t\t\t\t\t\t\t\t/***************************************\r\n\t\t\t\t\t\t\t\t Property-Specific Value Conversion\r\n\t\t\t\t\t\t\t\t ***************************************/\r\n\r\n\t\t\t\t\t\t\t\t/* Custom support for properties that don't actually accept the % unit type, but where pollyfilling is trivial and relatively foolproof. */\r\n\t\t\t\t\t\t\t\tif (endValueUnitType === \"%\") {\r\n\t\t\t\t\t\t\t\t\t/* A %-value fontSize/lineHeight is relative to the parent's fontSize (as opposed to the parent's dimensions),\r\n\t\t\t\t\t\t\t\t\t which is identical to the em unit's behavior, so we piggyback off of that. */\r\n\t\t\t\t\t\t\t\t\tif (/^(fontSize|lineHeight)$/.test(property)) {\r\n\t\t\t\t\t\t\t\t\t\t/* Convert % into an em decimal value. */\r\n\t\t\t\t\t\t\t\t\t\tendValue = endValue / 100;\r\n\t\t\t\t\t\t\t\t\t\tendValueUnitType = \"em\";\r\n\t\t\t\t\t\t\t\t\t\t/* For scaleX and scaleY, convert the value into its decimal format and strip off the unit type. */\r\n\t\t\t\t\t\t\t\t\t} else if (/^scale/.test(property)) {\r\n\t\t\t\t\t\t\t\t\t\tendValue = endValue / 100;\r\n\t\t\t\t\t\t\t\t\t\tendValueUnitType = \"\";\r\n\t\t\t\t\t\t\t\t\t\t/* For RGB components, take the defined percentage of 255 and strip off the unit type. */\r\n\t\t\t\t\t\t\t\t\t} else if (/(Red|Green|Blue)$/i.test(property)) {\r\n\t\t\t\t\t\t\t\t\t\tendValue = (endValue / 100) * 255;\r\n\t\t\t\t\t\t\t\t\t\tendValueUnitType = \"\";\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/***************************\r\n\t\t\t\t\t\t\t Unit Ratio Calculation\r\n\t\t\t\t\t\t\t ***************************/\r\n\r\n\t\t\t\t\t\t\t/* When queried, the browser returns (most) CSS property values in pixels. Therefore, if an endValue with a unit type of\r\n\t\t\t\t\t\t\t %, em, or rem is animated toward, startValue must be converted from pixels into the same unit type as endValue in order\r\n\t\t\t\t\t\t\t for value manipulation logic (increment/decrement) to proceed. Further, if the startValue was forcefed or transferred\r\n\t\t\t\t\t\t\t from a previous call, startValue may also not be in pixels. Unit conversion logic therefore consists of two steps:\r\n\t\t\t\t\t\t\t 1) Calculating the ratio of %/em/rem/vh/vw relative to pixels\r\n\t\t\t\t\t\t\t 2) Converting startValue into the same unit of measurement as endValue based on these ratios. */\r\n\t\t\t\t\t\t\t/* Unit conversion ratios are calculated by inserting a sibling node next to the target node, copying over its position property,\r\n\t\t\t\t\t\t\t setting values with the target unit type then comparing the returned pixel value. */\r\n\t\t\t\t\t\t\t/* Note: Even if only one of these unit types is being animated, all unit ratios are calculated at once since the overhead\r\n\t\t\t\t\t\t\t of batching the SETs and GETs together upfront outweights the potential overhead\r\n\t\t\t\t\t\t\t of layout thrashing caused by re-querying for uncalculated ratios for subsequently-processed properties. */\r\n\t\t\t\t\t\t\t/* Todo: Shift this logic into the calls' first tick instance so that it's synced with RAF. */\r\n\t\t\t\t\t\t\tvar calculateUnitRatios = function() {\r\n\r\n\t\t\t\t\t\t\t\t/************************\r\n\t\t\t\t\t\t\t\t Same Ratio Checks\r\n\t\t\t\t\t\t\t\t ************************/\r\n\r\n\t\t\t\t\t\t\t\t/* The properties below are used to determine whether the element differs sufficiently from this call's\r\n\t\t\t\t\t\t\t\t previously iterated element to also differ in its unit conversion ratios. If the properties match up with those\r\n\t\t\t\t\t\t\t\t of the prior element, the prior element's conversion ratios are used. Like most optimizations in Velocity,\r\n\t\t\t\t\t\t\t\t this is done to minimize DOM querying. */\r\n\t\t\t\t\t\t\t\tvar sameRatioIndicators = {\r\n\t\t\t\t\t\t\t\t\tmyParent: element.parentNode || document.body, /* GET */\r\n\t\t\t\t\t\t\t\t\tposition: CSS.getPropertyValue(element, \"position\"), /* GET */\r\n\t\t\t\t\t\t\t\t\tfontSize: CSS.getPropertyValue(element, \"fontSize\") /* GET */\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t/* Determine if the same % ratio can be used. % is based on the element's position value and its parent's width and height dimensions. */\r\n\t\t\t\t\t\t\t\t\t\tsamePercentRatio = ((sameRatioIndicators.position === callUnitConversionData.lastPosition) && (sameRatioIndicators.myParent === callUnitConversionData.lastParent)),\r\n\t\t\t\t\t\t\t\t\t\t/* Determine if the same em ratio can be used. em is relative to the element's fontSize. */\r\n\t\t\t\t\t\t\t\t\t\tsameEmRatio = (sameRatioIndicators.fontSize === callUnitConversionData.lastFontSize);\r\n\r\n\t\t\t\t\t\t\t\t/* Store these ratio indicators call-wide for the next element to compare against. */\r\n\t\t\t\t\t\t\t\tcallUnitConversionData.lastParent = sameRatioIndicators.myParent;\r\n\t\t\t\t\t\t\t\tcallUnitConversionData.lastPosition = sameRatioIndicators.position;\r\n\t\t\t\t\t\t\t\tcallUnitConversionData.lastFontSize = sameRatioIndicators.fontSize;\r\n\r\n\t\t\t\t\t\t\t\t/***************************\r\n\t\t\t\t\t\t\t\t Element-Specific Units\r\n\t\t\t\t\t\t\t\t ***************************/\r\n\r\n\t\t\t\t\t\t\t\t/* Note: IE8 rounds to the nearest pixel when returning CSS values, thus we perform conversions using a measurement\r\n\t\t\t\t\t\t\t\t of 100 (instead of 1) to give our ratios a precision of at least 2 decimal values. */\r\n\t\t\t\t\t\t\t\tvar measurement = 100,\r\n\t\t\t\t\t\t\t\t\t\tunitRatios = {};\r\n\r\n\t\t\t\t\t\t\t\tif (!sameEmRatio || !samePercentRatio) {\r\n\t\t\t\t\t\t\t\t\tvar dummy = data && data.isSVG ? document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\") : document.createElement(\"div\");\r\n\r\n\t\t\t\t\t\t\t\t\tVelocity.init(dummy);\r\n\t\t\t\t\t\t\t\t\tsameRatioIndicators.myParent.appendChild(dummy);\r\n\r\n\t\t\t\t\t\t\t\t\t/* To accurately and consistently calculate conversion ratios, the element's cascaded overflow and box-sizing are stripped.\r\n\t\t\t\t\t\t\t\t\t Similarly, since width/height can be artificially constrained by their min-/max- equivalents, these are controlled for as well. */\r\n\t\t\t\t\t\t\t\t\t/* Note: Overflow must be also be controlled for per-axis since the overflow property overwrites its per-axis values. */\r\n\t\t\t\t\t\t\t\t\t$.each([\"overflow\", \"overflowX\", \"overflowY\"], function(i, property) {\r\n\t\t\t\t\t\t\t\t\t\tVelocity.CSS.setPropertyValue(dummy, property, \"hidden\");\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\tVelocity.CSS.setPropertyValue(dummy, \"position\", sameRatioIndicators.position);\r\n\t\t\t\t\t\t\t\t\tVelocity.CSS.setPropertyValue(dummy, \"fontSize\", sameRatioIndicators.fontSize);\r\n\t\t\t\t\t\t\t\t\tVelocity.CSS.setPropertyValue(dummy, \"boxSizing\", \"content-box\");\r\n\r\n\t\t\t\t\t\t\t\t\t/* width and height act as our proxy properties for measuring the horizontal and vertical % ratios. */\r\n\t\t\t\t\t\t\t\t\t$.each([\"minWidth\", \"maxWidth\", \"width\", \"minHeight\", \"maxHeight\", \"height\"], function(i, property) {\r\n\t\t\t\t\t\t\t\t\t\tVelocity.CSS.setPropertyValue(dummy, property, measurement + \"%\");\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t/* paddingLeft arbitrarily acts as our proxy property for the em ratio. */\r\n\t\t\t\t\t\t\t\t\tVelocity.CSS.setPropertyValue(dummy, \"paddingLeft\", measurement + \"em\");\r\n\r\n\t\t\t\t\t\t\t\t\t/* Divide the returned value by the measurement to get the ratio between 1% and 1px. Default to 1 since working with 0 can produce Infinite. */\r\n\t\t\t\t\t\t\t\t\tunitRatios.percentToPxWidth = callUnitConversionData.lastPercentToPxWidth = (parseFloat(CSS.getPropertyValue(dummy, \"width\", null, true)) || 1) / measurement; /* GET */\r\n\t\t\t\t\t\t\t\t\tunitRatios.percentToPxHeight = callUnitConversionData.lastPercentToPxHeight = (parseFloat(CSS.getPropertyValue(dummy, \"height\", null, true)) || 1) / measurement; /* GET */\r\n\t\t\t\t\t\t\t\t\tunitRatios.emToPx = callUnitConversionData.lastEmToPx = (parseFloat(CSS.getPropertyValue(dummy, \"paddingLeft\")) || 1) / measurement; /* GET */\r\n\r\n\t\t\t\t\t\t\t\t\tsameRatioIndicators.myParent.removeChild(dummy);\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tunitRatios.emToPx = callUnitConversionData.lastEmToPx;\r\n\t\t\t\t\t\t\t\t\tunitRatios.percentToPxWidth = callUnitConversionData.lastPercentToPxWidth;\r\n\t\t\t\t\t\t\t\t\tunitRatios.percentToPxHeight = callUnitConversionData.lastPercentToPxHeight;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t/***************************\r\n\t\t\t\t\t\t\t\t Element-Agnostic Units\r\n\t\t\t\t\t\t\t\t ***************************/\r\n\r\n\t\t\t\t\t\t\t\t/* Whereas % and em ratios are determined on a per-element basis, the rem unit only needs to be checked\r\n\t\t\t\t\t\t\t\t once per call since it's exclusively dependant upon document.body's fontSize. If this is the first time\r\n\t\t\t\t\t\t\t\t that calculateUnitRatios() is being run during this call, remToPx will still be set to its default value of null,\r\n\t\t\t\t\t\t\t\t so we calculate it now. */\r\n\t\t\t\t\t\t\t\tif (callUnitConversionData.remToPx === null) {\r\n\t\t\t\t\t\t\t\t\t/* Default to browsers' default fontSize of 16px in the case of 0. */\r\n\t\t\t\t\t\t\t\t\tcallUnitConversionData.remToPx = parseFloat(CSS.getPropertyValue(document.body, \"fontSize\")) || 16; /* GET */\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t/* Similarly, viewport units are %-relative to the window's inner dimensions. */\r\n\t\t\t\t\t\t\t\tif (callUnitConversionData.vwToPx === null) {\r\n\t\t\t\t\t\t\t\t\tcallUnitConversionData.vwToPx = parseFloat(window.innerWidth) / 100; /* GET */\r\n\t\t\t\t\t\t\t\t\tcallUnitConversionData.vhToPx = parseFloat(window.innerHeight) / 100; /* GET */\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tunitRatios.remToPx = callUnitConversionData.remToPx;\r\n\t\t\t\t\t\t\t\tunitRatios.vwToPx = callUnitConversionData.vwToPx;\r\n\t\t\t\t\t\t\t\tunitRatios.vhToPx = callUnitConversionData.vhToPx;\r\n\r\n\t\t\t\t\t\t\t\tif (Velocity.debug >= 1) {\r\n\t\t\t\t\t\t\t\t\tconsole.log(\"Unit ratios: \" + JSON.stringify(unitRatios), element);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\treturn unitRatios;\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t/********************\r\n\t\t\t\t\t\t\t Unit Conversion\r\n\t\t\t\t\t\t\t ********************/\r\n\r\n\t\t\t\t\t\t\t/* The * and / operators, which are not passed in with an associated unit, inherently use startValue's unit. Skip value and unit conversion. */\r\n\t\t\t\t\t\t\tif (/[\\/*]/.test(operator)) {\r\n\t\t\t\t\t\t\t\tendValueUnitType = startValueUnitType;\r\n\t\t\t\t\t\t\t\t/* If startValue and endValue differ in unit type, convert startValue into the same unit type as endValue so that if endValueUnitType\r\n\t\t\t\t\t\t\t\t is a relative unit (%, em, rem), the values set during tweening will continue to be accurately relative even if the metrics they depend\r\n\t\t\t\t\t\t\t\t on are dynamically changing during the course of the animation. Conversely, if we always normalized into px and used px for setting values, the px ratio\r\n\t\t\t\t\t\t\t\t would become stale if the original unit being animated toward was relative and the underlying metrics change during the animation. */\r\n\t\t\t\t\t\t\t\t/* Since 0 is 0 in any unit type, no conversion is necessary when startValue is 0 -- we just start at 0 with endValueUnitType. */\r\n\t\t\t\t\t\t\t} else if ((startValueUnitType !== endValueUnitType) && startValue !== 0) {\r\n\t\t\t\t\t\t\t\t/* Unit conversion is also skipped when endValue is 0, but *startValueUnitType* must be used for tween values to remain accurate. */\r\n\t\t\t\t\t\t\t\t/* Note: Skipping unit conversion here means that if endValueUnitType was originally a relative unit, the animation won't relatively\r\n\t\t\t\t\t\t\t\t match the underlying metrics if they change, but this is acceptable since we're animating toward invisibility instead of toward visibility,\r\n\t\t\t\t\t\t\t\t which remains past the point of the animation's completion. */\r\n\t\t\t\t\t\t\t\tif (endValue === 0) {\r\n\t\t\t\t\t\t\t\t\tendValueUnitType = startValueUnitType;\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t/* By this point, we cannot avoid unit conversion (it's undesirable since it causes layout thrashing).\r\n\t\t\t\t\t\t\t\t\t If we haven't already, we trigger calculateUnitRatios(), which runs once per element per call. */\r\n\t\t\t\t\t\t\t\t\telementUnitConversionData = elementUnitConversionData || calculateUnitRatios();\r\n\r\n\t\t\t\t\t\t\t\t\t/* The following RegEx matches CSS properties that have their % values measured relative to the x-axis. */\r\n\t\t\t\t\t\t\t\t\t/* Note: W3C spec mandates that all of margin and padding's properties (even top and bottom) are %-relative to the *width* of the parent element. */\r\n\t\t\t\t\t\t\t\t\tvar axis = (/margin|padding|left|right|width|text|word|letter/i.test(property) || /X$/.test(property) || property === \"x\") ? \"x\" : \"y\";\r\n\r\n\t\t\t\t\t\t\t\t\t/* In order to avoid generating n^2 bespoke conversion functions, unit conversion is a two-step process:\r\n\t\t\t\t\t\t\t\t\t 1) Convert startValue into pixels. 2) Convert this new pixel value into endValue's unit type. */\r\n\t\t\t\t\t\t\t\t\tswitch (startValueUnitType) {\r\n\t\t\t\t\t\t\t\t\t\tcase \"%\":\r\n\t\t\t\t\t\t\t\t\t\t\t/* Note: translateX and translateY are the only properties that are %-relative to an element's own dimensions -- not its parent's dimensions.\r\n\t\t\t\t\t\t\t\t\t\t\t Velocity does not include a special conversion process to account for this behavior. Therefore, animating translateX/Y from a % value\r\n\t\t\t\t\t\t\t\t\t\t\t to a non-% value will produce an incorrect start value. Fortunately, this sort of cross-unit conversion is rarely done by users in practice. */\r\n\t\t\t\t\t\t\t\t\t\t\tstartValue *= (axis === \"x\" ? elementUnitConversionData.percentToPxWidth : elementUnitConversionData.percentToPxHeight);\r\n\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\t\t\tcase \"px\":\r\n\t\t\t\t\t\t\t\t\t\t\t/* px acts as our midpoint in the unit conversion process; do nothing. */\r\n\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\t\t\t\tstartValue *= elementUnitConversionData[startValueUnitType + \"ToPx\"];\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t/* Invert the px ratios to convert into to the target unit. */\r\n\t\t\t\t\t\t\t\t\tswitch (endValueUnitType) {\r\n\t\t\t\t\t\t\t\t\t\tcase \"%\":\r\n\t\t\t\t\t\t\t\t\t\t\tstartValue *= 1 / (axis === \"x\" ? elementUnitConversionData.percentToPxWidth : elementUnitConversionData.percentToPxHeight);\r\n\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\t\t\tcase \"px\":\r\n\t\t\t\t\t\t\t\t\t\t\t/* startValue is already in px, do nothing; we're done. */\r\n\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\t\t\t\tstartValue *= 1 / elementUnitConversionData[endValueUnitType + \"ToPx\"];\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/*********************\r\n\t\t\t\t\t\t\t Relative Values\r\n\t\t\t\t\t\t\t *********************/\r\n\r\n\t\t\t\t\t\t\t/* Operator logic must be performed last since it requires unit-normalized start and end values. */\r\n\t\t\t\t\t\t\t/* Note: Relative *percent values* do not behave how most people think; while one would expect \"+=50%\"\r\n\t\t\t\t\t\t\t to increase the property 1.5x its current value, it in fact increases the percent units in absolute terms:\r\n\t\t\t\t\t\t\t 50 points is added on top of the current % value. */\r\n\t\t\t\t\t\t\tswitch (operator) {\r\n\t\t\t\t\t\t\t\tcase \"+\":\r\n\t\t\t\t\t\t\t\t\tendValue = startValue + endValue;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\tcase \"-\":\r\n\t\t\t\t\t\t\t\t\tendValue = startValue - endValue;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\tcase \"*\":\r\n\t\t\t\t\t\t\t\t\tendValue = startValue * endValue;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\t\tcase \"/\":\r\n\t\t\t\t\t\t\t\t\tendValue = startValue / endValue;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/**************************\r\n\t\t\t\t\t\t\t tweensContainer Push\r\n\t\t\t\t\t\t\t **************************/\r\n\r\n\t\t\t\t\t\t\t/* Construct the per-property tween object, and push it to the element's tweensContainer. */\r\n\t\t\t\t\t\t\ttweensContainer[property] = {\r\n\t\t\t\t\t\t\t\trootPropertyValue: rootPropertyValue,\r\n\t\t\t\t\t\t\t\tstartValue: startValue,\r\n\t\t\t\t\t\t\t\tcurrentValue: startValue,\r\n\t\t\t\t\t\t\t\tendValue: endValue,\r\n\t\t\t\t\t\t\t\tunitType: endValueUnitType,\r\n\t\t\t\t\t\t\t\teasing: easing\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\tif (pattern) {\r\n\t\t\t\t\t\t\t\ttweensContainer[property].pattern = pattern;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (Velocity.debug) {\r\n\t\t\t\t\t\t\t\tconsole.log(\"tweensContainer (\" + property + \"): \" + JSON.stringify(tweensContainer[property]), element);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t/* Create a tween out of each property, and append its associated data to tweensContainer. */\r\n\t\t\t\t\t\tfor (var property in propertiesMap) {\r\n\r\n\t\t\t\t\t\t\tif (!propertiesMap.hasOwnProperty(property)) {\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t/* The original property name's format must be used for the parsePropertyValue() lookup,\r\n\t\t\t\t\t\t\t but we then use its camelCase styling to normalize it for manipulation. */\r\n\t\t\t\t\t\t\tvar propertyName = CSS.Names.camelCase(property),\r\n\t\t\t\t\t\t\t\t\tvalueData = parsePropertyValue(propertiesMap[property]);\r\n\r\n\t\t\t\t\t\t\t/* Find shorthand color properties that have been passed a hex string. */\r\n\t\t\t\t\t\t\t/* Would be quicker to use CSS.Lists.colors.includes() if possible */\r\n\t\t\t\t\t\t\tif (_inArray(CSS.Lists.colors, propertyName)) {\r\n\t\t\t\t\t\t\t\t/* Parse the value data for each shorthand. */\r\n\t\t\t\t\t\t\t\tvar endValue = valueData[0],\r\n\t\t\t\t\t\t\t\t\t\teasing = valueData[1],\r\n\t\t\t\t\t\t\t\t\t\tstartValue = valueData[2];\r\n\r\n\t\t\t\t\t\t\t\tif (CSS.RegEx.isHex.test(endValue)) {\r\n\t\t\t\t\t\t\t\t\t/* Convert the hex strings into their RGB component arrays. */\r\n\t\t\t\t\t\t\t\t\tvar colorComponents = [\"Red\", \"Green\", \"Blue\"],\r\n\t\t\t\t\t\t\t\t\t\t\tendValueRGB = CSS.Values.hexToRgb(endValue),\r\n\t\t\t\t\t\t\t\t\t\t\tstartValueRGB = startValue ? CSS.Values.hexToRgb(startValue) : undefined;\r\n\r\n\t\t\t\t\t\t\t\t\t/* Inject the RGB component tweens into propertiesMap. */\r\n\t\t\t\t\t\t\t\t\tfor (var i = 0; i < colorComponents.length; i++) {\r\n\t\t\t\t\t\t\t\t\t\tvar dataArray = [endValueRGB[i]];\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (easing) {\r\n\t\t\t\t\t\t\t\t\t\t\tdataArray.push(easing);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (startValueRGB !== undefined) {\r\n\t\t\t\t\t\t\t\t\t\t\tdataArray.push(startValueRGB[i]);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tfixPropertyValue(propertyName + colorComponents[i], dataArray);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t/* If we have replaced a shortcut color value then don't update the standard property name */\r\n\t\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tfixPropertyValue(propertyName, valueData);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Along with its property data, store a reference to the element itself onto tweensContainer. */\r\n\t\t\t\t\t\ttweensContainer.element = element;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/*****************\r\n\t\t\t\t\t Call Push\r\n\t\t\t\t\t *****************/\r\n\r\n\t\t\t\t\t/* Note: tweensContainer can be empty if all of the properties in this call's property map were skipped due to not\r\n\t\t\t\t\t being supported by the browser. The element property is used for checking that the tweensContainer has been appended to. */\r\n\t\t\t\t\tif (tweensContainer.element) {\r\n\t\t\t\t\t\t/* Apply the \"velocity-animating\" indicator class. */\r\n\t\t\t\t\t\tCSS.Values.addClass(element, \"velocity-animating\");\r\n\r\n\t\t\t\t\t\t/* The call array houses the tweensContainers for each element being animated in the current call. */\r\n\t\t\t\t\t\tcall.push(tweensContainer);\r\n\r\n\t\t\t\t\t\tdata = Data(element);\r\n\r\n\t\t\t\t\t\tif (data) {\r\n\t\t\t\t\t\t\t/* Store the tweensContainer and options if we're working on the default effects queue, so that they can be used by the reverse command. */\r\n\t\t\t\t\t\t\tif (opts.queue === \"\") {\r\n\r\n\t\t\t\t\t\t\t\tdata.tweensContainer = tweensContainer;\r\n\t\t\t\t\t\t\t\tdata.opts = opts;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* Switch on the element's animating flag. */\r\n\t\t\t\t\t\t\tdata.isAnimating = true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Once the final element in this call's element set has been processed, push the call array onto\r\n\t\t\t\t\t\t Velocity.State.calls for the animation tick to immediately begin processing. */\r\n\t\t\t\t\t\tif (elementsIndex === elementsLength - 1) {\r\n\t\t\t\t\t\t\t/* Add the current call plus its associated metadata (the element set and the call's options) onto the global call container.\r\n\t\t\t\t\t\t\t Anything on this call container is subjected to tick() processing. */\r\n\t\t\t\t\t\t\tVelocity.State.calls.push([call, elements, opts, null, promiseData.resolver, null, 0]);\r\n\r\n\t\t\t\t\t\t\t/* If the animation tick isn't running, start it. (Velocity shuts it off when there are no active calls to process.) */\r\n\t\t\t\t\t\t\tif (Velocity.State.isTicking === false) {\r\n\t\t\t\t\t\t\t\tVelocity.State.isTicking = true;\r\n\r\n\t\t\t\t\t\t\t\t/* Start the tick loop. */\r\n\t\t\t\t\t\t\t\ttick();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\telementsIndex++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* When the queue option is set to false, the call skips the element's queue and fires immediately. */\r\n\t\t\t\tif (opts.queue === false) {\r\n\t\t\t\t\t/* Since this buildQueue call doesn't respect the element's existing queue (which is where a delay option would have been appended),\r\n\t\t\t\t\t we manually inject the delay property here with an explicit setTimeout. */\r\n\t\t\t\t\tif (opts.delay) {\r\n\r\n\t\t\t\t\t\t/* Temporarily store delayed elements to facilitate access for global pause/resume */\r\n\t\t\t\t\t\tvar callIndex = Velocity.State.delayedElements.count++;\r\n\t\t\t\t\t\tVelocity.State.delayedElements[callIndex] = element;\r\n\r\n\t\t\t\t\t\tvar delayComplete = (function(index) {\r\n\t\t\t\t\t\t\treturn function() {\r\n\t\t\t\t\t\t\t\t/* Clear the temporary element */\r\n\t\t\t\t\t\t\t\tVelocity.State.delayedElements[index] = false;\r\n\r\n\t\t\t\t\t\t\t\t/* Finally, issue the call */\r\n\t\t\t\t\t\t\t\tbuildQueue();\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t})(callIndex);\r\n\r\n\t\t\t\t\t\tData(element).delayBegin = (new Date()).getTime();\r\n\t\t\t\t\t\tData(element).delay = parseFloat(opts.delay);\r\n\t\t\t\t\t\tData(element).delayTimer = {\r\n\t\t\t\t\t\t\tsetTimeout: setTimeout(buildQueue, parseFloat(opts.delay)),\r\n\t\t\t\t\t\t\tnext: delayComplete\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tbuildQueue();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t/* Otherwise, the call undergoes element queueing as normal. */\r\n\t\t\t\t\t/* Note: To interoperate with jQuery, Velocity uses jQuery's own $.queue() stack for queuing logic. */\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$.queue(element, opts.queue, function(next, clearQueue) {\r\n\t\t\t\t\t\t/* If the clearQueue flag was passed in by the stop command, resolve this call's promise. (Promises can only be resolved once,\r\n\t\t\t\t\t\t so it's fine if this is repeatedly triggered for each element in the associated call.) */\r\n\t\t\t\t\t\tif (clearQueue === true) {\r\n\t\t\t\t\t\t\tif (promiseData.promise) {\r\n\t\t\t\t\t\t\t\tpromiseData.resolver(elements);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* Do not continue with animation queueing. */\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* This flag indicates to the upcoming completeCall() function that this queue entry was initiated by Velocity.\r\n\t\t\t\t\t\t See completeCall() for further details. */\r\n\t\t\t\t\t\tVelocity.velocityQueueEntryFlag = true;\r\n\r\n\t\t\t\t\t\tbuildQueue(next);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/*********************\r\n\t\t\t\t Auto-Dequeuing\r\n\t\t\t\t *********************/\r\n\r\n\t\t\t\t/* As per jQuery's $.queue() behavior, to fire the first non-custom-queue entry on an element, the element\r\n\t\t\t\t must be dequeued if its queue stack consists *solely* of the current call. (This can be determined by checking\r\n\t\t\t\t for the \"inprogress\" item that jQuery prepends to active queue stack arrays.) Regardless, whenever the element's\r\n\t\t\t\t queue is further appended with additional items -- including $.delay()'s or even $.animate() calls, the queue's\r\n\t\t\t\t first entry is automatically fired. This behavior contrasts that of custom queues, which never auto-fire. */\r\n\t\t\t\t/* Note: When an element set is being subjected to a non-parallel Velocity call, the animation will not begin until\r\n\t\t\t\t each one of the elements in the set has reached the end of its individually pre-existing queue chain. */\r\n\t\t\t\t/* Note: Unfortunately, most people don't fully grasp jQuery's powerful, yet quirky, $.queue() function.\r\n\t\t\t\t Lean more here: http://stackoverflow.com/questions/1058158/can-somebody-explain-jquery-queue-to-me */\r\n\t\t\t\tif ((opts.queue === \"\" || opts.queue === \"fx\") && $.queue(element)[0] !== \"inprogress\") {\r\n\t\t\t\t\t$.dequeue(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/**************************\r\n\t\t\t Element Set Iteration\r\n\t\t\t **************************/\r\n\r\n\t\t\t/* If the \"nodeType\" property exists on the elements variable, we're animating a single element.\r\n\t\t\t Place it in an array so that $.each() can iterate over it. */\r\n\t\t\t$.each(elements, function(i, element) {\r\n\t\t\t\t/* Ensure each element in a set has a nodeType (is a real element) to avoid throwing errors. */\r\n\t\t\t\tif (Type.isNode(element)) {\r\n\t\t\t\t\tprocessElement(element, i);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t/******************\r\n\t\t\t Option: Loop\r\n\t\t\t ******************/\r\n\r\n\t\t\t/* The loop option accepts an integer indicating how many times the element should loop between the values in the\r\n\t\t\t current call's properties map and the element's property values prior to this call. */\r\n\t\t\t/* Note: The loop option's logic is performed here -- after element processing -- because the current call needs\r\n\t\t\t to undergo its queue insertion prior to the loop option generating its series of constituent \"reverse\" calls,\r\n\t\t\t which chain after the current call. Two reverse calls (two \"alternations\") constitute one loop. */\r\n\t\t\topts = $.extend({}, Velocity.defaults, options);\r\n\t\t\topts.loop = parseInt(opts.loop, 10);\r\n\t\t\tvar reverseCallsCount = (opts.loop * 2) - 1;\r\n\r\n\t\t\tif (opts.loop) {\r\n\t\t\t\t/* Double the loop count to convert it into its appropriate number of \"reverse\" calls.\r\n\t\t\t\t Subtract 1 from the resulting value since the current call is included in the total alternation count. */\r\n\t\t\t\tfor (var x = 0; x < reverseCallsCount; x++) {\r\n\t\t\t\t\t/* Since the logic for the reverse action occurs inside Queueing and therefore this call's options object\r\n\t\t\t\t\t isn't parsed until then as well, the current call's delay option must be explicitly passed into the reverse\r\n\t\t\t\t\t call so that the delay logic that occurs inside *Pre-Queueing* can process it. */\r\n\t\t\t\t\tvar reverseOptions = {\r\n\t\t\t\t\t\tdelay: opts.delay,\r\n\t\t\t\t\t\tprogress: opts.progress\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t/* If a complete callback was passed into this call, transfer it to the loop redirect's final \"reverse\" call\r\n\t\t\t\t\t so that it's triggered when the entire redirect is complete (and not when the very first animation is complete). */\r\n\t\t\t\t\tif (x === reverseCallsCount - 1) {\r\n\t\t\t\t\t\treverseOptions.display = opts.display;\r\n\t\t\t\t\t\treverseOptions.visibility = opts.visibility;\r\n\t\t\t\t\t\treverseOptions.complete = opts.complete;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tanimate(elements, \"reverse\", reverseOptions);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/***************\r\n\t\t\t Chaining\r\n\t\t\t ***************/\r\n\r\n\t\t\t/* Return the elements back to the call chain, with wrapped elements taking precedence in case Velocity was called via the $.fn. extension. */\r\n\t\t\treturn getChain();\r\n\t\t};\r\n\r\n\t\t/* Turn Velocity into the animation function, extended with the pre-existing Velocity object. */\r\n\t\tVelocity = $.extend(animate, Velocity);\r\n\t\t/* For legacy support, also expose the literal animate method. */\r\n\t\tVelocity.animate = animate;\r\n\r\n\t\t/**************\r\n\t\t Timing\r\n\t\t **************/\r\n\r\n\t\t/* Ticker function. */\r\n\t\tvar ticker = window.requestAnimationFrame || rAFShim;\r\n\r\n\t\t/* Inactive browser tabs pause rAF, which results in all active animations immediately sprinting to their completion states when the tab refocuses.\r\n\t\t To get around this, we dynamically switch rAF to setTimeout (which the browser *doesn't* pause) when the tab loses focus. We skip this for mobile\r\n\t\t devices to avoid wasting battery power on inactive tabs. */\r\n\t\t/* Note: Tab focus detection doesn't work on older versions of IE, but that's okay since they don't support rAF to begin with. */\r\n\t\tif (!Velocity.State.isMobile && document.hidden !== undefined) {\r\n\t\t\tvar updateTicker = function() {\r\n\t\t\t\t/* Reassign the rAF function (which the global tick() function uses) based on the tab's focus state. */\r\n\t\t\t\tif (document.hidden) {\r\n\t\t\t\t\tticker = function(callback) {\r\n\t\t\t\t\t\t/* The tick function needs a truthy first argument in order to pass its internal timestamp check. */\r\n\t\t\t\t\t\treturn setTimeout(function() {\r\n\t\t\t\t\t\t\tcallback(true);\r\n\t\t\t\t\t\t}, 16);\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t/* The rAF loop has been paused by the browser, so we manually restart the tick. */\r\n\t\t\t\t\ttick();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tticker = window.requestAnimationFrame || rAFShim;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\t/* Page could be sitting in the background at this time (i.e. opened as new tab) so making sure we use correct ticker from the start */\r\n\t\t\tupdateTicker();\r\n\r\n\t\t\t/* And then run check again every time visibility changes */\r\n\t\t\tdocument.addEventListener(\"visibilitychange\", updateTicker);\r\n\t\t}\r\n\r\n\t\t/************\r\n\t\t Tick\r\n\t\t ************/\r\n\r\n\t\t/* Note: All calls to Velocity are pushed to the Velocity.State.calls array, which is fully iterated through upon each tick. */\r\n\t\tfunction tick(timestamp) {\r\n\t\t\t/* An empty timestamp argument indicates that this is the first tick occurence since ticking was turned on.\r\n\t\t\t We leverage this metadata to fully ignore the first tick pass since RAF's initial pass is fired whenever\r\n\t\t\t the browser's next tick sync time occurs, which results in the first elements subjected to Velocity\r\n\t\t\t calls being animated out of sync with any elements animated immediately thereafter. In short, we ignore\r\n\t\t\t the first RAF tick pass so that elements being immediately consecutively animated -- instead of simultaneously animated\r\n\t\t\t by the same Velocity call -- are properly batched into the same initial RAF tick and consequently remain in sync thereafter. */\r\n\t\t\tif (timestamp) {\r\n\t\t\t\t/* We normally use RAF's high resolution timestamp but as it can be significantly offset when the browser is\r\n\t\t\t\t under high stress we give the option for choppiness over allowing the browser to drop huge chunks of frames.\r\n\t\t\t\t We use performance.now() and shim it if it doesn't exist for when the tab is hidden. */\r\n\t\t\t\tvar timeCurrent = Velocity.timestamp && timestamp !== true ? timestamp : performance.now();\r\n\r\n\t\t\t\t/********************\r\n\t\t\t\t Call Iteration\r\n\t\t\t\t ********************/\r\n\r\n\t\t\t\tvar callsLength = Velocity.State.calls.length;\r\n\r\n\t\t\t\t/* To speed up iterating over this array, it is compacted (falsey items -- calls that have completed -- are removed)\r\n\t\t\t\t when its length has ballooned to a point that can impact tick performance. This only becomes necessary when animation\r\n\t\t\t\t has been continuous with many elements over a long period of time; whenever all active calls are completed, completeCall() clears Velocity.State.calls. */\r\n\t\t\t\tif (callsLength > 10000) {\r\n\t\t\t\t\tVelocity.State.calls = compactSparseArray(Velocity.State.calls);\r\n\t\t\t\t\tcallsLength = Velocity.State.calls.length;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Iterate through each active call. */\r\n\t\t\t\tfor (var i = 0; i < callsLength; i++) {\r\n\t\t\t\t\t/* When a Velocity call is completed, its Velocity.State.calls entry is set to false. Continue on to the next call. */\r\n\t\t\t\t\tif (!Velocity.State.calls[i]) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/************************\r\n\t\t\t\t\t Call-Wide Variables\r\n\t\t\t\t\t ************************/\r\n\r\n\t\t\t\t\tvar callContainer = Velocity.State.calls[i],\r\n\t\t\t\t\t\t\tcall = callContainer[0],\r\n\t\t\t\t\t\t\topts = callContainer[2],\r\n\t\t\t\t\t\t\ttimeStart = callContainer[3],\r\n\t\t\t\t\t\t\tfirstTick = !timeStart,\r\n\t\t\t\t\t\t\ttweenDummyValue = null,\r\n\t\t\t\t\t\t\tpauseObject = callContainer[5],\r\n\t\t\t\t\t\t\tmillisecondsEllapsed = callContainer[6];\r\n\r\n\r\n\r\n\t\t\t\t\t/* If timeStart is undefined, then this is the first time that this call has been processed by tick().\r\n\t\t\t\t\t We assign timeStart now so that its value is as close to the real animation start time as possible.\r\n\t\t\t\t\t (Conversely, had timeStart been defined when this call was added to Velocity.State.calls, the delay\r\n\t\t\t\t\t between that time and now would cause the first few frames of the tween to be skipped since\r\n\t\t\t\t\t percentComplete is calculated relative to timeStart.) */\r\n\t\t\t\t\t/* Further, subtract 16ms (the approximate resolution of RAF) from the current time value so that the\r\n\t\t\t\t\t first tick iteration isn't wasted by animating at 0% tween completion, which would produce the\r\n\t\t\t\t\t same style value as the element's current value. */\r\n\t\t\t\t\tif (!timeStart) {\r\n\t\t\t\t\t\ttimeStart = Velocity.State.calls[i][3] = timeCurrent - 16;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* If a pause object is present, skip processing unless it has been set to resume */\r\n\t\t\t\t\tif (pauseObject) {\r\n\t\t\t\t\t\tif (pauseObject.resume === true) {\r\n\t\t\t\t\t\t\t/* Update the time start to accomodate the paused completion amount */\r\n\t\t\t\t\t\t\ttimeStart = callContainer[3] = Math.round(timeCurrent - millisecondsEllapsed - 16);\r\n\r\n\t\t\t\t\t\t\t/* Remove pause object after processing */\r\n\t\t\t\t\t\t\tcallContainer[5] = null;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tmillisecondsEllapsed = callContainer[6] = timeCurrent - timeStart;\r\n\r\n\t\t\t\t\t/* The tween's completion percentage is relative to the tween's start time, not the tween's start value\r\n\t\t\t\t\t (which would result in unpredictable tween durations since JavaScript's timers are not particularly accurate).\r\n\t\t\t\t\t Accordingly, we ensure that percentComplete does not exceed 1. */\r\n\t\t\t\t\tvar percentComplete = Math.min((millisecondsEllapsed) / opts.duration, 1);\r\n\r\n\t\t\t\t\t/**********************\r\n\t\t\t\t\t Element Iteration\r\n\t\t\t\t\t **********************/\r\n\r\n\t\t\t\t\t/* For every call, iterate through each of the elements in its set. */\r\n\t\t\t\t\tfor (var j = 0, callLength = call.length; j < callLength; j++) {\r\n\t\t\t\t\t\tvar tweensContainer = call[j],\r\n\t\t\t\t\t\t\t\telement = tweensContainer.element;\r\n\r\n\t\t\t\t\t\t/* Check to see if this element has been deleted midway through the animation by checking for the\r\n\t\t\t\t\t\t continued existence of its data cache. If it's gone, or the element is currently paused, skip animating this element. */\r\n\t\t\t\t\t\tif (!Data(element)) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tvar transformPropertyExists = false;\r\n\r\n\t\t\t\t\t\t/**********************************\r\n\t\t\t\t\t\t Display & Visibility Toggling\r\n\t\t\t\t\t\t **********************************/\r\n\r\n\t\t\t\t\t\t/* If the display option is set to non-\"none\", set it upfront so that the element can become visible before tweening begins.\r\n\t\t\t\t\t\t (Otherwise, display's \"none\" value is set in completeCall() once the animation has completed.) */\r\n\t\t\t\t\t\tif (opts.display !== undefined && opts.display !== null && opts.display !== \"none\") {\r\n\t\t\t\t\t\t\tif (opts.display === \"flex\") {\r\n\t\t\t\t\t\t\t\tvar flexValues = [\"-webkit-box\", \"-moz-box\", \"-ms-flexbox\", \"-webkit-flex\"];\r\n\r\n\t\t\t\t\t\t\t\t$.each(flexValues, function(i, flexValue) {\r\n\t\t\t\t\t\t\t\t\tCSS.setPropertyValue(element, \"display\", flexValue);\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tCSS.setPropertyValue(element, \"display\", opts.display);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Same goes with the visibility option, but its \"none\" equivalent is \"hidden\". */\r\n\t\t\t\t\t\tif (opts.visibility !== undefined && opts.visibility !== \"hidden\") {\r\n\t\t\t\t\t\t\tCSS.setPropertyValue(element, \"visibility\", opts.visibility);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/************************\r\n\t\t\t\t\t\t Property Iteration\r\n\t\t\t\t\t\t ************************/\r\n\r\n\t\t\t\t\t\t/* For every element, iterate through each property. */\r\n\t\t\t\t\t\tfor (var property in tweensContainer) {\r\n\t\t\t\t\t\t\t/* Note: In addition to property tween data, tweensContainer contains a reference to its associated element. */\r\n\t\t\t\t\t\t\tif (tweensContainer.hasOwnProperty(property) && property !== \"element\") {\r\n\t\t\t\t\t\t\t\tvar tween = tweensContainer[property],\r\n\t\t\t\t\t\t\t\t\t\tcurrentValue,\r\n\t\t\t\t\t\t\t\t\t\t/* Easing can either be a pre-genereated function or a string that references a pre-registered easing\r\n\t\t\t\t\t\t\t\t\t\t on the Velocity.Easings object. In either case, return the appropriate easing *function*. */\r\n\t\t\t\t\t\t\t\t\t\teasing = Type.isString(tween.easing) ? Velocity.Easings[tween.easing] : tween.easing;\r\n\r\n\t\t\t\t\t\t\t\t/******************************\r\n\t\t\t\t\t\t\t\t Current Value Calculation\r\n\t\t\t\t\t\t\t\t ******************************/\r\n\r\n\t\t\t\t\t\t\t\tif (Type.isString(tween.pattern)) {\r\n\t\t\t\t\t\t\t\t\tvar patternReplace = percentComplete === 1 ?\r\n\t\t\t\t\t\t\t\t\t\t\tfunction($0, index, round) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tvar result = tween.endValue[index];\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn round ? Math.round(result) : result;\r\n\t\t\t\t\t\t\t\t\t\t\t} :\r\n\t\t\t\t\t\t\t\t\t\t\tfunction($0, index, round) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tvar startValue = tween.startValue[index],\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttweenDelta = tween.endValue[index] - startValue,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresult = startValue + (tweenDelta * easing(percentComplete, opts, tweenDelta));\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn round ? Math.round(result) : result;\r\n\t\t\t\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\t\tcurrentValue = tween.pattern.replace(/{(\\d+)(!)?}/g, patternReplace);\r\n\t\t\t\t\t\t\t\t} else if (percentComplete === 1) {\r\n\t\t\t\t\t\t\t\t\t/* If this is the last tick pass (if we've reached 100% completion for this tween),\r\n\t\t\t\t\t\t\t\t\t ensure that currentValue is explicitly set to its target endValue so that it's not subjected to any rounding. */\r\n\t\t\t\t\t\t\t\t\tcurrentValue = tween.endValue;\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t/* Otherwise, calculate currentValue based on the current delta from startValue. */\r\n\t\t\t\t\t\t\t\t\tvar tweenDelta = tween.endValue - tween.startValue;\r\n\r\n\t\t\t\t\t\t\t\t\tcurrentValue = tween.startValue + (tweenDelta * easing(percentComplete, opts, tweenDelta));\r\n\t\t\t\t\t\t\t\t\t/* If no value change is occurring, don't proceed with DOM updating. */\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (!firstTick && (currentValue === tween.currentValue)) {\r\n\t\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\ttween.currentValue = currentValue;\r\n\r\n\t\t\t\t\t\t\t\t/* If we're tweening a fake 'tween' property in order to log transition values, update the one-per-call variable so that\r\n\t\t\t\t\t\t\t\t it can be passed into the progress callback. */\r\n\t\t\t\t\t\t\t\tif (property === \"tween\") {\r\n\t\t\t\t\t\t\t\t\ttweenDummyValue = currentValue;\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t/******************\r\n\t\t\t\t\t\t\t\t\t Hooks: Part I\r\n\t\t\t\t\t\t\t\t\t ******************/\r\n\t\t\t\t\t\t\t\t\tvar hookRoot;\r\n\r\n\t\t\t\t\t\t\t\t\t/* For hooked properties, the newly-updated rootPropertyValueCache is cached onto the element so that it can be used\r\n\t\t\t\t\t\t\t\t\t for subsequent hooks in this call that are associated with the same root property. If we didn't cache the updated\r\n\t\t\t\t\t\t\t\t\t rootPropertyValue, each subsequent update to the root property in this tick pass would reset the previous hook's\r\n\t\t\t\t\t\t\t\t\t updates to rootPropertyValue prior to injection. A nice performance byproduct of rootPropertyValue caching is that\r\n\t\t\t\t\t\t\t\t\t subsequently chained animations using the same hookRoot but a different hook can use this cached rootPropertyValue. */\r\n\t\t\t\t\t\t\t\t\tif (CSS.Hooks.registered[property]) {\r\n\t\t\t\t\t\t\t\t\t\thookRoot = CSS.Hooks.getRoot(property);\r\n\r\n\t\t\t\t\t\t\t\t\t\tvar rootPropertyValueCache = Data(element).rootPropertyValueCache[hookRoot];\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (rootPropertyValueCache) {\r\n\t\t\t\t\t\t\t\t\t\t\ttween.rootPropertyValue = rootPropertyValueCache;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t/*****************\r\n\t\t\t\t\t\t\t\t\t DOM Update\r\n\t\t\t\t\t\t\t\t\t *****************/\r\n\r\n\t\t\t\t\t\t\t\t\t/* setPropertyValue() returns an array of the property name and property value post any normalization that may have been performed. */\r\n\t\t\t\t\t\t\t\t\t/* Note: To solve an IE<=8 positioning bug, the unit type is dropped when setting a property value of 0. */\r\n\t\t\t\t\t\t\t\t\tvar adjustedSetData = CSS.setPropertyValue(element, /* SET */\r\n\t\t\t\t\t\t\t\t\t\t\tproperty,\r\n\t\t\t\t\t\t\t\t\t\t\ttween.currentValue + (IE < 9 && parseFloat(currentValue) === 0 ? \"\" : tween.unitType),\r\n\t\t\t\t\t\t\t\t\t\t\ttween.rootPropertyValue,\r\n\t\t\t\t\t\t\t\t\t\t\ttween.scrollData);\r\n\r\n\t\t\t\t\t\t\t\t\t/*******************\r\n\t\t\t\t\t\t\t\t\t Hooks: Part II\r\n\t\t\t\t\t\t\t\t\t *******************/\r\n\r\n\t\t\t\t\t\t\t\t\t/* Now that we have the hook's updated rootPropertyValue (the post-processed value provided by adjustedSetData), cache it onto the element. */\r\n\t\t\t\t\t\t\t\t\tif (CSS.Hooks.registered[property]) {\r\n\t\t\t\t\t\t\t\t\t\t/* Since adjustedSetData contains normalized data ready for DOM updating, the rootPropertyValue needs to be re-extracted from its normalized form. ?? */\r\n\t\t\t\t\t\t\t\t\t\tif (CSS.Normalizations.registered[hookRoot]) {\r\n\t\t\t\t\t\t\t\t\t\t\tData(element).rootPropertyValueCache[hookRoot] = CSS.Normalizations.registered[hookRoot](\"extract\", null, adjustedSetData[1]);\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\tData(element).rootPropertyValueCache[hookRoot] = adjustedSetData[1];\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t/***************\r\n\t\t\t\t\t\t\t\t\t Transforms\r\n\t\t\t\t\t\t\t\t\t ***************/\r\n\r\n\t\t\t\t\t\t\t\t\t/* Flag whether a transform property is being animated so that flushTransformCache() can be triggered once this tick pass is complete. */\r\n\t\t\t\t\t\t\t\t\tif (adjustedSetData[0] === \"transform\") {\r\n\t\t\t\t\t\t\t\t\t\ttransformPropertyExists = true;\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/****************\r\n\t\t\t\t\t\t mobileHA\r\n\t\t\t\t\t\t ****************/\r\n\r\n\t\t\t\t\t\t/* If mobileHA is enabled, set the translate3d transform to null to force hardware acceleration.\r\n\t\t\t\t\t\t It's safe to override this property since Velocity doesn't actually support its animation (hooks are used in its place). */\r\n\t\t\t\t\t\tif (opts.mobileHA) {\r\n\t\t\t\t\t\t\t/* Don't set the null transform hack if we've already done so. */\r\n\t\t\t\t\t\t\tif (Data(element).transformCache.translate3d === undefined) {\r\n\t\t\t\t\t\t\t\t/* All entries on the transformCache object are later concatenated into a single transform string via flushTransformCache(). */\r\n\t\t\t\t\t\t\t\tData(element).transformCache.translate3d = \"(0px, 0px, 0px)\";\r\n\r\n\t\t\t\t\t\t\t\ttransformPropertyExists = true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (transformPropertyExists) {\r\n\t\t\t\t\t\t\tCSS.flushTransformCache(element);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* The non-\"none\" display value is only applied to an element once -- when its associated call is first ticked through.\r\n\t\t\t\t\t Accordingly, it's set to false so that it isn't re-processed by this call in the next tick. */\r\n\t\t\t\t\tif (opts.display !== undefined && opts.display !== \"none\") {\r\n\t\t\t\t\t\tVelocity.State.calls[i][2].display = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (opts.visibility !== undefined && opts.visibility !== \"hidden\") {\r\n\t\t\t\t\t\tVelocity.State.calls[i][2].visibility = false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* Pass the elements and the timing data (percentComplete, msRemaining, timeStart, tweenDummyValue) into the progress callback. */\r\n\t\t\t\t\tif (opts.progress) {\r\n\t\t\t\t\t\topts.progress.call(callContainer[1],\r\n\t\t\t\t\t\t\t\tcallContainer[1],\r\n\t\t\t\t\t\t\t\tpercentComplete,\r\n\t\t\t\t\t\t\t\tMath.max(0, (timeStart + opts.duration) - timeCurrent),\r\n\t\t\t\t\t\t\t\ttimeStart,\r\n\t\t\t\t\t\t\t\ttweenDummyValue);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* If this call has finished tweening, pass its index to completeCall() to handle call cleanup. */\r\n\t\t\t\t\tif (percentComplete === 1) {\r\n\t\t\t\t\t\tcompleteCall(i);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/* Note: completeCall() sets the isTicking flag to false when the last call on Velocity.State.calls has completed. */\r\n\t\t\tif (Velocity.State.isTicking) {\r\n\t\t\t\tticker(tick);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/**********************\r\n\t\t Call Completion\r\n\t\t **********************/\r\n\r\n\t\t/* Note: Unlike tick(), which processes all active calls at once, call completion is handled on a per-call basis. */\r\n\t\tfunction completeCall(callIndex, isStopped) {\r\n\t\t\t/* Ensure the call exists. */\r\n\t\t\tif (!Velocity.State.calls[callIndex]) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t/* Pull the metadata from the call. */\r\n\t\t\tvar call = Velocity.State.calls[callIndex][0],\r\n\t\t\t\t\telements = Velocity.State.calls[callIndex][1],\r\n\t\t\t\t\topts = Velocity.State.calls[callIndex][2],\r\n\t\t\t\t\tresolver = Velocity.State.calls[callIndex][4];\r\n\r\n\t\t\tvar remainingCallsExist = false;\r\n\r\n\t\t\t/*************************\r\n\t\t\t Element Finalization\r\n\t\t\t *************************/\r\n\r\n\t\t\tfor (var i = 0, callLength = call.length; i < callLength; i++) {\r\n\t\t\t\tvar element = call[i].element;\r\n\r\n\t\t\t\t/* If the user set display to \"none\" (intending to hide the element), set it now that the animation has completed. */\r\n\t\t\t\t/* Note: display:none isn't set when calls are manually stopped (via Velocity(\"stop\"). */\r\n\t\t\t\t/* Note: Display gets ignored with \"reverse\" calls and infinite loops, since this behavior would be undesirable. */\r\n\t\t\t\tif (!isStopped && !opts.loop) {\r\n\t\t\t\t\tif (opts.display === \"none\") {\r\n\t\t\t\t\t\tCSS.setPropertyValue(element, \"display\", opts.display);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (opts.visibility === \"hidden\") {\r\n\t\t\t\t\t\tCSS.setPropertyValue(element, \"visibility\", opts.visibility);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* If the element's queue is empty (if only the \"inprogress\" item is left at position 0) or if its queue is about to run\r\n\t\t\t\t a non-Velocity-initiated entry, turn off the isAnimating flag. A non-Velocity-initiatied queue entry's logic might alter\r\n\t\t\t\t an element's CSS values and thereby cause Velocity's cached value data to go stale. To detect if a queue entry was initiated by Velocity,\r\n\t\t\t\t we check for the existence of our special Velocity.queueEntryFlag declaration, which minifiers won't rename since the flag\r\n\t\t\t\t is assigned to jQuery's global $ object and thus exists out of Velocity's own scope. */\r\n\t\t\t\tvar data = Data(element);\r\n\r\n\t\t\t\tif (opts.loop !== true && ($.queue(element)[1] === undefined || !/\\.velocityQueueEntryFlag/i.test($.queue(element)[1]))) {\r\n\t\t\t\t\t/* The element may have been deleted. Ensure that its data cache still exists before acting on it. */\r\n\t\t\t\t\tif (data) {\r\n\t\t\t\t\t\tdata.isAnimating = false;\r\n\t\t\t\t\t\t/* Clear the element's rootPropertyValueCache, which will become stale. */\r\n\t\t\t\t\t\tdata.rootPropertyValueCache = {};\r\n\r\n\t\t\t\t\t\tvar transformHAPropertyExists = false;\r\n\t\t\t\t\t\t/* If any 3D transform subproperty is at its default value (regardless of unit type), remove it. */\r\n\t\t\t\t\t\t$.each(CSS.Lists.transforms3D, function(i, transformName) {\r\n\t\t\t\t\t\t\tvar defaultValue = /^scale/.test(transformName) ? 1 : 0,\r\n\t\t\t\t\t\t\t\t\tcurrentValue = data.transformCache[transformName];\r\n\r\n\t\t\t\t\t\t\tif (data.transformCache[transformName] !== undefined && new RegExp(\"^\\\\(\" + defaultValue + \"[^.]\").test(currentValue)) {\r\n\t\t\t\t\t\t\t\ttransformHAPropertyExists = true;\r\n\r\n\t\t\t\t\t\t\t\tdelete data.transformCache[transformName];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t/* Mobile devices have hardware acceleration removed at the end of the animation in order to avoid hogging the GPU's memory. */\r\n\t\t\t\t\t\tif (opts.mobileHA) {\r\n\t\t\t\t\t\t\ttransformHAPropertyExists = true;\r\n\t\t\t\t\t\t\tdelete data.transformCache.translate3d;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Flush the subproperty removals to the DOM. */\r\n\t\t\t\t\t\tif (transformHAPropertyExists) {\r\n\t\t\t\t\t\t\tCSS.flushTransformCache(element);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Remove the \"velocity-animating\" indicator class. */\r\n\t\t\t\t\t\tCSS.Values.removeClass(element, \"velocity-animating\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/*********************\r\n\t\t\t\t Option: Complete\r\n\t\t\t\t *********************/\r\n\r\n\t\t\t\t/* Complete is fired once per call (not once per element) and is passed the full raw DOM element set as both its context and its first argument. */\r\n\t\t\t\t/* Note: Callbacks aren't fired when calls are manually stopped (via Velocity(\"stop\"). */\r\n\t\t\t\tif (!isStopped && opts.complete && !opts.loop && (i === callLength - 1)) {\r\n\t\t\t\t\t/* We throw callbacks in a setTimeout so that thrown errors don't halt the execution of Velocity itself. */\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\topts.complete.call(elements, elements);\r\n\t\t\t\t\t} catch (error) {\r\n\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\tthrow error;\r\n\t\t\t\t\t\t}, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/**********************\r\n\t\t\t\t Promise Resolving\r\n\t\t\t\t **********************/\r\n\r\n\t\t\t\t/* Note: Infinite loops don't return promises. */\r\n\t\t\t\tif (resolver && opts.loop !== true) {\r\n\t\t\t\t\tresolver(elements);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/****************************\r\n\t\t\t\t Option: Loop (Infinite)\r\n\t\t\t\t ****************************/\r\n\r\n\t\t\t\tif (data && opts.loop === true && !isStopped) {\r\n\t\t\t\t\t/* If a rotateX/Y/Z property is being animated by 360 deg with loop:true, swap tween start/end values to enable\r\n\t\t\t\t\t continuous iterative rotation looping. (Otherise, the element would just rotate back and forth.) */\r\n\t\t\t\t\t$.each(data.tweensContainer, function(propertyName, tweenContainer) {\r\n\t\t\t\t\t\tif (/^rotate/.test(propertyName) && ((parseFloat(tweenContainer.startValue) - parseFloat(tweenContainer.endValue)) % 360 === 0)) {\r\n\t\t\t\t\t\t\tvar oldStartValue = tweenContainer.startValue;\r\n\r\n\t\t\t\t\t\t\ttweenContainer.startValue = tweenContainer.endValue;\r\n\t\t\t\t\t\t\ttweenContainer.endValue = oldStartValue;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (/^backgroundPosition/.test(propertyName) && parseFloat(tweenContainer.endValue) === 100 && tweenContainer.unitType === \"%\") {\r\n\t\t\t\t\t\t\ttweenContainer.endValue = 0;\r\n\t\t\t\t\t\t\ttweenContainer.startValue = 100;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tVelocity(element, \"reverse\", {loop: true, delay: opts.delay});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/***************\r\n\t\t\t\t Dequeueing\r\n\t\t\t\t ***************/\r\n\r\n\t\t\t\t/* Fire the next call in the queue so long as this call's queue wasn't set to false (to trigger a parallel animation),\r\n\t\t\t\t which would have already caused the next call to fire. Note: Even if the end of the animation queue has been reached,\r\n\t\t\t\t $.dequeue() must still be called in order to completely clear jQuery's animation queue. */\r\n\t\t\t\tif (opts.queue !== false) {\r\n\t\t\t\t\t$.dequeue(element, opts.queue);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t/************************\r\n\t\t\t Calls Array Cleanup\r\n\t\t\t ************************/\r\n\r\n\t\t\t/* Since this call is complete, set it to false so that the rAF tick skips it. This array is later compacted via compactSparseArray().\r\n\t\t\t (For performance reasons, the call is set to false instead of being deleted from the array: http://www.html5rocks.com/en/tutorials/speed/v8/) */\r\n\t\t\tVelocity.State.calls[callIndex] = false;\r\n\r\n\t\t\t/* Iterate through the calls array to determine if this was the final in-progress animation.\r\n\t\t\t If so, set a flag to end ticking and clear the calls array. */\r\n\t\t\tfor (var j = 0, callsLength = Velocity.State.calls.length; j < callsLength; j++) {\r\n\t\t\t\tif (Velocity.State.calls[j] !== false) {\r\n\t\t\t\t\tremainingCallsExist = true;\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (remainingCallsExist === false) {\r\n\t\t\t\t/* tick() will detect this flag upon its next iteration and subsequently turn itself off. */\r\n\t\t\t\tVelocity.State.isTicking = false;\r\n\r\n\t\t\t\t/* Clear the calls array so that its length is reset. */\r\n\t\t\t\tdelete Velocity.State.calls;\r\n\t\t\t\tVelocity.State.calls = [];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/******************\r\n\t\t Frameworks\r\n\t\t ******************/\r\n\r\n\t\t/* Both jQuery and Zepto allow their $.fn object to be extended to allow wrapped elements to be subjected to plugin calls.\r\n\t\t If either framework is loaded, register a \"velocity\" extension pointing to Velocity's core animate() method.  Velocity\r\n\t\t also registers itself onto a global container (window.jQuery || window.Zepto || window) so that certain features are\r\n\t\t accessible beyond just a per-element scope. This master object contains an .animate() method, which is later assigned to $.fn\r\n\t\t (if jQuery or Zepto are present). Accordingly, Velocity can both act on wrapped DOM elements and stand alone for targeting raw DOM elements. */\r\n\t\tglobal.Velocity = Velocity;\r\n\r\n\t\tif (global !== window) {\r\n\t\t\t/* Assign the element function to Velocity's core animate() method. */\r\n\t\t\tglobal.fn.velocity = animate;\r\n\t\t\t/* Assign the object function's defaults to Velocity's global defaults object. */\r\n\t\t\tglobal.fn.velocity.defaults = Velocity.defaults;\r\n\t\t}\r\n\r\n\t\t/***********************\r\n\t\t Packaged Redirects\r\n\t\t ***********************/\r\n\r\n\t\t/* slideUp, slideDown */\r\n\t\t$.each([\"Down\", \"Up\"], function(i, direction) {\r\n\t\t\tVelocity.Redirects[\"slide\" + direction] = function(element, options, elementsIndex, elementsSize, elements, promiseData) {\r\n\t\t\t\tvar opts = $.extend({}, options),\r\n\t\t\t\t\t\tbegin = opts.begin,\r\n\t\t\t\t\t\tcomplete = opts.complete,\r\n\t\t\t\t\t\tinlineValues = {},\r\n\t\t\t\t\t\tcomputedValues = {height: \"\", marginTop: \"\", marginBottom: \"\", paddingTop: \"\", paddingBottom: \"\"};\r\n\r\n\t\t\t\tif (opts.display === undefined) {\r\n\t\t\t\t\t/* Show the element before slideDown begins and hide the element after slideUp completes. */\r\n\t\t\t\t\t/* Note: Inline elements cannot have dimensions animated, so they're reverted to inline-block. */\r\n\t\t\t\t\topts.display = (direction === \"Down\" ? (Velocity.CSS.Values.getDisplayType(element) === \"inline\" ? \"inline-block\" : \"block\") : \"none\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\topts.begin = function() {\r\n\t\t\t\t\t/* If the user passed in a begin callback, fire it now. */\r\n\t\t\t\t\tif (elementsIndex === 0 && begin) {\r\n\t\t\t\t\t\tbegin.call(elements, elements);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* Cache the elements' original vertical dimensional property values so that we can animate back to them. */\r\n\t\t\t\t\tfor (var property in computedValues) {\r\n\t\t\t\t\t\tif (!computedValues.hasOwnProperty(property)) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tinlineValues[property] = element.style[property];\r\n\r\n\t\t\t\t\t\t/* For slideDown, use forcefeeding to animate all vertical properties from 0. For slideUp,\r\n\t\t\t\t\t\t use forcefeeding to start from computed values and animate down to 0. */\r\n\t\t\t\t\t\tvar propertyValue = CSS.getPropertyValue(element, property);\r\n\t\t\t\t\t\tcomputedValues[property] = (direction === \"Down\") ? [propertyValue, 0] : [0, propertyValue];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* Force vertical overflow content to clip so that sliding works as expected. */\r\n\t\t\t\t\tinlineValues.overflow = element.style.overflow;\r\n\t\t\t\t\telement.style.overflow = \"hidden\";\r\n\t\t\t\t};\r\n\r\n\t\t\t\topts.complete = function() {\r\n\t\t\t\t\t/* Reset element to its pre-slide inline values once its slide animation is complete. */\r\n\t\t\t\t\tfor (var property in inlineValues) {\r\n\t\t\t\t\t\tif (inlineValues.hasOwnProperty(property)) {\r\n\t\t\t\t\t\t\telement.style[property] = inlineValues[property];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* If the user passed in a complete callback, fire it now. */\r\n\t\t\t\t\tif (elementsIndex === elementsSize - 1) {\r\n\t\t\t\t\t\tif (complete) {\r\n\t\t\t\t\t\t\tcomplete.call(elements, elements);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (promiseData) {\r\n\t\t\t\t\t\t\tpromiseData.resolver(elements);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tVelocity(element, computedValues, opts);\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\t/* fadeIn, fadeOut */\r\n\t\t$.each([\"In\", \"Out\"], function(i, direction) {\r\n\t\t\tVelocity.Redirects[\"fade\" + direction] = function(element, options, elementsIndex, elementsSize, elements, promiseData) {\r\n\t\t\t\tvar opts = $.extend({}, options),\r\n\t\t\t\t\t\tcomplete = opts.complete,\r\n\t\t\t\t\t\tpropertiesMap = {opacity: (direction === \"In\") ? 1 : 0};\r\n\r\n\t\t\t\t/* Since redirects are triggered individually for each element in the animated set, avoid repeatedly triggering\r\n\t\t\t\t callbacks by firing them only when the final element has been reached. */\r\n\t\t\t\tif (elementsIndex !== 0) {\r\n\t\t\t\t\topts.begin = null;\r\n\t\t\t\t}\r\n\t\t\t\tif (elementsIndex !== elementsSize - 1) {\r\n\t\t\t\t\topts.complete = null;\r\n\t\t\t\t} else {\r\n\t\t\t\t\topts.complete = function() {\r\n\t\t\t\t\t\tif (complete) {\r\n\t\t\t\t\t\t\tcomplete.call(elements, elements);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (promiseData) {\r\n\t\t\t\t\t\t\tpromiseData.resolver(elements);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* If a display was passed in, use it. Otherwise, default to \"none\" for fadeOut or the element-specific default for fadeIn. */\r\n\t\t\t\t/* Note: We allow users to pass in \"null\" to skip display setting altogether. */\r\n\t\t\t\tif (opts.display === undefined) {\r\n\t\t\t\t\topts.display = (direction === \"In\" ? \"auto\" : \"none\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tVelocity(this, propertiesMap, opts);\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\treturn Velocity;\r\n\t}((window.jQuery || window.Zepto || window), window, (window ? window.document : undefined));\r\n}));\r\n\r\n/******************\r\n Known Issues\r\n ******************/\r\n\r\n/* The CSS spec mandates that the translateX/Y/Z transforms are %-relative to the element itself -- not its parent.\r\n Velocity, however, doesn't make this distinction. Thus, converting to or from the % unit with these subproperties\r\n will produce an inaccurate conversion value. The same issue exists with the cx/cy attributes of SVG circles and ellipses. */\r\n", "/*! Magnific Popup - v1.1.0 - 2016-02-20\n* http://dimsemenov.com/plugins/magnific-popup/\n* Copyright (c) 2016 Dmitry Semenov; */\n;(function (factory) { \nif (typeof define === 'function' && define.amd) { \n // AMD. Register as an anonymous module. \n define(['jquery'], factory); \n } else if (typeof exports === 'object') { \n // Node/CommonJS \n factory(require('jquery')); \n } else { \n // Browser globals \n factory(window.jQuery || window.Zepto); \n } \n }(function($) { \n\n/*>>core*/\n/**\n * \n * Magnific Popup Core JS file\n * \n */\n\n\n/**\n * Private static constants\n */\nvar CLOSE_EVENT = 'Close',\n\tBEFORE_CLOSE_EVENT = 'BeforeClose',\n\tAFTER_CLOSE_EVENT = 'AfterClose',\n\tBEFORE_APPEND_EVENT = 'BeforeAppend',\n\tMARKUP_PARSE_EVENT = 'MarkupParse',\n\tOPEN_EVENT = 'Open',\n\tCHANGE_EVENT = 'Change',\n\tNS = 'mfp',\n\tEVENT_NS = '.' + NS,\n\tREADY_CLASS = 'mfp-ready',\n\tREMOVING_CLASS = 'mfp-removing',\n\tPREVENT_CLOSE_CLASS = 'mfp-prevent-close';\n\n\n/**\n * Private vars \n */\n/*jshint -W079 */\nvar mfp, // As we have only one instance of MagnificPopup object, we define it locally to not to use 'this'\n\tMagnificPopup = function(){},\n\t_isJQ = !!(window.jQuery),\n\t_prevStatus,\n\t_window = $(window),\n\t_document,\n\t_prevContentType,\n\t_wrapClasses,\n\t_currPopupType;\n\n\n/**\n * Private functions\n */\nvar _mfpOn = function(name, f) {\n\t\tmfp.ev.on(NS + name + EVENT_NS, f);\n\t},\n\t_getEl = function(className, appendTo, html, raw) {\n\t\tvar el = document.createElement('div');\n\t\tel.className = 'mfp-'+className;\n\t\tif(html) {\n\t\t\tel.innerHTML = html;\n\t\t}\n\t\tif(!raw) {\n\t\t\tel = $(el);\n\t\t\tif(appendTo) {\n\t\t\t\tel.appendTo(appendTo);\n\t\t\t}\n\t\t} else if(appendTo) {\n\t\t\tappendTo.appendChild(el);\n\t\t}\n\t\treturn el;\n\t},\n\t_mfpTrigger = function(e, data) {\n\t\tmfp.ev.triggerHandler(NS + e, data);\n\n\t\tif(mfp.st.callbacks) {\n\t\t\t// converts \"mfpEventName\" to \"eventName\" callback and triggers it if it's present\n\t\t\te = e.charAt(0).toLowerCase() + e.slice(1);\n\t\t\tif(mfp.st.callbacks[e]) {\n\t\t\t\tmfp.st.callbacks[e].apply(mfp, $.isArray(data) ? data : [data]);\n\t\t\t}\n\t\t}\n\t},\n\t_getCloseBtn = function(type) {\n\t\tif(type !== _currPopupType || !mfp.currTemplate.closeBtn) {\n\t\t\tmfp.currTemplate.closeBtn = $( mfp.st.closeMarkup.replace('%title%', mfp.st.tClose ) );\n\t\t\t_currPopupType = type;\n\t\t}\n\t\treturn mfp.currTemplate.closeBtn;\n\t},\n\t// Initialize Magnific Popup only when called at least once\n\t_checkInstance = function() {\n\t\tif(!$.magnificPopup.instance) {\n\t\t\t/*jshint -W020 */\n\t\t\tmfp = new MagnificPopup();\n\t\t\tmfp.init();\n\t\t\t$.magnificPopup.instance = mfp;\n\t\t}\n\t},\n\t// CSS transition detection, http://stackoverflow.com/questions/7264899/detect-css-transitions-using-javascript-and-without-modernizr\n\tsupportsTransitions = function() {\n\t\tvar s = document.createElement('p').style, // 's' for style. better to create an element if body yet to exist\n\t\t\tv = ['ms','O','Moz','Webkit']; // 'v' for vendor\n\n\t\tif( s['transition'] !== undefined ) {\n\t\t\treturn true; \n\t\t}\n\t\t\t\n\t\twhile( v.length ) {\n\t\t\tif( v.pop() + 'Transition' in s ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t\t\t\n\t\treturn false;\n\t};\n\n\n\n/**\n * Public functions\n */\nMagnificPopup.prototype = {\n\n\tconstructor: MagnificPopup,\n\n\t/**\n\t * Initializes Magnific Popup plugin. \n\t * This function is triggered only once when $.fn.magnificPopup or $.magnificPopup is executed\n\t */\n\tinit: function() {\n\t\tvar appVersion = navigator.appVersion;\n\t\tmfp.isLowIE = mfp.isIE8 = document.all && !document.addEventListener;\n\t\tmfp.isAndroid = (/android/gi).test(appVersion);\n\t\tmfp.isIOS = (/iphone|ipad|ipod/gi).test(appVersion);\n\t\tmfp.supportsTransition = supportsTransitions();\n\n\t\t// We disable fixed positioned lightbox on devices that don't handle it nicely.\n\t\t// If you know a better way of detecting this - let me know.\n\t\tmfp.probablyMobile = (mfp.isAndroid || mfp.isIOS || /(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent) );\n\t\t_document = $(document);\n\n\t\tmfp.popupsCache = {};\n\t},\n\n\t/**\n\t * Opens popup\n\t * @param  data [description]\n\t */\n\topen: function(data) {\n\n\t\tvar i;\n\n\t\tif(data.isObj === false) { \n\t\t\t// convert jQuery collection to array to avoid conflicts later\n\t\t\tmfp.items = data.items.toArray();\n\n\t\t\tmfp.index = 0;\n\t\t\tvar items = data.items,\n\t\t\t\titem;\n\t\t\tfor(i = 0; i < items.length; i++) {\n\t\t\t\titem = items[i];\n\t\t\t\tif(item.parsed) {\n\t\t\t\t\titem = item.el[0];\n\t\t\t\t}\n\t\t\t\tif(item === data.el[0]) {\n\t\t\t\t\tmfp.index = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tmfp.items = $.isArray(data.items) ? data.items : [data.items];\n\t\t\tmfp.index = data.index || 0;\n\t\t}\n\n\t\t// if popup is already opened - we just update the content\n\t\tif(mfp.isOpen) {\n\t\t\tmfp.updateItemHTML();\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tmfp.types = []; \n\t\t_wrapClasses = '';\n\t\tif(data.mainEl && data.mainEl.length) {\n\t\t\tmfp.ev = data.mainEl.eq(0);\n\t\t} else {\n\t\t\tmfp.ev = _document;\n\t\t}\n\n\t\tif(data.key) {\n\t\t\tif(!mfp.popupsCache[data.key]) {\n\t\t\t\tmfp.popupsCache[data.key] = {};\n\t\t\t}\n\t\t\tmfp.currTemplate = mfp.popupsCache[data.key];\n\t\t} else {\n\t\t\tmfp.currTemplate = {};\n\t\t}\n\n\n\n\t\tmfp.st = $.extend(true, {}, $.magnificPopup.defaults, data ); \n\t\tmfp.fixedContentPos = mfp.st.fixedContentPos === 'auto' ? !mfp.probablyMobile : mfp.st.fixedContentPos;\n\n\t\tif(mfp.st.modal) {\n\t\t\tmfp.st.closeOnContentClick = false;\n\t\t\tmfp.st.closeOnBgClick = false;\n\t\t\tmfp.st.showCloseBtn = false;\n\t\t\tmfp.st.enableEscapeKey = false;\n\t\t}\n\t\t\n\n\t\t// Building markup\n\t\t// main containers are created only once\n\t\tif(!mfp.bgOverlay) {\n\n\t\t\t// Dark overlay\n\t\t\tmfp.bgOverlay = _getEl('bg').on('click'+EVENT_NS, function() {\n\t\t\t\tmfp.close();\n\t\t\t});\n\n\t\t\tmfp.wrap = _getEl('wrap').attr('tabindex', -1).on('click'+EVENT_NS, function(e) {\n\t\t\t\tif(mfp._checkIfClose(e.target)) {\n\t\t\t\t\tmfp.close();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmfp.container = _getEl('container', mfp.wrap);\n\t\t}\n\n\t\tmfp.contentContainer = _getEl('content');\n\t\tif(mfp.st.preloader) {\n\t\t\tmfp.preloader = _getEl('preloader', mfp.container, mfp.st.tLoading);\n\t\t}\n\n\n\t\t// Initializing modules\n\t\tvar modules = $.magnificPopup.modules;\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar n = modules[i];\n\t\t\tn = n.charAt(0).toUpperCase() + n.slice(1);\n\t\t\tmfp['init'+n].call(mfp);\n\t\t}\n\t\t_mfpTrigger('BeforeOpen');\n\n\n\t\tif(mfp.st.showCloseBtn) {\n\t\t\t// Close button\n\t\t\tif(!mfp.st.closeBtnInside) {\n\t\t\t\tmfp.wrap.append( _getCloseBtn() );\n\t\t\t} else {\n\t\t\t\t_mfpOn(MARKUP_PARSE_EVENT, function(e, template, values, item) {\n\t\t\t\t\tvalues.close_replaceWith = _getCloseBtn(item.type);\n\t\t\t\t});\n\t\t\t\t_wrapClasses += ' mfp-close-btn-in';\n\t\t\t}\n\t\t}\n\n\t\tif(mfp.st.alignTop) {\n\t\t\t_wrapClasses += ' mfp-align-top';\n\t\t}\n\n\t\n\n\t\tif(mfp.fixedContentPos) {\n\t\t\tmfp.wrap.css({\n\t\t\t\toverflow: mfp.st.overflowY,\n\t\t\t\toverflowX: 'hidden',\n\t\t\t\toverflowY: mfp.st.overflowY\n\t\t\t});\n\t\t} else {\n\t\t\tmfp.wrap.css({ \n\t\t\t\ttop: _window.scrollTop(),\n\t\t\t\tposition: 'absolute'\n\t\t\t});\n\t\t}\n\t\tif( mfp.st.fixedBgPos === false || (mfp.st.fixedBgPos === 'auto' && !mfp.fixedContentPos) ) {\n\t\t\tmfp.bgOverlay.css({\n\t\t\t\theight: _document.height(),\n\t\t\t\tposition: 'absolute'\n\t\t\t});\n\t\t}\n\n\t\t\n\n\t\tif(mfp.st.enableEscapeKey) {\n\t\t\t// Close on ESC key\n\t\t\t_document.on('keyup' + EVENT_NS, function(e) {\n\t\t\t\tif(e.keyCode === 27) {\n\t\t\t\t\tmfp.close();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t_window.on('resize' + EVENT_NS, function() {\n\t\t\tmfp.updateSize();\n\t\t});\n\n\n\t\tif(!mfp.st.closeOnContentClick) {\n\t\t\t_wrapClasses += ' mfp-auto-cursor';\n\t\t}\n\t\t\n\t\tif(_wrapClasses)\n\t\t\tmfp.wrap.addClass(_wrapClasses);\n\n\n\t\t// this triggers recalculation of layout, so we get it once to not to trigger twice\n\t\tvar windowHeight = mfp.wH = _window.height();\n\n\t\t\n\t\tvar windowStyles = {};\n\n\t\tif( mfp.fixedContentPos ) {\n            if(mfp._hasScrollBar(windowHeight)){\n                var s = mfp._getScrollbarSize();\n                if(s) {\n                    windowStyles.marginRight = s;\n                }\n            }\n        }\n\n\t\tif(mfp.fixedContentPos) {\n\t\t\tif(!mfp.isIE7) {\n\t\t\t\twindowStyles.overflow = 'hidden';\n\t\t\t} else {\n\t\t\t\t// ie7 double-scroll bug\n\t\t\t\t$('body, html').css('overflow', 'hidden');\n\t\t\t}\n\t\t}\n\n\t\t\n\t\t\n\t\tvar classesToadd = mfp.st.mainClass;\n\t\tif(mfp.isIE7) {\n\t\t\tclassesToadd += ' mfp-ie7';\n\t\t}\n\t\tif(classesToadd) {\n\t\t\tmfp._addClassToMFP( classesToadd );\n\t\t}\n\n\t\t// add content\n\t\tmfp.updateItemHTML();\n\n\t\t_mfpTrigger('BuildControls');\n\n\t\t// remove scrollbar, add margin e.t.c\n\t\t$('html').css(windowStyles);\n\t\t\n\t\t// add everything to DOM\n\t\tmfp.bgOverlay.add(mfp.wrap).prependTo( mfp.st.prependTo || $(document.body) );\n\n\t\t// Save last focused element\n\t\tmfp._lastFocusedEl = document.activeElement;\n\t\t\n\t\t// Wait for next cycle to allow CSS transition\n\t\tsetTimeout(function() {\n\t\t\t\n\t\t\tif(mfp.content) {\n\t\t\t\tmfp._addClassToMFP(READY_CLASS);\n\t\t\t\tmfp._setFocus();\n\t\t\t} else {\n\t\t\t\t// if content is not defined (not loaded e.t.c) we add class only for BG\n\t\t\t\tmfp.bgOverlay.addClass(READY_CLASS);\n\t\t\t}\n\t\t\t\n\t\t\t// Trap the focus in popup\n\t\t\t_document.on('focusin' + EVENT_NS, mfp._onFocusIn);\n\n\t\t}, 16);\n\n\t\tmfp.isOpen = true;\n\t\tmfp.updateSize(windowHeight);\n\t\t_mfpTrigger(OPEN_EVENT);\n\n\t\treturn data;\n\t},\n\n\t/**\n\t * Closes the popup\n\t */\n\tclose: function() {\n\t\tif(!mfp.isOpen) return;\n\t\t_mfpTrigger(BEFORE_CLOSE_EVENT);\n\n\t\tmfp.isOpen = false;\n\t\t// for CSS3 animation\n\t\tif(mfp.st.removalDelay && !mfp.isLowIE && mfp.supportsTransition )  {\n\t\t\tmfp._addClassToMFP(REMOVING_CLASS);\n\t\t\tsetTimeout(function() {\n\t\t\t\tmfp._close();\n\t\t\t}, mfp.st.removalDelay);\n\t\t} else {\n\t\t\tmfp._close();\n\t\t}\n\t},\n\n\t/**\n\t * Helper for close() function\n\t */\n\t_close: function() {\n\t\t_mfpTrigger(CLOSE_EVENT);\n\n\t\tvar classesToRemove = REMOVING_CLASS + ' ' + READY_CLASS + ' ';\n\n\t\tmfp.bgOverlay.detach();\n\t\tmfp.wrap.detach();\n\t\tmfp.container.empty();\n\n\t\tif(mfp.st.mainClass) {\n\t\t\tclassesToRemove += mfp.st.mainClass + ' ';\n\t\t}\n\n\t\tmfp._removeClassFromMFP(classesToRemove);\n\n\t\tif(mfp.fixedContentPos) {\n\t\t\tvar windowStyles = {marginRight: ''};\n\t\t\tif(mfp.isIE7) {\n\t\t\t\t$('body, html').css('overflow', '');\n\t\t\t} else {\n\t\t\t\twindowStyles.overflow = '';\n\t\t\t}\n\t\t\t$('html').css(windowStyles);\n\t\t}\n\t\t\n\t\t_document.off('keyup' + EVENT_NS + ' focusin' + EVENT_NS);\n\t\tmfp.ev.off(EVENT_NS);\n\n\t\t// clean up DOM elements that aren't removed\n\t\tmfp.wrap.attr('class', 'mfp-wrap').removeAttr('style');\n\t\tmfp.bgOverlay.attr('class', 'mfp-bg');\n\t\tmfp.container.attr('class', 'mfp-container');\n\n\t\t// remove close button from target element\n\t\tif(mfp.st.showCloseBtn &&\n\t\t(!mfp.st.closeBtnInside || mfp.currTemplate[mfp.currItem.type] === true)) {\n\t\t\tif(mfp.currTemplate.closeBtn)\n\t\t\t\tmfp.currTemplate.closeBtn.detach();\n\t\t}\n\n\n\t\tif(mfp.st.autoFocusLast && mfp._lastFocusedEl) {\n\t\t\t$(mfp._lastFocusedEl).focus(); // put tab focus back\n\t\t}\n\t\tmfp.currItem = null;\t\n\t\tmfp.content = null;\n\t\tmfp.currTemplate = null;\n\t\tmfp.prevHeight = 0;\n\n\t\t_mfpTrigger(AFTER_CLOSE_EVENT);\n\t},\n\t\n\tupdateSize: function(winHeight) {\n\n\t\tif(mfp.isIOS) {\n\t\t\t// fixes iOS nav bars https://github.com/dimsemenov/Magnific-Popup/issues/2\n\t\t\tvar zoomLevel = document.documentElement.clientWidth / window.innerWidth;\n\t\t\tvar height = window.innerHeight * zoomLevel;\n\t\t\tmfp.wrap.css('height', height);\n\t\t\tmfp.wH = height;\n\t\t} else {\n\t\t\tmfp.wH = winHeight || _window.height();\n\t\t}\n\t\t// Fixes #84: popup incorrectly positioned with position:relative on body\n\t\tif(!mfp.fixedContentPos) {\n\t\t\tmfp.wrap.css('height', mfp.wH);\n\t\t}\n\n\t\t_mfpTrigger('Resize');\n\n\t},\n\n\t/**\n\t * Set content of popup based on current index\n\t */\n\tupdateItemHTML: function() {\n\t\tvar item = mfp.items[mfp.index];\n\n\t\t// Detach and perform modifications\n\t\tmfp.contentContainer.detach();\n\n\t\tif(mfp.content)\n\t\t\tmfp.content.detach();\n\n\t\tif(!item.parsed) {\n\t\t\titem = mfp.parseEl( mfp.index );\n\t\t}\n\n\t\tvar type = item.type;\n\n\t\t_mfpTrigger('BeforeChange', [mfp.currItem ? mfp.currItem.type : '', type]);\n\t\t// BeforeChange event works like so:\n\t\t// _mfpOn('BeforeChange', function(e, prevType, newType) { });\n\n\t\tmfp.currItem = item;\n\n\t\tif(!mfp.currTemplate[type]) {\n\t\t\tvar markup = mfp.st[type] ? mfp.st[type].markup : false;\n\n\t\t\t// allows to modify markup\n\t\t\t_mfpTrigger('FirstMarkupParse', markup);\n\n\t\t\tif(markup) {\n\t\t\t\tmfp.currTemplate[type] = $(markup);\n\t\t\t} else {\n\t\t\t\t// if there is no markup found we just define that template is parsed\n\t\t\t\tmfp.currTemplate[type] = true;\n\t\t\t}\n\t\t}\n\n\t\tif(_prevContentType && _prevContentType !== item.type) {\n\t\t\tmfp.container.removeClass('mfp-'+_prevContentType+'-holder');\n\t\t}\n\n\t\tvar newContent = mfp['get' + type.charAt(0).toUpperCase() + type.slice(1)](item, mfp.currTemplate[type]);\n\t\tmfp.appendContent(newContent, type);\n\n\t\titem.preloaded = true;\n\n\t\t_mfpTrigger(CHANGE_EVENT, item);\n\t\t_prevContentType = item.type;\n\n\t\t// Append container back after its content changed\n\t\tmfp.container.prepend(mfp.contentContainer);\n\n\t\t_mfpTrigger('AfterChange');\n\t},\n\n\n\t/**\n\t * Set HTML content of popup\n\t */\n\tappendContent: function(newContent, type) {\n\t\tmfp.content = newContent;\n\n\t\tif(newContent) {\n\t\t\tif(mfp.st.showCloseBtn && mfp.st.closeBtnInside &&\n\t\t\t\tmfp.currTemplate[type] === true) {\n\t\t\t\t// if there is no markup, we just append close button element inside\n\t\t\t\tif(!mfp.content.find('.mfp-close').length) {\n\t\t\t\t\tmfp.content.append(_getCloseBtn());\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tmfp.content = newContent;\n\t\t\t}\n\t\t} else {\n\t\t\tmfp.content = '';\n\t\t}\n\n\t\t_mfpTrigger(BEFORE_APPEND_EVENT);\n\t\tmfp.container.addClass('mfp-'+type+'-holder');\n\n\t\tmfp.contentContainer.append(mfp.content);\n\t},\n\n\n\t/**\n\t * Creates Magnific Popup data object based on given data\n\t * @param  {int} index Index of item to parse\n\t */\n\tparseEl: function(index) {\n\t\tvar item = mfp.items[index],\n\t\t\ttype;\n\n\t\tif(item.tagName) {\n\t\t\titem = { el: $(item) };\n\t\t} else {\n\t\t\ttype = item.type;\n\t\t\titem = { data: item, src: item.src };\n\t\t}\n\n\t\tif(item.el) {\n\t\t\tvar types = mfp.types;\n\n\t\t\t// check for 'mfp-TYPE' class\n\t\t\tfor(var i = 0; i < types.length; i++) {\n\t\t\t\tif( item.el.hasClass('mfp-'+types[i]) ) {\n\t\t\t\t\ttype = types[i];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\titem.src = item.el.attr('data-mfp-src');\n\t\t\tif(!item.src) {\n\t\t\t\titem.src = item.el.attr('href');\n\t\t\t}\n\t\t}\n\n\t\titem.type = type || mfp.st.type || 'inline';\n\t\titem.index = index;\n\t\titem.parsed = true;\n\t\tmfp.items[index] = item;\n\t\t_mfpTrigger('ElementParse', item);\n\n\t\treturn mfp.items[index];\n\t},\n\n\n\t/**\n\t * Initializes single popup or a group of popups\n\t */\n\taddGroup: function(el, options) {\n\t\tvar eHandler = function(e) {\n\t\t\te.mfpEl = this;\n\t\t\tmfp._openClick(e, el, options);\n\t\t};\n\n\t\tif(!options) {\n\t\t\toptions = {};\n\t\t}\n\n\t\tvar eName = 'click.magnificPopup';\n\t\toptions.mainEl = el;\n\n\t\tif(options.items) {\n\t\t\toptions.isObj = true;\n\t\t\tel.off(eName).on(eName, eHandler);\n\t\t} else {\n\t\t\toptions.isObj = false;\n\t\t\tif(options.delegate) {\n\t\t\t\tel.off(eName).on(eName, options.delegate , eHandler);\n\t\t\t} else {\n\t\t\t\toptions.items = el;\n\t\t\t\tel.off(eName).on(eName, eHandler);\n\t\t\t}\n\t\t}\n\t},\n\t_openClick: function(e, el, options) {\n\t\tvar midClick = options.midClick !== undefined ? options.midClick : $.magnificPopup.defaults.midClick;\n\n\n\t\tif(!midClick && ( e.which === 2 || e.ctrlKey || e.metaKey || e.altKey || e.shiftKey ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar disableOn = options.disableOn !== undefined ? options.disableOn : $.magnificPopup.defaults.disableOn;\n\n\t\tif(disableOn) {\n\t\t\tif($.isFunction(disableOn)) {\n\t\t\t\tif( !disableOn.call(mfp) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} else { // else it's number\n\t\t\t\tif( _window.width() < disableOn ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif(e.type) {\n\t\t\te.preventDefault();\n\n\t\t\t// This will prevent popup from closing if element is inside and popup is already opened\n\t\t\tif(mfp.isOpen) {\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\t\t}\n\n\t\toptions.el = $(e.mfpEl);\n\t\tif(options.delegate) {\n\t\t\toptions.items = el.find(options.delegate);\n\t\t}\n\t\tmfp.open(options);\n\t},\n\n\n\t/**\n\t * Updates text on preloader\n\t */\n\tupdateStatus: function(status, text) {\n\n\t\tif(mfp.preloader) {\n\t\t\tif(_prevStatus !== status) {\n\t\t\t\tmfp.container.removeClass('mfp-s-'+_prevStatus);\n\t\t\t}\n\n\t\t\tif(!text && status === 'loading') {\n\t\t\t\ttext = mfp.st.tLoading;\n\t\t\t}\n\n\t\t\tvar data = {\n\t\t\t\tstatus: status,\n\t\t\t\ttext: text\n\t\t\t};\n\t\t\t// allows to modify status\n\t\t\t_mfpTrigger('UpdateStatus', data);\n\n\t\t\tstatus = data.status;\n\t\t\ttext = data.text;\n\n\t\t\tmfp.preloader.html(text);\n\n\t\t\tmfp.preloader.find('a').on('click', function(e) {\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t});\n\n\t\t\tmfp.container.addClass('mfp-s-'+status);\n\t\t\t_prevStatus = status;\n\t\t}\n\t},\n\n\n\t/*\n\t\t\"Private\" helpers that aren't private at all\n\t */\n\t// Check to close popup or not\n\t// \"target\" is an element that was clicked\n\t_checkIfClose: function(target) {\n\n\t\tif($(target).hasClass(PREVENT_CLOSE_CLASS)) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar closeOnContent = mfp.st.closeOnContentClick;\n\t\tvar closeOnBg = mfp.st.closeOnBgClick;\n\n\t\tif(closeOnContent && closeOnBg) {\n\t\t\treturn true;\n\t\t} else {\n\n\t\t\t// We close the popup if click is on close button or on preloader. Or if there is no content.\n\t\t\tif(!mfp.content || $(target).hasClass('mfp-close') || (mfp.preloader && target === mfp.preloader[0]) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// if click is outside the content\n\t\t\tif(  (target !== mfp.content[0] && !$.contains(mfp.content[0], target))  ) {\n\t\t\t\tif(closeOnBg) {\n\t\t\t\t\t// last check, if the clicked element is in DOM, (in case it's removed onclick)\n\t\t\t\t\tif( $.contains(document, target) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if(closeOnContent) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t}\n\t\treturn false;\n\t},\n\t_addClassToMFP: function(cName) {\n\t\tmfp.bgOverlay.addClass(cName);\n\t\tmfp.wrap.addClass(cName);\n\t},\n\t_removeClassFromMFP: function(cName) {\n\t\tthis.bgOverlay.removeClass(cName);\n\t\tmfp.wrap.removeClass(cName);\n\t},\n\t_hasScrollBar: function(winHeight) {\n\t\treturn (  (mfp.isIE7 ? _document.height() : document.body.scrollHeight) > (winHeight || _window.height()) );\n\t},\n\t_setFocus: function() {\n\t\t(mfp.st.focus ? mfp.content.find(mfp.st.focus).eq(0) : mfp.wrap).focus();\n\t},\n\t_onFocusIn: function(e) {\n\t\tif( e.target !== mfp.wrap[0] && !$.contains(mfp.wrap[0], e.target) ) {\n\t\t\tmfp._setFocus();\n\t\t\treturn false;\n\t\t}\n\t},\n\t_parseMarkup: function(template, values, item) {\n\t\tvar arr;\n\t\tif(item.data) {\n\t\t\tvalues = $.extend(item.data, values);\n\t\t}\n\t\t_mfpTrigger(MARKUP_PARSE_EVENT, [template, values, item] );\n\n\t\t$.each(values, function(key, value) {\n\t\t\tif(value === undefined || value === false) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tarr = key.split('_');\n\t\t\tif(arr.length > 1) {\n\t\t\t\tvar el = template.find(EVENT_NS + '-'+arr[0]);\n\n\t\t\t\tif(el.length > 0) {\n\t\t\t\t\tvar attr = arr[1];\n\t\t\t\t\tif(attr === 'replaceWith') {\n\t\t\t\t\t\tif(el[0] !== value[0]) {\n\t\t\t\t\t\t\tel.replaceWith(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if(attr === 'img') {\n\t\t\t\t\t\tif(el.is('img')) {\n\t\t\t\t\t\t\tel.attr('src', value);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tel.replaceWith( $('<img>').attr('src', value).attr('class', el.attr('class')) );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tel.attr(arr[1], value);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t} else {\n\t\t\t\ttemplate.find(EVENT_NS + '-'+key).html(value);\n\t\t\t}\n\t\t});\n\t},\n\n\t_getScrollbarSize: function() {\n\t\t// thx David\n\t\tif(mfp.scrollbarSize === undefined) {\n\t\t\tvar scrollDiv = document.createElement(\"div\");\n\t\t\tscrollDiv.style.cssText = 'width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;';\n\t\t\tdocument.body.appendChild(scrollDiv);\n\t\t\tmfp.scrollbarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n\t\t\tdocument.body.removeChild(scrollDiv);\n\t\t}\n\t\treturn mfp.scrollbarSize;\n\t}\n\n}; /* MagnificPopup core prototype end */\n\n\n\n\n/**\n * Public static functions\n */\n$.magnificPopup = {\n\tinstance: null,\n\tproto: MagnificPopup.prototype,\n\tmodules: [],\n\n\topen: function(options, index) {\n\t\t_checkInstance();\n\n\t\tif(!options) {\n\t\t\toptions = {};\n\t\t} else {\n\t\t\toptions = $.extend(true, {}, options);\n\t\t}\n\n\t\toptions.isObj = true;\n\t\toptions.index = index || 0;\n\t\treturn this.instance.open(options);\n\t},\n\n\tclose: function() {\n\t\treturn $.magnificPopup.instance && $.magnificPopup.instance.close();\n\t},\n\n\tregisterModule: function(name, module) {\n\t\tif(module.options) {\n\t\t\t$.magnificPopup.defaults[name] = module.options;\n\t\t}\n\t\t$.extend(this.proto, module.proto);\n\t\tthis.modules.push(name);\n\t},\n\n\tdefaults: {\n\n\t\t// Info about options is in docs:\n\t\t// http://dimsemenov.com/plugins/magnific-popup/documentation.html#options\n\n\t\tdisableOn: 0,\n\n\t\tkey: null,\n\n\t\tmidClick: false,\n\n\t\tmainClass: '',\n\n\t\tpreloader: true,\n\n\t\tfocus: '', // CSS selector of input to focus after popup is opened\n\n\t\tcloseOnContentClick: false,\n\n\t\tcloseOnBgClick: true,\n\n\t\tcloseBtnInside: true,\n\n\t\tshowCloseBtn: true,\n\n\t\tenableEscapeKey: true,\n\n\t\tmodal: false,\n\n\t\talignTop: false,\n\n\t\tremovalDelay: 0,\n\n\t\tprependTo: null,\n\n\t\tfixedContentPos: 'auto',\n\n\t\tfixedBgPos: 'auto',\n\n\t\toverflowY: 'auto',\n\n\t\tcloseMarkup: '<button title=\"%title%\" type=\"button\" class=\"mfp-close\">&#215;</button>',\n\n\t\ttClose: 'Close (Esc)',\n\n\t\ttLoading: 'Loading...',\n\n\t\tautoFocusLast: true\n\n\t}\n};\n\n\n\n$.fn.magnificPopup = function(options) {\n\t_checkInstance();\n\n\tvar jqEl = $(this);\n\n\t// We call some API method of first param is a string\n\tif (typeof options === \"string\" ) {\n\n\t\tif(options === 'open') {\n\t\t\tvar items,\n\t\t\t\titemOpts = _isJQ ? jqEl.data('magnificPopup') : jqEl[0].magnificPopup,\n\t\t\t\tindex = parseInt(arguments[1], 10) || 0;\n\n\t\t\tif(itemOpts.items) {\n\t\t\t\titems = itemOpts.items[index];\n\t\t\t} else {\n\t\t\t\titems = jqEl;\n\t\t\t\tif(itemOpts.delegate) {\n\t\t\t\t\titems = items.find(itemOpts.delegate);\n\t\t\t\t}\n\t\t\t\titems = items.eq( index );\n\t\t\t}\n\t\t\tmfp._openClick({mfpEl:items}, jqEl, itemOpts);\n\t\t} else {\n\t\t\tif(mfp.isOpen)\n\t\t\t\tmfp[options].apply(mfp, Array.prototype.slice.call(arguments, 1));\n\t\t}\n\n\t} else {\n\t\t// clone options obj\n\t\toptions = $.extend(true, {}, options);\n\n\t\t/*\n\t\t * As Zepto doesn't support .data() method for objects\n\t\t * and it works only in normal browsers\n\t\t * we assign \"options\" object directly to the DOM element. FTW!\n\t\t */\n\t\tif(_isJQ) {\n\t\t\tjqEl.data('magnificPopup', options);\n\t\t} else {\n\t\t\tjqEl[0].magnificPopup = options;\n\t\t}\n\n\t\tmfp.addGroup(jqEl, options);\n\n\t}\n\treturn jqEl;\n};\n\n/*>>core*/\n\n/*>>inline*/\n\nvar INLINE_NS = 'inline',\n\t_hiddenClass,\n\t_inlinePlaceholder,\n\t_lastInlineElement,\n\t_putInlineElementsBack = function() {\n\t\tif(_lastInlineElement) {\n\t\t\t_inlinePlaceholder.after( _lastInlineElement.addClass(_hiddenClass) ).detach();\n\t\t\t_lastInlineElement = null;\n\t\t}\n\t};\n\n$.magnificPopup.registerModule(INLINE_NS, {\n\toptions: {\n\t\thiddenClass: 'hide', // will be appended with `mfp-` prefix\n\t\tmarkup: '',\n\t\ttNotFound: 'Content not found'\n\t},\n\tproto: {\n\n\t\tinitInline: function() {\n\t\t\tmfp.types.push(INLINE_NS);\n\n\t\t\t_mfpOn(CLOSE_EVENT+'.'+INLINE_NS, function() {\n\t\t\t\t_putInlineElementsBack();\n\t\t\t});\n\t\t},\n\n\t\tgetInline: function(item, template) {\n\n\t\t\t_putInlineElementsBack();\n\n\t\t\tif(item.src) {\n\t\t\t\tvar inlineSt = mfp.st.inline,\n\t\t\t\t\tel = $(item.src);\n\n\t\t\t\tif(el.length) {\n\n\t\t\t\t\t// If target element has parent - we replace it with placeholder and put it back after popup is closed\n\t\t\t\t\tvar parent = el[0].parentNode;\n\t\t\t\t\tif(parent && parent.tagName) {\n\t\t\t\t\t\tif(!_inlinePlaceholder) {\n\t\t\t\t\t\t\t_hiddenClass = inlineSt.hiddenClass;\n\t\t\t\t\t\t\t_inlinePlaceholder = _getEl(_hiddenClass);\n\t\t\t\t\t\t\t_hiddenClass = 'mfp-'+_hiddenClass;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// replace target inline element with placeholder\n\t\t\t\t\t\t_lastInlineElement = el.after(_inlinePlaceholder).detach().removeClass(_hiddenClass);\n\t\t\t\t\t}\n\n\t\t\t\t\tmfp.updateStatus('ready');\n\t\t\t\t} else {\n\t\t\t\t\tmfp.updateStatus('error', inlineSt.tNotFound);\n\t\t\t\t\tel = $('<div>');\n\t\t\t\t}\n\n\t\t\t\titem.inlineElement = el;\n\t\t\t\treturn el;\n\t\t\t}\n\n\t\t\tmfp.updateStatus('ready');\n\t\t\tmfp._parseMarkup(template, {}, item);\n\t\t\treturn template;\n\t\t}\n\t}\n});\n\n/*>>inline*/\n\n/*>>ajax*/\nvar AJAX_NS = 'ajax',\n\t_ajaxCur,\n\t_removeAjaxCursor = function() {\n\t\tif(_ajaxCur) {\n\t\t\t$(document.body).removeClass(_ajaxCur);\n\t\t}\n\t},\n\t_destroyAjaxRequest = function() {\n\t\t_removeAjaxCursor();\n\t\tif(mfp.req) {\n\t\t\tmfp.req.abort();\n\t\t}\n\t};\n\n$.magnificPopup.registerModule(AJAX_NS, {\n\n\toptions: {\n\t\tsettings: null,\n\t\tcursor: 'mfp-ajax-cur',\n\t\ttError: '<a href=\"%url%\">The content</a> could not be loaded.'\n\t},\n\n\tproto: {\n\t\tinitAjax: function() {\n\t\t\tmfp.types.push(AJAX_NS);\n\t\t\t_ajaxCur = mfp.st.ajax.cursor;\n\n\t\t\t_mfpOn(CLOSE_EVENT+'.'+AJAX_NS, _destroyAjaxRequest);\n\t\t\t_mfpOn('BeforeChange.' + AJAX_NS, _destroyAjaxRequest);\n\t\t},\n\t\tgetAjax: function(item) {\n\n\t\t\tif(_ajaxCur) {\n\t\t\t\t$(document.body).addClass(_ajaxCur);\n\t\t\t}\n\n\t\t\tmfp.updateStatus('loading');\n\n\t\t\tvar opts = $.extend({\n\t\t\t\turl: item.src,\n\t\t\t\tsuccess: function(data, textStatus, jqXHR) {\n\t\t\t\t\tvar temp = {\n\t\t\t\t\t\tdata:data,\n\t\t\t\t\t\txhr:jqXHR\n\t\t\t\t\t};\n\n\t\t\t\t\t_mfpTrigger('ParseAjax', temp);\n\n\t\t\t\t\tmfp.appendContent( $(temp.data), AJAX_NS );\n\n\t\t\t\t\titem.finished = true;\n\n\t\t\t\t\t_removeAjaxCursor();\n\n\t\t\t\t\tmfp._setFocus();\n\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tmfp.wrap.addClass(READY_CLASS);\n\t\t\t\t\t}, 16);\n\n\t\t\t\t\tmfp.updateStatus('ready');\n\n\t\t\t\t\t_mfpTrigger('AjaxContentAdded');\n\t\t\t\t},\n\t\t\t\terror: function() {\n\t\t\t\t\t_removeAjaxCursor();\n\t\t\t\t\titem.finished = item.loadError = true;\n\t\t\t\t\tmfp.updateStatus('error', mfp.st.ajax.tError.replace('%url%', item.src));\n\t\t\t\t}\n\t\t\t}, mfp.st.ajax.settings);\n\n\t\t\tmfp.req = $.ajax(opts);\n\n\t\t\treturn '';\n\t\t}\n\t}\n});\n\n/*>>ajax*/\n\n/*>>image*/\nvar _imgInterval,\n\t_getTitle = function(item) {\n\t\tif(item.data && item.data.title !== undefined)\n\t\t\treturn item.data.title;\n\n\t\tvar src = mfp.st.image.titleSrc;\n\n\t\tif(src) {\n\t\t\tif($.isFunction(src)) {\n\t\t\t\treturn src.call(mfp, item);\n\t\t\t} else if(item.el) {\n\t\t\t\treturn item.el.attr(src) || '';\n\t\t\t}\n\t\t}\n\t\treturn '';\n\t};\n\n$.magnificPopup.registerModule('image', {\n\n\toptions: {\n\t\tmarkup: '<div class=\"mfp-figure\">'+\n\t\t\t\t\t'<div class=\"mfp-close\"></div>'+\n\t\t\t\t\t'<figure>'+\n\t\t\t\t\t\t'<div class=\"mfp-img\"></div>'+\n\t\t\t\t\t\t'<figcaption>'+\n\t\t\t\t\t\t\t'<div class=\"mfp-bottom-bar\">'+\n\t\t\t\t\t\t\t\t'<div class=\"mfp-title\"></div>'+\n\t\t\t\t\t\t\t\t'<div class=\"mfp-counter\"></div>'+\n\t\t\t\t\t\t\t'</div>'+\n\t\t\t\t\t\t'</figcaption>'+\n\t\t\t\t\t'</figure>'+\n\t\t\t\t'</div>',\n\t\tcursor: 'mfp-zoom-out-cur',\n\t\ttitleSrc: 'title',\n\t\tverticalFit: true,\n\t\ttError: '<a href=\"%url%\">The image</a> could not be loaded.'\n\t},\n\n\tproto: {\n\t\tinitImage: function() {\n\t\t\tvar imgSt = mfp.st.image,\n\t\t\t\tns = '.image';\n\n\t\t\tmfp.types.push('image');\n\n\t\t\t_mfpOn(OPEN_EVENT+ns, function() {\n\t\t\t\tif(mfp.currItem.type === 'image' && imgSt.cursor) {\n\t\t\t\t\t$(document.body).addClass(imgSt.cursor);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t_mfpOn(CLOSE_EVENT+ns, function() {\n\t\t\t\tif(imgSt.cursor) {\n\t\t\t\t\t$(document.body).removeClass(imgSt.cursor);\n\t\t\t\t}\n\t\t\t\t_window.off('resize' + EVENT_NS);\n\t\t\t});\n\n\t\t\t_mfpOn('Resize'+ns, mfp.resizeImage);\n\t\t\tif(mfp.isLowIE) {\n\t\t\t\t_mfpOn('AfterChange', mfp.resizeImage);\n\t\t\t}\n\t\t},\n\t\tresizeImage: function() {\n\t\t\tvar item = mfp.currItem;\n\t\t\tif(!item || !item.img) return;\n\n\t\t\tif(mfp.st.image.verticalFit) {\n\t\t\t\tvar decr = 0;\n\t\t\t\t// fix box-sizing in ie7/8\n\t\t\t\tif(mfp.isLowIE) {\n\t\t\t\t\tdecr = parseInt(item.img.css('padding-top'), 10) + parseInt(item.img.css('padding-bottom'),10);\n\t\t\t\t}\n\t\t\t\titem.img.css('max-height', mfp.wH-decr);\n\t\t\t}\n\t\t},\n\t\t_onImageHasSize: function(item) {\n\t\t\tif(item.img) {\n\n\t\t\t\titem.hasSize = true;\n\n\t\t\t\tif(_imgInterval) {\n\t\t\t\t\tclearInterval(_imgInterval);\n\t\t\t\t}\n\n\t\t\t\titem.isCheckingImgSize = false;\n\n\t\t\t\t_mfpTrigger('ImageHasSize', item);\n\n\t\t\t\tif(item.imgHidden) {\n\t\t\t\t\tif(mfp.content)\n\t\t\t\t\t\tmfp.content.removeClass('mfp-loading');\n\n\t\t\t\t\titem.imgHidden = false;\n\t\t\t\t}\n\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Function that loops until the image has size to display elements that rely on it asap\n\t\t */\n\t\tfindImageSize: function(item) {\n\n\t\t\tvar counter = 0,\n\t\t\t\timg = item.img[0],\n\t\t\t\tmfpSetInterval = function(delay) {\n\n\t\t\t\t\tif(_imgInterval) {\n\t\t\t\t\t\tclearInterval(_imgInterval);\n\t\t\t\t\t}\n\t\t\t\t\t// decelerating interval that checks for size of an image\n\t\t\t\t\t_imgInterval = setInterval(function() {\n\t\t\t\t\t\tif(img.naturalWidth > 0) {\n\t\t\t\t\t\t\tmfp._onImageHasSize(item);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(counter > 200) {\n\t\t\t\t\t\t\tclearInterval(_imgInterval);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcounter++;\n\t\t\t\t\t\tif(counter === 3) {\n\t\t\t\t\t\t\tmfpSetInterval(10);\n\t\t\t\t\t\t} else if(counter === 40) {\n\t\t\t\t\t\t\tmfpSetInterval(50);\n\t\t\t\t\t\t} else if(counter === 100) {\n\t\t\t\t\t\t\tmfpSetInterval(500);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, delay);\n\t\t\t\t};\n\n\t\t\tmfpSetInterval(1);\n\t\t},\n\n\t\tgetImage: function(item, template) {\n\n\t\t\tvar guard = 0,\n\n\t\t\t\t// image load complete handler\n\t\t\t\tonLoadComplete = function() {\n\t\t\t\t\tif(item) {\n\t\t\t\t\t\tif (item.img[0].complete) {\n\t\t\t\t\t\t\titem.img.off('.mfploader');\n\n\t\t\t\t\t\t\tif(item === mfp.currItem){\n\t\t\t\t\t\t\t\tmfp._onImageHasSize(item);\n\n\t\t\t\t\t\t\t\tmfp.updateStatus('ready');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\titem.hasSize = true;\n\t\t\t\t\t\t\titem.loaded = true;\n\n\t\t\t\t\t\t\t_mfpTrigger('ImageLoadComplete');\n\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t// if image complete check fails 200 times (20 sec), we assume that there was an error.\n\t\t\t\t\t\t\tguard++;\n\t\t\t\t\t\t\tif(guard < 200) {\n\t\t\t\t\t\t\t\tsetTimeout(onLoadComplete,100);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tonLoadError();\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// image error handler\n\t\t\t\tonLoadError = function() {\n\t\t\t\t\tif(item) {\n\t\t\t\t\t\titem.img.off('.mfploader');\n\t\t\t\t\t\tif(item === mfp.currItem){\n\t\t\t\t\t\t\tmfp._onImageHasSize(item);\n\t\t\t\t\t\t\tmfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\titem.hasSize = true;\n\t\t\t\t\t\titem.loaded = true;\n\t\t\t\t\t\titem.loadError = true;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\timgSt = mfp.st.image;\n\n\n\t\t\tvar el = template.find('.mfp-img');\n\t\t\tif(el.length) {\n\t\t\t\tvar img = document.createElement('img');\n\t\t\t\timg.className = 'mfp-img';\n\t\t\t\tif(item.el && item.el.find('img').length) {\n\t\t\t\t\timg.alt = item.el.find('img').attr('alt');\n\t\t\t\t}\n\t\t\t\titem.img = $(img).on('load.mfploader', onLoadComplete).on('error.mfploader', onLoadError);\n\t\t\t\timg.src = item.src;\n\n\t\t\t\t// without clone() \"error\" event is not firing when IMG is replaced by new IMG\n\t\t\t\t// TODO: find a way to avoid such cloning\n\t\t\t\tif(el.is('img')) {\n\t\t\t\t\titem.img = item.img.clone();\n\t\t\t\t}\n\n\t\t\t\timg = item.img[0];\n\t\t\t\tif(img.naturalWidth > 0) {\n\t\t\t\t\titem.hasSize = true;\n\t\t\t\t} else if(!img.width) {\n\t\t\t\t\titem.hasSize = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmfp._parseMarkup(template, {\n\t\t\t\ttitle: _getTitle(item),\n\t\t\t\timg_replaceWith: item.img\n\t\t\t}, item);\n\n\t\t\tmfp.resizeImage();\n\n\t\t\tif(item.hasSize) {\n\t\t\t\tif(_imgInterval) clearInterval(_imgInterval);\n\n\t\t\t\tif(item.loadError) {\n\t\t\t\t\ttemplate.addClass('mfp-loading');\n\t\t\t\t\tmfp.updateStatus('error', imgSt.tError.replace('%url%', item.src) );\n\t\t\t\t} else {\n\t\t\t\t\ttemplate.removeClass('mfp-loading');\n\t\t\t\t\tmfp.updateStatus('ready');\n\t\t\t\t}\n\t\t\t\treturn template;\n\t\t\t}\n\n\t\t\tmfp.updateStatus('loading');\n\t\t\titem.loading = true;\n\n\t\t\tif(!item.hasSize) {\n\t\t\t\titem.imgHidden = true;\n\t\t\t\ttemplate.addClass('mfp-loading');\n\t\t\t\tmfp.findImageSize(item);\n\t\t\t}\n\n\t\t\treturn template;\n\t\t}\n\t}\n});\n\n/*>>image*/\n\n/*>>zoom*/\nvar hasMozTransform,\n\tgetHasMozTransform = function() {\n\t\tif(hasMozTransform === undefined) {\n\t\t\thasMozTransform = document.createElement('p').style.MozTransform !== undefined;\n\t\t}\n\t\treturn hasMozTransform;\n\t};\n\n$.magnificPopup.registerModule('zoom', {\n\n\toptions: {\n\t\tenabled: false,\n\t\teasing: 'ease-in-out',\n\t\tduration: 300,\n\t\topener: function(element) {\n\t\t\treturn element.is('img') ? element : element.find('img');\n\t\t}\n\t},\n\n\tproto: {\n\n\t\tinitZoom: function() {\n\t\t\tvar zoomSt = mfp.st.zoom,\n\t\t\t\tns = '.zoom',\n\t\t\t\timage;\n\n\t\t\tif(!zoomSt.enabled || !mfp.supportsTransition) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar duration = zoomSt.duration,\n\t\t\t\tgetElToAnimate = function(image) {\n\t\t\t\t\tvar newImg = image.clone().removeAttr('style').removeAttr('class').addClass('mfp-animated-image'),\n\t\t\t\t\t\ttransition = 'all '+(zoomSt.duration/1000)+'s ' + zoomSt.easing,\n\t\t\t\t\t\tcssObj = {\n\t\t\t\t\t\t\tposition: 'fixed',\n\t\t\t\t\t\t\tzIndex: 9999,\n\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\t'-webkit-backface-visibility': 'hidden'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tt = 'transition';\n\n\t\t\t\t\tcssObj['-webkit-'+t] = cssObj['-moz-'+t] = cssObj['-o-'+t] = cssObj[t] = transition;\n\n\t\t\t\t\tnewImg.css(cssObj);\n\t\t\t\t\treturn newImg;\n\t\t\t\t},\n\t\t\t\tshowMainContent = function() {\n\t\t\t\t\tmfp.content.css('visibility', 'visible');\n\t\t\t\t},\n\t\t\t\topenTimeout,\n\t\t\t\tanimatedImg;\n\n\t\t\t_mfpOn('BuildControls'+ns, function() {\n\t\t\t\tif(mfp._allowZoom()) {\n\n\t\t\t\t\tclearTimeout(openTimeout);\n\t\t\t\t\tmfp.content.css('visibility', 'hidden');\n\n\t\t\t\t\t// Basically, all code below does is clones existing image, puts in on top of the current one and animated it\n\n\t\t\t\t\timage = mfp._getItemToZoom();\n\n\t\t\t\t\tif(!image) {\n\t\t\t\t\t\tshowMainContent();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tanimatedImg = getElToAnimate(image);\n\n\t\t\t\t\tanimatedImg.css( mfp._getOffset() );\n\n\t\t\t\t\tmfp.wrap.append(animatedImg);\n\n\t\t\t\t\topenTimeout = setTimeout(function() {\n\t\t\t\t\t\tanimatedImg.css( mfp._getOffset( true ) );\n\t\t\t\t\t\topenTimeout = setTimeout(function() {\n\n\t\t\t\t\t\t\tshowMainContent();\n\n\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\tanimatedImg.remove();\n\t\t\t\t\t\t\t\timage = animatedImg = null;\n\t\t\t\t\t\t\t\t_mfpTrigger('ZoomAnimationEnded');\n\t\t\t\t\t\t\t}, 16); // avoid blink when switching images\n\n\t\t\t\t\t\t}, duration); // this timeout equals animation duration\n\n\t\t\t\t\t}, 16); // by adding this timeout we avoid short glitch at the beginning of animation\n\n\n\t\t\t\t\t// Lots of timeouts...\n\t\t\t\t}\n\t\t\t});\n\t\t\t_mfpOn(BEFORE_CLOSE_EVENT+ns, function() {\n\t\t\t\tif(mfp._allowZoom()) {\n\n\t\t\t\t\tclearTimeout(openTimeout);\n\n\t\t\t\t\tmfp.st.removalDelay = duration;\n\n\t\t\t\t\tif(!image) {\n\t\t\t\t\t\timage = mfp._getItemToZoom();\n\t\t\t\t\t\tif(!image) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tanimatedImg = getElToAnimate(image);\n\t\t\t\t\t}\n\n\t\t\t\t\tanimatedImg.css( mfp._getOffset(true) );\n\t\t\t\t\tmfp.wrap.append(animatedImg);\n\t\t\t\t\tmfp.content.css('visibility', 'hidden');\n\n\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\tanimatedImg.css( mfp._getOffset() );\n\t\t\t\t\t}, 16);\n\t\t\t\t}\n\n\t\t\t});\n\n\t\t\t_mfpOn(CLOSE_EVENT+ns, function() {\n\t\t\t\tif(mfp._allowZoom()) {\n\t\t\t\t\tshowMainContent();\n\t\t\t\t\tif(animatedImg) {\n\t\t\t\t\t\tanimatedImg.remove();\n\t\t\t\t\t}\n\t\t\t\t\timage = null;\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\t_allowZoom: function() {\n\t\t\treturn mfp.currItem.type === 'image';\n\t\t},\n\n\t\t_getItemToZoom: function() {\n\t\t\tif(mfp.currItem.hasSize) {\n\t\t\t\treturn mfp.currItem.img;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Get element postion relative to viewport\n\t\t_getOffset: function(isLarge) {\n\t\t\tvar el;\n\t\t\tif(isLarge) {\n\t\t\t\tel = mfp.currItem.img;\n\t\t\t} else {\n\t\t\t\tel = mfp.st.zoom.opener(mfp.currItem.el || mfp.currItem);\n\t\t\t}\n\n\t\t\tvar offset = el.offset();\n\t\t\tvar paddingTop = parseInt(el.css('padding-top'),10);\n\t\t\tvar paddingBottom = parseInt(el.css('padding-bottom'),10);\n\t\t\toffset.top -= ( $(window).scrollTop() - paddingTop );\n\n\n\t\t\t/*\n\n\t\t\tAnimating left + top + width/height looks glitchy in Firefox, but perfect in Chrome. And vice-versa.\n\n\t\t\t */\n\t\t\tvar obj = {\n\t\t\t\twidth: el.width(),\n\t\t\t\t// fix Zepto height+padding issue\n\t\t\t\theight: (_isJQ ? el.innerHeight() : el[0].offsetHeight) - paddingBottom - paddingTop\n\t\t\t};\n\n\t\t\t// I hate to do this, but there is no another option\n\t\t\tif( getHasMozTransform() ) {\n\t\t\t\tobj['-moz-transform'] = obj['transform'] = 'translate(' + offset.left + 'px,' + offset.top + 'px)';\n\t\t\t} else {\n\t\t\t\tobj.left = offset.left;\n\t\t\t\tobj.top = offset.top;\n\t\t\t}\n\t\t\treturn obj;\n\t\t}\n\n\t}\n});\n\n\n\n/*>>zoom*/\n\n/*>>iframe*/\n\nvar IFRAME_NS = 'iframe',\n\t_emptyPage = '//about:blank',\n\n\t_fixIframeBugs = function(isShowing) {\n\t\tif(mfp.currTemplate[IFRAME_NS]) {\n\t\t\tvar el = mfp.currTemplate[IFRAME_NS].find('iframe');\n\t\t\tif(el.length) {\n\t\t\t\t// reset src after the popup is closed to avoid \"video keeps playing after popup is closed\" bug\n\t\t\t\tif(!isShowing) {\n\t\t\t\t\tel[0].src = _emptyPage;\n\t\t\t\t}\n\n\t\t\t\t// IE8 black screen bug fix\n\t\t\t\tif(mfp.isIE8) {\n\t\t\t\t\tel.css('display', isShowing ? 'block' : 'none');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n$.magnificPopup.registerModule(IFRAME_NS, {\n\n\toptions: {\n\t\tmarkup: '<div class=\"mfp-iframe-scaler\">'+\n\t\t\t\t\t'<div class=\"mfp-close\"></div>'+\n\t\t\t\t\t'<iframe class=\"mfp-iframe\" src=\"//about:blank\" frameborder=\"0\" allowfullscreen></iframe>'+\n\t\t\t\t'</div>',\n\n\t\tsrcAction: 'iframe_src',\n\n\t\t// we don't care and support only one default type of URL by default\n\t\tpatterns: {\n\t\t\tyoutube: {\n\t\t\t\tindex: 'youtube.com',\n\t\t\t\tid: 'v=',\n\t\t\t\tsrc: '//www.youtube.com/embed/%id%?autoplay=1'\n\t\t\t},\n\t\t\tvimeo: {\n\t\t\t\tindex: 'vimeo.com/',\n\t\t\t\tid: '/',\n\t\t\t\tsrc: '//player.vimeo.com/video/%id%?autoplay=1'\n\t\t\t},\n\t\t\tgmaps: {\n\t\t\t\tindex: '//maps.google.',\n\t\t\t\tsrc: '%id%&output=embed'\n\t\t\t}\n\t\t}\n\t},\n\n\tproto: {\n\t\tinitIframe: function() {\n\t\t\tmfp.types.push(IFRAME_NS);\n\n\t\t\t_mfpOn('BeforeChange', function(e, prevType, newType) {\n\t\t\t\tif(prevType !== newType) {\n\t\t\t\t\tif(prevType === IFRAME_NS) {\n\t\t\t\t\t\t_fixIframeBugs(); // iframe if removed\n\t\t\t\t\t} else if(newType === IFRAME_NS) {\n\t\t\t\t\t\t_fixIframeBugs(true); // iframe is showing\n\t\t\t\t\t}\n\t\t\t\t}// else {\n\t\t\t\t\t// iframe source is switched, don't do anything\n\t\t\t\t//}\n\t\t\t});\n\n\t\t\t_mfpOn(CLOSE_EVENT + '.' + IFRAME_NS, function() {\n\t\t\t\t_fixIframeBugs();\n\t\t\t});\n\t\t},\n\n\t\tgetIframe: function(item, template) {\n\t\t\tvar embedSrc = item.src;\n\t\t\tvar iframeSt = mfp.st.iframe;\n\n\t\t\t$.each(iframeSt.patterns, function() {\n\t\t\t\tif(embedSrc.indexOf( this.index ) > -1) {\n\t\t\t\t\tif(this.id) {\n\t\t\t\t\t\tif(typeof this.id === 'string') {\n\t\t\t\t\t\t\tembedSrc = embedSrc.substr(embedSrc.lastIndexOf(this.id)+this.id.length, embedSrc.length);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tembedSrc = this.id.call( this, embedSrc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tembedSrc = this.src.replace('%id%', embedSrc );\n\t\t\t\t\treturn false; // break;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar dataObj = {};\n\t\t\tif(iframeSt.srcAction) {\n\t\t\t\tdataObj[iframeSt.srcAction] = embedSrc;\n\t\t\t}\n\t\t\tmfp._parseMarkup(template, dataObj, item);\n\n\t\t\tmfp.updateStatus('ready');\n\n\t\t\treturn template;\n\t\t}\n\t}\n});\n\n\n\n/*>>iframe*/\n\n/*>>gallery*/\n/**\n * Get looped index depending on number of slides\n */\nvar _getLoopedId = function(index) {\n\t\tvar numSlides = mfp.items.length;\n\t\tif(index > numSlides - 1) {\n\t\t\treturn index - numSlides;\n\t\t} else  if(index < 0) {\n\t\t\treturn numSlides + index;\n\t\t}\n\t\treturn index;\n\t},\n\t_replaceCurrTotal = function(text, curr, total) {\n\t\treturn text.replace(/%curr%/gi, curr + 1).replace(/%total%/gi, total);\n\t};\n\n$.magnificPopup.registerModule('gallery', {\n\n\toptions: {\n\t\tenabled: false,\n\t\tarrowMarkup: '<button title=\"%title%\" type=\"button\" class=\"mfp-arrow mfp-arrow-%dir%\"></button>',\n\t\tpreload: [0,2],\n\t\tnavigateByImgClick: true,\n\t\tarrows: true,\n\n\t\ttPrev: 'Previous (Left arrow key)',\n\t\ttNext: 'Next (Right arrow key)',\n\t\ttCounter: '%curr% of %total%'\n\t},\n\n\tproto: {\n\t\tinitGallery: function() {\n\n\t\t\tvar gSt = mfp.st.gallery,\n\t\t\t\tns = '.mfp-gallery';\n\n\t\t\tmfp.direction = true; // true - next, false - prev\n\n\t\t\tif(!gSt || !gSt.enabled ) return false;\n\n\t\t\t_wrapClasses += ' mfp-gallery';\n\n\t\t\t_mfpOn(OPEN_EVENT+ns, function() {\n\n\t\t\t\tif(gSt.navigateByImgClick) {\n\t\t\t\t\tmfp.wrap.on('click'+ns, '.mfp-img', function() {\n\t\t\t\t\t\tif(mfp.items.length > 1) {\n\t\t\t\t\t\t\tmfp.next();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t_document.on('keydown'+ns, function(e) {\n\t\t\t\t\tif (e.keyCode === 37) {\n\t\t\t\t\t\tmfp.prev();\n\t\t\t\t\t} else if (e.keyCode === 39) {\n\t\t\t\t\t\tmfp.next();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t_mfpOn('UpdateStatus'+ns, function(e, data) {\n\t\t\t\tif(data.text) {\n\t\t\t\t\tdata.text = _replaceCurrTotal(data.text, mfp.currItem.index, mfp.items.length);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t_mfpOn(MARKUP_PARSE_EVENT+ns, function(e, element, values, item) {\n\t\t\t\tvar l = mfp.items.length;\n\t\t\t\tvalues.counter = l > 1 ? _replaceCurrTotal(gSt.tCounter, item.index, l) : '';\n\t\t\t});\n\n\t\t\t_mfpOn('BuildControls' + ns, function() {\n\t\t\t\tif(mfp.items.length > 1 && gSt.arrows && !mfp.arrowLeft) {\n\t\t\t\t\tvar markup = gSt.arrowMarkup,\n\t\t\t\t\t\tarrowLeft = mfp.arrowLeft = $( markup.replace(/%title%/gi, gSt.tPrev).replace(/%dir%/gi, 'left') ).addClass(PREVENT_CLOSE_CLASS),\n\t\t\t\t\t\tarrowRight = mfp.arrowRight = $( markup.replace(/%title%/gi, gSt.tNext).replace(/%dir%/gi, 'right') ).addClass(PREVENT_CLOSE_CLASS);\n\n\t\t\t\t\tarrowLeft.click(function() {\n\t\t\t\t\t\tmfp.prev();\n\t\t\t\t\t});\n\t\t\t\t\tarrowRight.click(function() {\n\t\t\t\t\t\tmfp.next();\n\t\t\t\t\t});\n\n\t\t\t\t\tmfp.container.append(arrowLeft.add(arrowRight));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t_mfpOn(CHANGE_EVENT+ns, function() {\n\t\t\t\tif(mfp._preloadTimeout) clearTimeout(mfp._preloadTimeout);\n\n\t\t\t\tmfp._preloadTimeout = setTimeout(function() {\n\t\t\t\t\tmfp.preloadNearbyImages();\n\t\t\t\t\tmfp._preloadTimeout = null;\n\t\t\t\t}, 16);\n\t\t\t});\n\n\n\t\t\t_mfpOn(CLOSE_EVENT+ns, function() {\n\t\t\t\t_document.off(ns);\n\t\t\t\tmfp.wrap.off('click'+ns);\n\t\t\t\tmfp.arrowRight = mfp.arrowLeft = null;\n\t\t\t});\n\n\t\t},\n\t\tnext: function() {\n\t\t\tmfp.direction = true;\n\t\t\tmfp.index = _getLoopedId(mfp.index + 1);\n\t\t\tmfp.updateItemHTML();\n\t\t},\n\t\tprev: function() {\n\t\t\tmfp.direction = false;\n\t\t\tmfp.index = _getLoopedId(mfp.index - 1);\n\t\t\tmfp.updateItemHTML();\n\t\t},\n\t\tgoTo: function(newIndex) {\n\t\t\tmfp.direction = (newIndex >= mfp.index);\n\t\t\tmfp.index = newIndex;\n\t\t\tmfp.updateItemHTML();\n\t\t},\n\t\tpreloadNearbyImages: function() {\n\t\t\tvar p = mfp.st.gallery.preload,\n\t\t\t\tpreloadBefore = Math.min(p[0], mfp.items.length),\n\t\t\t\tpreloadAfter = Math.min(p[1], mfp.items.length),\n\t\t\t\ti;\n\n\t\t\tfor(i = 1; i <= (mfp.direction ? preloadAfter : preloadBefore); i++) {\n\t\t\t\tmfp._preloadItem(mfp.index+i);\n\t\t\t}\n\t\t\tfor(i = 1; i <= (mfp.direction ? preloadBefore : preloadAfter); i++) {\n\t\t\t\tmfp._preloadItem(mfp.index-i);\n\t\t\t}\n\t\t},\n\t\t_preloadItem: function(index) {\n\t\t\tindex = _getLoopedId(index);\n\n\t\t\tif(mfp.items[index].preloaded) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar item = mfp.items[index];\n\t\t\tif(!item.parsed) {\n\t\t\t\titem = mfp.parseEl( index );\n\t\t\t}\n\n\t\t\t_mfpTrigger('LazyLoad', item);\n\n\t\t\tif(item.type === 'image') {\n\t\t\t\titem.img = $('<img class=\"mfp-img\" />').on('load.mfploader', function() {\n\t\t\t\t\titem.hasSize = true;\n\t\t\t\t}).on('error.mfploader', function() {\n\t\t\t\t\titem.hasSize = true;\n\t\t\t\t\titem.loadError = true;\n\t\t\t\t\t_mfpTrigger('LazyLoadError', item);\n\t\t\t\t}).attr('src', item.src);\n\t\t\t}\n\n\n\t\t\titem.preloaded = true;\n\t\t}\n\t}\n});\n\n/*>>gallery*/\n\n/*>>retina*/\n\nvar RETINA_NS = 'retina';\n\n$.magnificPopup.registerModule(RETINA_NS, {\n\toptions: {\n\t\treplaceSrc: function(item) {\n\t\t\treturn item.src.replace(/\\.\\w+$/, function(m) { return '@2x' + m; });\n\t\t},\n\t\tratio: 1 // Function or number.  Set to 1 to disable.\n\t},\n\tproto: {\n\t\tinitRetina: function() {\n\t\t\tif(window.devicePixelRatio > 1) {\n\n\t\t\t\tvar st = mfp.st.retina,\n\t\t\t\t\tratio = st.ratio;\n\n\t\t\t\tratio = !isNaN(ratio) ? ratio : ratio();\n\n\t\t\t\tif(ratio > 1) {\n\t\t\t\t\t_mfpOn('ImageHasSize' + '.' + RETINA_NS, function(e, item) {\n\t\t\t\t\t\titem.img.css({\n\t\t\t\t\t\t\t'max-width': item.img[0].naturalWidth / ratio,\n\t\t\t\t\t\t\t'width': '100%'\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\t_mfpOn('ElementParse' + '.' + RETINA_NS, function(e, item) {\n\t\t\t\t\t\titem.src = st.replaceSrc(item, ratio);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t}\n});\n\n/*>>retina*/\n _checkInstance(); }));", "/**********************\n   Velocity UI Pack\n**********************/\n\n/* VelocityJS.org UI Pack (5.0.4). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License. Portions copyright Daniel Eden, Christian Pucci. */\n\n;(function (factory) {\n    /* CommonJS module. */\n    if (typeof require === \"function\" && typeof exports === \"object\" ) {\n        module.exports = factory();\n    /* AMD module. */\n    } else if (typeof define === \"function\" && define.amd) {\n        define([ \"velocity\" ], factory);\n    /* Browser globals. */\n    } else {\n        factory();\n    }\n}(function() {\nreturn function (global, window, document, undefined) {\n\n    /*************\n        Checks\n    *************/\n\n    if (!global.Velocity || !global.Velocity.Utilities) {\n        window.console && console.log(\"Velocity UI Pack: Velocity must be loaded first. Aborting.\");\n        return;\n    } else {\n        var Velocity = global.Velocity,\n            $ = Velocity.Utilities;\n    }\n\n    var velocityVersion = Velocity.version,\n        requiredVersion = { major: 1, minor: 1, patch: 0 };\n\n    function greaterSemver (primary, secondary) {\n        var versionInts = [];\n\n        if (!primary || !secondary) { return false; }\n\n        $.each([ primary, secondary ], function(i, versionObject) {\n            var versionIntsComponents = [];\n\n            $.each(versionObject, function(component, value) {\n                while (value.toString().length < 5) {\n                    value = \"0\" + value;\n                }\n                versionIntsComponents.push(value);\n            });\n\n            versionInts.push(versionIntsComponents.join(\"\"))\n        });\n\n        return (parseFloat(versionInts[0]) > parseFloat(versionInts[1]));\n    }\n\n    if (greaterSemver(requiredVersion, velocityVersion)){\n        var abortError = \"Velocity UI Pack: You need to update Velocity (jquery.velocity.js) to a newer version. Visit http://github.com/julianshapiro/velocity.\";\n        alert(abortError);\n        throw new Error(abortError);\n    }\n\n    /************************\n       Effect Registration\n    ************************/\n\n    /* Note: RegisterUI is a legacy name. */\n    Velocity.RegisterEffect = Velocity.RegisterUI = function (effectName, properties) {\n        /* Animate the expansion/contraction of the elements' parent's height for In/Out effects. */\n        function animateParentHeight (elements, direction, totalDuration, stagger) {\n            var totalHeightDelta = 0,\n                parentNode;\n\n            /* Sum the total height (including padding and margin) of all targeted elements. */\n            $.each(elements.nodeType ? [ elements ] : elements, function(i, element) {\n                if (stagger) {\n                    /* Increase the totalDuration by the successive delay amounts produced by the stagger option. */\n                    totalDuration += i * stagger;\n                }\n\n                parentNode = element.parentNode;\n\n                $.each([ \"height\", \"paddingTop\", \"paddingBottom\", \"marginTop\", \"marginBottom\"], function(i, property) {\n                    totalHeightDelta += parseFloat(Velocity.CSS.getPropertyValue(element, property));\n                });\n            });\n\n            /* Animate the parent element's height adjustment (with a varying duration multiplier for aesthetic benefits). */\n            Velocity.animate(\n                parentNode,\n                { height: (direction === \"In\" ? \"+\" : \"-\") + \"=\" + totalHeightDelta },\n                { queue: false, easing: \"ease-in-out\", duration: totalDuration * (direction === \"In\" ? 0.6 : 1) }\n            );\n        }\n\n        /* Register a custom redirect for each effect. */\n        Velocity.Redirects[effectName] = function (element, redirectOptions, elementsIndex, elementsSize, elements, promiseData) {\n            var finalElement = (elementsIndex === elementsSize - 1);\n\n            if (typeof properties.defaultDuration === \"function\") {\n                properties.defaultDuration = properties.defaultDuration.call(elements, elements);\n            } else {\n                properties.defaultDuration = parseFloat(properties.defaultDuration);\n            }\n\n            /* Iterate through each effect's call array. */\n            for (var callIndex = 0; callIndex < properties.calls.length; callIndex++) {\n                var call = properties.calls[callIndex],\n                    propertyMap = call[0],\n                    redirectDuration = (redirectOptions.duration || properties.defaultDuration || 1000),\n                    durationPercentage = call[1],\n                    callOptions = call[2] || {},\n                    opts = {};\n\n                /* Assign the whitelisted per-call options. */\n                opts.duration = redirectDuration * (durationPercentage || 1);\n                opts.queue = redirectOptions.queue || \"\";\n                opts.easing = callOptions.easing || \"ease\";\n                opts.delay = parseFloat(callOptions.delay) || 0;\n                opts._cacheValues = callOptions._cacheValues || true;\n\n                /* Special processing for the first effect call. */\n                if (callIndex === 0) {\n                    /* If a delay was passed into the redirect, combine it with the first call's delay. */\n                    opts.delay += (parseFloat(redirectOptions.delay) || 0);\n\n                    if (elementsIndex === 0) {\n                        opts.begin = function() {\n                            /* Only trigger a begin callback on the first effect call with the first element in the set. */\n                            redirectOptions.begin && redirectOptions.begin.call(elements, elements);\n\n                            var direction = effectName.match(/(In|Out)$/);\n\n                            /* Make \"in\" transitioning elements invisible immediately so that there's no FOUC between now\n                               and the first RAF tick. */\n                            if ((direction && direction[0] === \"In\") && propertyMap.opacity !== undefined) {\n                                $.each(elements.nodeType ? [ elements ] : elements, function(i, element) {\n                                    Velocity.CSS.setPropertyValue(element, \"opacity\", 0);\n                                });\n                            }\n\n                            /* Only trigger animateParentHeight() if we're using an In/Out transition. */\n                            if (redirectOptions.animateParentHeight && direction) {\n                                animateParentHeight(elements, direction[0], redirectDuration + opts.delay, redirectOptions.stagger);\n                            }\n                        }\n                    }\n\n                    /* If the user isn't overriding the display option, default to \"auto\" for \"In\"-suffixed transitions. */\n                    if (redirectOptions.display !== null) {\n                        if (redirectOptions.display !== undefined && redirectOptions.display !== \"none\") {\n                            opts.display = redirectOptions.display;\n                        } else if (/In$/.test(effectName)) {\n                            /* Inline elements cannot be subjected to transforms, so we switch them to inline-block. */\n                            var defaultDisplay = Velocity.CSS.Values.getDisplayType(element);\n                            opts.display = (defaultDisplay === \"inline\") ? \"inline-block\" : defaultDisplay;\n                        }\n                    }\n\n                    if (redirectOptions.visibility && redirectOptions.visibility !== \"hidden\") {\n                        opts.visibility = redirectOptions.visibility;\n                    }\n                }\n\n                /* Special processing for the last effect call. */\n                if (callIndex === properties.calls.length - 1) {\n                    /* Append promise resolving onto the user's redirect callback. */\n                    function injectFinalCallbacks () {\n                        if ((redirectOptions.display === undefined || redirectOptions.display === \"none\") && /Out$/.test(effectName)) {\n                            $.each(elements.nodeType ? [ elements ] : elements, function(i, element) {\n                                Velocity.CSS.setPropertyValue(element, \"display\", \"none\");\n                            });\n                        }\n\n                        redirectOptions.complete && redirectOptions.complete.call(elements, elements);\n\n                        if (promiseData) {\n                            promiseData.resolver(elements || element);\n                        }\n                    }\n\n                    opts.complete = function() {\n                        if (properties.reset) {\n                            for (var resetProperty in properties.reset) {\n                                var resetValue = properties.reset[resetProperty];\n\n                                /* Format each non-array value in the reset property map to [ value, value ] so that changes apply\n                                   immediately and DOM querying is avoided (via forcefeeding). */\n                                /* Note: Don't forcefeed hooks, otherwise their hook roots will be defaulted to their null values. */\n                                if (Velocity.CSS.Hooks.registered[resetProperty] === undefined && (typeof resetValue === \"string\" || typeof resetValue === \"number\")) {\n                                    properties.reset[resetProperty] = [ properties.reset[resetProperty], properties.reset[resetProperty] ];\n                                }\n                            }\n\n                            /* So that the reset values are applied instantly upon the next rAF tick, use a zero duration and parallel queueing. */\n                            var resetOptions = { duration: 0, queue: false };\n\n                            /* Since the reset option uses up the complete callback, we trigger the user's complete callback at the end of ours. */\n                            if (finalElement) {\n                                resetOptions.complete = injectFinalCallbacks;\n                            }\n\n                            Velocity.animate(element, properties.reset, resetOptions);\n                        /* Only trigger the user's complete callback on the last effect call with the last element in the set. */\n                        } else if (finalElement) {\n                            injectFinalCallbacks();\n                        }\n                    };\n\n                    if (redirectOptions.visibility === \"hidden\") {\n                        opts.visibility = redirectOptions.visibility;\n                    }\n                }\n\n                Velocity.animate(element, propertyMap, opts);\n            }\n        };\n\n        /* Return the Velocity object so that RegisterUI calls can be chained. */\n        return Velocity;\n    };\n\n    /*********************\n       Packaged Effects\n    *********************/\n\n    /* Externalize the packagedEffects data so that they can optionally be modified and re-registered. */\n    /* Support: <=IE8: Callouts will have no effect, and transitions will simply fade in/out. IE9/Android 2.3: Most effects are fully supported, the rest fade in/out. All other browsers: full support. */\n    Velocity.RegisterEffect.packagedEffects =\n        {\n            /* Animate.css */\n            \"callout.bounce\": {\n                defaultDuration: 550,\n                calls: [\n                    [ { translateY: -30 }, 0.25 ],\n                    [ { translateY: 0 }, 0.125 ],\n                    [ { translateY: -15 }, 0.125 ],\n                    [ { translateY: 0 }, 0.25 ]\n                ]\n            },\n            /* Animate.css */\n            \"callout.shake\": {\n                defaultDuration: 800,\n                calls: [\n                    [ { translateX: -11 }, 0.125 ],\n                    [ { translateX: 11 }, 0.125 ],\n                    [ { translateX: -11 }, 0.125 ],\n                    [ { translateX: 11 }, 0.125 ],\n                    [ { translateX: -11 }, 0.125 ],\n                    [ { translateX: 11 }, 0.125 ],\n                    [ { translateX: -11 }, 0.125 ],\n                    [ { translateX: 0 }, 0.125 ]\n                ]\n            },\n            /* Animate.css */\n            \"callout.flash\": {\n                defaultDuration: 1100,\n                calls: [\n                    [ { opacity: [ 0, \"easeInOutQuad\", 1 ] }, 0.25 ],\n                    [ { opacity: [ 1, \"easeInOutQuad\" ] }, 0.25 ],\n                    [ { opacity: [ 0, \"easeInOutQuad\" ] }, 0.25 ],\n                    [ { opacity: [ 1, \"easeInOutQuad\" ] }, 0.25 ]\n                ]\n            },\n            /* Animate.css */\n            \"callout.pulse\": {\n                defaultDuration: 825,\n                calls: [\n                    [ { scaleX: 1.1, scaleY: 1.1 }, 0.50, { easing: \"easeInExpo\" } ],\n                    [ { scaleX: 1, scaleY: 1 }, 0.50 ]\n                ]\n            },\n            /* Animate.css */\n            \"callout.swing\": {\n                defaultDuration: 950,\n                calls: [\n                    [ { rotateZ: 15 }, 0.20 ],\n                    [ { rotateZ: -10 }, 0.20 ],\n                    [ { rotateZ: 5 }, 0.20 ],\n                    [ { rotateZ: -5 }, 0.20 ],\n                    [ { rotateZ: 0 }, 0.20 ]\n                ]\n            },\n            /* Animate.css */\n            \"callout.tada\": {\n                defaultDuration: 1000,\n                calls: [\n                    [ { scaleX: 0.9, scaleY: 0.9, rotateZ: -3 }, 0.10 ],\n                    [ { scaleX: 1.1, scaleY: 1.1, rotateZ: 3 }, 0.10 ],\n                    [ { scaleX: 1.1, scaleY: 1.1, rotateZ: -3 }, 0.10 ],\n                    [ \"reverse\", 0.125 ],\n                    [ \"reverse\", 0.125 ],\n                    [ \"reverse\", 0.125 ],\n                    [ \"reverse\", 0.125 ],\n                    [ \"reverse\", 0.125 ],\n                    [ { scaleX: 1, scaleY: 1, rotateZ: 0 }, 0.20 ]\n                ]\n            },\n            \"transition.fadeIn\": {\n                defaultDuration: 500,\n                calls: [\n                    [ { opacity: [ 1, 0 ] } ]\n                ]\n            },\n            \"transition.fadeOut\": {\n                defaultDuration: 500,\n                calls: [\n                    [ { opacity: [ 0, 1 ] } ]\n                ]\n            },\n            /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n            \"transition.flipXIn\": {\n                defaultDuration: 700,\n                calls: [\n                    [ { opacity: [ 1, 0 ], transformPerspective: [ 800, 800 ], rotateY: [ 0, -55 ] } ]\n                ],\n                reset: { transformPerspective: 0 }\n            },\n            /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n            \"transition.flipXOut\": {\n                defaultDuration: 700,\n                calls: [\n                    [ { opacity: [ 0, 1 ], transformPerspective: [ 800, 800 ], rotateY: 55 } ]\n                ],\n                reset: { transformPerspective: 0, rotateY: 0 }\n            },\n            /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n            \"transition.flipYIn\": {\n                defaultDuration: 800,\n                calls: [\n                    [ { opacity: [ 1, 0 ], transformPerspective: [ 800, 800 ], rotateX: [ 0, -45 ] } ]\n                ],\n                reset: { transformPerspective: 0 }\n            },\n            /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n            \"transition.flipYOut\": {\n                defaultDuration: 800,\n                calls: [\n                    [ { opacity: [ 0, 1 ], transformPerspective: [ 800, 800 ], rotateX: 25 } ]\n                ],\n                reset: { transformPerspective: 0, rotateX: 0 }\n            },\n            /* Animate.css */\n            /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n            \"transition.flipBounceXIn\": {\n                defaultDuration: 900,\n                calls: [\n                    [ { opacity: [ 0.725, 0 ], transformPerspective: [ 400, 400 ], rotateY: [ -10, 90 ] }, 0.50 ],\n                    [ { opacity: 0.80, rotateY: 10 }, 0.25 ],\n                    [ { opacity: 1, rotateY: 0 }, 0.25 ]\n                ],\n                reset: { transformPerspective: 0 }\n            },\n            /* Animate.css */\n            /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n            \"transition.flipBounceXOut\": {\n                defaultDuration: 800,\n                calls: [\n                    [ { opacity: [ 0.9, 1 ], transformPerspective: [ 400, 400 ], rotateY: -10 }, 0.50 ],\n                    [ { opacity: 0, rotateY: 90 }, 0.50 ]\n                ],\n                reset: { transformPerspective: 0, rotateY: 0 }\n            },\n            /* Animate.css */\n            /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n            \"transition.flipBounceYIn\": {\n                defaultDuration: 850,\n                calls: [\n                    [ { opacity: [ 0.725, 0 ], transformPerspective: [ 400, 400 ], rotateX: [ -10, 90 ] }, 0.50 ],\n                    [ { opacity: 0.80, rotateX: 10 }, 0.25 ],\n                    [ { opacity: 1, rotateX: 0 }, 0.25 ]\n                ],\n                reset: { transformPerspective: 0 }\n            },\n            /* Animate.css */\n            /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n            \"transition.flipBounceYOut\": {\n                defaultDuration: 800,\n                calls: [\n                    [ { opacity: [ 0.9, 1 ], transformPerspective: [ 400, 400 ], rotateX: -15 }, 0.50 ],\n                    [ { opacity: 0, rotateX: 90 }, 0.50 ]\n                ],\n                reset: { transformPerspective: 0, rotateX: 0 }\n            },\n            /* Magic.css */\n            \"transition.swoopIn\": {\n                defaultDuration: 850,\n                calls: [\n                    [ { opacity: [ 1, 0 ], transformOriginX: [ \"100%\", \"50%\" ], transformOriginY: [ \"100%\", \"100%\" ], scaleX: [ 1, 0 ], scaleY: [ 1, 0 ], translateX: [ 0, -700 ], translateZ: 0 } ]\n                ],\n                reset: { transformOriginX: \"50%\", transformOriginY: \"50%\" }\n            },\n            /* Magic.css */\n            \"transition.swoopOut\": {\n                defaultDuration: 850,\n                calls: [\n                    [ { opacity: [ 0, 1 ], transformOriginX: [ \"50%\", \"100%\" ], transformOriginY: [ \"100%\", \"100%\" ], scaleX: 0, scaleY: 0, translateX: -700, translateZ: 0 } ]\n                ],\n                reset: { transformOriginX: \"50%\", transformOriginY: \"50%\", scaleX: 1, scaleY: 1, translateX: 0 }\n            },\n            /* Magic.css */\n            /* Support: Loses rotation in IE9/Android 2.3. (Fades and scales only.) */\n            \"transition.whirlIn\": {\n                defaultDuration: 850,\n                calls: [\n                    [ { opacity: [ 1, 0 ], transformOriginX: [ \"50%\", \"50%\" ], transformOriginY: [ \"50%\", \"50%\" ], scaleX: [ 1, 0 ], scaleY: [ 1, 0 ], rotateY: [ 0, 160 ] }, 1, { easing: \"easeInOutSine\" } ]\n                ]\n            },\n            /* Magic.css */\n            /* Support: Loses rotation in IE9/Android 2.3. (Fades and scales only.) */\n            \"transition.whirlOut\": {\n                defaultDuration: 750,\n                calls: [\n                    [ { opacity: [ 0, \"easeInOutQuint\", 1 ], transformOriginX: [ \"50%\", \"50%\" ], transformOriginY: [ \"50%\", \"50%\" ], scaleX: 0, scaleY: 0, rotateY: 160 }, 1, { easing: \"swing\" } ]\n                ],\n                reset: { scaleX: 1, scaleY: 1, rotateY: 0 }\n            },\n            \"transition.shrinkIn\": {\n                defaultDuration: 750,\n                calls: [\n                    [ { opacity: [ 1, 0 ], transformOriginX: [ \"50%\", \"50%\" ], transformOriginY: [ \"50%\", \"50%\" ], scaleX: [ 1, 1.5 ], scaleY: [ 1, 1.5 ], translateZ: 0 } ]\n                ]\n            },\n            \"transition.shrinkOut\": {\n                defaultDuration: 600,\n                calls: [\n                    [ { opacity: [ 0, 1 ], transformOriginX: [ \"50%\", \"50%\" ], transformOriginY: [ \"50%\", \"50%\" ], scaleX: 1.3, scaleY: 1.3, translateZ: 0 } ]\n                ],\n                reset: { scaleX: 1, scaleY: 1 }\n            },\n            \"transition.expandIn\": {\n                defaultDuration: 700,\n                calls: [\n                    [ { opacity: [ 1, 0 ], transformOriginX: [ \"50%\", \"50%\" ], transformOriginY: [ \"50%\", \"50%\" ], scaleX: [ 1, 0.625 ], scaleY: [ 1, 0.625 ], translateZ: 0 } ]\n                ]\n            },\n            \"transition.expandOut\": {\n                defaultDuration: 700,\n                calls: [\n                    [ { opacity: [ 0, 1 ], transformOriginX: [ \"50%\", \"50%\" ], transformOriginY: [ \"50%\", \"50%\" ], scaleX: 0.5, scaleY: 0.5, translateZ: 0 } ]\n                ],\n                reset: { scaleX: 1, scaleY: 1 }\n            },\n            /* Animate.css */\n            \"transition.bounceIn\": {\n                defaultDuration: 800,\n                calls: [\n                    [ { opacity: [ 1, 0 ], scaleX: [ 1.05, 0.3 ], scaleY: [ 1.05, 0.3 ] }, 0.40 ],\n                    [ { scaleX: 0.9, scaleY: 0.9, translateZ: 0 }, 0.20 ],\n                    [ { scaleX: 1, scaleY: 1 }, 0.50 ]\n                ]\n            },\n            /* Animate.css */\n            \"transition.bounceOut\": {\n                defaultDuration: 800,\n                calls: [\n                    [ { scaleX: 0.95, scaleY: 0.95 }, 0.35 ],\n                    [ { scaleX: 1.1, scaleY: 1.1, translateZ: 0 }, 0.35 ],\n                    [ { opacity: [ 0, 1 ], scaleX: 0.3, scaleY: 0.3 }, 0.30 ]\n                ],\n                reset: { scaleX: 1, scaleY: 1 }\n            },\n            /* Animate.css */\n            \"transition.bounceUpIn\": {\n                defaultDuration: 800,\n                calls: [\n                    [ { opacity: [ 1, 0 ], translateY: [ -30, 1000 ] }, 0.60, { easing: \"easeOutCirc\" } ],\n                    [ { translateY: 10 }, 0.20 ],\n                    [ { translateY: 0 }, 0.20 ]\n                ]\n            },\n            /* Animate.css */\n            \"transition.bounceUpOut\": {\n                defaultDuration: 1000,\n                calls: [\n                    [ { translateY: 20 }, 0.20 ],\n                    [ { opacity: [ 0, \"easeInCirc\", 1 ], translateY: -1000 }, 0.80 ]\n                ],\n                reset: { translateY: 0 }\n            },\n            /* Animate.css */\n            \"transition.bounceDownIn\": {\n                defaultDuration: 800,\n                calls: [\n                    [ { opacity: [ 1, 0 ], translateY: [ 30, -1000 ] }, 0.60, { easing: \"easeOutCirc\" } ],\n                    [ { translateY: -10 }, 0.20 ],\n                    [ { translateY: 0 }, 0.20 ]\n                ]\n            },\n            /* Animate.css */\n            \"transition.bounceDownOut\": {\n                defaultDuration: 1000,\n                calls: [\n                    [ { translateY: -20 }, 0.20 ],\n                    [ { opacity: [ 0, \"easeInCirc\", 1 ], translateY: 1000 }, 0.80 ]\n                ],\n                reset: { translateY: 0 }\n            },\n            /* Animate.css */\n            \"transition.bounceLeftIn\": {\n                defaultDuration: 750,\n                calls: [\n                    [ { opacity: [ 1, 0 ], translateX: [ 30, -1250 ] }, 0.60, { easing: \"easeOutCirc\" } ],\n                    [ { translateX: -10 }, 0.20 ],\n                    [ { translateX: 0 }, 0.20 ]\n                ]\n            },\n            /* Animate.css */\n            \"transition.bounceLeftOut\": {\n                defaultDuration: 750,\n                calls: [\n                    [ { translateX: 30 }, 0.20 ],\n                    [ { opacity: [ 0, \"easeInCirc\", 1 ], translateX: -1250 }, 0.80 ]\n                ],\n                reset: { translateX: 0 }\n            },\n            /* Animate.css */\n            \"transition.bounceRightIn\": {\n                defaultDuration: 750,\n                calls: [\n                    [ { opacity: [ 1, 0 ], translateX: [ -30, 1250 ] }, 0.60, { easing: \"easeOutCirc\" } ],\n                    [ { translateX: 10 }, 0.20 ],\n                    [ { translateX: 0 }, 0.20 ]\n                ]\n            },\n            /* Animate.css */\n            \"transition.bounceRightOut\": {\n                defaultDuration: 750,\n                calls: [\n                    [ { translateX: -30 }, 0.20 ],\n                    [ { opacity: [ 0, \"easeInCirc\", 1 ], translateX: 1250 }, 0.80 ]\n                ],\n                reset: { translateX: 0 }\n            },\n            \"transition.slideUpIn\": {\n                defaultDuration: 900,\n                calls: [\n                    [ { opacity: [ 1, 0 ], translateY: [ 0, 20 ], translateZ: 0 } ]\n                ]\n            },\n            \"transition.slideUpOut\": {\n                defaultDuration: 900,\n                calls: [\n                    [ { opacity: [ 0, 1 ], translateY: -20, translateZ: 0 } ]\n                ],\n                reset: { translateY: 0 }\n            },\n            \"transition.slideDownIn\": {\n                defaultDuration: 900,\n                calls: [\n                    [ { opacity: [ 1, 0 ], translateY: [ 0, -20 ], translateZ: 0 } ]\n                ]\n            },\n            \"transition.slideDownOut\": {\n                defaultDuration: 900,\n                calls: [\n                    [ { opacity: [ 0, 1 ], translateY: 20, translateZ: 0 } ]\n                ],\n                reset: { translateY: 0 }\n            },\n            \"transition.slideLeftIn\": {\n                defaultDuration: 1000,\n                calls: [\n                    [ { opacity: [ 1, 0 ], translateX: [ 0, -20 ], translateZ: 0 } ]\n                ]\n            },\n            \"transition.slideLeftOut\": {\n                defaultDuration: 1050,\n                calls: [\n                    [ { opacity: [ 0, 1 ], translateX: -20, translateZ: 0 } ]\n                ],\n                reset: { translateX: 0 }\n            },\n            \"transition.slideRightIn\": {\n                defaultDuration: 1000,\n                calls: [\n                    [ { opacity: [ 1, 0 ], translateX: [ 0, 20 ], translateZ: 0 } ]\n                ]\n            },\n            \"transition.slideRightOut\": {\n                defaultDuration: 1050,\n                calls: [\n                    [ { opacity: [ 0, 1 ], translateX: 20, translateZ: 0 } ]\n                ],\n                reset: { translateX: 0 }\n            },\n            \"transition.slideUpBigIn\": {\n                defaultDuration: 850,\n                calls: [\n                    [ { opacity: [ 1, 0 ], translateY: [ 0, 75 ], translateZ: 0 } ]\n                ]\n            },\n            \"transition.slideUpBigOut\": {\n                defaultDuration: 800,\n                calls: [\n                    [ { opacity: [ 0, 1 ], translateY: -75, translateZ: 0 } ]\n                ],\n                reset: { translateY: 0 }\n            },\n            \"transition.slideDownBigIn\": {\n                defaultDuration: 850,\n                calls: [\n                    [ { opacity: [ 1, 0 ], translateY: [ 0, -75 ], translateZ: 0 } ]\n                ]\n            },\n            \"transition.slideDownBigOut\": {\n                defaultDuration: 800,\n                calls: [\n                    [ { opacity: [ 0, 1 ], translateY: 75, translateZ: 0 } ]\n                ],\n                reset: { translateY: 0 }\n            },\n            \"transition.slideLeftBigIn\": {\n                defaultDuration: 800,\n                calls: [\n                    [ { opacity: [ 1, 0 ], translateX: [ 0, -75 ], translateZ: 0 } ]\n                ]\n            },\n            \"transition.slideLeftBigOut\": {\n                defaultDuration: 750,\n                calls: [\n                    [ { opacity: [ 0, 1 ], translateX: -75, translateZ: 0 } ]\n                ],\n                reset: { translateX: 0 }\n            },\n            \"transition.slideRightBigIn\": {\n                defaultDuration: 800,\n                calls: [\n                    [ { opacity: [ 1, 0 ], translateX: [ 0, 75 ], translateZ: 0 } ]\n                ]\n            },\n            \"transition.slideRightBigOut\": {\n                defaultDuration: 750,\n                calls: [\n                    [ { opacity: [ 0, 1 ], translateX: 75, translateZ: 0 } ]\n                ],\n                reset: { translateX: 0 }\n            },\n            /* Magic.css */\n            \"transition.perspectiveUpIn\": {\n                defaultDuration: 800,\n                calls: [\n                    [ { opacity: [ 1, 0 ], transformPerspective: [ 800, 800 ], transformOriginX: [ 0, 0 ], transformOriginY: [ \"100%\", \"100%\" ], rotateX: [ 0, -180 ] } ]\n                ],\n                reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\" }\n            },\n            /* Magic.css */\n            /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n            \"transition.perspectiveUpOut\": {\n                defaultDuration: 850,\n                calls: [\n                    [ { opacity: [ 0, 1 ], transformPerspective: [ 800, 800 ], transformOriginX: [ 0, 0 ], transformOriginY: [ \"100%\", \"100%\" ], rotateX: -180 } ]\n                ],\n                reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\", rotateX: 0 }\n            },\n            /* Magic.css */\n            /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n            \"transition.perspectiveDownIn\": {\n                defaultDuration: 800,\n                calls: [\n                    [ { opacity: [ 1, 0 ], transformPerspective: [ 800, 800 ], transformOriginX: [ 0, 0 ], transformOriginY: [ 0, 0 ], rotateX: [ 0, 180 ] } ]\n                ],\n                reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\" }\n            },\n            /* Magic.css */\n            /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n            \"transition.perspectiveDownOut\": {\n                defaultDuration: 850,\n                calls: [\n                    [ { opacity: [ 0, 1 ], transformPerspective: [ 800, 800 ], transformOriginX: [ 0, 0 ], transformOriginY: [ 0, 0 ], rotateX: 180 } ]\n                ],\n                reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\", rotateX: 0 }\n            },\n            /* Magic.css */\n            /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n            \"transition.perspectiveLeftIn\": {\n                defaultDuration: 950,\n                calls: [\n                    [ { opacity: [ 1, 0 ], transformPerspective: [ 2000, 2000 ], transformOriginX: [ 0, 0 ], transformOriginY: [ 0, 0 ], rotateY: [ 0, -180 ] } ]\n                ],\n                reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\" }\n            },\n            /* Magic.css */\n            /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n            \"transition.perspectiveLeftOut\": {\n                defaultDuration: 950,\n                calls: [\n                    [ { opacity: [ 0, 1 ], transformPerspective: [ 2000, 2000 ], transformOriginX: [ 0, 0 ], transformOriginY: [ 0, 0 ], rotateY: -180 } ]\n                ],\n                reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\", rotateY: 0 }\n            },\n            /* Magic.css */\n            /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n            \"transition.perspectiveRightIn\": {\n                defaultDuration: 950,\n                calls: [\n                    [ { opacity: [ 1, 0 ], transformPerspective: [ 2000, 2000 ], transformOriginX: [ \"100%\", \"100%\" ], transformOriginY: [ 0, 0 ], rotateY: [ 0, 180 ] } ]\n                ],\n                reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\" }\n            },\n            /* Magic.css */\n            /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n            \"transition.perspectiveRightOut\": {\n                defaultDuration: 950,\n                calls: [\n                    [ { opacity: [ 0, 1 ], transformPerspective: [ 2000, 2000 ], transformOriginX: [ \"100%\", \"100%\" ], transformOriginY: [ 0, 0 ], rotateY: 180 } ]\n                ],\n                reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\", rotateY: 0 }\n            }\n        };\n\n    /* Register the packaged effects. */\n    for (var effectName in Velocity.RegisterEffect.packagedEffects) {\n        Velocity.RegisterEffect(effectName, Velocity.RegisterEffect.packagedEffects[effectName]);\n    }\n\n    /*********************\n       Sequence Running\n    **********************/\n\n    /* Note: Sequence calls must use Velocity's single-object arguments syntax. */\n    Velocity.RunSequence = function (originalSequence) {\n        var sequence = $.extend(true, [], originalSequence);\n\n        if (sequence.length > 1) {\n            $.each(sequence.reverse(), function(i, currentCall) {\n                var nextCall = sequence[i + 1];\n\n                if (nextCall) {\n                    /* Parallel sequence calls (indicated via sequenceQueue:false) are triggered\n                       in the previous call's begin callback. Otherwise, chained calls are normally triggered\n                       in the previous call's complete callback. */\n                    var currentCallOptions = currentCall.o || currentCall.options,\n                        nextCallOptions = nextCall.o || nextCall.options;\n\n                    var timing = (currentCallOptions && currentCallOptions.sequenceQueue === false) ? \"begin\" : \"complete\",\n                        callbackOriginal = nextCallOptions && nextCallOptions[timing],\n                        options = {};\n\n                    options[timing] = function() {\n                        var nextCallElements = nextCall.e || nextCall.elements;\n                        var elements = nextCallElements.nodeType ? [ nextCallElements ] : nextCallElements;\n\n                        callbackOriginal && callbackOriginal.call(elements, elements);\n                        Velocity(currentCall);\n                    }\n\n                    if (nextCall.o) {\n                        nextCall.o = $.extend({}, nextCallOptions, options);\n                    } else {\n                        nextCall.options = $.extend({}, nextCallOptions, options);\n                    }\n                }\n            });\n\n            sequence.reverse();\n        }\n\n        Velocity(sequence[0]);\n    };\n}((window.jQuery || window.Zepto || window), window, document);\n}));", "/*! Flight v1.5.2 | (c) Twitter, Inc. | MIT License */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"flight\"] = factory();\n\telse\n\t\troot[\"flight\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\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/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n    __webpack_require__(1),\n    __webpack_require__(2),\n    __webpack_require__(3),\n    __webpack_require__(4),\n    __webpack_require__(5),\n    __webpack_require__(6),\n    __webpack_require__(7)\n  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(advice, component, compose, debug, logger, registry, utils) {\n    'use strict';\n\n    return {\n      advice: advice,\n      component: component,\n      compose: compose,\n      debug: debug,\n      logger: logger,\n      registry: registry,\n      utils: utils\n    };\n\n  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n    __webpack_require__(7)\n  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(utils) {\n    'use strict';\n\n    var advice = {\n\n      around: function(base, wrapped) {\n        return function composedAround() {\n          // unpacking arguments by hand benchmarked faster\n          var i = 0, l = arguments.length, args = new Array(l + 1);\n          args[0] = base.bind(this);\n          for (; i < l; i++) {\n            args[i + 1] = arguments[i];\n          }\n          return wrapped.apply(this, args);\n        };\n      },\n\n      before: function(base, before) {\n        var beforeFn = (typeof before == 'function') ? before : before.obj[before.fnName];\n        return function composedBefore() {\n          beforeFn.apply(this, arguments);\n          return base.apply(this, arguments);\n        };\n      },\n\n      after: function(base, after) {\n        var afterFn = (typeof after == 'function') ? after : after.obj[after.fnName];\n        return function composedAfter() {\n          var res = (base.unbound || base).apply(this, arguments);\n          afterFn.apply(this, arguments);\n          return res;\n        };\n      },\n\n      // a mixin that allows other mixins to augment existing functions by adding additional\n      // code before, after or around.\n      withAdvice: function() {\n        ['before', 'after', 'around'].forEach(function(m) {\n          this[m] = function(method, fn) {\n            var methods = method.trim().split(' ');\n\n            methods.forEach(function(i) {\n              utils.mutateProperty(this, i, function() {\n                if (typeof this[i] == 'function') {\n                  this[i] = advice[m](this[i], fn);\n                } else {\n                  this[i] = fn;\n                }\n\n                return this[i];\n              });\n            }, this);\n          };\n        }, this);\n      }\n    };\n\n    return advice;\n  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n    __webpack_require__(1),\n    __webpack_require__(7),\n    __webpack_require__(3),\n    __webpack_require__(8),\n    __webpack_require__(6),\n    __webpack_require__(5),\n    __webpack_require__(4)\n  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(advice, utils, compose, withBase, registry, withLogging, debug) {\n    'use strict';\n\n    var functionNameRegEx = /function (.*?)\\s?\\(/;\n    var ignoredMixin = {\n      withBase: true,\n      withLogging: true\n    };\n\n    // teardown for all instances of this constructor\n    function teardownAll() {\n      var componentInfo = registry.findComponentInfo(this);\n\n      componentInfo && Object.keys(componentInfo.instances).forEach(function(k) {\n        var info = componentInfo.instances[k];\n        // It's possible that a previous teardown caused another component to teardown,\n        // so we can't assume that the instances object is as it was.\n        if (info && info.instance) {\n          info.instance.teardown();\n        }\n      });\n    }\n\n    function attachTo(selector/*, options args */) {\n      // unpacking arguments by hand benchmarked faster\n      var l = arguments.length;\n      var args = new Array(l - 1);\n      for (var i = 1; i < l; i++) {\n        args[i - 1] = arguments[i];\n      }\n\n      if (!selector) {\n        throw new Error('Component needs to be attachTo\\'d a jQuery object, native node or selector string');\n      }\n\n      var options = utils.merge.apply(utils, args);\n      var componentInfo = registry.findComponentInfo(this);\n\n      $(selector).each(function(i, node) {\n        if (componentInfo && componentInfo.isAttachedTo(node)) {\n          // already attached\n          return;\n        }\n\n        (new this).initialize(node, options);\n      }.bind(this));\n    }\n\n    function prettyPrintMixins() {\n      //could be called from constructor or constructor.prototype\n      var mixedIn = this.mixedIn || this.prototype.mixedIn || [];\n      return mixedIn.map(function(mixin) {\n        if (mixin.name == null) {\n          // function name property not supported by this browser, use regex\n          var m = mixin.toString().match(functionNameRegEx);\n          return (m && m[1]) ? m[1] : '';\n        }\n        return (!ignoredMixin[mixin.name] ? mixin.name : '');\n      }).filter(Boolean).join(', ');\n    };\n\n\n    // define the constructor for a custom component type\n    // takes an unlimited number of mixin functions as arguments\n    // typical api call with 3 mixins: defineComponent(timeline, withTweetCapability, withScrollCapability);\n    function defineComponent(/*mixins*/) {\n      // unpacking arguments by hand benchmarked faster\n      var l = arguments.length;\n      var mixins = new Array(l);\n      for (var i = 0; i < l; i++) {\n        mixins[i] = arguments[i];\n      }\n\n      var Component = function() {};\n\n      Component.toString = Component.prototype.toString = prettyPrintMixins;\n      if (debug.enabled) {\n        Component.describe = Component.prototype.describe = Component.toString();\n      }\n\n      // 'options' is optional hash to be merged with 'defaults' in the component definition\n      Component.attachTo = attachTo;\n      // enables extension of existing \"base\" Components\n      Component.mixin = function() {\n        var newComponent = defineComponent(); //TODO: fix pretty print\n        var newPrototype = Object.create(Component.prototype);\n        newPrototype.mixedIn = [].concat(Component.prototype.mixedIn);\n        newPrototype.defaults = utils.merge(Component.prototype.defaults);\n        newPrototype.attrDef = Component.prototype.attrDef;\n        compose.mixin(newPrototype, arguments);\n        newComponent.prototype = newPrototype;\n        newComponent.prototype.constructor = newComponent;\n        return newComponent;\n      };\n      Component.teardownAll = teardownAll;\n\n      // prepend common mixins to supplied list, then mixin all flavors\n      if (debug.enabled) {\n        mixins.unshift(withLogging);\n      }\n      mixins.unshift(withBase, advice.withAdvice, registry.withRegistration);\n      compose.mixin(Component.prototype, mixins);\n\n      return Component;\n    }\n\n    defineComponent.teardownAll = function() {\n      registry.components.slice().forEach(function(c) {\n        c.component.teardownAll();\n      });\n      registry.reset();\n    };\n\n    return defineComponent;\n  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n    __webpack_require__(7)\n  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(utils) {\n    'use strict';\n\n    var dontLock = ['mixedIn', 'attrDef'];\n\n    function setWritability(obj, writable) {\n      Object.keys(obj).forEach(function (key) {\n        if (dontLock.indexOf(key) < 0) {\n          utils.propertyWritability(obj, key, writable);\n        }\n      });\n    }\n\n    function mixin(base, mixins) {\n      base.mixedIn = Object.prototype.hasOwnProperty.call(base, 'mixedIn') ? base.mixedIn : [];\n\n      for (var i = 0; i < mixins.length; i++) {\n        if (base.mixedIn.indexOf(mixins[i]) == -1) {\n          setWritability(base, false);\n          mixins[i].call(base);\n          base.mixedIn.push(mixins[i]);\n        }\n      }\n\n      setWritability(base, true);\n    }\n\n    return {\n      mixin: mixin\n    };\n\n  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(6)], __WEBPACK_AMD_DEFINE_RESULT__ = function(registry) {\n    'use strict';\n\n    // ==========================================\n    // Search object model\n    // ==========================================\n\n    function traverse(util, searchTerm, options) {\n      options = options || {};\n      var obj = options.obj || window;\n      var path = options.path || ((obj == window) ? 'window' : '');\n      var props = Object.keys(obj);\n      props.forEach(function(prop) {\n        if ((tests[util] || util)(searchTerm, obj, prop)) {\n          console.log([path, '.', prop].join(''), '->', ['(', typeof obj[prop], ')'].join(''), obj[prop]);\n        }\n        if (Object.prototype.toString.call(obj[prop]) == '[object Object]' && (obj[prop] != obj) && path.split('.').indexOf(prop) == -1) {\n          traverse(util, searchTerm, {obj: obj[prop], path: [path,prop].join('.')});\n        }\n      });\n    }\n\n    function search(util, expected, searchTerm, options) {\n      if (!expected || typeof searchTerm == expected) {\n        traverse(util, searchTerm, options);\n      } else {\n        console.error([searchTerm, 'must be', expected].join(' '));\n      }\n    }\n\n    var tests = {\n      'name': function(searchTerm, obj, prop) {return searchTerm == prop;},\n      'nameContains': function(searchTerm, obj, prop) {return prop.indexOf(searchTerm) > -1;},\n      'type': function(searchTerm, obj, prop) {return obj[prop] instanceof searchTerm;},\n      'value': function(searchTerm, obj, prop) {return obj[prop] === searchTerm;},\n      'valueCoerced': function(searchTerm, obj, prop) {return obj[prop] == searchTerm;}\n    };\n\n    function byName(searchTerm, options) {search('name', 'string', searchTerm, options);}\n    function byNameContains(searchTerm, options) {search('nameContains', 'string', searchTerm, options);}\n    function byType(searchTerm, options) {search('type', 'function', searchTerm, options);}\n    function byValue(searchTerm, options) {search('value', null, searchTerm, options);}\n    function byValueCoerced(searchTerm, options) {search('valueCoerced', null, searchTerm, options);}\n    function custom(fn, options) {traverse(fn, null, options);}\n\n    // ==========================================\n    // Event logging\n    // ==========================================\n\n    var ALL = 'all'; //no filter\n\n    //log nothing by default\n    var logFilter = {\n      eventNames: [],\n      actions: []\n    }\n\n    function filterEventLogsByAction(/*actions*/) {\n      var actions = [].slice.call(arguments);\n\n      logFilter.eventNames.length || (logFilter.eventNames = ALL);\n      logFilter.actions = actions.length ? actions : ALL;\n      saveLogFilter();\n    }\n\n    function filterEventLogsByName(/*eventNames*/) {\n      var eventNames = [].slice.call(arguments);\n\n      logFilter.actions.length || (logFilter.actions = ALL);\n      logFilter.eventNames = eventNames.length ? eventNames : ALL;\n      saveLogFilter();\n    }\n\n    function hideAllEventLogs() {\n      logFilter.actions = [];\n      logFilter.eventNames = [];\n      saveLogFilter();\n    }\n\n    function showAllEventLogs() {\n      logFilter.actions = ALL;\n      logFilter.eventNames = ALL;\n      saveLogFilter();\n    }\n\n    function saveLogFilter() {\n      try {\n        if (window.localStorage) {\n          localStorage.setItem('logFilter_eventNames', logFilter.eventNames);\n          localStorage.setItem('logFilter_actions', logFilter.actions);\n        }\n      } catch (ignored) {};\n    }\n\n    function retrieveLogFilter() {\n      var eventNames, actions;\n      try {\n        eventNames = (window.localStorage && localStorage.getItem('logFilter_eventNames'));\n        actions = (window.localStorage && localStorage.getItem('logFilter_actions'));\n      } catch (ignored) {\n        return;\n      }\n      eventNames && (logFilter.eventNames = eventNames);\n      actions && (logFilter.actions = actions);\n\n      // reconstitute arrays in place\n      Object.keys(logFilter).forEach(function(k) {\n        var thisProp = logFilter[k];\n        if (typeof thisProp == 'string' && thisProp !== ALL) {\n          logFilter[k] = thisProp ? thisProp.split(',') : [];\n        }\n      });\n    }\n\n    return {\n\n      enable: function(enable) {\n        this.enabled = !!enable;\n\n        if (enable && window.console) {\n          console.info('Booting in DEBUG mode');\n          console.info('You can configure event logging with DEBUG.events.logAll()/logNone()/logByName()/logByAction()');\n        }\n\n        retrieveLogFilter();\n\n        window.DEBUG = this;\n      },\n\n      warn: function (/*messages*/) {\n        if (!window.console) { return; }\n        var fn = (console.warn || console.log);\n        var messages = [].slice.call(arguments);\n        messages.unshift(this.toString() + ':')\n        fn.apply(console, messages);\n      },\n\n      registry: registry,\n\n      find: {\n        byName: byName,\n        byNameContains: byNameContains,\n        byType: byType,\n        byValue: byValue,\n        byValueCoerced: byValueCoerced,\n        custom: custom\n      },\n\n      events: {\n        logFilter: logFilter,\n\n        // Accepts any number of action args\n        // e.g. DEBUG.events.logByAction(\"on\", \"off\")\n        logByAction: filterEventLogsByAction,\n\n        // Accepts any number of event name args (inc. regex or wildcards)\n        // e.g. DEBUG.events.logByName(/ui.*/, \"*Thread*\");\n        logByName: filterEventLogsByName,\n\n        logAll: showAllEventLogs,\n        logNone: hideAllEventLogs\n      }\n    };\n  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n    __webpack_require__(7)\n  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(utils) {\n    'use strict';\n\n    var actionSymbols = {\n      on: '<-',\n      trigger: '->',\n      off: 'x '\n    };\n\n    function elemToString(elem) {\n      var tagStr = elem.tagName ? elem.tagName.toLowerCase() : elem.toString();\n      var classStr = elem.className ? '.' + (elem.className) : '';\n      var result = tagStr + classStr;\n      return elem.tagName ? ['\\'', '\\''].join(result) : result;\n    }\n\n    function log(action, component, eventArgs) {\n      if (!window.DEBUG || !window.DEBUG.enabled) {\n        return;\n      }\n      var name, eventType, elem, fn, payload, logFilter, toRegExp, actionLoggable, nameLoggable, info;\n\n      if (typeof eventArgs[eventArgs.length - 1] == 'function') {\n        fn = eventArgs.pop();\n        fn = fn.unbound || fn; // use unbound version if any (better info)\n      }\n\n      if (eventArgs.length == 1) {\n        elem = component.$node[0];\n        eventType = eventArgs[0];\n      } else if ((eventArgs.length == 2) && typeof eventArgs[1] == 'object' && !eventArgs[1].type) {\n        //2 args, first arg is not elem\n        elem = component.$node[0];\n        eventType = eventArgs[0];\n        if (action == \"trigger\") {\n          payload = eventArgs[1];\n        }\n      } else {\n        //2+ args, first arg is elem\n        elem = eventArgs[0];\n        eventType = eventArgs[1];\n        if (action == \"trigger\") {\n          payload = eventArgs[2];\n        }\n      }\n\n      name = typeof eventType == 'object' ? eventType.type : eventType;\n\n      logFilter = window.DEBUG.events.logFilter;\n\n      // no regex for you, actions...\n      actionLoggable = logFilter.actions == 'all' || (logFilter.actions.indexOf(action) > -1);\n      // event name filter allow wildcards or regex...\n      toRegExp = function(expr) {\n        return expr.test ? expr : new RegExp('^' + expr.replace(/\\*/g, '.*') + '$');\n      };\n      nameLoggable =\n        logFilter.eventNames == 'all' ||\n        logFilter.eventNames.some(function(e) {return toRegExp(e).test(name);});\n\n      if (actionLoggable && nameLoggable) {\n        info = [actionSymbols[action], action, '[' + name + ']'];\n        payload && info.push(payload);\n        info.push(elemToString(elem));\n        info.push(component.constructor.describe.split(' ').slice(0,3).join(' '));\n        console.groupCollapsed && action == 'trigger' && console.groupCollapsed(action, name);\n        // IE9 doesn't define `apply` for console methods, but this works everywhere:\n        Function.prototype.apply.call(console.info, console, info);\n      }\n    }\n\n    function withLogging() {\n      this.before('trigger', function() {\n        log('trigger', this, utils.toArray(arguments));\n      });\n      if (console.groupCollapsed) {\n        this.after('trigger', function() {\n          console.groupEnd();\n        });\n      }\n      this.before('on', function() {\n        log('on', this, utils.toArray(arguments));\n      });\n      this.before('off', function() {\n        log('off', this, utils.toArray(arguments));\n      });\n    }\n\n    return withLogging;\n  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() {\n    'use strict';\n\n    function parseEventArgs(instance, args) {\n      var element, type, callback;\n      var end = args.length;\n\n      if (typeof args[end - 1] == 'function') {\n        end -= 1;\n        callback = args[end];\n      }\n\n      if (typeof args[end - 1] == 'object') {\n        end -= 1;\n      }\n\n      if (end == 2) {\n        element = args[0];\n        type = args[1];\n      } else {\n        element = instance.node;\n        type = args[0];\n      }\n\n      return {\n        element: element,\n        type: type,\n        callback: callback\n      };\n    }\n\n    function matchEvent(a, b) {\n      return (\n        (a.element == b.element) &&\n        (a.type == b.type) &&\n        (b.callback == null || (a.callback == b.callback))\n      );\n    }\n\n    function Registry() {\n\n      var registry = this;\n\n      (this.reset = function() {\n        this.components = [];\n        this.allInstances = {};\n        this.events = [];\n      }).call(this);\n\n      function ComponentInfo(component) {\n        this.component = component;\n        this.attachedTo = [];\n        this.instances = {};\n\n        this.addInstance = function(instance) {\n          var instanceInfo = new InstanceInfo(instance);\n          this.instances[instance.identity] = instanceInfo;\n          this.attachedTo.push(instance.node);\n\n          return instanceInfo;\n        };\n\n        this.removeInstance = function(instance) {\n          delete this.instances[instance.identity];\n          var indexOfNode = this.attachedTo.indexOf(instance.node);\n          (indexOfNode > -1) && this.attachedTo.splice(indexOfNode, 1);\n\n          if (!Object.keys(this.instances).length) {\n            //if I hold no more instances remove me from registry\n            registry.removeComponentInfo(this);\n          }\n        };\n\n        this.isAttachedTo = function(node) {\n          return this.attachedTo.indexOf(node) > -1;\n        };\n      }\n\n      function InstanceInfo(instance) {\n        this.instance = instance;\n        this.events = [];\n\n        this.addBind = function(event) {\n          this.events.push(event);\n          registry.events.push(event);\n        };\n\n        this.removeBind = function(event) {\n          for (var i = 0, e; e = this.events[i]; i++) {\n            if (matchEvent(e, event)) {\n              this.events.splice(i, 1);\n            }\n          }\n        };\n      }\n\n      this.addInstance = function(instance) {\n        var component = this.findComponentInfo(instance);\n\n        if (!component) {\n          component = new ComponentInfo(instance.constructor);\n          this.components.push(component);\n        }\n\n        var inst = component.addInstance(instance);\n\n        this.allInstances[instance.identity] = inst;\n\n        return component;\n      };\n\n      this.removeInstance = function(instance) {\n        //remove from component info\n        var componentInfo = this.findComponentInfo(instance);\n        componentInfo && componentInfo.removeInstance(instance);\n\n        //remove from registry\n        delete this.allInstances[instance.identity];\n      };\n\n      this.removeComponentInfo = function(componentInfo) {\n        var index = this.components.indexOf(componentInfo);\n        (index > -1) && this.components.splice(index, 1);\n      };\n\n      this.findComponentInfo = function(which) {\n        var component = which.attachTo ? which : which.constructor;\n\n        for (var i = 0, c; c = this.components[i]; i++) {\n          if (c.component === component) {\n            return c;\n          }\n        }\n\n        return null;\n      };\n\n      this.findInstanceInfo = function(instance) {\n        return this.allInstances[instance.identity] || null;\n      };\n\n      this.getBoundEventNames = function(instance) {\n        return this.findInstanceInfo(instance).events.map(function(ev) {\n          return ev.type;\n        });\n      };\n\n      this.findInstanceInfoByNode = function(node) {\n        var result = [];\n        Object.keys(this.allInstances).forEach(function(k) {\n          var thisInstanceInfo = this.allInstances[k];\n          if (thisInstanceInfo.instance.node === node) {\n            result.push(thisInstanceInfo);\n          }\n        }, this);\n        return result;\n      };\n\n      this.on = function(componentOn) {\n        var instance = registry.findInstanceInfo(this), boundCallback;\n\n        // unpacking arguments by hand benchmarked faster\n        var l = arguments.length, i = 1;\n        var otherArgs = new Array(l - 1);\n        for (; i < l; i++) {\n          otherArgs[i - 1] = arguments[i];\n        }\n\n        if (instance) {\n          boundCallback = componentOn.apply(null, otherArgs);\n          if (boundCallback) {\n            otherArgs[otherArgs.length - 1] = boundCallback;\n          }\n          var event = parseEventArgs(this, otherArgs);\n          instance.addBind(event);\n        }\n      };\n\n      this.off = function(/*el, type, callback*/) {\n        var event = parseEventArgs(this, arguments),\n            instance = registry.findInstanceInfo(this);\n\n        if (instance) {\n          instance.removeBind(event);\n        }\n\n        //remove from global event registry\n        for (var i = 0, e; e = registry.events[i]; i++) {\n          if (matchEvent(e, event)) {\n            registry.events.splice(i, 1);\n          }\n        }\n      };\n\n      // debug tools may want to add advice to trigger\n      registry.trigger = function() {};\n\n      this.teardown = function() {\n        registry.removeInstance(this);\n      };\n\n      this.withRegistration = function() {\n        this.after('initialize', function() {\n          registry.addInstance(this);\n        });\n\n        this.around('on', registry.on);\n        this.after('off', registry.off);\n        //debug tools may want to add advice to trigger\n        window.DEBUG && (false).enabled && this.after('trigger', registry.trigger);\n        this.after('teardown', {obj: registry, fnName: 'teardown'});\n      };\n\n    }\n\n    return new Registry;\n  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(4)], __WEBPACK_AMD_DEFINE_RESULT__ = function(debug) {\n    'use strict';\n\n    var DEFAULT_INTERVAL = 100;\n\n    function canWriteProtect() {\n      var writeProtectSupported = debug.enabled && !Object.propertyIsEnumerable('getOwnPropertyDescriptor');\n      if (writeProtectSupported) {\n        //IE8 getOwnPropertyDescriptor is built-in but throws exeption on non DOM objects\n        try {\n          Object.getOwnPropertyDescriptor(Object, 'keys');\n        } catch (e) {\n         return false;\n        }\n      }\n\n      return writeProtectSupported;\n    }\n\n    var utils = {\n\n      isDomObj: function(obj) {\n        return !!(obj.nodeType || (obj === window));\n      },\n\n      toArray: function(obj, from) {\n        from = from || 0;\n        var len = obj.length, arr = new Array(len - from);\n        for (var i = from; i < len; i++) {\n          arr[i - from] = obj[i];\n        }\n        return arr;\n      },\n\n      // returns new object representing multiple objects merged together\n      // optional final argument is boolean which specifies if merge is recursive\n      // original objects are unmodified\n      //\n      // usage:\n      //   var base = {a:2, b:6};\n      //   var extra = {b:3, c:4};\n      //   merge(base, extra); //{a:2, b:3, c:4}\n      //   base; //{a:2, b:6}\n      //\n      //   var base = {a:2, b:6};\n      //   var extra = {b:3, c:4};\n      //   var extraExtra = {a:4, d:9};\n      //   merge(base, extra, extraExtra); //{a:4, b:3, c:4. d: 9}\n      //   base; //{a:2, b:6}\n      //\n      //   var base = {a:2, b:{bb:4, cc:5}};\n      //   var extra = {a:4, b:{cc:7, dd:1}};\n      //   merge(base, extra, true); //{a:4, b:{bb:4, cc:7, dd:1}}\n      //   base; //{a:2, b:{bb:4, cc:5}};\n\n      merge: function(/*obj1, obj2,....deepCopy*/) {\n        // unpacking arguments by hand benchmarked faster\n        var l = arguments.length,\n            args = new Array(l + 1);\n\n        if (l === 0) {\n          return {};\n        }\n\n        for (var i = 0; i < l; i++) {\n          args[i + 1] = arguments[i];\n        }\n\n        //start with empty object so a copy is created\n        args[0] = {};\n\n        if (args[args.length - 1] === true) {\n          //jquery extend requires deep copy as first arg\n          args.pop();\n          args.unshift(true);\n        }\n\n        return $.extend.apply(undefined, args);\n      },\n\n      // updates base in place by copying properties of extra to it\n      // optionally clobber protected\n      // usage:\n      //   var base = {a:2, b:6};\n      //   var extra = {c:4};\n      //   push(base, extra); //{a:2, b:6, c:4}\n      //   base; //{a:2, b:6, c:4}\n      //\n      //   var base = {a:2, b:6};\n      //   var extra = {b: 4 c:4};\n      //   push(base, extra, true); //Error (\"utils.push attempted to overwrite 'b' while running in protected mode\")\n      //   base; //{a:2, b:6}\n      //\n      // objects with the same key will merge recursively when protect is false\n      // eg:\n      // var base = {a:16, b:{bb:4, cc:10}};\n      // var extra = {b:{cc:25, dd:19}, c:5};\n      // push(base, extra); //{a:16, {bb:4, cc:25, dd:19}, c:5}\n      //\n      push: function(base, extra, protect) {\n        if (base) {\n          Object.keys(extra || {}).forEach(function(key) {\n            if (base[key] && protect) {\n              throw new Error('utils.push attempted to overwrite \"' + key + '\" while running in protected mode');\n            }\n\n            if (typeof base[key] == 'object' && typeof extra[key] == 'object') {\n              // recurse\n              this.push(base[key], extra[key]);\n            } else {\n              // no protect, so extra wins\n              base[key] = extra[key];\n            }\n          }, this);\n        }\n\n        return base;\n      },\n\n      // If obj.key points to an enumerable property, return its value\n      // If obj.key points to a non-enumerable property, return undefined\n      getEnumerableProperty: function(obj, key) {\n        return obj.propertyIsEnumerable(key) ? obj[key] : undefined;\n      },\n\n      // build a function from other function(s)\n      // utils.compose(a,b,c) -> a(b(c()));\n      // implementation lifted from underscore.js (c) 2009-2012 Jeremy Ashkenas\n      compose: function() {\n        var funcs = arguments;\n\n        return function() {\n          var args = arguments;\n\n          for (var i = funcs.length - 1; i >= 0; i--) {\n            args = [funcs[i].apply(this, args)];\n          }\n\n          return args[0];\n        };\n      },\n\n      // Can only unique arrays of homogeneous primitives, e.g. an array of only strings, an array of only booleans, or an array of only numerics\n      uniqueArray: function(array) {\n        var u = {}, a = [];\n\n        for (var i = 0, l = array.length; i < l; ++i) {\n          if (u.hasOwnProperty(array[i])) {\n            continue;\n          }\n\n          a.push(array[i]);\n          u[array[i]] = 1;\n        }\n\n        return a;\n      },\n\n      debounce: function(func, wait, immediate) {\n        if (typeof wait != 'number') {\n          wait = DEFAULT_INTERVAL;\n        }\n\n        var timeout, result;\n\n        return function() {\n          var context = this, args = arguments;\n          var later = function() {\n            timeout = null;\n            if (!immediate) {\n              result = func.apply(context, args);\n            }\n          };\n          var callNow = immediate && !timeout;\n\n          timeout && clearTimeout(timeout);\n          timeout = setTimeout(later, wait);\n\n          if (callNow) {\n            result = func.apply(context, args);\n          }\n\n          return result;\n        };\n      },\n\n      throttle: function(func, wait) {\n        if (typeof wait != 'number') {\n          wait = DEFAULT_INTERVAL;\n        }\n\n        var context, args, timeout, throttling, more, result;\n        var whenDone = this.debounce(function() {\n          more = throttling = false;\n        }, wait);\n\n        return function() {\n          context = this; args = arguments;\n          var later = function() {\n            timeout = null;\n            if (more) {\n              result = func.apply(context, args);\n            }\n            whenDone();\n          };\n\n          if (!timeout) {\n            timeout = setTimeout(later, wait);\n          }\n\n          if (throttling) {\n            more = true;\n          } else {\n            throttling = true;\n            result = func.apply(context, args);\n          }\n\n          whenDone();\n          return result;\n        };\n      },\n\n      countThen: function(num, base) {\n        return function() {\n          if (!--num) { return base.apply(this, arguments); }\n        };\n      },\n\n      delegate: function(rules) {\n        return function(e, data) {\n          var target = $(e.target), parent;\n\n          Object.keys(rules).forEach(function(selector) {\n            if (!e.isPropagationStopped() && (parent = target.closest(selector)).length) {\n              data = data || {};\n              e.currentTarget = data.el = parent[0];\n              return rules[selector].apply(this, [e, data]);\n            }\n          }, this);\n        };\n      },\n\n      // ensures that a function will only be called once.\n      // usage:\n      // will only create the application once\n      //   var initialize = utils.once(createApplication)\n      //     initialize();\n      //     initialize();\n      //\n      // will only delete a record once\n      //   var myHanlder = function () {\n      //     $.ajax({type: 'DELETE', url: 'someurl.com', data: {id: 1}});\n      //   };\n      //   this.on('click', utils.once(myHandler));\n      //\n      once: function(func) {\n        var ran, result;\n\n        return function() {\n          if (ran) {\n            return result;\n          }\n\n          ran = true;\n          result = func.apply(this, arguments);\n\n          return result;\n        };\n      },\n\n      propertyWritability: function(obj, prop, writable) {\n        if (canWriteProtect() && obj.hasOwnProperty(prop)) {\n          Object.defineProperty(obj, prop, { writable: writable });\n        }\n      },\n\n      // Property locking/unlocking\n      mutateProperty: function(obj, prop, op) {\n        var writable;\n\n        if (!canWriteProtect() || !obj.hasOwnProperty(prop)) {\n          op.call(obj);\n          return;\n        }\n\n        writable = Object.getOwnPropertyDescriptor(obj, prop).writable;\n\n        Object.defineProperty(obj, prop, { writable: true });\n        op.call(obj);\n        Object.defineProperty(obj, prop, { writable: writable });\n\n      }\n\n    };\n\n    return utils;\n  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* Copyright 2013 Twitter, Inc. Licensed under The MIT License. http://opensource.org/licenses/MIT */\n\n!(__WEBPACK_AMD_DEFINE_ARRAY__ = [\n    __webpack_require__(7),\n    __webpack_require__(6),\n    __webpack_require__(4)\n  ], __WEBPACK_AMD_DEFINE_RESULT__ = function(utils, registry, debug) {\n    'use strict';\n\n    // common mixin allocates basic functionality - used by all component prototypes\n    // callback context is bound to component\n    var componentId = 0;\n\n    function teardownInstance(instanceInfo) {\n      if (!instanceInfo) { return; }\n\n      instanceInfo.events.slice().forEach(function(event) {\n        var args = [event.type];\n\n        event.element && args.unshift(event.element);\n        (typeof event.callback == 'function') && args.push(event.callback);\n\n        this.off.apply(this, args);\n      }, instanceInfo.instance);\n    }\n\n    function checkSerializable(type, data) {\n      try {\n        window.postMessage(data, '*');\n      } catch (e) {\n        debug.warn.call(this, [\n          'Event \"', type, '\" was triggered with non-serializable data. ',\n          'Flight recommends you avoid passing non-serializable data in events.'\n        ].join(''));\n      }\n    }\n\n    function warnAboutReferenceType(key) {\n      debug.warn.call(this, [\n        'Attribute \"', key, '\" defaults to an array or object. ',\n        'Enclose this in a function to avoid sharing between component instances.'\n      ].join(''));\n    }\n\n    function initAttributes(attrs) {\n      var definedKeys = [], incomingKeys;\n\n      this.attr = new this.attrDef;\n\n      if (debug.enabled && window.console) {\n        for (var key in this.attrDef.prototype) {\n          definedKeys.push(key);\n        }\n        incomingKeys = Object.keys(attrs);\n\n        for (var i = incomingKeys.length - 1; i >= 0; i--) {\n          if (definedKeys.indexOf(incomingKeys[i]) == -1) {\n            debug.warn.call(this, 'Passed unused attribute \"' + incomingKeys[i] + '\".');\n            break;\n          }\n        }\n      }\n\n      for (var key in this.attrDef.prototype) {\n        if (typeof attrs[key] == 'undefined') {\n          if (this.attr[key] === null) {\n            throw new Error('Required attribute \"' + key +\n                            '\" not specified in attachTo for component \"' + this.toString() + '\".');\n          }\n          // Warn about reference types in attributes\n          if (debug.enabled && typeof this.attr[key] === 'object') {\n            warnAboutReferenceType.call(this, key);\n          }\n        } else {\n          this.attr[key] = attrs[key];\n        }\n\n        if (typeof this.attr[key] == 'function') {\n          this.attr[key] = this.attr[key].call(this);\n        }\n      }\n\n    }\n\n    function initDeprecatedAttributes(attrs) {\n      if (debug.enabled) {\n        debug.warn.call(this, 'defaultAttrs will be removed in a future version. Please use attributes.');\n      }\n\n      // merge defaults with supplied options\n      // put options in attr.__proto__ to avoid merge overhead\n      var attr = Object.create(attrs);\n\n      for (var key in this.defaults) {\n        if (!attrs.hasOwnProperty(key)) {\n          attr[key] = this.defaults[key];\n          // Warn about reference types in defaultAttrs\n          if (debug.enabled && typeof this.defaults[key] === 'object') {\n            warnAboutReferenceType.call(this, key);\n          }\n        }\n      }\n\n      this.attr = attr;\n\n      Object.keys(this.defaults || {}).forEach(function(key) {\n        if (this.defaults[key] === null && this.attr[key] === null) {\n          throw new Error('Required attribute \"' + key +\n                          '\" not specified in attachTo for component \"' + this.toString() + '\".');\n        }\n      }, this);\n    }\n\n    function proxyEventTo(targetEvent) {\n      return function(e, data) {\n        $(e.target).trigger(targetEvent, data);\n      };\n    }\n\n    function withBase() {\n\n      // delegate trigger, bind and unbind to an element\n      // if $element not supplied, use component's node\n      // other arguments are passed on\n      // event can be either a string specifying the type\n      // of the event, or a hash specifying both the type\n      // and a default function to be called.\n      this.trigger = function() {\n        var $element, type, data, event, defaultFn;\n        var lastIndex = arguments.length - 1, lastArg = arguments[lastIndex];\n\n        if (typeof lastArg != 'string' && !(lastArg && lastArg.defaultBehavior)) {\n          lastIndex--;\n          data = lastArg;\n        }\n\n        if (lastIndex == 1) {\n          $element = $(arguments[0]);\n          event = arguments[1];\n        } else {\n          $element = this.$node;\n          event = arguments[0];\n        }\n\n        if (event.defaultBehavior) {\n          defaultFn = event.defaultBehavior;\n          event = $.Event(event.type);\n        }\n\n        type = event.type || event;\n\n        if (debug.enabled && window.postMessage) {\n          checkSerializable.call(this, type, data);\n        }\n\n        if (typeof this.attr.eventData == 'object') {\n          data = $.extend(true, {}, this.attr.eventData, data);\n        }\n\n        $element.trigger((event || type), data);\n\n        if (defaultFn && !event.isDefaultPrevented()) {\n          (this[defaultFn] || defaultFn).call(this, event, data);\n        }\n\n        return $element;\n      };\n\n\n      this.on = function() {\n        var $element, type, callback, originalCb;\n        var lastIndex = arguments.length - 1, origin = arguments[lastIndex];\n\n        if (typeof origin == 'object') {\n          //delegate callback\n          originalCb = utils.delegate(\n            this.resolveDelegateRules(origin)\n          );\n        } else if (typeof origin == 'string') {\n          originalCb = proxyEventTo(origin);\n        } else {\n          originalCb = origin;\n        }\n\n        if (lastIndex == 2) {\n          $element = $(arguments[0]);\n          type = arguments[1];\n        } else {\n          $element = this.$node;\n          type = arguments[0];\n        }\n\n        if (typeof originalCb != 'function' && typeof originalCb != 'object') {\n          throw new Error('Unable to bind to \"' + type +\n                          '\" because the given callback is not a function or an object');\n        }\n\n        callback = originalCb.bind(this);\n        callback.target = originalCb;\n        callback.context = this;\n\n        $element.on(type, callback);\n\n        // store every bound version of the callback\n        originalCb.bound || (originalCb.bound = []);\n        originalCb.bound.push(callback);\n\n        return callback;\n      };\n\n      this.off = function() {\n        var $element, type, callback;\n        var lastIndex = arguments.length - 1;\n\n        if (typeof arguments[lastIndex] == 'function') {\n          callback = arguments[lastIndex];\n          lastIndex -= 1;\n        }\n\n        if (lastIndex == 1) {\n          $element = $(arguments[0]);\n          type = arguments[1];\n        } else {\n          $element = this.$node;\n          type = arguments[0];\n        }\n\n        if (callback) {\n          //this callback may be the original function or a bound version\n          var boundFunctions = callback.target ? callback.target.bound : callback.bound || [];\n          //set callback to version bound against this instance\n          boundFunctions && boundFunctions.some(function(fn, i, arr) {\n            if (fn.context && (this.identity == fn.context.identity)) {\n              arr.splice(i, 1);\n              callback = fn;\n              return true;\n            }\n          }, this);\n          $element.off(type, callback);\n        } else {\n          // Loop through the events of `this` instance\n          // and unbind using the callback\n          registry.findInstanceInfo(this).events.forEach(function (event) {\n            if (type == event.type) {\n              $element.off(type, event.callback);\n            }\n          });\n        }\n\n        return $element;\n      };\n\n      this.resolveDelegateRules = function(ruleInfo) {\n        var rules = {};\n\n        Object.keys(ruleInfo).forEach(function(r) {\n          if (!(r in this.attr)) {\n            throw new Error('Component \"' + this.toString() + '\" wants to listen on \"' + r + '\" but no such attribute was defined.');\n          }\n          rules[this.attr[r]] = (typeof ruleInfo[r] == 'string') ? proxyEventTo(ruleInfo[r]) : ruleInfo[r];\n        }, this);\n\n        return rules;\n      };\n\n      this.select = function(attributeKey) {\n        return this.$node.find(this.attr[attributeKey]);\n      };\n\n      // New-style attributes\n\n      this.attributes = function(attrs) {\n\n        var Attributes = function() {};\n\n        if (this.attrDef) {\n          Attributes.prototype = new this.attrDef;\n        }\n\n        for (var name in attrs) {\n          Attributes.prototype[name] = attrs[name];\n        }\n\n        this.attrDef = Attributes;\n      };\n\n      // Deprecated attributes\n\n      this.defaultAttrs = function(defaults) {\n        utils.push(this.defaults, defaults, true) || (this.defaults = defaults);\n      };\n\n      this.initialize = function(node, attrs) {\n        attrs = attrs || {};\n        this.identity || (this.identity = componentId++);\n\n        if (!node) {\n          throw new Error('Component needs a node');\n        }\n\n        if (node.jquery) {\n          this.node = node[0];\n          this.$node = node;\n        } else {\n          this.node = node;\n          this.$node = $(node);\n        }\n\n        if (this.attrDef) {\n          initAttributes.call(this, attrs);\n        } else {\n          initDeprecatedAttributes.call(this, attrs);\n        }\n\n        return this;\n      };\n\n      this.teardown = function() {\n        var instanceInfo = registry.findInstanceInfo(this);\n\n        if (instanceInfo) {\n          teardownInstance(instanceInfo);\n        }\n      };\n    }\n\n    return withBase;\n  }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n\n/***/ }\n/******/ ])\n});\n", "/*\nTurbolinks 5.2.0\nCopyright \u00A9 2018 Basecamp, LLC\n */\n(function(){var t=this;(function(){(function(){this.Turbolinks={supported:function(){return null!=window.history.pushState&&null!=window.requestAnimationFrame&&null!=window.addEventListener}(),visit:function(t,r){return e.controller.visit(t,r)},clearCache:function(){return e.controller.clearCache()},setProgressBarDelay:function(t){return e.controller.setProgressBarDelay(t)}}}).call(this)}).call(t);var e=t.Turbolinks;(function(){(function(){var t,r,n,o=[].slice;e.copyObject=function(t){var e,r,n;r={};for(e in t)n=t[e],r[e]=n;return r},e.closest=function(e,r){return t.call(e,r)},t=function(){var t,e;return t=document.documentElement,null!=(e=t.closest)?e:function(t){var e;for(e=this;e;){if(e.nodeType===Node.ELEMENT_NODE&&r.call(e,t))return e;e=e.parentNode}}}(),e.defer=function(t){return setTimeout(t,1)},e.throttle=function(t){var e;return e=null,function(){var r;return r=1<=arguments.length?o.call(arguments,0):[],null!=e?e:e=requestAnimationFrame(function(n){return function(){return e=null,t.apply(n,r)}}(this))}},e.dispatch=function(t,e){var r,o,i,s,a,u;return a=null!=e?e:{},u=a.target,r=a.cancelable,o=a.data,i=document.createEvent(\"Events\"),i.initEvent(t,!0,r===!0),i.data=null!=o?o:{},i.cancelable&&!n&&(s=i.preventDefault,i.preventDefault=function(){return this.defaultPrevented||Object.defineProperty(this,\"defaultPrevented\",{get:function(){return!0}}),s.call(this)}),(null!=u?u:document).dispatchEvent(i),i},n=function(){var t;return t=document.createEvent(\"Events\"),t.initEvent(\"test\",!0,!0),t.preventDefault(),t.defaultPrevented}(),e.match=function(t,e){return r.call(t,e)},r=function(){var t,e,r,n;return t=document.documentElement,null!=(e=null!=(r=null!=(n=t.matchesSelector)?n:t.webkitMatchesSelector)?r:t.msMatchesSelector)?e:t.mozMatchesSelector}(),e.uuid=function(){var t,e,r;for(r=\"\",t=e=1;36>=e;t=++e)r+=9===t||14===t||19===t||24===t?\"-\":15===t?\"4\":20===t?(Math.floor(4*Math.random())+8).toString(16):Math.floor(15*Math.random()).toString(16);return r}}).call(this),function(){e.Location=function(){function t(t){var e,r;null==t&&(t=\"\"),r=document.createElement(\"a\"),r.href=t.toString(),this.absoluteURL=r.href,e=r.hash.length,2>e?this.requestURL=this.absoluteURL:(this.requestURL=this.absoluteURL.slice(0,-e),this.anchor=r.hash.slice(1))}var e,r,n,o;return t.wrap=function(t){return t instanceof this?t:new this(t)},t.prototype.getOrigin=function(){return this.absoluteURL.split(\"/\",3).join(\"/\")},t.prototype.getPath=function(){var t,e;return null!=(t=null!=(e=this.requestURL.match(/\\/\\/[^\\/]*(\\/[^?;]*)/))?e[1]:void 0)?t:\"/\"},t.prototype.getPathComponents=function(){return this.getPath().split(\"/\").slice(1)},t.prototype.getLastPathComponent=function(){return this.getPathComponents().slice(-1)[0]},t.prototype.getExtension=function(){var t,e;return null!=(t=null!=(e=this.getLastPathComponent().match(/\\.[^.]*$/))?e[0]:void 0)?t:\"\"},t.prototype.isHTML=function(){return this.getExtension().match(/^(?:|\\.(?:htm|html|xhtml))$/)},t.prototype.isPrefixedBy=function(t){var e;return e=r(t),this.isEqualTo(t)||o(this.absoluteURL,e)},t.prototype.isEqualTo=function(t){return this.absoluteURL===(null!=t?t.absoluteURL:void 0)},t.prototype.toCacheKey=function(){return this.requestURL},t.prototype.toJSON=function(){return this.absoluteURL},t.prototype.toString=function(){return this.absoluteURL},t.prototype.valueOf=function(){return this.absoluteURL},r=function(t){return e(t.getOrigin()+t.getPath())},e=function(t){return n(t,\"/\")?t:t+\"/\"},o=function(t,e){return t.slice(0,e.length)===e},n=function(t,e){return t.slice(-e.length)===e},t}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.HttpRequest=function(){function r(r,n,o){this.delegate=r,this.requestCanceled=t(this.requestCanceled,this),this.requestTimedOut=t(this.requestTimedOut,this),this.requestFailed=t(this.requestFailed,this),this.requestLoaded=t(this.requestLoaded,this),this.requestProgressed=t(this.requestProgressed,this),this.url=e.Location.wrap(n).requestURL,this.referrer=e.Location.wrap(o).absoluteURL,this.createXHR()}return r.NETWORK_FAILURE=0,r.TIMEOUT_FAILURE=-1,r.timeout=60,r.prototype.send=function(){var t;return this.xhr&&!this.sent?(this.notifyApplicationBeforeRequestStart(),this.setProgress(0),this.xhr.send(),this.sent=!0,\"function\"==typeof(t=this.delegate).requestStarted?t.requestStarted():void 0):void 0},r.prototype.cancel=function(){return this.xhr&&this.sent?this.xhr.abort():void 0},r.prototype.requestProgressed=function(t){return t.lengthComputable?this.setProgress(t.loaded/t.total):void 0},r.prototype.requestLoaded=function(){return this.endRequest(function(t){return function(){var e;return 200<=(e=t.xhr.status)&&300>e?t.delegate.requestCompletedWithResponse(t.xhr.responseText,t.xhr.getResponseHeader(\"Turbolinks-Location\")):(t.failed=!0,t.delegate.requestFailedWithStatusCode(t.xhr.status,t.xhr.responseText))}}(this))},r.prototype.requestFailed=function(){return this.endRequest(function(t){return function(){return t.failed=!0,t.delegate.requestFailedWithStatusCode(t.constructor.NETWORK_FAILURE)}}(this))},r.prototype.requestTimedOut=function(){return this.endRequest(function(t){return function(){return t.failed=!0,t.delegate.requestFailedWithStatusCode(t.constructor.TIMEOUT_FAILURE)}}(this))},r.prototype.requestCanceled=function(){return this.endRequest()},r.prototype.notifyApplicationBeforeRequestStart=function(){return e.dispatch(\"turbolinks:request-start\",{data:{url:this.url,xhr:this.xhr}})},r.prototype.notifyApplicationAfterRequestEnd=function(){return e.dispatch(\"turbolinks:request-end\",{data:{url:this.url,xhr:this.xhr}})},r.prototype.createXHR=function(){return this.xhr=new XMLHttpRequest,this.xhr.open(\"GET\",this.url,!0),this.xhr.timeout=1e3*this.constructor.timeout,this.xhr.setRequestHeader(\"Accept\",\"text/html, application/xhtml+xml\"),this.xhr.setRequestHeader(\"Turbolinks-Referrer\",this.referrer),this.xhr.onprogress=this.requestProgressed,this.xhr.onload=this.requestLoaded,this.xhr.onerror=this.requestFailed,this.xhr.ontimeout=this.requestTimedOut,this.xhr.onabort=this.requestCanceled},r.prototype.endRequest=function(t){return this.xhr?(this.notifyApplicationAfterRequestEnd(),null!=t&&t.call(this),this.destroy()):void 0},r.prototype.setProgress=function(t){var e;return this.progress=t,\"function\"==typeof(e=this.delegate).requestProgressed?e.requestProgressed(this.progress):void 0},r.prototype.destroy=function(){var t;return this.setProgress(1),\"function\"==typeof(t=this.delegate).requestFinished&&t.requestFinished(),this.delegate=null,this.xhr=null},r}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.ProgressBar=function(){function e(){this.trickle=t(this.trickle,this),this.stylesheetElement=this.createStylesheetElement(),this.progressElement=this.createProgressElement()}var r;return r=300,e.defaultCSS=\".turbolinks-progress-bar {\\n  position: fixed;\\n  display: block;\\n  top: 0;\\n  left: 0;\\n  height: 3px;\\n  background: #0076ff;\\n  z-index: 9999;\\n  transition: width \"+r+\"ms ease-out, opacity \"+r/2+\"ms \"+r/2+\"ms ease-in;\\n  transform: translate3d(0, 0, 0);\\n}\",e.prototype.show=function(){return this.visible?void 0:(this.visible=!0,this.installStylesheetElement(),this.installProgressElement(),this.startTrickling())},e.prototype.hide=function(){return this.visible&&!this.hiding?(this.hiding=!0,this.fadeProgressElement(function(t){return function(){return t.uninstallProgressElement(),t.stopTrickling(),t.visible=!1,t.hiding=!1}}(this))):void 0},e.prototype.setValue=function(t){return this.value=t,this.refresh()},e.prototype.installStylesheetElement=function(){return document.head.insertBefore(this.stylesheetElement,document.head.firstChild)},e.prototype.installProgressElement=function(){return this.progressElement.style.width=0,this.progressElement.style.opacity=1,document.documentElement.insertBefore(this.progressElement,document.body),this.refresh()},e.prototype.fadeProgressElement=function(t){return this.progressElement.style.opacity=0,setTimeout(t,1.5*r)},e.prototype.uninstallProgressElement=function(){return this.progressElement.parentNode?document.documentElement.removeChild(this.progressElement):void 0},e.prototype.startTrickling=function(){return null!=this.trickleInterval?this.trickleInterval:this.trickleInterval=setInterval(this.trickle,r)},e.prototype.stopTrickling=function(){return clearInterval(this.trickleInterval),this.trickleInterval=null},e.prototype.trickle=function(){return this.setValue(this.value+Math.random()/100)},e.prototype.refresh=function(){return requestAnimationFrame(function(t){return function(){return t.progressElement.style.width=10+90*t.value+\"%\"}}(this))},e.prototype.createStylesheetElement=function(){var t;return t=document.createElement(\"style\"),t.type=\"text/css\",t.textContent=this.constructor.defaultCSS,t},e.prototype.createProgressElement=function(){var t;return t=document.createElement(\"div\"),t.className=\"turbolinks-progress-bar\",t},e}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.BrowserAdapter=function(){function r(r){this.controller=r,this.showProgressBar=t(this.showProgressBar,this),this.progressBar=new e.ProgressBar}var n,o,i;return i=e.HttpRequest,n=i.NETWORK_FAILURE,o=i.TIMEOUT_FAILURE,r.prototype.visitProposedToLocationWithAction=function(t,e){return this.controller.startVisitToLocationWithAction(t,e)},r.prototype.visitStarted=function(t){return t.issueRequest(),t.changeHistory(),t.loadCachedSnapshot()},r.prototype.visitRequestStarted=function(t){return this.progressBar.setValue(0),t.hasCachedSnapshot()||\"restore\"!==t.action?this.showProgressBarAfterDelay():this.showProgressBar()},r.prototype.visitRequestProgressed=function(t){return this.progressBar.setValue(t.progress)},r.prototype.visitRequestCompleted=function(t){return t.loadResponse()},r.prototype.visitRequestFailedWithStatusCode=function(t,e){switch(e){case n:case o:return this.reload();default:return t.loadResponse()}},r.prototype.visitRequestFinished=function(t){return this.hideProgressBar()},r.prototype.visitCompleted=function(t){return t.followRedirect()},r.prototype.pageInvalidated=function(){return this.reload()},r.prototype.showProgressBarAfterDelay=function(){return this.progressBarTimeout=setTimeout(this.showProgressBar,this.controller.progressBarDelay)},r.prototype.showProgressBar=function(){return this.progressBar.show()},r.prototype.hideProgressBar=function(){return this.progressBar.hide(),clearTimeout(this.progressBarTimeout)},r.prototype.reload=function(){return window.location.reload()},r}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.History=function(){function r(e){this.delegate=e,this.onPageLoad=t(this.onPageLoad,this),this.onPopState=t(this.onPopState,this)}return r.prototype.start=function(){return this.started?void 0:(addEventListener(\"popstate\",this.onPopState,!1),addEventListener(\"load\",this.onPageLoad,!1),this.started=!0)},r.prototype.stop=function(){return this.started?(removeEventListener(\"popstate\",this.onPopState,!1),removeEventListener(\"load\",this.onPageLoad,!1),this.started=!1):void 0},r.prototype.push=function(t,r){return t=e.Location.wrap(t),this.update(\"push\",t,r)},r.prototype.replace=function(t,r){return t=e.Location.wrap(t),this.update(\"replace\",t,r)},r.prototype.onPopState=function(t){var r,n,o,i;return this.shouldHandlePopState()&&(i=null!=(n=t.state)?n.turbolinks:void 0)?(r=e.Location.wrap(window.location),o=i.restorationIdentifier,this.delegate.historyPoppedToLocationWithRestorationIdentifier(r,o)):void 0},r.prototype.onPageLoad=function(t){return e.defer(function(t){return function(){return t.pageLoaded=!0}}(this))},r.prototype.shouldHandlePopState=function(){return this.pageIsLoaded()},r.prototype.pageIsLoaded=function(){return this.pageLoaded||\"complete\"===document.readyState},r.prototype.update=function(t,e,r){var n;return n={turbolinks:{restorationIdentifier:r}},history[t+\"State\"](n,null,e)},r}()}.call(this),function(){e.HeadDetails=function(){function t(t){var e,r,n,s,a,u;for(this.elements={},n=0,a=t.length;a>n;n++)u=t[n],u.nodeType===Node.ELEMENT_NODE&&(s=u.outerHTML,r=null!=(e=this.elements)[s]?e[s]:e[s]={type:i(u),tracked:o(u),elements:[]},r.elements.push(u))}var e,r,n,o,i;return t.fromHeadElement=function(t){var e;return new this(null!=(e=null!=t?t.childNodes:void 0)?e:[])},t.prototype.hasElementWithKey=function(t){return t in this.elements},t.prototype.getTrackedElementSignature=function(){var t,e;return function(){var r,n;r=this.elements,n=[];for(t in r)e=r[t].tracked,e&&n.push(t);return n}.call(this).join(\"\")},t.prototype.getScriptElementsNotInDetails=function(t){return this.getElementsMatchingTypeNotInDetails(\"script\",t)},t.prototype.getStylesheetElementsNotInDetails=function(t){return this.getElementsMatchingTypeNotInDetails(\"stylesheet\",t)},t.prototype.getElementsMatchingTypeNotInDetails=function(t,e){var r,n,o,i,s,a;o=this.elements,s=[];for(n in o)i=o[n],a=i.type,r=i.elements,a!==t||e.hasElementWithKey(n)||s.push(r[0]);return s},t.prototype.getProvisionalElements=function(){var t,e,r,n,o,i,s;r=[],n=this.elements;for(e in n)o=n[e],s=o.type,i=o.tracked,t=o.elements,null!=s||i?t.length>1&&r.push.apply(r,t.slice(1)):r.push.apply(r,t);return r},t.prototype.getMetaValue=function(t){var e;return null!=(e=this.findMetaElementByName(t))?e.getAttribute(\"content\"):void 0},t.prototype.findMetaElementByName=function(t){var r,n,o,i;r=void 0,i=this.elements;for(o in i)n=i[o].elements,e(n[0],t)&&(r=n[0]);return r},i=function(t){return r(t)?\"script\":n(t)?\"stylesheet\":void 0},o=function(t){return\"reload\"===t.getAttribute(\"data-turbolinks-track\")},r=function(t){var e;return e=t.tagName.toLowerCase(),\"script\"===e},n=function(t){var e;return e=t.tagName.toLowerCase(),\"style\"===e||\"link\"===e&&\"stylesheet\"===t.getAttribute(\"rel\")},e=function(t,e){var r;return r=t.tagName.toLowerCase(),\"meta\"===r&&t.getAttribute(\"name\")===e},t}()}.call(this),function(){e.Snapshot=function(){function t(t,e){this.headDetails=t,this.bodyElement=e}return t.wrap=function(t){return t instanceof this?t:\"string\"==typeof t?this.fromHTMLString(t):this.fromHTMLElement(t)},t.fromHTMLString=function(t){var e;return e=document.createElement(\"html\"),e.innerHTML=t,this.fromHTMLElement(e)},t.fromHTMLElement=function(t){var r,n,o,i;return o=t.querySelector(\"head\"),r=null!=(i=t.querySelector(\"body\"))?i:document.createElement(\"body\"),n=e.HeadDetails.fromHeadElement(o),new this(n,r)},t.prototype.clone=function(){return new this.constructor(this.headDetails,this.bodyElement.cloneNode(!0))},t.prototype.getRootLocation=function(){var t,r;return r=null!=(t=this.getSetting(\"root\"))?t:\"/\",new e.Location(r)},t.prototype.getCacheControlValue=function(){return this.getSetting(\"cache-control\")},t.prototype.getElementForAnchor=function(t){try{return this.bodyElement.querySelector(\"[id='\"+t+\"'], a[name='\"+t+\"']\")}catch(e){}},t.prototype.getPermanentElements=function(){return this.bodyElement.querySelectorAll(\"[id][data-turbolinks-permanent]\")},t.prototype.getPermanentElementById=function(t){return this.bodyElement.querySelector(\"#\"+t+\"[data-turbolinks-permanent]\")},t.prototype.getPermanentElementsPresentInSnapshot=function(t){var e,r,n,o,i;for(o=this.getPermanentElements(),i=[],r=0,n=o.length;n>r;r++)e=o[r],t.getPermanentElementById(e.id)&&i.push(e);return i},t.prototype.findFirstAutofocusableElement=function(){return this.bodyElement.querySelector(\"[autofocus]\")},t.prototype.hasAnchor=function(t){return null!=this.getElementForAnchor(t)},t.prototype.isPreviewable=function(){return\"no-preview\"!==this.getCacheControlValue()},t.prototype.isCacheable=function(){return\"no-cache\"!==this.getCacheControlValue()},t.prototype.isVisitable=function(){return\"reload\"!==this.getSetting(\"visit-control\")},t.prototype.getSetting=function(t){return this.headDetails.getMetaValue(\"turbolinks-\"+t)},t}()}.call(this),function(){var t=[].slice;e.Renderer=function(){function e(){}var r;return e.render=function(){var e,r,n,o;return n=arguments[0],r=arguments[1],e=3<=arguments.length?t.call(arguments,2):[],o=function(t,e,r){r.prototype=t.prototype;var n=new r,o=t.apply(n,e);return Object(o)===o?o:n}(this,e,function(){}),o.delegate=n,o.render(r),o},e.prototype.renderView=function(t){return this.delegate.viewWillRender(this.newBody),t(),this.delegate.viewRendered(this.newBody)},e.prototype.invalidateView=function(){return this.delegate.viewInvalidated()},e.prototype.createScriptElement=function(t){var e;return\"false\"===t.getAttribute(\"data-turbolinks-eval\")?t:(e=document.createElement(\"script\"),e.textContent=t.textContent,e.async=!1,r(e,t),e)},r=function(t,e){var r,n,o,i,s,a,u;for(i=e.attributes,a=[],r=0,n=i.length;n>r;r++)s=i[r],o=s.name,u=s.value,a.push(t.setAttribute(o,u));return a},e}()}.call(this),function(){var t,r,n=function(t,e){function r(){this.constructor=t}for(var n in e)o.call(e,n)&&(t[n]=e[n]);return r.prototype=e.prototype,t.prototype=new r,t.__super__=e.prototype,t},o={}.hasOwnProperty;e.SnapshotRenderer=function(e){function o(t,e,r){this.currentSnapshot=t,this.newSnapshot=e,this.isPreview=r,this.currentHeadDetails=this.currentSnapshot.headDetails,this.newHeadDetails=this.newSnapshot.headDetails,this.currentBody=this.currentSnapshot.bodyElement,this.newBody=this.newSnapshot.bodyElement}return n(o,e),o.prototype.render=function(t){return this.shouldRender()?(this.mergeHead(),this.renderView(function(e){return function(){return e.replaceBody(),e.isPreview||e.focusFirstAutofocusableElement(),t()}}(this))):this.invalidateView()},o.prototype.mergeHead=function(){return this.copyNewHeadStylesheetElements(),this.copyNewHeadScriptElements(),this.removeCurrentHeadProvisionalElements(),this.copyNewHeadProvisionalElements()},o.prototype.replaceBody=function(){var t;return t=this.relocateCurrentBodyPermanentElements(),this.activateNewBodyScriptElements(),this.assignNewBody(),this.replacePlaceholderElementsWithClonedPermanentElements(t)},o.prototype.shouldRender=function(){return this.newSnapshot.isVisitable()&&this.trackedElementsAreIdentical()},o.prototype.trackedElementsAreIdentical=function(){return this.currentHeadDetails.getTrackedElementSignature()===this.newHeadDetails.getTrackedElementSignature()},o.prototype.copyNewHeadStylesheetElements=function(){var t,e,r,n,o;for(n=this.getNewHeadStylesheetElements(),o=[],e=0,r=n.length;r>e;e++)t=n[e],o.push(document.head.appendChild(t));return o},o.prototype.copyNewHeadScriptElements=function(){var t,e,r,n,o;for(n=this.getNewHeadScriptElements(),o=[],e=0,r=n.length;r>e;e++)t=n[e],o.push(document.head.appendChild(this.createScriptElement(t)));return o},o.prototype.removeCurrentHeadProvisionalElements=function(){var t,e,r,n,o;for(n=this.getCurrentHeadProvisionalElements(),o=[],e=0,r=n.length;r>e;e++)t=n[e],o.push(document.head.removeChild(t));return o},o.prototype.copyNewHeadProvisionalElements=function(){var t,e,r,n,o;for(n=this.getNewHeadProvisionalElements(),o=[],e=0,r=n.length;r>e;e++)t=n[e],o.push(document.head.appendChild(t));return o},o.prototype.relocateCurrentBodyPermanentElements=function(){var e,n,o,i,s,a,u;for(a=this.getCurrentBodyPermanentElements(),u=[],e=0,n=a.length;n>e;e++)i=a[e],s=t(i),o=this.newSnapshot.getPermanentElementById(i.id),r(i,s.element),r(o,i),u.push(s);return u},o.prototype.replacePlaceholderElementsWithClonedPermanentElements=function(t){var e,n,o,i,s,a,u;for(u=[],o=0,i=t.length;i>o;o++)a=t[o],n=a.element,s=a.permanentElement,e=s.cloneNode(!0),u.push(r(n,e));return u},o.prototype.activateNewBodyScriptElements=function(){var t,e,n,o,i,s;for(i=this.getNewBodyScriptElements(),s=[],e=0,o=i.length;o>e;e++)n=i[e],t=this.createScriptElement(n),s.push(r(n,t));return s},o.prototype.assignNewBody=function(){return document.body=this.newBody},o.prototype.focusFirstAutofocusableElement=function(){var t;return null!=(t=this.newSnapshot.findFirstAutofocusableElement())?t.focus():void 0},o.prototype.getNewHeadStylesheetElements=function(){return this.newHeadDetails.getStylesheetElementsNotInDetails(this.currentHeadDetails)},o.prototype.getNewHeadScriptElements=function(){return this.newHeadDetails.getScriptElementsNotInDetails(this.currentHeadDetails)},o.prototype.getCurrentHeadProvisionalElements=function(){return this.currentHeadDetails.getProvisionalElements()},o.prototype.getNewHeadProvisionalElements=function(){return this.newHeadDetails.getProvisionalElements()},o.prototype.getCurrentBodyPermanentElements=function(){return this.currentSnapshot.getPermanentElementsPresentInSnapshot(this.newSnapshot)},o.prototype.getNewBodyScriptElements=function(){return this.newBody.querySelectorAll(\"script\")},o}(e.Renderer),t=function(t){var e;return e=document.createElement(\"meta\"),e.setAttribute(\"name\",\"turbolinks-permanent-placeholder\"),e.setAttribute(\"content\",t.id),{element:e,permanentElement:t}},r=function(t,e){var r;return(r=t.parentNode)?r.replaceChild(e,t):void 0}}.call(this),function(){var t=function(t,e){function n(){this.constructor=t}for(var o in e)r.call(e,o)&&(t[o]=e[o]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},r={}.hasOwnProperty;e.ErrorRenderer=function(e){function r(t){var e;e=document.createElement(\"html\"),e.innerHTML=t,this.newHead=e.querySelector(\"head\"),this.newBody=e.querySelector(\"body\")}return t(r,e),r.prototype.render=function(t){return this.renderView(function(e){return function(){return e.replaceHeadAndBody(),e.activateBodyScriptElements(),t()}}(this))},r.prototype.replaceHeadAndBody=function(){var t,e;return e=document.head,t=document.body,e.parentNode.replaceChild(this.newHead,e),t.parentNode.replaceChild(this.newBody,t)},r.prototype.activateBodyScriptElements=function(){var t,e,r,n,o,i;for(n=this.getScriptElements(),i=[],e=0,r=n.length;r>e;e++)o=n[e],t=this.createScriptElement(o),i.push(o.parentNode.replaceChild(t,o));return i},r.prototype.getScriptElements=function(){return document.documentElement.querySelectorAll(\"script\")},r}(e.Renderer)}.call(this),function(){e.View=function(){function t(t){this.delegate=t,this.htmlElement=document.documentElement}return t.prototype.getRootLocation=function(){return this.getSnapshot().getRootLocation()},t.prototype.getElementForAnchor=function(t){return this.getSnapshot().getElementForAnchor(t)},t.prototype.getSnapshot=function(){return e.Snapshot.fromHTMLElement(this.htmlElement)},t.prototype.render=function(t,e){var r,n,o;return o=t.snapshot,r=t.error,n=t.isPreview,this.markAsPreview(n),null!=o?this.renderSnapshot(o,n,e):this.renderError(r,e)},t.prototype.markAsPreview=function(t){return t?this.htmlElement.setAttribute(\"data-turbolinks-preview\",\"\"):this.htmlElement.removeAttribute(\"data-turbolinks-preview\")},t.prototype.renderSnapshot=function(t,r,n){return e.SnapshotRenderer.render(this.delegate,n,this.getSnapshot(),e.Snapshot.wrap(t),r)},t.prototype.renderError=function(t,r){return e.ErrorRenderer.render(this.delegate,r,t)},t}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.ScrollManager=function(){function r(r){this.delegate=r,this.onScroll=t(this.onScroll,this),this.onScroll=e.throttle(this.onScroll)}return r.prototype.start=function(){return this.started?void 0:(addEventListener(\"scroll\",this.onScroll,!1),this.onScroll(),this.started=!0)},r.prototype.stop=function(){return this.started?(removeEventListener(\"scroll\",this.onScroll,!1),this.started=!1):void 0},r.prototype.scrollToElement=function(t){return t.scrollIntoView()},r.prototype.scrollToPosition=function(t){var e,r;return e=t.x,r=t.y,window.scrollTo(e,r)},r.prototype.onScroll=function(t){return this.updatePosition({x:window.pageXOffset,y:window.pageYOffset})},r.prototype.updatePosition=function(t){var e;return this.position=t,null!=(e=this.delegate)?e.scrollPositionChanged(this.position):void 0},r}()}.call(this),function(){e.SnapshotCache=function(){function t(t){this.size=t,this.keys=[],this.snapshots={}}var r;return t.prototype.has=function(t){var e;return e=r(t),e in this.snapshots},t.prototype.get=function(t){var e;if(this.has(t))return e=this.read(t),this.touch(t),e},t.prototype.put=function(t,e){return this.write(t,e),this.touch(t),e},t.prototype.read=function(t){var e;return e=r(t),this.snapshots[e]},t.prototype.write=function(t,e){var n;return n=r(t),this.snapshots[n]=e},t.prototype.touch=function(t){var e,n;return n=r(t),e=this.keys.indexOf(n),e>-1&&this.keys.splice(e,1),this.keys.unshift(n),this.trim()},t.prototype.trim=function(){var t,e,r,n,o;for(n=this.keys.splice(this.size),o=[],t=0,r=n.length;r>t;t++)e=n[t],o.push(delete this.snapshots[e]);return o},r=function(t){return e.Location.wrap(t).toCacheKey()},t}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.Visit=function(){function r(r,n,o){this.controller=r,this.action=o,this.performScroll=t(this.performScroll,this),this.identifier=e.uuid(),this.location=e.Location.wrap(n),this.adapter=this.controller.adapter,this.state=\"initialized\",this.timingMetrics={}}var n;return r.prototype.start=function(){return\"initialized\"===this.state?(this.recordTimingMetric(\"visitStart\"),this.state=\"started\",this.adapter.visitStarted(this)):void 0},r.prototype.cancel=function(){var t;return\"started\"===this.state?(null!=(t=this.request)&&t.cancel(),this.cancelRender(),this.state=\"canceled\"):void 0},r.prototype.complete=function(){var t;return\"started\"===this.state?(this.recordTimingMetric(\"visitEnd\"),this.state=\"completed\",\"function\"==typeof(t=this.adapter).visitCompleted&&t.visitCompleted(this),this.controller.visitCompleted(this)):void 0},r.prototype.fail=function(){var t;return\"started\"===this.state?(this.state=\"failed\",\"function\"==typeof(t=this.adapter).visitFailed?t.visitFailed(this):void 0):void 0},r.prototype.changeHistory=function(){var t,e;return this.historyChanged?void 0:(t=this.location.isEqualTo(this.referrer)?\"replace\":this.action,e=n(t),this.controller[e](this.location,this.restorationIdentifier),this.historyChanged=!0)},r.prototype.issueRequest=function(){return this.shouldIssueRequest()&&null==this.request?(this.progress=0,this.request=new e.HttpRequest(this,this.location,this.referrer),this.request.send()):void 0},r.prototype.getCachedSnapshot=function(){var t;return!(t=this.controller.getCachedSnapshotForLocation(this.location))||null!=this.location.anchor&&!t.hasAnchor(this.location.anchor)||\"restore\"!==this.action&&!t.isPreviewable()?void 0:t},r.prototype.hasCachedSnapshot=function(){return null!=this.getCachedSnapshot()},r.prototype.loadCachedSnapshot=function(){var t,e;return(e=this.getCachedSnapshot())?(t=this.shouldIssueRequest(),this.render(function(){var r;return this.cacheSnapshot(),this.controller.render({snapshot:e,isPreview:t},this.performScroll),\"function\"==typeof(r=this.adapter).visitRendered&&r.visitRendered(this),t?void 0:this.complete()})):void 0},r.prototype.loadResponse=function(){return null!=this.response?this.render(function(){var t,e;return this.cacheSnapshot(),this.request.failed?(this.controller.render({error:this.response},this.performScroll),\"function\"==typeof(t=this.adapter).visitRendered&&t.visitRendered(this),this.fail()):(this.controller.render({snapshot:this.response},this.performScroll),\"function\"==typeof(e=this.adapter).visitRendered&&e.visitRendered(this),this.complete())}):void 0},r.prototype.followRedirect=function(){return this.redirectedToLocation&&!this.followedRedirect?(this.location=this.redirectedToLocation,this.controller.replaceHistoryWithLocationAndRestorationIdentifier(this.redirectedToLocation,this.restorationIdentifier),this.followedRedirect=!0):void 0},r.prototype.requestStarted=function(){var t;return this.recordTimingMetric(\"requestStart\"),\"function\"==typeof(t=this.adapter).visitRequestStarted?t.visitRequestStarted(this):void 0},r.prototype.requestProgressed=function(t){var e;return this.progress=t,\"function\"==typeof(e=this.adapter).visitRequestProgressed?e.visitRequestProgressed(this):void 0},r.prototype.requestCompletedWithResponse=function(t,r){return this.response=t,null!=r&&(this.redirectedToLocation=e.Location.wrap(r)),this.adapter.visitRequestCompleted(this)},r.prototype.requestFailedWithStatusCode=function(t,e){return this.response=e,this.adapter.visitRequestFailedWithStatusCode(this,t)},r.prototype.requestFinished=function(){var t;return this.recordTimingMetric(\"requestEnd\"),\"function\"==typeof(t=this.adapter).visitRequestFinished?t.visitRequestFinished(this):void 0},r.prototype.performScroll=function(){return this.scrolled?void 0:(\"restore\"===this.action?this.scrollToRestoredPosition()||this.scrollToTop():this.scrollToAnchor()||this.scrollToTop(),this.scrolled=!0)},r.prototype.scrollToRestoredPosition=function(){var t,e;return t=null!=(e=this.restorationData)?e.scrollPosition:void 0,null!=t?(this.controller.scrollToPosition(t),!0):void 0},r.prototype.scrollToAnchor=function(){return null!=this.location.anchor?(this.controller.scrollToAnchor(this.location.anchor),!0):void 0},r.prototype.scrollToTop=function(){return this.controller.scrollToPosition({x:0,y:0})},r.prototype.recordTimingMetric=function(t){var e;return null!=(e=this.timingMetrics)[t]?e[t]:e[t]=(new Date).getTime()},r.prototype.getTimingMetrics=function(){return e.copyObject(this.timingMetrics)},n=function(t){switch(t){case\"replace\":return\"replaceHistoryWithLocationAndRestorationIdentifier\";case\"advance\":case\"restore\":return\"pushHistoryWithLocationAndRestorationIdentifier\"}},r.prototype.shouldIssueRequest=function(){return\"restore\"===this.action?!this.hasCachedSnapshot():!0},r.prototype.cacheSnapshot=function(){return this.snapshotCached?void 0:(this.controller.cacheSnapshot(),this.snapshotCached=!0)},r.prototype.render=function(t){return this.cancelRender(),this.frame=requestAnimationFrame(function(e){return function(){return e.frame=null,t.call(e)}}(this))},r.prototype.cancelRender=function(){return this.frame?cancelAnimationFrame(this.frame):void 0},r}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.Controller=function(){function r(){this.clickBubbled=t(this.clickBubbled,this),this.clickCaptured=t(this.clickCaptured,this),this.pageLoaded=t(this.pageLoaded,this),this.history=new e.History(this),this.view=new e.View(this),this.scrollManager=new e.ScrollManager(this),this.restorationData={},this.clearCache(),this.setProgressBarDelay(500)}return r.prototype.start=function(){return e.supported&&!this.started?(addEventListener(\"click\",this.clickCaptured,!0),addEventListener(\"DOMContentLoaded\",this.pageLoaded,!1),this.scrollManager.start(),this.startHistory(),this.started=!0,this.enabled=!0):void 0},r.prototype.disable=function(){return this.enabled=!1},r.prototype.stop=function(){return this.started?(removeEventListener(\"click\",this.clickCaptured,!0),removeEventListener(\"DOMContentLoaded\",this.pageLoaded,!1),this.scrollManager.stop(),this.stopHistory(),this.started=!1):void 0},r.prototype.clearCache=function(){return this.cache=new e.SnapshotCache(10)},r.prototype.visit=function(t,r){var n,o;return null==r&&(r={}),t=e.Location.wrap(t),this.applicationAllowsVisitingLocation(t)?this.locationIsVisitable(t)?(n=null!=(o=r.action)?o:\"advance\",this.adapter.visitProposedToLocationWithAction(t,n)):window.location=t:void 0},r.prototype.startVisitToLocationWithAction=function(t,r,n){var o;return e.supported?(o=this.getRestorationDataForIdentifier(n),this.startVisit(t,r,{restorationData:o})):window.location=t},r.prototype.setProgressBarDelay=function(t){return this.progressBarDelay=t},r.prototype.startHistory=function(){return this.location=e.Location.wrap(window.location),this.restorationIdentifier=e.uuid(),this.history.start(),this.history.replace(this.location,this.restorationIdentifier)},r.prototype.stopHistory=function(){return this.history.stop()},r.prototype.pushHistoryWithLocationAndRestorationIdentifier=function(t,r){return this.restorationIdentifier=r,this.location=e.Location.wrap(t),this.history.push(this.location,this.restorationIdentifier)},r.prototype.replaceHistoryWithLocationAndRestorationIdentifier=function(t,r){return this.restorationIdentifier=r,this.location=e.Location.wrap(t),this.history.replace(this.location,this.restorationIdentifier)},r.prototype.historyPoppedToLocationWithRestorationIdentifier=function(t,r){var n;return this.restorationIdentifier=r,this.enabled?(n=this.getRestorationDataForIdentifier(this.restorationIdentifier),this.startVisit(t,\"restore\",{restorationIdentifier:this.restorationIdentifier,restorationData:n,historyChanged:!0}),this.location=e.Location.wrap(t)):this.adapter.pageInvalidated()},r.prototype.getCachedSnapshotForLocation=function(t){var e;return null!=(e=this.cache.get(t))?e.clone():void 0},r.prototype.shouldCacheSnapshot=function(){return this.view.getSnapshot().isCacheable();\n},r.prototype.cacheSnapshot=function(){var t,r;return this.shouldCacheSnapshot()?(this.notifyApplicationBeforeCachingSnapshot(),r=this.view.getSnapshot(),t=this.lastRenderedLocation,e.defer(function(e){return function(){return e.cache.put(t,r.clone())}}(this))):void 0},r.prototype.scrollToAnchor=function(t){var e;return(e=this.view.getElementForAnchor(t))?this.scrollToElement(e):this.scrollToPosition({x:0,y:0})},r.prototype.scrollToElement=function(t){return this.scrollManager.scrollToElement(t)},r.prototype.scrollToPosition=function(t){return this.scrollManager.scrollToPosition(t)},r.prototype.scrollPositionChanged=function(t){var e;return e=this.getCurrentRestorationData(),e.scrollPosition=t},r.prototype.render=function(t,e){return this.view.render(t,e)},r.prototype.viewInvalidated=function(){return this.adapter.pageInvalidated()},r.prototype.viewWillRender=function(t){return this.notifyApplicationBeforeRender(t)},r.prototype.viewRendered=function(){return this.lastRenderedLocation=this.currentVisit.location,this.notifyApplicationAfterRender()},r.prototype.pageLoaded=function(){return this.lastRenderedLocation=this.location,this.notifyApplicationAfterPageLoad()},r.prototype.clickCaptured=function(){return removeEventListener(\"click\",this.clickBubbled,!1),addEventListener(\"click\",this.clickBubbled,!1)},r.prototype.clickBubbled=function(t){var e,r,n;return this.enabled&&this.clickEventIsSignificant(t)&&(r=this.getVisitableLinkForNode(t.target))&&(n=this.getVisitableLocationForLink(r))&&this.applicationAllowsFollowingLinkToLocation(r,n)?(t.preventDefault(),e=this.getActionForLink(r),this.visit(n,{action:e})):void 0},r.prototype.applicationAllowsFollowingLinkToLocation=function(t,e){var r;return r=this.notifyApplicationAfterClickingLinkToLocation(t,e),!r.defaultPrevented},r.prototype.applicationAllowsVisitingLocation=function(t){var e;return e=this.notifyApplicationBeforeVisitingLocation(t),!e.defaultPrevented},r.prototype.notifyApplicationAfterClickingLinkToLocation=function(t,r){return e.dispatch(\"turbolinks:click\",{target:t,data:{url:r.absoluteURL},cancelable:!0})},r.prototype.notifyApplicationBeforeVisitingLocation=function(t){return e.dispatch(\"turbolinks:before-visit\",{data:{url:t.absoluteURL},cancelable:!0})},r.prototype.notifyApplicationAfterVisitingLocation=function(t){return e.dispatch(\"turbolinks:visit\",{data:{url:t.absoluteURL}})},r.prototype.notifyApplicationBeforeCachingSnapshot=function(){return e.dispatch(\"turbolinks:before-cache\")},r.prototype.notifyApplicationBeforeRender=function(t){return e.dispatch(\"turbolinks:before-render\",{data:{newBody:t}})},r.prototype.notifyApplicationAfterRender=function(){return e.dispatch(\"turbolinks:render\")},r.prototype.notifyApplicationAfterPageLoad=function(t){return null==t&&(t={}),e.dispatch(\"turbolinks:load\",{data:{url:this.location.absoluteURL,timing:t}})},r.prototype.startVisit=function(t,e,r){var n;return null!=(n=this.currentVisit)&&n.cancel(),this.currentVisit=this.createVisit(t,e,r),this.currentVisit.start(),this.notifyApplicationAfterVisitingLocation(t)},r.prototype.createVisit=function(t,r,n){var o,i,s,a,u;return i=null!=n?n:{},a=i.restorationIdentifier,s=i.restorationData,o=i.historyChanged,u=new e.Visit(this,t,r),u.restorationIdentifier=null!=a?a:e.uuid(),u.restorationData=e.copyObject(s),u.historyChanged=o,u.referrer=this.location,u},r.prototype.visitCompleted=function(t){return this.notifyApplicationAfterPageLoad(t.getTimingMetrics())},r.prototype.clickEventIsSignificant=function(t){return!(t.defaultPrevented||t.target.isContentEditable||t.which>1||t.altKey||t.ctrlKey||t.metaKey||t.shiftKey)},r.prototype.getVisitableLinkForNode=function(t){return this.nodeIsVisitable(t)?e.closest(t,\"a[href]:not([target]):not([download])\"):void 0},r.prototype.getVisitableLocationForLink=function(t){var r;return r=new e.Location(t.getAttribute(\"href\")),this.locationIsVisitable(r)?r:void 0},r.prototype.getActionForLink=function(t){var e;return null!=(e=t.getAttribute(\"data-turbolinks-action\"))?e:\"advance\"},r.prototype.nodeIsVisitable=function(t){var r;return(r=e.closest(t,\"[data-turbolinks]\"))?\"false\"!==r.getAttribute(\"data-turbolinks\"):!0},r.prototype.locationIsVisitable=function(t){return t.isPrefixedBy(this.view.getRootLocation())&&t.isHTML()},r.prototype.getCurrentRestorationData=function(){return this.getRestorationDataForIdentifier(this.restorationIdentifier)},r.prototype.getRestorationDataForIdentifier=function(t){var e;return null!=(e=this.restorationData)[t]?e[t]:e[t]={}},r}()}.call(this),function(){!function(){var t,e;if((t=e=document.currentScript)&&!e.hasAttribute(\"data-turbolinks-suppress-warning\"))for(;t=t.parentNode;)if(t===document.body)return console.warn(\"You are loading Turbolinks from a <script> element inside the <body> element. This is probably not what you meant to do!\\n\\nLoad your application\\u2019s JavaScript bundle inside the <head> element instead. <script> elements in <body> are evaluated with each page change.\\n\\nFor more information, see: https://github.com/turbolinks/turbolinks#working-with-script-elements\\n\\n\\u2014\\u2014\\nSuppress this warning by adding a `data-turbolinks-suppress-warning` attribute to: %s\",e.outerHTML)}()}.call(this),function(){var t,r,n;e.start=function(){return r()?(null==e.controller&&(e.controller=t()),e.controller.start()):void 0},r=function(){return null==window.Turbolinks&&(window.Turbolinks=e),n()},t=function(){var t;return t=new e.Controller,t.adapter=new e.BrowserAdapter(t),t},n=function(){return window.Turbolinks===e},n()&&e.start()}.call(this)}).call(this),\"object\"==typeof module&&module.exports?module.exports=e:\"function\"==typeof define&&define.amd&&define(e)}).call(this);", "/**\n * marked - a markdown parser\n * Copyright (c) 2011-2021, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\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 = typeof globalThis !== 'undefined' ? globalThis : global || self, global.marked = factory());\n})(this, (function () { 'use strict';\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\n  function _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) _defineProperties(Constructor, staticProps);\n    return Constructor;\n  }\n\n  function _unsupportedIterableToArray(o, minLen) {\n    if (!o) return;\n    if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n    var n = Object.prototype.toString.call(o).slice(8, -1);\n    if (n === \"Object\" && o.constructor) n = o.constructor.name;\n    if (n === \"Map\" || n === \"Set\") return Array.from(o);\n    if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n  }\n\n  function _arrayLikeToArray(arr, len) {\n    if (len == null || len > arr.length) len = arr.length;\n\n    for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n    return arr2;\n  }\n\n  function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n    var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n    if (it) return (it = it.call(o)).next.bind(it);\n\n    if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n      if (it) o = it;\n      var i = 0;\n      return function () {\n        if (i >= o.length) return {\n          done: true\n        };\n        return {\n          done: false,\n          value: o[i++]\n        };\n      };\n    }\n\n    throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n\n  var defaults$5 = {exports: {}};\n\n  function getDefaults$1() {\n    return {\n      baseUrl: null,\n      breaks: false,\n      extensions: null,\n      gfm: true,\n      headerIds: true,\n      headerPrefix: '',\n      highlight: null,\n      langPrefix: 'language-',\n      mangle: true,\n      pedantic: false,\n      renderer: null,\n      sanitize: false,\n      sanitizer: null,\n      silent: false,\n      smartLists: false,\n      smartypants: false,\n      tokenizer: null,\n      walkTokens: null,\n      xhtml: false\n    };\n  }\n\n  function changeDefaults$1(newDefaults) {\n    defaults$5.exports.defaults = newDefaults;\n  }\n\n  defaults$5.exports = {\n    defaults: getDefaults$1(),\n    getDefaults: getDefaults$1,\n    changeDefaults: changeDefaults$1\n  };\n\n  /**\n   * Helpers\n   */\n  var escapeTest = /[&<>\"']/;\n  var escapeReplace = /[&<>\"']/g;\n  var escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\n  var escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\n  var escapeReplacements = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#39;'\n  };\n\n  var getEscapeReplacement = function getEscapeReplacement(ch) {\n    return escapeReplacements[ch];\n  };\n\n  function escape$2(html, encode) {\n    if (encode) {\n      if (escapeTest.test(html)) {\n        return html.replace(escapeReplace, getEscapeReplacement);\n      }\n    } else {\n      if (escapeTestNoEncode.test(html)) {\n        return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n      }\n    }\n\n    return html;\n  }\n\n  var unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\n  function unescape$1(html) {\n    // explicitly match decimal, hex, and named HTML entities\n    return html.replace(unescapeTest, function (_, n) {\n      n = n.toLowerCase();\n      if (n === 'colon') return ':';\n\n      if (n.charAt(0) === '#') {\n        return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));\n      }\n\n      return '';\n    });\n  }\n\n  var caret = /(^|[^\\[])\\^/g;\n\n  function edit$1(regex, opt) {\n    regex = regex.source || regex;\n    opt = opt || '';\n    var obj = {\n      replace: function replace(name, val) {\n        val = val.source || val;\n        val = val.replace(caret, '$1');\n        regex = regex.replace(name, val);\n        return obj;\n      },\n      getRegex: function getRegex() {\n        return new RegExp(regex, opt);\n      }\n    };\n    return obj;\n  }\n\n  var nonWordAndColonTest = /[^\\w:]/g;\n  var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\n\n  function cleanUrl$1(sanitize, base, href) {\n    if (sanitize) {\n      var prot;\n\n      try {\n        prot = decodeURIComponent(unescape$1(href)).replace(nonWordAndColonTest, '').toLowerCase();\n      } catch (e) {\n        return null;\n      }\n\n      if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n        return null;\n      }\n    }\n\n    if (base && !originIndependentUrl.test(href)) {\n      href = resolveUrl(base, href);\n    }\n\n    try {\n      href = encodeURI(href).replace(/%25/g, '%');\n    } catch (e) {\n      return null;\n    }\n\n    return href;\n  }\n\n  var baseUrls = {};\n  var justDomain = /^[^:]+:\\/*[^/]*$/;\n  var protocol = /^([^:]+:)[\\s\\S]*$/;\n  var domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\n  function resolveUrl(base, href) {\n    if (!baseUrls[' ' + base]) {\n      // we can ignore everything in base after the last slash of its path component,\n      // but we might need to add _that_\n      // https://tools.ietf.org/html/rfc3986#section-3\n      if (justDomain.test(base)) {\n        baseUrls[' ' + base] = base + '/';\n      } else {\n        baseUrls[' ' + base] = rtrim$1(base, '/', true);\n      }\n    }\n\n    base = baseUrls[' ' + base];\n    var relativeBase = base.indexOf(':') === -1;\n\n    if (href.substring(0, 2) === '//') {\n      if (relativeBase) {\n        return href;\n      }\n\n      return base.replace(protocol, '$1') + href;\n    } else if (href.charAt(0) === '/') {\n      if (relativeBase) {\n        return href;\n      }\n\n      return base.replace(domain, '$1') + href;\n    } else {\n      return base + href;\n    }\n  }\n\n  var noopTest$1 = {\n    exec: function noopTest() {}\n  };\n\n  function merge$2(obj) {\n    var i = 1,\n        target,\n        key;\n\n    for (; i < arguments.length; i++) {\n      target = arguments[i];\n\n      for (key in target) {\n        if (Object.prototype.hasOwnProperty.call(target, key)) {\n          obj[key] = target[key];\n        }\n      }\n    }\n\n    return obj;\n  }\n\n  function splitCells$1(tableRow, count) {\n    // ensure that every cell-delimiting pipe has a space\n    // before it to distinguish it from an escaped pipe\n    var row = tableRow.replace(/\\|/g, function (match, offset, str) {\n      var escaped = false,\n          curr = offset;\n\n      while (--curr >= 0 && str[curr] === '\\\\') {\n        escaped = !escaped;\n      }\n\n      if (escaped) {\n        // odd number of slashes means | is escaped\n        // so we leave it alone\n        return '|';\n      } else {\n        // add space before unescaped |\n        return ' |';\n      }\n    }),\n        cells = row.split(/ \\|/);\n    var i = 0; // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n\n    if (!cells[0].trim()) {\n      cells.shift();\n    }\n\n    if (!cells[cells.length - 1].trim()) {\n      cells.pop();\n    }\n\n    if (cells.length > count) {\n      cells.splice(count);\n    } else {\n      while (cells.length < count) {\n        cells.push('');\n      }\n    }\n\n    for (; i < cells.length; i++) {\n      // leading or trailing whitespace is ignored per the gfm spec\n      cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n    }\n\n    return cells;\n  } // Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n  // /c*$/ is vulnerable to REDOS.\n  // invert: Remove suffix of non-c chars instead. Default falsey.\n\n\n  function rtrim$1(str, c, invert) {\n    var l = str.length;\n\n    if (l === 0) {\n      return '';\n    } // Length of suffix matching the invert condition.\n\n\n    var suffLen = 0; // Step left until we fail to match the invert condition.\n\n    while (suffLen < l) {\n      var currChar = str.charAt(l - suffLen - 1);\n\n      if (currChar === c && !invert) {\n        suffLen++;\n      } else if (currChar !== c && invert) {\n        suffLen++;\n      } else {\n        break;\n      }\n    }\n\n    return str.substr(0, l - suffLen);\n  }\n\n  function findClosingBracket$1(str, b) {\n    if (str.indexOf(b[1]) === -1) {\n      return -1;\n    }\n\n    var l = str.length;\n    var level = 0,\n        i = 0;\n\n    for (; i < l; i++) {\n      if (str[i] === '\\\\') {\n        i++;\n      } else if (str[i] === b[0]) {\n        level++;\n      } else if (str[i] === b[1]) {\n        level--;\n\n        if (level < 0) {\n          return i;\n        }\n      }\n    }\n\n    return -1;\n  }\n\n  function checkSanitizeDeprecation$1(opt) {\n    if (opt && opt.sanitize && !opt.silent) {\n      console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n    }\n  } // copied from https://stackoverflow.com/a/5450113/806777\n\n\n  function repeatString$1(pattern, count) {\n    if (count < 1) {\n      return '';\n    }\n\n    var result = '';\n\n    while (count > 1) {\n      if (count & 1) {\n        result += pattern;\n      }\n\n      count >>= 1;\n      pattern += pattern;\n    }\n\n    return result + pattern;\n  }\n\n  var helpers = {\n    escape: escape$2,\n    unescape: unescape$1,\n    edit: edit$1,\n    cleanUrl: cleanUrl$1,\n    resolveUrl: resolveUrl,\n    noopTest: noopTest$1,\n    merge: merge$2,\n    splitCells: splitCells$1,\n    rtrim: rtrim$1,\n    findClosingBracket: findClosingBracket$1,\n    checkSanitizeDeprecation: checkSanitizeDeprecation$1,\n    repeatString: repeatString$1\n  };\n\n  var defaults$4 = defaults$5.exports.defaults;\n  var rtrim = helpers.rtrim,\n      splitCells = helpers.splitCells,\n      _escape = helpers.escape,\n      findClosingBracket = helpers.findClosingBracket;\n\n  function outputLink(cap, link, raw, lexer) {\n    var href = link.href;\n    var title = link.title ? _escape(link.title) : null;\n    var text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n    if (cap[0].charAt(0) !== '!') {\n      lexer.state.inLink = true;\n      var token = {\n        type: 'link',\n        raw: raw,\n        href: href,\n        title: title,\n        text: text,\n        tokens: lexer.inlineTokens(text, [])\n      };\n      lexer.state.inLink = false;\n      return token;\n    } else {\n      return {\n        type: 'image',\n        raw: raw,\n        href: href,\n        title: title,\n        text: _escape(text)\n      };\n    }\n  }\n\n  function indentCodeCompensation(raw, text) {\n    var matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n    if (matchIndentToCode === null) {\n      return text;\n    }\n\n    var indentToCode = matchIndentToCode[1];\n    return text.split('\\n').map(function (node) {\n      var matchIndentInNode = node.match(/^\\s+/);\n\n      if (matchIndentInNode === null) {\n        return node;\n      }\n\n      var indentInNode = matchIndentInNode[0];\n\n      if (indentInNode.length >= indentToCode.length) {\n        return node.slice(indentToCode.length);\n      }\n\n      return node;\n    }).join('\\n');\n  }\n  /**\n   * Tokenizer\n   */\n\n\n  var Tokenizer_1 = /*#__PURE__*/function () {\n    function Tokenizer(options) {\n      this.options = options || defaults$4;\n    }\n\n    var _proto = Tokenizer.prototype;\n\n    _proto.space = function space(src) {\n      var cap = this.rules.block.newline.exec(src);\n\n      if (cap) {\n        if (cap[0].length > 1) {\n          return {\n            type: 'space',\n            raw: cap[0]\n          };\n        }\n\n        return {\n          raw: '\\n'\n        };\n      }\n    };\n\n    _proto.code = function code(src) {\n      var cap = this.rules.block.code.exec(src);\n\n      if (cap) {\n        var text = cap[0].replace(/^ {1,4}/gm, '');\n        return {\n          type: 'code',\n          raw: cap[0],\n          codeBlockStyle: 'indented',\n          text: !this.options.pedantic ? rtrim(text, '\\n') : text\n        };\n      }\n    };\n\n    _proto.fences = function fences(src) {\n      var cap = this.rules.block.fences.exec(src);\n\n      if (cap) {\n        var raw = cap[0];\n        var text = indentCodeCompensation(raw, cap[3] || '');\n        return {\n          type: 'code',\n          raw: raw,\n          lang: cap[2] ? cap[2].trim() : cap[2],\n          text: text\n        };\n      }\n    };\n\n    _proto.heading = function heading(src) {\n      var cap = this.rules.block.heading.exec(src);\n\n      if (cap) {\n        var text = cap[2].trim(); // remove trailing #s\n\n        if (/#$/.test(text)) {\n          var trimmed = rtrim(text, '#');\n\n          if (this.options.pedantic) {\n            text = trimmed.trim();\n          } else if (!trimmed || / $/.test(trimmed)) {\n            // CommonMark requires space before trailing #s\n            text = trimmed.trim();\n          }\n        }\n\n        var token = {\n          type: 'heading',\n          raw: cap[0],\n          depth: cap[1].length,\n          text: text,\n          tokens: []\n        };\n        this.lexer.inline(token.text, token.tokens);\n        return token;\n      }\n    };\n\n    _proto.hr = function hr(src) {\n      var cap = this.rules.block.hr.exec(src);\n\n      if (cap) {\n        return {\n          type: 'hr',\n          raw: cap[0]\n        };\n      }\n    };\n\n    _proto.blockquote = function blockquote(src) {\n      var cap = this.rules.block.blockquote.exec(src);\n\n      if (cap) {\n        var text = cap[0].replace(/^ *> ?/gm, '');\n        return {\n          type: 'blockquote',\n          raw: cap[0],\n          tokens: this.lexer.blockTokens(text, []),\n          text: text\n        };\n      }\n    };\n\n    _proto.list = function list(src) {\n      var cap = this.rules.block.list.exec(src);\n\n      if (cap) {\n        var raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine, line, lines, itemContents;\n        var bull = cap[1].trim();\n        var isordered = bull.length > 1;\n        var list = {\n          type: 'list',\n          raw: '',\n          ordered: isordered,\n          start: isordered ? +bull.slice(0, -1) : '',\n          loose: false,\n          items: []\n        };\n        bull = isordered ? \"\\\\d{1,9}\\\\\" + bull.slice(-1) : \"\\\\\" + bull;\n\n        if (this.options.pedantic) {\n          bull = isordered ? bull : '[*+-]';\n        } // Get next list item\n\n\n        var itemRegex = new RegExp(\"^( {0,3}\" + bull + \")((?: [^\\\\n]*| *)(?:\\\\n[^\\\\n]*)*(?:\\\\n|$))\"); // Get each top-level item\n\n        while (src) {\n          if (this.rules.block.hr.test(src)) {\n            // End list if we encounter an HR (possibly move into itemRegex?)\n            break;\n          }\n\n          if (!(cap = itemRegex.exec(src))) {\n            break;\n          }\n\n          lines = cap[2].split('\\n');\n\n          if (this.options.pedantic) {\n            indent = 2;\n            itemContents = lines[0].trimLeft();\n          } else {\n            indent = cap[2].search(/[^ ]/); // Find first non-space char\n\n            indent = cap[1].length + (indent > 4 ? 1 : indent); // intented code blocks after 4 spaces; indent is always 1\n\n            itemContents = lines[0].slice(indent - cap[1].length);\n          }\n\n          blankLine = false;\n          raw = cap[0];\n\n          if (!lines[0] && /^ *$/.test(lines[1])) {\n            // items begin with at most one blank line\n            raw = cap[1] + lines.slice(0, 2).join('\\n') + '\\n';\n            list.loose = true;\n            lines = [];\n          }\n\n          var nextBulletRegex = new RegExp(\"^ {0,\" + Math.min(3, indent - 1) + \"}(?:[*+-]|\\\\d{1,9}[.)])\");\n\n          for (i = 1; i < lines.length; i++) {\n            line = lines[i];\n\n            if (this.options.pedantic) {\n              // Re-align to follow commonmark nesting rules\n              line = line.replace(/^ {1,4}(?=( {4})*[^ ])/g, '  ');\n            } // End list item if found start of new bullet\n\n\n            if (nextBulletRegex.test(line)) {\n              raw = cap[1] + lines.slice(0, i).join('\\n') + '\\n';\n              break;\n            } // Until we encounter a blank line, item contents do not need indentation\n\n\n            if (!blankLine) {\n              if (!line.trim()) {\n                // Check if current line is empty\n                blankLine = true;\n              } // Dedent if possible\n\n\n              if (line.search(/[^ ]/) >= indent) {\n                itemContents += '\\n' + line.slice(indent);\n              } else {\n                itemContents += '\\n' + line;\n              }\n\n              continue;\n            } // Dedent this line\n\n\n            if (line.search(/[^ ]/) >= indent || !line.trim()) {\n              itemContents += '\\n' + line.slice(indent);\n              continue;\n            } else {\n              // Line was not properly indented; end of this item\n              raw = cap[1] + lines.slice(0, i).join('\\n') + '\\n';\n              break;\n            }\n          }\n\n          if (!list.loose) {\n            // If the previous item ended with a blank line, the list is loose\n            if (endsWithBlankLine) {\n              list.loose = true;\n            } else if (/\\n *\\n *$/.test(raw)) {\n              endsWithBlankLine = true;\n            }\n          } // Check for task list items\n\n\n          if (this.options.gfm) {\n            istask = /^\\[[ xX]\\] /.exec(itemContents);\n\n            if (istask) {\n              ischecked = istask[0] !== '[ ] ';\n              itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n            }\n          }\n\n          list.items.push({\n            type: 'list_item',\n            raw: raw,\n            task: !!istask,\n            checked: ischecked,\n            loose: false,\n            text: itemContents\n          });\n          list.raw += raw;\n          src = src.slice(raw.length);\n        } // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n\n\n        list.items[list.items.length - 1].raw = raw.trimRight();\n        list.items[list.items.length - 1].text = itemContents.trimRight();\n        list.raw = list.raw.trimRight();\n        var l = list.items.length; // Item child tokens handled here at end because we needed to have the final item to trim it first\n\n        for (i = 0; i < l; i++) {\n          this.lexer.state.top = false;\n          list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n\n          if (list.items[i].tokens.some(function (t) {\n            return t.type === 'space';\n          })) {\n            list.loose = true;\n            list.items[i].loose = true;\n          }\n        }\n\n        return list;\n      }\n    };\n\n    _proto.html = function html(src) {\n      var cap = this.rules.block.html.exec(src);\n\n      if (cap) {\n        var token = {\n          type: 'html',\n          raw: cap[0],\n          pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n          text: cap[0]\n        };\n\n        if (this.options.sanitize) {\n          token.type = 'paragraph';\n          token.text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]);\n          token.tokens = [];\n          this.lexer.inline(token.text, token.tokens);\n        }\n\n        return token;\n      }\n    };\n\n    _proto.def = function def(src) {\n      var cap = this.rules.block.def.exec(src);\n\n      if (cap) {\n        if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n        var tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n        return {\n          type: 'def',\n          tag: tag,\n          raw: cap[0],\n          href: cap[2],\n          title: cap[3]\n        };\n      }\n    };\n\n    _proto.table = function table(src) {\n      var cap = this.rules.block.table.exec(src);\n\n      if (cap) {\n        var item = {\n          type: 'table',\n          header: splitCells(cap[1]).map(function (c) {\n            return {\n              text: c\n            };\n          }),\n          align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n          rows: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n        };\n\n        if (item.header.length === item.align.length) {\n          item.raw = cap[0];\n          var l = item.align.length;\n          var i, j, k, row;\n\n          for (i = 0; i < l; i++) {\n            if (/^ *-+: *$/.test(item.align[i])) {\n              item.align[i] = 'right';\n            } else if (/^ *:-+: *$/.test(item.align[i])) {\n              item.align[i] = 'center';\n            } else if (/^ *:-+ *$/.test(item.align[i])) {\n              item.align[i] = 'left';\n            } else {\n              item.align[i] = null;\n            }\n          }\n\n          l = item.rows.length;\n\n          for (i = 0; i < l; i++) {\n            item.rows[i] = splitCells(item.rows[i], item.header.length).map(function (c) {\n              return {\n                text: c\n              };\n            });\n          } // parse child tokens inside headers and cells\n          // header child tokens\n\n\n          l = item.header.length;\n\n          for (j = 0; j < l; j++) {\n            item.header[j].tokens = [];\n            this.lexer.inlineTokens(item.header[j].text, item.header[j].tokens);\n          } // cell child tokens\n\n\n          l = item.rows.length;\n\n          for (j = 0; j < l; j++) {\n            row = item.rows[j];\n\n            for (k = 0; k < row.length; k++) {\n              row[k].tokens = [];\n              this.lexer.inlineTokens(row[k].text, row[k].tokens);\n            }\n          }\n\n          return item;\n        }\n      }\n    };\n\n    _proto.lheading = function lheading(src) {\n      var cap = this.rules.block.lheading.exec(src);\n\n      if (cap) {\n        var token = {\n          type: 'heading',\n          raw: cap[0],\n          depth: cap[2].charAt(0) === '=' ? 1 : 2,\n          text: cap[1],\n          tokens: []\n        };\n        this.lexer.inline(token.text, token.tokens);\n        return token;\n      }\n    };\n\n    _proto.paragraph = function paragraph(src) {\n      var cap = this.rules.block.paragraph.exec(src);\n\n      if (cap) {\n        var token = {\n          type: 'paragraph',\n          raw: cap[0],\n          text: cap[1].charAt(cap[1].length - 1) === '\\n' ? cap[1].slice(0, -1) : cap[1],\n          tokens: []\n        };\n        this.lexer.inline(token.text, token.tokens);\n        return token;\n      }\n    };\n\n    _proto.text = function text(src) {\n      var cap = this.rules.block.text.exec(src);\n\n      if (cap) {\n        var token = {\n          type: 'text',\n          raw: cap[0],\n          text: cap[0],\n          tokens: []\n        };\n        this.lexer.inline(token.text, token.tokens);\n        return token;\n      }\n    };\n\n    _proto.escape = function escape(src) {\n      var cap = this.rules.inline.escape.exec(src);\n\n      if (cap) {\n        return {\n          type: 'escape',\n          raw: cap[0],\n          text: _escape(cap[1])\n        };\n      }\n    };\n\n    _proto.tag = function tag(src) {\n      var cap = this.rules.inline.tag.exec(src);\n\n      if (cap) {\n        if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {\n          this.lexer.state.inLink = true;\n        } else if (this.lexer.state.inLink && /^<\\/a>/i.test(cap[0])) {\n          this.lexer.state.inLink = false;\n        }\n\n        if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n          this.lexer.state.inRawBlock = true;\n        } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n          this.lexer.state.inRawBlock = false;\n        }\n\n        return {\n          type: this.options.sanitize ? 'text' : 'html',\n          raw: cap[0],\n          inLink: this.lexer.state.inLink,\n          inRawBlock: this.lexer.state.inRawBlock,\n          text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]) : cap[0]\n        };\n      }\n    };\n\n    _proto.link = function link(src) {\n      var cap = this.rules.inline.link.exec(src);\n\n      if (cap) {\n        var trimmedUrl = cap[2].trim();\n\n        if (!this.options.pedantic && /^</.test(trimmedUrl)) {\n          // commonmark requires matching angle brackets\n          if (!/>$/.test(trimmedUrl)) {\n            return;\n          } // ending angle bracket cannot be escaped\n\n\n          var rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n\n          if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n            return;\n          }\n        } else {\n          // find closing parenthesis\n          var lastParenIndex = findClosingBracket(cap[2], '()');\n\n          if (lastParenIndex > -1) {\n            var start = cap[0].indexOf('!') === 0 ? 5 : 4;\n            var linkLen = start + cap[1].length + lastParenIndex;\n            cap[2] = cap[2].substring(0, lastParenIndex);\n            cap[0] = cap[0].substring(0, linkLen).trim();\n            cap[3] = '';\n          }\n        }\n\n        var href = cap[2];\n        var title = '';\n\n        if (this.options.pedantic) {\n          // split pedantic href and title\n          var link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n          if (link) {\n            href = link[1];\n            title = link[3];\n          }\n        } else {\n          title = cap[3] ? cap[3].slice(1, -1) : '';\n        }\n\n        href = href.trim();\n\n        if (/^</.test(href)) {\n          if (this.options.pedantic && !/>$/.test(trimmedUrl)) {\n            // pedantic allows starting angle bracket without ending angle bracket\n            href = href.slice(1);\n          } else {\n            href = href.slice(1, -1);\n          }\n        }\n\n        return outputLink(cap, {\n          href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n          title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n        }, cap[0], this.lexer);\n      }\n    };\n\n    _proto.reflink = function reflink(src, links) {\n      var cap;\n\n      if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {\n        var link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n        link = links[link.toLowerCase()];\n\n        if (!link || !link.href) {\n          var text = cap[0].charAt(0);\n          return {\n            type: 'text',\n            raw: text,\n            text: text\n          };\n        }\n\n        return outputLink(cap, link, cap[0], this.lexer);\n      }\n    };\n\n    _proto.emStrong = function emStrong(src, maskedSrc, prevChar) {\n      if (prevChar === void 0) {\n        prevChar = '';\n      }\n\n      var match = this.rules.inline.emStrong.lDelim.exec(src);\n      if (!match) return; // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n\n      if (match[3] && prevChar.match(/(?:[0-9A-Za-z\\xAA\\xB2\\xB3\\xB5\\xB9\\xBA\\xBC-\\xBE\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u0660-\\u0669\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07C0-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08C7\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0966-\\u096F\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09E6-\\u09F1\\u09F4-\\u09F9\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AE6-\\u0AEF\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B6F\\u0B71-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0BE6-\\u0BF2\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D58-\\u0D61\\u0D66-\\u0D78\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DE6-\\u0DEF\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F20-\\u0F33\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F-\\u1049\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u1090-\\u1099\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B50-\\u1B59\\u1B83-\\u1BA0\\u1BAE-\\u1BE5\\u1C00-\\u1C23\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2070\\u2071\\u2074-\\u2079\\u207F-\\u2089\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2150-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2CFD\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3192-\\u3195\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\u3400-\\u4DBF\\u4E00-\\u9FFC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7BF\\uA7C2-\\uA7CA\\uA7F5-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA830-\\uA835\\uA840-\\uA873\\uA882-\\uA8B3\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA900-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF-\\uA9D9\\uA9E0-\\uA9E4\\uA9E6-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE1-\\uDEFB\\uDF00-\\uDF23\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC58-\\uDC76\\uDC79-\\uDC9E\\uDCA7-\\uDCAF\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDCFB-\\uDD1B\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBC-\\uDDCF\\uDDD2-\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE40-\\uDE48\\uDE60-\\uDE7E\\uDE80-\\uDE9F\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDEEB-\\uDEEF\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF58-\\uDF72\\uDF78-\\uDF91\\uDFA9-\\uDFAF]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDCFA-\\uDD23\\uDD30-\\uDD39\\uDE60-\\uDE7E\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF27\\uDF30-\\uDF45\\uDF51-\\uDF54\\uDFB0-\\uDFCB\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC52-\\uDC6F\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD03-\\uDD26\\uDD36-\\uDD3F\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDD0-\\uDDDA\\uDDDC\\uDDE1-\\uDDF4\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDEF0-\\uDEF9\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC50-\\uDC59\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEAA\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF30-\\uDF3B]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCF2\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC50-\\uDC6C\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF2\\uDFB0\\uDFC0-\\uDFD4]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF5B-\\uDF61\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE96\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82C[\\uDC00-\\uDD1E\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD834[\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDEC0-\\uDEEB\\uDEF0-\\uDEF9]|\\uD83A[\\uDC00-\\uDCC4\\uDCC7-\\uDCCF\\uDD00-\\uDD43\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83C[\\uDD00-\\uDD0C]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDD\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])/)) return;\n      var nextChar = match[1] || match[2] || '';\n\n      if (!nextChar || nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar))) {\n        var lLength = match[0].length - 1;\n        var rDelim,\n            rLength,\n            delimTotal = lLength,\n            midDelimTotal = 0;\n        var endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n        endReg.lastIndex = 0; // Clip maskedSrc to same section of string as src (move to lexer?)\n\n        maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n        while ((match = endReg.exec(maskedSrc)) != null) {\n          rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n          if (!rDelim) continue; // skip single * in __abc*abc__\n\n          rLength = rDelim.length;\n\n          if (match[3] || match[4]) {\n            // found another Left Delim\n            delimTotal += rLength;\n            continue;\n          } else if (match[5] || match[6]) {\n            // either Left or Right Delim\n            if (lLength % 3 && !((lLength + rLength) % 3)) {\n              midDelimTotal += rLength;\n              continue; // CommonMark Emphasis Rules 9-10\n            }\n          }\n\n          delimTotal -= rLength;\n          if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n          // Remove extra characters. *a*** -> *a*\n\n          rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal); // Create `em` if smallest delimiter has odd char count. *a***\n\n          if (Math.min(lLength, rLength) % 2) {\n            var _text = src.slice(1, lLength + match.index + rLength);\n\n            return {\n              type: 'em',\n              raw: src.slice(0, lLength + match.index + rLength + 1),\n              text: _text,\n              tokens: this.lexer.inlineTokens(_text, [])\n            };\n          } // Create 'strong' if smallest delimiter has even char count. **a***\n\n\n          var text = src.slice(2, lLength + match.index + rLength - 1);\n          return {\n            type: 'strong',\n            raw: src.slice(0, lLength + match.index + rLength + 1),\n            text: text,\n            tokens: this.lexer.inlineTokens(text, [])\n          };\n        }\n      }\n    };\n\n    _proto.codespan = function codespan(src) {\n      var cap = this.rules.inline.code.exec(src);\n\n      if (cap) {\n        var text = cap[2].replace(/\\n/g, ' ');\n        var hasNonSpaceChars = /[^ ]/.test(text);\n        var hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n\n        if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n          text = text.substring(1, text.length - 1);\n        }\n\n        text = _escape(text, true);\n        return {\n          type: 'codespan',\n          raw: cap[0],\n          text: text\n        };\n      }\n    };\n\n    _proto.br = function br(src) {\n      var cap = this.rules.inline.br.exec(src);\n\n      if (cap) {\n        return {\n          type: 'br',\n          raw: cap[0]\n        };\n      }\n    };\n\n    _proto.del = function del(src) {\n      var cap = this.rules.inline.del.exec(src);\n\n      if (cap) {\n        return {\n          type: 'del',\n          raw: cap[0],\n          text: cap[2],\n          tokens: this.lexer.inlineTokens(cap[2], [])\n        };\n      }\n    };\n\n    _proto.autolink = function autolink(src, mangle) {\n      var cap = this.rules.inline.autolink.exec(src);\n\n      if (cap) {\n        var text, href;\n\n        if (cap[2] === '@') {\n          text = _escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n          href = 'mailto:' + text;\n        } else {\n          text = _escape(cap[1]);\n          href = text;\n        }\n\n        return {\n          type: 'link',\n          raw: cap[0],\n          text: text,\n          href: href,\n          tokens: [{\n            type: 'text',\n            raw: text,\n            text: text\n          }]\n        };\n      }\n    };\n\n    _proto.url = function url(src, mangle) {\n      var cap;\n\n      if (cap = this.rules.inline.url.exec(src)) {\n        var text, href;\n\n        if (cap[2] === '@') {\n          text = _escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n          href = 'mailto:' + text;\n        } else {\n          // do extended autolink path validation\n          var prevCapZero;\n\n          do {\n            prevCapZero = cap[0];\n            cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n          } while (prevCapZero !== cap[0]);\n\n          text = _escape(cap[0]);\n\n          if (cap[1] === 'www.') {\n            href = 'http://' + text;\n          } else {\n            href = text;\n          }\n        }\n\n        return {\n          type: 'link',\n          raw: cap[0],\n          text: text,\n          href: href,\n          tokens: [{\n            type: 'text',\n            raw: text,\n            text: text\n          }]\n        };\n      }\n    };\n\n    _proto.inlineText = function inlineText(src, smartypants) {\n      var cap = this.rules.inline.text.exec(src);\n\n      if (cap) {\n        var text;\n\n        if (this.lexer.state.inRawBlock) {\n          text = this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]) : cap[0];\n        } else {\n          text = _escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n        }\n\n        return {\n          type: 'text',\n          raw: cap[0],\n          text: text\n        };\n      }\n    };\n\n    return Tokenizer;\n  }();\n\n  var noopTest = helpers.noopTest,\n      edit = helpers.edit,\n      merge$1 = helpers.merge;\n  /**\n   * Block-Level Grammar\n   */\n\n  var block$1 = {\n    newline: /^(?: *(?:\\n|$))+/,\n    code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n    fences: /^ {0,3}(`{3,}(?=[^`\\n]*\\n)|~{3,})([^\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n    hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)/,\n    heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n    blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n    list: /^( {0,3}bull)( [^\\n]+?)?(?:\\n|$)/,\n    html: '^ {0,3}(?:' // optional indentation\n    + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n    + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n    + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n    + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n    + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n    + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n    + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n    + '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n    + ')',\n    def: /^ {0,3}\\[(label)\\]: *\\n? *<?([^\\s>]+)>?(?:(?: +\\n? *| *\\n *)(title))? *(?:\\n+|$)/,\n    table: noopTest,\n    lheading: /^([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n    // regex template, placeholders will be replaced according to different paragraph\n    // interruption rules of commonmark and the original markdown spec:\n    _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html| +\\n)[^\\n]+)*)/,\n    text: /^[^\\n]+/\n  };\n  block$1._label = /(?!\\s*\\])(?:\\\\[\\[\\]]|[^\\[\\]])+/;\n  block$1._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\n  block$1.def = edit(block$1.def).replace('label', block$1._label).replace('title', block$1._title).getRegex();\n  block$1.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\n  block$1.listItemStart = edit(/^( *)(bull) */).replace('bull', block$1.bullet).getRegex();\n  block$1.list = edit(block$1.list).replace(/bull/g, block$1.bullet).replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))').replace('def', '\\\\n+(?=' + block$1.def.source + ')').getRegex();\n  block$1._tag = 'address|article|aside|base|basefont|blockquote|body|caption' + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr' + '|track|ul';\n  block$1._comment = /<!--(?!-?>)[\\s\\S]*?(?:-->|$)/;\n  block$1.html = edit(block$1.html, 'i').replace('comment', block$1._comment).replace('tag', block$1._tag).replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex();\n  block$1.paragraph = edit(block$1._paragraph).replace('hr', block$1.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n  .replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n  .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)').replace('tag', block$1._tag) // pars can be interrupted by type (6) html blocks\n  .getRegex();\n  block$1.blockquote = edit(block$1.blockquote).replace('paragraph', block$1.paragraph).getRegex();\n  /**\n   * Normal Block Grammar\n   */\n\n  block$1.normal = merge$1({}, block$1);\n  /**\n   * GFM Block Grammar\n   */\n\n  block$1.gfm = merge$1({}, block$1.normal, {\n    table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n    + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n    + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n\n  });\n  block$1.gfm.table = edit(block$1.gfm.table).replace('hr', block$1.hr).replace('heading', ' {0,3}#{1,6} ').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n  .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)').replace('tag', block$1._tag) // tables can be interrupted by type (6) html blocks\n  .getRegex();\n  /**\n   * Pedantic grammar (original John Gruber's loose markdown specification)\n   */\n\n  block$1.pedantic = merge$1({}, block$1.normal, {\n    html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)' + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n    + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))').replace('comment', block$1._comment).replace(/tag/g, '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b').getRegex(),\n    def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n    heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n    fences: noopTest,\n    // fences not supported\n    paragraph: edit(block$1.normal._paragraph).replace('hr', block$1.hr).replace('heading', ' *#{1,6} *[^\\n]').replace('lheading', block$1.lheading).replace('blockquote', ' {0,3}>').replace('|fences', '').replace('|list', '').replace('|html', '').getRegex()\n  });\n  /**\n   * Inline-Level Grammar\n   */\n\n  var inline$1 = {\n    escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n    autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n    url: noopTest,\n    tag: '^comment' + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n    + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n    + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n    + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n    + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>',\n    // CDATA section\n    link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n    reflink: /^!?\\[(label)\\]\\[(?!\\s*\\])((?:\\\\[\\[\\]]?|[^\\[\\]\\\\])+)\\]/,\n    nolink: /^!?\\[(?!\\s*\\])((?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]|[^\\[\\]])*)\\](?:\\[\\])?/,\n    reflinkSearch: 'reflink|nolink(?!\\\\()',\n    emStrong: {\n      lDelim: /^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,\n      //        (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left.  (5) and (6) can be either Left or Right.\n      //        () Skip orphan delim inside strong    (1) #***                (2) a***#, a***                   (3) #***a, ***a                 (4) ***#              (5) #***#                 (6) a***a\n      rDelimAst: /^[^_*]*?\\_\\_[^_*]*?\\*[^_*]*?(?=\\_\\_)|[punct_](\\*+)(?=[\\s]|$)|[^punct*_\\s](\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|[^punct*_\\s](\\*+)(?=[^punct*_\\s])/,\n      rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?\\_[^_*]*?(?=\\*\\*)|[punct*](\\_+)(?=[\\s]|$)|[^punct*_\\s](\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/ // ^- Not allowed for _\n\n    },\n    code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n    br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n    del: noopTest,\n    text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,\n    punctuation: /^([\\spunctuation])/\n  }; // list of punctuation marks from CommonMark spec\n  // without * and _ to handle the different emphasis markers * and _\n\n  inline$1._punctuation = '!\"#$%&\\'()+\\\\-.,/:;<=>?@\\\\[\\\\]`^{|}~';\n  inline$1.punctuation = edit(inline$1.punctuation).replace(/punctuation/g, inline$1._punctuation).getRegex(); // sequences em should skip over [title](link), `code`, <html>\n\n  inline$1.blockSkip = /\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>/g;\n  inline$1.escapedEmSt = /\\\\\\*|\\\\_/g;\n  inline$1._comment = edit(block$1._comment).replace('(?:-->|$)', '-->').getRegex();\n  inline$1.emStrong.lDelim = edit(inline$1.emStrong.lDelim).replace(/punct/g, inline$1._punctuation).getRegex();\n  inline$1.emStrong.rDelimAst = edit(inline$1.emStrong.rDelimAst, 'g').replace(/punct/g, inline$1._punctuation).getRegex();\n  inline$1.emStrong.rDelimUnd = edit(inline$1.emStrong.rDelimUnd, 'g').replace(/punct/g, inline$1._punctuation).getRegex();\n  inline$1._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n  inline$1._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\n  inline$1._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\n  inline$1.autolink = edit(inline$1.autolink).replace('scheme', inline$1._scheme).replace('email', inline$1._email).getRegex();\n  inline$1._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n  inline$1.tag = edit(inline$1.tag).replace('comment', inline$1._comment).replace('attribute', inline$1._attribute).getRegex();\n  inline$1._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\n  inline$1._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\n  inline$1._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n  inline$1.link = edit(inline$1.link).replace('label', inline$1._label).replace('href', inline$1._href).replace('title', inline$1._title).getRegex();\n  inline$1.reflink = edit(inline$1.reflink).replace('label', inline$1._label).getRegex();\n  inline$1.reflinkSearch = edit(inline$1.reflinkSearch, 'g').replace('reflink', inline$1.reflink).replace('nolink', inline$1.nolink).getRegex();\n  /**\n   * Normal Inline Grammar\n   */\n\n  inline$1.normal = merge$1({}, inline$1);\n  /**\n   * Pedantic Inline Grammar\n   */\n\n  inline$1.pedantic = merge$1({}, inline$1.normal, {\n    strong: {\n      start: /^__|\\*\\*/,\n      middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n      endAst: /\\*\\*(?!\\*)/g,\n      endUnd: /__(?!_)/g\n    },\n    em: {\n      start: /^_|\\*/,\n      middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n      endAst: /\\*(?!\\*)/g,\n      endUnd: /_(?!_)/g\n    },\n    link: edit(/^!?\\[(label)\\]\\((.*?)\\)/).replace('label', inline$1._label).getRegex(),\n    reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace('label', inline$1._label).getRegex()\n  });\n  /**\n   * GFM Inline Grammar\n   */\n\n  inline$1.gfm = merge$1({}, inline$1.normal, {\n    escape: edit(inline$1.escape).replace('])', '~|])').getRegex(),\n    _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n    url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n    _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n    del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n    text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n  });\n  inline$1.gfm.url = edit(inline$1.gfm.url, 'i').replace('email', inline$1.gfm._extended_email).getRegex();\n  /**\n   * GFM + Line Breaks Inline Grammar\n   */\n\n  inline$1.breaks = merge$1({}, inline$1.gfm, {\n    br: edit(inline$1.br).replace('{2,}', '*').getRegex(),\n    text: edit(inline$1.gfm.text).replace('\\\\b_', '\\\\b_| {2,}\\\\n').replace(/\\{2,\\}/g, '*').getRegex()\n  });\n  var rules = {\n    block: block$1,\n    inline: inline$1\n  };\n\n  var Tokenizer$1 = Tokenizer_1;\n  var defaults$3 = defaults$5.exports.defaults;\n  var block = rules.block,\n      inline = rules.inline;\n  var repeatString = helpers.repeatString;\n  /**\n   * smartypants text replacement\n   */\n\n  function smartypants(text) {\n    return text // em-dashes\n    .replace(/---/g, \"\\u2014\") // en-dashes\n    .replace(/--/g, \"\\u2013\") // opening singles\n    .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, \"$1\\u2018\") // closing singles & apostrophes\n    .replace(/'/g, \"\\u2019\") // opening doubles\n    .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, \"$1\\u201C\") // closing doubles\n    .replace(/\"/g, \"\\u201D\") // ellipses\n    .replace(/\\.{3}/g, \"\\u2026\");\n  }\n  /**\n   * mangle email addresses\n   */\n\n\n  function mangle(text) {\n    var out = '',\n        i,\n        ch;\n    var l = text.length;\n\n    for (i = 0; i < l; i++) {\n      ch = text.charCodeAt(i);\n\n      if (Math.random() > 0.5) {\n        ch = 'x' + ch.toString(16);\n      }\n\n      out += '&#' + ch + ';';\n    }\n\n    return out;\n  }\n  /**\n   * Block Lexer\n   */\n\n\n  var Lexer_1 = /*#__PURE__*/function () {\n    function Lexer(options) {\n      this.tokens = [];\n      this.tokens.links = Object.create(null);\n      this.options = options || defaults$3;\n      this.options.tokenizer = this.options.tokenizer || new Tokenizer$1();\n      this.tokenizer = this.options.tokenizer;\n      this.tokenizer.options = this.options;\n      this.tokenizer.lexer = this;\n      this.inlineQueue = [];\n      this.state = {\n        inLink: false,\n        inRawBlock: false,\n        top: true\n      };\n      var rules = {\n        block: block.normal,\n        inline: inline.normal\n      };\n\n      if (this.options.pedantic) {\n        rules.block = block.pedantic;\n        rules.inline = inline.pedantic;\n      } else if (this.options.gfm) {\n        rules.block = block.gfm;\n\n        if (this.options.breaks) {\n          rules.inline = inline.breaks;\n        } else {\n          rules.inline = inline.gfm;\n        }\n      }\n\n      this.tokenizer.rules = rules;\n    }\n    /**\n     * Expose Rules\n     */\n\n\n    /**\n     * Static Lex Method\n     */\n    Lexer.lex = function lex(src, options) {\n      var lexer = new Lexer(options);\n      return lexer.lex(src);\n    }\n    /**\n     * Static Lex Inline Method\n     */\n    ;\n\n    Lexer.lexInline = function lexInline(src, options) {\n      var lexer = new Lexer(options);\n      return lexer.inlineTokens(src);\n    }\n    /**\n     * Preprocessing\n     */\n    ;\n\n    var _proto = Lexer.prototype;\n\n    _proto.lex = function lex(src) {\n      src = src.replace(/\\r\\n|\\r/g, '\\n').replace(/\\t/g, '    ');\n      this.blockTokens(src, this.tokens);\n      var next;\n\n      while (next = this.inlineQueue.shift()) {\n        this.inlineTokens(next.src, next.tokens);\n      }\n\n      return this.tokens;\n    }\n    /**\n     * Lexing\n     */\n    ;\n\n    _proto.blockTokens = function blockTokens(src, tokens) {\n      var _this = this;\n\n      if (tokens === void 0) {\n        tokens = [];\n      }\n\n      if (this.options.pedantic) {\n        src = src.replace(/^ +$/gm, '');\n      }\n\n      var token, lastToken, cutSrc, lastParagraphClipped;\n\n      while (src) {\n        if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some(function (extTokenizer) {\n          if (token = extTokenizer.call({\n            lexer: _this\n          }, src, tokens)) {\n            src = src.substring(token.raw.length);\n            tokens.push(token);\n            return true;\n          }\n\n          return false;\n        })) {\n          continue;\n        } // newline\n\n\n        if (token = this.tokenizer.space(src)) {\n          src = src.substring(token.raw.length);\n\n          if (token.type) {\n            tokens.push(token);\n          }\n\n          continue;\n        } // code\n\n\n        if (token = this.tokenizer.code(src)) {\n          src = src.substring(token.raw.length);\n          lastToken = tokens[tokens.length - 1]; // An indented code block cannot interrupt a paragraph.\n\n          if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n            lastToken.raw += '\\n' + token.raw;\n            lastToken.text += '\\n' + token.text;\n            this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n          } else {\n            tokens.push(token);\n          }\n\n          continue;\n        } // fences\n\n\n        if (token = this.tokenizer.fences(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // heading\n\n\n        if (token = this.tokenizer.heading(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // hr\n\n\n        if (token = this.tokenizer.hr(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // blockquote\n\n\n        if (token = this.tokenizer.blockquote(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // list\n\n\n        if (token = this.tokenizer.list(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // html\n\n\n        if (token = this.tokenizer.html(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // def\n\n\n        if (token = this.tokenizer.def(src)) {\n          src = src.substring(token.raw.length);\n          lastToken = tokens[tokens.length - 1];\n\n          if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n            lastToken.raw += '\\n' + token.raw;\n            lastToken.text += '\\n' + token.raw;\n            this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n          } else if (!this.tokens.links[token.tag]) {\n            this.tokens.links[token.tag] = {\n              href: token.href,\n              title: token.title\n            };\n          }\n\n          continue;\n        } // table (gfm)\n\n\n        if (token = this.tokenizer.table(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // lheading\n\n\n        if (token = this.tokenizer.lheading(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // top-level paragraph\n        // prevent paragraph consuming extensions by clipping 'src' to extension start\n\n\n        cutSrc = src;\n\n        if (this.options.extensions && this.options.extensions.startBlock) {\n          (function () {\n            var startIndex = Infinity;\n            var tempSrc = src.slice(1);\n            var tempStart = void 0;\n\n            _this.options.extensions.startBlock.forEach(function (getStartIndex) {\n              tempStart = getStartIndex.call({\n                lexer: this\n              }, tempSrc);\n\n              if (typeof tempStart === 'number' && tempStart >= 0) {\n                startIndex = Math.min(startIndex, tempStart);\n              }\n            });\n\n            if (startIndex < Infinity && startIndex >= 0) {\n              cutSrc = src.substring(0, startIndex + 1);\n            }\n          })();\n        }\n\n        if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n          lastToken = tokens[tokens.length - 1];\n\n          if (lastParagraphClipped && lastToken.type === 'paragraph') {\n            lastToken.raw += '\\n' + token.raw;\n            lastToken.text += '\\n' + token.text;\n            this.inlineQueue.pop();\n            this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n          } else {\n            tokens.push(token);\n          }\n\n          lastParagraphClipped = cutSrc.length !== src.length;\n          src = src.substring(token.raw.length);\n          continue;\n        } // text\n\n\n        if (token = this.tokenizer.text(src)) {\n          src = src.substring(token.raw.length);\n          lastToken = tokens[tokens.length - 1];\n\n          if (lastToken && lastToken.type === 'text') {\n            lastToken.raw += '\\n' + token.raw;\n            lastToken.text += '\\n' + token.text;\n            this.inlineQueue.pop();\n            this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n          } else {\n            tokens.push(token);\n          }\n\n          continue;\n        }\n\n        if (src) {\n          var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n          if (this.options.silent) {\n            console.error(errMsg);\n            break;\n          } else {\n            throw new Error(errMsg);\n          }\n        }\n      }\n\n      this.state.top = true;\n      return tokens;\n    };\n\n    _proto.inline = function inline(src, tokens) {\n      this.inlineQueue.push({\n        src: src,\n        tokens: tokens\n      });\n    }\n    /**\n     * Lexing/Compiling\n     */\n    ;\n\n    _proto.inlineTokens = function inlineTokens(src, tokens) {\n      var _this2 = this;\n\n      if (tokens === void 0) {\n        tokens = [];\n      }\n\n      var token, lastToken, cutSrc; // String with links masked to avoid interference with em and strong\n\n      var maskedSrc = src;\n      var match;\n      var keepPrevChar, prevChar; // Mask out reflinks\n\n      if (this.tokens.links) {\n        var links = Object.keys(this.tokens.links);\n\n        if (links.length > 0) {\n          while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n            if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n              maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n            }\n          }\n        }\n      } // Mask out other blocks\n\n\n      while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n        maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n      } // Mask out escaped em & strong delimiters\n\n\n      while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {\n        maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);\n      }\n\n      while (src) {\n        if (!keepPrevChar) {\n          prevChar = '';\n        }\n\n        keepPrevChar = false; // extensions\n\n        if (this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some(function (extTokenizer) {\n          if (token = extTokenizer.call({\n            lexer: _this2\n          }, src, tokens)) {\n            src = src.substring(token.raw.length);\n            tokens.push(token);\n            return true;\n          }\n\n          return false;\n        })) {\n          continue;\n        } // escape\n\n\n        if (token = this.tokenizer.escape(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // tag\n\n\n        if (token = this.tokenizer.tag(src)) {\n          src = src.substring(token.raw.length);\n          lastToken = tokens[tokens.length - 1];\n\n          if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n            lastToken.raw += token.raw;\n            lastToken.text += token.text;\n          } else {\n            tokens.push(token);\n          }\n\n          continue;\n        } // link\n\n\n        if (token = this.tokenizer.link(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // reflink, nolink\n\n\n        if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n          src = src.substring(token.raw.length);\n          lastToken = tokens[tokens.length - 1];\n\n          if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n            lastToken.raw += token.raw;\n            lastToken.text += token.text;\n          } else {\n            tokens.push(token);\n          }\n\n          continue;\n        } // em & strong\n\n\n        if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // code\n\n\n        if (token = this.tokenizer.codespan(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // br\n\n\n        if (token = this.tokenizer.br(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // del (gfm)\n\n\n        if (token = this.tokenizer.del(src)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // autolink\n\n\n        if (token = this.tokenizer.autolink(src, mangle)) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // url (gfm)\n\n\n        if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n          src = src.substring(token.raw.length);\n          tokens.push(token);\n          continue;\n        } // text\n        // prevent inlineText consuming extensions by clipping 'src' to extension start\n\n\n        cutSrc = src;\n\n        if (this.options.extensions && this.options.extensions.startInline) {\n          (function () {\n            var startIndex = Infinity;\n            var tempSrc = src.slice(1);\n            var tempStart = void 0;\n\n            _this2.options.extensions.startInline.forEach(function (getStartIndex) {\n              tempStart = getStartIndex.call({\n                lexer: this\n              }, tempSrc);\n\n              if (typeof tempStart === 'number' && tempStart >= 0) {\n                startIndex = Math.min(startIndex, tempStart);\n              }\n            });\n\n            if (startIndex < Infinity && startIndex >= 0) {\n              cutSrc = src.substring(0, startIndex + 1);\n            }\n          })();\n        }\n\n        if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n          src = src.substring(token.raw.length);\n\n          if (token.raw.slice(-1) !== '_') {\n            // Track prevChar before string of ____ started\n            prevChar = token.raw.slice(-1);\n          }\n\n          keepPrevChar = true;\n          lastToken = tokens[tokens.length - 1];\n\n          if (lastToken && lastToken.type === 'text') {\n            lastToken.raw += token.raw;\n            lastToken.text += token.text;\n          } else {\n            tokens.push(token);\n          }\n\n          continue;\n        }\n\n        if (src) {\n          var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n\n          if (this.options.silent) {\n            console.error(errMsg);\n            break;\n          } else {\n            throw new Error(errMsg);\n          }\n        }\n      }\n\n      return tokens;\n    };\n\n    _createClass(Lexer, null, [{\n      key: \"rules\",\n      get: function get() {\n        return {\n          block: block,\n          inline: inline\n        };\n      }\n    }]);\n\n    return Lexer;\n  }();\n\n  var defaults$2 = defaults$5.exports.defaults;\n  var cleanUrl = helpers.cleanUrl,\n      escape$1 = helpers.escape;\n  /**\n   * Renderer\n   */\n\n  var Renderer_1 = /*#__PURE__*/function () {\n    function Renderer(options) {\n      this.options = options || defaults$2;\n    }\n\n    var _proto = Renderer.prototype;\n\n    _proto.code = function code(_code, infostring, escaped) {\n      var lang = (infostring || '').match(/\\S*/)[0];\n\n      if (this.options.highlight) {\n        var out = this.options.highlight(_code, lang);\n\n        if (out != null && out !== _code) {\n          escaped = true;\n          _code = out;\n        }\n      }\n\n      _code = _code.replace(/\\n$/, '') + '\\n';\n\n      if (!lang) {\n        return '<pre><code>' + (escaped ? _code : escape$1(_code, true)) + '</code></pre>\\n';\n      }\n\n      return '<pre><code class=\"' + this.options.langPrefix + escape$1(lang, true) + '\">' + (escaped ? _code : escape$1(_code, true)) + '</code></pre>\\n';\n    };\n\n    _proto.blockquote = function blockquote(quote) {\n      return '<blockquote>\\n' + quote + '</blockquote>\\n';\n    };\n\n    _proto.html = function html(_html) {\n      return _html;\n    };\n\n    _proto.heading = function heading(text, level, raw, slugger) {\n      if (this.options.headerIds) {\n        return '<h' + level + ' id=\"' + this.options.headerPrefix + slugger.slug(raw) + '\">' + text + '</h' + level + '>\\n';\n      } // ignore IDs\n\n\n      return '<h' + level + '>' + text + '</h' + level + '>\\n';\n    };\n\n    _proto.hr = function hr() {\n      return this.options.xhtml ? '<hr/>\\n' : '<hr>\\n';\n    };\n\n    _proto.list = function list(body, ordered, start) {\n      var type = ordered ? 'ol' : 'ul',\n          startatt = ordered && start !== 1 ? ' start=\"' + start + '\"' : '';\n      return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n    };\n\n    _proto.listitem = function listitem(text) {\n      return '<li>' + text + '</li>\\n';\n    };\n\n    _proto.checkbox = function checkbox(checked) {\n      return '<input ' + (checked ? 'checked=\"\" ' : '') + 'disabled=\"\" type=\"checkbox\"' + (this.options.xhtml ? ' /' : '') + '> ';\n    };\n\n    _proto.paragraph = function paragraph(text) {\n      return '<p>' + text + '</p>\\n';\n    };\n\n    _proto.table = function table(header, body) {\n      if (body) body = '<tbody>' + body + '</tbody>';\n      return '<table>\\n' + '<thead>\\n' + header + '</thead>\\n' + body + '</table>\\n';\n    };\n\n    _proto.tablerow = function tablerow(content) {\n      return '<tr>\\n' + content + '</tr>\\n';\n    };\n\n    _proto.tablecell = function tablecell(content, flags) {\n      var type = flags.header ? 'th' : 'td';\n      var tag = flags.align ? '<' + type + ' align=\"' + flags.align + '\">' : '<' + type + '>';\n      return tag + content + '</' + type + '>\\n';\n    } // span level renderer\n    ;\n\n    _proto.strong = function strong(text) {\n      return '<strong>' + text + '</strong>';\n    };\n\n    _proto.em = function em(text) {\n      return '<em>' + text + '</em>';\n    };\n\n    _proto.codespan = function codespan(text) {\n      return '<code>' + text + '</code>';\n    };\n\n    _proto.br = function br() {\n      return this.options.xhtml ? '<br/>' : '<br>';\n    };\n\n    _proto.del = function del(text) {\n      return '<del>' + text + '</del>';\n    };\n\n    _proto.link = function link(href, title, text) {\n      href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n\n      if (href === null) {\n        return text;\n      }\n\n      var out = '<a href=\"' + escape$1(href) + '\"';\n\n      if (title) {\n        out += ' title=\"' + title + '\"';\n      }\n\n      out += '>' + text + '</a>';\n      return out;\n    };\n\n    _proto.image = function image(href, title, text) {\n      href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n\n      if (href === null) {\n        return text;\n      }\n\n      var out = '<img src=\"' + href + '\" alt=\"' + text + '\"';\n\n      if (title) {\n        out += ' title=\"' + title + '\"';\n      }\n\n      out += this.options.xhtml ? '/>' : '>';\n      return out;\n    };\n\n    _proto.text = function text(_text) {\n      return _text;\n    };\n\n    return Renderer;\n  }();\n\n  /**\n   * TextRenderer\n   * returns only the textual part of the token\n   */\n\n  var TextRenderer_1 = /*#__PURE__*/function () {\n    function TextRenderer() {}\n\n    var _proto = TextRenderer.prototype;\n\n    // no need for block level renderers\n    _proto.strong = function strong(text) {\n      return text;\n    };\n\n    _proto.em = function em(text) {\n      return text;\n    };\n\n    _proto.codespan = function codespan(text) {\n      return text;\n    };\n\n    _proto.del = function del(text) {\n      return text;\n    };\n\n    _proto.html = function html(text) {\n      return text;\n    };\n\n    _proto.text = function text(_text) {\n      return _text;\n    };\n\n    _proto.link = function link(href, title, text) {\n      return '' + text;\n    };\n\n    _proto.image = function image(href, title, text) {\n      return '' + text;\n    };\n\n    _proto.br = function br() {\n      return '';\n    };\n\n    return TextRenderer;\n  }();\n\n  /**\n   * Slugger generates header id\n   */\n\n  var Slugger_1 = /*#__PURE__*/function () {\n    function Slugger() {\n      this.seen = {};\n    }\n\n    var _proto = Slugger.prototype;\n\n    _proto.serialize = function serialize(value) {\n      return value.toLowerCase().trim() // remove html tags\n      .replace(/<[!\\/a-z].*?>/ig, '') // remove unwanted chars\n      .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '').replace(/\\s/g, '-');\n    }\n    /**\n     * Finds the next safe (unique) slug to use\n     */\n    ;\n\n    _proto.getNextSafeSlug = function getNextSafeSlug(originalSlug, isDryRun) {\n      var slug = originalSlug;\n      var occurenceAccumulator = 0;\n\n      if (this.seen.hasOwnProperty(slug)) {\n        occurenceAccumulator = this.seen[originalSlug];\n\n        do {\n          occurenceAccumulator++;\n          slug = originalSlug + '-' + occurenceAccumulator;\n        } while (this.seen.hasOwnProperty(slug));\n      }\n\n      if (!isDryRun) {\n        this.seen[originalSlug] = occurenceAccumulator;\n        this.seen[slug] = 0;\n      }\n\n      return slug;\n    }\n    /**\n     * Convert string to unique id\n     * @param {object} options\n     * @param {boolean} options.dryrun Generates the next unique slug without updating the internal accumulator.\n     */\n    ;\n\n    _proto.slug = function slug(value, options) {\n      if (options === void 0) {\n        options = {};\n      }\n\n      var slug = this.serialize(value);\n      return this.getNextSafeSlug(slug, options.dryrun);\n    };\n\n    return Slugger;\n  }();\n\n  var Renderer$1 = Renderer_1;\n  var TextRenderer$1 = TextRenderer_1;\n  var Slugger$1 = Slugger_1;\n  var defaults$1 = defaults$5.exports.defaults;\n  var unescape = helpers.unescape;\n  /**\n   * Parsing & Compiling\n   */\n\n  var Parser_1 = /*#__PURE__*/function () {\n    function Parser(options) {\n      this.options = options || defaults$1;\n      this.options.renderer = this.options.renderer || new Renderer$1();\n      this.renderer = this.options.renderer;\n      this.renderer.options = this.options;\n      this.textRenderer = new TextRenderer$1();\n      this.slugger = new Slugger$1();\n    }\n    /**\n     * Static Parse Method\n     */\n\n\n    Parser.parse = function parse(tokens, options) {\n      var parser = new Parser(options);\n      return parser.parse(tokens);\n    }\n    /**\n     * Static Parse Inline Method\n     */\n    ;\n\n    Parser.parseInline = function parseInline(tokens, options) {\n      var parser = new Parser(options);\n      return parser.parseInline(tokens);\n    }\n    /**\n     * Parse Loop\n     */\n    ;\n\n    var _proto = Parser.prototype;\n\n    _proto.parse = function parse(tokens, top) {\n      if (top === void 0) {\n        top = true;\n      }\n\n      var out = '',\n          i,\n          j,\n          k,\n          l2,\n          l3,\n          row,\n          cell,\n          header,\n          body,\n          token,\n          ordered,\n          start,\n          loose,\n          itemBody,\n          item,\n          checked,\n          task,\n          checkbox,\n          ret;\n      var l = tokens.length;\n\n      for (i = 0; i < l; i++) {\n        token = tokens[i]; // Run any renderer extensions\n\n        if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n          ret = this.options.extensions.renderers[token.type].call({\n            parser: this\n          }, token);\n\n          if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n            out += ret || '';\n            continue;\n          }\n        }\n\n        switch (token.type) {\n          case 'space':\n            {\n              continue;\n            }\n\n          case 'hr':\n            {\n              out += this.renderer.hr();\n              continue;\n            }\n\n          case 'heading':\n            {\n              out += this.renderer.heading(this.parseInline(token.tokens), token.depth, unescape(this.parseInline(token.tokens, this.textRenderer)), this.slugger);\n              continue;\n            }\n\n          case 'code':\n            {\n              out += this.renderer.code(token.text, token.lang, token.escaped);\n              continue;\n            }\n\n          case 'table':\n            {\n              header = ''; // header\n\n              cell = '';\n              l2 = token.header.length;\n\n              for (j = 0; j < l2; j++) {\n                cell += this.renderer.tablecell(this.parseInline(token.header[j].tokens), {\n                  header: true,\n                  align: token.align[j]\n                });\n              }\n\n              header += this.renderer.tablerow(cell);\n              body = '';\n              l2 = token.rows.length;\n\n              for (j = 0; j < l2; j++) {\n                row = token.rows[j];\n                cell = '';\n                l3 = row.length;\n\n                for (k = 0; k < l3; k++) {\n                  cell += this.renderer.tablecell(this.parseInline(row[k].tokens), {\n                    header: false,\n                    align: token.align[k]\n                  });\n                }\n\n                body += this.renderer.tablerow(cell);\n              }\n\n              out += this.renderer.table(header, body);\n              continue;\n            }\n\n          case 'blockquote':\n            {\n              body = this.parse(token.tokens);\n              out += this.renderer.blockquote(body);\n              continue;\n            }\n\n          case 'list':\n            {\n              ordered = token.ordered;\n              start = token.start;\n              loose = token.loose;\n              l2 = token.items.length;\n              body = '';\n\n              for (j = 0; j < l2; j++) {\n                item = token.items[j];\n                checked = item.checked;\n                task = item.task;\n                itemBody = '';\n\n                if (item.task) {\n                  checkbox = this.renderer.checkbox(checked);\n\n                  if (loose) {\n                    if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n                      item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n\n                      if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n                        item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n                      }\n                    } else {\n                      item.tokens.unshift({\n                        type: 'text',\n                        text: checkbox\n                      });\n                    }\n                  } else {\n                    itemBody += checkbox;\n                  }\n                }\n\n                itemBody += this.parse(item.tokens, loose);\n                body += this.renderer.listitem(itemBody, task, checked);\n              }\n\n              out += this.renderer.list(body, ordered, start);\n              continue;\n            }\n\n          case 'html':\n            {\n              // TODO parse inline content if parameter markdown=1\n              out += this.renderer.html(token.text);\n              continue;\n            }\n\n          case 'paragraph':\n            {\n              out += this.renderer.paragraph(this.parseInline(token.tokens));\n              continue;\n            }\n\n          case 'text':\n            {\n              body = token.tokens ? this.parseInline(token.tokens) : token.text;\n\n              while (i + 1 < l && tokens[i + 1].type === 'text') {\n                token = tokens[++i];\n                body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n              }\n\n              out += top ? this.renderer.paragraph(body) : body;\n              continue;\n            }\n\n          default:\n            {\n              var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n              if (this.options.silent) {\n                console.error(errMsg);\n                return;\n              } else {\n                throw new Error(errMsg);\n              }\n            }\n        }\n      }\n\n      return out;\n    }\n    /**\n     * Parse Inline Tokens\n     */\n    ;\n\n    _proto.parseInline = function parseInline(tokens, renderer) {\n      renderer = renderer || this.renderer;\n      var out = '',\n          i,\n          token,\n          ret;\n      var l = tokens.length;\n\n      for (i = 0; i < l; i++) {\n        token = tokens[i]; // Run any renderer extensions\n\n        if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n          ret = this.options.extensions.renderers[token.type].call({\n            parser: this\n          }, token);\n\n          if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n            out += ret || '';\n            continue;\n          }\n        }\n\n        switch (token.type) {\n          case 'escape':\n            {\n              out += renderer.text(token.text);\n              break;\n            }\n\n          case 'html':\n            {\n              out += renderer.html(token.text);\n              break;\n            }\n\n          case 'link':\n            {\n              out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n              break;\n            }\n\n          case 'image':\n            {\n              out += renderer.image(token.href, token.title, token.text);\n              break;\n            }\n\n          case 'strong':\n            {\n              out += renderer.strong(this.parseInline(token.tokens, renderer));\n              break;\n            }\n\n          case 'em':\n            {\n              out += renderer.em(this.parseInline(token.tokens, renderer));\n              break;\n            }\n\n          case 'codespan':\n            {\n              out += renderer.codespan(token.text);\n              break;\n            }\n\n          case 'br':\n            {\n              out += renderer.br();\n              break;\n            }\n\n          case 'del':\n            {\n              out += renderer.del(this.parseInline(token.tokens, renderer));\n              break;\n            }\n\n          case 'text':\n            {\n              out += renderer.text(token.text);\n              break;\n            }\n\n          default:\n            {\n              var errMsg = 'Token with \"' + token.type + '\" type was not found.';\n\n              if (this.options.silent) {\n                console.error(errMsg);\n                return;\n              } else {\n                throw new Error(errMsg);\n              }\n            }\n        }\n      }\n\n      return out;\n    };\n\n    return Parser;\n  }();\n\n  var Lexer = Lexer_1;\n  var Parser = Parser_1;\n  var Tokenizer = Tokenizer_1;\n  var Renderer = Renderer_1;\n  var TextRenderer = TextRenderer_1;\n  var Slugger = Slugger_1;\n  var merge = helpers.merge,\n      checkSanitizeDeprecation = helpers.checkSanitizeDeprecation,\n      escape = helpers.escape;\n  var getDefaults = defaults$5.exports.getDefaults,\n      changeDefaults = defaults$5.exports.changeDefaults,\n      defaults = defaults$5.exports.defaults;\n  /**\n   * Marked\n   */\n\n  function marked(src, opt, callback) {\n    // throw error in case of non string input\n    if (typeof src === 'undefined' || src === null) {\n      throw new Error('marked(): input parameter is undefined or null');\n    }\n\n    if (typeof src !== 'string') {\n      throw new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');\n    }\n\n    if (typeof opt === 'function') {\n      callback = opt;\n      opt = null;\n    }\n\n    opt = merge({}, marked.defaults, opt || {});\n    checkSanitizeDeprecation(opt);\n\n    if (callback) {\n      var highlight = opt.highlight;\n      var tokens;\n\n      try {\n        tokens = Lexer.lex(src, opt);\n      } catch (e) {\n        return callback(e);\n      }\n\n      var done = function done(err) {\n        var out;\n\n        if (!err) {\n          try {\n            if (opt.walkTokens) {\n              marked.walkTokens(tokens, opt.walkTokens);\n            }\n\n            out = Parser.parse(tokens, opt);\n          } catch (e) {\n            err = e;\n          }\n        }\n\n        opt.highlight = highlight;\n        return err ? callback(err) : callback(null, out);\n      };\n\n      if (!highlight || highlight.length < 3) {\n        return done();\n      }\n\n      delete opt.highlight;\n      if (!tokens.length) return done();\n      var pending = 0;\n      marked.walkTokens(tokens, function (token) {\n        if (token.type === 'code') {\n          pending++;\n          setTimeout(function () {\n            highlight(token.text, token.lang, function (err, code) {\n              if (err) {\n                return done(err);\n              }\n\n              if (code != null && code !== token.text) {\n                token.text = code;\n                token.escaped = true;\n              }\n\n              pending--;\n\n              if (pending === 0) {\n                done();\n              }\n            });\n          }, 0);\n        }\n      });\n\n      if (pending === 0) {\n        done();\n      }\n\n      return;\n    }\n\n    try {\n      var _tokens = Lexer.lex(src, opt);\n\n      if (opt.walkTokens) {\n        marked.walkTokens(_tokens, opt.walkTokens);\n      }\n\n      return Parser.parse(_tokens, opt);\n    } catch (e) {\n      e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n      if (opt.silent) {\n        return '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>';\n      }\n\n      throw e;\n    }\n  }\n  /**\n   * Options\n   */\n\n\n  marked.options = marked.setOptions = function (opt) {\n    merge(marked.defaults, opt);\n    changeDefaults(marked.defaults);\n    return marked;\n  };\n\n  marked.getDefaults = getDefaults;\n  marked.defaults = defaults;\n  /**\n   * Use Extension\n   */\n\n  marked.use = function () {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    var opts = merge.apply(void 0, [{}].concat(args));\n    var extensions = marked.defaults.extensions || {\n      renderers: {},\n      childTokens: {}\n    };\n    var hasExtensions;\n    args.forEach(function (pack) {\n      // ==-- Parse \"addon\" extensions --== //\n      if (pack.extensions) {\n        hasExtensions = true;\n        pack.extensions.forEach(function (ext) {\n          if (!ext.name) {\n            throw new Error('extension name required');\n          }\n\n          if (ext.renderer) {\n            // Renderer extensions\n            var prevRenderer = extensions.renderers ? extensions.renderers[ext.name] : null;\n\n            if (prevRenderer) {\n              // Replace extension with func to run new extension but fall back if false\n              extensions.renderers[ext.name] = function () {\n                for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n                  args[_key2] = arguments[_key2];\n                }\n\n                var ret = ext.renderer.apply(this, args);\n\n                if (ret === false) {\n                  ret = prevRenderer.apply(this, args);\n                }\n\n                return ret;\n              };\n            } else {\n              extensions.renderers[ext.name] = ext.renderer;\n            }\n          }\n\n          if (ext.tokenizer) {\n            // Tokenizer Extensions\n            if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {\n              throw new Error(\"extension level must be 'block' or 'inline'\");\n            }\n\n            if (extensions[ext.level]) {\n              extensions[ext.level].unshift(ext.tokenizer);\n            } else {\n              extensions[ext.level] = [ext.tokenizer];\n            }\n\n            if (ext.start) {\n              // Function to check for start of token\n              if (ext.level === 'block') {\n                if (extensions.startBlock) {\n                  extensions.startBlock.push(ext.start);\n                } else {\n                  extensions.startBlock = [ext.start];\n                }\n              } else if (ext.level === 'inline') {\n                if (extensions.startInline) {\n                  extensions.startInline.push(ext.start);\n                } else {\n                  extensions.startInline = [ext.start];\n                }\n              }\n            }\n          }\n\n          if (ext.childTokens) {\n            // Child tokens to be visited by walkTokens\n            extensions.childTokens[ext.name] = ext.childTokens;\n          }\n        });\n      } // ==-- Parse \"overwrite\" extensions --== //\n\n\n      if (pack.renderer) {\n        (function () {\n          var renderer = marked.defaults.renderer || new Renderer();\n\n          var _loop = function _loop(prop) {\n            var prevRenderer = renderer[prop]; // Replace renderer with func to run extension, but fall back if false\n\n            renderer[prop] = function () {\n              for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n                args[_key3] = arguments[_key3];\n              }\n\n              var ret = pack.renderer[prop].apply(renderer, args);\n\n              if (ret === false) {\n                ret = prevRenderer.apply(renderer, args);\n              }\n\n              return ret;\n            };\n          };\n\n          for (var prop in pack.renderer) {\n            _loop(prop);\n          }\n\n          opts.renderer = renderer;\n        })();\n      }\n\n      if (pack.tokenizer) {\n        (function () {\n          var tokenizer = marked.defaults.tokenizer || new Tokenizer();\n\n          var _loop2 = function _loop2(prop) {\n            var prevTokenizer = tokenizer[prop]; // Replace tokenizer with func to run extension, but fall back if false\n\n            tokenizer[prop] = function () {\n              for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n                args[_key4] = arguments[_key4];\n              }\n\n              var ret = pack.tokenizer[prop].apply(tokenizer, args);\n\n              if (ret === false) {\n                ret = prevTokenizer.apply(tokenizer, args);\n              }\n\n              return ret;\n            };\n          };\n\n          for (var prop in pack.tokenizer) {\n            _loop2(prop);\n          }\n\n          opts.tokenizer = tokenizer;\n        })();\n      } // ==-- Parse WalkTokens extensions --== //\n\n\n      if (pack.walkTokens) {\n        var walkTokens = marked.defaults.walkTokens;\n\n        opts.walkTokens = function (token) {\n          pack.walkTokens.call(this, token);\n\n          if (walkTokens) {\n            walkTokens.call(this, token);\n          }\n        };\n      }\n\n      if (hasExtensions) {\n        opts.extensions = extensions;\n      }\n\n      marked.setOptions(opts);\n    });\n  };\n  /**\n   * Run callback for every token\n   */\n\n\n  marked.walkTokens = function (tokens, callback) {\n    var _loop3 = function _loop3() {\n      var token = _step.value;\n      callback.call(marked, token);\n\n      switch (token.type) {\n        case 'table':\n          {\n            for (var _iterator2 = _createForOfIteratorHelperLoose(token.header), _step2; !(_step2 = _iterator2()).done;) {\n              var cell = _step2.value;\n              marked.walkTokens(cell.tokens, callback);\n            }\n\n            for (var _iterator3 = _createForOfIteratorHelperLoose(token.rows), _step3; !(_step3 = _iterator3()).done;) {\n              var row = _step3.value;\n\n              for (var _iterator4 = _createForOfIteratorHelperLoose(row), _step4; !(_step4 = _iterator4()).done;) {\n                var _cell = _step4.value;\n                marked.walkTokens(_cell.tokens, callback);\n              }\n            }\n\n            break;\n          }\n\n        case 'list':\n          {\n            marked.walkTokens(token.items, callback);\n            break;\n          }\n\n        default:\n          {\n            if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) {\n              // Walk any extensions\n              marked.defaults.extensions.childTokens[token.type].forEach(function (childTokens) {\n                marked.walkTokens(token[childTokens], callback);\n              });\n            } else if (token.tokens) {\n              marked.walkTokens(token.tokens, callback);\n            }\n          }\n      }\n    };\n\n    for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {\n      _loop3();\n    }\n  };\n  /**\n   * Parse Inline\n   */\n\n\n  marked.parseInline = function (src, opt) {\n    // throw error in case of non string input\n    if (typeof src === 'undefined' || src === null) {\n      throw new Error('marked.parseInline(): input parameter is undefined or null');\n    }\n\n    if (typeof src !== 'string') {\n      throw new Error('marked.parseInline(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');\n    }\n\n    opt = merge({}, marked.defaults, opt || {});\n    checkSanitizeDeprecation(opt);\n\n    try {\n      var tokens = Lexer.lexInline(src, opt);\n\n      if (opt.walkTokens) {\n        marked.walkTokens(tokens, opt.walkTokens);\n      }\n\n      return Parser.parseInline(tokens, opt);\n    } catch (e) {\n      e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n\n      if (opt.silent) {\n        return '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>';\n      }\n\n      throw e;\n    }\n  };\n  /**\n   * Expose\n   */\n\n\n  marked.Parser = Parser;\n  marked.parser = Parser.parse;\n  marked.Renderer = Renderer;\n  marked.TextRenderer = TextRenderer;\n  marked.Lexer = Lexer;\n  marked.lexer = Lexer.lex;\n  marked.Tokenizer = Tokenizer;\n  marked.Slugger = Slugger;\n  marked.parse = marked;\n  var marked_1 = marked;\n\n  return marked_1;\n\n}));\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// This is CodeMirror (https://codemirror.net), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\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 = global || self, global.CodeMirror = factory());\n}(this, (function () { 'use strict';\n\n  // Kludges for bugs and behavior differences that can't be feature\n  // detected are enabled based on userAgent etc sniffing.\n  var userAgent = navigator.userAgent;\n  var platform = navigator.platform;\n\n  var gecko = /gecko\\/\\d/i.test(userAgent);\n  var ie_upto10 = /MSIE \\d/.test(userAgent);\n  var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n  var edge = /Edge\\/(\\d+)/.exec(userAgent);\n  var ie = ie_upto10 || ie_11up || edge;\n  var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n  var webkit = !edge && /WebKit\\//.test(userAgent);\n  var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n  var chrome = !edge && /Chrome\\//.test(userAgent);\n  var presto = /Opera\\//.test(userAgent);\n  var safari = /Apple Computer/.test(navigator.vendor);\n  var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n  var phantom = /PhantomJS/.test(userAgent);\n\n  var ios = !edge && /AppleWebKit/.test(userAgent) && /Mobile\\/\\w+/.test(userAgent);\n  var android = /Android/.test(userAgent);\n  // This is woefully incomplete. Suggestions for alternative methods welcome.\n  var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n  var mac = ios || /Mac/.test(platform);\n  var chromeOS = /\\bCrOS\\b/.test(userAgent);\n  var windows = /win/i.test(platform);\n\n  var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n  if (presto_version) { presto_version = Number(presto_version[1]); }\n  if (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n  // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n  var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n  var captureRightClick = gecko || (ie && ie_version >= 9);\n\n  function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n  var rmClass = function(node, cls) {\n    var current = node.className;\n    var match = classTest(cls).exec(current);\n    if (match) {\n      var after = current.slice(match.index + match[0].length);\n      node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n    }\n  };\n\n  function removeChildren(e) {\n    for (var count = e.childNodes.length; count > 0; --count)\n      { e.removeChild(e.firstChild); }\n    return e\n  }\n\n  function removeChildrenAndAdd(parent, e) {\n    return removeChildren(parent).appendChild(e)\n  }\n\n  function elt(tag, content, className, style) {\n    var e = document.createElement(tag);\n    if (className) { e.className = className; }\n    if (style) { e.style.cssText = style; }\n    if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n    else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n    return e\n  }\n  // wrapper for elt, which removes the elt from the accessibility tree\n  function eltP(tag, content, className, style) {\n    var e = elt(tag, content, className, style);\n    e.setAttribute(\"role\", \"presentation\");\n    return e\n  }\n\n  var range;\n  if (document.createRange) { range = function(node, start, end, endNode) {\n    var r = document.createRange();\n    r.setEnd(endNode || node, end);\n    r.setStart(node, start);\n    return r\n  }; }\n  else { range = function(node, start, end) {\n    var r = document.body.createTextRange();\n    try { r.moveToElementText(node.parentNode); }\n    catch(e) { return r }\n    r.collapse(true);\n    r.moveEnd(\"character\", end);\n    r.moveStart(\"character\", start);\n    return r\n  }; }\n\n  function contains(parent, child) {\n    if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n      { child = child.parentNode; }\n    if (parent.contains)\n      { return parent.contains(child) }\n    do {\n      if (child.nodeType == 11) { child = child.host; }\n      if (child == parent) { return true }\n    } while (child = child.parentNode)\n  }\n\n  function activeElt() {\n    // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n    // IE < 10 will throw when accessed while the page is loading or in an iframe.\n    // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n    var activeElement;\n    try {\n      activeElement = document.activeElement;\n    } catch(e) {\n      activeElement = document.body || null;\n    }\n    while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n      { activeElement = activeElement.shadowRoot.activeElement; }\n    return activeElement\n  }\n\n  function addClass(node, cls) {\n    var current = node.className;\n    if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n  }\n  function joinClasses(a, b) {\n    var as = a.split(\" \");\n    for (var i = 0; i < as.length; i++)\n      { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n    return b\n  }\n\n  var selectInput = function(node) { node.select(); };\n  if (ios) // Mobile Safari apparently has a bug where select() is broken.\n    { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\n  else if (ie) // Suppress mysterious IE10 errors\n    { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\n  function bind(f) {\n    var args = Array.prototype.slice.call(arguments, 1);\n    return function(){return f.apply(null, args)}\n  }\n\n  function copyObj(obj, target, overwrite) {\n    if (!target) { target = {}; }\n    for (var prop in obj)\n      { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n        { target[prop] = obj[prop]; } }\n    return target\n  }\n\n  // Counts the column offset in a string, taking tabs into account.\n  // Used mostly to find indentation.\n  function countColumn(string, end, tabSize, startIndex, startValue) {\n    if (end == null) {\n      end = string.search(/[^\\s\\u00a0]/);\n      if (end == -1) { end = string.length; }\n    }\n    for (var i = startIndex || 0, n = startValue || 0;;) {\n      var nextTab = string.indexOf(\"\\t\", i);\n      if (nextTab < 0 || nextTab >= end)\n        { return n + (end - i) }\n      n += nextTab - i;\n      n += tabSize - (n % tabSize);\n      i = nextTab + 1;\n    }\n  }\n\n  var Delayed = function() {\n    this.id = null;\n    this.f = null;\n    this.time = 0;\n    this.handler = bind(this.onTimeout, this);\n  };\n  Delayed.prototype.onTimeout = function (self) {\n    self.id = 0;\n    if (self.time <= +new Date) {\n      self.f();\n    } else {\n      setTimeout(self.handler, self.time - +new Date);\n    }\n  };\n  Delayed.prototype.set = function (ms, f) {\n    this.f = f;\n    var time = +new Date + ms;\n    if (!this.id || time < this.time) {\n      clearTimeout(this.id);\n      this.id = setTimeout(this.handler, ms);\n      this.time = time;\n    }\n  };\n\n  function indexOf(array, elt) {\n    for (var i = 0; i < array.length; ++i)\n      { if (array[i] == elt) { return i } }\n    return -1\n  }\n\n  // Number of pixels added to scroller and sizer to hide scrollbar\n  var scrollerGap = 50;\n\n  // Returned or thrown by various protocols to signal 'I'm not\n  // handling this'.\n  var Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n  // Reused option objects for setSelection & friends\n  var sel_dontScroll = {scroll: false}, sel_mouse = {origin: \"*mouse\"}, sel_move = {origin: \"+move\"};\n\n  // The inverse of countColumn -- find the offset that corresponds to\n  // a particular column.\n  function findColumn(string, goal, tabSize) {\n    for (var pos = 0, col = 0;;) {\n      var nextTab = string.indexOf(\"\\t\", pos);\n      if (nextTab == -1) { nextTab = string.length; }\n      var skipped = nextTab - pos;\n      if (nextTab == string.length || col + skipped >= goal)\n        { return pos + Math.min(skipped, goal - col) }\n      col += nextTab - pos;\n      col += tabSize - (col % tabSize);\n      pos = nextTab + 1;\n      if (col >= goal) { return pos }\n    }\n  }\n\n  var spaceStrs = [\"\"];\n  function spaceStr(n) {\n    while (spaceStrs.length <= n)\n      { spaceStrs.push(lst(spaceStrs) + \" \"); }\n    return spaceStrs[n]\n  }\n\n  function lst(arr) { return arr[arr.length-1] }\n\n  function map(array, f) {\n    var out = [];\n    for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n    return out\n  }\n\n  function insertSorted(array, value, score) {\n    var pos = 0, priority = score(value);\n    while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n    array.splice(pos, 0, value);\n  }\n\n  function nothing() {}\n\n  function createObj(base, props) {\n    var inst;\n    if (Object.create) {\n      inst = Object.create(base);\n    } else {\n      nothing.prototype = base;\n      inst = new nothing();\n    }\n    if (props) { copyObj(props, inst); }\n    return inst\n  }\n\n  var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n  function isWordCharBasic(ch) {\n    return /\\w/.test(ch) || ch > \"\\x80\" &&\n      (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n  }\n  function isWordChar(ch, helper) {\n    if (!helper) { return isWordCharBasic(ch) }\n    if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n    return helper.test(ch)\n  }\n\n  function isEmpty(obj) {\n    for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n    return true\n  }\n\n  // Extending unicode characters. A series of a non-extending char +\n  // any number of extending chars is treated as a single unit as far\n  // as editing and measuring is concerned. This is not fully correct,\n  // since some scripts/fonts/browsers also treat other configurations\n  // of code points as a group.\n  var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n  function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n  // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n  function skipExtendingChars(str, pos, dir) {\n    while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n    return pos\n  }\n\n  // Returns the value from the range [`from`; `to`] that satisfies\n  // `pred` and is closest to `from`. Assumes that at least `to`\n  // satisfies `pred`. Supports `from` being greater than `to`.\n  function findFirst(pred, from, to) {\n    // At any point we are certain `to` satisfies `pred`, don't know\n    // whether `from` does.\n    var dir = from > to ? -1 : 1;\n    for (;;) {\n      if (from == to) { return from }\n      var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n      if (mid == from) { return pred(mid) ? from : to }\n      if (pred(mid)) { to = mid; }\n      else { from = mid + dir; }\n    }\n  }\n\n  // BIDI HELPERS\n\n  function iterateBidiSections(order, from, to, f) {\n    if (!order) { return f(from, to, \"ltr\", 0) }\n    var found = false;\n    for (var i = 0; i < order.length; ++i) {\n      var part = order[i];\n      if (part.from < to && part.to > from || from == to && part.to == from) {\n        f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n        found = true;\n      }\n    }\n    if (!found) { f(from, to, \"ltr\"); }\n  }\n\n  var bidiOther = null;\n  function getBidiPartAt(order, ch, sticky) {\n    var found;\n    bidiOther = null;\n    for (var i = 0; i < order.length; ++i) {\n      var cur = order[i];\n      if (cur.from < ch && cur.to > ch) { return i }\n      if (cur.to == ch) {\n        if (cur.from != cur.to && sticky == \"before\") { found = i; }\n        else { bidiOther = i; }\n      }\n      if (cur.from == ch) {\n        if (cur.from != cur.to && sticky != \"before\") { found = i; }\n        else { bidiOther = i; }\n      }\n    }\n    return found != null ? found : bidiOther\n  }\n\n  // Bidirectional ordering algorithm\n  // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n  // that this (partially) implements.\n\n  // One-char codes used for character types:\n  // L (L):   Left-to-Right\n  // R (R):   Right-to-Left\n  // r (AL):  Right-to-Left Arabic\n  // 1 (EN):  European Number\n  // + (ES):  European Number Separator\n  // % (ET):  European Number Terminator\n  // n (AN):  Arabic Number\n  // , (CS):  Common Number Separator\n  // m (NSM): Non-Spacing Mark\n  // b (BN):  Boundary Neutral\n  // s (B):   Paragraph Separator\n  // t (S):   Segment Separator\n  // w (WS):  Whitespace\n  // N (ON):  Other Neutrals\n\n  // Returns null if characters are ordered as they appear\n  // (left-to-right), or an array of sections ({from, to, level}\n  // objects) in the order in which they occur visually.\n  var bidiOrdering = (function() {\n    // Character types for codepoints 0 to 0xff\n    var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n    // Character types for codepoints 0x600 to 0x6f9\n    var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n    function charType(code) {\n      if (code <= 0xf7) { return lowTypes.charAt(code) }\n      else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n      else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n      else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n      else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n      else if (code == 0x200c) { return \"b\" }\n      else { return \"L\" }\n    }\n\n    var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n    var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n    function BidiSpan(level, from, to) {\n      this.level = level;\n      this.from = from; this.to = to;\n    }\n\n    return function(str, direction) {\n      var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n      if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) { return false }\n      var len = str.length, types = [];\n      for (var i = 0; i < len; ++i)\n        { types.push(charType(str.charCodeAt(i))); }\n\n      // W1. Examine each non-spacing mark (NSM) in the level run, and\n      // change the type of the NSM to the type of the previous\n      // character. If the NSM is at the start of the level run, it will\n      // get the type of sor.\n      for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n        var type = types[i$1];\n        if (type == \"m\") { types[i$1] = prev; }\n        else { prev = type; }\n      }\n\n      // W2. Search backwards from each instance of a European number\n      // until the first strong type (R, L, AL, or sor) is found. If an\n      // AL is found, change the type of the European number to Arabic\n      // number.\n      // W3. Change all ALs to R.\n      for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n        var type$1 = types[i$2];\n        if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n        else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { types[i$2] = \"R\"; } }\n      }\n\n      // W4. A single European separator between two European numbers\n      // changes to a European number. A single common separator between\n      // two numbers of the same type changes to that type.\n      for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n        var type$2 = types[i$3];\n        if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n        else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n                 (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n        prev$1 = type$2;\n      }\n\n      // W5. A sequence of European terminators adjacent to European\n      // numbers changes to all European numbers.\n      // W6. Otherwise, separators and terminators change to Other\n      // Neutral.\n      for (var i$4 = 0; i$4 < len; ++i$4) {\n        var type$3 = types[i$4];\n        if (type$3 == \",\") { types[i$4] = \"N\"; }\n        else if (type$3 == \"%\") {\n          var end = (void 0);\n          for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n          var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n          for (var j = i$4; j < end; ++j) { types[j] = replace; }\n          i$4 = end - 1;\n        }\n      }\n\n      // W7. Search backwards from each instance of a European number\n      // until the first strong type (R, L, or sor) is found. If an L is\n      // found, then change the type of the European number to L.\n      for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n        var type$4 = types[i$5];\n        if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n        else if (isStrong.test(type$4)) { cur$1 = type$4; }\n      }\n\n      // N1. A sequence of neutrals takes the direction of the\n      // surrounding strong text if the text on both sides has the same\n      // direction. European and Arabic numbers act as if they were R in\n      // terms of their influence on neutrals. Start-of-level-run (sor)\n      // and end-of-level-run (eor) are used at level run boundaries.\n      // N2. Any remaining neutrals take the embedding direction.\n      for (var i$6 = 0; i$6 < len; ++i$6) {\n        if (isNeutral.test(types[i$6])) {\n          var end$1 = (void 0);\n          for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n          var before = (i$6 ? types[i$6-1] : outerType) == \"L\";\n          var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n          var replace$1 = before == after ? (before ? \"L\" : \"R\") : outerType;\n          for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n          i$6 = end$1 - 1;\n        }\n      }\n\n      // Here we depart from the documented algorithm, in order to avoid\n      // building up an actual levels array. Since there are only three\n      // levels (0, 1, 2) in an implementation that doesn't take\n      // explicit embedding into account, we can build up the order on\n      // the fly, without following the level-based algorithm.\n      var order = [], m;\n      for (var i$7 = 0; i$7 < len;) {\n        if (countsAsLeft.test(types[i$7])) {\n          var start = i$7;\n          for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n          order.push(new BidiSpan(0, start, i$7));\n        } else {\n          var pos = i$7, at = order.length, isRTL = direction == \"rtl\" ? 1 : 0;\n          for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n          for (var j$2 = pos; j$2 < i$7;) {\n            if (countsAsNum.test(types[j$2])) {\n              if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); at += isRTL; }\n              var nstart = j$2;\n              for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n              order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n              at += isRTL;\n              pos = j$2;\n            } else { ++j$2; }\n          }\n          if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\n        }\n      }\n      if (direction == \"ltr\") {\n        if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n          order[0].from = m[0].length;\n          order.unshift(new BidiSpan(0, 0, m[0].length));\n        }\n        if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n          lst(order).to -= m[0].length;\n          order.push(new BidiSpan(0, len - m[0].length, len));\n        }\n      }\n\n      return direction == \"rtl\" ? order.reverse() : order\n    }\n  })();\n\n  // Get the bidi ordering for the given line (and cache it). Returns\n  // false for lines that are fully left-to-right, and an array of\n  // BidiSpan objects otherwise.\n  function getOrder(line, direction) {\n    var order = line.order;\n    if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n    return order\n  }\n\n  // EVENT HANDLING\n\n  // Lightweight event framework. on/off also work on DOM nodes,\n  // registering native DOM handlers.\n\n  var noHandlers = [];\n\n  var on = function(emitter, type, f) {\n    if (emitter.addEventListener) {\n      emitter.addEventListener(type, f, false);\n    } else if (emitter.attachEvent) {\n      emitter.attachEvent(\"on\" + type, f);\n    } else {\n      var map = emitter._handlers || (emitter._handlers = {});\n      map[type] = (map[type] || noHandlers).concat(f);\n    }\n  };\n\n  function getHandlers(emitter, type) {\n    return emitter._handlers && emitter._handlers[type] || noHandlers\n  }\n\n  function off(emitter, type, f) {\n    if (emitter.removeEventListener) {\n      emitter.removeEventListener(type, f, false);\n    } else if (emitter.detachEvent) {\n      emitter.detachEvent(\"on\" + type, f);\n    } else {\n      var map = emitter._handlers, arr = map && map[type];\n      if (arr) {\n        var index = indexOf(arr, f);\n        if (index > -1)\n          { map[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n      }\n    }\n  }\n\n  function signal(emitter, type /*, values...*/) {\n    var handlers = getHandlers(emitter, type);\n    if (!handlers.length) { return }\n    var args = Array.prototype.slice.call(arguments, 2);\n    for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n  }\n\n  // The DOM events that CodeMirror handles can be overridden by\n  // registering a (non-DOM) handler on the editor for the event name,\n  // and preventDefault-ing the event in that handler.\n  function signalDOMEvent(cm, e, override) {\n    if (typeof e == \"string\")\n      { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\n    signal(cm, override || e.type, cm, e);\n    return e_defaultPrevented(e) || e.codemirrorIgnore\n  }\n\n  function signalCursorActivity(cm) {\n    var arr = cm._handlers && cm._handlers.cursorActivity;\n    if (!arr) { return }\n    var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n    for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n      { set.push(arr[i]); } }\n  }\n\n  function hasHandler(emitter, type) {\n    return getHandlers(emitter, type).length > 0\n  }\n\n  // Add on and off methods to a constructor's prototype, to make\n  // registering events on such objects more convenient.\n  function eventMixin(ctor) {\n    ctor.prototype.on = function(type, f) {on(this, type, f);};\n    ctor.prototype.off = function(type, f) {off(this, type, f);};\n  }\n\n  // Due to the fact that we still support jurassic IE versions, some\n  // compatibility wrappers are needed.\n\n  function e_preventDefault(e) {\n    if (e.preventDefault) { e.preventDefault(); }\n    else { e.returnValue = false; }\n  }\n  function e_stopPropagation(e) {\n    if (e.stopPropagation) { e.stopPropagation(); }\n    else { e.cancelBubble = true; }\n  }\n  function e_defaultPrevented(e) {\n    return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n  }\n  function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\n  function e_target(e) {return e.target || e.srcElement}\n  function e_button(e) {\n    var b = e.which;\n    if (b == null) {\n      if (e.button & 1) { b = 1; }\n      else if (e.button & 2) { b = 3; }\n      else if (e.button & 4) { b = 2; }\n    }\n    if (mac && e.ctrlKey && b == 1) { b = 3; }\n    return b\n  }\n\n  // Detect drag-and-drop\n  var dragAndDrop = function() {\n    // There is *some* kind of drag-and-drop support in IE6-8, but I\n    // couldn't get it to work yet.\n    if (ie && ie_version < 9) { return false }\n    var div = elt('div');\n    return \"draggable\" in div || \"dragDrop\" in div\n  }();\n\n  var zwspSupported;\n  function zeroWidthElement(measure) {\n    if (zwspSupported == null) {\n      var test = elt(\"span\", \"\\u200b\");\n      removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n      if (measure.firstChild.offsetHeight != 0)\n        { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n    }\n    var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n      elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n    node.setAttribute(\"cm-text\", \"\");\n    return node\n  }\n\n  // Feature-detect IE's crummy client rect reporting for bidi text\n  var badBidiRects;\n  function hasBadBidiRects(measure) {\n    if (badBidiRects != null) { return badBidiRects }\n    var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n    var r0 = range(txt, 0, 1).getBoundingClientRect();\n    var r1 = range(txt, 1, 2).getBoundingClientRect();\n    removeChildren(measure);\n    if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n    return badBidiRects = (r1.right - r0.right < 3)\n  }\n\n  // See if \"\".split is the broken IE version, if so, provide an\n  // alternative way to split lines.\n  var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n    var pos = 0, result = [], l = string.length;\n    while (pos <= l) {\n      var nl = string.indexOf(\"\\n\", pos);\n      if (nl == -1) { nl = string.length; }\n      var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n      var rt = line.indexOf(\"\\r\");\n      if (rt != -1) {\n        result.push(line.slice(0, rt));\n        pos += rt + 1;\n      } else {\n        result.push(line);\n        pos = nl + 1;\n      }\n    }\n    return result\n  } : function (string) { return string.split(/\\r\\n?|\\n/); };\n\n  var hasSelection = window.getSelection ? function (te) {\n    try { return te.selectionStart != te.selectionEnd }\n    catch(e) { return false }\n  } : function (te) {\n    var range;\n    try {range = te.ownerDocument.selection.createRange();}\n    catch(e) {}\n    if (!range || range.parentElement() != te) { return false }\n    return range.compareEndPoints(\"StartToEnd\", range) != 0\n  };\n\n  var hasCopyEvent = (function () {\n    var e = elt(\"div\");\n    if (\"oncopy\" in e) { return true }\n    e.setAttribute(\"oncopy\", \"return;\");\n    return typeof e.oncopy == \"function\"\n  })();\n\n  var badZoomedRects = null;\n  function hasBadZoomedRects(measure) {\n    if (badZoomedRects != null) { return badZoomedRects }\n    var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n    var normal = node.getBoundingClientRect();\n    var fromRange = range(node, 0, 1).getBoundingClientRect();\n    return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n  }\n\n  // Known modes, by name and by MIME\n  var modes = {}, mimeModes = {};\n\n  // Extra arguments are stored as the mode's dependencies, which is\n  // used by (legacy) mechanisms like loadmode.js to automatically\n  // load a mode. (Preferred mechanism is the require/define calls.)\n  function defineMode(name, mode) {\n    if (arguments.length > 2)\n      { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n    modes[name] = mode;\n  }\n\n  function defineMIME(mime, spec) {\n    mimeModes[mime] = spec;\n  }\n\n  // Given a MIME type, a {name, ...options} config object, or a name\n  // string, return a mode config object.\n  function resolveMode(spec) {\n    if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n      spec = mimeModes[spec];\n    } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n      var found = mimeModes[spec.name];\n      if (typeof found == \"string\") { found = {name: found}; }\n      spec = createObj(found, spec);\n      spec.name = found.name;\n    } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n      return resolveMode(\"application/xml\")\n    } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n      return resolveMode(\"application/json\")\n    }\n    if (typeof spec == \"string\") { return {name: spec} }\n    else { return spec || {name: \"null\"} }\n  }\n\n  // Given a mode spec (anything that resolveMode accepts), find and\n  // initialize an actual mode object.\n  function getMode(options, spec) {\n    spec = resolveMode(spec);\n    var mfactory = modes[spec.name];\n    if (!mfactory) { return getMode(options, \"text/plain\") }\n    var modeObj = mfactory(options, spec);\n    if (modeExtensions.hasOwnProperty(spec.name)) {\n      var exts = modeExtensions[spec.name];\n      for (var prop in exts) {\n        if (!exts.hasOwnProperty(prop)) { continue }\n        if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n        modeObj[prop] = exts[prop];\n      }\n    }\n    modeObj.name = spec.name;\n    if (spec.helperType) { modeObj.helperType = spec.helperType; }\n    if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n      { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n    return modeObj\n  }\n\n  // This can be used to attach properties to mode objects from\n  // outside the actual mode definition.\n  var modeExtensions = {};\n  function extendMode(mode, properties) {\n    var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n    copyObj(properties, exts);\n  }\n\n  function copyState(mode, state) {\n    if (state === true) { return state }\n    if (mode.copyState) { return mode.copyState(state) }\n    var nstate = {};\n    for (var n in state) {\n      var val = state[n];\n      if (val instanceof Array) { val = val.concat([]); }\n      nstate[n] = val;\n    }\n    return nstate\n  }\n\n  // Given a mode and a state (for that mode), find the inner mode and\n  // state at the position that the state refers to.\n  function innerMode(mode, state) {\n    var info;\n    while (mode.innerMode) {\n      info = mode.innerMode(state);\n      if (!info || info.mode == mode) { break }\n      state = info.state;\n      mode = info.mode;\n    }\n    return info || {mode: mode, state: state}\n  }\n\n  function startState(mode, a1, a2) {\n    return mode.startState ? mode.startState(a1, a2) : true\n  }\n\n  // STRING STREAM\n\n  // Fed to the mode parsers, provides helper functions to make\n  // parsers more succinct.\n\n  var StringStream = function(string, tabSize, lineOracle) {\n    this.pos = this.start = 0;\n    this.string = string;\n    this.tabSize = tabSize || 8;\n    this.lastColumnPos = this.lastColumnValue = 0;\n    this.lineStart = 0;\n    this.lineOracle = lineOracle;\n  };\n\n  StringStream.prototype.eol = function () {return this.pos >= this.string.length};\n  StringStream.prototype.sol = function () {return this.pos == this.lineStart};\n  StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\n  StringStream.prototype.next = function () {\n    if (this.pos < this.string.length)\n      { return this.string.charAt(this.pos++) }\n  };\n  StringStream.prototype.eat = function (match) {\n    var ch = this.string.charAt(this.pos);\n    var ok;\n    if (typeof match == \"string\") { ok = ch == match; }\n    else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n    if (ok) {++this.pos; return ch}\n  };\n  StringStream.prototype.eatWhile = function (match) {\n    var start = this.pos;\n    while (this.eat(match)){}\n    return this.pos > start\n  };\n  StringStream.prototype.eatSpace = function () {\n    var start = this.pos;\n    while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this.pos; }\n    return this.pos > start\n  };\n  StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\n  StringStream.prototype.skipTo = function (ch) {\n    var found = this.string.indexOf(ch, this.pos);\n    if (found > -1) {this.pos = found; return true}\n  };\n  StringStream.prototype.backUp = function (n) {this.pos -= n;};\n  StringStream.prototype.column = function () {\n    if (this.lastColumnPos < this.start) {\n      this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n      this.lastColumnPos = this.start;\n    }\n    return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n  };\n  StringStream.prototype.indentation = function () {\n    return countColumn(this.string, null, this.tabSize) -\n      (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n  };\n  StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n    if (typeof pattern == \"string\") {\n      var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n      var substr = this.string.substr(this.pos, pattern.length);\n      if (cased(substr) == cased(pattern)) {\n        if (consume !== false) { this.pos += pattern.length; }\n        return true\n      }\n    } else {\n      var match = this.string.slice(this.pos).match(pattern);\n      if (match && match.index > 0) { return null }\n      if (match && consume !== false) { this.pos += match[0].length; }\n      return match\n    }\n  };\n  StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\n  StringStream.prototype.hideFirstChars = function (n, inner) {\n    this.lineStart += n;\n    try { return inner() }\n    finally { this.lineStart -= n; }\n  };\n  StringStream.prototype.lookAhead = function (n) {\n    var oracle = this.lineOracle;\n    return oracle && oracle.lookAhead(n)\n  };\n  StringStream.prototype.baseToken = function () {\n    var oracle = this.lineOracle;\n    return oracle && oracle.baseToken(this.pos)\n  };\n\n  // Find the line object corresponding to the given line number.\n  function getLine(doc, n) {\n    n -= doc.first;\n    if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n    var chunk = doc;\n    while (!chunk.lines) {\n      for (var i = 0;; ++i) {\n        var child = chunk.children[i], sz = child.chunkSize();\n        if (n < sz) { chunk = child; break }\n        n -= sz;\n      }\n    }\n    return chunk.lines[n]\n  }\n\n  // Get the part of a document between two positions, as an array of\n  // strings.\n  function getBetween(doc, start, end) {\n    var out = [], n = start.line;\n    doc.iter(start.line, end.line + 1, function (line) {\n      var text = line.text;\n      if (n == end.line) { text = text.slice(0, end.ch); }\n      if (n == start.line) { text = text.slice(start.ch); }\n      out.push(text);\n      ++n;\n    });\n    return out\n  }\n  // Get the lines between from and to, as array of strings.\n  function getLines(doc, from, to) {\n    var out = [];\n    doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n    return out\n  }\n\n  // Update the height of a line, propagating the height change\n  // upwards to parent nodes.\n  function updateLineHeight(line, height) {\n    var diff = height - line.height;\n    if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n  }\n\n  // Given a line object, find its line number by walking up through\n  // its parent links.\n  function lineNo(line) {\n    if (line.parent == null) { return null }\n    var cur = line.parent, no = indexOf(cur.lines, line);\n    for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n      for (var i = 0;; ++i) {\n        if (chunk.children[i] == cur) { break }\n        no += chunk.children[i].chunkSize();\n      }\n    }\n    return no + cur.first\n  }\n\n  // Find the line at the given vertical position, using the height\n  // information in the document tree.\n  function lineAtHeight(chunk, h) {\n    var n = chunk.first;\n    outer: do {\n      for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n        var child = chunk.children[i$1], ch = child.height;\n        if (h < ch) { chunk = child; continue outer }\n        h -= ch;\n        n += child.chunkSize();\n      }\n      return n\n    } while (!chunk.lines)\n    var i = 0;\n    for (; i < chunk.lines.length; ++i) {\n      var line = chunk.lines[i], lh = line.height;\n      if (h < lh) { break }\n      h -= lh;\n    }\n    return n + i\n  }\n\n  function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\n  function lineNumberFor(options, i) {\n    return String(options.lineNumberFormatter(i + options.firstLineNumber))\n  }\n\n  // A Pos instance represents a position within the text.\n  function Pos(line, ch, sticky) {\n    if ( sticky === void 0 ) sticky = null;\n\n    if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n    this.line = line;\n    this.ch = ch;\n    this.sticky = sticky;\n  }\n\n  // Compare two positions, return 0 if they are the same, a negative\n  // number when a is less, and a positive number otherwise.\n  function cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\n  function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\n  function copyPos(x) {return Pos(x.line, x.ch)}\n  function maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\n  function minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n  // Most of the external API clips given positions to make sure they\n  // actually exist within the document.\n  function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\n  function clipPos(doc, pos) {\n    if (pos.line < doc.first) { return Pos(doc.first, 0) }\n    var last = doc.first + doc.size - 1;\n    if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n    return clipToLen(pos, getLine(doc, pos.line).text.length)\n  }\n  function clipToLen(pos, linelen) {\n    var ch = pos.ch;\n    if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n    else if (ch < 0) { return Pos(pos.line, 0) }\n    else { return pos }\n  }\n  function clipPosArray(doc, array) {\n    var out = [];\n    for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n    return out\n  }\n\n  var SavedContext = function(state, lookAhead) {\n    this.state = state;\n    this.lookAhead = lookAhead;\n  };\n\n  var Context = function(doc, state, line, lookAhead) {\n    this.state = state;\n    this.doc = doc;\n    this.line = line;\n    this.maxLookAhead = lookAhead || 0;\n    this.baseTokens = null;\n    this.baseTokenPos = 1;\n  };\n\n  Context.prototype.lookAhead = function (n) {\n    var line = this.doc.getLine(this.line + n);\n    if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; }\n    return line\n  };\n\n  Context.prototype.baseToken = function (n) {\n    if (!this.baseTokens) { return null }\n    while (this.baseTokens[this.baseTokenPos] <= n)\n      { this.baseTokenPos += 2; }\n    var type = this.baseTokens[this.baseTokenPos + 1];\n    return {type: type && type.replace(/( |^)overlay .*/, \"\"),\n            size: this.baseTokens[this.baseTokenPos] - n}\n  };\n\n  Context.prototype.nextLine = function () {\n    this.line++;\n    if (this.maxLookAhead > 0) { this.maxLookAhead--; }\n  };\n\n  Context.fromSaved = function (doc, saved, line) {\n    if (saved instanceof SavedContext)\n      { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) }\n    else\n      { return new Context(doc, copyState(doc.mode, saved), line) }\n  };\n\n  Context.prototype.save = function (copy) {\n    var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n    return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state\n  };\n\n\n  // Compute a style array (an array starting with a mode generation\n  // -- for invalidation -- followed by pairs of end positions and\n  // style strings), which is used to highlight the tokens on the\n  // line.\n  function highlightLine(cm, line, context, forceToEnd) {\n    // A styles array always starts with a number identifying the\n    // mode/overlays that it is based on (for easy invalidation).\n    var st = [cm.state.modeGen], lineClasses = {};\n    // Compute the base array of styles\n    runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); },\n            lineClasses, forceToEnd);\n    var state = context.state;\n\n    // Run overlays, adjust style array.\n    var loop = function ( o ) {\n      context.baseTokens = st;\n      var overlay = cm.state.overlays[o], i = 1, at = 0;\n      context.state = true;\n      runMode(cm, line.text, overlay.mode, context, function (end, style) {\n        var start = i;\n        // Ensure there's a token end at the current position, and that i points at it\n        while (at < end) {\n          var i_end = st[i];\n          if (i_end > end)\n            { st.splice(i, 1, end, st[i+1], i_end); }\n          i += 2;\n          at = Math.min(end, i_end);\n        }\n        if (!style) { return }\n        if (overlay.opaque) {\n          st.splice(start, i - start, end, \"overlay \" + style);\n          i = start + 2;\n        } else {\n          for (; start < i; start += 2) {\n            var cur = st[start+1];\n            st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n          }\n        }\n      }, lineClasses);\n      context.state = state;\n      context.baseTokens = null;\n      context.baseTokenPos = 1;\n    };\n\n    for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\n\n    return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n  }\n\n  function getLineStyles(cm, line, updateFrontier) {\n    if (!line.styles || line.styles[0] != cm.state.modeGen) {\n      var context = getContextBefore(cm, lineNo(line));\n      var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n      var result = highlightLine(cm, line, context);\n      if (resetState) { context.state = resetState; }\n      line.stateAfter = context.save(!resetState);\n      line.styles = result.styles;\n      if (result.classes) { line.styleClasses = result.classes; }\n      else if (line.styleClasses) { line.styleClasses = null; }\n      if (updateFrontier === cm.doc.highlightFrontier)\n        { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); }\n    }\n    return line.styles\n  }\n\n  function getContextBefore(cm, n, precise) {\n    var doc = cm.doc, display = cm.display;\n    if (!doc.mode.startState) { return new Context(doc, true, n) }\n    var start = findStartLine(cm, n, precise);\n    var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n    var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n\n    doc.iter(start, n, function (line) {\n      processLine(cm, line.text, context);\n      var pos = context.line;\n      line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n      context.nextLine();\n    });\n    if (precise) { doc.modeFrontier = context.line; }\n    return context\n  }\n\n  // Lightweight form of highlight -- proceed over this line and\n  // update state, but don't save a style array. Used for lines that\n  // aren't currently visible.\n  function processLine(cm, text, context, startAt) {\n    var mode = cm.doc.mode;\n    var stream = new StringStream(text, cm.options.tabSize, context);\n    stream.start = stream.pos = startAt || 0;\n    if (text == \"\") { callBlankLine(mode, context.state); }\n    while (!stream.eol()) {\n      readToken(mode, stream, context.state);\n      stream.start = stream.pos;\n    }\n  }\n\n  function callBlankLine(mode, state) {\n    if (mode.blankLine) { return mode.blankLine(state) }\n    if (!mode.innerMode) { return }\n    var inner = innerMode(mode, state);\n    if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n  }\n\n  function readToken(mode, stream, state, inner) {\n    for (var i = 0; i < 10; i++) {\n      if (inner) { inner[0] = innerMode(mode, state).mode; }\n      var style = mode.token(stream, state);\n      if (stream.pos > stream.start) { return style }\n    }\n    throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n  }\n\n  var Token = function(stream, type, state) {\n    this.start = stream.start; this.end = stream.pos;\n    this.string = stream.current();\n    this.type = type || null;\n    this.state = state;\n  };\n\n  // Utility for getTokenAt and getLineTokens\n  function takeToken(cm, pos, precise, asArray) {\n    var doc = cm.doc, mode = doc.mode, style;\n    pos = clipPos(doc, pos);\n    var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise);\n    var stream = new StringStream(line.text, cm.options.tabSize, context), tokens;\n    if (asArray) { tokens = []; }\n    while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n      stream.start = stream.pos;\n      style = readToken(mode, stream, context.state);\n      if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); }\n    }\n    return asArray ? tokens : new Token(stream, style, context.state)\n  }\n\n  function extractLineClasses(type, output) {\n    if (type) { for (;;) {\n      var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n      if (!lineClass) { break }\n      type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n      var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n      if (output[prop] == null)\n        { output[prop] = lineClass[2]; }\n      else if (!(new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\")).test(output[prop]))\n        { output[prop] += \" \" + lineClass[2]; }\n    } }\n    return type\n  }\n\n  // Run the given mode's parser over a line, calling f for each token.\n  function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n    var flattenSpans = mode.flattenSpans;\n    if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n    var curStart = 0, curStyle = null;\n    var stream = new StringStream(text, cm.options.tabSize, context), style;\n    var inner = cm.options.addModeClass && [null];\n    if (text == \"\") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); }\n    while (!stream.eol()) {\n      if (stream.pos > cm.options.maxHighlightLength) {\n        flattenSpans = false;\n        if (forceToEnd) { processLine(cm, text, context, stream.pos); }\n        stream.pos = text.length;\n        style = null;\n      } else {\n        style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n      }\n      if (inner) {\n        var mName = inner[0].name;\n        if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\n      }\n      if (!flattenSpans || curStyle != style) {\n        while (curStart < stream.start) {\n          curStart = Math.min(stream.start, curStart + 5000);\n          f(curStart, curStyle);\n        }\n        curStyle = style;\n      }\n      stream.start = stream.pos;\n    }\n    while (curStart < stream.pos) {\n      // Webkit seems to refuse to render text nodes longer than 57444\n      // characters, and returns inaccurate measurements in nodes\n      // starting around 5000 chars.\n      var pos = Math.min(stream.pos, curStart + 5000);\n      f(pos, curStyle);\n      curStart = pos;\n    }\n  }\n\n  // Finds the line to start with when starting a parse. Tries to\n  // find a line with a stateAfter, so that it can start with a\n  // valid state. If that fails, it returns the line with the\n  // smallest indentation, which tends to need the least context to\n  // parse correctly.\n  function findStartLine(cm, n, precise) {\n    var minindent, minline, doc = cm.doc;\n    var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n    for (var search = n; search > lim; --search) {\n      if (search <= doc.first) { return doc.first }\n      var line = getLine(doc, search - 1), after = line.stateAfter;\n      if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))\n        { return search }\n      var indented = countColumn(line.text, null, cm.options.tabSize);\n      if (minline == null || minindent > indented) {\n        minline = search - 1;\n        minindent = indented;\n      }\n    }\n    return minline\n  }\n\n  function retreatFrontier(doc, n) {\n    doc.modeFrontier = Math.min(doc.modeFrontier, n);\n    if (doc.highlightFrontier < n - 10) { return }\n    var start = doc.first;\n    for (var line = n - 1; line > start; line--) {\n      var saved = getLine(doc, line).stateAfter;\n      // change is on 3\n      // state on line 1 looked ahead 2 -- so saw 3\n      // test 1 + 2 < 3 should cover this\n      if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n        start = line + 1;\n        break\n      }\n    }\n    doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n  }\n\n  // Optimize some code when these features are not used.\n  var sawReadOnlySpans = false, sawCollapsedSpans = false;\n\n  function seeReadOnlySpans() {\n    sawReadOnlySpans = true;\n  }\n\n  function seeCollapsedSpans() {\n    sawCollapsedSpans = true;\n  }\n\n  // TEXTMARKER SPANS\n\n  function MarkedSpan(marker, from, to) {\n    this.marker = marker;\n    this.from = from; this.to = to;\n  }\n\n  // Search an array of spans for a span matching the given marker.\n  function getMarkedSpanFor(spans, marker) {\n    if (spans) { for (var i = 0; i < spans.length; ++i) {\n      var span = spans[i];\n      if (span.marker == marker) { return span }\n    } }\n  }\n  // Remove a span from an array, returning undefined if no spans are\n  // left (we don't store arrays for lines without spans).\n  function removeMarkedSpan(spans, span) {\n    var r;\n    for (var i = 0; i < spans.length; ++i)\n      { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n    return r\n  }\n  // Add a span to a line.\n  function addMarkedSpan(line, span) {\n    line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n    span.marker.attachLine(line);\n  }\n\n  // Used for the algorithm that adjusts markers for a change in the\n  // document. These functions cut an array of spans at a given\n  // character position, returning an array of remaining chunks (or\n  // undefined if nothing remains).\n  function markedSpansBefore(old, startCh, isInsert) {\n    var nw;\n    if (old) { for (var i = 0; i < old.length; ++i) {\n      var span = old[i], marker = span.marker;\n      var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n      if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n        var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh)\n        ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n      }\n    } }\n    return nw\n  }\n  function markedSpansAfter(old, endCh, isInsert) {\n    var nw;\n    if (old) { for (var i = 0; i < old.length; ++i) {\n      var span = old[i], marker = span.marker;\n      var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n      if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n        var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh)\n        ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n                                              span.to == null ? null : span.to - endCh));\n      }\n    } }\n    return nw\n  }\n\n  // Given a change object, compute the new set of marker spans that\n  // cover the line in which the change took place. Removes spans\n  // entirely within the change, reconnects spans belonging to the\n  // same marker that appear on both sides of the change, and cuts off\n  // spans partially within the change. Returns an array of span\n  // arrays with one element for each line in (after) the change.\n  function stretchSpansOverChange(doc, change) {\n    if (change.full) { return null }\n    var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n    var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n    if (!oldFirst && !oldLast) { return null }\n\n    var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n    // Get the spans that 'stick out' on both sides\n    var first = markedSpansBefore(oldFirst, startCh, isInsert);\n    var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n    // Next, merge those two ends\n    var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n    if (first) {\n      // Fix up .to properties of first\n      for (var i = 0; i < first.length; ++i) {\n        var span = first[i];\n        if (span.to == null) {\n          var found = getMarkedSpanFor(last, span.marker);\n          if (!found) { span.to = startCh; }\n          else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\n        }\n      }\n    }\n    if (last) {\n      // Fix up .from in last (or move them into first in case of sameLine)\n      for (var i$1 = 0; i$1 < last.length; ++i$1) {\n        var span$1 = last[i$1];\n        if (span$1.to != null) { span$1.to += offset; }\n        if (span$1.from == null) {\n          var found$1 = getMarkedSpanFor(first, span$1.marker);\n          if (!found$1) {\n            span$1.from = offset;\n            if (sameLine) { (first || (first = [])).push(span$1); }\n          }\n        } else {\n          span$1.from += offset;\n          if (sameLine) { (first || (first = [])).push(span$1); }\n        }\n      }\n    }\n    // Make sure we didn't create any zero-length spans\n    if (first) { first = clearEmptySpans(first); }\n    if (last && last != first) { last = clearEmptySpans(last); }\n\n    var newMarkers = [first];\n    if (!sameLine) {\n      // Fill gap with whole-line-spans\n      var gap = change.text.length - 2, gapMarkers;\n      if (gap > 0 && first)\n        { for (var i$2 = 0; i$2 < first.length; ++i$2)\n          { if (first[i$2].to == null)\n            { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\n      for (var i$3 = 0; i$3 < gap; ++i$3)\n        { newMarkers.push(gapMarkers); }\n      newMarkers.push(last);\n    }\n    return newMarkers\n  }\n\n  // Remove spans that are empty and don't have a clearWhenEmpty\n  // option of false.\n  function clearEmptySpans(spans) {\n    for (var i = 0; i < spans.length; ++i) {\n      var span = spans[i];\n      if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n        { spans.splice(i--, 1); }\n    }\n    if (!spans.length) { return null }\n    return spans\n  }\n\n  // Used to 'clip' out readOnly ranges when making a change.\n  function removeReadOnlyRanges(doc, from, to) {\n    var markers = null;\n    doc.iter(from.line, to.line + 1, function (line) {\n      if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n        var mark = line.markedSpans[i].marker;\n        if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n          { (markers || (markers = [])).push(mark); }\n      } }\n    });\n    if (!markers) { return null }\n    var parts = [{from: from, to: to}];\n    for (var i = 0; i < markers.length; ++i) {\n      var mk = markers[i], m = mk.find(0);\n      for (var j = 0; j < parts.length; ++j) {\n        var p = parts[j];\n        if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n        var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n        if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n          { newParts.push({from: p.from, to: m.from}); }\n        if (dto > 0 || !mk.inclusiveRight && !dto)\n          { newParts.push({from: m.to, to: p.to}); }\n        parts.splice.apply(parts, newParts);\n        j += newParts.length - 3;\n      }\n    }\n    return parts\n  }\n\n  // Connect or disconnect spans from a line.\n  function detachMarkedSpans(line) {\n    var spans = line.markedSpans;\n    if (!spans) { return }\n    for (var i = 0; i < spans.length; ++i)\n      { spans[i].marker.detachLine(line); }\n    line.markedSpans = null;\n  }\n  function attachMarkedSpans(line, spans) {\n    if (!spans) { return }\n    for (var i = 0; i < spans.length; ++i)\n      { spans[i].marker.attachLine(line); }\n    line.markedSpans = spans;\n  }\n\n  // Helpers used when computing which overlapping collapsed span\n  // counts as the larger one.\n  function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\n  function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n  // Returns a number indicating which of two overlapping collapsed\n  // spans is larger (and thus includes the other). Falls back to\n  // comparing ids when the spans cover exactly the same range.\n  function compareCollapsedMarkers(a, b) {\n    var lenDiff = a.lines.length - b.lines.length;\n    if (lenDiff != 0) { return lenDiff }\n    var aPos = a.find(), bPos = b.find();\n    var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n    if (fromCmp) { return -fromCmp }\n    var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n    if (toCmp) { return toCmp }\n    return b.id - a.id\n  }\n\n  // Find out whether a line ends or starts in a collapsed span. If\n  // so, return the marker for that span.\n  function collapsedSpanAtSide(line, start) {\n    var sps = sawCollapsedSpans && line.markedSpans, found;\n    if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n      sp = sps[i];\n      if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n          (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n        { found = sp.marker; }\n    } }\n    return found\n  }\n  function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\n  function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n  function collapsedSpanAround(line, ch) {\n    var sps = sawCollapsedSpans && line.markedSpans, found;\n    if (sps) { for (var i = 0; i < sps.length; ++i) {\n      var sp = sps[i];\n      if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) &&\n          (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; }\n    } }\n    return found\n  }\n\n  // Test whether there exists a collapsed span that partially\n  // overlaps (covers the start or end, but not both) of a new span.\n  // Such overlap is not allowed.\n  function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n    var line = getLine(doc, lineNo);\n    var sps = sawCollapsedSpans && line.markedSpans;\n    if (sps) { for (var i = 0; i < sps.length; ++i) {\n      var sp = sps[i];\n      if (!sp.marker.collapsed) { continue }\n      var found = sp.marker.find(0);\n      var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n      var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n      if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n      if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n          fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n        { return true }\n    } }\n  }\n\n  // A visual line is a line as drawn on the screen. Folding, for\n  // example, can cause multiple logical lines to appear on the same\n  // visual line. This finds the start of the visual line that the\n  // given line is part of (usually that is the line itself).\n  function visualLine(line) {\n    var merged;\n    while (merged = collapsedSpanAtStart(line))\n      { line = merged.find(-1, true).line; }\n    return line\n  }\n\n  function visualLineEnd(line) {\n    var merged;\n    while (merged = collapsedSpanAtEnd(line))\n      { line = merged.find(1, true).line; }\n    return line\n  }\n\n  // Returns an array of logical lines that continue the visual line\n  // started by the argument, or undefined if there are no such lines.\n  function visualLineContinued(line) {\n    var merged, lines;\n    while (merged = collapsedSpanAtEnd(line)) {\n      line = merged.find(1, true).line\n      ;(lines || (lines = [])).push(line);\n    }\n    return lines\n  }\n\n  // Get the line number of the start of the visual line that the\n  // given line number is part of.\n  function visualLineNo(doc, lineN) {\n    var line = getLine(doc, lineN), vis = visualLine(line);\n    if (line == vis) { return lineN }\n    return lineNo(vis)\n  }\n\n  // Get the line number of the start of the next visual line after\n  // the given line.\n  function visualLineEndNo(doc, lineN) {\n    if (lineN > doc.lastLine()) { return lineN }\n    var line = getLine(doc, lineN), merged;\n    if (!lineIsHidden(doc, line)) { return lineN }\n    while (merged = collapsedSpanAtEnd(line))\n      { line = merged.find(1, true).line; }\n    return lineNo(line) + 1\n  }\n\n  // Compute whether a line is hidden. Lines count as hidden when they\n  // are part of a visual line that starts with another line, or when\n  // they are entirely covered by collapsed, non-widget span.\n  function lineIsHidden(doc, line) {\n    var sps = sawCollapsedSpans && line.markedSpans;\n    if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n      sp = sps[i];\n      if (!sp.marker.collapsed) { continue }\n      if (sp.from == null) { return true }\n      if (sp.marker.widgetNode) { continue }\n      if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n        { return true }\n    } }\n  }\n  function lineIsHiddenInner(doc, line, span) {\n    if (span.to == null) {\n      var end = span.marker.find(1, true);\n      return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n    }\n    if (span.marker.inclusiveRight && span.to == line.text.length)\n      { return true }\n    for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n      sp = line.markedSpans[i];\n      if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n          (sp.to == null || sp.to != span.from) &&\n          (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n          lineIsHiddenInner(doc, line, sp)) { return true }\n    }\n  }\n\n  // Find the height above the given line.\n  function heightAtLine(lineObj) {\n    lineObj = visualLine(lineObj);\n\n    var h = 0, chunk = lineObj.parent;\n    for (var i = 0; i < chunk.lines.length; ++i) {\n      var line = chunk.lines[i];\n      if (line == lineObj) { break }\n      else { h += line.height; }\n    }\n    for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n      for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n        var cur = p.children[i$1];\n        if (cur == chunk) { break }\n        else { h += cur.height; }\n      }\n    }\n    return h\n  }\n\n  // Compute the character length of a line, taking into account\n  // collapsed ranges (see markText) that might hide parts, and join\n  // other lines onto it.\n  function lineLength(line) {\n    if (line.height == 0) { return 0 }\n    var len = line.text.length, merged, cur = line;\n    while (merged = collapsedSpanAtStart(cur)) {\n      var found = merged.find(0, true);\n      cur = found.from.line;\n      len += found.from.ch - found.to.ch;\n    }\n    cur = line;\n    while (merged = collapsedSpanAtEnd(cur)) {\n      var found$1 = merged.find(0, true);\n      len -= cur.text.length - found$1.from.ch;\n      cur = found$1.to.line;\n      len += cur.text.length - found$1.to.ch;\n    }\n    return len\n  }\n\n  // Find the longest line in the document.\n  function findMaxLine(cm) {\n    var d = cm.display, doc = cm.doc;\n    d.maxLine = getLine(doc, doc.first);\n    d.maxLineLength = lineLength(d.maxLine);\n    d.maxLineChanged = true;\n    doc.iter(function (line) {\n      var len = lineLength(line);\n      if (len > d.maxLineLength) {\n        d.maxLineLength = len;\n        d.maxLine = line;\n      }\n    });\n  }\n\n  // LINE DATA STRUCTURE\n\n  // Line objects. These hold state related to a line, including\n  // highlighting info (the styles array).\n  var Line = function(text, markedSpans, estimateHeight) {\n    this.text = text;\n    attachMarkedSpans(this, markedSpans);\n    this.height = estimateHeight ? estimateHeight(this) : 1;\n  };\n\n  Line.prototype.lineNo = function () { return lineNo(this) };\n  eventMixin(Line);\n\n  // Change the content (text, markers) of a line. Automatically\n  // invalidates cached information and tries to re-estimate the\n  // line's height.\n  function updateLine(line, text, markedSpans, estimateHeight) {\n    line.text = text;\n    if (line.stateAfter) { line.stateAfter = null; }\n    if (line.styles) { line.styles = null; }\n    if (line.order != null) { line.order = null; }\n    detachMarkedSpans(line);\n    attachMarkedSpans(line, markedSpans);\n    var estHeight = estimateHeight ? estimateHeight(line) : 1;\n    if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n  }\n\n  // Detach a line from the document tree and its markers.\n  function cleanUpLine(line) {\n    line.parent = null;\n    detachMarkedSpans(line);\n  }\n\n  // Convert a style as returned by a mode (either null, or a string\n  // containing one or more styles) to a CSS style. This is cached,\n  // and also looks for line-wide styles.\n  var styleToClassCache = {}, styleToClassCacheWithMode = {};\n  function interpretTokenStyle(style, options) {\n    if (!style || /^\\s*$/.test(style)) { return null }\n    var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n    return cache[style] ||\n      (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n  }\n\n  // Render the DOM representation of the text of a line. Also builds\n  // up a 'line map', which points at the DOM nodes that represent\n  // specific stretches of text, and is used by the measuring code.\n  // The returned object contains the DOM node, this map, and\n  // information about line-wide styles that were set by the mode.\n  function buildLineContent(cm, lineView) {\n    // The padding-right forces the element to have a 'border', which\n    // is needed on Webkit to be able to get line-level bounding\n    // rectangles for it (in measureChar).\n    var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n    var builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n                   col: 0, pos: 0, cm: cm,\n                   trailingSpace: false,\n                   splitSpaces: cm.getOption(\"lineWrapping\")};\n    lineView.measure = {};\n\n    // Iterate over the logical lines that make up this visual line.\n    for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n      var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n      builder.pos = 0;\n      builder.addToken = buildToken;\n      // Optionally wire in some hacks into the token-rendering\n      // algorithm, to deal with browser quirks.\n      if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n        { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n      builder.map = [];\n      var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n      insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n      if (line.styleClasses) {\n        if (line.styleClasses.bgClass)\n          { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n        if (line.styleClasses.textClass)\n          { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n      }\n\n      // Ensure at least a single node is present, for measuring.\n      if (builder.map.length == 0)\n        { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n      // Store the map and a cache object for the current logical line\n      if (i == 0) {\n        lineView.measure.map = builder.map;\n        lineView.measure.cache = {};\n      } else {\n  (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n        ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\n      }\n    }\n\n    // See issue #2901\n    if (webkit) {\n      var last = builder.content.lastChild;\n      if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n        { builder.content.className = \"cm-tab-wrap-hack\"; }\n    }\n\n    signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n    if (builder.pre.className)\n      { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\n\n    return builder\n  }\n\n  function defaultSpecialCharPlaceholder(ch) {\n    var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n    token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n    token.setAttribute(\"aria-label\", token.title);\n    return token\n  }\n\n  // Build up the DOM representation for a single token, and add it to\n  // the line map. Takes care to render special characters separately.\n  function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n    if (!text) { return }\n    var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n    var special = builder.cm.state.specialChars, mustWrap = false;\n    var content;\n    if (!special.test(text)) {\n      builder.col += text.length;\n      content = document.createTextNode(displayText);\n      builder.map.push(builder.pos, builder.pos + text.length, content);\n      if (ie && ie_version < 9) { mustWrap = true; }\n      builder.pos += text.length;\n    } else {\n      content = document.createDocumentFragment();\n      var pos = 0;\n      while (true) {\n        special.lastIndex = pos;\n        var m = special.exec(text);\n        var skipped = m ? m.index - pos : text.length - pos;\n        if (skipped) {\n          var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n          if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n          else { content.appendChild(txt); }\n          builder.map.push(builder.pos, builder.pos + skipped, txt);\n          builder.col += skipped;\n          builder.pos += skipped;\n        }\n        if (!m) { break }\n        pos += skipped + 1;\n        var txt$1 = (void 0);\n        if (m[0] == \"\\t\") {\n          var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n          txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n          txt$1.setAttribute(\"role\", \"presentation\");\n          txt$1.setAttribute(\"cm-text\", \"\\t\");\n          builder.col += tabWidth;\n        } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n          txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n          txt$1.setAttribute(\"cm-text\", m[0]);\n          builder.col += 1;\n        } else {\n          txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n          txt$1.setAttribute(\"cm-text\", m[0]);\n          if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n          else { content.appendChild(txt$1); }\n          builder.col += 1;\n        }\n        builder.map.push(builder.pos, builder.pos + 1, txt$1);\n        builder.pos++;\n      }\n    }\n    builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n    if (style || startStyle || endStyle || mustWrap || css || attributes) {\n      var fullStyle = style || \"\";\n      if (startStyle) { fullStyle += startStyle; }\n      if (endStyle) { fullStyle += endStyle; }\n      var token = elt(\"span\", [content], fullStyle, css);\n      if (attributes) {\n        for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\")\n          { token.setAttribute(attr, attributes[attr]); } }\n      }\n      return builder.content.appendChild(token)\n    }\n    builder.content.appendChild(content);\n  }\n\n  // Change some spaces to NBSP to prevent the browser from collapsing\n  // trailing spaces at the end of a line when rendering text (issue #1362).\n  function splitSpaces(text, trailingBefore) {\n    if (text.length > 1 && !/  /.test(text)) { return text }\n    var spaceBefore = trailingBefore, result = \"\";\n    for (var i = 0; i < text.length; i++) {\n      var ch = text.charAt(i);\n      if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n        { ch = \"\\u00a0\"; }\n      result += ch;\n      spaceBefore = ch == \" \";\n    }\n    return result\n  }\n\n  // Work around nonsense dimensions being reported for stretches of\n  // right-to-left text.\n  function buildTokenBadBidi(inner, order) {\n    return function (builder, text, style, startStyle, endStyle, css, attributes) {\n      style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n      var start = builder.pos, end = start + text.length;\n      for (;;) {\n        // Find the part that overlaps with the start of this text\n        var part = (void 0);\n        for (var i = 0; i < order.length; i++) {\n          part = order[i];\n          if (part.to > start && part.from <= start) { break }\n        }\n        if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, css, attributes) }\n        inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n        startStyle = null;\n        text = text.slice(part.to - start);\n        start = part.to;\n      }\n    }\n  }\n\n  function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n    var widget = !ignoreWidget && marker.widgetNode;\n    if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n    if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n      if (!widget)\n        { widget = builder.content.appendChild(document.createElement(\"span\")); }\n      widget.setAttribute(\"cm-marker\", marker.id);\n    }\n    if (widget) {\n      builder.cm.display.input.setUneditable(widget);\n      builder.content.appendChild(widget);\n    }\n    builder.pos += size;\n    builder.trailingSpace = false;\n  }\n\n  // Outputs a number of spans to make up a line, taking highlighting\n  // and marked text into account.\n  function insertLineContent(line, builder, styles) {\n    var spans = line.markedSpans, allText = line.text, at = 0;\n    if (!spans) {\n      for (var i$1 = 1; i$1 < styles.length; i$1+=2)\n        { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\n      return\n    }\n\n    var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n    var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes;\n    for (;;) {\n      if (nextChange == pos) { // Update current marker set\n        spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n        attributes = null;\n        collapsed = null; nextChange = Infinity;\n        var foundBookmarks = [], endStyles = (void 0);\n        for (var j = 0; j < spans.length; ++j) {\n          var sp = spans[j], m = sp.marker;\n          if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n            foundBookmarks.push(m);\n          } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n            if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n              nextChange = sp.to;\n              spanEndStyle = \"\";\n            }\n            if (m.className) { spanStyle += \" \" + m.className; }\n            if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n            if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n            if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n            // support for the old title property\n            // https://github.com/codemirror/CodeMirror/pull/5673\n            if (m.title) { (attributes || (attributes = {})).title = m.title; }\n            if (m.attributes) {\n              for (var attr in m.attributes)\n                { (attributes || (attributes = {}))[attr] = m.attributes[attr]; }\n            }\n            if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n              { collapsed = sp; }\n          } else if (sp.from > pos && nextChange > sp.from) {\n            nextChange = sp.from;\n          }\n        }\n        if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n          { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n        if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n          { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n        if (collapsed && (collapsed.from || 0) == pos) {\n          buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n                             collapsed.marker, collapsed.from == null);\n          if (collapsed.to == null) { return }\n          if (collapsed.to == pos) { collapsed = false; }\n        }\n      }\n      if (pos >= len) { break }\n\n      var upto = Math.min(len, nextChange);\n      while (true) {\n        if (text) {\n          var end = pos + text.length;\n          if (!collapsed) {\n            var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n            builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n                             spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n          }\n          if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n          pos = end;\n          spanStartStyle = \"\";\n        }\n        text = allText.slice(at, at = styles[i++]);\n        style = interpretTokenStyle(styles[i++], builder.cm.options);\n      }\n    }\n  }\n\n\n  // These objects are used to represent the visible (currently drawn)\n  // part of the document. A LineView may correspond to multiple\n  // logical lines, if those are connected by collapsed ranges.\n  function LineView(doc, line, lineN) {\n    // The starting line\n    this.line = line;\n    // Continuing lines, if any\n    this.rest = visualLineContinued(line);\n    // Number of logical lines in this visual line\n    this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n    this.node = this.text = null;\n    this.hidden = lineIsHidden(doc, line);\n  }\n\n  // Create a range of LineView objects for the given lines.\n  function buildViewArray(cm, from, to) {\n    var array = [], nextPos;\n    for (var pos = from; pos < to; pos = nextPos) {\n      var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n      nextPos = pos + view.size;\n      array.push(view);\n    }\n    return array\n  }\n\n  var operationGroup = null;\n\n  function pushOperation(op) {\n    if (operationGroup) {\n      operationGroup.ops.push(op);\n    } else {\n      op.ownsGroup = operationGroup = {\n        ops: [op],\n        delayedCallbacks: []\n      };\n    }\n  }\n\n  function fireCallbacksForOps(group) {\n    // Calls delayed callbacks and cursorActivity handlers until no\n    // new ones appear\n    var callbacks = group.delayedCallbacks, i = 0;\n    do {\n      for (; i < callbacks.length; i++)\n        { callbacks[i].call(null); }\n      for (var j = 0; j < group.ops.length; j++) {\n        var op = group.ops[j];\n        if (op.cursorActivityHandlers)\n          { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n            { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n      }\n    } while (i < callbacks.length)\n  }\n\n  function finishOperation(op, endCb) {\n    var group = op.ownsGroup;\n    if (!group) { return }\n\n    try { fireCallbacksForOps(group); }\n    finally {\n      operationGroup = null;\n      endCb(group);\n    }\n  }\n\n  var orphanDelayedCallbacks = null;\n\n  // Often, we want to signal events at a point where we are in the\n  // middle of some work, but don't want the handler to start calling\n  // other methods on the editor, which might be in an inconsistent\n  // state or simply not expect any other events to happen.\n  // signalLater looks whether there are any handlers, and schedules\n  // them to be executed when the last operation ends, or, if no\n  // operation is active, when a timeout fires.\n  function signalLater(emitter, type /*, values...*/) {\n    var arr = getHandlers(emitter, type);\n    if (!arr.length) { return }\n    var args = Array.prototype.slice.call(arguments, 2), list;\n    if (operationGroup) {\n      list = operationGroup.delayedCallbacks;\n    } else if (orphanDelayedCallbacks) {\n      list = orphanDelayedCallbacks;\n    } else {\n      list = orphanDelayedCallbacks = [];\n      setTimeout(fireOrphanDelayed, 0);\n    }\n    var loop = function ( i ) {\n      list.push(function () { return arr[i].apply(null, args); });\n    };\n\n    for (var i = 0; i < arr.length; ++i)\n      loop( i );\n  }\n\n  function fireOrphanDelayed() {\n    var delayed = orphanDelayedCallbacks;\n    orphanDelayedCallbacks = null;\n    for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n  }\n\n  // When an aspect of a line changes, a string is added to\n  // lineView.changes. This updates the relevant part of the line's\n  // DOM structure.\n  function updateLineForChanges(cm, lineView, lineN, dims) {\n    for (var j = 0; j < lineView.changes.length; j++) {\n      var type = lineView.changes[j];\n      if (type == \"text\") { updateLineText(cm, lineView); }\n      else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n      else if (type == \"class\") { updateLineClasses(cm, lineView); }\n      else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n    }\n    lineView.changes = null;\n  }\n\n  // Lines with gutter elements, widgets or a background class need to\n  // be wrapped, and have the extra elements added to the wrapper div\n  function ensureLineWrapped(lineView) {\n    if (lineView.node == lineView.text) {\n      lineView.node = elt(\"div\", null, null, \"position: relative\");\n      if (lineView.text.parentNode)\n        { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n      lineView.node.appendChild(lineView.text);\n      if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\n    }\n    return lineView.node\n  }\n\n  function updateLineBackground(cm, lineView) {\n    var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n    if (cls) { cls += \" CodeMirror-linebackground\"; }\n    if (lineView.background) {\n      if (cls) { lineView.background.className = cls; }\n      else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n    } else if (cls) {\n      var wrap = ensureLineWrapped(lineView);\n      lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n      cm.display.input.setUneditable(lineView.background);\n    }\n  }\n\n  // Wrapper around buildLineContent which will reuse the structure\n  // in display.externalMeasured when possible.\n  function getLineContent(cm, lineView) {\n    var ext = cm.display.externalMeasured;\n    if (ext && ext.line == lineView.line) {\n      cm.display.externalMeasured = null;\n      lineView.measure = ext.measure;\n      return ext.built\n    }\n    return buildLineContent(cm, lineView)\n  }\n\n  // Redraw the line's text. Interacts with the background and text\n  // classes because the mode may output tokens that influence these\n  // classes.\n  function updateLineText(cm, lineView) {\n    var cls = lineView.text.className;\n    var built = getLineContent(cm, lineView);\n    if (lineView.text == lineView.node) { lineView.node = built.pre; }\n    lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n    lineView.text = built.pre;\n    if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n      lineView.bgClass = built.bgClass;\n      lineView.textClass = built.textClass;\n      updateLineClasses(cm, lineView);\n    } else if (cls) {\n      lineView.text.className = cls;\n    }\n  }\n\n  function updateLineClasses(cm, lineView) {\n    updateLineBackground(cm, lineView);\n    if (lineView.line.wrapClass)\n      { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n    else if (lineView.node != lineView.text)\n      { lineView.node.className = \"\"; }\n    var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n    lineView.text.className = textClass || \"\";\n  }\n\n  function updateLineGutter(cm, lineView, lineN, dims) {\n    if (lineView.gutter) {\n      lineView.node.removeChild(lineView.gutter);\n      lineView.gutter = null;\n    }\n    if (lineView.gutterBackground) {\n      lineView.node.removeChild(lineView.gutterBackground);\n      lineView.gutterBackground = null;\n    }\n    if (lineView.line.gutterClass) {\n      var wrap = ensureLineWrapped(lineView);\n      lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n                                      (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + (dims.gutterTotalWidth) + \"px\"));\n      cm.display.input.setUneditable(lineView.gutterBackground);\n      wrap.insertBefore(lineView.gutterBackground, lineView.text);\n    }\n    var markers = lineView.line.gutterMarkers;\n    if (cm.options.lineNumbers || markers) {\n      var wrap$1 = ensureLineWrapped(lineView);\n      var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"));\n      cm.display.input.setUneditable(gutterWrap);\n      wrap$1.insertBefore(gutterWrap, lineView.text);\n      if (lineView.line.gutterClass)\n        { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n      if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n        { lineView.lineNumber = gutterWrap.appendChild(\n          elt(\"div\", lineNumberFor(cm.options, lineN),\n              \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n              (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n      if (markers) { for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n        var id = cm.display.gutterSpecs[k].className, found = markers.hasOwnProperty(id) && markers[id];\n        if (found)\n          { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n                                     (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n      } }\n    }\n  }\n\n  function updateLineWidgets(cm, lineView, dims) {\n    if (lineView.alignable) { lineView.alignable = null; }\n    var isWidget = classTest(\"CodeMirror-linewidget\");\n    for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n      next = node.nextSibling;\n      if (isWidget.test(node.className)) { lineView.node.removeChild(node); }\n    }\n    insertLineWidgets(cm, lineView, dims);\n  }\n\n  // Build a line's DOM representation from scratch\n  function buildLineElement(cm, lineView, lineN, dims) {\n    var built = getLineContent(cm, lineView);\n    lineView.text = lineView.node = built.pre;\n    if (built.bgClass) { lineView.bgClass = built.bgClass; }\n    if (built.textClass) { lineView.textClass = built.textClass; }\n\n    updateLineClasses(cm, lineView);\n    updateLineGutter(cm, lineView, lineN, dims);\n    insertLineWidgets(cm, lineView, dims);\n    return lineView.node\n  }\n\n  // A lineView may contain multiple logical lines (when merged by\n  // collapsed spans). The widgets for all of them need to be drawn.\n  function insertLineWidgets(cm, lineView, dims) {\n    insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n    if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n      { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n  }\n\n  function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n    if (!line.widgets) { return }\n    var wrap = ensureLineWrapped(lineView);\n    for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n      var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n      if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n      positionLineWidget(widget, node, lineView, dims);\n      cm.display.input.setUneditable(node);\n      if (allowAbove && widget.above)\n        { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n      else\n        { wrap.appendChild(node); }\n      signalLater(widget, \"redraw\");\n    }\n  }\n\n  function positionLineWidget(widget, node, lineView, dims) {\n    if (widget.noHScroll) {\n  (lineView.alignable || (lineView.alignable = [])).push(node);\n      var width = dims.wrapperWidth;\n      node.style.left = dims.fixedPos + \"px\";\n      if (!widget.coverGutter) {\n        width -= dims.gutterTotalWidth;\n        node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n      }\n      node.style.width = width + \"px\";\n    }\n    if (widget.coverGutter) {\n      node.style.zIndex = 5;\n      node.style.position = \"relative\";\n      if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n    }\n  }\n\n  function widgetHeight(widget) {\n    if (widget.height != null) { return widget.height }\n    var cm = widget.doc.cm;\n    if (!cm) { return 0 }\n    if (!contains(document.body, widget.node)) {\n      var parentStyle = \"position: relative;\";\n      if (widget.coverGutter)\n        { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n      if (widget.noHScroll)\n        { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n      removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n    }\n    return widget.height = widget.node.parentNode.offsetHeight\n  }\n\n  // Return true when the given mouse event happened in a widget\n  function eventInWidget(display, e) {\n    for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n      if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n          (n.parentNode == display.sizer && n != display.mover))\n        { return true }\n    }\n  }\n\n  // POSITION MEASUREMENT\n\n  function paddingTop(display) {return display.lineSpace.offsetTop}\n  function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\n  function paddingH(display) {\n    if (display.cachedPaddingH) { return display.cachedPaddingH }\n    var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n    var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n    var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n    if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n    return data\n  }\n\n  function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\n  function displayWidth(cm) {\n    return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n  }\n  function displayHeight(cm) {\n    return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n  }\n\n  // Ensure the lineView.wrapping.heights array is populated. This is\n  // an array of bottom offsets for the lines that make up a drawn\n  // line. When lineWrapping is on, there might be more than one\n  // height.\n  function ensureLineHeights(cm, lineView, rect) {\n    var wrapping = cm.options.lineWrapping;\n    var curWidth = wrapping && displayWidth(cm);\n    if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n      var heights = lineView.measure.heights = [];\n      if (wrapping) {\n        lineView.measure.width = curWidth;\n        var rects = lineView.text.firstChild.getClientRects();\n        for (var i = 0; i < rects.length - 1; i++) {\n          var cur = rects[i], next = rects[i + 1];\n          if (Math.abs(cur.bottom - next.bottom) > 2)\n            { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n        }\n      }\n      heights.push(rect.bottom - rect.top);\n    }\n  }\n\n  // Find a line map (mapping character offsets to text nodes) and a\n  // measurement cache for the given line number. (A line view might\n  // contain multiple lines when collapsed ranges are present.)\n  function mapFromLineView(lineView, line, lineN) {\n    if (lineView.line == line)\n      { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n    for (var i = 0; i < lineView.rest.length; i++)\n      { if (lineView.rest[i] == line)\n        { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n    for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n      { if (lineNo(lineView.rest[i$1]) > lineN)\n        { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\n  }\n\n  // Render a line into the hidden node display.externalMeasured. Used\n  // when measurement is needed for a line that's not in the viewport.\n  function updateExternalMeasurement(cm, line) {\n    line = visualLine(line);\n    var lineN = lineNo(line);\n    var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n    view.lineN = lineN;\n    var built = view.built = buildLineContent(cm, view);\n    view.text = built.pre;\n    removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n    return view\n  }\n\n  // Get a {top, bottom, left, right} box (in line-local coordinates)\n  // for a given character.\n  function measureChar(cm, line, ch, bias) {\n    return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n  }\n\n  // Find a line view that corresponds to the given line number.\n  function findViewForLine(cm, lineN) {\n    if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n      { return cm.display.view[findViewIndex(cm, lineN)] }\n    var ext = cm.display.externalMeasured;\n    if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n      { return ext }\n  }\n\n  // Measurement can be split in two steps, the set-up work that\n  // applies to the whole line, and the measurement of the actual\n  // character. Functions like coordsChar, that need to do a lot of\n  // measurements in a row, can thus ensure that the set-up work is\n  // only done once.\n  function prepareMeasureForLine(cm, line) {\n    var lineN = lineNo(line);\n    var view = findViewForLine(cm, lineN);\n    if (view && !view.text) {\n      view = null;\n    } else if (view && view.changes) {\n      updateLineForChanges(cm, view, lineN, getDimensions(cm));\n      cm.curOp.forceUpdate = true;\n    }\n    if (!view)\n      { view = updateExternalMeasurement(cm, line); }\n\n    var info = mapFromLineView(view, line, lineN);\n    return {\n      line: line, view: view, rect: null,\n      map: info.map, cache: info.cache, before: info.before,\n      hasHeights: false\n    }\n  }\n\n  // Given a prepared measurement object, measures the position of an\n  // actual character (or fetches it from the cache).\n  function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n    if (prepared.before) { ch = -1; }\n    var key = ch + (bias || \"\"), found;\n    if (prepared.cache.hasOwnProperty(key)) {\n      found = prepared.cache[key];\n    } else {\n      if (!prepared.rect)\n        { prepared.rect = prepared.view.text.getBoundingClientRect(); }\n      if (!prepared.hasHeights) {\n        ensureLineHeights(cm, prepared.view, prepared.rect);\n        prepared.hasHeights = true;\n      }\n      found = measureCharInner(cm, prepared, ch, bias);\n      if (!found.bogus) { prepared.cache[key] = found; }\n    }\n    return {left: found.left, right: found.right,\n            top: varHeight ? found.rtop : found.top,\n            bottom: varHeight ? found.rbottom : found.bottom}\n  }\n\n  var nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\n  function nodeAndOffsetInLineMap(map, ch, bias) {\n    var node, start, end, collapse, mStart, mEnd;\n    // First, search the line map for the text node corresponding to,\n    // or closest to, the target character.\n    for (var i = 0; i < map.length; i += 3) {\n      mStart = map[i];\n      mEnd = map[i + 1];\n      if (ch < mStart) {\n        start = 0; end = 1;\n        collapse = \"left\";\n      } else if (ch < mEnd) {\n        start = ch - mStart;\n        end = start + 1;\n      } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n        end = mEnd - mStart;\n        start = end - 1;\n        if (ch >= mEnd) { collapse = \"right\"; }\n      }\n      if (start != null) {\n        node = map[i + 2];\n        if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n          { collapse = bias; }\n        if (bias == \"left\" && start == 0)\n          { while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n            node = map[(i -= 3) + 2];\n            collapse = \"left\";\n          } }\n        if (bias == \"right\" && start == mEnd - mStart)\n          { while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n            node = map[(i += 3) + 2];\n            collapse = \"right\";\n          } }\n        break\n      }\n    }\n    return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n  }\n\n  function getUsefulRect(rects, bias) {\n    var rect = nullRect;\n    if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n      if ((rect = rects[i]).left != rect.right) { break }\n    } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n      if ((rect = rects[i$1]).left != rect.right) { break }\n    } }\n    return rect\n  }\n\n  function measureCharInner(cm, prepared, ch, bias) {\n    var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n    var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n    var rect;\n    if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n      for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n        while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n        while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\n        if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n          { rect = node.parentNode.getBoundingClientRect(); }\n        else\n          { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\n        if (rect.left || rect.right || start == 0) { break }\n        end = start;\n        start = start - 1;\n        collapse = \"right\";\n      }\n      if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n    } else { // If it is a widget, simply get the box for the whole widget.\n      if (start > 0) { collapse = bias = \"right\"; }\n      var rects;\n      if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n        { rect = rects[bias == \"right\" ? rects.length - 1 : 0]; }\n      else\n        { rect = node.getBoundingClientRect(); }\n    }\n    if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n      var rSpan = node.parentNode.getClientRects()[0];\n      if (rSpan)\n        { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n      else\n        { rect = nullRect; }\n    }\n\n    var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n    var mid = (rtop + rbot) / 2;\n    var heights = prepared.view.measure.heights;\n    var i = 0;\n    for (; i < heights.length - 1; i++)\n      { if (mid < heights[i]) { break } }\n    var top = i ? heights[i - 1] : 0, bot = heights[i];\n    var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n                  right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n                  top: top, bottom: bot};\n    if (!rect.left && !rect.right) { result.bogus = true; }\n    if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n    return result\n  }\n\n  // Work around problem with bounding client rects on ranges being\n  // returned incorrectly when zoomed on IE10 and below.\n  function maybeUpdateRectForZooming(measure, rect) {\n    if (!window.screen || screen.logicalXDPI == null ||\n        screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n      { return rect }\n    var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n    var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n    return {left: rect.left * scaleX, right: rect.right * scaleX,\n            top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n  }\n\n  function clearLineMeasurementCacheFor(lineView) {\n    if (lineView.measure) {\n      lineView.measure.cache = {};\n      lineView.measure.heights = null;\n      if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n        { lineView.measure.caches[i] = {}; } }\n    }\n  }\n\n  function clearLineMeasurementCache(cm) {\n    cm.display.externalMeasure = null;\n    removeChildren(cm.display.lineMeasure);\n    for (var i = 0; i < cm.display.view.length; i++)\n      { clearLineMeasurementCacheFor(cm.display.view[i]); }\n  }\n\n  function clearCaches(cm) {\n    clearLineMeasurementCache(cm);\n    cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n    if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\n    cm.display.lineNumChars = null;\n  }\n\n  function pageScrollX() {\n    // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n    // which causes page_Offset and bounding client rects to use\n    // different reference viewports and invalidate our calculations.\n    if (chrome && android) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) }\n    return window.pageXOffset || (document.documentElement || document.body).scrollLeft\n  }\n  function pageScrollY() {\n    if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) }\n    return window.pageYOffset || (document.documentElement || document.body).scrollTop\n  }\n\n  function widgetTopHeight(lineObj) {\n    var height = 0;\n    if (lineObj.widgets) { for (var i = 0; i < lineObj.widgets.length; ++i) { if (lineObj.widgets[i].above)\n      { height += widgetHeight(lineObj.widgets[i]); } } }\n    return height\n  }\n\n  // Converts a {top, bottom, left, right} box from line-local\n  // coordinates into another coordinate system. Context may be one of\n  // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n  // or \"page\".\n  function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n    if (!includeWidgets) {\n      var height = widgetTopHeight(lineObj);\n      rect.top += height; rect.bottom += height;\n    }\n    if (context == \"line\") { return rect }\n    if (!context) { context = \"local\"; }\n    var yOff = heightAtLine(lineObj);\n    if (context == \"local\") { yOff += paddingTop(cm.display); }\n    else { yOff -= cm.display.viewOffset; }\n    if (context == \"page\" || context == \"window\") {\n      var lOff = cm.display.lineSpace.getBoundingClientRect();\n      yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n      var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n      rect.left += xOff; rect.right += xOff;\n    }\n    rect.top += yOff; rect.bottom += yOff;\n    return rect\n  }\n\n  // Coverts a box from \"div\" coords to another coordinate system.\n  // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n  function fromCoordSystem(cm, coords, context) {\n    if (context == \"div\") { return coords }\n    var left = coords.left, top = coords.top;\n    // First move into \"page\" coordinate system\n    if (context == \"page\") {\n      left -= pageScrollX();\n      top -= pageScrollY();\n    } else if (context == \"local\" || !context) {\n      var localBox = cm.display.sizer.getBoundingClientRect();\n      left += localBox.left;\n      top += localBox.top;\n    }\n\n    var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n    return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n  }\n\n  function charCoords(cm, pos, context, lineObj, bias) {\n    if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n    return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n  }\n\n  // Returns a box for a given cursor position, which may have an\n  // 'other' property containing the position of the secondary cursor\n  // on a bidi boundary.\n  // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n  // and after `char - 1` in writing order of `char - 1`\n  // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n  // and before `char` in writing order of `char`\n  // Examples (upper-case letters are RTL, lower-case are LTR):\n  //     Pos(0, 1, ...)\n  //     before   after\n  // ab     a|b     a|b\n  // aB     a|B     aB|\n  // Ab     |Ab     A|b\n  // AB     B|A     B|A\n  // Every position after the last character on a line is considered to stick\n  // to the last character on the line.\n  function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n    lineObj = lineObj || getLine(cm.doc, pos.line);\n    if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n    function get(ch, right) {\n      var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n      if (right) { m.left = m.right; } else { m.right = m.left; }\n      return intoCoordSystem(cm, lineObj, m, context)\n    }\n    var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n    if (ch >= lineObj.text.length) {\n      ch = lineObj.text.length;\n      sticky = \"before\";\n    } else if (ch <= 0) {\n      ch = 0;\n      sticky = \"after\";\n    }\n    if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n    function getBidi(ch, partPos, invert) {\n      var part = order[partPos], right = part.level == 1;\n      return get(invert ? ch - 1 : ch, right != invert)\n    }\n    var partPos = getBidiPartAt(order, ch, sticky);\n    var other = bidiOther;\n    var val = getBidi(ch, partPos, sticky == \"before\");\n    if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n    return val\n  }\n\n  // Used to cheaply estimate the coordinates for a position. Used for\n  // intermediate scroll updates.\n  function estimateCoords(cm, pos) {\n    var left = 0;\n    pos = clipPos(cm.doc, pos);\n    if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n    var lineObj = getLine(cm.doc, pos.line);\n    var top = heightAtLine(lineObj) + paddingTop(cm.display);\n    return {left: left, right: left, top: top, bottom: top + lineObj.height}\n  }\n\n  // Positions returned by coordsChar contain some extra information.\n  // xRel is the relative x position of the input coordinates compared\n  // to the found position (so xRel > 0 means the coordinates are to\n  // the right of the character position, for example). When outside\n  // is true, that means the coordinates lie outside the line's\n  // vertical range.\n  function PosWithInfo(line, ch, sticky, outside, xRel) {\n    var pos = Pos(line, ch, sticky);\n    pos.xRel = xRel;\n    if (outside) { pos.outside = outside; }\n    return pos\n  }\n\n  // Compute the character position closest to the given coordinates.\n  // Input must be lineSpace-local (\"div\" coordinate system).\n  function coordsChar(cm, x, y) {\n    var doc = cm.doc;\n    y += cm.display.viewOffset;\n    if (y < 0) { return PosWithInfo(doc.first, 0, null, -1, -1) }\n    var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n    if (lineN > last)\n      { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1) }\n    if (x < 0) { x = 0; }\n\n    var lineObj = getLine(doc, lineN);\n    for (;;) {\n      var found = coordsCharInner(cm, lineObj, lineN, x, y);\n      var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n      if (!collapsed) { return found }\n      var rangeEnd = collapsed.find(1);\n      if (rangeEnd.line == lineN) { return rangeEnd }\n      lineObj = getLine(doc, lineN = rangeEnd.line);\n    }\n  }\n\n  function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n    y -= widgetTopHeight(lineObj);\n    var end = lineObj.text.length;\n    var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0);\n    end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end);\n    return {begin: begin, end: end}\n  }\n\n  function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n    if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n    var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n    return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n  }\n\n  // Returns true if the given side of a box is after the given\n  // coordinates, in top-to-bottom, left-to-right order.\n  function boxIsAfter(box, x, y, left) {\n    return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x\n  }\n\n  function coordsCharInner(cm, lineObj, lineNo, x, y) {\n    // Move y into line-local coordinate space\n    y -= heightAtLine(lineObj);\n    var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n    // When directly calling `measureCharPrepared`, we have to adjust\n    // for the widgets at this line.\n    var widgetHeight = widgetTopHeight(lineObj);\n    var begin = 0, end = lineObj.text.length, ltr = true;\n\n    var order = getOrder(lineObj, cm.doc.direction);\n    // If the line isn't plain left-to-right text, first figure out\n    // which bidi section the coordinates fall into.\n    if (order) {\n      var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)\n                   (cm, lineObj, lineNo, preparedMeasure, order, x, y);\n      ltr = part.level != 1;\n      // The awkward -1 offsets are needed because findFirst (called\n      // on these below) will treat its first bound as inclusive,\n      // second as exclusive, but we want to actually address the\n      // characters in the part's range\n      begin = ltr ? part.from : part.to - 1;\n      end = ltr ? part.to : part.from - 1;\n    }\n\n    // A binary search to find the first character whose bounding box\n    // starts after the coordinates. If we run across any whose box wrap\n    // the coordinates, store that.\n    var chAround = null, boxAround = null;\n    var ch = findFirst(function (ch) {\n      var box = measureCharPrepared(cm, preparedMeasure, ch);\n      box.top += widgetHeight; box.bottom += widgetHeight;\n      if (!boxIsAfter(box, x, y, false)) { return false }\n      if (box.top <= y && box.left <= x) {\n        chAround = ch;\n        boxAround = box;\n      }\n      return true\n    }, begin, end);\n\n    var baseX, sticky, outside = false;\n    // If a box around the coordinates was found, use that\n    if (boxAround) {\n      // Distinguish coordinates nearer to the left or right side of the box\n      var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr;\n      ch = chAround + (atStart ? 0 : 1);\n      sticky = atStart ? \"after\" : \"before\";\n      baseX = atLeft ? boxAround.left : boxAround.right;\n    } else {\n      // (Adjust for extended bound, if necessary.)\n      if (!ltr && (ch == end || ch == begin)) { ch++; }\n      // To determine which side to associate with, get the box to the\n      // left of the character and compare it's vertical position to the\n      // coordinates\n      sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" :\n        (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y) == ltr ?\n        \"after\" : \"before\";\n      // Now get accurate coordinates for this place, in order to get a\n      // base X position\n      var coords = cursorCoords(cm, Pos(lineNo, ch, sticky), \"line\", lineObj, preparedMeasure);\n      baseX = coords.left;\n      outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n    }\n\n    ch = skipExtendingChars(lineObj.text, ch, 1);\n    return PosWithInfo(lineNo, ch, sticky, outside, x - baseX)\n  }\n\n  function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) {\n    // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n    // situation, we can take this ordering to correspond to the visual\n    // ordering. This finds the first part whose end is after the given\n    // coordinates.\n    var index = findFirst(function (i) {\n      var part = order[i], ltr = part.level != 1;\n      return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"),\n                                     \"line\", lineObj, preparedMeasure), x, y, true)\n    }, 0, order.length - 1);\n    var part = order[index];\n    // If this isn't the first part, the part's start is also after\n    // the coordinates, and the coordinates aren't on the same line as\n    // that start, move one part back.\n    if (index > 0) {\n      var ltr = part.level != 1;\n      var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"),\n                               \"line\", lineObj, preparedMeasure);\n      if (boxIsAfter(start, x, y, true) && start.top > y)\n        { part = order[index - 1]; }\n    }\n    return part\n  }\n\n  function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n    // In a wrapped line, rtl text on wrapping boundaries can do things\n    // that don't correspond to the ordering in our `order` array at\n    // all, so a binary search doesn't work, and we want to return a\n    // part that only spans one line so that the binary search in\n    // coordsCharInner is safe. As such, we first find the extent of the\n    // wrapped line, and then do a flat search in which we discard any\n    // spans that aren't on the line.\n    var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n    var begin = ref.begin;\n    var end = ref.end;\n    if (/\\s/.test(lineObj.text.charAt(end - 1))) { end--; }\n    var part = null, closestDist = null;\n    for (var i = 0; i < order.length; i++) {\n      var p = order[i];\n      if (p.from >= end || p.to <= begin) { continue }\n      var ltr = p.level != 1;\n      var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;\n      // Weigh against spans ending before this, so that they are only\n      // picked if nothing ends after\n      var dist = endX < x ? x - endX + 1e9 : endX - x;\n      if (!part || closestDist > dist) {\n        part = p;\n        closestDist = dist;\n      }\n    }\n    if (!part) { part = order[order.length - 1]; }\n    // Clip the part to the wrapped line.\n    if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; }\n    if (part.to > end) { part = {from: part.from, to: end, level: part.level}; }\n    return part\n  }\n\n  var measureText;\n  // Compute the default text height.\n  function textHeight(display) {\n    if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n    if (measureText == null) {\n      measureText = elt(\"pre\", null, \"CodeMirror-line-like\");\n      // Measure a bunch of lines, for browsers that compute\n      // fractional heights.\n      for (var i = 0; i < 49; ++i) {\n        measureText.appendChild(document.createTextNode(\"x\"));\n        measureText.appendChild(elt(\"br\"));\n      }\n      measureText.appendChild(document.createTextNode(\"x\"));\n    }\n    removeChildrenAndAdd(display.measure, measureText);\n    var height = measureText.offsetHeight / 50;\n    if (height > 3) { display.cachedTextHeight = height; }\n    removeChildren(display.measure);\n    return height || 1\n  }\n\n  // Compute the default character width.\n  function charWidth(display) {\n    if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n    var anchor = elt(\"span\", \"xxxxxxxxxx\");\n    var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n    removeChildrenAndAdd(display.measure, pre);\n    var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n    if (width > 2) { display.cachedCharWidth = width; }\n    return width || 10\n  }\n\n  // Do a bulk-read of the DOM positions and sizes needed to draw the\n  // view, so that we don't interleave reading and writing to the DOM.\n  function getDimensions(cm) {\n    var d = cm.display, left = {}, width = {};\n    var gutterLeft = d.gutters.clientLeft;\n    for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n      var id = cm.display.gutterSpecs[i].className;\n      left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n      width[id] = n.clientWidth;\n    }\n    return {fixedPos: compensateForHScroll(d),\n            gutterTotalWidth: d.gutters.offsetWidth,\n            gutterLeft: left,\n            gutterWidth: width,\n            wrapperWidth: d.wrapper.clientWidth}\n  }\n\n  // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n  // but using getBoundingClientRect to get a sub-pixel-accurate\n  // result.\n  function compensateForHScroll(display) {\n    return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n  }\n\n  // Returns a function that estimates the height of a line, to use as\n  // first approximation until the line becomes visible (and is thus\n  // properly measurable).\n  function estimateHeight(cm) {\n    var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n    var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n    return function (line) {\n      if (lineIsHidden(cm.doc, line)) { return 0 }\n\n      var widgetsHeight = 0;\n      if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n        if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\n      } }\n\n      if (wrapping)\n        { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\n      else\n        { return widgetsHeight + th }\n    }\n  }\n\n  function estimateLineHeights(cm) {\n    var doc = cm.doc, est = estimateHeight(cm);\n    doc.iter(function (line) {\n      var estHeight = est(line);\n      if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n    });\n  }\n\n  // Given a mouse event, find the corresponding position. If liberal\n  // is false, it checks whether a gutter or scrollbar was clicked,\n  // and returns null if it was. forRect is used by rectangular\n  // selections, and tries to estimate a character position even for\n  // coordinates beyond the right of the text.\n  function posFromMouse(cm, e, liberal, forRect) {\n    var display = cm.display;\n    if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n    var x, y, space = display.lineSpace.getBoundingClientRect();\n    // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n    try { x = e.clientX - space.left; y = e.clientY - space.top; }\n    catch (e$1) { return null }\n    var coords = coordsChar(cm, x, y), line;\n    if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n      var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n      coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n    }\n    return coords\n  }\n\n  // Find the view element corresponding to a given line. Return null\n  // when the line isn't visible.\n  function findViewIndex(cm, n) {\n    if (n >= cm.display.viewTo) { return null }\n    n -= cm.display.viewFrom;\n    if (n < 0) { return null }\n    var view = cm.display.view;\n    for (var i = 0; i < view.length; i++) {\n      n -= view[i].size;\n      if (n < 0) { return i }\n    }\n  }\n\n  // Updates the display.view data structure for a given change to the\n  // document. From and to are in pre-change coordinates. Lendiff is\n  // the amount of lines added or subtracted by the change. This is\n  // used for changes that span multiple lines, or change the way\n  // lines are divided into visual lines. regLineChange (below)\n  // registers single-line changes.\n  function regChange(cm, from, to, lendiff) {\n    if (from == null) { from = cm.doc.first; }\n    if (to == null) { to = cm.doc.first + cm.doc.size; }\n    if (!lendiff) { lendiff = 0; }\n\n    var display = cm.display;\n    if (lendiff && to < display.viewTo &&\n        (display.updateLineNumbers == null || display.updateLineNumbers > from))\n      { display.updateLineNumbers = from; }\n\n    cm.curOp.viewChanged = true;\n\n    if (from >= display.viewTo) { // Change after\n      if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n        { resetView(cm); }\n    } else if (to <= display.viewFrom) { // Change before\n      if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n        resetView(cm);\n      } else {\n        display.viewFrom += lendiff;\n        display.viewTo += lendiff;\n      }\n    } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n      resetView(cm);\n    } else if (from <= display.viewFrom) { // Top overlap\n      var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n      if (cut) {\n        display.view = display.view.slice(cut.index);\n        display.viewFrom = cut.lineN;\n        display.viewTo += lendiff;\n      } else {\n        resetView(cm);\n      }\n    } else if (to >= display.viewTo) { // Bottom overlap\n      var cut$1 = viewCuttingPoint(cm, from, from, -1);\n      if (cut$1) {\n        display.view = display.view.slice(0, cut$1.index);\n        display.viewTo = cut$1.lineN;\n      } else {\n        resetView(cm);\n      }\n    } else { // Gap in the middle\n      var cutTop = viewCuttingPoint(cm, from, from, -1);\n      var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n      if (cutTop && cutBot) {\n        display.view = display.view.slice(0, cutTop.index)\n          .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n          .concat(display.view.slice(cutBot.index));\n        display.viewTo += lendiff;\n      } else {\n        resetView(cm);\n      }\n    }\n\n    var ext = display.externalMeasured;\n    if (ext) {\n      if (to < ext.lineN)\n        { ext.lineN += lendiff; }\n      else if (from < ext.lineN + ext.size)\n        { display.externalMeasured = null; }\n    }\n  }\n\n  // Register a change to a single line. Type must be one of \"text\",\n  // \"gutter\", \"class\", \"widget\"\n  function regLineChange(cm, line, type) {\n    cm.curOp.viewChanged = true;\n    var display = cm.display, ext = cm.display.externalMeasured;\n    if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n      { display.externalMeasured = null; }\n\n    if (line < display.viewFrom || line >= display.viewTo) { return }\n    var lineView = display.view[findViewIndex(cm, line)];\n    if (lineView.node == null) { return }\n    var arr = lineView.changes || (lineView.changes = []);\n    if (indexOf(arr, type) == -1) { arr.push(type); }\n  }\n\n  // Clear the view.\n  function resetView(cm) {\n    cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n    cm.display.view = [];\n    cm.display.viewOffset = 0;\n  }\n\n  function viewCuttingPoint(cm, oldN, newN, dir) {\n    var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n    if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n      { return {index: index, lineN: newN} }\n    var n = cm.display.viewFrom;\n    for (var i = 0; i < index; i++)\n      { n += view[i].size; }\n    if (n != oldN) {\n      if (dir > 0) {\n        if (index == view.length - 1) { return null }\n        diff = (n + view[index].size) - oldN;\n        index++;\n      } else {\n        diff = n - oldN;\n      }\n      oldN += diff; newN += diff;\n    }\n    while (visualLineNo(cm.doc, newN) != newN) {\n      if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n      newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n      index += dir;\n    }\n    return {index: index, lineN: newN}\n  }\n\n  // Force the view to cover a given range, adding empty view element\n  // or clipping off existing ones as needed.\n  function adjustView(cm, from, to) {\n    var display = cm.display, view = display.view;\n    if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n      display.view = buildViewArray(cm, from, to);\n      display.viewFrom = from;\n    } else {\n      if (display.viewFrom > from)\n        { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\n      else if (display.viewFrom < from)\n        { display.view = display.view.slice(findViewIndex(cm, from)); }\n      display.viewFrom = from;\n      if (display.viewTo < to)\n        { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\n      else if (display.viewTo > to)\n        { display.view = display.view.slice(0, findViewIndex(cm, to)); }\n    }\n    display.viewTo = to;\n  }\n\n  // Count the number of lines in the view whose DOM representation is\n  // out of date (or nonexistent).\n  function countDirtyView(cm) {\n    var view = cm.display.view, dirty = 0;\n    for (var i = 0; i < view.length; i++) {\n      var lineView = view[i];\n      if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n    }\n    return dirty\n  }\n\n  function updateSelection(cm) {\n    cm.display.input.showSelection(cm.display.input.prepareSelection());\n  }\n\n  function prepareSelection(cm, primary) {\n    if ( primary === void 0 ) primary = true;\n\n    var doc = cm.doc, result = {};\n    var curFragment = result.cursors = document.createDocumentFragment();\n    var selFragment = result.selection = document.createDocumentFragment();\n\n    for (var i = 0; i < doc.sel.ranges.length; i++) {\n      if (!primary && i == doc.sel.primIndex) { continue }\n      var range = doc.sel.ranges[i];\n      if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) { continue }\n      var collapsed = range.empty();\n      if (collapsed || cm.options.showCursorWhenSelecting)\n        { drawSelectionCursor(cm, range.head, curFragment); }\n      if (!collapsed)\n        { drawSelectionRange(cm, range, selFragment); }\n    }\n    return result\n  }\n\n  // Draws a cursor for the given range\n  function drawSelectionCursor(cm, head, output) {\n    var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n    var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n    cursor.style.left = pos.left + \"px\";\n    cursor.style.top = pos.top + \"px\";\n    cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n    if (pos.other) {\n      // Secondary cursor, shown when on a 'jump' in bi-directional text\n      var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n      otherCursor.style.display = \"\";\n      otherCursor.style.left = pos.other.left + \"px\";\n      otherCursor.style.top = pos.other.top + \"px\";\n      otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n    }\n  }\n\n  function cmpCoords(a, b) { return a.top - b.top || a.left - b.left }\n\n  // Draws the given range as a highlighted selection\n  function drawSelectionRange(cm, range, output) {\n    var display = cm.display, doc = cm.doc;\n    var fragment = document.createDocumentFragment();\n    var padding = paddingH(cm.display), leftSide = padding.left;\n    var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n    var docLTR = doc.direction == \"ltr\";\n\n    function add(left, top, width, bottom) {\n      if (top < 0) { top = 0; }\n      top = Math.round(top);\n      bottom = Math.round(bottom);\n      fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", (\"position: absolute; left: \" + left + \"px;\\n                             top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n                             height: \" + (bottom - top) + \"px\")));\n    }\n\n    function drawForLine(line, fromArg, toArg) {\n      var lineObj = getLine(doc, line);\n      var lineLen = lineObj.text.length;\n      var start, end;\n      function coords(ch, bias) {\n        return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n      }\n\n      function wrapX(pos, dir, side) {\n        var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n        var prop = (dir == \"ltr\") == (side == \"after\") ? \"left\" : \"right\";\n        var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n        return coords(ch, prop)[prop]\n      }\n\n      var order = getOrder(lineObj, doc.direction);\n      iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n        var ltr = dir == \"ltr\";\n        var fromPos = coords(from, ltr ? \"left\" : \"right\");\n        var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n\n        var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen;\n        var first = i == 0, last = !order || i == order.length - 1;\n        if (toPos.top - fromPos.top <= 3) { // Single line\n          var openLeft = (docLTR ? openStart : openEnd) && first;\n          var openRight = (docLTR ? openEnd : openStart) && last;\n          var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n          var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n          add(left, fromPos.top, right - left, fromPos.bottom);\n        } else { // Multiple lines\n          var topLeft, topRight, botLeft, botRight;\n          if (ltr) {\n            topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n            topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n            botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n            botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n          } else {\n            topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n            topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n            botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n            botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n          }\n          add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n          if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); }\n          add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n        }\n\n        if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; }\n        if (cmpCoords(toPos, start) < 0) { start = toPos; }\n        if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; }\n        if (cmpCoords(toPos, end) < 0) { end = toPos; }\n      });\n      return {start: start, end: end}\n    }\n\n    var sFrom = range.from(), sTo = range.to();\n    if (sFrom.line == sTo.line) {\n      drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n    } else {\n      var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n      var singleVLine = visualLine(fromLine) == visualLine(toLine);\n      var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n      var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n      if (singleVLine) {\n        if (leftEnd.top < rightStart.top - 2) {\n          add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n          add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n        } else {\n          add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n        }\n      }\n      if (leftEnd.bottom < rightStart.top)\n        { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n    }\n\n    output.appendChild(fragment);\n  }\n\n  // Cursor-blinking\n  function restartBlink(cm) {\n    if (!cm.state.focused) { return }\n    var display = cm.display;\n    clearInterval(display.blinker);\n    var on = true;\n    display.cursorDiv.style.visibility = \"\";\n    if (cm.options.cursorBlinkRate > 0)\n      { display.blinker = setInterval(function () {\n        if (!cm.hasFocus()) { onBlur(cm); }\n        display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n      }, cm.options.cursorBlinkRate); }\n    else if (cm.options.cursorBlinkRate < 0)\n      { display.cursorDiv.style.visibility = \"hidden\"; }\n  }\n\n  function ensureFocus(cm) {\n    if (!cm.state.focused) { cm.display.input.focus(); onFocus(cm); }\n  }\n\n  function delayBlurEvent(cm) {\n    cm.state.delayingBlurEvent = true;\n    setTimeout(function () { if (cm.state.delayingBlurEvent) {\n      cm.state.delayingBlurEvent = false;\n      onBlur(cm);\n    } }, 100);\n  }\n\n  function onFocus(cm, e) {\n    if (cm.state.delayingBlurEvent) { cm.state.delayingBlurEvent = false; }\n\n    if (cm.options.readOnly == \"nocursor\") { return }\n    if (!cm.state.focused) {\n      signal(cm, \"focus\", cm, e);\n      cm.state.focused = true;\n      addClass(cm.display.wrapper, \"CodeMirror-focused\");\n      // This test prevents this from firing when a context\n      // menu is closed (since the input reset would kill the\n      // select-all detection hack)\n      if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n        cm.display.input.reset();\n        if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n      }\n      cm.display.input.receivedFocus();\n    }\n    restartBlink(cm);\n  }\n  function onBlur(cm, e) {\n    if (cm.state.delayingBlurEvent) { return }\n\n    if (cm.state.focused) {\n      signal(cm, \"blur\", cm, e);\n      cm.state.focused = false;\n      rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n    }\n    clearInterval(cm.display.blinker);\n    setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n  }\n\n  // Read the actual heights of the rendered lines, and update their\n  // stored heights to match.\n  function updateHeightsInViewport(cm) {\n    var display = cm.display;\n    var prevBottom = display.lineDiv.offsetTop;\n    for (var i = 0; i < display.view.length; i++) {\n      var cur = display.view[i], wrapping = cm.options.lineWrapping;\n      var height = (void 0), width = 0;\n      if (cur.hidden) { continue }\n      if (ie && ie_version < 8) {\n        var bot = cur.node.offsetTop + cur.node.offsetHeight;\n        height = bot - prevBottom;\n        prevBottom = bot;\n      } else {\n        var box = cur.node.getBoundingClientRect();\n        height = box.bottom - box.top;\n        // Check that lines don't extend past the right of the current\n        // editor width\n        if (!wrapping && cur.text.firstChild)\n          { width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1; }\n      }\n      var diff = cur.line.height - height;\n      if (diff > .005 || diff < -.005) {\n        updateLineHeight(cur.line, height);\n        updateWidgetHeight(cur.line);\n        if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n          { updateWidgetHeight(cur.rest[j]); } }\n      }\n      if (width > cm.display.sizerWidth) {\n        var chWidth = Math.ceil(width / charWidth(cm.display));\n        if (chWidth > cm.display.maxLineLength) {\n          cm.display.maxLineLength = chWidth;\n          cm.display.maxLine = cur.line;\n          cm.display.maxLineChanged = true;\n        }\n      }\n    }\n  }\n\n  // Read and store the height of line widgets associated with the\n  // given line.\n  function updateWidgetHeight(line) {\n    if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) {\n      var w = line.widgets[i], parent = w.node.parentNode;\n      if (parent) { w.height = parent.offsetHeight; }\n    } }\n  }\n\n  // Compute the lines that are visible in a given viewport (defaults\n  // the the current scroll position). viewport may contain top,\n  // height, and ensure (see op.scrollToPos) properties.\n  function visibleLines(display, doc, viewport) {\n    var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n    top = Math.floor(top - paddingTop(display));\n    var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n    var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n    // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n    // forces those lines into the viewport (if possible).\n    if (viewport && viewport.ensure) {\n      var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n      if (ensureFrom < from) {\n        from = ensureFrom;\n        to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n      } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n        from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n        to = ensureTo;\n      }\n    }\n    return {from: from, to: Math.max(to, from + 1)}\n  }\n\n  // SCROLLING THINGS INTO VIEW\n\n  // If an editor sits on the top or bottom of the window, partially\n  // scrolled out of view, this ensures that the cursor is visible.\n  function maybeScrollWindow(cm, rect) {\n    if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n    var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n    if (rect.top + box.top < 0) { doScroll = true; }\n    else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false; }\n    if (doScroll != null && !phantom) {\n      var scrollNode = elt(\"div\", \"\\u200b\", null, (\"position: absolute;\\n                         top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n                         height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n                         left: \" + (rect.left) + \"px; width: \" + (Math.max(2, rect.right - rect.left)) + \"px;\"));\n      cm.display.lineSpace.appendChild(scrollNode);\n      scrollNode.scrollIntoView(doScroll);\n      cm.display.lineSpace.removeChild(scrollNode);\n    }\n  }\n\n  // Scroll a given position into view (immediately), verifying that\n  // it actually became visible (as line heights are accurately\n  // measured, the position of something may 'drift' during drawing).\n  function scrollPosIntoView(cm, pos, end, margin) {\n    if (margin == null) { margin = 0; }\n    var rect;\n    if (!cm.options.lineWrapping && pos == end) {\n      // Set pos and end to the cursor positions around the character pos sticks to\n      // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n      // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n      pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n      end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n    }\n    for (var limit = 0; limit < 5; limit++) {\n      var changed = false;\n      var coords = cursorCoords(cm, pos);\n      var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n      rect = {left: Math.min(coords.left, endCoords.left),\n              top: Math.min(coords.top, endCoords.top) - margin,\n              right: Math.max(coords.left, endCoords.left),\n              bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\n      var scrollPos = calculateScrollPos(cm, rect);\n      var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n      if (scrollPos.scrollTop != null) {\n        updateScrollTop(cm, scrollPos.scrollTop);\n        if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n      }\n      if (scrollPos.scrollLeft != null) {\n        setScrollLeft(cm, scrollPos.scrollLeft);\n        if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n      }\n      if (!changed) { break }\n    }\n    return rect\n  }\n\n  // Scroll a given set of coordinates into view (immediately).\n  function scrollIntoView(cm, rect) {\n    var scrollPos = calculateScrollPos(cm, rect);\n    if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); }\n    if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n  }\n\n  // Calculate a new scroll position needed to scroll the given\n  // rectangle into view. Returns an object with scrollTop and\n  // scrollLeft properties. When these are undefined, the\n  // vertical/horizontal position does not need to be adjusted.\n  function calculateScrollPos(cm, rect) {\n    var display = cm.display, snapMargin = textHeight(cm.display);\n    if (rect.top < 0) { rect.top = 0; }\n    var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n    var screen = displayHeight(cm), result = {};\n    if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n    var docBottom = cm.doc.height + paddingVert(display);\n    var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n    if (rect.top < screentop) {\n      result.scrollTop = atTop ? 0 : rect.top;\n    } else if (rect.bottom > screentop + screen) {\n      var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n      if (newTop != screentop) { result.scrollTop = newTop; }\n    }\n\n    var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n    var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n    var screenw = displayWidth(cm) - display.gutters.offsetWidth;\n    var tooWide = rect.right - rect.left > screenw;\n    if (tooWide) { rect.right = rect.left + screenw; }\n    if (rect.left < 10)\n      { result.scrollLeft = 0; }\n    else if (rect.left < screenleft)\n      { result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10)); }\n    else if (rect.right > screenw + screenleft - 3)\n      { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\n    return result\n  }\n\n  // Store a relative adjustment to the scroll position in the current\n  // operation (to be applied when the operation finishes).\n  function addToScrollTop(cm, top) {\n    if (top == null) { return }\n    resolveScrollToPos(cm);\n    cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n  }\n\n  // Make sure that at the end of the operation the current cursor is\n  // shown.\n  function ensureCursorVisible(cm) {\n    resolveScrollToPos(cm);\n    var cur = cm.getCursor();\n    cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin};\n  }\n\n  function scrollToCoords(cm, x, y) {\n    if (x != null || y != null) { resolveScrollToPos(cm); }\n    if (x != null) { cm.curOp.scrollLeft = x; }\n    if (y != null) { cm.curOp.scrollTop = y; }\n  }\n\n  function scrollToRange(cm, range) {\n    resolveScrollToPos(cm);\n    cm.curOp.scrollToPos = range;\n  }\n\n  // When an operation has its scrollToPos property set, and another\n  // scroll action is applied before the end of the operation, this\n  // 'simulates' scrolling that position into view in a cheap way, so\n  // that the effect of intermediate scroll commands is not ignored.\n  function resolveScrollToPos(cm) {\n    var range = cm.curOp.scrollToPos;\n    if (range) {\n      cm.curOp.scrollToPos = null;\n      var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to);\n      scrollToCoordsRange(cm, from, to, range.margin);\n    }\n  }\n\n  function scrollToCoordsRange(cm, from, to, margin) {\n    var sPos = calculateScrollPos(cm, {\n      left: Math.min(from.left, to.left),\n      top: Math.min(from.top, to.top) - margin,\n      right: Math.max(from.right, to.right),\n      bottom: Math.max(from.bottom, to.bottom) + margin\n    });\n    scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n  }\n\n  // Sync the scrollable area and scrollbars, ensure the viewport\n  // covers the visible area.\n  function updateScrollTop(cm, val) {\n    if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n    if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n    setScrollTop(cm, val, true);\n    if (gecko) { updateDisplaySimple(cm); }\n    startWorker(cm, 100);\n  }\n\n  function setScrollTop(cm, val, forceScroll) {\n    val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n    if (cm.display.scroller.scrollTop == val && !forceScroll) { return }\n    cm.doc.scrollTop = val;\n    cm.display.scrollbars.setScrollTop(val);\n    if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n  }\n\n  // Sync scroller and scrollbar, ensure the gutter elements are\n  // aligned.\n  function setScrollLeft(cm, val, isScroller, forceScroll) {\n    val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n    if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return }\n    cm.doc.scrollLeft = val;\n    alignHorizontally(cm);\n    if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n    cm.display.scrollbars.setScrollLeft(val);\n  }\n\n  // SCROLLBARS\n\n  // Prepare DOM reads needed to update the scrollbars. Done in one\n  // shot to minimize update/measure roundtrips.\n  function measureForScrollbars(cm) {\n    var d = cm.display, gutterW = d.gutters.offsetWidth;\n    var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n    return {\n      clientHeight: d.scroller.clientHeight,\n      viewHeight: d.wrapper.clientHeight,\n      scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n      viewWidth: d.wrapper.clientWidth,\n      barLeft: cm.options.fixedGutter ? gutterW : 0,\n      docHeight: docH,\n      scrollHeight: docH + scrollGap(cm) + d.barHeight,\n      nativeBarWidth: d.nativeBarWidth,\n      gutterWidth: gutterW\n    }\n  }\n\n  var NativeScrollbars = function(place, scroll, cm) {\n    this.cm = cm;\n    var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n    var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n    vert.tabIndex = horiz.tabIndex = -1;\n    place(vert); place(horiz);\n\n    on(vert, \"scroll\", function () {\n      if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n    });\n    on(horiz, \"scroll\", function () {\n      if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n    });\n\n    this.checkedZeroWidth = false;\n    // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n    if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\n  };\n\n  NativeScrollbars.prototype.update = function (measure) {\n    var needsH = measure.scrollWidth > measure.clientWidth + 1;\n    var needsV = measure.scrollHeight > measure.clientHeight + 1;\n    var sWidth = measure.nativeBarWidth;\n\n    if (needsV) {\n      this.vert.style.display = \"block\";\n      this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n      var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n      // A bug in IE8 can cause this value to be negative, so guard it.\n      this.vert.firstChild.style.height =\n        Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n    } else {\n      this.vert.style.display = \"\";\n      this.vert.firstChild.style.height = \"0\";\n    }\n\n    if (needsH) {\n      this.horiz.style.display = \"block\";\n      this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n      this.horiz.style.left = measure.barLeft + \"px\";\n      var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n      this.horiz.firstChild.style.width =\n        Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n    } else {\n      this.horiz.style.display = \"\";\n      this.horiz.firstChild.style.width = \"0\";\n    }\n\n    if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n      if (sWidth == 0) { this.zeroWidthHack(); }\n      this.checkedZeroWidth = true;\n    }\n\n    return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n  };\n\n  NativeScrollbars.prototype.setScrollLeft = function (pos) {\n    if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n    if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n  };\n\n  NativeScrollbars.prototype.setScrollTop = function (pos) {\n    if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n    if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\n  };\n\n  NativeScrollbars.prototype.zeroWidthHack = function () {\n    var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n    this.horiz.style.height = this.vert.style.width = w;\n    this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\";\n    this.disableHoriz = new Delayed;\n    this.disableVert = new Delayed;\n  };\n\n  NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n    bar.style.pointerEvents = \"auto\";\n    function maybeDisable() {\n      // To find out whether the scrollbar is still visible, we\n      // check whether the element under the pixel in the bottom\n      // right corner of the scrollbar box is the scrollbar box\n      // itself (when the bar is still visible) or its filler child\n      // (when the bar is hidden). If it is still visible, we keep\n      // it enabled, if it's hidden, we disable pointer events.\n      var box = bar.getBoundingClientRect();\n      var elt = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n          : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n      if (elt != bar) { bar.style.pointerEvents = \"none\"; }\n      else { delay.set(1000, maybeDisable); }\n    }\n    delay.set(1000, maybeDisable);\n  };\n\n  NativeScrollbars.prototype.clear = function () {\n    var parent = this.horiz.parentNode;\n    parent.removeChild(this.horiz);\n    parent.removeChild(this.vert);\n  };\n\n  var NullScrollbars = function () {};\n\n  NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\n  NullScrollbars.prototype.setScrollLeft = function () {};\n  NullScrollbars.prototype.setScrollTop = function () {};\n  NullScrollbars.prototype.clear = function () {};\n\n  function updateScrollbars(cm, measure) {\n    if (!measure) { measure = measureForScrollbars(cm); }\n    var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n    updateScrollbarsInner(cm, measure);\n    for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n      if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n        { updateHeightsInViewport(cm); }\n      updateScrollbarsInner(cm, measureForScrollbars(cm));\n      startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n    }\n  }\n\n  // Re-synchronize the fake scrollbars with the actual size of the\n  // content.\n  function updateScrollbarsInner(cm, measure) {\n    var d = cm.display;\n    var sizes = d.scrollbars.update(measure);\n\n    d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n    d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n    d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n    if (sizes.right && sizes.bottom) {\n      d.scrollbarFiller.style.display = \"block\";\n      d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n      d.scrollbarFiller.style.width = sizes.right + \"px\";\n    } else { d.scrollbarFiller.style.display = \"\"; }\n    if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n      d.gutterFiller.style.display = \"block\";\n      d.gutterFiller.style.height = sizes.bottom + \"px\";\n      d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n    } else { d.gutterFiller.style.display = \"\"; }\n  }\n\n  var scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\n  function initScrollbars(cm) {\n    if (cm.display.scrollbars) {\n      cm.display.scrollbars.clear();\n      if (cm.display.scrollbars.addClass)\n        { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n    }\n\n    cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n      cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n      // Prevent clicks in the scrollbars from killing focus\n      on(node, \"mousedown\", function () {\n        if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n      });\n      node.setAttribute(\"cm-not-content\", \"true\");\n    }, function (pos, axis) {\n      if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n      else { updateScrollTop(cm, pos); }\n    }, cm);\n    if (cm.display.scrollbars.addClass)\n      { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n  }\n\n  // Operations are used to wrap a series of changes to the editor\n  // state in such a way that each change won't have to update the\n  // cursor and display (which would be awkward, slow, and\n  // error-prone). Instead, display updates are batched and then all\n  // combined and executed at once.\n\n  var nextOpId = 0;\n  // Start a new operation.\n  function startOperation(cm) {\n    cm.curOp = {\n      cm: cm,\n      viewChanged: false,      // Flag that indicates that lines might need to be redrawn\n      startHeight: cm.doc.height, // Used to detect need to update scrollbar\n      forceUpdate: false,      // Used to force a redraw\n      updateInput: 0,       // Whether to reset the input textarea\n      typing: false,           // Whether this reset should be careful to leave existing text (for compositing)\n      changeObjs: null,        // Accumulated changes, for firing change events\n      cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n      cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n      selectionChanged: false, // Whether the selection needs to be redrawn\n      updateMaxLine: false,    // Set when the widest line needs to be determined anew\n      scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n      scrollToPos: null,       // Used to scroll to a specific position\n      focus: false,\n      id: ++nextOpId           // Unique ID\n    };\n    pushOperation(cm.curOp);\n  }\n\n  // Finish an operation, updating the display and signalling delayed events\n  function endOperation(cm) {\n    var op = cm.curOp;\n    if (op) { finishOperation(op, function (group) {\n      for (var i = 0; i < group.ops.length; i++)\n        { group.ops[i].cm.curOp = null; }\n      endOperations(group);\n    }); }\n  }\n\n  // The DOM updates done when an operation finishes are batched so\n  // that the minimum number of relayouts are required.\n  function endOperations(group) {\n    var ops = group.ops;\n    for (var i = 0; i < ops.length; i++) // Read DOM\n      { endOperation_R1(ops[i]); }\n    for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n      { endOperation_W1(ops[i$1]); }\n    for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n      { endOperation_R2(ops[i$2]); }\n    for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n      { endOperation_W2(ops[i$3]); }\n    for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n      { endOperation_finish(ops[i$4]); }\n  }\n\n  function endOperation_R1(op) {\n    var cm = op.cm, display = cm.display;\n    maybeClipScrollbars(cm);\n    if (op.updateMaxLine) { findMaxLine(cm); }\n\n    op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n      op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n                         op.scrollToPos.to.line >= display.viewTo) ||\n      display.maxLineChanged && cm.options.lineWrapping;\n    op.update = op.mustUpdate &&\n      new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n  }\n\n  function endOperation_W1(op) {\n    op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n  }\n\n  function endOperation_R2(op) {\n    var cm = op.cm, display = cm.display;\n    if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n    op.barMeasure = measureForScrollbars(cm);\n\n    // If the max line changed since it was last measured, measure it,\n    // and ensure the document's width matches it.\n    // updateDisplay_W2 will use these properties to do the actual resizing\n    if (display.maxLineChanged && !cm.options.lineWrapping) {\n      op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n      cm.display.sizerWidth = op.adjustWidthTo;\n      op.barMeasure.scrollWidth =\n        Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n      op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n    }\n\n    if (op.updatedDisplay || op.selectionChanged)\n      { op.preparedSelection = display.input.prepareSelection(); }\n  }\n\n  function endOperation_W2(op) {\n    var cm = op.cm;\n\n    if (op.adjustWidthTo != null) {\n      cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n      if (op.maxScrollLeft < cm.doc.scrollLeft)\n        { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n      cm.display.maxLineChanged = false;\n    }\n\n    var takeFocus = op.focus && op.focus == activeElt();\n    if (op.preparedSelection)\n      { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n    if (op.updatedDisplay || op.startHeight != cm.doc.height)\n      { updateScrollbars(cm, op.barMeasure); }\n    if (op.updatedDisplay)\n      { setDocumentHeight(cm, op.barMeasure); }\n\n    if (op.selectionChanged) { restartBlink(cm); }\n\n    if (cm.state.focused && op.updateInput)\n      { cm.display.input.reset(op.typing); }\n    if (takeFocus) { ensureFocus(op.cm); }\n  }\n\n  function endOperation_finish(op) {\n    var cm = op.cm, display = cm.display, doc = cm.doc;\n\n    if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n    // Abort mouse wheel delta measurement, when scrolling explicitly\n    if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n      { display.wheelStartX = display.wheelStartY = null; }\n\n    // Propagate the scroll position to the actual DOM scroller\n    if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); }\n\n    if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); }\n    // If we need to scroll a specific position into view, do so.\n    if (op.scrollToPos) {\n      var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n                                   clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n      maybeScrollWindow(cm, rect);\n    }\n\n    // Fire events for markers that are hidden/unidden by editing or\n    // undoing\n    var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n    if (hidden) { for (var i = 0; i < hidden.length; ++i)\n      { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n    if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n      { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n    if (display.wrapper.offsetHeight)\n      { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n    // Fire change events, and delayed event handlers\n    if (op.changeObjs)\n      { signal(cm, \"changes\", cm, op.changeObjs); }\n    if (op.update)\n      { op.update.finish(); }\n  }\n\n  // Run the given function in an operation\n  function runInOp(cm, f) {\n    if (cm.curOp) { return f() }\n    startOperation(cm);\n    try { return f() }\n    finally { endOperation(cm); }\n  }\n  // Wraps a function in an operation. Returns the wrapped function.\n  function operation(cm, f) {\n    return function() {\n      if (cm.curOp) { return f.apply(cm, arguments) }\n      startOperation(cm);\n      try { return f.apply(cm, arguments) }\n      finally { endOperation(cm); }\n    }\n  }\n  // Used to add methods to editor and doc instances, wrapping them in\n  // operations.\n  function methodOp(f) {\n    return function() {\n      if (this.curOp) { return f.apply(this, arguments) }\n      startOperation(this);\n      try { return f.apply(this, arguments) }\n      finally { endOperation(this); }\n    }\n  }\n  function docMethodOp(f) {\n    return function() {\n      var cm = this.cm;\n      if (!cm || cm.curOp) { return f.apply(this, arguments) }\n      startOperation(cm);\n      try { return f.apply(this, arguments) }\n      finally { endOperation(cm); }\n    }\n  }\n\n  // HIGHLIGHT WORKER\n\n  function startWorker(cm, time) {\n    if (cm.doc.highlightFrontier < cm.display.viewTo)\n      { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\n  }\n\n  function highlightWorker(cm) {\n    var doc = cm.doc;\n    if (doc.highlightFrontier >= cm.display.viewTo) { return }\n    var end = +new Date + cm.options.workTime;\n    var context = getContextBefore(cm, doc.highlightFrontier);\n    var changedLines = [];\n\n    doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n      if (context.line >= cm.display.viewFrom) { // Visible\n        var oldStyles = line.styles;\n        var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n        var highlighted = highlightLine(cm, line, context, true);\n        if (resetState) { context.state = resetState; }\n        line.styles = highlighted.styles;\n        var oldCls = line.styleClasses, newCls = highlighted.classes;\n        if (newCls) { line.styleClasses = newCls; }\n        else if (oldCls) { line.styleClasses = null; }\n        var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n          oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n        for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n        if (ischange) { changedLines.push(context.line); }\n        line.stateAfter = context.save();\n        context.nextLine();\n      } else {\n        if (line.text.length <= cm.options.maxHighlightLength)\n          { processLine(cm, line.text, context); }\n        line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n        context.nextLine();\n      }\n      if (+new Date > end) {\n        startWorker(cm, cm.options.workDelay);\n        return true\n      }\n    });\n    doc.highlightFrontier = context.line;\n    doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n    if (changedLines.length) { runInOp(cm, function () {\n      for (var i = 0; i < changedLines.length; i++)\n        { regLineChange(cm, changedLines[i], \"text\"); }\n    }); }\n  }\n\n  // DISPLAY DRAWING\n\n  var DisplayUpdate = function(cm, viewport, force) {\n    var display = cm.display;\n\n    this.viewport = viewport;\n    // Store some values that we'll need later (but don't want to force a relayout for)\n    this.visible = visibleLines(display, cm.doc, viewport);\n    this.editorIsHidden = !display.wrapper.offsetWidth;\n    this.wrapperHeight = display.wrapper.clientHeight;\n    this.wrapperWidth = display.wrapper.clientWidth;\n    this.oldDisplayWidth = displayWidth(cm);\n    this.force = force;\n    this.dims = getDimensions(cm);\n    this.events = [];\n  };\n\n  DisplayUpdate.prototype.signal = function (emitter, type) {\n    if (hasHandler(emitter, type))\n      { this.events.push(arguments); }\n  };\n  DisplayUpdate.prototype.finish = function () {\n    for (var i = 0; i < this.events.length; i++)\n      { signal.apply(null, this.events[i]); }\n  };\n\n  function maybeClipScrollbars(cm) {\n    var display = cm.display;\n    if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n      display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n      display.heightForcer.style.height = scrollGap(cm) + \"px\";\n      display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n      display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n      display.scrollbarsClipped = true;\n    }\n  }\n\n  function selectionSnapshot(cm) {\n    if (cm.hasFocus()) { return null }\n    var active = activeElt();\n    if (!active || !contains(cm.display.lineDiv, active)) { return null }\n    var result = {activeElt: active};\n    if (window.getSelection) {\n      var sel = window.getSelection();\n      if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n        result.anchorNode = sel.anchorNode;\n        result.anchorOffset = sel.anchorOffset;\n        result.focusNode = sel.focusNode;\n        result.focusOffset = sel.focusOffset;\n      }\n    }\n    return result\n  }\n\n  function restoreSelection(snapshot) {\n    if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) { return }\n    snapshot.activeElt.focus();\n    if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) &&\n        snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n      var sel = window.getSelection(), range = document.createRange();\n      range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n      range.collapse(false);\n      sel.removeAllRanges();\n      sel.addRange(range);\n      sel.extend(snapshot.focusNode, snapshot.focusOffset);\n    }\n  }\n\n  // Does the actual updating of the line display. Bails out\n  // (returning false) when there is nothing to be done and forced is\n  // false.\n  function updateDisplayIfNeeded(cm, update) {\n    var display = cm.display, doc = cm.doc;\n\n    if (update.editorIsHidden) {\n      resetView(cm);\n      return false\n    }\n\n    // Bail out if the visible area is already rendered and nothing changed.\n    if (!update.force &&\n        update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n        (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n        display.renderedView == display.view && countDirtyView(cm) == 0)\n      { return false }\n\n    if (maybeUpdateLineNumberWidth(cm)) {\n      resetView(cm);\n      update.dims = getDimensions(cm);\n    }\n\n    // Compute a suitable new viewport (from & to)\n    var end = doc.first + doc.size;\n    var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n    var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n    if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n    if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\n    if (sawCollapsedSpans) {\n      from = visualLineNo(cm.doc, from);\n      to = visualLineEndNo(cm.doc, to);\n    }\n\n    var different = from != display.viewFrom || to != display.viewTo ||\n      display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n    adjustView(cm, from, to);\n\n    display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n    // Position the mover div to align with the current scroll position\n    cm.display.mover.style.top = display.viewOffset + \"px\";\n\n    var toUpdate = countDirtyView(cm);\n    if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n        (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n      { return false }\n\n    // For big changes, we hide the enclosing element during the\n    // update, since that speeds up the operations on most browsers.\n    var selSnapshot = selectionSnapshot(cm);\n    if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n    patchDisplay(cm, display.updateLineNumbers, update.dims);\n    if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n    display.renderedView = display.view;\n    // There might have been a widget with a focused element that got\n    // hidden or updated, if so re-focus it.\n    restoreSelection(selSnapshot);\n\n    // Prevent selection and cursors from interfering with the scroll\n    // width and height.\n    removeChildren(display.cursorDiv);\n    removeChildren(display.selectionDiv);\n    display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n    if (different) {\n      display.lastWrapHeight = update.wrapperHeight;\n      display.lastWrapWidth = update.wrapperWidth;\n      startWorker(cm, 400);\n    }\n\n    display.updateLineNumbers = null;\n\n    return true\n  }\n\n  function postUpdateDisplay(cm, update) {\n    var viewport = update.viewport;\n\n    for (var first = true;; first = false) {\n      if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n        // Clip forced viewport to actual scrollable area.\n        if (viewport && viewport.top != null)\n          { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n        // Updated line heights might result in the drawn area not\n        // actually covering the viewport. Keep looping until it does.\n        update.visible = visibleLines(cm.display, cm.doc, viewport);\n        if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n          { break }\n      } else if (first) {\n        update.visible = visibleLines(cm.display, cm.doc, viewport);\n      }\n      if (!updateDisplayIfNeeded(cm, update)) { break }\n      updateHeightsInViewport(cm);\n      var barMeasure = measureForScrollbars(cm);\n      updateSelection(cm);\n      updateScrollbars(cm, barMeasure);\n      setDocumentHeight(cm, barMeasure);\n      update.force = false;\n    }\n\n    update.signal(cm, \"update\", cm);\n    if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n      update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n      cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n    }\n  }\n\n  function updateDisplaySimple(cm, viewport) {\n    var update = new DisplayUpdate(cm, viewport);\n    if (updateDisplayIfNeeded(cm, update)) {\n      updateHeightsInViewport(cm);\n      postUpdateDisplay(cm, update);\n      var barMeasure = measureForScrollbars(cm);\n      updateSelection(cm);\n      updateScrollbars(cm, barMeasure);\n      setDocumentHeight(cm, barMeasure);\n      update.finish();\n    }\n  }\n\n  // Sync the actual display DOM structure with display.view, removing\n  // nodes for lines that are no longer in view, and creating the ones\n  // that are not there yet, and updating the ones that are out of\n  // date.\n  function patchDisplay(cm, updateNumbersFrom, dims) {\n    var display = cm.display, lineNumbers = cm.options.lineNumbers;\n    var container = display.lineDiv, cur = container.firstChild;\n\n    function rm(node) {\n      var next = node.nextSibling;\n      // Works around a throw-scroll bug in OS X Webkit\n      if (webkit && mac && cm.display.currentWheelTarget == node)\n        { node.style.display = \"none\"; }\n      else\n        { node.parentNode.removeChild(node); }\n      return next\n    }\n\n    var view = display.view, lineN = display.viewFrom;\n    // Loop over the elements in the view, syncing cur (the DOM nodes\n    // in display.lineDiv) with the view as we go.\n    for (var i = 0; i < view.length; i++) {\n      var lineView = view[i];\n      if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n        var node = buildLineElement(cm, lineView, lineN, dims);\n        container.insertBefore(node, cur);\n      } else { // Already drawn\n        while (cur != lineView.node) { cur = rm(cur); }\n        var updateNumber = lineNumbers && updateNumbersFrom != null &&\n          updateNumbersFrom <= lineN && lineView.lineNumber;\n        if (lineView.changes) {\n          if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n          updateLineForChanges(cm, lineView, lineN, dims);\n        }\n        if (updateNumber) {\n          removeChildren(lineView.lineNumber);\n          lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n        }\n        cur = lineView.node.nextSibling;\n      }\n      lineN += lineView.size;\n    }\n    while (cur) { cur = rm(cur); }\n  }\n\n  function updateGutterSpace(display) {\n    var width = display.gutters.offsetWidth;\n    display.sizer.style.marginLeft = width + \"px\";\n  }\n\n  function setDocumentHeight(cm, measure) {\n    cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n    cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n    cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\";\n  }\n\n  // Re-align line numbers and gutter marks to compensate for\n  // horizontal scrolling.\n  function alignHorizontally(cm) {\n    var display = cm.display, view = display.view;\n    if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n    var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n    var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n    for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n      if (cm.options.fixedGutter) {\n        if (view[i].gutter)\n          { view[i].gutter.style.left = left; }\n        if (view[i].gutterBackground)\n          { view[i].gutterBackground.style.left = left; }\n      }\n      var align = view[i].alignable;\n      if (align) { for (var j = 0; j < align.length; j++)\n        { align[j].style.left = left; } }\n    } }\n    if (cm.options.fixedGutter)\n      { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n  }\n\n  // Used to ensure that the line number gutter is still the right\n  // size for the current document size. Returns true when an update\n  // is needed.\n  function maybeUpdateLineNumberWidth(cm) {\n    if (!cm.options.lineNumbers) { return false }\n    var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n    if (last.length != display.lineNumChars) {\n      var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n                                                 \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n      var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n      display.lineGutter.style.width = \"\";\n      display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n      display.lineNumWidth = display.lineNumInnerWidth + padding;\n      display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n      display.lineGutter.style.width = display.lineNumWidth + \"px\";\n      updateGutterSpace(cm.display);\n      return true\n    }\n    return false\n  }\n\n  function getGutters(gutters, lineNumbers) {\n    var result = [], sawLineNumbers = false;\n    for (var i = 0; i < gutters.length; i++) {\n      var name = gutters[i], style = null;\n      if (typeof name != \"string\") { style = name.style; name = name.className; }\n      if (name == \"CodeMirror-linenumbers\") {\n        if (!lineNumbers) { continue }\n        else { sawLineNumbers = true; }\n      }\n      result.push({className: name, style: style});\n    }\n    if (lineNumbers && !sawLineNumbers) { result.push({className: \"CodeMirror-linenumbers\", style: null}); }\n    return result\n  }\n\n  // Rebuild the gutter elements, ensure the margin to the left of the\n  // code matches their width.\n  function renderGutters(display) {\n    var gutters = display.gutters, specs = display.gutterSpecs;\n    removeChildren(gutters);\n    display.lineGutter = null;\n    for (var i = 0; i < specs.length; ++i) {\n      var ref = specs[i];\n      var className = ref.className;\n      var style = ref.style;\n      var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n      if (style) { gElt.style.cssText = style; }\n      if (className == \"CodeMirror-linenumbers\") {\n        display.lineGutter = gElt;\n        gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n      }\n    }\n    gutters.style.display = specs.length ? \"\" : \"none\";\n    updateGutterSpace(display);\n  }\n\n  function updateGutters(cm) {\n    renderGutters(cm.display);\n    regChange(cm);\n    alignHorizontally(cm);\n  }\n\n  // The display handles the DOM integration, both for input reading\n  // and content drawing. It holds references to DOM nodes and\n  // display-related state.\n\n  function Display(place, doc, input, options) {\n    var d = this;\n    this.input = input;\n\n    // Covers bottom-right square when both scrollbars are present.\n    d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n    d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n    // Covers bottom of gutter when coverGutterNextToScrollbar is on\n    // and h scrollbar is present.\n    d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n    d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n    // Will contain the actual code, positioned to cover the viewport.\n    d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n    // Elements are added to these to represent selection and cursors.\n    d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n    d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n    // A visibility: hidden element used to find the size of things.\n    d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n    // When lines outside of the viewport are measured, they are drawn in this.\n    d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n    // Wraps everything that needs to exist inside the vertically-padded coordinate system\n    d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n                      null, \"position: relative; outline: none\");\n    var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n    // Moved around its parent to cover visible view.\n    d.mover = elt(\"div\", [lines], null, \"position: relative\");\n    // Set to the height of the document, allowing scrolling.\n    d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n    d.sizerWidth = null;\n    // Behavior of elts with overflow: auto and padding is\n    // inconsistent across browsers. This is used to ensure the\n    // scrollable area is big enough.\n    d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n    // Will contain the gutters, if any.\n    d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n    d.lineGutter = null;\n    // Actual scrollable element.\n    d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n    d.scroller.setAttribute(\"tabIndex\", \"-1\");\n    // The element in which the editor lives.\n    d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n\n    // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n    if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n    if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n    if (place) {\n      if (place.appendChild) { place.appendChild(d.wrapper); }\n      else { place(d.wrapper); }\n    }\n\n    // Current rendered range (may be bigger than the view window).\n    d.viewFrom = d.viewTo = doc.first;\n    d.reportedViewFrom = d.reportedViewTo = doc.first;\n    // Information about the rendered lines.\n    d.view = [];\n    d.renderedView = null;\n    // Holds info about a single rendered line when it was rendered\n    // for measurement, while not in view.\n    d.externalMeasured = null;\n    // Empty space (in pixels) above the view\n    d.viewOffset = 0;\n    d.lastWrapHeight = d.lastWrapWidth = 0;\n    d.updateLineNumbers = null;\n\n    d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n    d.scrollbarsClipped = false;\n\n    // Used to only resize the line number gutter when necessary (when\n    // the amount of lines crosses a boundary that makes its width change)\n    d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n    // Set to true when a non-horizontal-scrolling line widget is\n    // added. As an optimization, line widget aligning is skipped when\n    // this is false.\n    d.alignWidgets = false;\n\n    d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n    // Tracks the maximum line length so that the horizontal scrollbar\n    // can be kept static when scrolling.\n    d.maxLine = null;\n    d.maxLineLength = 0;\n    d.maxLineChanged = false;\n\n    // Used for measuring wheel scrolling granularity\n    d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n    // True when shift is held down.\n    d.shift = false;\n\n    // Used to track whether anything happened since the context menu\n    // was opened.\n    d.selForContextMenu = null;\n\n    d.activeTouch = null;\n\n    d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n    renderGutters(d);\n\n    input.init(d);\n  }\n\n  // Since the delta values reported on mouse wheel events are\n  // unstandardized between browsers and even browser versions, and\n  // generally horribly unpredictable, this code starts by measuring\n  // the scroll effect that the first few mouse wheel events have,\n  // and, from that, detects the way it can convert deltas to pixel\n  // offsets afterwards.\n  //\n  // The reason we want to know the amount a wheel event will scroll\n  // is that it gives us a chance to update the display before the\n  // actual scrolling happens, reducing flickering.\n\n  var wheelSamples = 0, wheelPixelsPerUnit = null;\n  // Fill in a browser-detected starting value on browsers where we\n  // know one. These don't have to be accurate -- the result of them\n  // being wrong would just be a slight flicker on the first wheel\n  // scroll (if it is large enough).\n  if (ie) { wheelPixelsPerUnit = -.53; }\n  else if (gecko) { wheelPixelsPerUnit = 15; }\n  else if (chrome) { wheelPixelsPerUnit = -.7; }\n  else if (safari) { wheelPixelsPerUnit = -1/3; }\n\n  function wheelEventDelta(e) {\n    var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n    if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n    if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n    else if (dy == null) { dy = e.wheelDelta; }\n    return {x: dx, y: dy}\n  }\n  function wheelEventPixels(e) {\n    var delta = wheelEventDelta(e);\n    delta.x *= wheelPixelsPerUnit;\n    delta.y *= wheelPixelsPerUnit;\n    return delta\n  }\n\n  function onScrollWheel(cm, e) {\n    var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n\n    var display = cm.display, scroll = display.scroller;\n    // Quit if there's nothing to scroll here\n    var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n    var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n    if (!(dx && canScrollX || dy && canScrollY)) { return }\n\n    // Webkit browsers on OS X abort momentum scrolls when the target\n    // of the scroll event is removed from the scrollable element.\n    // This hack (see related code in patchDisplay) makes sure the\n    // element is kept around.\n    if (dy && mac && webkit) {\n      outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n        for (var i = 0; i < view.length; i++) {\n          if (view[i].node == cur) {\n            cm.display.currentWheelTarget = cur;\n            break outer\n          }\n        }\n      }\n    }\n\n    // On some browsers, horizontal scrolling will cause redraws to\n    // happen before the gutter has been realigned, causing it to\n    // wriggle around in a most unseemly way. When we have an\n    // estimated pixels/delta value, we just handle horizontal\n    // scrolling entirely here. It'll be slightly off from native, but\n    // better than glitching out.\n    if (dx && !gecko && !presto && wheelPixelsPerUnit != null) {\n      if (dy && canScrollY)\n        { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * wheelPixelsPerUnit)); }\n      setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * wheelPixelsPerUnit));\n      // Only prevent default scrolling if vertical scrolling is\n      // actually possible. Otherwise, it causes vertical scroll\n      // jitter on OSX trackpads when deltaX is small and deltaY\n      // is large (issue #3579)\n      if (!dy || (dy && canScrollY))\n        { e_preventDefault(e); }\n      display.wheelStartX = null; // Abort measurement, if in progress\n      return\n    }\n\n    // 'Project' the visible viewport to cover the area that is being\n    // scrolled into view (if we know enough to estimate it).\n    if (dy && wheelPixelsPerUnit != null) {\n      var pixels = dy * wheelPixelsPerUnit;\n      var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n      if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n      else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n      updateDisplaySimple(cm, {top: top, bottom: bot});\n    }\n\n    if (wheelSamples < 20) {\n      if (display.wheelStartX == null) {\n        display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n        display.wheelDX = dx; display.wheelDY = dy;\n        setTimeout(function () {\n          if (display.wheelStartX == null) { return }\n          var movedX = scroll.scrollLeft - display.wheelStartX;\n          var movedY = scroll.scrollTop - display.wheelStartY;\n          var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n            (movedX && display.wheelDX && movedX / display.wheelDX);\n          display.wheelStartX = display.wheelStartY = null;\n          if (!sample) { return }\n          wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n          ++wheelSamples;\n        }, 200);\n      } else {\n        display.wheelDX += dx; display.wheelDY += dy;\n      }\n    }\n  }\n\n  // Selection objects are immutable. A new one is created every time\n  // the selection changes. A selection is one or more non-overlapping\n  // (and non-touching) ranges, sorted, and an integer that indicates\n  // which one is the primary selection (the one that's scrolled into\n  // view, that getCursor returns, etc).\n  var Selection = function(ranges, primIndex) {\n    this.ranges = ranges;\n    this.primIndex = primIndex;\n  };\n\n  Selection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\n  Selection.prototype.equals = function (other) {\n    if (other == this) { return true }\n    if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n    for (var i = 0; i < this.ranges.length; i++) {\n      var here = this.ranges[i], there = other.ranges[i];\n      if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n    }\n    return true\n  };\n\n  Selection.prototype.deepCopy = function () {\n    var out = [];\n    for (var i = 0; i < this.ranges.length; i++)\n      { out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); }\n    return new Selection(out, this.primIndex)\n  };\n\n  Selection.prototype.somethingSelected = function () {\n    for (var i = 0; i < this.ranges.length; i++)\n      { if (!this.ranges[i].empty()) { return true } }\n    return false\n  };\n\n  Selection.prototype.contains = function (pos, end) {\n    if (!end) { end = pos; }\n    for (var i = 0; i < this.ranges.length; i++) {\n      var range = this.ranges[i];\n      if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n        { return i }\n    }\n    return -1\n  };\n\n  var Range = function(anchor, head) {\n    this.anchor = anchor; this.head = head;\n  };\n\n  Range.prototype.from = function () { return minPos(this.anchor, this.head) };\n  Range.prototype.to = function () { return maxPos(this.anchor, this.head) };\n  Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n  // Take an unsorted, potentially overlapping set of ranges, and\n  // build a selection out of it. 'Consumes' ranges array (modifying\n  // it).\n  function normalizeSelection(cm, ranges, primIndex) {\n    var mayTouch = cm && cm.options.selectionsMayTouch;\n    var prim = ranges[primIndex];\n    ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n    primIndex = indexOf(ranges, prim);\n    for (var i = 1; i < ranges.length; i++) {\n      var cur = ranges[i], prev = ranges[i - 1];\n      var diff = cmp(prev.to(), cur.from());\n      if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n        var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n        var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n        if (i <= primIndex) { --primIndex; }\n        ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n      }\n    }\n    return new Selection(ranges, primIndex)\n  }\n\n  function simpleSelection(anchor, head) {\n    return new Selection([new Range(anchor, head || anchor)], 0)\n  }\n\n  // Compute the position of the end of a change (its 'to' property\n  // refers to the pre-change end).\n  function changeEnd(change) {\n    if (!change.text) { return change.to }\n    return Pos(change.from.line + change.text.length - 1,\n               lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n  }\n\n  // Adjust a position to refer to the post-change position of the\n  // same text, or the end of the change if the change covers it.\n  function adjustForChange(pos, change) {\n    if (cmp(pos, change.from) < 0) { return pos }\n    if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n    var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n    if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n    return Pos(line, ch)\n  }\n\n  function computeSelAfterChange(doc, change) {\n    var out = [];\n    for (var i = 0; i < doc.sel.ranges.length; i++) {\n      var range = doc.sel.ranges[i];\n      out.push(new Range(adjustForChange(range.anchor, change),\n                         adjustForChange(range.head, change)));\n    }\n    return normalizeSelection(doc.cm, out, doc.sel.primIndex)\n  }\n\n  function offsetPos(pos, old, nw) {\n    if (pos.line == old.line)\n      { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\n    else\n      { return Pos(nw.line + (pos.line - old.line), pos.ch) }\n  }\n\n  // Used by replaceSelections to allow moving the selection to the\n  // start or around the replaced test. Hint may be \"start\" or \"around\".\n  function computeReplacedSel(doc, changes, hint) {\n    var out = [];\n    var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n    for (var i = 0; i < changes.length; i++) {\n      var change = changes[i];\n      var from = offsetPos(change.from, oldPrev, newPrev);\n      var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n      oldPrev = change.to;\n      newPrev = to;\n      if (hint == \"around\") {\n        var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n        out[i] = new Range(inv ? to : from, inv ? from : to);\n      } else {\n        out[i] = new Range(from, from);\n      }\n    }\n    return new Selection(out, doc.sel.primIndex)\n  }\n\n  // Used to get the editor into a consistent state again when options change.\n\n  function loadMode(cm) {\n    cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n    resetModeState(cm);\n  }\n\n  function resetModeState(cm) {\n    cm.doc.iter(function (line) {\n      if (line.stateAfter) { line.stateAfter = null; }\n      if (line.styles) { line.styles = null; }\n    });\n    cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n    startWorker(cm, 100);\n    cm.state.modeGen++;\n    if (cm.curOp) { regChange(cm); }\n  }\n\n  // DOCUMENT DATA STRUCTURE\n\n  // By default, updates that start and end at the beginning of a line\n  // are treated specially, in order to make the association of line\n  // widgets and marker elements with the text behave more intuitive.\n  function isWholeLineUpdate(doc, change) {\n    return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n      (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n  }\n\n  // Perform a change on the document data structure.\n  function updateDoc(doc, change, markedSpans, estimateHeight) {\n    function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n    function update(line, text, spans) {\n      updateLine(line, text, spans, estimateHeight);\n      signalLater(line, \"change\", line, change);\n    }\n    function linesFor(start, end) {\n      var result = [];\n      for (var i = start; i < end; ++i)\n        { result.push(new Line(text[i], spansFor(i), estimateHeight)); }\n      return result\n    }\n\n    var from = change.from, to = change.to, text = change.text;\n    var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n    var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n    // Adjust the line structure\n    if (change.full) {\n      doc.insert(0, linesFor(0, text.length));\n      doc.remove(text.length, doc.size - text.length);\n    } else if (isWholeLineUpdate(doc, change)) {\n      // This is a whole-line replace. Treated specially to make\n      // sure line objects move the way they are supposed to.\n      var added = linesFor(0, text.length - 1);\n      update(lastLine, lastLine.text, lastSpans);\n      if (nlines) { doc.remove(from.line, nlines); }\n      if (added.length) { doc.insert(from.line, added); }\n    } else if (firstLine == lastLine) {\n      if (text.length == 1) {\n        update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n      } else {\n        var added$1 = linesFor(1, text.length - 1);\n        added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n        update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n        doc.insert(from.line + 1, added$1);\n      }\n    } else if (text.length == 1) {\n      update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n      doc.remove(from.line + 1, nlines);\n    } else {\n      update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n      update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n      var added$2 = linesFor(1, text.length - 1);\n      if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n      doc.insert(from.line + 1, added$2);\n    }\n\n    signalLater(doc, \"change\", doc, change);\n  }\n\n  // Call f for all linked documents.\n  function linkedDocs(doc, f, sharedHistOnly) {\n    function propagate(doc, skip, sharedHist) {\n      if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n        var rel = doc.linked[i];\n        if (rel.doc == skip) { continue }\n        var shared = sharedHist && rel.sharedHist;\n        if (sharedHistOnly && !shared) { continue }\n        f(rel.doc, shared);\n        propagate(rel.doc, doc, shared);\n      } }\n    }\n    propagate(doc, null, true);\n  }\n\n  // Attach a document to an editor.\n  function attachDoc(cm, doc) {\n    if (doc.cm) { throw new Error(\"This document is already in use.\") }\n    cm.doc = doc;\n    doc.cm = cm;\n    estimateLineHeights(cm);\n    loadMode(cm);\n    setDirectionClass(cm);\n    if (!cm.options.lineWrapping) { findMaxLine(cm); }\n    cm.options.mode = doc.modeOption;\n    regChange(cm);\n  }\n\n  function setDirectionClass(cm) {\n  (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n  }\n\n  function directionChanged(cm) {\n    runInOp(cm, function () {\n      setDirectionClass(cm);\n      regChange(cm);\n    });\n  }\n\n  function History(startGen) {\n    // Arrays of change events and selections. Doing something adds an\n    // event to done and clears undo. Undoing moves events from done\n    // to undone, redoing moves them in the other direction.\n    this.done = []; this.undone = [];\n    this.undoDepth = Infinity;\n    // Used to track when changes can be merged into a single undo\n    // event\n    this.lastModTime = this.lastSelTime = 0;\n    this.lastOp = this.lastSelOp = null;\n    this.lastOrigin = this.lastSelOrigin = null;\n    // Used by the isClean() method\n    this.generation = this.maxGeneration = startGen || 1;\n  }\n\n  // Create a history change event from an updateDoc-style change\n  // object.\n  function historyChangeFromChange(doc, change) {\n    var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n    attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n    linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n    return histChange\n  }\n\n  // Pop all selection events off the end of a history array. Stop at\n  // a change event.\n  function clearSelectionEvents(array) {\n    while (array.length) {\n      var last = lst(array);\n      if (last.ranges) { array.pop(); }\n      else { break }\n    }\n  }\n\n  // Find the top change event in the history. Pop off selection\n  // events that are in the way.\n  function lastChangeEvent(hist, force) {\n    if (force) {\n      clearSelectionEvents(hist.done);\n      return lst(hist.done)\n    } else if (hist.done.length && !lst(hist.done).ranges) {\n      return lst(hist.done)\n    } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n      hist.done.pop();\n      return lst(hist.done)\n    }\n  }\n\n  // Register a change in the history. Merges changes that are within\n  // a single operation, or are close together with an origin that\n  // allows merging (starting with \"+\") into a single event.\n  function addChangeToHistory(doc, change, selAfter, opId) {\n    var hist = doc.history;\n    hist.undone.length = 0;\n    var time = +new Date, cur;\n    var last;\n\n    if ((hist.lastOp == opId ||\n         hist.lastOrigin == change.origin && change.origin &&\n         ((change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) ||\n          change.origin.charAt(0) == \"*\")) &&\n        (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n      // Merge this change into the last event\n      last = lst(cur.changes);\n      if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n        // Optimized case for simple insertion -- don't want to add\n        // new changesets for every character typed\n        last.to = changeEnd(change);\n      } else {\n        // Add new sub-event\n        cur.changes.push(historyChangeFromChange(doc, change));\n      }\n    } else {\n      // Can not be merged, start a new event.\n      var before = lst(hist.done);\n      if (!before || !before.ranges)\n        { pushSelectionToHistory(doc.sel, hist.done); }\n      cur = {changes: [historyChangeFromChange(doc, change)],\n             generation: hist.generation};\n      hist.done.push(cur);\n      while (hist.done.length > hist.undoDepth) {\n        hist.done.shift();\n        if (!hist.done[0].ranges) { hist.done.shift(); }\n      }\n    }\n    hist.done.push(selAfter);\n    hist.generation = ++hist.maxGeneration;\n    hist.lastModTime = hist.lastSelTime = time;\n    hist.lastOp = hist.lastSelOp = opId;\n    hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n    if (!last) { signal(doc, \"historyAdded\"); }\n  }\n\n  function selectionEventCanBeMerged(doc, origin, prev, sel) {\n    var ch = origin.charAt(0);\n    return ch == \"*\" ||\n      ch == \"+\" &&\n      prev.ranges.length == sel.ranges.length &&\n      prev.somethingSelected() == sel.somethingSelected() &&\n      new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n  }\n\n  // Called whenever the selection changes, sets the new selection as\n  // the pending selection in the history, and pushes the old pending\n  // selection into the 'done' array when it was significantly\n  // different (in number of selected ranges, emptiness, or time).\n  function addSelectionToHistory(doc, sel, opId, options) {\n    var hist = doc.history, origin = options && options.origin;\n\n    // A new event is started when the previous origin does not match\n    // the current, or the origins don't allow matching. Origins\n    // starting with * are always merged, those starting with + are\n    // merged when similar and close together in time.\n    if (opId == hist.lastSelOp ||\n        (origin && hist.lastSelOrigin == origin &&\n         (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n          selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n      { hist.done[hist.done.length - 1] = sel; }\n    else\n      { pushSelectionToHistory(sel, hist.done); }\n\n    hist.lastSelTime = +new Date;\n    hist.lastSelOrigin = origin;\n    hist.lastSelOp = opId;\n    if (options && options.clearRedo !== false)\n      { clearSelectionEvents(hist.undone); }\n  }\n\n  function pushSelectionToHistory(sel, dest) {\n    var top = lst(dest);\n    if (!(top && top.ranges && top.equals(sel)))\n      { dest.push(sel); }\n  }\n\n  // Used to store marked span information in the history.\n  function attachLocalSpans(doc, change, from, to) {\n    var existing = change[\"spans_\" + doc.id], n = 0;\n    doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n      if (line.markedSpans)\n        { (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans; }\n      ++n;\n    });\n  }\n\n  // When un/re-doing restores text containing marked spans, those\n  // that have been explicitly cleared should not be restored.\n  function removeClearedSpans(spans) {\n    if (!spans) { return null }\n    var out;\n    for (var i = 0; i < spans.length; ++i) {\n      if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n      else if (out) { out.push(spans[i]); }\n    }\n    return !out ? spans : out.length ? out : null\n  }\n\n  // Retrieve and filter the old marked spans stored in a change event.\n  function getOldSpans(doc, change) {\n    var found = change[\"spans_\" + doc.id];\n    if (!found) { return null }\n    var nw = [];\n    for (var i = 0; i < change.text.length; ++i)\n      { nw.push(removeClearedSpans(found[i])); }\n    return nw\n  }\n\n  // Used for un/re-doing changes from the history. Combines the\n  // result of computing the existing spans with the set of spans that\n  // existed in the history (so that deleting around a span and then\n  // undoing brings back the span).\n  function mergeOldSpans(doc, change) {\n    var old = getOldSpans(doc, change);\n    var stretched = stretchSpansOverChange(doc, change);\n    if (!old) { return stretched }\n    if (!stretched) { return old }\n\n    for (var i = 0; i < old.length; ++i) {\n      var oldCur = old[i], stretchCur = stretched[i];\n      if (oldCur && stretchCur) {\n        spans: for (var j = 0; j < stretchCur.length; ++j) {\n          var span = stretchCur[j];\n          for (var k = 0; k < oldCur.length; ++k)\n            { if (oldCur[k].marker == span.marker) { continue spans } }\n          oldCur.push(span);\n        }\n      } else if (stretchCur) {\n        old[i] = stretchCur;\n      }\n    }\n    return old\n  }\n\n  // Used both to provide a JSON-safe object in .getHistory, and, when\n  // detaching a document, to split the history in two\n  function copyHistoryArray(events, newGroup, instantiateSel) {\n    var copy = [];\n    for (var i = 0; i < events.length; ++i) {\n      var event = events[i];\n      if (event.ranges) {\n        copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n        continue\n      }\n      var changes = event.changes, newChanges = [];\n      copy.push({changes: newChanges});\n      for (var j = 0; j < changes.length; ++j) {\n        var change = changes[j], m = (void 0);\n        newChanges.push({from: change.from, to: change.to, text: change.text});\n        if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\d+)$/)) {\n          if (indexOf(newGroup, Number(m[1])) > -1) {\n            lst(newChanges)[prop] = change[prop];\n            delete change[prop];\n          }\n        } } }\n      }\n    }\n    return copy\n  }\n\n  // The 'scroll' parameter given to many of these indicated whether\n  // the new cursor position should be scrolled into view after\n  // modifying the selection.\n\n  // If shift is held or the extend flag is set, extends a range to\n  // include a given position (and optionally a second position).\n  // Otherwise, simply returns the range between the given positions.\n  // Used for cursor motion and such.\n  function extendRange(range, head, other, extend) {\n    if (extend) {\n      var anchor = range.anchor;\n      if (other) {\n        var posBefore = cmp(head, anchor) < 0;\n        if (posBefore != (cmp(other, anchor) < 0)) {\n          anchor = head;\n          head = other;\n        } else if (posBefore != (cmp(head, other) < 0)) {\n          head = other;\n        }\n      }\n      return new Range(anchor, head)\n    } else {\n      return new Range(other || head, head)\n    }\n  }\n\n  // Extend the primary selection range, discard the rest.\n  function extendSelection(doc, head, other, options, extend) {\n    if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); }\n    setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n  }\n\n  // Extend all selections (pos is an array of selections with length\n  // equal the number of selections)\n  function extendSelections(doc, heads, options) {\n    var out = [];\n    var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n    for (var i = 0; i < doc.sel.ranges.length; i++)\n      { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }\n    var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n    setSelection(doc, newSel, options);\n  }\n\n  // Updates a single range in the selection.\n  function replaceOneSelection(doc, i, range, options) {\n    var ranges = doc.sel.ranges.slice(0);\n    ranges[i] = range;\n    setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n  }\n\n  // Reset the selection to a single range.\n  function setSimpleSelection(doc, anchor, head, options) {\n    setSelection(doc, simpleSelection(anchor, head), options);\n  }\n\n  // Give beforeSelectionChange handlers a change to influence a\n  // selection update.\n  function filterSelectionChange(doc, sel, options) {\n    var obj = {\n      ranges: sel.ranges,\n      update: function(ranges) {\n        this.ranges = [];\n        for (var i = 0; i < ranges.length; i++)\n          { this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n                                     clipPos(doc, ranges[i].head)); }\n      },\n      origin: options && options.origin\n    };\n    signal(doc, \"beforeSelectionChange\", doc, obj);\n    if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n    if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) }\n    else { return sel }\n  }\n\n  function setSelectionReplaceHistory(doc, sel, options) {\n    var done = doc.history.done, last = lst(done);\n    if (last && last.ranges) {\n      done[done.length - 1] = sel;\n      setSelectionNoUndo(doc, sel, options);\n    } else {\n      setSelection(doc, sel, options);\n    }\n  }\n\n  // Set a new selection.\n  function setSelection(doc, sel, options) {\n    setSelectionNoUndo(doc, sel, options);\n    addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n  }\n\n  function setSelectionNoUndo(doc, sel, options) {\n    if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n      { sel = filterSelectionChange(doc, sel, options); }\n\n    var bias = options && options.bias ||\n      (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n    setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n    if (!(options && options.scroll === false) && doc.cm)\n      { ensureCursorVisible(doc.cm); }\n  }\n\n  function setSelectionInner(doc, sel) {\n    if (sel.equals(doc.sel)) { return }\n\n    doc.sel = sel;\n\n    if (doc.cm) {\n      doc.cm.curOp.updateInput = 1;\n      doc.cm.curOp.selectionChanged = true;\n      signalCursorActivity(doc.cm);\n    }\n    signalLater(doc, \"cursorActivity\", doc);\n  }\n\n  // Verify that the selection does not partially select any atomic\n  // marked ranges.\n  function reCheckSelection(doc) {\n    setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n  }\n\n  // Return a selection that does not partially select any atomic\n  // ranges.\n  function skipAtomicInSelection(doc, sel, bias, mayClear) {\n    var out;\n    for (var i = 0; i < sel.ranges.length; i++) {\n      var range = sel.ranges[i];\n      var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n      var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n      var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n      if (out || newAnchor != range.anchor || newHead != range.head) {\n        if (!out) { out = sel.ranges.slice(0, i); }\n        out[i] = new Range(newAnchor, newHead);\n      }\n    }\n    return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel\n  }\n\n  function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n    var line = getLine(doc, pos.line);\n    if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n      var sp = line.markedSpans[i], m = sp.marker;\n\n      // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n      // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n      // is with selectLeft/Right\n      var preventCursorLeft = (\"selectLeft\" in m) ? !m.selectLeft : m.inclusiveLeft;\n      var preventCursorRight = (\"selectRight\" in m) ? !m.selectRight : m.inclusiveRight;\n\n      if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n          (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n        if (mayClear) {\n          signal(m, \"beforeCursorEnter\");\n          if (m.explicitlyCleared) {\n            if (!line.markedSpans) { break }\n            else {--i; continue}\n          }\n        }\n        if (!m.atomic) { continue }\n\n        if (oldPos) {\n          var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n          if (dir < 0 ? preventCursorRight : preventCursorLeft)\n            { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\n          if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n            { return skipAtomicInner(doc, near, pos, dir, mayClear) }\n        }\n\n        var far = m.find(dir < 0 ? -1 : 1);\n        if (dir < 0 ? preventCursorLeft : preventCursorRight)\n          { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n        return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n      }\n    } }\n    return pos\n  }\n\n  // Ensure a given position is not inside an atomic range.\n  function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n    var dir = bias || 1;\n    var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n        (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n        skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n        (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n    if (!found) {\n      doc.cantEdit = true;\n      return Pos(doc.first, 0)\n    }\n    return found\n  }\n\n  function movePos(doc, pos, dir, line) {\n    if (dir < 0 && pos.ch == 0) {\n      if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\n      else { return null }\n    } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n      if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n      else { return null }\n    } else {\n      return new Pos(pos.line, pos.ch + dir)\n    }\n  }\n\n  function selectAll(cm) {\n    cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n  }\n\n  // UPDATING\n\n  // Allow \"beforeChange\" event handlers to influence a change\n  function filterChange(doc, change, update) {\n    var obj = {\n      canceled: false,\n      from: change.from,\n      to: change.to,\n      text: change.text,\n      origin: change.origin,\n      cancel: function () { return obj.canceled = true; }\n    };\n    if (update) { obj.update = function (from, to, text, origin) {\n      if (from) { obj.from = clipPos(doc, from); }\n      if (to) { obj.to = clipPos(doc, to); }\n      if (text) { obj.text = text; }\n      if (origin !== undefined) { obj.origin = origin; }\n    }; }\n    signal(doc, \"beforeChange\", doc, obj);\n    if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n    if (obj.canceled) {\n      if (doc.cm) { doc.cm.curOp.updateInput = 2; }\n      return null\n    }\n    return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n  }\n\n  // Apply a change to a document, and add it to the document's\n  // history, and propagating it to all linked documents.\n  function makeChange(doc, change, ignoreReadOnly) {\n    if (doc.cm) {\n      if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n      if (doc.cm.state.suppressEdits) { return }\n    }\n\n    if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n      change = filterChange(doc, change, true);\n      if (!change) { return }\n    }\n\n    // Possibly split or suppress the update based on the presence\n    // of read-only spans in its range.\n    var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n    if (split) {\n      for (var i = split.length - 1; i >= 0; --i)\n        { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text, origin: change.origin}); }\n    } else {\n      makeChangeInner(doc, change);\n    }\n  }\n\n  function makeChangeInner(doc, change) {\n    if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) { return }\n    var selAfter = computeSelAfterChange(doc, change);\n    addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n    makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n    var rebased = [];\n\n    linkedDocs(doc, function (doc, sharedHist) {\n      if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n        rebaseHist(doc.history, change);\n        rebased.push(doc.history);\n      }\n      makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n    });\n  }\n\n  // Revert a change stored in a document's history.\n  function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n    var suppress = doc.cm && doc.cm.state.suppressEdits;\n    if (suppress && !allowSelectionOnly) { return }\n\n    var hist = doc.history, event, selAfter = doc.sel;\n    var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n    // Verify that there is a useable event (so that ctrl-z won't\n    // needlessly clear selection events)\n    var i = 0;\n    for (; i < source.length; i++) {\n      event = source[i];\n      if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n        { break }\n    }\n    if (i == source.length) { return }\n    hist.lastOrigin = hist.lastSelOrigin = null;\n\n    for (;;) {\n      event = source.pop();\n      if (event.ranges) {\n        pushSelectionToHistory(event, dest);\n        if (allowSelectionOnly && !event.equals(doc.sel)) {\n          setSelection(doc, event, {clearRedo: false});\n          return\n        }\n        selAfter = event;\n      } else if (suppress) {\n        source.push(event);\n        return\n      } else { break }\n    }\n\n    // Build up a reverse change object to add to the opposite history\n    // stack (redo when undoing, and vice versa).\n    var antiChanges = [];\n    pushSelectionToHistory(selAfter, dest);\n    dest.push({changes: antiChanges, generation: hist.generation});\n    hist.generation = event.generation || ++hist.maxGeneration;\n\n    var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n    var loop = function ( i ) {\n      var change = event.changes[i];\n      change.origin = type;\n      if (filter && !filterChange(doc, change, false)) {\n        source.length = 0;\n        return {}\n      }\n\n      antiChanges.push(historyChangeFromChange(doc, change));\n\n      var after = i ? computeSelAfterChange(doc, change) : lst(source);\n      makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n      if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n      var rebased = [];\n\n      // Propagate to the linked documents\n      linkedDocs(doc, function (doc, sharedHist) {\n        if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n          rebaseHist(doc.history, change);\n          rebased.push(doc.history);\n        }\n        makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n      });\n    };\n\n    for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n      var returned = loop( i$1 );\n\n      if ( returned ) return returned.v;\n    }\n  }\n\n  // Sub-views need their line numbers shifted when text is added\n  // above or below them in the parent document.\n  function shiftDoc(doc, distance) {\n    if (distance == 0) { return }\n    doc.first += distance;\n    doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n      Pos(range.anchor.line + distance, range.anchor.ch),\n      Pos(range.head.line + distance, range.head.ch)\n    ); }), doc.sel.primIndex);\n    if (doc.cm) {\n      regChange(doc.cm, doc.first, doc.first - distance, distance);\n      for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n        { regLineChange(doc.cm, l, \"gutter\"); }\n    }\n  }\n\n  // More lower-level change function, handling only a single document\n  // (not linked ones).\n  function makeChangeSingleDoc(doc, change, selAfter, spans) {\n    if (doc.cm && !doc.cm.curOp)\n      { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\n\n    if (change.to.line < doc.first) {\n      shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n      return\n    }\n    if (change.from.line > doc.lastLine()) { return }\n\n    // Clip the change to the size of this doc\n    if (change.from.line < doc.first) {\n      var shift = change.text.length - 1 - (doc.first - change.from.line);\n      shiftDoc(doc, shift);\n      change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n                text: [lst(change.text)], origin: change.origin};\n    }\n    var last = doc.lastLine();\n    if (change.to.line > last) {\n      change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n                text: [change.text[0]], origin: change.origin};\n    }\n\n    change.removed = getBetween(doc, change.from, change.to);\n\n    if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n    if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n    else { updateDoc(doc, change, spans); }\n    setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n\n    if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0)))\n      { doc.cantEdit = false; }\n  }\n\n  // Handle the interaction of a change to a document with the editor\n  // that this document is part of.\n  function makeChangeSingleDocInEditor(cm, change, spans) {\n    var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n    var recomputeMaxLength = false, checkWidthStart = from.line;\n    if (!cm.options.lineWrapping) {\n      checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n      doc.iter(checkWidthStart, to.line + 1, function (line) {\n        if (line == display.maxLine) {\n          recomputeMaxLength = true;\n          return true\n        }\n      });\n    }\n\n    if (doc.sel.contains(change.from, change.to) > -1)\n      { signalCursorActivity(cm); }\n\n    updateDoc(doc, change, spans, estimateHeight(cm));\n\n    if (!cm.options.lineWrapping) {\n      doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n        var len = lineLength(line);\n        if (len > display.maxLineLength) {\n          display.maxLine = line;\n          display.maxLineLength = len;\n          display.maxLineChanged = true;\n          recomputeMaxLength = false;\n        }\n      });\n      if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n    }\n\n    retreatFrontier(doc, from.line);\n    startWorker(cm, 400);\n\n    var lendiff = change.text.length - (to.line - from.line) - 1;\n    // Remember that these lines changed, for updating the display\n    if (change.full)\n      { regChange(cm); }\n    else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n      { regLineChange(cm, from.line, \"text\"); }\n    else\n      { regChange(cm, from.line, to.line + 1, lendiff); }\n\n    var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n    if (changeHandler || changesHandler) {\n      var obj = {\n        from: from, to: to,\n        text: change.text,\n        removed: change.removed,\n        origin: change.origin\n      };\n      if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n      if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n    }\n    cm.display.selForContextMenu = null;\n  }\n\n  function replaceRange(doc, code, from, to, origin) {\n    var assign;\n\n    if (!to) { to = from; }\n    if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); }\n    if (typeof code == \"string\") { code = doc.splitLines(code); }\n    makeChange(doc, {from: from, to: to, text: code, origin: origin});\n  }\n\n  // Rebasing/resetting history to deal with externally-sourced changes\n\n  function rebaseHistSelSingle(pos, from, to, diff) {\n    if (to < pos.line) {\n      pos.line += diff;\n    } else if (from < pos.line) {\n      pos.line = from;\n      pos.ch = 0;\n    }\n  }\n\n  // Tries to rebase an array of history events given a change in the\n  // document. If the change touches the same lines as the event, the\n  // event, and everything 'behind' it, is discarded. If the change is\n  // before the event, the event's positions are updated. Uses a\n  // copy-on-write scheme for the positions, to avoid having to\n  // reallocate them all on every rebase, but also avoid problems with\n  // shared position objects being unsafely updated.\n  function rebaseHistArray(array, from, to, diff) {\n    for (var i = 0; i < array.length; ++i) {\n      var sub = array[i], ok = true;\n      if (sub.ranges) {\n        if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n        for (var j = 0; j < sub.ranges.length; j++) {\n          rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n          rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n        }\n        continue\n      }\n      for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n        var cur = sub.changes[j$1];\n        if (to < cur.from.line) {\n          cur.from = Pos(cur.from.line + diff, cur.from.ch);\n          cur.to = Pos(cur.to.line + diff, cur.to.ch);\n        } else if (from <= cur.to.line) {\n          ok = false;\n          break\n        }\n      }\n      if (!ok) {\n        array.splice(0, i + 1);\n        i = 0;\n      }\n    }\n  }\n\n  function rebaseHist(hist, change) {\n    var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n    rebaseHistArray(hist.done, from, to, diff);\n    rebaseHistArray(hist.undone, from, to, diff);\n  }\n\n  // Utility for applying a change to a line by handle or number,\n  // returning the number and optionally registering the line as\n  // changed.\n  function changeLine(doc, handle, changeType, op) {\n    var no = handle, line = handle;\n    if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n    else { no = lineNo(handle); }\n    if (no == null) { return null }\n    if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n    return line\n  }\n\n  // The document is represented as a BTree consisting of leaves, with\n  // chunk of lines in them, and branches, with up to ten leaves or\n  // other branch nodes below them. The top node is always a branch\n  // node, and is the document object itself (meaning it has\n  // additional methods and properties).\n  //\n  // All nodes have parent links. The tree is used both to go from\n  // line numbers to line objects, and to go from objects to numbers.\n  // It also indexes by height, and is used to convert between height\n  // and line object, and to find the total height of the document.\n  //\n  // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n  function LeafChunk(lines) {\n    this.lines = lines;\n    this.parent = null;\n    var height = 0;\n    for (var i = 0; i < lines.length; ++i) {\n      lines[i].parent = this;\n      height += lines[i].height;\n    }\n    this.height = height;\n  }\n\n  LeafChunk.prototype = {\n    chunkSize: function() { return this.lines.length },\n\n    // Remove the n lines at offset 'at'.\n    removeInner: function(at, n) {\n      for (var i = at, e = at + n; i < e; ++i) {\n        var line = this.lines[i];\n        this.height -= line.height;\n        cleanUpLine(line);\n        signalLater(line, \"delete\");\n      }\n      this.lines.splice(at, n);\n    },\n\n    // Helper used to collapse a small branch into a single leaf.\n    collapse: function(lines) {\n      lines.push.apply(lines, this.lines);\n    },\n\n    // Insert the given array of lines at offset 'at', count them as\n    // having the given height.\n    insertInner: function(at, lines, height) {\n      this.height += height;\n      this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n      for (var i = 0; i < lines.length; ++i) { lines[i].parent = this; }\n    },\n\n    // Used to iterate over a part of the tree.\n    iterN: function(at, n, op) {\n      for (var e = at + n; at < e; ++at)\n        { if (op(this.lines[at])) { return true } }\n    }\n  };\n\n  function BranchChunk(children) {\n    this.children = children;\n    var size = 0, height = 0;\n    for (var i = 0; i < children.length; ++i) {\n      var ch = children[i];\n      size += ch.chunkSize(); height += ch.height;\n      ch.parent = this;\n    }\n    this.size = size;\n    this.height = height;\n    this.parent = null;\n  }\n\n  BranchChunk.prototype = {\n    chunkSize: function() { return this.size },\n\n    removeInner: function(at, n) {\n      this.size -= n;\n      for (var i = 0; i < this.children.length; ++i) {\n        var child = this.children[i], sz = child.chunkSize();\n        if (at < sz) {\n          var rm = Math.min(n, sz - at), oldHeight = child.height;\n          child.removeInner(at, rm);\n          this.height -= oldHeight - child.height;\n          if (sz == rm) { this.children.splice(i--, 1); child.parent = null; }\n          if ((n -= rm) == 0) { break }\n          at = 0;\n        } else { at -= sz; }\n      }\n      // If the result is smaller than 25 lines, ensure that it is a\n      // single leaf node.\n      if (this.size - n < 25 &&\n          (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n        var lines = [];\n        this.collapse(lines);\n        this.children = [new LeafChunk(lines)];\n        this.children[0].parent = this;\n      }\n    },\n\n    collapse: function(lines) {\n      for (var i = 0; i < this.children.length; ++i) { this.children[i].collapse(lines); }\n    },\n\n    insertInner: function(at, lines, height) {\n      this.size += lines.length;\n      this.height += height;\n      for (var i = 0; i < this.children.length; ++i) {\n        var child = this.children[i], sz = child.chunkSize();\n        if (at <= sz) {\n          child.insertInner(at, lines, height);\n          if (child.lines && child.lines.length > 50) {\n            // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n            // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n            var remaining = child.lines.length % 25 + 25;\n            for (var pos = remaining; pos < child.lines.length;) {\n              var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n              child.height -= leaf.height;\n              this.children.splice(++i, 0, leaf);\n              leaf.parent = this;\n            }\n            child.lines = child.lines.slice(0, remaining);\n            this.maybeSpill();\n          }\n          break\n        }\n        at -= sz;\n      }\n    },\n\n    // When a node has grown, check whether it should be split.\n    maybeSpill: function() {\n      if (this.children.length <= 10) { return }\n      var me = this;\n      do {\n        var spilled = me.children.splice(me.children.length - 5, 5);\n        var sibling = new BranchChunk(spilled);\n        if (!me.parent) { // Become the parent node\n          var copy = new BranchChunk(me.children);\n          copy.parent = me;\n          me.children = [copy, sibling];\n          me = copy;\n       } else {\n          me.size -= sibling.size;\n          me.height -= sibling.height;\n          var myIndex = indexOf(me.parent.children, me);\n          me.parent.children.splice(myIndex + 1, 0, sibling);\n        }\n        sibling.parent = me.parent;\n      } while (me.children.length > 10)\n      me.parent.maybeSpill();\n    },\n\n    iterN: function(at, n, op) {\n      for (var i = 0; i < this.children.length; ++i) {\n        var child = this.children[i], sz = child.chunkSize();\n        if (at < sz) {\n          var used = Math.min(n, sz - at);\n          if (child.iterN(at, used, op)) { return true }\n          if ((n -= used) == 0) { break }\n          at = 0;\n        } else { at -= sz; }\n      }\n    }\n  };\n\n  // Line widgets are block elements displayed above or below a line.\n\n  var LineWidget = function(doc, node, options) {\n    if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n      { this[opt] = options[opt]; } } }\n    this.doc = doc;\n    this.node = node;\n  };\n\n  LineWidget.prototype.clear = function () {\n    var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n    if (no == null || !ws) { return }\n    for (var i = 0; i < ws.length; ++i) { if (ws[i] == this) { ws.splice(i--, 1); } }\n    if (!ws.length) { line.widgets = null; }\n    var height = widgetHeight(this);\n    updateLineHeight(line, Math.max(0, line.height - height));\n    if (cm) {\n      runInOp(cm, function () {\n        adjustScrollWhenAboveVisible(cm, line, -height);\n        regLineChange(cm, no, \"widget\");\n      });\n      signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n    }\n  };\n\n  LineWidget.prototype.changed = function () {\n      var this$1 = this;\n\n    var oldH = this.height, cm = this.doc.cm, line = this.line;\n    this.height = null;\n    var diff = widgetHeight(this) - oldH;\n    if (!diff) { return }\n    if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff); }\n    if (cm) {\n      runInOp(cm, function () {\n        cm.curOp.forceUpdate = true;\n        adjustScrollWhenAboveVisible(cm, line, diff);\n        signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n      });\n    }\n  };\n  eventMixin(LineWidget);\n\n  function adjustScrollWhenAboveVisible(cm, line, diff) {\n    if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n      { addToScrollTop(cm, diff); }\n  }\n\n  function addLineWidget(doc, handle, node, options) {\n    var widget = new LineWidget(doc, node, options);\n    var cm = doc.cm;\n    if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n    changeLine(doc, handle, \"widget\", function (line) {\n      var widgets = line.widgets || (line.widgets = []);\n      if (widget.insertAt == null) { widgets.push(widget); }\n      else { widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget); }\n      widget.line = line;\n      if (cm && !lineIsHidden(doc, line)) {\n        var aboveVisible = heightAtLine(line) < doc.scrollTop;\n        updateLineHeight(line, line.height + widgetHeight(widget));\n        if (aboveVisible) { addToScrollTop(cm, widget.height); }\n        cm.curOp.forceUpdate = true;\n      }\n      return true\n    });\n    if (cm) { signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle)); }\n    return widget\n  }\n\n  // TEXTMARKERS\n\n  // Created with markText and setBookmark methods. A TextMarker is a\n  // handle that can be used to clear or find a marked position in the\n  // document. Line objects hold arrays (markedSpans) containing\n  // {from, to, marker} object pointing to such marker objects, and\n  // indicating that such a marker is present on that line. Multiple\n  // lines may point to the same marker when it spans across lines.\n  // The spans will have null for their from/to properties when the\n  // marker continues beyond the start/end of the line. Markers have\n  // links back to the lines they currently touch.\n\n  // Collapsed markers have unique ids, in order to be able to order\n  // them, which is needed for uniquely determining an outer marker\n  // when they overlap (they may nest, but not partially overlap).\n  var nextMarkerId = 0;\n\n  var TextMarker = function(doc, type) {\n    this.lines = [];\n    this.type = type;\n    this.doc = doc;\n    this.id = ++nextMarkerId;\n  };\n\n  // Clear the marker.\n  TextMarker.prototype.clear = function () {\n    if (this.explicitlyCleared) { return }\n    var cm = this.doc.cm, withOp = cm && !cm.curOp;\n    if (withOp) { startOperation(cm); }\n    if (hasHandler(this, \"clear\")) {\n      var found = this.find();\n      if (found) { signalLater(this, \"clear\", found.from, found.to); }\n    }\n    var min = null, max = null;\n    for (var i = 0; i < this.lines.length; ++i) {\n      var line = this.lines[i];\n      var span = getMarkedSpanFor(line.markedSpans, this);\n      if (cm && !this.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n      else if (cm) {\n        if (span.to != null) { max = lineNo(line); }\n        if (span.from != null) { min = lineNo(line); }\n      }\n      line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n      if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm)\n        { updateLineHeight(line, textHeight(cm.display)); }\n    }\n    if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n      var visual = visualLine(this.lines[i$1]), len = lineLength(visual);\n      if (len > cm.display.maxLineLength) {\n        cm.display.maxLine = visual;\n        cm.display.maxLineLength = len;\n        cm.display.maxLineChanged = true;\n      }\n    } }\n\n    if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n    this.lines.length = 0;\n    this.explicitlyCleared = true;\n    if (this.atomic && this.doc.cantEdit) {\n      this.doc.cantEdit = false;\n      if (cm) { reCheckSelection(cm.doc); }\n    }\n    if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n    if (withOp) { endOperation(cm); }\n    if (this.parent) { this.parent.clear(); }\n  };\n\n  // Find the position of the marker in the document. Returns a {from,\n  // to} object by default. Side can be passed to get a specific side\n  // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n  // Pos objects returned contain a line object, rather than a line\n  // number (used to prevent looking up the same line twice).\n  TextMarker.prototype.find = function (side, lineObj) {\n    if (side == null && this.type == \"bookmark\") { side = 1; }\n    var from, to;\n    for (var i = 0; i < this.lines.length; ++i) {\n      var line = this.lines[i];\n      var span = getMarkedSpanFor(line.markedSpans, this);\n      if (span.from != null) {\n        from = Pos(lineObj ? line : lineNo(line), span.from);\n        if (side == -1) { return from }\n      }\n      if (span.to != null) {\n        to = Pos(lineObj ? line : lineNo(line), span.to);\n        if (side == 1) { return to }\n      }\n    }\n    return from && {from: from, to: to}\n  };\n\n  // Signals that the marker's widget changed, and surrounding layout\n  // should be recomputed.\n  TextMarker.prototype.changed = function () {\n      var this$1 = this;\n\n    var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n    if (!pos || !cm) { return }\n    runInOp(cm, function () {\n      var line = pos.line, lineN = lineNo(pos.line);\n      var view = findViewForLine(cm, lineN);\n      if (view) {\n        clearLineMeasurementCacheFor(view);\n        cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n      }\n      cm.curOp.updateMaxLine = true;\n      if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n        var oldHeight = widget.height;\n        widget.height = null;\n        var dHeight = widgetHeight(widget) - oldHeight;\n        if (dHeight)\n          { updateLineHeight(line, line.height + dHeight); }\n      }\n      signalLater(cm, \"markerChanged\", cm, this$1);\n    });\n  };\n\n  TextMarker.prototype.attachLine = function (line) {\n    if (!this.lines.length && this.doc.cm) {\n      var op = this.doc.cm.curOp;\n      if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n        { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n    }\n    this.lines.push(line);\n  };\n\n  TextMarker.prototype.detachLine = function (line) {\n    this.lines.splice(indexOf(this.lines, line), 1);\n    if (!this.lines.length && this.doc.cm) {\n      var op = this.doc.cm.curOp\n      ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n    }\n  };\n  eventMixin(TextMarker);\n\n  // Create a marker, wire it up to the right lines, and\n  function markText(doc, from, to, options, type) {\n    // Shared markers (across linked documents) are handled separately\n    // (markTextShared will call out to this again, once per\n    // document).\n    if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\n    // Ensure we are in an operation.\n    if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n    var marker = new TextMarker(doc, type), diff = cmp(from, to);\n    if (options) { copyObj(options, marker, false); }\n    // Don't connect empty markers unless clearWhenEmpty is false\n    if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n      { return marker }\n    if (marker.replacedWith) {\n      // Showing up as a widget implies collapsed (widget replaces text)\n      marker.collapsed = true;\n      marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n      if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n      if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n    }\n    if (marker.collapsed) {\n      if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n          from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n        { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n      seeCollapsedSpans();\n    }\n\n    if (marker.addToHistory)\n      { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n    var curLine = from.line, cm = doc.cm, updateMaxLine;\n    doc.iter(curLine, to.line + 1, function (line) {\n      if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n        { updateMaxLine = true; }\n      if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n      addMarkedSpan(line, new MarkedSpan(marker,\n                                         curLine == from.line ? from.ch : null,\n                                         curLine == to.line ? to.ch : null));\n      ++curLine;\n    });\n    // lineIsHidden depends on the presence of the spans, so needs a second pass\n    if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n      if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n    }); }\n\n    if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n    if (marker.readOnly) {\n      seeReadOnlySpans();\n      if (doc.history.done.length || doc.history.undone.length)\n        { doc.clearHistory(); }\n    }\n    if (marker.collapsed) {\n      marker.id = ++nextMarkerId;\n      marker.atomic = true;\n    }\n    if (cm) {\n      // Sync editor state\n      if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n      if (marker.collapsed)\n        { regChange(cm, from.line, to.line + 1); }\n      else if (marker.className || marker.startStyle || marker.endStyle || marker.css ||\n               marker.attributes || marker.title)\n        { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n      if (marker.atomic) { reCheckSelection(cm.doc); }\n      signalLater(cm, \"markerAdded\", cm, marker);\n    }\n    return marker\n  }\n\n  // SHARED TEXTMARKERS\n\n  // A shared marker spans multiple linked documents. It is\n  // implemented as a meta-marker-object controlling multiple normal\n  // markers.\n  var SharedTextMarker = function(markers, primary) {\n    this.markers = markers;\n    this.primary = primary;\n    for (var i = 0; i < markers.length; ++i)\n      { markers[i].parent = this; }\n  };\n\n  SharedTextMarker.prototype.clear = function () {\n    if (this.explicitlyCleared) { return }\n    this.explicitlyCleared = true;\n    for (var i = 0; i < this.markers.length; ++i)\n      { this.markers[i].clear(); }\n    signalLater(this, \"clear\");\n  };\n\n  SharedTextMarker.prototype.find = function (side, lineObj) {\n    return this.primary.find(side, lineObj)\n  };\n  eventMixin(SharedTextMarker);\n\n  function markTextShared(doc, from, to, options, type) {\n    options = copyObj(options);\n    options.shared = false;\n    var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n    var widget = options.widgetNode;\n    linkedDocs(doc, function (doc) {\n      if (widget) { options.widgetNode = widget.cloneNode(true); }\n      markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n      for (var i = 0; i < doc.linked.length; ++i)\n        { if (doc.linked[i].isParent) { return } }\n      primary = lst(markers);\n    });\n    return new SharedTextMarker(markers, primary)\n  }\n\n  function findSharedMarkers(doc) {\n    return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\n  }\n\n  function copySharedMarkers(doc, markers) {\n    for (var i = 0; i < markers.length; i++) {\n      var marker = markers[i], pos = marker.find();\n      var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n      if (cmp(mFrom, mTo)) {\n        var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n        marker.markers.push(subMark);\n        subMark.parent = marker;\n      }\n    }\n  }\n\n  function detachSharedMarkers(markers) {\n    var loop = function ( i ) {\n      var marker = markers[i], linked = [marker.primary.doc];\n      linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n      for (var j = 0; j < marker.markers.length; j++) {\n        var subMarker = marker.markers[j];\n        if (indexOf(linked, subMarker.doc) == -1) {\n          subMarker.parent = null;\n          marker.markers.splice(j--, 1);\n        }\n      }\n    };\n\n    for (var i = 0; i < markers.length; i++) loop( i );\n  }\n\n  var nextDocId = 0;\n  var Doc = function(text, mode, firstLine, lineSep, direction) {\n    if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n    if (firstLine == null) { firstLine = 0; }\n\n    BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n    this.first = firstLine;\n    this.scrollTop = this.scrollLeft = 0;\n    this.cantEdit = false;\n    this.cleanGeneration = 1;\n    this.modeFrontier = this.highlightFrontier = firstLine;\n    var start = Pos(firstLine, 0);\n    this.sel = simpleSelection(start);\n    this.history = new History(null);\n    this.id = ++nextDocId;\n    this.modeOption = mode;\n    this.lineSep = lineSep;\n    this.direction = (direction == \"rtl\") ? \"rtl\" : \"ltr\";\n    this.extend = false;\n\n    if (typeof text == \"string\") { text = this.splitLines(text); }\n    updateDoc(this, {from: start, to: start, text: text});\n    setSelection(this, simpleSelection(start), sel_dontScroll);\n  };\n\n  Doc.prototype = createObj(BranchChunk.prototype, {\n    constructor: Doc,\n    // Iterate over the document. Supports two forms -- with only one\n    // argument, it calls that for each line in the document. With\n    // three, it iterates over the range given by the first two (with\n    // the second being non-inclusive).\n    iter: function(from, to, op) {\n      if (op) { this.iterN(from - this.first, to - from, op); }\n      else { this.iterN(this.first, this.first + this.size, from); }\n    },\n\n    // Non-public interface for adding and removing lines.\n    insert: function(at, lines) {\n      var height = 0;\n      for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n      this.insertInner(at - this.first, lines, height);\n    },\n    remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n    // From here, the methods are part of the public interface. Most\n    // are also available from CodeMirror (editor) instances.\n\n    getValue: function(lineSep) {\n      var lines = getLines(this, this.first, this.first + this.size);\n      if (lineSep === false) { return lines }\n      return lines.join(lineSep || this.lineSeparator())\n    },\n    setValue: docMethodOp(function(code) {\n      var top = Pos(this.first, 0), last = this.first + this.size - 1;\n      makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n                        text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n      if (this.cm) { scrollToCoords(this.cm, 0, 0); }\n      setSelection(this, simpleSelection(top), sel_dontScroll);\n    }),\n    replaceRange: function(code, from, to, origin) {\n      from = clipPos(this, from);\n      to = to ? clipPos(this, to) : from;\n      replaceRange(this, code, from, to, origin);\n    },\n    getRange: function(from, to, lineSep) {\n      var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n      if (lineSep === false) { return lines }\n      return lines.join(lineSep || this.lineSeparator())\n    },\n\n    getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n    getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n    getLineNumber: function(line) {return lineNo(line)},\n\n    getLineHandleVisualStart: function(line) {\n      if (typeof line == \"number\") { line = getLine(this, line); }\n      return visualLine(line)\n    },\n\n    lineCount: function() {return this.size},\n    firstLine: function() {return this.first},\n    lastLine: function() {return this.first + this.size - 1},\n\n    clipPos: function(pos) {return clipPos(this, pos)},\n\n    getCursor: function(start) {\n      var range = this.sel.primary(), pos;\n      if (start == null || start == \"head\") { pos = range.head; }\n      else if (start == \"anchor\") { pos = range.anchor; }\n      else if (start == \"end\" || start == \"to\" || start === false) { pos = range.to(); }\n      else { pos = range.from(); }\n      return pos\n    },\n    listSelections: function() { return this.sel.ranges },\n    somethingSelected: function() {return this.sel.somethingSelected()},\n\n    setCursor: docMethodOp(function(line, ch, options) {\n      setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n    }),\n    setSelection: docMethodOp(function(anchor, head, options) {\n      setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n    }),\n    extendSelection: docMethodOp(function(head, other, options) {\n      extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n    }),\n    extendSelections: docMethodOp(function(heads, options) {\n      extendSelections(this, clipPosArray(this, heads), options);\n    }),\n    extendSelectionsBy: docMethodOp(function(f, options) {\n      var heads = map(this.sel.ranges, f);\n      extendSelections(this, clipPosArray(this, heads), options);\n    }),\n    setSelections: docMethodOp(function(ranges, primary, options) {\n      if (!ranges.length) { return }\n      var out = [];\n      for (var i = 0; i < ranges.length; i++)\n        { out[i] = new Range(clipPos(this, ranges[i].anchor),\n                           clipPos(this, ranges[i].head)); }\n      if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\n      setSelection(this, normalizeSelection(this.cm, out, primary), options);\n    }),\n    addSelection: docMethodOp(function(anchor, head, options) {\n      var ranges = this.sel.ranges.slice(0);\n      ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n      setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n    }),\n\n    getSelection: function(lineSep) {\n      var ranges = this.sel.ranges, lines;\n      for (var i = 0; i < ranges.length; i++) {\n        var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n        lines = lines ? lines.concat(sel) : sel;\n      }\n      if (lineSep === false) { return lines }\n      else { return lines.join(lineSep || this.lineSeparator()) }\n    },\n    getSelections: function(lineSep) {\n      var parts = [], ranges = this.sel.ranges;\n      for (var i = 0; i < ranges.length; i++) {\n        var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n        if (lineSep !== false) { sel = sel.join(lineSep || this.lineSeparator()); }\n        parts[i] = sel;\n      }\n      return parts\n    },\n    replaceSelection: function(code, collapse, origin) {\n      var dup = [];\n      for (var i = 0; i < this.sel.ranges.length; i++)\n        { dup[i] = code; }\n      this.replaceSelections(dup, collapse, origin || \"+input\");\n    },\n    replaceSelections: docMethodOp(function(code, collapse, origin) {\n      var changes = [], sel = this.sel;\n      for (var i = 0; i < sel.ranges.length; i++) {\n        var range = sel.ranges[i];\n        changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin};\n      }\n      var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n      for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n        { makeChange(this, changes[i$1]); }\n      if (newSel) { setSelectionReplaceHistory(this, newSel); }\n      else if (this.cm) { ensureCursorVisible(this.cm); }\n    }),\n    undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n    redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n    undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n    redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n    setExtending: function(val) {this.extend = val;},\n    getExtending: function() {return this.extend},\n\n    historySize: function() {\n      var hist = this.history, done = 0, undone = 0;\n      for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n      for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n      return {undo: done, redo: undone}\n    },\n    clearHistory: function() {\n      var this$1 = this;\n\n      this.history = new History(this.history.maxGeneration);\n      linkedDocs(this, function (doc) { return doc.history = this$1.history; }, true);\n    },\n\n    markClean: function() {\n      this.cleanGeneration = this.changeGeneration(true);\n    },\n    changeGeneration: function(forceSplit) {\n      if (forceSplit)\n        { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n      return this.history.generation\n    },\n    isClean: function (gen) {\n      return this.history.generation == (gen || this.cleanGeneration)\n    },\n\n    getHistory: function() {\n      return {done: copyHistoryArray(this.history.done),\n              undone: copyHistoryArray(this.history.undone)}\n    },\n    setHistory: function(histData) {\n      var hist = this.history = new History(this.history.maxGeneration);\n      hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n      hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n    },\n\n    setGutterMarker: docMethodOp(function(line, gutterID, value) {\n      return changeLine(this, line, \"gutter\", function (line) {\n        var markers = line.gutterMarkers || (line.gutterMarkers = {});\n        markers[gutterID] = value;\n        if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n        return true\n      })\n    }),\n\n    clearGutter: docMethodOp(function(gutterID) {\n      var this$1 = this;\n\n      this.iter(function (line) {\n        if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n          changeLine(this$1, line, \"gutter\", function () {\n            line.gutterMarkers[gutterID] = null;\n            if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n            return true\n          });\n        }\n      });\n    }),\n\n    lineInfo: function(line) {\n      var n;\n      if (typeof line == \"number\") {\n        if (!isLine(this, line)) { return null }\n        n = line;\n        line = getLine(this, line);\n        if (!line) { return null }\n      } else {\n        n = lineNo(line);\n        if (n == null) { return null }\n      }\n      return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n              textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n              widgets: line.widgets}\n    },\n\n    addLineClass: docMethodOp(function(handle, where, cls) {\n      return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n        var prop = where == \"text\" ? \"textClass\"\n                 : where == \"background\" ? \"bgClass\"\n                 : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n        if (!line[prop]) { line[prop] = cls; }\n        else if (classTest(cls).test(line[prop])) { return false }\n        else { line[prop] += \" \" + cls; }\n        return true\n      })\n    }),\n    removeLineClass: docMethodOp(function(handle, where, cls) {\n      return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n        var prop = where == \"text\" ? \"textClass\"\n                 : where == \"background\" ? \"bgClass\"\n                 : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n        var cur = line[prop];\n        if (!cur) { return false }\n        else if (cls == null) { line[prop] = null; }\n        else {\n          var found = cur.match(classTest(cls));\n          if (!found) { return false }\n          var end = found.index + found[0].length;\n          line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n        }\n        return true\n      })\n    }),\n\n    addLineWidget: docMethodOp(function(handle, node, options) {\n      return addLineWidget(this, handle, node, options)\n    }),\n    removeLineWidget: function(widget) { widget.clear(); },\n\n    markText: function(from, to, options) {\n      return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n    },\n    setBookmark: function(pos, options) {\n      var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n                      insertLeft: options && options.insertLeft,\n                      clearWhenEmpty: false, shared: options && options.shared,\n                      handleMouseEvents: options && options.handleMouseEvents};\n      pos = clipPos(this, pos);\n      return markText(this, pos, pos, realOpts, \"bookmark\")\n    },\n    findMarksAt: function(pos) {\n      pos = clipPos(this, pos);\n      var markers = [], spans = getLine(this, pos.line).markedSpans;\n      if (spans) { for (var i = 0; i < spans.length; ++i) {\n        var span = spans[i];\n        if ((span.from == null || span.from <= pos.ch) &&\n            (span.to == null || span.to >= pos.ch))\n          { markers.push(span.marker.parent || span.marker); }\n      } }\n      return markers\n    },\n    findMarks: function(from, to, filter) {\n      from = clipPos(this, from); to = clipPos(this, to);\n      var found = [], lineNo = from.line;\n      this.iter(from.line, to.line + 1, function (line) {\n        var spans = line.markedSpans;\n        if (spans) { for (var i = 0; i < spans.length; i++) {\n          var span = spans[i];\n          if (!(span.to != null && lineNo == from.line && from.ch >= span.to ||\n                span.from == null && lineNo != from.line ||\n                span.from != null && lineNo == to.line && span.from >= to.ch) &&\n              (!filter || filter(span.marker)))\n            { found.push(span.marker.parent || span.marker); }\n        } }\n        ++lineNo;\n      });\n      return found\n    },\n    getAllMarks: function() {\n      var markers = [];\n      this.iter(function (line) {\n        var sps = line.markedSpans;\n        if (sps) { for (var i = 0; i < sps.length; ++i)\n          { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n      });\n      return markers\n    },\n\n    posFromIndex: function(off) {\n      var ch, lineNo = this.first, sepSize = this.lineSeparator().length;\n      this.iter(function (line) {\n        var sz = line.text.length + sepSize;\n        if (sz > off) { ch = off; return true }\n        off -= sz;\n        ++lineNo;\n      });\n      return clipPos(this, Pos(lineNo, ch))\n    },\n    indexFromPos: function (coords) {\n      coords = clipPos(this, coords);\n      var index = coords.ch;\n      if (coords.line < this.first || coords.ch < 0) { return 0 }\n      var sepSize = this.lineSeparator().length;\n      this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n        index += line.text.length + sepSize;\n      });\n      return index\n    },\n\n    copy: function(copyHistory) {\n      var doc = new Doc(getLines(this, this.first, this.first + this.size),\n                        this.modeOption, this.first, this.lineSep, this.direction);\n      doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n      doc.sel = this.sel;\n      doc.extend = false;\n      if (copyHistory) {\n        doc.history.undoDepth = this.history.undoDepth;\n        doc.setHistory(this.getHistory());\n      }\n      return doc\n    },\n\n    linkedDoc: function(options) {\n      if (!options) { options = {}; }\n      var from = this.first, to = this.first + this.size;\n      if (options.from != null && options.from > from) { from = options.from; }\n      if (options.to != null && options.to < to) { to = options.to; }\n      var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n      if (options.sharedHist) { copy.history = this.history\n      ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n      copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n      copySharedMarkers(copy, findSharedMarkers(this));\n      return copy\n    },\n    unlinkDoc: function(other) {\n      if (other instanceof CodeMirror) { other = other.doc; }\n      if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n        var link = this.linked[i];\n        if (link.doc != other) { continue }\n        this.linked.splice(i, 1);\n        other.unlinkDoc(this);\n        detachSharedMarkers(findSharedMarkers(this));\n        break\n      } }\n      // If the histories were shared, split them again\n      if (other.history == this.history) {\n        var splitIds = [other.id];\n        linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\n        other.history = new History(null);\n        other.history.done = copyHistoryArray(this.history.done, splitIds);\n        other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n      }\n    },\n    iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n    getMode: function() {return this.mode},\n    getEditor: function() {return this.cm},\n\n    splitLines: function(str) {\n      if (this.lineSep) { return str.split(this.lineSep) }\n      return splitLinesAuto(str)\n    },\n    lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n    setDirection: docMethodOp(function (dir) {\n      if (dir != \"rtl\") { dir = \"ltr\"; }\n      if (dir == this.direction) { return }\n      this.direction = dir;\n      this.iter(function (line) { return line.order = null; });\n      if (this.cm) { directionChanged(this.cm); }\n    })\n  });\n\n  // Public alias.\n  Doc.prototype.eachLine = Doc.prototype.iter;\n\n  // Kludge to work around strange IE behavior where it'll sometimes\n  // re-fire a series of drag-related events right after the drop (#1551)\n  var lastDrop = 0;\n\n  function onDrop(e) {\n    var cm = this;\n    clearDragCursor(cm);\n    if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n      { return }\n    e_preventDefault(e);\n    if (ie) { lastDrop = +new Date; }\n    var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n    if (!pos || cm.isReadOnly()) { return }\n    // Might be a file drop, in which case we simply extract the text\n    // and insert it.\n    if (files && files.length && window.FileReader && window.File) {\n      var n = files.length, text = Array(n), read = 0;\n      var markAsReadAndPasteIfAllFilesAreRead = function () {\n        if (++read == n) {\n          operation(cm, function () {\n            pos = clipPos(cm.doc, pos);\n            var change = {from: pos, to: pos,\n                          text: cm.doc.splitLines(\n                              text.filter(function (t) { return t != null; }).join(cm.doc.lineSeparator())),\n                          origin: \"paste\"};\n            makeChange(cm.doc, change);\n            setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));\n          })();\n        }\n      };\n      var readTextFromFile = function (file, i) {\n        if (cm.options.allowDropFileTypes &&\n            indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n          markAsReadAndPasteIfAllFilesAreRead();\n          return\n        }\n        var reader = new FileReader;\n        reader.onerror = function () { return markAsReadAndPasteIfAllFilesAreRead(); };\n        reader.onload = function () {\n          var content = reader.result;\n          if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n            markAsReadAndPasteIfAllFilesAreRead();\n            return\n          }\n          text[i] = content;\n          markAsReadAndPasteIfAllFilesAreRead();\n        };\n        reader.readAsText(file);\n      };\n      for (var i = 0; i < files.length; i++) { readTextFromFile(files[i], i); }\n    } else { // Normal drop\n      // Don't do a replace if the drop happened inside of the selected text.\n      if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n        cm.state.draggingText(e);\n        // Ensure the editor is re-focused\n        setTimeout(function () { return cm.display.input.focus(); }, 20);\n        return\n      }\n      try {\n        var text$1 = e.dataTransfer.getData(\"Text\");\n        if (text$1) {\n          var selected;\n          if (cm.state.draggingText && !cm.state.draggingText.copy)\n            { selected = cm.listSelections(); }\n          setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n          if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\n            { replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\"); } }\n          cm.replaceSelection(text$1, \"around\", \"paste\");\n          cm.display.input.focus();\n        }\n      }\n      catch(e$1){}\n    }\n  }\n\n  function onDragStart(cm, e) {\n    if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n    if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n    e.dataTransfer.setData(\"Text\", cm.getSelection());\n    e.dataTransfer.effectAllowed = \"copyMove\";\n\n    // Use dummy image instead of default browsers image.\n    // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n    if (e.dataTransfer.setDragImage && !safari) {\n      var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n      img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n      if (presto) {\n        img.width = img.height = 1;\n        cm.display.wrapper.appendChild(img);\n        // Force a relayout, or Opera won't use our image for some obscure reason\n        img._top = img.offsetTop;\n      }\n      e.dataTransfer.setDragImage(img, 0, 0);\n      if (presto) { img.parentNode.removeChild(img); }\n    }\n  }\n\n  function onDragOver(cm, e) {\n    var pos = posFromMouse(cm, e);\n    if (!pos) { return }\n    var frag = document.createDocumentFragment();\n    drawSelectionCursor(cm, pos, frag);\n    if (!cm.display.dragCursor) {\n      cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n      cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n    }\n    removeChildrenAndAdd(cm.display.dragCursor, frag);\n  }\n\n  function clearDragCursor(cm) {\n    if (cm.display.dragCursor) {\n      cm.display.lineSpace.removeChild(cm.display.dragCursor);\n      cm.display.dragCursor = null;\n    }\n  }\n\n  // These must be handled carefully, because naively registering a\n  // handler for each editor will cause the editors to never be\n  // garbage collected.\n\n  function forEachCodeMirror(f) {\n    if (!document.getElementsByClassName) { return }\n    var byClass = document.getElementsByClassName(\"CodeMirror\"), editors = [];\n    for (var i = 0; i < byClass.length; i++) {\n      var cm = byClass[i].CodeMirror;\n      if (cm) { editors.push(cm); }\n    }\n    if (editors.length) { editors[0].operation(function () {\n      for (var i = 0; i < editors.length; i++) { f(editors[i]); }\n    }); }\n  }\n\n  var globalsRegistered = false;\n  function ensureGlobalHandlers() {\n    if (globalsRegistered) { return }\n    registerGlobalHandlers();\n    globalsRegistered = true;\n  }\n  function registerGlobalHandlers() {\n    // When the window resizes, we need to refresh active editors.\n    var resizeTimer;\n    on(window, \"resize\", function () {\n      if (resizeTimer == null) { resizeTimer = setTimeout(function () {\n        resizeTimer = null;\n        forEachCodeMirror(onResize);\n      }, 100); }\n    });\n    // When the window loses focus, we want to show the editor as blurred\n    on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n  }\n  // Called when the window resizes\n  function onResize(cm) {\n    var d = cm.display;\n    // Might be a text scaling operation, clear size caches.\n    d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n    d.scrollbarsClipped = false;\n    cm.setSize();\n  }\n\n  var keyNames = {\n    3: \"Pause\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n    19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n    36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n    46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n    106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 145: \"ScrollLock\",\n    173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n    221: \"]\", 222: \"'\", 224: \"Mod\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n    63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n  };\n\n  // Number keys\n  for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n  // Alphabetic keys\n  for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n  // Function keys\n  for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\n  var keyMap = {};\n\n  keyMap.basic = {\n    \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n    \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n    \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n    \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n    \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n    \"Esc\": \"singleSelection\"\n  };\n  // Note that the save and find-related commands aren't defined by\n  // default. User code or addons can define them. Unknown commands\n  // are simply ignored.\n  keyMap.pcDefault = {\n    \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n    \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n    \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n    \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n    \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n    \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n    \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n    \"fallthrough\": \"basic\"\n  };\n  // Very basic readline/emacs-style bindings, which are standard on Mac.\n  keyMap.emacsy = {\n    \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n    \"Alt-F\": \"goWordRight\", \"Alt-B\": \"goWordLeft\", \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\",\n    \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\", \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\",\n    \"Alt-D\": \"delWordAfter\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\", \"Ctrl-T\": \"transposeChars\",\n    \"Ctrl-O\": \"openLine\"\n  };\n  keyMap.macDefault = {\n    \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n    \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n    \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n    \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n    \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n    \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n    \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n    \"fallthrough\": [\"basic\", \"emacsy\"]\n  };\n  keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n  // KEYMAP DISPATCH\n\n  function normalizeKeyName(name) {\n    var parts = name.split(/-(?!$)/);\n    name = parts[parts.length - 1];\n    var alt, ctrl, shift, cmd;\n    for (var i = 0; i < parts.length - 1; i++) {\n      var mod = parts[i];\n      if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n      else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n      else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n      else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n      else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n    }\n    if (alt) { name = \"Alt-\" + name; }\n    if (ctrl) { name = \"Ctrl-\" + name; }\n    if (cmd) { name = \"Cmd-\" + name; }\n    if (shift) { name = \"Shift-\" + name; }\n    return name\n  }\n\n  // This is a kludge to keep keymaps mostly working as raw objects\n  // (backwards compatibility) while at the same time support features\n  // like normalization and multi-stroke key bindings. It compiles a\n  // new normalized keymap, and then updates the old object to reflect\n  // this.\n  function normalizeKeyMap(keymap) {\n    var copy = {};\n    for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n      var value = keymap[keyname];\n      if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n      if (value == \"...\") { delete keymap[keyname]; continue }\n\n      var keys = map(keyname.split(\" \"), normalizeKeyName);\n      for (var i = 0; i < keys.length; i++) {\n        var val = (void 0), name = (void 0);\n        if (i == keys.length - 1) {\n          name = keys.join(\" \");\n          val = value;\n        } else {\n          name = keys.slice(0, i + 1).join(\" \");\n          val = \"...\";\n        }\n        var prev = copy[name];\n        if (!prev) { copy[name] = val; }\n        else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n      }\n      delete keymap[keyname];\n    } }\n    for (var prop in copy) { keymap[prop] = copy[prop]; }\n    return keymap\n  }\n\n  function lookupKey(key, map, handle, context) {\n    map = getKeyMap(map);\n    var found = map.call ? map.call(key, context) : map[key];\n    if (found === false) { return \"nothing\" }\n    if (found === \"...\") { return \"multi\" }\n    if (found != null && handle(found)) { return \"handled\" }\n\n    if (map.fallthrough) {\n      if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\")\n        { return lookupKey(key, map.fallthrough, handle, context) }\n      for (var i = 0; i < map.fallthrough.length; i++) {\n        var result = lookupKey(key, map.fallthrough[i], handle, context);\n        if (result) { return result }\n      }\n    }\n  }\n\n  // Modifier key presses don't count as 'real' key presses for the\n  // purpose of keymap fallthrough.\n  function isModifierKey(value) {\n    var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n    return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\"\n  }\n\n  function addModifierNames(name, event, noShift) {\n    var base = name;\n    if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n    if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n    if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Mod\") { name = \"Cmd-\" + name; }\n    if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n    return name\n  }\n\n  // Look up the name of a key as indicated by an event object.\n  function keyName(event, noShift) {\n    if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n    var name = keyNames[event.keyCode];\n    if (name == null || event.altGraphKey) { return false }\n    // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n    // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n    if (event.keyCode == 3 && event.code) { name = event.code; }\n    return addModifierNames(name, event, noShift)\n  }\n\n  function getKeyMap(val) {\n    return typeof val == \"string\" ? keyMap[val] : val\n  }\n\n  // Helper for deleting text near the selection(s), used to implement\n  // backspace, delete, and similar functionality.\n  function deleteNearSelection(cm, compute) {\n    var ranges = cm.doc.sel.ranges, kill = [];\n    // Build up a set of ranges to kill first, merging overlapping\n    // ranges.\n    for (var i = 0; i < ranges.length; i++) {\n      var toKill = compute(ranges[i]);\n      while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n        var replaced = kill.pop();\n        if (cmp(replaced.from, toKill.from) < 0) {\n          toKill.from = replaced.from;\n          break\n        }\n      }\n      kill.push(toKill);\n    }\n    // Next, remove those actual ranges.\n    runInOp(cm, function () {\n      for (var i = kill.length - 1; i >= 0; i--)\n        { replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\"); }\n      ensureCursorVisible(cm);\n    });\n  }\n\n  function moveCharLogically(line, ch, dir) {\n    var target = skipExtendingChars(line.text, ch + dir, dir);\n    return target < 0 || target > line.text.length ? null : target\n  }\n\n  function moveLogically(line, start, dir) {\n    var ch = moveCharLogically(line, start.ch, dir);\n    return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\")\n  }\n\n  function endOfLine(visually, cm, lineObj, lineNo, dir) {\n    if (visually) {\n      if (cm.doc.direction == \"rtl\") { dir = -dir; }\n      var order = getOrder(lineObj, cm.doc.direction);\n      if (order) {\n        var part = dir < 0 ? lst(order) : order[0];\n        var moveInStorageOrder = (dir < 0) == (part.level == 1);\n        var sticky = moveInStorageOrder ? \"after\" : \"before\";\n        var ch;\n        // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n        // it could be that the last bidi part is not on the last visual line,\n        // since visual lines contain content order-consecutive chunks.\n        // Thus, in rtl, we are looking for the first (content-order) character\n        // in the rtl chunk that is on the last line (that is, the same line\n        // as the last (content-order) character).\n        if (part.level > 0 || cm.doc.direction == \"rtl\") {\n          var prep = prepareMeasureForLine(cm, lineObj);\n          ch = dir < 0 ? lineObj.text.length - 1 : 0;\n          var targetTop = measureCharPrepared(cm, prep, ch).top;\n          ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n          if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1); }\n        } else { ch = dir < 0 ? part.to : part.from; }\n        return new Pos(lineNo, ch, sticky)\n      }\n    }\n    return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\")\n  }\n\n  function moveVisually(cm, line, start, dir) {\n    var bidi = getOrder(line, cm.doc.direction);\n    if (!bidi) { return moveLogically(line, start, dir) }\n    if (start.ch >= line.text.length) {\n      start.ch = line.text.length;\n      start.sticky = \"before\";\n    } else if (start.ch <= 0) {\n      start.ch = 0;\n      start.sticky = \"after\";\n    }\n    var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n    if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n      // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n      // nothing interesting happens.\n      return moveLogically(line, start, dir)\n    }\n\n    var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n    var prep;\n    var getWrappedLineExtent = function (ch) {\n      if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n      prep = prep || prepareMeasureForLine(cm, line);\n      return wrappedLineExtentChar(cm, line, prep, ch)\n    };\n    var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n    if (cm.doc.direction == \"rtl\" || part.level == 1) {\n      var moveInStorageOrder = (part.level == 1) == (dir < 0);\n      var ch = mv(start, moveInStorageOrder ? 1 : -1);\n      if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n        // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n        var sticky = moveInStorageOrder ? \"before\" : \"after\";\n        return new Pos(start.line, ch, sticky)\n      }\n    }\n\n    // Case 3: Could not move within this bidi part in this visual line, so leave\n    // the current bidi part\n\n    var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n      var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n        ? new Pos(start.line, mv(ch, 1), \"before\")\n        : new Pos(start.line, ch, \"after\"); };\n\n      for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n        var part = bidi[partPos];\n        var moveInStorageOrder = (dir > 0) == (part.level != 1);\n        var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n        if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n        ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n        if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n      }\n    };\n\n    // Case 3a: Look for other bidi parts on the same visual line\n    var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n    if (res) { return res }\n\n    // Case 3b: Look for other bidi parts on the next visual line\n    var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n    if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n      res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n      if (res) { return res }\n    }\n\n    // Case 4: Nowhere to move\n    return null\n  }\n\n  // Commands are parameter-less actions that can be performed on an\n  // editor, mostly used for keybindings.\n  var commands = {\n    selectAll: selectAll,\n    singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n    killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n      if (range.empty()) {\n        var len = getLine(cm.doc, range.head.line).text.length;\n        if (range.head.ch == len && range.head.line < cm.lastLine())\n          { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n        else\n          { return {from: range.head, to: Pos(range.head.line, len)} }\n      } else {\n        return {from: range.from(), to: range.to()}\n      }\n    }); },\n    deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n      from: Pos(range.from().line, 0),\n      to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n    }); }); },\n    delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n      from: Pos(range.from().line, 0), to: range.from()\n    }); }); },\n    delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n      var top = cm.charCoords(range.head, \"div\").top + 5;\n      var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n      return {from: leftPos, to: range.from()}\n    }); },\n    delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n      var top = cm.charCoords(range.head, \"div\").top + 5;\n      var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n      return {from: range.from(), to: rightPos }\n    }); },\n    undo: function (cm) { return cm.undo(); },\n    redo: function (cm) { return cm.redo(); },\n    undoSelection: function (cm) { return cm.undoSelection(); },\n    redoSelection: function (cm) { return cm.redoSelection(); },\n    goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n    goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n    goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n      {origin: \"+move\", bias: 1}\n    ); },\n    goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n      {origin: \"+move\", bias: 1}\n    ); },\n    goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n      {origin: \"+move\", bias: -1}\n    ); },\n    goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n      var top = cm.cursorCoords(range.head, \"div\").top + 5;\n      return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n    }, sel_move); },\n    goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n      var top = cm.cursorCoords(range.head, \"div\").top + 5;\n      return cm.coordsChar({left: 0, top: top}, \"div\")\n    }, sel_move); },\n    goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n      var top = cm.cursorCoords(range.head, \"div\").top + 5;\n      var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n      if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n      return pos\n    }, sel_move); },\n    goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n    goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n    goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n    goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n    goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n    goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n    goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n    goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n    goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n    goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n    goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n    goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n    delCharBefore: function (cm) { return cm.deleteH(-1, \"codepoint\"); },\n    delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n    delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n    delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n    delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n    delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n    indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n    indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n    indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n    insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n    insertSoftTab: function (cm) {\n      var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n      for (var i = 0; i < ranges.length; i++) {\n        var pos = ranges[i].from();\n        var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n        spaces.push(spaceStr(tabSize - col % tabSize));\n      }\n      cm.replaceSelections(spaces);\n    },\n    defaultTab: function (cm) {\n      if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n      else { cm.execCommand(\"insertTab\"); }\n    },\n    // Swap the two chars left and right of each selection's head.\n    // Move cursor behind the two swapped characters afterwards.\n    //\n    // Doesn't consider line feeds a character.\n    // Doesn't scan more than one line above to find a character.\n    // Doesn't do anything on an empty line.\n    // Doesn't do anything with non-empty selections.\n    transposeChars: function (cm) { return runInOp(cm, function () {\n      var ranges = cm.listSelections(), newSel = [];\n      for (var i = 0; i < ranges.length; i++) {\n        if (!ranges[i].empty()) { continue }\n        var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n        if (line) {\n          if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\n          if (cur.ch > 0) {\n            cur = new Pos(cur.line, cur.ch + 1);\n            cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n                            Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n          } else if (cur.line > cm.doc.first) {\n            var prev = getLine(cm.doc, cur.line - 1).text;\n            if (prev) {\n              cur = new Pos(cur.line, 1);\n              cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n                              prev.charAt(prev.length - 1),\n                              Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n            }\n          }\n        }\n        newSel.push(new Range(cur, cur));\n      }\n      cm.setSelections(newSel);\n    }); },\n    newlineAndIndent: function (cm) { return runInOp(cm, function () {\n      var sels = cm.listSelections();\n      for (var i = sels.length - 1; i >= 0; i--)\n        { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n      sels = cm.listSelections();\n      for (var i$1 = 0; i$1 < sels.length; i$1++)\n        { cm.indentLine(sels[i$1].from().line, null, true); }\n      ensureCursorVisible(cm);\n    }); },\n    openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n    toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n  };\n\n\n  function lineStart(cm, lineN) {\n    var line = getLine(cm.doc, lineN);\n    var visual = visualLine(line);\n    if (visual != line) { lineN = lineNo(visual); }\n    return endOfLine(true, cm, visual, lineN, 1)\n  }\n  function lineEnd(cm, lineN) {\n    var line = getLine(cm.doc, lineN);\n    var visual = visualLineEnd(line);\n    if (visual != line) { lineN = lineNo(visual); }\n    return endOfLine(true, cm, line, lineN, -1)\n  }\n  function lineStartSmart(cm, pos) {\n    var start = lineStart(cm, pos.line);\n    var line = getLine(cm.doc, start.line);\n    var order = getOrder(line, cm.doc.direction);\n    if (!order || order[0].level == 0) {\n      var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n      var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n      return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\n    }\n    return start\n  }\n\n  // Run a handler that was bound to a key.\n  function doHandleBinding(cm, bound, dropShift) {\n    if (typeof bound == \"string\") {\n      bound = commands[bound];\n      if (!bound) { return false }\n    }\n    // Ensure previous input has been read, so that the handler sees a\n    // consistent view of the document\n    cm.display.input.ensurePolled();\n    var prevShift = cm.display.shift, done = false;\n    try {\n      if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n      if (dropShift) { cm.display.shift = false; }\n      done = bound(cm) != Pass;\n    } finally {\n      cm.display.shift = prevShift;\n      cm.state.suppressEdits = false;\n    }\n    return done\n  }\n\n  function lookupKeyForEditor(cm, name, handle) {\n    for (var i = 0; i < cm.state.keyMaps.length; i++) {\n      var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n      if (result) { return result }\n    }\n    return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n      || lookupKey(name, cm.options.keyMap, handle, cm)\n  }\n\n  // Note that, despite the name, this function is also used to check\n  // for bound mouse clicks.\n\n  var stopSeq = new Delayed;\n\n  function dispatchKey(cm, name, e, handle) {\n    var seq = cm.state.keySeq;\n    if (seq) {\n      if (isModifierKey(name)) { return \"handled\" }\n      if (/\\'$/.test(name))\n        { cm.state.keySeq = null; }\n      else\n        { stopSeq.set(50, function () {\n          if (cm.state.keySeq == seq) {\n            cm.state.keySeq = null;\n            cm.display.input.reset();\n          }\n        }); }\n      if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) { return true }\n    }\n    return dispatchKeyInner(cm, name, e, handle)\n  }\n\n  function dispatchKeyInner(cm, name, e, handle) {\n    var result = lookupKeyForEditor(cm, name, handle);\n\n    if (result == \"multi\")\n      { cm.state.keySeq = name; }\n    if (result == \"handled\")\n      { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n    if (result == \"handled\" || result == \"multi\") {\n      e_preventDefault(e);\n      restartBlink(cm);\n    }\n\n    return !!result\n  }\n\n  // Handle a key from the keydown event.\n  function handleKeyBinding(cm, e) {\n    var name = keyName(e, true);\n    if (!name) { return false }\n\n    if (e.shiftKey && !cm.state.keySeq) {\n      // First try to resolve full name (including 'Shift-'). Failing\n      // that, see if there is a cursor-motion command (starting with\n      // 'go') bound to the keyname without 'Shift-'.\n      return dispatchKey(cm, \"Shift-\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\n          || dispatchKey(cm, name, e, function (b) {\n               if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n                 { return doHandleBinding(cm, b) }\n             })\n    } else {\n      return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n    }\n  }\n\n  // Handle a key from the keypress event\n  function handleCharBinding(cm, e, ch) {\n    return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n  }\n\n  var lastStoppedKey = null;\n  function onKeyDown(e) {\n    var cm = this;\n    if (e.target && e.target != cm.display.input.getField()) { return }\n    cm.curOp.focus = activeElt();\n    if (signalDOMEvent(cm, e)) { return }\n    // IE does strange things with escape.\n    if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n    var code = e.keyCode;\n    cm.display.shift = code == 16 || e.shiftKey;\n    var handled = handleKeyBinding(cm, e);\n    if (presto) {\n      lastStoppedKey = handled ? code : null;\n      // Opera has no cut event... we try to at least catch the key combo\n      if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n        { cm.replaceSelection(\"\", null, \"cut\"); }\n    }\n    if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand)\n      { document.execCommand(\"cut\"); }\n\n    // Turn mouse into crosshair when Alt is held on Mac.\n    if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n      { showCrossHair(cm); }\n  }\n\n  function showCrossHair(cm) {\n    var lineDiv = cm.display.lineDiv;\n    addClass(lineDiv, \"CodeMirror-crosshair\");\n\n    function up(e) {\n      if (e.keyCode == 18 || !e.altKey) {\n        rmClass(lineDiv, \"CodeMirror-crosshair\");\n        off(document, \"keyup\", up);\n        off(document, \"mouseover\", up);\n      }\n    }\n    on(document, \"keyup\", up);\n    on(document, \"mouseover\", up);\n  }\n\n  function onKeyUp(e) {\n    if (e.keyCode == 16) { this.doc.sel.shift = false; }\n    signalDOMEvent(this, e);\n  }\n\n  function onKeyPress(e) {\n    var cm = this;\n    if (e.target && e.target != cm.display.input.getField()) { return }\n    if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n    var keyCode = e.keyCode, charCode = e.charCode;\n    if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n    if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n    var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n    // Some browsers fire keypress events for backspace\n    if (ch == \"\\x08\") { return }\n    if (handleCharBinding(cm, e, ch)) { return }\n    cm.display.input.onKeyPress(e);\n  }\n\n  var DOUBLECLICK_DELAY = 400;\n\n  var PastClick = function(time, pos, button) {\n    this.time = time;\n    this.pos = pos;\n    this.button = button;\n  };\n\n  PastClick.prototype.compare = function (time, pos, button) {\n    return this.time + DOUBLECLICK_DELAY > time &&\n      cmp(pos, this.pos) == 0 && button == this.button\n  };\n\n  var lastClick, lastDoubleClick;\n  function clickRepeat(pos, button) {\n    var now = +new Date;\n    if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n      lastClick = lastDoubleClick = null;\n      return \"triple\"\n    } else if (lastClick && lastClick.compare(now, pos, button)) {\n      lastDoubleClick = new PastClick(now, pos, button);\n      lastClick = null;\n      return \"double\"\n    } else {\n      lastClick = new PastClick(now, pos, button);\n      lastDoubleClick = null;\n      return \"single\"\n    }\n  }\n\n  // A mouse down can be a single click, double click, triple click,\n  // start of selection drag, start of text drag, new cursor\n  // (ctrl-click), rectangle drag (alt-drag), or xwin\n  // middle-click-paste. Or it might be a click on something we should\n  // not interfere with, such as a scrollbar or widget.\n  function onMouseDown(e) {\n    var cm = this, display = cm.display;\n    if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\n    display.input.ensurePolled();\n    display.shift = e.shiftKey;\n\n    if (eventInWidget(display, e)) {\n      if (!webkit) {\n        // Briefly turn off draggability, to allow widgets to do\n        // normal dragging things.\n        display.scroller.draggable = false;\n        setTimeout(function () { return display.scroller.draggable = true; }, 100);\n      }\n      return\n    }\n    if (clickInGutter(cm, e)) { return }\n    var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : \"single\";\n    window.focus();\n\n    // #3261: make sure, that we're not starting a second selection\n    if (button == 1 && cm.state.selectingText)\n      { cm.state.selectingText(e); }\n\n    if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return }\n\n    if (button == 1) {\n      if (pos) { leftButtonDown(cm, pos, repeat, e); }\n      else if (e_target(e) == display.scroller) { e_preventDefault(e); }\n    } else if (button == 2) {\n      if (pos) { extendSelection(cm.doc, pos); }\n      setTimeout(function () { return display.input.focus(); }, 20);\n    } else if (button == 3) {\n      if (captureRightClick) { cm.display.input.onContextMenu(e); }\n      else { delayBlurEvent(cm); }\n    }\n  }\n\n  function handleMappedButton(cm, button, pos, repeat, event) {\n    var name = \"Click\";\n    if (repeat == \"double\") { name = \"Double\" + name; }\n    else if (repeat == \"triple\") { name = \"Triple\" + name; }\n    name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n\n    return dispatchKey(cm,  addModifierNames(name, event), event, function (bound) {\n      if (typeof bound == \"string\") { bound = commands[bound]; }\n      if (!bound) { return false }\n      var done = false;\n      try {\n        if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n        done = bound(cm, pos) != Pass;\n      } finally {\n        cm.state.suppressEdits = false;\n      }\n      return done\n    })\n  }\n\n  function configureMouse(cm, repeat, event) {\n    var option = cm.getOption(\"configureMouse\");\n    var value = option ? option(cm, repeat, event) : {};\n    if (value.unit == null) {\n      var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n      value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n    }\n    if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; }\n    if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; }\n    if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); }\n    return value\n  }\n\n  function leftButtonDown(cm, pos, repeat, event) {\n    if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n    else { cm.curOp.focus = activeElt(); }\n\n    var behavior = configureMouse(cm, repeat, event);\n\n    var sel = cm.doc.sel, contained;\n    if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n        repeat == \"single\" && (contained = sel.contains(pos)) > -1 &&\n        (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) &&\n        (cmp(contained.to(), pos) > 0 || pos.xRel < 0))\n      { leftButtonStartDrag(cm, event, pos, behavior); }\n    else\n      { leftButtonSelect(cm, event, pos, behavior); }\n  }\n\n  // Start a text drag. When it ends, see if any dragging actually\n  // happen, and treat as a click if it didn't.\n  function leftButtonStartDrag(cm, event, pos, behavior) {\n    var display = cm.display, moved = false;\n    var dragEnd = operation(cm, function (e) {\n      if (webkit) { display.scroller.draggable = false; }\n      cm.state.draggingText = false;\n      off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n      off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n      off(display.scroller, \"dragstart\", dragStart);\n      off(display.scroller, \"drop\", dragEnd);\n      if (!moved) {\n        e_preventDefault(e);\n        if (!behavior.addNew)\n          { extendSelection(cm.doc, pos, null, null, behavior.extend); }\n        // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n        if ((webkit && !safari) || ie && ie_version == 9)\n          { setTimeout(function () {display.wrapper.ownerDocument.body.focus({preventScroll: true}); display.input.focus();}, 20); }\n        else\n          { display.input.focus(); }\n      }\n    });\n    var mouseMove = function(e2) {\n      moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n    };\n    var dragStart = function () { return moved = true; };\n    // Let the drag handler handle this.\n    if (webkit) { display.scroller.draggable = true; }\n    cm.state.draggingText = dragEnd;\n    dragEnd.copy = !behavior.moveOnDrag;\n    // IE's approach to draggable\n    if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\n    on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n    on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n    on(display.scroller, \"dragstart\", dragStart);\n    on(display.scroller, \"drop\", dragEnd);\n\n    delayBlurEvent(cm);\n    setTimeout(function () { return display.input.focus(); }, 20);\n  }\n\n  function rangeForUnit(cm, pos, unit) {\n    if (unit == \"char\") { return new Range(pos, pos) }\n    if (unit == \"word\") { return cm.findWordAt(pos) }\n    if (unit == \"line\") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) }\n    var result = unit(cm, pos);\n    return new Range(result.from, result.to)\n  }\n\n  // Normal selection, as opposed to text dragging.\n  function leftButtonSelect(cm, event, start, behavior) {\n    var display = cm.display, doc = cm.doc;\n    e_preventDefault(event);\n\n    var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n    if (behavior.addNew && !behavior.extend) {\n      ourIndex = doc.sel.contains(start);\n      if (ourIndex > -1)\n        { ourRange = ranges[ourIndex]; }\n      else\n        { ourRange = new Range(start, start); }\n    } else {\n      ourRange = doc.sel.primary();\n      ourIndex = doc.sel.primIndex;\n    }\n\n    if (behavior.unit == \"rectangle\") {\n      if (!behavior.addNew) { ourRange = new Range(start, start); }\n      start = posFromMouse(cm, event, true, true);\n      ourIndex = -1;\n    } else {\n      var range = rangeForUnit(cm, start, behavior.unit);\n      if (behavior.extend)\n        { ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend); }\n      else\n        { ourRange = range; }\n    }\n\n    if (!behavior.addNew) {\n      ourIndex = 0;\n      setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n      startSel = doc.sel;\n    } else if (ourIndex == -1) {\n      ourIndex = ranges.length;\n      setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),\n                   {scroll: false, origin: \"*mouse\"});\n    } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n      setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n                   {scroll: false, origin: \"*mouse\"});\n      startSel = doc.sel;\n    } else {\n      replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n    }\n\n    var lastPos = start;\n    function extendTo(pos) {\n      if (cmp(lastPos, pos) == 0) { return }\n      lastPos = pos;\n\n      if (behavior.unit == \"rectangle\") {\n        var ranges = [], tabSize = cm.options.tabSize;\n        var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n        var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n        var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n        for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n             line <= end; line++) {\n          var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n          if (left == right)\n            { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\n          else if (text.length > leftPos)\n            { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\n        }\n        if (!ranges.length) { ranges.push(new Range(start, start)); }\n        setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n                     {origin: \"*mouse\", scroll: false});\n        cm.scrollIntoView(pos);\n      } else {\n        var oldRange = ourRange;\n        var range = rangeForUnit(cm, pos, behavior.unit);\n        var anchor = oldRange.anchor, head;\n        if (cmp(range.anchor, anchor) > 0) {\n          head = range.head;\n          anchor = minPos(oldRange.from(), range.anchor);\n        } else {\n          head = range.anchor;\n          anchor = maxPos(oldRange.to(), range.head);\n        }\n        var ranges$1 = startSel.ranges.slice(0);\n        ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n        setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n      }\n    }\n\n    var editorSize = display.wrapper.getBoundingClientRect();\n    // Used to ensure timeout re-tries don't fire when another extend\n    // happened in the meantime (clearTimeout isn't reliable -- at\n    // least on Chrome, the timeouts still happen even when cleared,\n    // if the clear happens after their scheduled firing time).\n    var counter = 0;\n\n    function extend(e) {\n      var curCount = ++counter;\n      var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n      if (!cur) { return }\n      if (cmp(cur, lastPos) != 0) {\n        cm.curOp.focus = activeElt();\n        extendTo(cur);\n        var visible = visibleLines(display, doc);\n        if (cur.line >= visible.to || cur.line < visible.from)\n          { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n      } else {\n        var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n        if (outside) { setTimeout(operation(cm, function () {\n          if (counter != curCount) { return }\n          display.scroller.scrollTop += outside;\n          extend(e);\n        }), 50); }\n      }\n    }\n\n    function done(e) {\n      cm.state.selectingText = false;\n      counter = Infinity;\n      // If e is null or undefined we interpret this as someone trying\n      // to explicitly cancel the selection rather than the user\n      // letting go of the mouse button.\n      if (e) {\n        e_preventDefault(e);\n        display.input.focus();\n      }\n      off(display.wrapper.ownerDocument, \"mousemove\", move);\n      off(display.wrapper.ownerDocument, \"mouseup\", up);\n      doc.history.lastSelOrigin = null;\n    }\n\n    var move = operation(cm, function (e) {\n      if (e.buttons === 0 || !e_button(e)) { done(e); }\n      else { extend(e); }\n    });\n    var up = operation(cm, done);\n    cm.state.selectingText = up;\n    on(display.wrapper.ownerDocument, \"mousemove\", move);\n    on(display.wrapper.ownerDocument, \"mouseup\", up);\n  }\n\n  // Used when mouse-selecting to adjust the anchor to the proper side\n  // of a bidi jump depending on the visual position of the head.\n  function bidiSimplify(cm, range) {\n    var anchor = range.anchor;\n    var head = range.head;\n    var anchorLine = getLine(cm.doc, anchor.line);\n    if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range }\n    var order = getOrder(anchorLine);\n    if (!order) { return range }\n    var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index];\n    if (part.from != anchor.ch && part.to != anchor.ch) { return range }\n    var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1);\n    if (boundary == 0 || boundary == order.length) { return range }\n\n    // Compute the relative visual position of the head compared to the\n    // anchor (<0 is to the left, >0 to the right)\n    var leftSide;\n    if (head.line != anchor.line) {\n      leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n    } else {\n      var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n      var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n      if (headIndex == boundary - 1 || headIndex == boundary)\n        { leftSide = dir < 0; }\n      else\n        { leftSide = dir > 0; }\n    }\n\n    var usePart = order[boundary + (leftSide ? -1 : 0)];\n    var from = leftSide == (usePart.level == 1);\n    var ch = from ? usePart.from : usePart.to, sticky = from ? \"after\" : \"before\";\n    return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head)\n  }\n\n\n  // Determines whether an event happened in the gutter, and fires the\n  // handlers for the corresponding event.\n  function gutterEvent(cm, e, type, prevent) {\n    var mX, mY;\n    if (e.touches) {\n      mX = e.touches[0].clientX;\n      mY = e.touches[0].clientY;\n    } else {\n      try { mX = e.clientX; mY = e.clientY; }\n      catch(e$1) { return false }\n    }\n    if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n    if (prevent) { e_preventDefault(e); }\n\n    var display = cm.display;\n    var lineBox = display.lineDiv.getBoundingClientRect();\n\n    if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n    mY -= lineBox.top - display.viewOffset;\n\n    for (var i = 0; i < cm.display.gutterSpecs.length; ++i) {\n      var g = display.gutters.childNodes[i];\n      if (g && g.getBoundingClientRect().right >= mX) {\n        var line = lineAtHeight(cm.doc, mY);\n        var gutter = cm.display.gutterSpecs[i];\n        signal(cm, type, cm, line, gutter.className, e);\n        return e_defaultPrevented(e)\n      }\n    }\n  }\n\n  function clickInGutter(cm, e) {\n    return gutterEvent(cm, e, \"gutterClick\", true)\n  }\n\n  // CONTEXT MENU HANDLING\n\n  // To make the context menu work, we need to briefly unhide the\n  // textarea (making it as unobtrusive as possible) to let the\n  // right-click take effect on it.\n  function onContextMenu(cm, e) {\n    if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n    if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n    if (!captureRightClick) { cm.display.input.onContextMenu(e); }\n  }\n\n  function contextMenuInGutter(cm, e) {\n    if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\n    return gutterEvent(cm, e, \"gutterContextMenu\", false)\n  }\n\n  function themeChanged(cm) {\n    cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n      cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n    clearCaches(cm);\n  }\n\n  var Init = {toString: function(){return \"CodeMirror.Init\"}};\n\n  var defaults = {};\n  var optionHandlers = {};\n\n  function defineOptions(CodeMirror) {\n    var optionHandlers = CodeMirror.optionHandlers;\n\n    function option(name, deflt, handle, notOnInit) {\n      CodeMirror.defaults[name] = deflt;\n      if (handle) { optionHandlers[name] =\n        notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n    }\n\n    CodeMirror.defineOption = option;\n\n    // Passed to option handlers when there is no old value.\n    CodeMirror.Init = Init;\n\n    // These two are, on init, called from the constructor because they\n    // have to be initialized before the editor can start at all.\n    option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n    option(\"mode\", null, function (cm, val) {\n      cm.doc.modeOption = val;\n      loadMode(cm);\n    }, true);\n\n    option(\"indentUnit\", 2, loadMode, true);\n    option(\"indentWithTabs\", false);\n    option(\"smartIndent\", true);\n    option(\"tabSize\", 4, function (cm) {\n      resetModeState(cm);\n      clearCaches(cm);\n      regChange(cm);\n    }, true);\n\n    option(\"lineSeparator\", null, function (cm, val) {\n      cm.doc.lineSep = val;\n      if (!val) { return }\n      var newBreaks = [], lineNo = cm.doc.first;\n      cm.doc.iter(function (line) {\n        for (var pos = 0;;) {\n          var found = line.text.indexOf(val, pos);\n          if (found == -1) { break }\n          pos = found + val.length;\n          newBreaks.push(Pos(lineNo, found));\n        }\n        lineNo++;\n      });\n      for (var i = newBreaks.length - 1; i >= 0; i--)\n        { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\n    });\n    option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b-\\u200c\\u200e\\u200f\\u2028\\u2029\\ufeff\\ufff9-\\ufffc]/g, function (cm, val, old) {\n      cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n      if (old != Init) { cm.refresh(); }\n    });\n    option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\n    option(\"electricChars\", true);\n    option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n      throw new Error(\"inputStyle can not (yet) be changed in a running editor\") // FIXME\n    }, true);\n    option(\"spellcheck\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\n    option(\"autocorrect\", false, function (cm, val) { return cm.getInputField().autocorrect = val; }, true);\n    option(\"autocapitalize\", false, function (cm, val) { return cm.getInputField().autocapitalize = val; }, true);\n    option(\"rtlMoveVisually\", !windows);\n    option(\"wholeLineUpdateBefore\", true);\n\n    option(\"theme\", \"default\", function (cm) {\n      themeChanged(cm);\n      updateGutters(cm);\n    }, true);\n    option(\"keyMap\", \"default\", function (cm, val, old) {\n      var next = getKeyMap(val);\n      var prev = old != Init && getKeyMap(old);\n      if (prev && prev.detach) { prev.detach(cm, next); }\n      if (next.attach) { next.attach(cm, prev || null); }\n    });\n    option(\"extraKeys\", null);\n    option(\"configureMouse\", null);\n\n    option(\"lineWrapping\", false, wrappingChanged, true);\n    option(\"gutters\", [], function (cm, val) {\n      cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n      updateGutters(cm);\n    }, true);\n    option(\"fixedGutter\", true, function (cm, val) {\n      cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n      cm.refresh();\n    }, true);\n    option(\"coverGutterNextToScrollbar\", false, function (cm) { return updateScrollbars(cm); }, true);\n    option(\"scrollbarStyle\", \"native\", function (cm) {\n      initScrollbars(cm);\n      updateScrollbars(cm);\n      cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n      cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n    }, true);\n    option(\"lineNumbers\", false, function (cm, val) {\n      cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n      updateGutters(cm);\n    }, true);\n    option(\"firstLineNumber\", 1, updateGutters, true);\n    option(\"lineNumberFormatter\", function (integer) { return integer; }, updateGutters, true);\n    option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n    option(\"resetSelectionOnContextMenu\", true);\n    option(\"lineWiseCopyCut\", true);\n    option(\"pasteLinesPerSelection\", true);\n    option(\"selectionsMayTouch\", false);\n\n    option(\"readOnly\", false, function (cm, val) {\n      if (val == \"nocursor\") {\n        onBlur(cm);\n        cm.display.input.blur();\n      }\n      cm.display.input.readOnlyChanged(val);\n    });\n\n    option(\"screenReaderLabel\", null, function (cm, val) {\n      val = (val === '') ? null : val;\n      cm.display.input.screenReaderLabelChanged(val);\n    });\n\n    option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n    option(\"dragDrop\", true, dragDropChanged);\n    option(\"allowDropFileTypes\", null);\n\n    option(\"cursorBlinkRate\", 530);\n    option(\"cursorScrollMargin\", 0);\n    option(\"cursorHeight\", 1, updateSelection, true);\n    option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n    option(\"workTime\", 100);\n    option(\"workDelay\", 100);\n    option(\"flattenSpans\", true, resetModeState, true);\n    option(\"addModeClass\", false, resetModeState, true);\n    option(\"pollInterval\", 100);\n    option(\"undoDepth\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\n    option(\"historyEventDelay\", 1250);\n    option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n    option(\"maxHighlightLength\", 10000, resetModeState, true);\n    option(\"moveInputWithCursor\", true, function (cm, val) {\n      if (!val) { cm.display.input.resetPosition(); }\n    });\n\n    option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n    option(\"autofocus\", null);\n    option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n    option(\"phrases\", null);\n  }\n\n  function dragDropChanged(cm, value, old) {\n    var wasOn = old && old != Init;\n    if (!value != !wasOn) {\n      var funcs = cm.display.dragFunctions;\n      var toggle = value ? on : off;\n      toggle(cm.display.scroller, \"dragstart\", funcs.start);\n      toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n      toggle(cm.display.scroller, \"dragover\", funcs.over);\n      toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n      toggle(cm.display.scroller, \"drop\", funcs.drop);\n    }\n  }\n\n  function wrappingChanged(cm) {\n    if (cm.options.lineWrapping) {\n      addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n      cm.display.sizer.style.minWidth = \"\";\n      cm.display.sizerWidth = null;\n    } else {\n      rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n      findMaxLine(cm);\n    }\n    estimateLineHeights(cm);\n    regChange(cm);\n    clearCaches(cm);\n    setTimeout(function () { return updateScrollbars(cm); }, 100);\n  }\n\n  // A CodeMirror instance represents an editor. This is the object\n  // that user code is usually dealing with.\n\n  function CodeMirror(place, options) {\n    var this$1 = this;\n\n    if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) }\n\n    this.options = options = options ? copyObj(options) : {};\n    // Determine effective options based on given values and defaults.\n    copyObj(defaults, options, false);\n\n    var doc = options.value;\n    if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n    else if (options.mode) { doc.modeOption = options.mode; }\n    this.doc = doc;\n\n    var input = new CodeMirror.inputStyles[options.inputStyle](this);\n    var display = this.display = new Display(place, doc, input, options);\n    display.wrapper.CodeMirror = this;\n    themeChanged(this);\n    if (options.lineWrapping)\n      { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n    initScrollbars(this);\n\n    this.state = {\n      keyMaps: [],  // stores maps added by addKeyMap\n      overlays: [], // highlighting overlays, as added by addOverlay\n      modeGen: 0,   // bumped when mode/overlay changes, used to invalidate highlighting info\n      overwrite: false,\n      delayingBlurEvent: false,\n      focused: false,\n      suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n      pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits in input.poll\n      selectingText: false,\n      draggingText: false,\n      highlight: new Delayed(), // stores highlight worker timeout\n      keySeq: null,  // Unfinished key sequence\n      specialChars: null\n    };\n\n    if (options.autofocus && !mobile) { display.input.focus(); }\n\n    // Override magic textarea content restore that IE sometimes does\n    // on our hidden textarea on reload\n    if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n    registerEventHandlers(this);\n    ensureGlobalHandlers();\n\n    startOperation(this);\n    this.curOp.forceUpdate = true;\n    attachDoc(this, doc);\n\n    if ((options.autofocus && !mobile) || this.hasFocus())\n      { setTimeout(function () {\n        if (this$1.hasFocus() && !this$1.state.focused) { onFocus(this$1); }\n      }, 20); }\n    else\n      { onBlur(this); }\n\n    for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n      { optionHandlers[opt](this, options[opt], Init); } }\n    maybeUpdateLineNumberWidth(this);\n    if (options.finishInit) { options.finishInit(this); }\n    for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this); }\n    endOperation(this);\n    // Suppress optimizelegibility in Webkit, since it breaks text\n    // measuring on line wrapping boundaries.\n    if (webkit && options.lineWrapping &&\n        getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n      { display.lineDiv.style.textRendering = \"auto\"; }\n  }\n\n  // The default configuration options.\n  CodeMirror.defaults = defaults;\n  // Functions to run when options are changed.\n  CodeMirror.optionHandlers = optionHandlers;\n\n  // Attach the necessary event handlers when initializing the editor\n  function registerEventHandlers(cm) {\n    var d = cm.display;\n    on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n    // Older IE's will not fire a second mousedown for a double click\n    if (ie && ie_version < 11)\n      { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n        if (signalDOMEvent(cm, e)) { return }\n        var pos = posFromMouse(cm, e);\n        if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\n        e_preventDefault(e);\n        var word = cm.findWordAt(pos);\n        extendSelection(cm.doc, word.anchor, word.head);\n      })); }\n    else\n      { on(d.scroller, \"dblclick\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\n    // Some browsers fire contextmenu *after* opening the menu, at\n    // which point we can't mess with it anymore. Context menu is\n    // handled in onMouseDown for these browsers.\n    on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); });\n    on(d.input.getField(), \"contextmenu\", function (e) {\n      if (!d.scroller.contains(e.target)) { onContextMenu(cm, e); }\n    });\n\n    // Used to suppress mouse event handling when a touch happens\n    var touchFinished, prevTouch = {end: 0};\n    function finishTouch() {\n      if (d.activeTouch) {\n        touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n        prevTouch = d.activeTouch;\n        prevTouch.end = +new Date;\n      }\n    }\n    function isMouseLikeTouchEvent(e) {\n      if (e.touches.length != 1) { return false }\n      var touch = e.touches[0];\n      return touch.radiusX <= 1 && touch.radiusY <= 1\n    }\n    function farAway(touch, other) {\n      if (other.left == null) { return true }\n      var dx = other.left - touch.left, dy = other.top - touch.top;\n      return dx * dx + dy * dy > 20 * 20\n    }\n    on(d.scroller, \"touchstart\", function (e) {\n      if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n        d.input.ensurePolled();\n        clearTimeout(touchFinished);\n        var now = +new Date;\n        d.activeTouch = {start: now, moved: false,\n                         prev: now - prevTouch.end <= 300 ? prevTouch : null};\n        if (e.touches.length == 1) {\n          d.activeTouch.left = e.touches[0].pageX;\n          d.activeTouch.top = e.touches[0].pageY;\n        }\n      }\n    });\n    on(d.scroller, \"touchmove\", function () {\n      if (d.activeTouch) { d.activeTouch.moved = true; }\n    });\n    on(d.scroller, \"touchend\", function (e) {\n      var touch = d.activeTouch;\n      if (touch && !eventInWidget(d, e) && touch.left != null &&\n          !touch.moved && new Date - touch.start < 300) {\n        var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n        if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n          { range = new Range(pos, pos); }\n        else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n          { range = cm.findWordAt(pos); }\n        else // Triple tap\n          { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n        cm.setSelection(range.anchor, range.head);\n        cm.focus();\n        e_preventDefault(e);\n      }\n      finishTouch();\n    });\n    on(d.scroller, \"touchcancel\", finishTouch);\n\n    // Sync scrolling between fake scrollbars and real scrollable\n    // area, ensure viewport is updated when scrolling.\n    on(d.scroller, \"scroll\", function () {\n      if (d.scroller.clientHeight) {\n        updateScrollTop(cm, d.scroller.scrollTop);\n        setScrollLeft(cm, d.scroller.scrollLeft, true);\n        signal(cm, \"scroll\", cm);\n      }\n    });\n\n    // Listen to wheel events in order to try and update the viewport on time.\n    on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n    on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n    // Prevent wrapper from ever scrolling\n    on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n    d.dragFunctions = {\n      enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n      over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n      start: function (e) { return onDragStart(cm, e); },\n      drop: operation(cm, onDrop),\n      leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n    };\n\n    var inp = d.input.getField();\n    on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n    on(inp, \"keydown\", operation(cm, onKeyDown));\n    on(inp, \"keypress\", operation(cm, onKeyPress));\n    on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n    on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n  }\n\n  var initHooks = [];\n  CodeMirror.defineInitHook = function (f) { return initHooks.push(f); };\n\n  // Indent the given line. The how parameter can be \"smart\",\n  // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n  // (typically set to true for forced single-line indents), empty\n  // lines are not indented, and places where the mode returns Pass\n  // are left alone.\n  function indentLine(cm, n, how, aggressive) {\n    var doc = cm.doc, state;\n    if (how == null) { how = \"add\"; }\n    if (how == \"smart\") {\n      // Fall back to \"prev\" when the mode doesn't have an indentation\n      // method.\n      if (!doc.mode.indent) { how = \"prev\"; }\n      else { state = getContextBefore(cm, n).state; }\n    }\n\n    var tabSize = cm.options.tabSize;\n    var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n    if (line.stateAfter) { line.stateAfter = null; }\n    var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n    if (!aggressive && !/\\S/.test(line.text)) {\n      indentation = 0;\n      how = \"not\";\n    } else if (how == \"smart\") {\n      indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n      if (indentation == Pass || indentation > 150) {\n        if (!aggressive) { return }\n        how = \"prev\";\n      }\n    }\n    if (how == \"prev\") {\n      if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n      else { indentation = 0; }\n    } else if (how == \"add\") {\n      indentation = curSpace + cm.options.indentUnit;\n    } else if (how == \"subtract\") {\n      indentation = curSpace - cm.options.indentUnit;\n    } else if (typeof how == \"number\") {\n      indentation = curSpace + how;\n    }\n    indentation = Math.max(0, indentation);\n\n    var indentString = \"\", pos = 0;\n    if (cm.options.indentWithTabs)\n      { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n    if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n    if (indentString != curSpaceString) {\n      replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n      line.stateAfter = null;\n      return true\n    } else {\n      // Ensure that, if the cursor was in the whitespace at the start\n      // of the line, it is moved to the end of that space.\n      for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n        var range = doc.sel.ranges[i$1];\n        if (range.head.line == n && range.head.ch < curSpaceString.length) {\n          var pos$1 = Pos(n, curSpaceString.length);\n          replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n          break\n        }\n      }\n    }\n  }\n\n  // This will be set to a {lineWise: bool, text: [string]} object, so\n  // that, when pasting, we know what kind of selections the copied\n  // text was made out of.\n  var lastCopied = null;\n\n  function setLastCopied(newLastCopied) {\n    lastCopied = newLastCopied;\n  }\n\n  function applyTextInput(cm, inserted, deleted, sel, origin) {\n    var doc = cm.doc;\n    cm.display.shift = false;\n    if (!sel) { sel = doc.sel; }\n\n    var recent = +new Date - 200;\n    var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n    var textLines = splitLinesAuto(inserted), multiPaste = null;\n    // When pasting N lines into N selections, insert one line per selection\n    if (paste && sel.ranges.length > 1) {\n      if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n        if (sel.ranges.length % lastCopied.text.length == 0) {\n          multiPaste = [];\n          for (var i = 0; i < lastCopied.text.length; i++)\n            { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n        }\n      } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n        multiPaste = map(textLines, function (l) { return [l]; });\n      }\n    }\n\n    var updateInput = cm.curOp.updateInput;\n    // Normal behavior is to insert the new text into every selection\n    for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n      var range = sel.ranges[i$1];\n      var from = range.from(), to = range.to();\n      if (range.empty()) {\n        if (deleted && deleted > 0) // Handle deletion\n          { from = Pos(from.line, from.ch - deleted); }\n        else if (cm.state.overwrite && !paste) // Handle overwrite\n          { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\n        else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\"))\n          { from = to = Pos(from.line, 0); }\n      }\n      var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n                         origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")};\n      makeChange(cm.doc, changeEvent);\n      signalLater(cm, \"inputRead\", cm, changeEvent);\n    }\n    if (inserted && !paste)\n      { triggerElectric(cm, inserted); }\n\n    ensureCursorVisible(cm);\n    if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput; }\n    cm.curOp.typing = true;\n    cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n  }\n\n  function handlePaste(e, cm) {\n    var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n    if (pasted) {\n      e.preventDefault();\n      if (!cm.isReadOnly() && !cm.options.disableInput)\n        { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\n      return true\n    }\n  }\n\n  function triggerElectric(cm, inserted) {\n    // When an 'electric' character is inserted, immediately trigger a reindent\n    if (!cm.options.electricChars || !cm.options.smartIndent) { return }\n    var sel = cm.doc.sel;\n\n    for (var i = sel.ranges.length - 1; i >= 0; i--) {\n      var range = sel.ranges[i];\n      if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) { continue }\n      var mode = cm.getModeAt(range.head);\n      var indented = false;\n      if (mode.electricChars) {\n        for (var j = 0; j < mode.electricChars.length; j++)\n          { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n            indented = indentLine(cm, range.head.line, \"smart\");\n            break\n          } }\n      } else if (mode.electricInput) {\n        if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch)))\n          { indented = indentLine(cm, range.head.line, \"smart\"); }\n      }\n      if (indented) { signalLater(cm, \"electricInput\", cm, range.head.line); }\n    }\n  }\n\n  function copyableRanges(cm) {\n    var text = [], ranges = [];\n    for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n      var line = cm.doc.sel.ranges[i].head.line;\n      var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n      ranges.push(lineRange);\n      text.push(cm.getRange(lineRange.anchor, lineRange.head));\n    }\n    return {text: text, ranges: ranges}\n  }\n\n  function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n    field.setAttribute(\"autocorrect\", autocorrect ? \"\" : \"off\");\n    field.setAttribute(\"autocapitalize\", autocapitalize ? \"\" : \"off\");\n    field.setAttribute(\"spellcheck\", !!spellcheck);\n  }\n\n  function hiddenTextarea() {\n    var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none\");\n    var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n    // The textarea is kept positioned near the cursor to prevent the\n    // fact that it'll be scrolled into view on input from scrolling\n    // our fake cursor out of view. On webkit, when wrap=off, paste is\n    // very slow. So make the area wide instead.\n    if (webkit) { te.style.width = \"1000px\"; }\n    else { te.setAttribute(\"wrap\", \"off\"); }\n    // If border: 0; -- iOS fails to open keyboard (issue #1287)\n    if (ios) { te.style.border = \"1px solid black\"; }\n    disableBrowserMagic(te);\n    return div\n  }\n\n  // The publicly visible API. Note that methodOp(f) means\n  // 'wrap f in an operation, performed on its `this` parameter'.\n\n  // This is not the complete set of editor methods. Most of the\n  // methods defined on the Doc type are also injected into\n  // CodeMirror.prototype, for backwards compatibility and\n  // convenience.\n\n  function addEditorMethods(CodeMirror) {\n    var optionHandlers = CodeMirror.optionHandlers;\n\n    var helpers = CodeMirror.helpers = {};\n\n    CodeMirror.prototype = {\n      constructor: CodeMirror,\n      focus: function(){window.focus(); this.display.input.focus();},\n\n      setOption: function(option, value) {\n        var options = this.options, old = options[option];\n        if (options[option] == value && option != \"mode\") { return }\n        options[option] = value;\n        if (optionHandlers.hasOwnProperty(option))\n          { operation(this, optionHandlers[option])(this, value, old); }\n        signal(this, \"optionChange\", this, option);\n      },\n\n      getOption: function(option) {return this.options[option]},\n      getDoc: function() {return this.doc},\n\n      addKeyMap: function(map, bottom) {\n        this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map));\n      },\n      removeKeyMap: function(map) {\n        var maps = this.state.keyMaps;\n        for (var i = 0; i < maps.length; ++i)\n          { if (maps[i] == map || maps[i].name == map) {\n            maps.splice(i, 1);\n            return true\n          } }\n      },\n\n      addOverlay: methodOp(function(spec, options) {\n        var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n        if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n        insertSorted(this.state.overlays,\n                     {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n                      priority: (options && options.priority) || 0},\n                     function (overlay) { return overlay.priority; });\n        this.state.modeGen++;\n        regChange(this);\n      }),\n      removeOverlay: methodOp(function(spec) {\n        var overlays = this.state.overlays;\n        for (var i = 0; i < overlays.length; ++i) {\n          var cur = overlays[i].modeSpec;\n          if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n            overlays.splice(i, 1);\n            this.state.modeGen++;\n            regChange(this);\n            return\n          }\n        }\n      }),\n\n      indentLine: methodOp(function(n, dir, aggressive) {\n        if (typeof dir != \"string\" && typeof dir != \"number\") {\n          if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n          else { dir = dir ? \"add\" : \"subtract\"; }\n        }\n        if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n      }),\n      indentSelection: methodOp(function(how) {\n        var ranges = this.doc.sel.ranges, end = -1;\n        for (var i = 0; i < ranges.length; i++) {\n          var range = ranges[i];\n          if (!range.empty()) {\n            var from = range.from(), to = range.to();\n            var start = Math.max(end, from.line);\n            end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n            for (var j = start; j < end; ++j)\n              { indentLine(this, j, how); }\n            var newRanges = this.doc.sel.ranges;\n            if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n              { replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n          } else if (range.head.line > end) {\n            indentLine(this, range.head.line, how, true);\n            end = range.head.line;\n            if (i == this.doc.sel.primIndex) { ensureCursorVisible(this); }\n          }\n        }\n      }),\n\n      // Fetch the parser token for a given character. Useful for hacks\n      // that want to inspect the mode state (say, for completion).\n      getTokenAt: function(pos, precise) {\n        return takeToken(this, pos, precise)\n      },\n\n      getLineTokens: function(line, precise) {\n        return takeToken(this, Pos(line), precise, true)\n      },\n\n      getTokenTypeAt: function(pos) {\n        pos = clipPos(this.doc, pos);\n        var styles = getLineStyles(this, getLine(this.doc, pos.line));\n        var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n        var type;\n        if (ch == 0) { type = styles[2]; }\n        else { for (;;) {\n          var mid = (before + after) >> 1;\n          if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n          else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n          else { type = styles[mid * 2 + 2]; break }\n        } }\n        var cut = type ? type.indexOf(\"overlay \") : -1;\n        return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n      },\n\n      getModeAt: function(pos) {\n        var mode = this.doc.mode;\n        if (!mode.innerMode) { return mode }\n        return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n      },\n\n      getHelper: function(pos, type) {\n        return this.getHelpers(pos, type)[0]\n      },\n\n      getHelpers: function(pos, type) {\n        var found = [];\n        if (!helpers.hasOwnProperty(type)) { return found }\n        var help = helpers[type], mode = this.getModeAt(pos);\n        if (typeof mode[type] == \"string\") {\n          if (help[mode[type]]) { found.push(help[mode[type]]); }\n        } else if (mode[type]) {\n          for (var i = 0; i < mode[type].length; i++) {\n            var val = help[mode[type][i]];\n            if (val) { found.push(val); }\n          }\n        } else if (mode.helperType && help[mode.helperType]) {\n          found.push(help[mode.helperType]);\n        } else if (help[mode.name]) {\n          found.push(help[mode.name]);\n        }\n        for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n          var cur = help._global[i$1];\n          if (cur.pred(mode, this) && indexOf(found, cur.val) == -1)\n            { found.push(cur.val); }\n        }\n        return found\n      },\n\n      getStateAfter: function(line, precise) {\n        var doc = this.doc;\n        line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n        return getContextBefore(this, line + 1, precise).state\n      },\n\n      cursorCoords: function(start, mode) {\n        var pos, range = this.doc.sel.primary();\n        if (start == null) { pos = range.head; }\n        else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n        else { pos = start ? range.from() : range.to(); }\n        return cursorCoords(this, pos, mode || \"page\")\n      },\n\n      charCoords: function(pos, mode) {\n        return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n      },\n\n      coordsChar: function(coords, mode) {\n        coords = fromCoordSystem(this, coords, mode || \"page\");\n        return coordsChar(this, coords.left, coords.top)\n      },\n\n      lineAtHeight: function(height, mode) {\n        height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n        return lineAtHeight(this.doc, height + this.display.viewOffset)\n      },\n      heightAtLine: function(line, mode, includeWidgets) {\n        var end = false, lineObj;\n        if (typeof line == \"number\") {\n          var last = this.doc.first + this.doc.size - 1;\n          if (line < this.doc.first) { line = this.doc.first; }\n          else if (line > last) { line = last; end = true; }\n          lineObj = getLine(this.doc, line);\n        } else {\n          lineObj = line;\n        }\n        return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n          (end ? this.doc.height - heightAtLine(lineObj) : 0)\n      },\n\n      defaultTextHeight: function() { return textHeight(this.display) },\n      defaultCharWidth: function() { return charWidth(this.display) },\n\n      getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n      addWidget: function(pos, node, scroll, vert, horiz) {\n        var display = this.display;\n        pos = cursorCoords(this, clipPos(this.doc, pos));\n        var top = pos.bottom, left = pos.left;\n        node.style.position = \"absolute\";\n        node.setAttribute(\"cm-ignore-events\", \"true\");\n        this.display.input.setUneditable(node);\n        display.sizer.appendChild(node);\n        if (vert == \"over\") {\n          top = pos.top;\n        } else if (vert == \"above\" || vert == \"near\") {\n          var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n          hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n          // Default to positioning above (if specified and possible); otherwise default to positioning below\n          if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n            { top = pos.top - node.offsetHeight; }\n          else if (pos.bottom + node.offsetHeight <= vspace)\n            { top = pos.bottom; }\n          if (left + node.offsetWidth > hspace)\n            { left = hspace - node.offsetWidth; }\n        }\n        node.style.top = top + \"px\";\n        node.style.left = node.style.right = \"\";\n        if (horiz == \"right\") {\n          left = display.sizer.clientWidth - node.offsetWidth;\n          node.style.right = \"0px\";\n        } else {\n          if (horiz == \"left\") { left = 0; }\n          else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n          node.style.left = left + \"px\";\n        }\n        if (scroll)\n          { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n      },\n\n      triggerOnKeyDown: methodOp(onKeyDown),\n      triggerOnKeyPress: methodOp(onKeyPress),\n      triggerOnKeyUp: onKeyUp,\n      triggerOnMouseDown: methodOp(onMouseDown),\n\n      execCommand: function(cmd) {\n        if (commands.hasOwnProperty(cmd))\n          { return commands[cmd].call(null, this) }\n      },\n\n      triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n      findPosH: function(from, amount, unit, visually) {\n        var dir = 1;\n        if (amount < 0) { dir = -1; amount = -amount; }\n        var cur = clipPos(this.doc, from);\n        for (var i = 0; i < amount; ++i) {\n          cur = findPosH(this.doc, cur, dir, unit, visually);\n          if (cur.hitSide) { break }\n        }\n        return cur\n      },\n\n      moveH: methodOp(function(dir, unit) {\n        var this$1 = this;\n\n        this.extendSelectionsBy(function (range) {\n          if (this$1.display.shift || this$1.doc.extend || range.empty())\n            { return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually) }\n          else\n            { return dir < 0 ? range.from() : range.to() }\n        }, sel_move);\n      }),\n\n      deleteH: methodOp(function(dir, unit) {\n        var sel = this.doc.sel, doc = this.doc;\n        if (sel.somethingSelected())\n          { doc.replaceSelection(\"\", null, \"+delete\"); }\n        else\n          { deleteNearSelection(this, function (range) {\n            var other = findPosH(doc, range.head, dir, unit, false);\n            return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}\n          }); }\n      }),\n\n      findPosV: function(from, amount, unit, goalColumn) {\n        var dir = 1, x = goalColumn;\n        if (amount < 0) { dir = -1; amount = -amount; }\n        var cur = clipPos(this.doc, from);\n        for (var i = 0; i < amount; ++i) {\n          var coords = cursorCoords(this, cur, \"div\");\n          if (x == null) { x = coords.left; }\n          else { coords.left = x; }\n          cur = findPosV(this, coords, dir, unit);\n          if (cur.hitSide) { break }\n        }\n        return cur\n      },\n\n      moveV: methodOp(function(dir, unit) {\n        var this$1 = this;\n\n        var doc = this.doc, goals = [];\n        var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n        doc.extendSelectionsBy(function (range) {\n          if (collapse)\n            { return dir < 0 ? range.from() : range.to() }\n          var headPos = cursorCoords(this$1, range.head, \"div\");\n          if (range.goalColumn != null) { headPos.left = range.goalColumn; }\n          goals.push(headPos.left);\n          var pos = findPosV(this$1, headPos, dir, unit);\n          if (unit == \"page\" && range == doc.sel.primary())\n            { addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top); }\n          return pos\n        }, sel_move);\n        if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n          { doc.sel.ranges[i].goalColumn = goals[i]; } }\n      }),\n\n      // Find the word at the given position (as returned by coordsChar).\n      findWordAt: function(pos) {\n        var doc = this.doc, line = getLine(doc, pos.line).text;\n        var start = pos.ch, end = pos.ch;\n        if (line) {\n          var helper = this.getHelper(pos, \"wordChars\");\n          if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n          var startChar = line.charAt(start);\n          var check = isWordChar(startChar, helper)\n            ? function (ch) { return isWordChar(ch, helper); }\n            : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n            : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n          while (start > 0 && check(line.charAt(start - 1))) { --start; }\n          while (end < line.length && check(line.charAt(end))) { ++end; }\n        }\n        return new Range(Pos(pos.line, start), Pos(pos.line, end))\n      },\n\n      toggleOverwrite: function(value) {\n        if (value != null && value == this.state.overwrite) { return }\n        if (this.state.overwrite = !this.state.overwrite)\n          { addClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n        else\n          { rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n\n        signal(this, \"overwriteToggle\", this, this.state.overwrite);\n      },\n      hasFocus: function() { return this.display.input.getField() == activeElt() },\n      isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n      scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),\n      getScrollInfo: function() {\n        var scroller = this.display.scroller;\n        return {left: scroller.scrollLeft, top: scroller.scrollTop,\n                height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n                width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n                clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\n      },\n\n      scrollIntoView: methodOp(function(range, margin) {\n        if (range == null) {\n          range = {from: this.doc.sel.primary().head, to: null};\n          if (margin == null) { margin = this.options.cursorScrollMargin; }\n        } else if (typeof range == \"number\") {\n          range = {from: Pos(range, 0), to: null};\n        } else if (range.from == null) {\n          range = {from: range, to: null};\n        }\n        if (!range.to) { range.to = range.from; }\n        range.margin = margin || 0;\n\n        if (range.from.line != null) {\n          scrollToRange(this, range);\n        } else {\n          scrollToCoordsRange(this, range.from, range.to, range.margin);\n        }\n      }),\n\n      setSize: methodOp(function(width, height) {\n        var this$1 = this;\n\n        var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n        if (width != null) { this.display.wrapper.style.width = interpret(width); }\n        if (height != null) { this.display.wrapper.style.height = interpret(height); }\n        if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n        var lineNo = this.display.viewFrom;\n        this.doc.iter(lineNo, this.display.viewTo, function (line) {\n          if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n            { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo, \"widget\"); break } } }\n          ++lineNo;\n        });\n        this.curOp.forceUpdate = true;\n        signal(this, \"refresh\", this);\n      }),\n\n      operation: function(f){return runInOp(this, f)},\n      startOperation: function(){return startOperation(this)},\n      endOperation: function(){return endOperation(this)},\n\n      refresh: methodOp(function() {\n        var oldHeight = this.display.cachedTextHeight;\n        regChange(this);\n        this.curOp.forceUpdate = true;\n        clearCaches(this);\n        scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n        updateGutterSpace(this.display);\n        if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping)\n          { estimateLineHeights(this); }\n        signal(this, \"refresh\", this);\n      }),\n\n      swapDoc: methodOp(function(doc) {\n        var old = this.doc;\n        old.cm = null;\n        // Cancel the current text selection if any (#5821)\n        if (this.state.selectingText) { this.state.selectingText(); }\n        attachDoc(this, doc);\n        clearCaches(this);\n        this.display.input.reset();\n        scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n        this.curOp.forceScroll = true;\n        signalLater(this, \"swapDoc\", this, old);\n        return old\n      }),\n\n      phrase: function(phraseText) {\n        var phrases = this.options.phrases;\n        return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText\n      },\n\n      getInputField: function(){return this.display.input.getField()},\n      getWrapperElement: function(){return this.display.wrapper},\n      getScrollerElement: function(){return this.display.scroller},\n      getGutterElement: function(){return this.display.gutters}\n    };\n    eventMixin(CodeMirror);\n\n    CodeMirror.registerHelper = function(type, name, value) {\n      if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n      helpers[type][name] = value;\n    };\n    CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n      CodeMirror.registerHelper(type, name, value);\n      helpers[type]._global.push({pred: predicate, val: value});\n    };\n  }\n\n  // Used for horizontal relative motion. Dir is -1 or 1 (left or\n  // right), unit can be \"codepoint\", \"char\", \"column\" (like char, but\n  // doesn't cross line boundaries), \"word\" (across next word), or\n  // \"group\" (to the start of next group of word or\n  // non-word-non-whitespace chars). The visually param controls\n  // whether, in right-to-left text, direction 1 means to move towards\n  // the next index in the string, or towards the character to the right\n  // of the current position. The resulting position will have a\n  // hitSide=true property if it reached the end of the document.\n  function findPosH(doc, pos, dir, unit, visually) {\n    var oldPos = pos;\n    var origDir = dir;\n    var lineObj = getLine(doc, pos.line);\n    var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n    function findNextLine() {\n      var l = pos.line + lineDir;\n      if (l < doc.first || l >= doc.first + doc.size) { return false }\n      pos = new Pos(l, pos.ch, pos.sticky);\n      return lineObj = getLine(doc, l)\n    }\n    function moveOnce(boundToLine) {\n      var next;\n      if (unit == \"codepoint\") {\n        var ch = lineObj.text.charCodeAt(pos.ch + (unit > 0 ? 0 : -1));\n        if (isNaN(ch)) { next = null; }\n        else { next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (ch >= 0xD800 && ch < 0xDC00 ? 2 : 1))),\n                            -dir); }\n      } else if (visually) {\n        next = moveVisually(doc.cm, lineObj, pos, dir);\n      } else {\n        next = moveLogically(lineObj, pos, dir);\n      }\n      if (next == null) {\n        if (!boundToLine && findNextLine())\n          { pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir); }\n        else\n          { return false }\n      } else {\n        pos = next;\n      }\n      return true\n    }\n\n    if (unit == \"char\" || unit == \"codepoint\") {\n      moveOnce();\n    } else if (unit == \"column\") {\n      moveOnce(true);\n    } else if (unit == \"word\" || unit == \"group\") {\n      var sawType = null, group = unit == \"group\";\n      var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n      for (var first = true;; first = false) {\n        if (dir < 0 && !moveOnce(!first)) { break }\n        var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n        var type = isWordChar(cur, helper) ? \"w\"\n          : group && cur == \"\\n\" ? \"n\"\n          : !group || /\\s/.test(cur) ? null\n          : \"p\";\n        if (group && !first && !type) { type = \"s\"; }\n        if (sawType && sawType != type) {\n          if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n          break\n        }\n\n        if (type) { sawType = type; }\n        if (dir > 0 && !moveOnce(!first)) { break }\n      }\n    }\n    var result = skipAtomic(doc, pos, oldPos, origDir, true);\n    if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n    return result\n  }\n\n  // For relative vertical movement. Dir may be -1 or 1. Unit can be\n  // \"page\" or \"line\". The resulting position will have a hitSide=true\n  // property if it reached the end of the document.\n  function findPosV(cm, pos, dir, unit) {\n    var doc = cm.doc, x = pos.left, y;\n    if (unit == \"page\") {\n      var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n      var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n      y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n\n    } else if (unit == \"line\") {\n      y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n    }\n    var target;\n    for (;;) {\n      target = coordsChar(cm, x, y);\n      if (!target.outside) { break }\n      if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n      y += dir * 5;\n    }\n    return target\n  }\n\n  // CONTENTEDITABLE INPUT STYLE\n\n  var ContentEditableInput = function(cm) {\n    this.cm = cm;\n    this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n    this.polling = new Delayed();\n    this.composing = null;\n    this.gracePeriod = false;\n    this.readDOMTimeout = null;\n  };\n\n  ContentEditableInput.prototype.init = function (display) {\n      var this$1 = this;\n\n    var input = this, cm = input.cm;\n    var div = input.div = display.lineDiv;\n    disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n    function belongsToInput(e) {\n      for (var t = e.target; t; t = t.parentNode) {\n        if (t == div) { return true }\n        if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) { break }\n      }\n      return false\n    }\n\n    on(div, \"paste\", function (e) {\n      if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n      // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n      if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n    });\n\n    on(div, \"compositionstart\", function (e) {\n      this$1.composing = {data: e.data, done: false};\n    });\n    on(div, \"compositionupdate\", function (e) {\n      if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n    });\n    on(div, \"compositionend\", function (e) {\n      if (this$1.composing) {\n        if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n        this$1.composing.done = true;\n      }\n    });\n\n    on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n    on(div, \"input\", function () {\n      if (!this$1.composing) { this$1.readFromDOMSoon(); }\n    });\n\n    function onCopyCut(e) {\n      if (!belongsToInput(e) || signalDOMEvent(cm, e)) { return }\n      if (cm.somethingSelected()) {\n        setLastCopied({lineWise: false, text: cm.getSelections()});\n        if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n      } else if (!cm.options.lineWiseCopyCut) {\n        return\n      } else {\n        var ranges = copyableRanges(cm);\n        setLastCopied({lineWise: true, text: ranges.text});\n        if (e.type == \"cut\") {\n          cm.operation(function () {\n            cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n            cm.replaceSelection(\"\", null, \"cut\");\n          });\n        }\n      }\n      if (e.clipboardData) {\n        e.clipboardData.clearData();\n        var content = lastCopied.text.join(\"\\n\");\n        // iOS exposes the clipboard API, but seems to discard content inserted into it\n        e.clipboardData.setData(\"Text\", content);\n        if (e.clipboardData.getData(\"Text\") == content) {\n          e.preventDefault();\n          return\n        }\n      }\n      // Old-fashioned briefly-focus-a-textarea hack\n      var kludge = hiddenTextarea(), te = kludge.firstChild;\n      cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n      te.value = lastCopied.text.join(\"\\n\");\n      var hadFocus = document.activeElement;\n      selectInput(te);\n      setTimeout(function () {\n        cm.display.lineSpace.removeChild(kludge);\n        hadFocus.focus();\n        if (hadFocus == div) { input.showPrimarySelection(); }\n      }, 50);\n    }\n    on(div, \"copy\", onCopyCut);\n    on(div, \"cut\", onCopyCut);\n  };\n\n  ContentEditableInput.prototype.screenReaderLabelChanged = function (label) {\n    // Label for screenreaders, accessibility\n    if(label) {\n      this.div.setAttribute('aria-label', label);\n    } else {\n      this.div.removeAttribute('aria-label');\n    }\n  };\n\n  ContentEditableInput.prototype.prepareSelection = function () {\n    var result = prepareSelection(this.cm, false);\n    result.focus = document.activeElement == this.div;\n    return result\n  };\n\n  ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n    if (!info || !this.cm.display.view.length) { return }\n    if (info.focus || takeFocus) { this.showPrimarySelection(); }\n    this.showMultipleSelections(info);\n  };\n\n  ContentEditableInput.prototype.getSelection = function () {\n    return this.cm.display.wrapper.ownerDocument.getSelection()\n  };\n\n  ContentEditableInput.prototype.showPrimarySelection = function () {\n    var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n    var from = prim.from(), to = prim.to();\n\n    if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n      sel.removeAllRanges();\n      return\n    }\n\n    var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n    var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n    if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n        cmp(minPos(curAnchor, curFocus), from) == 0 &&\n        cmp(maxPos(curAnchor, curFocus), to) == 0)\n      { return }\n\n    var view = cm.display.view;\n    var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\n        {node: view[0].measure.map[2], offset: 0};\n    var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n    if (!end) {\n      var measure = view[view.length - 1].measure;\n      var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n      end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]};\n    }\n\n    if (!start || !end) {\n      sel.removeAllRanges();\n      return\n    }\n\n    var old = sel.rangeCount && sel.getRangeAt(0), rng;\n    try { rng = range(start.node, start.offset, end.offset, end.node); }\n    catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n    if (rng) {\n      if (!gecko && cm.state.focused) {\n        sel.collapse(start.node, start.offset);\n        if (!rng.collapsed) {\n          sel.removeAllRanges();\n          sel.addRange(rng);\n        }\n      } else {\n        sel.removeAllRanges();\n        sel.addRange(rng);\n      }\n      if (old && sel.anchorNode == null) { sel.addRange(old); }\n      else if (gecko) { this.startGracePeriod(); }\n    }\n    this.rememberSelection();\n  };\n\n  ContentEditableInput.prototype.startGracePeriod = function () {\n      var this$1 = this;\n\n    clearTimeout(this.gracePeriod);\n    this.gracePeriod = setTimeout(function () {\n      this$1.gracePeriod = false;\n      if (this$1.selectionChanged())\n        { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\n    }, 20);\n  };\n\n  ContentEditableInput.prototype.showMultipleSelections = function (info) {\n    removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n    removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n  };\n\n  ContentEditableInput.prototype.rememberSelection = function () {\n    var sel = this.getSelection();\n    this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n    this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n  };\n\n  ContentEditableInput.prototype.selectionInEditor = function () {\n    var sel = this.getSelection();\n    if (!sel.rangeCount) { return false }\n    var node = sel.getRangeAt(0).commonAncestorContainer;\n    return contains(this.div, node)\n  };\n\n  ContentEditableInput.prototype.focus = function () {\n    if (this.cm.options.readOnly != \"nocursor\") {\n      if (!this.selectionInEditor() || document.activeElement != this.div)\n        { this.showSelection(this.prepareSelection(), true); }\n      this.div.focus();\n    }\n  };\n  ContentEditableInput.prototype.blur = function () { this.div.blur(); };\n  ContentEditableInput.prototype.getField = function () { return this.div };\n\n  ContentEditableInput.prototype.supportsTouch = function () { return true };\n\n  ContentEditableInput.prototype.receivedFocus = function () {\n    var input = this;\n    if (this.selectionInEditor())\n      { this.pollSelection(); }\n    else\n      { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\n\n    function poll() {\n      if (input.cm.state.focused) {\n        input.pollSelection();\n        input.polling.set(input.cm.options.pollInterval, poll);\n      }\n    }\n    this.polling.set(this.cm.options.pollInterval, poll);\n  };\n\n  ContentEditableInput.prototype.selectionChanged = function () {\n    var sel = this.getSelection();\n    return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n      sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n  };\n\n  ContentEditableInput.prototype.pollSelection = function () {\n    if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n    var sel = this.getSelection(), cm = this.cm;\n    // On Android Chrome (version 56, at least), backspacing into an\n    // uneditable block element will put the cursor in that element,\n    // and then, because it's not editable, hide the virtual keyboard.\n    // Because Android doesn't allow us to actually detect backspace\n    // presses in a sane way, this code checks for when that happens\n    // and simulates a backspace press in this case.\n    if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n      this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n      this.blur();\n      this.focus();\n      return\n    }\n    if (this.composing) { return }\n    this.rememberSelection();\n    var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n    var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n    if (anchor && head) { runInOp(cm, function () {\n      setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n      if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\n    }); }\n  };\n\n  ContentEditableInput.prototype.pollContent = function () {\n    if (this.readDOMTimeout != null) {\n      clearTimeout(this.readDOMTimeout);\n      this.readDOMTimeout = null;\n    }\n\n    var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n    var from = sel.from(), to = sel.to();\n    if (from.ch == 0 && from.line > cm.firstLine())\n      { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n    if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n      { to = Pos(to.line + 1, 0); }\n    if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n    var fromIndex, fromLine, fromNode;\n    if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n      fromLine = lineNo(display.view[0].line);\n      fromNode = display.view[0].node;\n    } else {\n      fromLine = lineNo(display.view[fromIndex].line);\n      fromNode = display.view[fromIndex - 1].node.nextSibling;\n    }\n    var toIndex = findViewIndex(cm, to.line);\n    var toLine, toNode;\n    if (toIndex == display.view.length - 1) {\n      toLine = display.viewTo - 1;\n      toNode = display.lineDiv.lastChild;\n    } else {\n      toLine = lineNo(display.view[toIndex + 1].line) - 1;\n      toNode = display.view[toIndex + 1].node.previousSibling;\n    }\n\n    if (!fromNode) { return false }\n    var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n    var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n    while (newText.length > 1 && oldText.length > 1) {\n      if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n      else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n      else { break }\n    }\n\n    var cutFront = 0, cutEnd = 0;\n    var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n    while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n      { ++cutFront; }\n    var newBot = lst(newText), oldBot = lst(oldText);\n    var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n                             oldBot.length - (oldText.length == 1 ? cutFront : 0));\n    while (cutEnd < maxCutEnd &&\n           newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n      { ++cutEnd; }\n    // Try to move start of change to start of selection if ambiguous\n    if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n      while (cutFront && cutFront > from.ch &&\n             newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n        cutFront--;\n        cutEnd++;\n      }\n    }\n\n    newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n    newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n\n    var chFrom = Pos(fromLine, cutFront);\n    var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n    if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n      replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n      return true\n    }\n  };\n\n  ContentEditableInput.prototype.ensurePolled = function () {\n    this.forceCompositionEnd();\n  };\n  ContentEditableInput.prototype.reset = function () {\n    this.forceCompositionEnd();\n  };\n  ContentEditableInput.prototype.forceCompositionEnd = function () {\n    if (!this.composing) { return }\n    clearTimeout(this.readDOMTimeout);\n    this.composing = null;\n    this.updateFromDOM();\n    this.div.blur();\n    this.div.focus();\n  };\n  ContentEditableInput.prototype.readFromDOMSoon = function () {\n      var this$1 = this;\n\n    if (this.readDOMTimeout != null) { return }\n    this.readDOMTimeout = setTimeout(function () {\n      this$1.readDOMTimeout = null;\n      if (this$1.composing) {\n        if (this$1.composing.done) { this$1.composing = null; }\n        else { return }\n      }\n      this$1.updateFromDOM();\n    }, 80);\n  };\n\n  ContentEditableInput.prototype.updateFromDOM = function () {\n      var this$1 = this;\n\n    if (this.cm.isReadOnly() || !this.pollContent())\n      { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\n  };\n\n  ContentEditableInput.prototype.setUneditable = function (node) {\n    node.contentEditable = \"false\";\n  };\n\n  ContentEditableInput.prototype.onKeyPress = function (e) {\n    if (e.charCode == 0 || this.composing) { return }\n    e.preventDefault();\n    if (!this.cm.isReadOnly())\n      { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\n  };\n\n  ContentEditableInput.prototype.readOnlyChanged = function (val) {\n    this.div.contentEditable = String(val != \"nocursor\");\n  };\n\n  ContentEditableInput.prototype.onContextMenu = function () {};\n  ContentEditableInput.prototype.resetPosition = function () {};\n\n  ContentEditableInput.prototype.needsContentAttribute = true;\n\n  function posToDOM(cm, pos) {\n    var view = findViewForLine(cm, pos.line);\n    if (!view || view.hidden) { return null }\n    var line = getLine(cm.doc, pos.line);\n    var info = mapFromLineView(view, line, pos.line);\n\n    var order = getOrder(line, cm.doc.direction), side = \"left\";\n    if (order) {\n      var partPos = getBidiPartAt(order, pos.ch);\n      side = partPos % 2 ? \"right\" : \"left\";\n    }\n    var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n    result.offset = result.collapse == \"right\" ? result.end : result.start;\n    return result\n  }\n\n  function isInGutter(node) {\n    for (var scan = node; scan; scan = scan.parentNode)\n      { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\n    return false\n  }\n\n  function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\n  function domTextBetween(cm, from, to, fromLine, toLine) {\n    var text = \"\", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false;\n    function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n    function close() {\n      if (closing) {\n        text += lineSep;\n        if (extraLinebreak) { text += lineSep; }\n        closing = extraLinebreak = false;\n      }\n    }\n    function addText(str) {\n      if (str) {\n        close();\n        text += str;\n      }\n    }\n    function walk(node) {\n      if (node.nodeType == 1) {\n        var cmText = node.getAttribute(\"cm-text\");\n        if (cmText) {\n          addText(cmText);\n          return\n        }\n        var markerID = node.getAttribute(\"cm-marker\"), range;\n        if (markerID) {\n          var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n          if (found.length && (range = found[0].find(0)))\n            { addText(getBetween(cm.doc, range.from, range.to).join(lineSep)); }\n          return\n        }\n        if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n        var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n        if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return }\n\n        if (isBlock) { close(); }\n        for (var i = 0; i < node.childNodes.length; i++)\n          { walk(node.childNodes[i]); }\n\n        if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; }\n        if (isBlock) { closing = true; }\n      } else if (node.nodeType == 3) {\n        addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n      }\n    }\n    for (;;) {\n      walk(from);\n      if (from == to) { break }\n      from = from.nextSibling;\n      extraLinebreak = false;\n    }\n    return text\n  }\n\n  function domToPos(cm, node, offset) {\n    var lineNode;\n    if (node == cm.display.lineDiv) {\n      lineNode = cm.display.lineDiv.childNodes[offset];\n      if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n      node = null; offset = 0;\n    } else {\n      for (lineNode = node;; lineNode = lineNode.parentNode) {\n        if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n        if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n      }\n    }\n    for (var i = 0; i < cm.display.view.length; i++) {\n      var lineView = cm.display.view[i];\n      if (lineView.node == lineNode)\n        { return locateNodeInLineView(lineView, node, offset) }\n    }\n  }\n\n  function locateNodeInLineView(lineView, node, offset) {\n    var wrapper = lineView.text.firstChild, bad = false;\n    if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n    if (node == wrapper) {\n      bad = true;\n      node = wrapper.childNodes[offset];\n      offset = 0;\n      if (!node) {\n        var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n        return badPos(Pos(lineNo(line), line.text.length), bad)\n      }\n    }\n\n    var textNode = node.nodeType == 3 ? node : null, topNode = node;\n    if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n      textNode = node.firstChild;\n      if (offset) { offset = textNode.nodeValue.length; }\n    }\n    while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n    var measure = lineView.measure, maps = measure.maps;\n\n    function find(textNode, topNode, offset) {\n      for (var i = -1; i < (maps ? maps.length : 0); i++) {\n        var map = i < 0 ? measure.map : maps[i];\n        for (var j = 0; j < map.length; j += 3) {\n          var curNode = map[j + 2];\n          if (curNode == textNode || curNode == topNode) {\n            var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n            var ch = map[j] + offset;\n            if (offset < 0 || curNode != textNode) { ch = map[j + (offset ? 1 : 0)]; }\n            return Pos(line, ch)\n          }\n        }\n      }\n    }\n    var found = find(textNode, topNode, offset);\n    if (found) { return badPos(found, bad) }\n\n    // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n    for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n      found = find(after, after.firstChild, 0);\n      if (found)\n        { return badPos(Pos(found.line, found.ch - dist), bad) }\n      else\n        { dist += after.textContent.length; }\n    }\n    for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n      found = find(before, before.firstChild, -1);\n      if (found)\n        { return badPos(Pos(found.line, found.ch + dist$1), bad) }\n      else\n        { dist$1 += before.textContent.length; }\n    }\n  }\n\n  // TEXTAREA INPUT STYLE\n\n  var TextareaInput = function(cm) {\n    this.cm = cm;\n    // See input.poll and input.reset\n    this.prevInput = \"\";\n\n    // Flag that indicates whether we expect input to appear real soon\n    // now (after some event like 'keypress' or 'input') and are\n    // polling intensively.\n    this.pollingFast = false;\n    // Self-resetting timeout for the poller\n    this.polling = new Delayed();\n    // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n    this.hasSelection = false;\n    this.composing = null;\n  };\n\n  TextareaInput.prototype.init = function (display) {\n      var this$1 = this;\n\n    var input = this, cm = this.cm;\n    this.createField(display);\n    var te = this.textarea;\n\n    display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n\n    // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n    if (ios) { te.style.width = \"0px\"; }\n\n    on(te, \"input\", function () {\n      if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n      input.poll();\n    });\n\n    on(te, \"paste\", function (e) {\n      if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n      cm.state.pasteIncoming = +new Date;\n      input.fastPoll();\n    });\n\n    function prepareCopyCut(e) {\n      if (signalDOMEvent(cm, e)) { return }\n      if (cm.somethingSelected()) {\n        setLastCopied({lineWise: false, text: cm.getSelections()});\n      } else if (!cm.options.lineWiseCopyCut) {\n        return\n      } else {\n        var ranges = copyableRanges(cm);\n        setLastCopied({lineWise: true, text: ranges.text});\n        if (e.type == \"cut\") {\n          cm.setSelections(ranges.ranges, null, sel_dontScroll);\n        } else {\n          input.prevInput = \"\";\n          te.value = ranges.text.join(\"\\n\");\n          selectInput(te);\n        }\n      }\n      if (e.type == \"cut\") { cm.state.cutIncoming = +new Date; }\n    }\n    on(te, \"cut\", prepareCopyCut);\n    on(te, \"copy\", prepareCopyCut);\n\n    on(display.scroller, \"paste\", function (e) {\n      if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n      if (!te.dispatchEvent) {\n        cm.state.pasteIncoming = +new Date;\n        input.focus();\n        return\n      }\n\n      // Pass the `paste` event to the textarea so it's handled by its event listener.\n      var event = new Event(\"paste\");\n      event.clipboardData = e.clipboardData;\n      te.dispatchEvent(event);\n    });\n\n    // Prevent normal selection in the editor (we handle our own)\n    on(display.lineSpace, \"selectstart\", function (e) {\n      if (!eventInWidget(display, e)) { e_preventDefault(e); }\n    });\n\n    on(te, \"compositionstart\", function () {\n      var start = cm.getCursor(\"from\");\n      if (input.composing) { input.composing.range.clear(); }\n      input.composing = {\n        start: start,\n        range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\n      };\n    });\n    on(te, \"compositionend\", function () {\n      if (input.composing) {\n        input.poll();\n        input.composing.range.clear();\n        input.composing = null;\n      }\n    });\n  };\n\n  TextareaInput.prototype.createField = function (_display) {\n    // Wraps and hides input textarea\n    this.wrapper = hiddenTextarea();\n    // The semihidden textarea that is focused when the editor is\n    // focused, and receives input.\n    this.textarea = this.wrapper.firstChild;\n  };\n\n  TextareaInput.prototype.screenReaderLabelChanged = function (label) {\n    // Label for screenreaders, accessibility\n    if(label) {\n      this.textarea.setAttribute('aria-label', label);\n    } else {\n      this.textarea.removeAttribute('aria-label');\n    }\n  };\n\n  TextareaInput.prototype.prepareSelection = function () {\n    // Redraw the selection and/or cursor\n    var cm = this.cm, display = cm.display, doc = cm.doc;\n    var result = prepareSelection(cm);\n\n    // Move the hidden textarea near the cursor to prevent scrolling artifacts\n    if (cm.options.moveInputWithCursor) {\n      var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n      var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n      result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n                                          headPos.top + lineOff.top - wrapOff.top));\n      result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n                                           headPos.left + lineOff.left - wrapOff.left));\n    }\n\n    return result\n  };\n\n  TextareaInput.prototype.showSelection = function (drawn) {\n    var cm = this.cm, display = cm.display;\n    removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n    removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n    if (drawn.teTop != null) {\n      this.wrapper.style.top = drawn.teTop + \"px\";\n      this.wrapper.style.left = drawn.teLeft + \"px\";\n    }\n  };\n\n  // Reset the input to correspond to the selection (or to be empty,\n  // when not typing and nothing is selected)\n  TextareaInput.prototype.reset = function (typing) {\n    if (this.contextMenuPending || this.composing) { return }\n    var cm = this.cm;\n    if (cm.somethingSelected()) {\n      this.prevInput = \"\";\n      var content = cm.getSelection();\n      this.textarea.value = content;\n      if (cm.state.focused) { selectInput(this.textarea); }\n      if (ie && ie_version >= 9) { this.hasSelection = content; }\n    } else if (!typing) {\n      this.prevInput = this.textarea.value = \"\";\n      if (ie && ie_version >= 9) { this.hasSelection = null; }\n    }\n  };\n\n  TextareaInput.prototype.getField = function () { return this.textarea };\n\n  TextareaInput.prototype.supportsTouch = function () { return false };\n\n  TextareaInput.prototype.focus = function () {\n    if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n      try { this.textarea.focus(); }\n      catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n    }\n  };\n\n  TextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\n  TextareaInput.prototype.resetPosition = function () {\n    this.wrapper.style.top = this.wrapper.style.left = 0;\n  };\n\n  TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n  // Poll for input changes, using the normal rate of polling. This\n  // runs as long as the editor is focused.\n  TextareaInput.prototype.slowPoll = function () {\n      var this$1 = this;\n\n    if (this.pollingFast) { return }\n    this.polling.set(this.cm.options.pollInterval, function () {\n      this$1.poll();\n      if (this$1.cm.state.focused) { this$1.slowPoll(); }\n    });\n  };\n\n  // When an event has just come in that is likely to add or change\n  // something in the input textarea, we poll faster, to ensure that\n  // the change appears on the screen quickly.\n  TextareaInput.prototype.fastPoll = function () {\n    var missed = false, input = this;\n    input.pollingFast = true;\n    function p() {\n      var changed = input.poll();\n      if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n      else {input.pollingFast = false; input.slowPoll();}\n    }\n    input.polling.set(20, p);\n  };\n\n  // Read input from the textarea, and update the document to match.\n  // When something is selected, it is present in the textarea, and\n  // selected (unless it is huge, in which case a placeholder is\n  // used). When nothing is selected, the cursor sits after previously\n  // seen text (can be empty), which is stored in prevInput (we must\n  // not reset the textarea when typing, because that breaks IME).\n  TextareaInput.prototype.poll = function () {\n      var this$1 = this;\n\n    var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n    // Since this is called a *lot*, try to bail out as cheaply as\n    // possible when it is clear that nothing happened. hasSelection\n    // will be the case when there is a lot of text in the textarea,\n    // in which case reading its value would be expensive.\n    if (this.contextMenuPending || !cm.state.focused ||\n        (hasSelection(input) && !prevInput && !this.composing) ||\n        cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n      { return false }\n\n    var text = input.value;\n    // If nothing changed, bail.\n    if (text == prevInput && !cm.somethingSelected()) { return false }\n    // Work around nonsensical selection resetting in IE9/10, and\n    // inexplicable appearance of private area unicode characters on\n    // some key combos in Mac (#2689).\n    if (ie && ie_version >= 9 && this.hasSelection === text ||\n        mac && /[\\uf700-\\uf7ff]/.test(text)) {\n      cm.display.input.reset();\n      return false\n    }\n\n    if (cm.doc.sel == cm.display.selForContextMenu) {\n      var first = text.charCodeAt(0);\n      if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n      if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n    }\n    // Find the part of the input that is actually new\n    var same = 0, l = Math.min(prevInput.length, text.length);\n    while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n    runInOp(cm, function () {\n      applyTextInput(cm, text.slice(same), prevInput.length - same,\n                     null, this$1.composing ? \"*compose\" : null);\n\n      // Don't leave long text in the textarea, since it makes further polling slow\n      if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n      else { this$1.prevInput = text; }\n\n      if (this$1.composing) {\n        this$1.composing.range.clear();\n        this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"),\n                                           {className: \"CodeMirror-composing\"});\n      }\n    });\n    return true\n  };\n\n  TextareaInput.prototype.ensurePolled = function () {\n    if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n  };\n\n  TextareaInput.prototype.onKeyPress = function () {\n    if (ie && ie_version >= 9) { this.hasSelection = null; }\n    this.fastPoll();\n  };\n\n  TextareaInput.prototype.onContextMenu = function (e) {\n    var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n    if (input.contextMenuPending) { input.contextMenuPending(); }\n    var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n    if (!pos || presto) { return } // Opera is difficult.\n\n    // Reset the current text selection only if the click is done outside of the selection\n    // and 'resetSelectionOnContextMenu' option is true.\n    var reset = cm.options.resetSelectionOnContextMenu;\n    if (reset && cm.doc.sel.contains(pos) == -1)\n      { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n    var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n    var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n    input.wrapper.style.cssText = \"position: static\";\n    te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n      top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n      z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n      outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n    var oldScrollY;\n    if (webkit) { oldScrollY = window.scrollY; } // Work around Chrome issue (#2712)\n    display.input.focus();\n    if (webkit) { window.scrollTo(null, oldScrollY); }\n    display.input.reset();\n    // Adds \"Select all\" to context menu in FF\n    if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n    input.contextMenuPending = rehide;\n    display.selForContextMenu = cm.doc.sel;\n    clearTimeout(display.detectingSelectAll);\n\n    // Select-all will be greyed out if there's nothing to select, so\n    // this adds a zero-width space so that we can later check whether\n    // it got selected.\n    function prepareSelectAllHack() {\n      if (te.selectionStart != null) {\n        var selected = cm.somethingSelected();\n        var extval = \"\\u200b\" + (selected ? te.value : \"\");\n        te.value = \"\\u21da\"; // Used to catch context-menu undo\n        te.value = extval;\n        input.prevInput = selected ? \"\" : \"\\u200b\";\n        te.selectionStart = 1; te.selectionEnd = extval.length;\n        // Re-set this, in case some other handler touched the\n        // selection in the meantime.\n        display.selForContextMenu = cm.doc.sel;\n      }\n    }\n    function rehide() {\n      if (input.contextMenuPending != rehide) { return }\n      input.contextMenuPending = false;\n      input.wrapper.style.cssText = oldWrapperCSS;\n      te.style.cssText = oldCSS;\n      if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n      // Try to detect the user choosing select-all\n      if (te.selectionStart != null) {\n        if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n        var i = 0, poll = function () {\n          if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n              te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n            operation(cm, selectAll)(cm);\n          } else if (i++ < 10) {\n            display.detectingSelectAll = setTimeout(poll, 500);\n          } else {\n            display.selForContextMenu = null;\n            display.input.reset();\n          }\n        };\n        display.detectingSelectAll = setTimeout(poll, 200);\n      }\n    }\n\n    if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n    if (captureRightClick) {\n      e_stop(e);\n      var mouseup = function () {\n        off(window, \"mouseup\", mouseup);\n        setTimeout(rehide, 20);\n      };\n      on(window, \"mouseup\", mouseup);\n    } else {\n      setTimeout(rehide, 50);\n    }\n  };\n\n  TextareaInput.prototype.readOnlyChanged = function (val) {\n    if (!val) { this.reset(); }\n    this.textarea.disabled = val == \"nocursor\";\n    this.textarea.readOnly = !!val;\n  };\n\n  TextareaInput.prototype.setUneditable = function () {};\n\n  TextareaInput.prototype.needsContentAttribute = false;\n\n  function fromTextArea(textarea, options) {\n    options = options ? copyObj(options) : {};\n    options.value = textarea.value;\n    if (!options.tabindex && textarea.tabIndex)\n      { options.tabindex = textarea.tabIndex; }\n    if (!options.placeholder && textarea.placeholder)\n      { options.placeholder = textarea.placeholder; }\n    // Set autofocus to true if this textarea is focused, or if it has\n    // autofocus and no other element is focused.\n    if (options.autofocus == null) {\n      var hasFocus = activeElt();\n      options.autofocus = hasFocus == textarea ||\n        textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n    }\n\n    function save() {textarea.value = cm.getValue();}\n\n    var realSubmit;\n    if (textarea.form) {\n      on(textarea.form, \"submit\", save);\n      // Deplorable hack to make the submit method do the right thing.\n      if (!options.leaveSubmitMethodAlone) {\n        var form = textarea.form;\n        realSubmit = form.submit;\n        try {\n          var wrappedSubmit = form.submit = function () {\n            save();\n            form.submit = realSubmit;\n            form.submit();\n            form.submit = wrappedSubmit;\n          };\n        } catch(e) {}\n      }\n    }\n\n    options.finishInit = function (cm) {\n      cm.save = save;\n      cm.getTextArea = function () { return textarea; };\n      cm.toTextArea = function () {\n        cm.toTextArea = isNaN; // Prevent this from being ran twice\n        save();\n        textarea.parentNode.removeChild(cm.getWrapperElement());\n        textarea.style.display = \"\";\n        if (textarea.form) {\n          off(textarea.form, \"submit\", save);\n          if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\")\n            { textarea.form.submit = realSubmit; }\n        }\n      };\n    };\n\n    textarea.style.display = \"none\";\n    var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\n      options);\n    return cm\n  }\n\n  function addLegacyProps(CodeMirror) {\n    CodeMirror.off = off;\n    CodeMirror.on = on;\n    CodeMirror.wheelEventPixels = wheelEventPixels;\n    CodeMirror.Doc = Doc;\n    CodeMirror.splitLines = splitLinesAuto;\n    CodeMirror.countColumn = countColumn;\n    CodeMirror.findColumn = findColumn;\n    CodeMirror.isWordChar = isWordCharBasic;\n    CodeMirror.Pass = Pass;\n    CodeMirror.signal = signal;\n    CodeMirror.Line = Line;\n    CodeMirror.changeEnd = changeEnd;\n    CodeMirror.scrollbarModel = scrollbarModel;\n    CodeMirror.Pos = Pos;\n    CodeMirror.cmpPos = cmp;\n    CodeMirror.modes = modes;\n    CodeMirror.mimeModes = mimeModes;\n    CodeMirror.resolveMode = resolveMode;\n    CodeMirror.getMode = getMode;\n    CodeMirror.modeExtensions = modeExtensions;\n    CodeMirror.extendMode = extendMode;\n    CodeMirror.copyState = copyState;\n    CodeMirror.startState = startState;\n    CodeMirror.innerMode = innerMode;\n    CodeMirror.commands = commands;\n    CodeMirror.keyMap = keyMap;\n    CodeMirror.keyName = keyName;\n    CodeMirror.isModifierKey = isModifierKey;\n    CodeMirror.lookupKey = lookupKey;\n    CodeMirror.normalizeKeyMap = normalizeKeyMap;\n    CodeMirror.StringStream = StringStream;\n    CodeMirror.SharedTextMarker = SharedTextMarker;\n    CodeMirror.TextMarker = TextMarker;\n    CodeMirror.LineWidget = LineWidget;\n    CodeMirror.e_preventDefault = e_preventDefault;\n    CodeMirror.e_stopPropagation = e_stopPropagation;\n    CodeMirror.e_stop = e_stop;\n    CodeMirror.addClass = addClass;\n    CodeMirror.contains = contains;\n    CodeMirror.rmClass = rmClass;\n    CodeMirror.keyNames = keyNames;\n  }\n\n  // EDITOR CONSTRUCTOR\n\n  defineOptions(CodeMirror);\n\n  addEditorMethods(CodeMirror);\n\n  // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n  var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n  for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n    { CodeMirror.prototype[prop] = (function(method) {\n      return function() {return method.apply(this.doc, arguments)}\n    })(Doc.prototype[prop]); } }\n\n  eventMixin(Doc);\n  CodeMirror.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n  // Extra arguments are stored as the mode's dependencies, which is\n  // used by (legacy) mechanisms like loadmode.js to automatically\n  // load a mode. (Preferred mechanism is the require/define calls.)\n  CodeMirror.defineMode = function(name/*, mode, \u2026*/) {\n    if (!CodeMirror.defaults.mode && name != \"null\") { CodeMirror.defaults.mode = name; }\n    defineMode.apply(this, arguments);\n  };\n\n  CodeMirror.defineMIME = defineMIME;\n\n  // Minimal default mode.\n  CodeMirror.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\n  CodeMirror.defineMIME(\"text/plain\", \"null\");\n\n  // EXTENSIONS\n\n  CodeMirror.defineExtension = function (name, func) {\n    CodeMirror.prototype[name] = func;\n  };\n  CodeMirror.defineDocExtension = function (name, func) {\n    Doc.prototype[name] = func;\n  };\n\n  CodeMirror.fromTextArea = fromTextArea;\n\n  addLegacyProps(CodeMirror);\n\n  CodeMirror.version = \"5.58.2\";\n\n  return CodeMirror;\n\n})));\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"sql\", function(config, parserConfig) {\n  var client         = parserConfig.client || {},\n      atoms          = parserConfig.atoms || {\"false\": true, \"true\": true, \"null\": true},\n      builtin        = parserConfig.builtin || set(defaultBuiltin),\n      keywords       = parserConfig.keywords || set(sqlKeywords),\n      operatorChars  = parserConfig.operatorChars || /^[*+\\-%<>!=&|~^\\/]/,\n      support        = parserConfig.support || {},\n      hooks          = parserConfig.hooks || {},\n      dateSQL        = parserConfig.dateSQL || {\"date\" : true, \"time\" : true, \"timestamp\" : true},\n      backslashStringEscapes = parserConfig.backslashStringEscapes !== false,\n      brackets       = parserConfig.brackets || /^[\\{}\\(\\)\\[\\]]/,\n      punctuation    = parserConfig.punctuation || /^[;.,:]/\n\n  function tokenBase(stream, state) {\n    var ch = stream.next();\n\n    // call hooks from the mime type\n    if (hooks[ch]) {\n      var result = hooks[ch](stream, state);\n      if (result !== false) return result;\n    }\n\n    if (support.hexNumber &&\n      ((ch == \"0\" && stream.match(/^[xX][0-9a-fA-F]+/))\n      || (ch == \"x\" || ch == \"X\") && stream.match(/^'[0-9a-fA-F]+'/))) {\n      // hex\n      // ref: http://dev.mysql.com/doc/refman/5.5/en/hexadecimal-literals.html\n      return \"number\";\n    } else if (support.binaryNumber &&\n      (((ch == \"b\" || ch == \"B\") && stream.match(/^'[01]+'/))\n      || (ch == \"0\" && stream.match(/^b[01]+/)))) {\n      // bitstring\n      // ref: http://dev.mysql.com/doc/refman/5.5/en/bit-field-literals.html\n      return \"number\";\n    } else if (ch.charCodeAt(0) > 47 && ch.charCodeAt(0) < 58) {\n      // numbers\n      // ref: http://dev.mysql.com/doc/refman/5.5/en/number-literals.html\n      stream.match(/^[0-9]*(\\.[0-9]+)?([eE][-+]?[0-9]+)?/);\n      support.decimallessFloat && stream.match(/^\\.(?!\\.)/);\n      return \"number\";\n    } else if (ch == \"?\" && (stream.eatSpace() || stream.eol() || stream.eat(\";\"))) {\n      // placeholders\n      return \"variable-3\";\n    } else if (ch == \"'\" || (ch == '\"' && support.doubleQuote)) {\n      // strings\n      // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html\n      state.tokenize = tokenLiteral(ch);\n      return state.tokenize(stream, state);\n    } else if ((((support.nCharCast && (ch == \"n\" || ch == \"N\"))\n        || (support.charsetCast && ch == \"_\" && stream.match(/[a-z][a-z0-9]*/i)))\n        && (stream.peek() == \"'\" || stream.peek() == '\"'))) {\n      // charset casting: _utf8'str', N'str', n'str'\n      // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html\n      return \"keyword\";\n    } else if (support.escapeConstant && (ch == \"e\" || ch == \"E\")\n        && (stream.peek() == \"'\" || (stream.peek() == '\"' && support.doubleQuote))) {\n      // escape constant: E'str', e'str'\n      // ref: https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-STRINGS-ESCAPE\n      state.tokenize = function(stream, state) {\n        return (state.tokenize = tokenLiteral(stream.next(), true))(stream, state);\n      }\n      return \"keyword\";\n    } else if (support.commentSlashSlash && ch == \"/\" && stream.eat(\"/\")) {\n      // 1-line comment\n      stream.skipToEnd();\n      return \"comment\";\n    } else if ((support.commentHash && ch == \"#\")\n        || (ch == \"-\" && stream.eat(\"-\") && (!support.commentSpaceRequired || stream.eat(\" \")))) {\n      // 1-line comments\n      // ref: https://kb.askmonty.org/en/comment-syntax/\n      stream.skipToEnd();\n      return \"comment\";\n    } else if (ch == \"/\" && stream.eat(\"*\")) {\n      // multi-line comments\n      // ref: https://kb.askmonty.org/en/comment-syntax/\n      state.tokenize = tokenComment(1);\n      return state.tokenize(stream, state);\n    } else if (ch == \".\") {\n      // .1 for 0.1\n      if (support.zerolessFloat && stream.match(/^(?:\\d+(?:e[+-]?\\d+)?)/i))\n        return \"number\";\n      if (stream.match(/^\\.+/))\n        return null\n      // .table_name (ODBC)\n      // // ref: http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html\n      if (support.ODBCdotTable && stream.match(/^[\\w\\d_$#]+/))\n        return \"variable-2\";\n    } else if (operatorChars.test(ch)) {\n      // operators\n      stream.eatWhile(operatorChars);\n      return \"operator\";\n    } else if (brackets.test(ch)) {\n      // brackets\n      return \"bracket\";\n    } else if (punctuation.test(ch)) {\n      // punctuation\n      stream.eatWhile(punctuation);\n      return \"punctuation\";\n    } else if (ch == '{' &&\n        (stream.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/) || stream.match(/^( )*(d|D|t|T|ts|TS)( )*\"[^\"]*\"( )*}/))) {\n      // dates (weird ODBC syntax)\n      // ref: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html\n      return \"number\";\n    } else {\n      stream.eatWhile(/^[_\\w\\d]/);\n      var word = stream.current().toLowerCase();\n      // dates (standard SQL syntax)\n      // ref: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html\n      if (dateSQL.hasOwnProperty(word) && (stream.match(/^( )+'[^']*'/) || stream.match(/^( )+\"[^\"]*\"/)))\n        return \"number\";\n      if (atoms.hasOwnProperty(word)) return \"atom\";\n      if (builtin.hasOwnProperty(word)) return \"builtin\";\n      if (keywords.hasOwnProperty(word)) return \"keyword\";\n      if (client.hasOwnProperty(word)) return \"string-2\";\n      return null;\n    }\n  }\n\n  // 'string', with char specified in quote escaped by '\\'\n  function tokenLiteral(quote, backslashEscapes) {\n    return function(stream, state) {\n      var escaped = false, ch;\n      while ((ch = stream.next()) != null) {\n        if (ch == quote && !escaped) {\n          state.tokenize = tokenBase;\n          break;\n        }\n        escaped = (backslashStringEscapes || backslashEscapes) && !escaped && ch == \"\\\\\";\n      }\n      return \"string\";\n    };\n  }\n  function tokenComment(depth) {\n    return function(stream, state) {\n      var m = stream.match(/^.*?(\\/\\*|\\*\\/)/)\n      if (!m) stream.skipToEnd()\n      else if (m[1] == \"/*\") state.tokenize = tokenComment(depth + 1)\n      else if (depth > 1) state.tokenize = tokenComment(depth - 1)\n      else state.tokenize = tokenBase\n      return \"comment\"\n    }\n  }\n\n  function pushContext(stream, state, type) {\n    state.context = {\n      prev: state.context,\n      indent: stream.indentation(),\n      col: stream.column(),\n      type: type\n    };\n  }\n\n  function popContext(state) {\n    state.indent = state.context.indent;\n    state.context = state.context.prev;\n  }\n\n  return {\n    startState: function() {\n      return {tokenize: tokenBase, context: null};\n    },\n\n    token: function(stream, state) {\n      if (stream.sol()) {\n        if (state.context && state.context.align == null)\n          state.context.align = false;\n      }\n      if (state.tokenize == tokenBase && stream.eatSpace()) return null;\n\n      var style = state.tokenize(stream, state);\n      if (style == \"comment\") return style;\n\n      if (state.context && state.context.align == null)\n        state.context.align = true;\n\n      var tok = stream.current();\n      if (tok == \"(\")\n        pushContext(stream, state, \")\");\n      else if (tok == \"[\")\n        pushContext(stream, state, \"]\");\n      else if (state.context && state.context.type == tok)\n        popContext(state);\n      return style;\n    },\n\n    indent: function(state, textAfter) {\n      var cx = state.context;\n      if (!cx) return CodeMirror.Pass;\n      var closing = textAfter.charAt(0) == cx.type;\n      if (cx.align) return cx.col + (closing ? 0 : 1);\n      else return cx.indent + (closing ? 0 : config.indentUnit);\n    },\n\n    blockCommentStart: \"/*\",\n    blockCommentEnd: \"*/\",\n    lineComment: support.commentSlashSlash ? \"//\" : support.commentHash ? \"#\" : \"--\",\n    closeBrackets: \"()[]{}''\\\"\\\"``\"\n  };\n});\n\n  // `identifier`\n  function hookIdentifier(stream) {\n    // MySQL/MariaDB identifiers\n    // ref: http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html\n    var ch;\n    while ((ch = stream.next()) != null) {\n      if (ch == \"`\" && !stream.eat(\"`\")) return \"variable-2\";\n    }\n    stream.backUp(stream.current().length - 1);\n    return stream.eatWhile(/\\w/) ? \"variable-2\" : null;\n  }\n\n  // \"identifier\"\n  function hookIdentifierDoublequote(stream) {\n    // Standard SQL /SQLite identifiers\n    // ref: http://web.archive.org/web/20160813185132/http://savage.net.au/SQL/sql-99.bnf.html#delimited%20identifier\n    // ref: http://sqlite.org/lang_keywords.html\n    var ch;\n    while ((ch = stream.next()) != null) {\n      if (ch == \"\\\"\" && !stream.eat(\"\\\"\")) return \"variable-2\";\n    }\n    stream.backUp(stream.current().length - 1);\n    return stream.eatWhile(/\\w/) ? \"variable-2\" : null;\n  }\n\n  // variable token\n  function hookVar(stream) {\n    // variables\n    // @@prefix.varName @varName\n    // varName can be quoted with ` or ' or \"\n    // ref: http://dev.mysql.com/doc/refman/5.5/en/user-variables.html\n    if (stream.eat(\"@\")) {\n      stream.match(/^session\\./);\n      stream.match(/^local\\./);\n      stream.match(/^global\\./);\n    }\n\n    if (stream.eat(\"'\")) {\n      stream.match(/^.*'/);\n      return \"variable-2\";\n    } else if (stream.eat('\"')) {\n      stream.match(/^.*\"/);\n      return \"variable-2\";\n    } else if (stream.eat(\"`\")) {\n      stream.match(/^.*`/);\n      return \"variable-2\";\n    } else if (stream.match(/^[0-9a-zA-Z$\\.\\_]+/)) {\n      return \"variable-2\";\n    }\n    return null;\n  };\n\n  // short client keyword token\n  function hookClient(stream) {\n    // \\N means NULL\n    // ref: http://dev.mysql.com/doc/refman/5.5/en/null-values.html\n    if (stream.eat(\"N\")) {\n        return \"atom\";\n    }\n    // \\g, etc\n    // ref: http://dev.mysql.com/doc/refman/5.5/en/mysql-commands.html\n    return stream.match(/^[a-zA-Z.#!?]/) ? \"variable-2\" : null;\n  }\n\n  // these keywords are used by all SQL dialects (however, a mode can still overwrite it)\n  var sqlKeywords = \"alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit \";\n\n  // turn a space-separated list into an array\n  function set(str) {\n    var obj = {}, words = str.split(\" \");\n    for (var i = 0; i < words.length; ++i) obj[words[i]] = true;\n    return obj;\n  }\n\n  var defaultBuiltin = \"bool boolean bit blob enum long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision real date datetime year unsigned signed decimal numeric\"\n\n  // A generic SQL Mode. It's not a standard, it just try to support what is generally supported\n  CodeMirror.defineMIME(\"text/x-sql\", {\n    name: \"sql\",\n    keywords: set(sqlKeywords + \"begin\"),\n    builtin: set(defaultBuiltin),\n    atoms: set(\"false true null unknown\"),\n    dateSQL: set(\"date time timestamp\"),\n    support: set(\"ODBCdotTable doubleQuote binaryNumber hexNumber\")\n  });\n\n  CodeMirror.defineMIME(\"text/x-mssql\", {\n    name: \"sql\",\n    client: set(\"$partition binary_checksum checksum connectionproperty context_info current_request_id error_line error_message error_number error_procedure error_severity error_state formatmessage get_filestream_transaction_context getansinull host_id host_name isnull isnumeric min_active_rowversion newid newsequentialid rowcount_big xact_state object_id\"),\n    keywords: set(sqlKeywords + \"begin trigger proc view index for add constraint key primary foreign collate clustered nonclustered declare exec go if use index holdlock nolock nowait paglock readcommitted readcommittedlock readpast readuncommitted repeatableread rowlock serializable snapshot tablock tablockx updlock with\"),\n    builtin: set(\"bigint numeric bit smallint decimal smallmoney int tinyint money float real char varchar text nchar nvarchar ntext binary varbinary image cursor timestamp hierarchyid uniqueidentifier sql_variant xml table \"),\n    atoms: set(\"is not null like and or in left right between inner outer join all any some cross unpivot pivot exists\"),\n    operatorChars: /^[*+\\-%<>!=^\\&|\\/]/,\n    brackets: /^[\\{}\\(\\)]/,\n    punctuation: /^[;.,:/]/,\n    backslashStringEscapes: false,\n    dateSQL: set(\"date datetimeoffset datetime2 smalldatetime datetime time\"),\n    hooks: {\n      \"@\":   hookVar\n    }\n  });\n\n  CodeMirror.defineMIME(\"text/x-mysql\", {\n    name: \"sql\",\n    client: set(\"charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee\"),\n    keywords: set(sqlKeywords + \"accessible action add after algorithm all analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general get global grant grants group group_concat handler hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views warnings when while with work write xa xor year_month zerofill begin do then else loop repeat\"),\n    builtin: set(\"bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric\"),\n    atoms: set(\"false true null unknown\"),\n    operatorChars: /^[*+\\-%<>!=&|^]/,\n    dateSQL: set(\"date time timestamp\"),\n    support: set(\"ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired\"),\n    hooks: {\n      \"@\":   hookVar,\n      \"`\":   hookIdentifier,\n      \"\\\\\":  hookClient\n    }\n  });\n\n  CodeMirror.defineMIME(\"text/x-mariadb\", {\n    name: \"sql\",\n    client: set(\"charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee\"),\n    keywords: set(sqlKeywords + \"accessible action add after algorithm all always analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general generated get global grant grants group groupby_concat handler hard hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password persistent phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show shutdown signal slave slow smallint snapshot soft soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views virtual warnings when while with work write xa xor year_month zerofill begin do then else loop repeat\"),\n    builtin: set(\"bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric\"),\n    atoms: set(\"false true null unknown\"),\n    operatorChars: /^[*+\\-%<>!=&|^]/,\n    dateSQL: set(\"date time timestamp\"),\n    support: set(\"ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired\"),\n    hooks: {\n      \"@\":   hookVar,\n      \"`\":   hookIdentifier,\n      \"\\\\\":  hookClient\n    }\n  });\n\n  // provided by the phpLiteAdmin project - phpliteadmin.org\n  CodeMirror.defineMIME(\"text/x-sqlite\", {\n    name: \"sql\",\n    // commands of the official SQLite client, ref: https://www.sqlite.org/cli.html#dotcmd\n    client: set(\"auth backup bail binary changes check clone databases dbinfo dump echo eqp exit explain fullschema headers help import imposter indexes iotrace limit lint load log mode nullvalue once open output print prompt quit read restore save scanstats schema separator session shell show stats system tables testcase timeout timer trace vfsinfo vfslist vfsname width\"),\n    // ref: http://sqlite.org/lang_keywords.html\n    keywords: set(sqlKeywords + \"abort action add after all analyze attach autoincrement before begin cascade case cast check collate column commit conflict constraint cross current_date current_time current_timestamp database default deferrable deferred detach each else end escape except exclusive exists explain fail for foreign full glob if ignore immediate index indexed initially inner instead intersect isnull key left limit match natural no notnull null of offset outer plan pragma primary query raise recursive references regexp reindex release rename replace restrict right rollback row savepoint temp temporary then to transaction trigger unique using vacuum view virtual when with without\"),\n    // SQLite is weakly typed, ref: http://sqlite.org/datatype3.html. This is just a list of some common types.\n    builtin: set(\"bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text clob bigint int int2 int8 integer float double char varchar date datetime year unsigned signed numeric real\"),\n    // ref: http://sqlite.org/syntax/literal-value.html\n    atoms: set(\"null current_date current_time current_timestamp\"),\n    // ref: http://sqlite.org/lang_expr.html#binaryops\n    operatorChars: /^[*+\\-%<>!=&|/~]/,\n    // SQLite is weakly typed, ref: http://sqlite.org/datatype3.html. This is just a list of some common types.\n    dateSQL: set(\"date time timestamp datetime\"),\n    support: set(\"decimallessFloat zerolessFloat\"),\n    identifierQuote: \"\\\"\",  //ref: http://sqlite.org/lang_keywords.html\n    hooks: {\n      // bind-parameters ref:http://sqlite.org/lang_expr.html#varparam\n      \"@\":   hookVar,\n      \":\":   hookVar,\n      \"?\":   hookVar,\n      \"$\":   hookVar,\n      // The preferred way to escape Identifiers is using double quotes, ref: http://sqlite.org/lang_keywords.html\n      \"\\\"\":   hookIdentifierDoublequote,\n      // there is also support for backtics, ref: http://sqlite.org/lang_keywords.html\n      \"`\":   hookIdentifier\n    }\n  });\n\n  // the query language used by Apache Cassandra is called CQL, but this mime type\n  // is called Cassandra to avoid confusion with Contextual Query Language\n  CodeMirror.defineMIME(\"text/x-cassandra\", {\n    name: \"sql\",\n    client: { },\n    keywords: set(\"add all allow alter and any apply as asc authorize batch begin by clustering columnfamily compact consistency count create custom delete desc distinct drop each_quorum exists filtering from grant if in index insert into key keyspace keyspaces level limit local_one local_quorum modify nan norecursive nosuperuser not of on one order password permission permissions primary quorum rename revoke schema select set storage superuser table three to token truncate ttl two type unlogged update use user users using values where with writetime\"),\n    builtin: set(\"ascii bigint blob boolean counter decimal double float frozen inet int list map static text timestamp timeuuid tuple uuid varchar varint\"),\n    atoms: set(\"false true infinity NaN\"),\n    operatorChars: /^[<>=]/,\n    dateSQL: { },\n    support: set(\"commentSlashSlash decimallessFloat\"),\n    hooks: { }\n  });\n\n  // this is based on Peter Raganitsch's 'plsql' mode\n  CodeMirror.defineMIME(\"text/x-plsql\", {\n    name:       \"sql\",\n    client:     set(\"appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define describe echo editfile embedded escape exec execute feedback flagger flush heading headsep instance linesize lno loboffset logsource long longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar release repfooter repheader serveroutput shiftinout show showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout time timing trimout trimspool ttitle underline verify version wrap\"),\n    keywords:   set(\"abort accept access add all alter and any array arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body boolean by case cast char char_base check close cluster clusters colauth column comment commit compress connect connected constant constraint crash create current currval cursor data_base database date dba deallocate debugoff debugon decimal declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry escape exception exception_init exchange exclusive exists exit external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging long loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base object of off offline on online only open option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw read rebuild record ref references refresh release rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate session set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work\"),\n    builtin:    set(\"abs acos add_months ascii asin atan atan2 average bfile bfilename bigserial bit blob ceil character chartorowid chr clob concat convert cos cosh count dec decode deref dual dump dup_val_on_index empty error exp false float floor found glb greatest hextoraw initcap instr instrb int integer isopen last_day least length lengthb ln lower lpad ltrim lub make_ref max min mlslabel mod months_between natural naturaln nchar nclob new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null number numeric nvarchar2 nvl others power rawtohex real reftohex round rowcount rowidtochar rowtype rpad rtrim serial sign signtype sin sinh smallint soundex sqlcode sqlerrm sqrt stddev string substr substrb sum sysdate tan tanh to_char text to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid unlogged upper user userenv varchar varchar2 variance varying vsize xml\"),\n    operatorChars: /^[*\\/+\\-%<>!=~]/,\n    dateSQL:    set(\"date time timestamp\"),\n    support:    set(\"doubleQuote nCharCast zerolessFloat binaryNumber hexNumber\")\n  });\n\n  // Created to support specific hive keywords\n  CodeMirror.defineMIME(\"text/x-hive\", {\n    name: \"sql\",\n    keywords: set(\"select alter $elem$ $key$ $value$ add after all analyze and archive as asc before between binary both bucket buckets by cascade case cast change cluster clustered clusterstatus collection column columns comment compute concatenate continue create cross cursor data database databases dbproperties deferred delete delimited desc describe directory disable distinct distribute drop else enable end escaped exclusive exists explain export extended external fetch fields fileformat first format formatted from full function functions grant group having hold_ddltime idxproperties if import in index indexes inpath inputdriver inputformat insert intersect into is items join keys lateral left like limit lines load local location lock locks mapjoin materialized minus msck no_drop nocompress not of offline on option or order out outer outputdriver outputformat overwrite partition partitioned partitions percent plus preserve procedure purge range rcfile read readonly reads rebuild recordreader recordwriter recover reduce regexp rename repair replace restrict revoke right rlike row schema schemas semi sequencefile serde serdeproperties set shared show show_database sort sorted ssl statistics stored streamtable table tables tablesample tblproperties temporary terminated textfile then tmp to touch transform trigger unarchive undo union uniquejoin unlock update use using utc utc_tmestamp view when where while with admin authorization char compact compactions conf cube current current_date current_timestamp day decimal defined dependency directories elem_type exchange file following for grouping hour ignore inner interval jar less logical macro minute month more none noscan over owner partialscan preceding pretty principals protection reload rewrite role roles rollup rows second server sets skewed transactions truncate unbounded unset uri user values window year\"),\n    builtin: set(\"bool boolean long timestamp tinyint smallint bigint int float double date datetime unsigned string array struct map uniontype key_type utctimestamp value_type varchar\"),\n    atoms: set(\"false true null unknown\"),\n    operatorChars: /^[*+\\-%<>!=]/,\n    dateSQL: set(\"date timestamp\"),\n    support: set(\"ODBCdotTable doubleQuote binaryNumber hexNumber\")\n  });\n\n  CodeMirror.defineMIME(\"text/x-pgsql\", {\n    name: \"sql\",\n    client: set(\"source\"),\n    // For PostgreSQL - https://www.postgresql.org/docs/11/sql-keywords-appendix.html\n    // For pl/pgsql lang - https://github.com/postgres/postgres/blob/REL_11_2/src/pl/plpgsql/src/pl_scanner.c\n    keywords: set(sqlKeywords + \"a abort abs absent absolute access according action ada add admin after aggregate alias all allocate also alter always analyse analyze and any are array array_agg array_max_cardinality as asc asensitive assert assertion assignment asymmetric at atomic attach attribute attributes authorization avg backward base64 before begin begin_frame begin_partition bernoulli between bigint binary bit bit_length blob blocked bom boolean both breadth by c cache call called cardinality cascade cascaded case cast catalog catalog_name ceil ceiling chain char char_length character character_length character_set_catalog character_set_name character_set_schema characteristics characters check checkpoint class class_origin clob close cluster coalesce cobol collate collation collation_catalog collation_name collation_schema collect column column_name columns command_function command_function_code comment comments commit committed concurrently condition condition_number configuration conflict connect connection connection_name constant constraint constraint_catalog constraint_name constraint_schema constraints constructor contains content continue control conversion convert copy corr corresponding cost count covar_pop covar_samp create cross csv cube cume_dist current current_catalog current_date current_default_transform_group current_path current_role current_row current_schema current_time current_timestamp current_transform_group_for_type current_user cursor cursor_name cycle data database datalink datatype date datetime_interval_code datetime_interval_precision day db deallocate debug dec decimal declare default defaults deferrable deferred defined definer degree delete delimiter delimiters dense_rank depends depth deref derived desc describe descriptor detach detail deterministic diagnostics dictionary disable discard disconnect dispatch distinct dlnewcopy dlpreviouscopy dlurlcomplete dlurlcompleteonly dlurlcompletewrite dlurlpath dlurlpathonly dlurlpathwrite dlurlscheme dlurlserver dlvalue do document domain double drop dump dynamic dynamic_function dynamic_function_code each element else elseif elsif empty enable encoding encrypted end end_frame end_partition endexec enforced enum equals errcode error escape event every except exception exclude excluding exclusive exec execute exists exit exp explain expression extension external extract false family fetch file filter final first first_value flag float floor following for force foreach foreign fortran forward found frame_row free freeze from fs full function functions fusion g general generated get global go goto grant granted greatest group grouping groups handler having header hex hierarchy hint hold hour id identity if ignore ilike immediate immediately immutable implementation implicit import in include including increment indent index indexes indicator info inherit inherits initially inline inner inout input insensitive insert instance instantiable instead int integer integrity intersect intersection interval into invoker is isnull isolation join k key key_member key_type label lag language large last last_value lateral lead leading leakproof least left length level library like like_regex limit link listen ln load local localtime localtimestamp location locator lock locked log logged loop lower m map mapping match matched materialized max max_cardinality maxvalue member merge message message_length message_octet_length message_text method min minute minvalue mod mode modifies module month more move multiset mumps name names namespace national natural nchar nclob nesting new next nfc nfd nfkc nfkd nil no none normalize normalized not nothing notice notify notnull nowait nth_value ntile null nullable nullif nulls number numeric object occurrences_regex octet_length octets of off offset oids old on only open operator option options or order ordering ordinality others out outer output over overlaps overlay overriding owned owner p pad parallel parameter parameter_mode parameter_name parameter_ordinal_position parameter_specific_catalog parameter_specific_name parameter_specific_schema parser partial partition pascal passing passthrough password path percent percent_rank percentile_cont percentile_disc perform period permission pg_context pg_datatype_name pg_exception_context pg_exception_detail pg_exception_hint placing plans pli policy portion position position_regex power precedes preceding precision prepare prepared preserve primary print_strict_params prior privileges procedural procedure procedures program public publication query quote raise range rank read reads real reassign recheck recovery recursive ref references referencing refresh regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy reindex relative release rename repeatable replace replica requiring reset respect restart restore restrict result result_oid return returned_cardinality returned_length returned_octet_length returned_sqlstate returning returns reverse revoke right role rollback rollup routine routine_catalog routine_name routine_schema routines row row_count row_number rows rowtype rule savepoint scale schema schema_name schemas scope scope_catalog scope_name scope_schema scroll search second section security select selective self sensitive sequence sequences serializable server server_name session session_user set setof sets share show similar simple size skip slice smallint snapshot some source space specific specific_name specifictype sql sqlcode sqlerror sqlexception sqlstate sqlwarning sqrt stable stacked standalone start state statement static statistics stddev_pop stddev_samp stdin stdout storage strict strip structure style subclass_origin submultiset subscription substring substring_regex succeeds sum symmetric sysid system system_time system_user t table table_name tables tablesample tablespace temp template temporary text then ties time timestamp timezone_hour timezone_minute to token top_level_count trailing transaction transaction_active transactions_committed transactions_rolled_back transform transforms translate translate_regex translation treat trigger trigger_catalog trigger_name trigger_schema trim trim_array true truncate trusted type types uescape unbounded uncommitted under unencrypted union unique unknown unlink unlisten unlogged unnamed unnest until untyped update upper uri usage use_column use_variable user user_defined_type_catalog user_defined_type_code user_defined_type_name user_defined_type_schema using vacuum valid validate validator value value_of values var_pop var_samp varbinary varchar variable_conflict variadic varying verbose version versioning view views volatile warning when whenever where while whitespace width_bucket window with within without work wrapper write xml xmlagg xmlattributes xmlbinary xmlcast xmlcomment xmlconcat xmldeclaration xmldocument xmlelement xmlexists xmlforest xmliterate xmlnamespaces xmlparse xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltext xmlvalidate year yes zone\"),\n    // https://www.postgresql.org/docs/11/datatype.html\n    builtin: set(\"bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml\"),\n    atoms: set(\"false true null unknown\"),\n    operatorChars: /^[*\\/+\\-%<>!=&|^\\/#@?~]/,\n    backslashStringEscapes: false,\n    dateSQL: set(\"date time timestamp\"),\n    support: set(\"ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast escapeConstant\")\n  });\n\n  // Google's SQL-like query language, GQL\n  CodeMirror.defineMIME(\"text/x-gql\", {\n    name: \"sql\",\n    keywords: set(\"ancestor and asc by contains desc descendant distinct from group has in is limit offset on order select superset where\"),\n    atoms: set(\"false true\"),\n    builtin: set(\"blob datetime first key __key__ string integer double boolean null\"),\n    operatorChars: /^[*+\\-%<>!=]/\n  });\n\n  // Greenplum\n  CodeMirror.defineMIME(\"text/x-gpsql\", {\n    name: \"sql\",\n    client: set(\"source\"),\n    //https://github.com/greenplum-db/gpdb/blob/master/src/include/parser/kwlist.h\n    keywords: set(\"abort absolute access action active add admin after aggregate all also alter always analyse analyze and any array as asc assertion assignment asymmetric at authorization backward before begin between bigint binary bit boolean both by cache called cascade cascaded case cast chain char character characteristics check checkpoint class close cluster coalesce codegen collate column comment commit committed concurrency concurrently configuration connection constraint constraints contains content continue conversion copy cost cpu_rate_limit create createdb createexttable createrole createuser cross csv cube current current_catalog current_date current_role current_schema current_time current_timestamp current_user cursor cycle data database day deallocate dec decimal declare decode default defaults deferrable deferred definer delete delimiter delimiters deny desc dictionary disable discard distinct distributed do document domain double drop dxl each else enable encoding encrypted end enum errors escape every except exchange exclude excluding exclusive execute exists explain extension external extract false family fetch fields filespace fill filter first float following for force foreign format forward freeze from full function global grant granted greatest group group_id grouping handler hash having header hold host hour identity if ignore ilike immediate immutable implicit in including inclusive increment index indexes inherit inherits initially inline inner inout input insensitive insert instead int integer intersect interval into invoker is isnull isolation join key language large last leading least left level like limit list listen load local localtime localtimestamp location lock log login mapping master match maxvalue median merge minute minvalue missing mode modifies modify month move name names national natural nchar new newline next no nocreatedb nocreateexttable nocreaterole nocreateuser noinherit nologin none noovercommit nosuperuser not nothing notify notnull nowait null nullif nulls numeric object of off offset oids old on only operator option options or order ordered others out outer over overcommit overlaps overlay owned owner parser partial partition partitions passing password percent percentile_cont percentile_disc placing plans position preceding precision prepare prepared preserve primary prior privileges procedural procedure protocol queue quote randomly range read readable reads real reassign recheck recursive ref references reindex reject relative release rename repeatable replace replica reset resource restart restrict returning returns revoke right role rollback rollup rootpartition row rows rule savepoint scatter schema scroll search second security segment select sequence serializable session session_user set setof sets share show similar simple smallint some split sql stable standalone start statement statistics stdin stdout storage strict strip subpartition subpartitions substring superuser symmetric sysid system table tablespace temp template temporary text then threshold ties time timestamp to trailing transaction treat trigger trim true truncate trusted type unbounded uncommitted unencrypted union unique unknown unlisten until update user using vacuum valid validation validator value values varchar variadic varying verbose version view volatile web when where whitespace window with within without work writable write xml xmlattributes xmlconcat xmlelement xmlexists xmlforest xmlparse xmlpi xmlroot xmlserialize year yes zone\"),\n    builtin: set(\"bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml\"),\n    atoms: set(\"false true null unknown\"),\n    operatorChars: /^[*+\\-%<>!=&|^\\/#@?~]/,\n    dateSQL: set(\"date time timestamp\"),\n    support: set(\"ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast\")\n  });\n\n  // Spark SQL\n  CodeMirror.defineMIME(\"text/x-sparksql\", {\n    name: \"sql\",\n    keywords: set(\"add after all alter analyze and anti archive array as asc at between bucket buckets by cache cascade case cast change clear cluster clustered codegen collection column columns comment commit compact compactions compute concatenate cost create cross cube current current_date current_timestamp database databases datata dbproperties defined delete delimited deny desc describe dfs directories distinct distribute drop else end escaped except exchange exists explain export extended external false fields fileformat first following for format formatted from full function functions global grant group grouping having if ignore import in index indexes inner inpath inputformat insert intersect interval into is items join keys last lateral lazy left like limit lines list load local location lock locks logical macro map minus msck natural no not null nulls of on optimize option options or order out outer outputformat over overwrite partition partitioned partitions percent preceding principals purge range recordreader recordwriter recover reduce refresh regexp rename repair replace reset restrict revoke right rlike role roles rollback rollup row rows schema schemas select semi separated serde serdeproperties set sets show skewed sort sorted start statistics stored stratify struct table tables tablesample tblproperties temp temporary terminated then to touch transaction transactions transform true truncate unarchive unbounded uncache union unlock unset use using values view when where window with\"),\n    builtin: set(\"tinyint smallint int bigint boolean float double string binary timestamp decimal array map struct uniontype delimited serde sequencefile textfile rcfile inputformat outputformat\"),\n    atoms: set(\"false true null\"),\n    operatorChars: /^[*\\/+\\-%<>!=~&|^]/,\n    dateSQL: set(\"date time timestamp\"),\n    support: set(\"ODBCdotTable doubleQuote zerolessFloat\")\n  });\n\n  // Esper\n  CodeMirror.defineMIME(\"text/x-esper\", {\n    name: \"sql\",\n    client: set(\"source\"),\n    // http://www.espertech.com/esper/release-5.5.0/esper-reference/html/appendix_keywords.html\n    keywords: set(\"alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit after all and as at asc avedev avg between by case cast coalesce count create current_timestamp day days delete define desc distinct else end escape events every exists false first from full group having hour hours in inner insert instanceof into irstream is istream join last lastweekday left limit like max match_recognize matches median measures metadatasql min minute minutes msec millisecond milliseconds not null offset on or order outer output partition pattern prev prior regexp retain-union retain-intersection right rstream sec second seconds select set some snapshot sql stddev sum then true unidirectional until update variable weekday when where window\"),\n    builtin: {},\n    atoms: set(\"false true null\"),\n    operatorChars: /^[*+\\-%<>!=&|^\\/#@?~]/,\n    dateSQL: set(\"time\"),\n    support: set(\"decimallessFloat zerolessFloat binaryNumber hexNumber\")\n  });\n});\n\n/*\n  How Properties of Mime Types are used by SQL Mode\n  =================================================\n\n  keywords:\n    A list of keywords you want to be highlighted.\n  builtin:\n    A list of builtin types you want to be highlighted (if you want types to be of class \"builtin\" instead of \"keyword\").\n  operatorChars:\n    All characters that must be handled as operators.\n  client:\n    Commands parsed and executed by the client (not the server).\n  support:\n    A list of supported syntaxes which are not common, but are supported by more than 1 DBMS.\n    * ODBCdotTable: .tableName\n    * zerolessFloat: .1\n    * doubleQuote\n    * nCharCast: N'string'\n    * charsetCast: _utf8'string'\n    * commentHash: use # char for comments\n    * commentSlashSlash: use // for comments\n    * commentSpaceRequired: require a space after -- for comments\n  atoms:\n    Keywords that must be highlighted as atoms,. Some DBMS's support more atoms than others:\n    UNKNOWN, INFINITY, UNDERFLOW, NaN...\n  dateSQL:\n    Used for date/time SQL standard syntax, because not all DBMS's support same temporal types.\n*/\n", "/*! For license information please see index.js.LICENSE.txt */\n!function(t,e){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var i=e();for(var n in i)(\"object\"==typeof exports?exports:t)[n]=i[n]}}(this,(function(){return(()=>{var t={28:(t,e,i)=>{\"use strict\";i.d(e,{Z:()=>s});var n=i(645),o=i.n(n)()((function(t){return t[1]}));o.push([t.id,\":root {\\n  --perspective-map-range-1: #f1eef6;\\n  --perspective-map-range-2: #bdc9e1;\\n  --perspective-map-range-3: #74a9cf;\\n  --perspective-map-range-4: #2b8cbe;\\n  --perspective-map-range-5: #045a8d;\\n  --perspective-map-category-1: #a6cee3;\\n  --perspective-map-category-2: #1f78b4;\\n  --perspective-map-category-3: #b2df8a;\\n  --perspective-map-category-4: #33a02c;\\n  --perspective-map-category-5: #fb9a99;\\n}\\n\\n.perspective-map-legend {\\n  line-height: 18px;\\n  color: #555;\\n  background-color: #fff;\\n  padding: 1em;\\n  border-radius: 3px;\\n  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\\n  max-width: 140px;\\n}\\n\\n.perspective-map-legend i {\\n  width: 18px;\\n  height: 18px;\\n  float: left;\\n  margin-right: 8px;\\n}\\n\\n.perspective-map-tooltip {\\n  background-color: #fff;\\n  padding: 1em;\\n  border-radius: 3px;\\n  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\\n}\\n\\n.perspective-map-tooltip:empty {\\n  display: none;\\n}\\n\",\"\"]);const s=o},645:t=>{\"use strict\";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var i=t(e);return e[2]?\"@media \".concat(e[2],\" {\").concat(i,\"}\"):i})).join(\"\")},e.i=function(t,i,n){\"string\"==typeof t&&(t=[[null,t,\"\"]]);var o={};if(n)for(var s=0;s<this.length;s++){var r=this[s][0];null!=r&&(o[r]=!0)}for(var a=0;a<t.length;a++){var h=[].concat(t[a]);n&&o[h[0]]||(i&&(h[2]?h[2]=\"\".concat(i,\" and \").concat(h[2]):h[2]=i),e.push(h))}},e}},243:function(t,e){!function(t){\"use strict\";function e(t){var e,i,n,o;for(i=1,n=arguments.length;i<n;i++)for(e in o=arguments[i])t[e]=o[e];return t}var i=Object.create||function(){function t(){}return function(e){return t.prototype=e,new t}}();function n(t,e){var i=Array.prototype.slice;if(t.bind)return t.bind.apply(t,i.call(arguments,1));var n=i.call(arguments,2);return function(){return t.apply(e,n.length?n.concat(i.call(arguments)):arguments)}}var o=0;function s(t){return t._leaflet_id=t._leaflet_id||++o,t._leaflet_id}function r(t,e,i){var n,o,s,r;return r=function(){n=!1,o&&(s.apply(i,o),o=!1)},s=function(){n?o=arguments:(t.apply(i,arguments),setTimeout(r,e),n=!0)}}function a(t,e,i){var n=e[1],o=e[0],s=n-o;return t===n&&i?t:((t-o)%s+s)%s+o}function h(){return!1}function u(t,e){var i=Math.pow(10,void 0===e?6:e);return Math.round(t*i)/i}function l(t){return t.trim?t.trim():t.replace(/^\\s+|\\s+$/g,\"\")}function c(t){return l(t).split(/\\s+/)}function d(t,e){for(var n in Object.prototype.hasOwnProperty.call(t,\"options\")||(t.options=t.options?i(t.options):{}),e)t.options[n]=e[n];return t.options}function _(t,e,i){var n=[];for(var o in t)n.push(encodeURIComponent(i?o.toUpperCase():o)+\"=\"+encodeURIComponent(t[o]));return(e&&-1!==e.indexOf(\"?\")?\"&\":\"?\")+n.join(\"&\")}var p=/\\{ *([\\w_-]+) *\\}/g;function m(t,e){return t.replace(p,(function(t,i){var n=e[i];if(void 0===n)throw new Error(\"No value provided for variable \"+t);return\"function\"==typeof n&&(n=n(e)),n}))}var f=Array.isArray||function(t){return\"[object Array]\"===Object.prototype.toString.call(t)};function g(t,e){for(var i=0;i<t.length;i++)if(t[i]===e)return i;return-1}var v=\"data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=\";function y(t){return window[\"webkit\"+t]||window[\"moz\"+t]||window[\"ms\"+t]}var x=0;function w(t){var e=+new Date,i=Math.max(0,16-(e-x));return x=e+i,window.setTimeout(t,i)}var b=window.requestAnimationFrame||y(\"RequestAnimationFrame\")||w,P=window.cancelAnimationFrame||y(\"CancelAnimationFrame\")||y(\"CancelRequestAnimationFrame\")||function(t){window.clearTimeout(t)};function T(t,e,i){if(!i||b!==w)return b.call(window,n(t,e));t.call(e)}function M(t){t&&P.call(window,t)}var z={extend:e,create:i,bind:n,lastId:o,stamp:s,throttle:r,wrapNum:a,falseFn:h,formatNum:u,trim:l,splitWords:c,setOptions:d,getParamString:_,template:m,isArray:f,indexOf:g,emptyImageUrl:v,requestFn:b,cancelFn:P,requestAnimFrame:T,cancelAnimFrame:M};function C(){}C.extend=function(t){var n=function(){this.initialize&&this.initialize.apply(this,arguments),this.callInitHooks()},o=n.__super__=this.prototype,s=i(o);for(var r in s.constructor=n,n.prototype=s,this)Object.prototype.hasOwnProperty.call(this,r)&&\"prototype\"!==r&&\"__super__\"!==r&&(n[r]=this[r]);return t.statics&&(e(n,t.statics),delete t.statics),t.includes&&(function(t){if(\"undefined\"!=typeof L&&L&&L.Mixin){t=f(t)?t:[t];for(var e=0;e<t.length;e++)t[e]===L.Mixin.Events&&console.warn(\"Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.\",(new Error).stack)}}(t.includes),e.apply(null,[s].concat(t.includes)),delete t.includes),s.options&&(t.options=e(i(s.options),t.options)),e(s,t),s._initHooks=[],s.callInitHooks=function(){if(!this._initHooksCalled){o.callInitHooks&&o.callInitHooks.call(this),this._initHooksCalled=!0;for(var t=0,e=s._initHooks.length;t<e;t++)s._initHooks[t].call(this)}},n},C.include=function(t){return e(this.prototype,t),this},C.mergeOptions=function(t){return e(this.prototype.options,t),this},C.addInitHook=function(t){var e=Array.prototype.slice.call(arguments,1),i=\"function\"==typeof t?t:function(){this[t].apply(this,e)};return this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(i),this};var S={on:function(t,e,i){if(\"object\"==typeof t)for(var n in t)this._on(n,t[n],e);else for(var o=0,s=(t=c(t)).length;o<s;o++)this._on(t[o],e,i);return this},off:function(t,e,i){if(t)if(\"object\"==typeof t)for(var n in t)this._off(n,t[n],e);else for(var o=0,s=(t=c(t)).length;o<s;o++)this._off(t[o],e,i);else delete this._events;return this},_on:function(t,e,i){this._events=this._events||{};var n=this._events[t];n||(n=[],this._events[t]=n),i===this&&(i=void 0);for(var o={fn:e,ctx:i},s=n,r=0,a=s.length;r<a;r++)if(s[r].fn===e&&s[r].ctx===i)return;s.push(o)},_off:function(t,e,i){var n,o,s;if(this._events&&(n=this._events[t]))if(e){if(i===this&&(i=void 0),n)for(o=0,s=n.length;o<s;o++){var r=n[o];if(r.ctx===i&&r.fn===e)return r.fn=h,this._firingCount&&(this._events[t]=n=n.slice()),void n.splice(o,1)}}else{for(o=0,s=n.length;o<s;o++)n[o].fn=h;delete this._events[t]}},fire:function(t,i,n){if(!this.listens(t,n))return this;var o=e({},i,{type:t,target:this,sourceTarget:i&&i.sourceTarget||this});if(this._events){var s=this._events[t];if(s){this._firingCount=this._firingCount+1||1;for(var r=0,a=s.length;r<a;r++){var h=s[r];h.fn.call(h.ctx||this,o)}this._firingCount--}}return n&&this._propagateEvent(o),this},listens:function(t,e){var i=this._events&&this._events[t];if(i&&i.length)return!0;if(e)for(var n in this._eventParents)if(this._eventParents[n].listens(t,e))return!0;return!1},once:function(t,e,i){if(\"object\"==typeof t){for(var o in t)this.once(o,t[o],e);return this}var s=n((function(){this.off(t,e,i).off(t,s,i)}),this);return this.on(t,e,i).on(t,s,i)},addEventParent:function(t){return this._eventParents=this._eventParents||{},this._eventParents[s(t)]=t,this},removeEventParent:function(t){return this._eventParents&&delete this._eventParents[s(t)],this},_propagateEvent:function(t){for(var i in this._eventParents)this._eventParents[i].fire(t.type,e({layer:t.target,propagatedFrom:t.target},t),!0)}};S.addEventListener=S.on,S.removeEventListener=S.clearAllEventListeners=S.off,S.addOneTimeEventListener=S.once,S.fireEvent=S.fire,S.hasEventListeners=S.listens;var k=C.extend(S);function Z(t,e,i){this.x=i?Math.round(t):t,this.y=i?Math.round(e):e}var E=Math.trunc||function(t){return t>0?Math.floor(t):Math.ceil(t)};function A(t,e,i){return t instanceof Z?t:f(t)?new Z(t[0],t[1]):null==t?t:\"object\"==typeof t&&\"x\"in t&&\"y\"in t?new Z(t.x,t.y):new Z(t,e,i)}function B(t,e){if(t)for(var i=e?[t,e]:t,n=0,o=i.length;n<o;n++)this.extend(i[n])}function I(t,e){return!t||t instanceof B?t:new B(t,e)}function O(t,e){if(t)for(var i=e?[t,e]:t,n=0,o=i.length;n<o;n++)this.extend(i[n])}function N(t,e){return t instanceof O?t:new O(t,e)}function R(t,e,i){if(isNaN(t)||isNaN(e))throw new Error(\"Invalid LatLng object: (\"+t+\", \"+e+\")\");this.lat=+t,this.lng=+e,void 0!==i&&(this.alt=+i)}function D(t,e,i){return t instanceof R?t:f(t)&&\"object\"!=typeof t[0]?3===t.length?new R(t[0],t[1],t[2]):2===t.length?new R(t[0],t[1]):null:null==t?t:\"object\"==typeof t&&\"lat\"in t?new R(t.lat,\"lng\"in t?t.lng:t.lon,t.alt):void 0===e?null:new R(t,e,i)}Z.prototype={clone:function(){return new Z(this.x,this.y)},add:function(t){return this.clone()._add(A(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(A(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},scaleBy:function(t){return new Z(this.x*t.x,this.y*t.y)},unscaleBy:function(t){return new Z(this.x/t.x,this.y/t.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=E(this.x),this.y=E(this.y),this},distanceTo:function(t){var e=(t=A(t)).x-this.x,i=t.y-this.y;return Math.sqrt(e*e+i*i)},equals:function(t){return(t=A(t)).x===this.x&&t.y===this.y},contains:function(t){return t=A(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return\"Point(\"+u(this.x)+\", \"+u(this.y)+\")\"}},B.prototype={extend:function(t){return t=A(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new Z((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new Z(this.min.x,this.max.y)},getTopRight:function(){return new Z(this.max.x,this.min.y)},getTopLeft:function(){return this.min},getBottomRight:function(){return this.max},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var e,i;return(t=\"number\"==typeof t[0]||t instanceof Z?A(t):I(t))instanceof B?(e=t.min,i=t.max):e=i=t,e.x>=this.min.x&&i.x<=this.max.x&&e.y>=this.min.y&&i.y<=this.max.y},intersects:function(t){t=I(t);var e=this.min,i=this.max,n=t.min,o=t.max,s=o.x>=e.x&&n.x<=i.x,r=o.y>=e.y&&n.y<=i.y;return s&&r},overlaps:function(t){t=I(t);var e=this.min,i=this.max,n=t.min,o=t.max,s=o.x>e.x&&n.x<i.x,r=o.y>e.y&&n.y<i.y;return s&&r},isValid:function(){return!(!this.min||!this.max)}},O.prototype={extend:function(t){var e,i,n=this._southWest,o=this._northEast;if(t instanceof R)e=t,i=t;else{if(!(t instanceof O))return t?this.extend(D(t)||N(t)):this;if(e=t._southWest,i=t._northEast,!e||!i)return this}return n||o?(n.lat=Math.min(e.lat,n.lat),n.lng=Math.min(e.lng,n.lng),o.lat=Math.max(i.lat,o.lat),o.lng=Math.max(i.lng,o.lng)):(this._southWest=new R(e.lat,e.lng),this._northEast=new R(i.lat,i.lng)),this},pad:function(t){var e=this._southWest,i=this._northEast,n=Math.abs(e.lat-i.lat)*t,o=Math.abs(e.lng-i.lng)*t;return new O(new R(e.lat-n,e.lng-o),new R(i.lat+n,i.lng+o))},getCenter:function(){return new R((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new R(this.getNorth(),this.getWest())},getSouthEast:function(){return new R(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat},getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(t){t=\"number\"==typeof t[0]||t instanceof R||\"lat\"in t?D(t):N(t);var e,i,n=this._southWest,o=this._northEast;return t instanceof O?(e=t.getSouthWest(),i=t.getNorthEast()):e=i=t,e.lat>=n.lat&&i.lat<=o.lat&&e.lng>=n.lng&&i.lng<=o.lng},intersects:function(t){t=N(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>=e.lat&&n.lat<=i.lat,r=o.lng>=e.lng&&n.lng<=i.lng;return s&&r},overlaps:function(t){t=N(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>e.lat&&n.lat<i.lat,r=o.lng>e.lng&&n.lng<i.lng;return s&&r},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(\",\")},equals:function(t,e){return!!t&&(t=N(t),this._southWest.equals(t.getSouthWest(),e)&&this._northEast.equals(t.getNorthEast(),e))},isValid:function(){return!(!this._southWest||!this._northEast)}},R.prototype={equals:function(t,e){return!!t&&(t=D(t),Math.max(Math.abs(this.lat-t.lat),Math.abs(this.lng-t.lng))<=(void 0===e?1e-9:e))},toString:function(t){return\"LatLng(\"+u(this.lat,t)+\", \"+u(this.lng,t)+\")\"},distanceTo:function(t){return W.distance(this,D(t))},wrap:function(){return W.wrapLatLng(this)},toBounds:function(t){var e=180*t/40075017,i=e/Math.cos(Math.PI/180*this.lat);return N([this.lat-e,this.lng-i],[this.lat+e,this.lng+i])},clone:function(){return new R(this.lat,this.lng,this.alt)}};var j,H={latLngToPoint:function(t,e){var i=this.projection.project(t),n=this.scale(e);return this.transformation._transform(i,n)},pointToLatLng:function(t,e){var i=this.scale(e),n=this.transformation.untransform(t,i);return this.projection.unproject(n)},project:function(t){return this.projection.project(t)},unproject:function(t){return this.projection.unproject(t)},scale:function(t){return 256*Math.pow(2,t)},zoom:function(t){return Math.log(t/256)/Math.LN2},getProjectedBounds:function(t){if(this.infinite)return null;var e=this.projection.bounds,i=this.scale(t);return new B(this.transformation.transform(e.min,i),this.transformation.transform(e.max,i))},infinite:!1,wrapLatLng:function(t){var e=this.wrapLng?a(t.lng,this.wrapLng,!0):t.lng;return new R(this.wrapLat?a(t.lat,this.wrapLat,!0):t.lat,e,t.alt)},wrapLatLngBounds:function(t){var e=t.getCenter(),i=this.wrapLatLng(e),n=e.lat-i.lat,o=e.lng-i.lng;if(0===n&&0===o)return t;var s=t.getSouthWest(),r=t.getNorthEast();return new O(new R(s.lat-n,s.lng-o),new R(r.lat-n,r.lng-o))}},W=e({},H,{wrapLng:[-180,180],R:6371e3,distance:function(t,e){var i=Math.PI/180,n=t.lat*i,o=e.lat*i,s=Math.sin((e.lat-t.lat)*i/2),r=Math.sin((e.lng-t.lng)*i/2),a=s*s+Math.cos(n)*Math.cos(o)*r*r,h=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));return this.R*h}}),F=6378137,U={R:F,MAX_LATITUDE:85.0511287798,project:function(t){var e=Math.PI/180,i=this.MAX_LATITUDE,n=Math.max(Math.min(i,t.lat),-i),o=Math.sin(n*e);return new Z(this.R*t.lng*e,this.R*Math.log((1+o)/(1-o))/2)},unproject:function(t){var e=180/Math.PI;return new R((2*Math.atan(Math.exp(t.y/this.R))-Math.PI/2)*e,t.x*e/this.R)},bounds:(j=F*Math.PI,new B([-j,-j],[j,j]))};function V(t,e,i,n){if(f(t))return this._a=t[0],this._b=t[1],this._c=t[2],void(this._d=t[3]);this._a=t,this._b=e,this._c=i,this._d=n}function G(t,e,i,n){return new V(t,e,i,n)}V.prototype={transform:function(t,e){return this._transform(t.clone(),e)},_transform:function(t,e){return e=e||1,t.x=e*(this._a*t.x+this._b),t.y=e*(this._c*t.y+this._d),t},untransform:function(t,e){return e=e||1,new Z((t.x/e-this._b)/this._a,(t.y/e-this._d)/this._c)}};var q=e({},W,{code:\"EPSG:3857\",projection:U,transformation:function(){var t=.5/(Math.PI*U.R);return G(t,.5,-t,.5)}()}),K=e({},q,{code:\"EPSG:900913\"});function J(t){return document.createElementNS(\"http://www.w3.org/2000/svg\",t)}function Y(t,e){var i,n,o,s,r,a,h=\"\";for(i=0,o=t.length;i<o;i++){for(n=0,s=(r=t[i]).length;n<s;n++)h+=(n?\"L\":\"M\")+(a=r[n]).x+\" \"+a.y;h+=e?Ct?\"z\":\"x\":\"\"}return h||\"M0 0\"}var X=document.documentElement.style,$=\"ActiveXObject\"in window,Q=$&&!document.addEventListener,tt=\"msLaunchUri\"in navigator&&!(\"documentMode\"in document),et=kt(\"webkit\"),it=kt(\"android\"),nt=kt(\"android 2\")||kt(\"android 3\"),ot=parseInt(/WebKit\\/([0-9]+)|$/.exec(navigator.userAgent)[1],10),st=it&&kt(\"Google\")&&ot<537&&!(\"AudioNode\"in window),rt=!!window.opera,at=!tt&&kt(\"chrome\"),ht=kt(\"gecko\")&&!et&&!rt&&!$,ut=!at&&kt(\"safari\"),lt=kt(\"phantom\"),ct=\"OTransition\"in X,dt=0===navigator.platform.indexOf(\"Win\"),_t=$&&\"transition\"in X,pt=\"WebKitCSSMatrix\"in window&&\"m11\"in new window.WebKitCSSMatrix&&!nt,mt=\"MozPerspective\"in X,ft=!window.L_DISABLE_3D&&(_t||pt||mt)&&!ct&&!lt,gt=\"undefined\"!=typeof orientation||kt(\"mobile\"),vt=gt&&et,yt=gt&&pt,xt=!window.PointerEvent&&window.MSPointerEvent,wt=!(!window.PointerEvent&&!xt),bt=!window.L_NO_TOUCH&&(wt||\"ontouchstart\"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),Pt=gt&&rt,Lt=gt&&ht,Tt=(window.devicePixelRatio||window.screen.deviceXDPI/window.screen.logicalXDPI)>1,Mt=function(){var t=!1;try{var e=Object.defineProperty({},\"passive\",{get:function(){t=!0}});window.addEventListener(\"testPassiveEventSupport\",h,e),window.removeEventListener(\"testPassiveEventSupport\",h,e)}catch(t){}return t}(),zt=!!document.createElement(\"canvas\").getContext,Ct=!(!document.createElementNS||!J(\"svg\").createSVGRect),St=!Ct&&function(){try{var t=document.createElement(\"div\");t.innerHTML='<v:shape adj=\"1\"/>';var e=t.firstChild;return e.style.behavior=\"url(#default#VML)\",e&&\"object\"==typeof e.adj}catch(t){return!1}}();function kt(t){return navigator.userAgent.toLowerCase().indexOf(t)>=0}var Zt={ie:$,ielt9:Q,edge:tt,webkit:et,android:it,android23:nt,androidStock:st,opera:rt,chrome:at,gecko:ht,safari:ut,phantom:lt,opera12:ct,win:dt,ie3d:_t,webkit3d:pt,gecko3d:mt,any3d:ft,mobile:gt,mobileWebkit:vt,mobileWebkit3d:yt,msPointer:xt,pointer:wt,touch:bt,mobileOpera:Pt,mobileGecko:Lt,retina:Tt,passiveEvents:Mt,canvas:zt,svg:Ct,vml:St},Et=xt?\"MSPointerDown\":\"pointerdown\",At=xt?\"MSPointerMove\":\"pointermove\",Bt=xt?\"MSPointerUp\":\"pointerup\",It=xt?\"MSPointerCancel\":\"pointercancel\",Ot={},Nt=!1;function Rt(t,e,i,o){return\"touchstart\"===e?function(t,e,i){var o=n((function(t){t.MSPOINTER_TYPE_TOUCH&&t.pointerType===t.MSPOINTER_TYPE_TOUCH&&Ie(t),Wt(t,e)}));t[\"_leaflet_touchstart\"+i]=o,t.addEventListener(Et,o,!1),Nt||(document.addEventListener(Et,Dt,!0),document.addEventListener(At,jt,!0),document.addEventListener(Bt,Ht,!0),document.addEventListener(It,Ht,!0),Nt=!0)}(t,i,o):\"touchmove\"===e?function(t,e,i){var n=function(t){t.pointerType===(t.MSPOINTER_TYPE_MOUSE||\"mouse\")&&0===t.buttons||Wt(t,e)};t[\"_leaflet_touchmove\"+i]=n,t.addEventListener(At,n,!1)}(t,i,o):\"touchend\"===e&&function(t,e,i){var n=function(t){Wt(t,e)};t[\"_leaflet_touchend\"+i]=n,t.addEventListener(Bt,n,!1),t.addEventListener(It,n,!1)}(t,i,o),this}function Dt(t){Ot[t.pointerId]=t}function jt(t){Ot[t.pointerId]&&(Ot[t.pointerId]=t)}function Ht(t){delete Ot[t.pointerId]}function Wt(t,e){for(var i in t.touches=[],Ot)t.touches.push(Ot[i]);t.changedTouches=[t],e(t)}var Ft=xt?\"MSPointerDown\":wt?\"pointerdown\":\"touchstart\",Ut=xt?\"MSPointerUp\":wt?\"pointerup\":\"touchend\",Vt=\"_leaflet_\";var Gt,qt,Kt,Jt,Yt,Xt=_e([\"transform\",\"webkitTransform\",\"OTransform\",\"MozTransform\",\"msTransform\"]),$t=_e([\"webkitTransition\",\"transition\",\"OTransition\",\"MozTransition\",\"msTransition\"]),Qt=\"webkitTransition\"===$t||\"OTransition\"===$t?$t+\"End\":\"transitionend\";function te(t){return\"string\"==typeof t?document.getElementById(t):t}function ee(t,e){var i=t.style[e]||t.currentStyle&&t.currentStyle[e];if((!i||\"auto\"===i)&&document.defaultView){var n=document.defaultView.getComputedStyle(t,null);i=n?n[e]:null}return\"auto\"===i?null:i}function ie(t,e,i){var n=document.createElement(t);return n.className=e||\"\",i&&i.appendChild(n),n}function ne(t){var e=t.parentNode;e&&e.removeChild(t)}function oe(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function se(t){var e=t.parentNode;e&&e.lastChild!==t&&e.appendChild(t)}function re(t){var e=t.parentNode;e&&e.firstChild!==t&&e.insertBefore(t,e.firstChild)}function ae(t,e){if(void 0!==t.classList)return t.classList.contains(e);var i=ce(t);return i.length>0&&new RegExp(\"(^|\\\\s)\"+e+\"(\\\\s|$)\").test(i)}function he(t,e){if(void 0!==t.classList)for(var i=c(e),n=0,o=i.length;n<o;n++)t.classList.add(i[n]);else if(!ae(t,e)){var s=ce(t);le(t,(s?s+\" \":\"\")+e)}}function ue(t,e){void 0!==t.classList?t.classList.remove(e):le(t,l((\" \"+ce(t)+\" \").replace(\" \"+e+\" \",\" \")))}function le(t,e){void 0===t.className.baseVal?t.className=e:t.className.baseVal=e}function ce(t){return t.correspondingElement&&(t=t.correspondingElement),void 0===t.className.baseVal?t.className:t.className.baseVal}function de(t,e){\"opacity\"in t.style?t.style.opacity=e:\"filter\"in t.style&&function(t,e){var i=!1,n=\"DXImageTransform.Microsoft.Alpha\";try{i=t.filters.item(n)}catch(t){if(1===e)return}e=Math.round(100*e),i?(i.Enabled=100!==e,i.Opacity=e):t.style.filter+=\" progid:\"+n+\"(opacity=\"+e+\")\"}(t,e)}function _e(t){for(var e=document.documentElement.style,i=0;i<t.length;i++)if(t[i]in e)return t[i];return!1}function pe(t,e,i){var n=e||new Z(0,0);t.style[Xt]=(_t?\"translate(\"+n.x+\"px,\"+n.y+\"px)\":\"translate3d(\"+n.x+\"px,\"+n.y+\"px,0)\")+(i?\" scale(\"+i+\")\":\"\")}function me(t,e){t._leaflet_pos=e,ft?pe(t,e):(t.style.left=e.x+\"px\",t.style.top=e.y+\"px\")}function fe(t){return t._leaflet_pos||new Z(0,0)}if(\"onselectstart\"in document)Gt=function(){Te(window,\"selectstart\",Ie)},qt=function(){ze(window,\"selectstart\",Ie)};else{var ge=_e([\"userSelect\",\"WebkitUserSelect\",\"OUserSelect\",\"MozUserSelect\",\"msUserSelect\"]);Gt=function(){if(ge){var t=document.documentElement.style;Kt=t[ge],t[ge]=\"none\"}},qt=function(){ge&&(document.documentElement.style[ge]=Kt,Kt=void 0)}}function ve(){Te(window,\"dragstart\",Ie)}function ye(){ze(window,\"dragstart\",Ie)}function xe(t){for(;-1===t.tabIndex;)t=t.parentNode;t.style&&(we(),Jt=t,Yt=t.style.outline,t.style.outline=\"none\",Te(window,\"keydown\",we))}function we(){Jt&&(Jt.style.outline=Yt,Jt=void 0,Yt=void 0,ze(window,\"keydown\",we))}function be(t){do{t=t.parentNode}while(!(t.offsetWidth&&t.offsetHeight||t===document.body));return t}function Pe(t){var e=t.getBoundingClientRect();return{x:e.width/t.offsetWidth||1,y:e.height/t.offsetHeight||1,boundingClientRect:e}}var Le={TRANSFORM:Xt,TRANSITION:$t,TRANSITION_END:Qt,get:te,getStyle:ee,create:ie,remove:ne,empty:oe,toFront:se,toBack:re,hasClass:ae,addClass:he,removeClass:ue,setClass:le,getClass:ce,setOpacity:de,testProp:_e,setTransform:pe,setPosition:me,getPosition:fe,disableTextSelection:Gt,enableTextSelection:qt,disableImageDrag:ve,enableImageDrag:ye,preventOutline:xe,restoreOutline:we,getSizedParentNode:be,getScale:Pe};function Te(t,e,i,n){if(\"object\"==typeof e)for(var o in e)ke(t,o,e[o],i);else for(var s=0,r=(e=c(e)).length;s<r;s++)ke(t,e[s],i,n);return this}var Me=\"_leaflet_events\";function ze(t,e,i,n){if(\"object\"==typeof e)for(var o in e)Ze(t,o,e[o],i);else if(e)for(var s=0,r=(e=c(e)).length;s<r;s++)Ze(t,e[s],i,n);else{for(var a in t[Me])Ze(t,a,t[Me][a]);delete t[Me]}return this}function Ce(){if(wt)return!(tt||ut)}var Se={mouseenter:\"mouseover\",mouseleave:\"mouseout\",wheel:!(\"onwheel\"in window)&&\"mousewheel\"};function ke(t,e,i,n){var o=e+s(i)+(n?\"_\"+s(n):\"\");if(t[Me]&&t[Me][o])return this;var r=function(e){return i.call(n||t,e||window.event)},a=r;wt&&0===e.indexOf(\"touch\")?Rt(t,e,r,o):bt&&\"dblclick\"===e&&!Ce()?function(t,e,i){var n,o,s=!1;function r(t){if(wt){if(!t.isPrimary)return;if(\"mouse\"===t.pointerType)return}else if(t.touches.length>1)return;var e=Date.now(),i=e-(n||e);o=t.touches?t.touches[0]:t,s=i>0&&i<=250,n=e}function a(t){if(s&&!o.cancelBubble){if(wt){if(\"mouse\"===t.pointerType)return;var i,r,a={};for(r in o)i=o[r],a[r]=i&&i.bind?i.bind(o):i;o=a}o.type=\"dblclick\",o.button=0,e(o),n=null}}t[Vt+Ft+i]=r,t[Vt+Ut+i]=a,t[Vt+\"dblclick\"+i]=e,t.addEventListener(Ft,r,!!Mt&&{passive:!1}),t.addEventListener(Ut,a,!!Mt&&{passive:!1}),t.addEventListener(\"dblclick\",e,!1)}(t,r,o):\"addEventListener\"in t?\"touchstart\"===e||\"touchmove\"===e||\"wheel\"===e||\"mousewheel\"===e?t.addEventListener(Se[e]||e,r,!!Mt&&{passive:!1}):\"mouseenter\"===e||\"mouseleave\"===e?(r=function(e){e=e||window.event,Fe(t,e)&&a(e)},t.addEventListener(Se[e],r,!1)):t.addEventListener(e,a,!1):\"attachEvent\"in t&&t.attachEvent(\"on\"+e,r),t[Me]=t[Me]||{},t[Me][o]=r}function Ze(t,e,i,n){var o=e+s(i)+(n?\"_\"+s(n):\"\"),r=t[Me]&&t[Me][o];if(!r)return this;wt&&0===e.indexOf(\"touch\")?function(t,e,i){var n=t[\"_leaflet_\"+e+i];\"touchstart\"===e?t.removeEventListener(Et,n,!1):\"touchmove\"===e?t.removeEventListener(At,n,!1):\"touchend\"===e&&(t.removeEventListener(Bt,n,!1),t.removeEventListener(It,n,!1))}(t,e,o):bt&&\"dblclick\"===e&&!Ce()?function(t,e){var i=t[Vt+Ft+e],n=t[Vt+Ut+e],o=t[Vt+\"dblclick\"+e];t.removeEventListener(Ft,i,!!Mt&&{passive:!1}),t.removeEventListener(Ut,n,!!Mt&&{passive:!1}),t.removeEventListener(\"dblclick\",o,!1)}(t,o):\"removeEventListener\"in t?t.removeEventListener(Se[e]||e,r,!1):\"detachEvent\"in t&&t.detachEvent(\"on\"+e,r),t[Me][o]=null}function Ee(t){return t.stopPropagation?t.stopPropagation():t.originalEvent?t.originalEvent._stopped=!0:t.cancelBubble=!0,We(t),this}function Ae(t){return ke(t,\"wheel\",Ee),this}function Be(t){return Te(t,\"mousedown touchstart dblclick\",Ee),ke(t,\"click\",He),this}function Ie(t){return t.preventDefault?t.preventDefault():t.returnValue=!1,this}function Oe(t){return Ie(t),Ee(t),this}function Ne(t,e){if(!e)return new Z(t.clientX,t.clientY);var i=Pe(e),n=i.boundingClientRect;return new Z((t.clientX-n.left)/i.x-e.clientLeft,(t.clientY-n.top)/i.y-e.clientTop)}var Re=dt&&at?2*window.devicePixelRatio:ht?window.devicePixelRatio:1;function De(t){return tt?t.wheelDeltaY/2:t.deltaY&&0===t.deltaMode?-t.deltaY/Re:t.deltaY&&1===t.deltaMode?20*-t.deltaY:t.deltaY&&2===t.deltaMode?60*-t.deltaY:t.deltaX||t.deltaZ?0:t.wheelDelta?(t.wheelDeltaY||t.wheelDelta)/2:t.detail&&Math.abs(t.detail)<32765?20*-t.detail:t.detail?t.detail/-32765*60:0}var je={};function He(t){je[t.type]=!0}function We(t){var e=je[t.type];return je[t.type]=!1,e}function Fe(t,e){var i=e.relatedTarget;if(!i)return!0;try{for(;i&&i!==t;)i=i.parentNode}catch(t){return!1}return i!==t}var Ue={on:Te,off:ze,stopPropagation:Ee,disableScrollPropagation:Ae,disableClickPropagation:Be,preventDefault:Ie,stop:Oe,getMousePosition:Ne,getWheelDelta:De,fakeStop:He,skipped:We,isExternalTarget:Fe,addListener:Te,removeListener:ze},Ve=k.extend({run:function(t,e,i,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=i||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=fe(t),this._offset=e.subtract(this._startPos),this._startTime=+new Date,this.fire(\"start\"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=T(this._animate,this),this._step()},_step:function(t){var e=+new Date-this._startTime,i=1e3*this._duration;e<i?this._runFrame(this._easeOut(e/i),t):(this._runFrame(1),this._complete())},_runFrame:function(t,e){var i=this._startPos.add(this._offset.multiplyBy(t));e&&i._round(),me(this._el,i),this.fire(\"step\")},_complete:function(){M(this._animId),this._inProgress=!1,this.fire(\"end\")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),Ge=k.extend({options:{crs:q,center:void 0,zoom:void 0,minZoom:void 0,maxZoom:void 0,layers:[],maxBounds:void 0,renderer:void 0,zoomAnimation:!0,zoomAnimationThreshold:4,fadeAnimation:!0,markerZoomAnimation:!0,transform3DLimit:8388608,zoomSnap:1,zoomDelta:1,trackResize:!0},initialize:function(t,e){e=d(this,e),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._sizeChanged=!0,this._initContainer(t),this._initLayout(),this._onResize=n(this._onResize,this),this._initEvents(),e.maxBounds&&this.setMaxBounds(e.maxBounds),void 0!==e.zoom&&(this._zoom=this._limitZoom(e.zoom)),e.center&&void 0!==e.zoom&&this.setView(D(e.center),e.zoom,{reset:!0}),this.callInitHooks(),this._zoomAnimated=$t&&ft&&!Pt&&this.options.zoomAnimation,this._zoomAnimated&&(this._createAnimProxy(),Te(this._proxy,Qt,this._catchTransitionEnd,this)),this._addLayers(this.options.layers)},setView:function(t,i,n){return i=void 0===i?this._zoom:this._limitZoom(i),t=this._limitCenter(D(t),i,this.options.maxBounds),n=n||{},this._stop(),this._loaded&&!n.reset&&!0!==n&&(void 0!==n.animate&&(n.zoom=e({animate:n.animate},n.zoom),n.pan=e({animate:n.animate,duration:n.duration},n.pan)),this._zoom!==i?this._tryAnimatedZoom&&this._tryAnimatedZoom(t,i,n.zoom):this._tryAnimatedPan(t,n.pan))?(clearTimeout(this._sizeTimer),this):(this._resetView(t,i),this)},setZoom:function(t,e){return this._loaded?this.setView(this.getCenter(),t,{zoom:e}):(this._zoom=t,this)},zoomIn:function(t,e){return t=t||(ft?this.options.zoomDelta:1),this.setZoom(this._zoom+t,e)},zoomOut:function(t,e){return t=t||(ft?this.options.zoomDelta:1),this.setZoom(this._zoom-t,e)},setZoomAround:function(t,e,i){var n=this.getZoomScale(e),o=this.getSize().divideBy(2),s=(t instanceof Z?t:this.latLngToContainerPoint(t)).subtract(o).multiplyBy(1-1/n),r=this.containerPointToLatLng(o.add(s));return this.setView(r,e,{zoom:i})},_getBoundsCenterZoom:function(t,e){e=e||{},t=t.getBounds?t.getBounds():N(t);var i=A(e.paddingTopLeft||e.padding||[0,0]),n=A(e.paddingBottomRight||e.padding||[0,0]),o=this.getBoundsZoom(t,!1,i.add(n));if((o=\"number\"==typeof e.maxZoom?Math.min(e.maxZoom,o):o)===1/0)return{center:t.getCenter(),zoom:o};var s=n.subtract(i).divideBy(2),r=this.project(t.getSouthWest(),o),a=this.project(t.getNorthEast(),o);return{center:this.unproject(r.add(a).divideBy(2).add(s),o),zoom:o}},fitBounds:function(t,e){if(!(t=N(t)).isValid())throw new Error(\"Bounds are not valid.\");var i=this._getBoundsCenterZoom(t,e);return this.setView(i.center,i.zoom,e)},fitWorld:function(t){return this.fitBounds([[-90,-180],[90,180]],t)},panTo:function(t,e){return this.setView(t,this._zoom,{pan:e})},panBy:function(t,e){if(e=e||{},!(t=A(t).round()).x&&!t.y)return this.fire(\"moveend\");if(!0!==e.animate&&!this.getSize().contains(t))return this._resetView(this.unproject(this.project(this.getCenter()).add(t)),this.getZoom()),this;if(this._panAnim||(this._panAnim=new Ve,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),e.noMoveStart||this.fire(\"movestart\"),!1!==e.animate){he(this._mapPane,\"leaflet-pan-anim\");var i=this._getMapPanePos().subtract(t).round();this._panAnim.run(this._mapPane,i,e.duration||.25,e.easeLinearity)}else this._rawPanBy(t),this.fire(\"move\").fire(\"moveend\");return this},flyTo:function(t,e,i){if(!1===(i=i||{}).animate||!ft)return this.setView(t,e,i);this._stop();var n=this.project(this.getCenter()),o=this.project(t),s=this.getSize(),r=this._zoom;t=D(t),e=void 0===e?r:e;var a=Math.max(s.x,s.y),h=a*this.getZoomScale(r,e),u=o.distanceTo(n)||1,l=1.42,c=2.0164;function d(t){var e=(h*h-a*a+(t?-1:1)*c*c*u*u)/(2*(t?h:a)*c*u),i=Math.sqrt(e*e+1)-e;return i<1e-9?-18:Math.log(i)}function _(t){return(Math.exp(t)-Math.exp(-t))/2}function p(t){return(Math.exp(t)+Math.exp(-t))/2}var m=d(0);function f(t){return a*(p(m)*(_(e=m+l*t)/p(e))-_(m))/c;var e}var g=Date.now(),v=(d(1)-m)/l,y=i.duration?1e3*i.duration:1e3*v*.8;return this._moveStart(!0,i.noMoveStart),function i(){var s=(Date.now()-g)/y,h=function(t){return 1-Math.pow(1-t,1.5)}(s)*v;s<=1?(this._flyToFrame=T(i,this),this._move(this.unproject(n.add(o.subtract(n).multiplyBy(f(h)/u)),r),this.getScaleZoom(a/function(t){return a*(p(m)/p(m+l*t))}(h),r),{flyTo:!0})):this._move(t,e)._moveEnd(!0)}.call(this),this},flyToBounds:function(t,e){var i=this._getBoundsCenterZoom(t,e);return this.flyTo(i.center,i.zoom,e)},setMaxBounds:function(t){return(t=N(t)).isValid()?(this.options.maxBounds&&this.off(\"moveend\",this._panInsideMaxBounds),this.options.maxBounds=t,this._loaded&&this._panInsideMaxBounds(),this.on(\"moveend\",this._panInsideMaxBounds)):(this.options.maxBounds=null,this.off(\"moveend\",this._panInsideMaxBounds))},setMinZoom:function(t){var e=this.options.minZoom;return this.options.minZoom=t,this._loaded&&e!==t&&(this.fire(\"zoomlevelschange\"),this.getZoom()<this.options.minZoom)?this.setZoom(t):this},setMaxZoom:function(t){var e=this.options.maxZoom;return this.options.maxZoom=t,this._loaded&&e!==t&&(this.fire(\"zoomlevelschange\"),this.getZoom()>this.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,e){this._enforcingBounds=!0;var i=this.getCenter(),n=this._limitCenter(i,this._zoom,N(t));return i.equals(n)||this.panTo(n,e),this._enforcingBounds=!1,this},panInside:function(t,e){var i=A((e=e||{}).paddingTopLeft||e.padding||[0,0]),n=A(e.paddingBottomRight||e.padding||[0,0]),o=this.getCenter(),s=this.project(o),r=this.project(t),a=this.getPixelBounds(),h=a.getSize().divideBy(2),u=I([a.min.add(i),a.max.subtract(n)]);if(!u.contains(r)){this._enforcingBounds=!0;var l=s.subtract(r),c=A(r.x+l.x,r.y+l.y);(r.x<u.min.x||r.x>u.max.x)&&(c.x=s.x-l.x,l.x>0?c.x+=h.x-i.x:c.x-=h.x-n.x),(r.y<u.min.y||r.y>u.max.y)&&(c.y=s.y-l.y,l.y>0?c.y+=h.y-i.y:c.y-=h.y-n.y),this.panTo(this.unproject(c),e),this._enforcingBounds=!1}return this},invalidateSize:function(t){if(!this._loaded)return this;t=e({animate:!1,pan:!0},!0===t?{animate:!0}:t);var i=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var o=this.getSize(),s=i.divideBy(2).round(),r=o.divideBy(2).round(),a=s.subtract(r);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire(\"move\"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(n(this.fire,this,\"moveend\"),200)):this.fire(\"moveend\")),this.fire(\"resize\",{oldSize:i,newSize:o})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire(\"viewreset\"),this._stop()},locate:function(t){if(t=this._locateOptions=e({timeout:1e4,watch:!1},t),!(\"geolocation\"in navigator))return this._handleGeolocationError({code:0,message:\"Geolocation not supported.\"}),this;var i=n(this._handleGeolocationResponse,this),o=n(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(i,o,t):navigator.geolocation.getCurrentPosition(i,o,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var e=t.code,i=t.message||(1===e?\"permission denied\":2===e?\"position unavailable\":\"timeout\");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire(\"locationerror\",{code:e,message:\"Geolocation error: \"+i+\".\"})},_handleGeolocationResponse:function(t){var e=new R(t.coords.latitude,t.coords.longitude),i=e.toBounds(2*t.coords.accuracy),n=this._locateOptions;if(n.setView){var o=this.getBoundsZoom(i);this.setView(e,n.maxZoom?Math.min(o,n.maxZoom):o)}var s={latlng:e,bounds:i,timestamp:t.timestamp};for(var r in t.coords)\"number\"==typeof t.coords[r]&&(s[r]=t.coords[r]);this.fire(\"locationfound\",s)},addHandler:function(t,e){if(!e)return this;var i=this[t]=new e(this);return this._handlers.push(i),this.options[t]&&i.enable(),this},remove:function(){if(this._initEvents(!0),this.off(\"moveend\",this._panInsideMaxBounds),this._containerId!==this._container._leaflet_id)throw new Error(\"Map container is being reused by another instance\");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}var t;for(t in void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),ne(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(M(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire(\"unload\"),this._layers)this._layers[t].remove();for(t in this._panes)ne(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,e){var i=ie(\"div\",\"leaflet-pane\"+(t?\" leaflet-\"+t.replace(\"Pane\",\"\")+\"-pane\":\"\"),e||this._mapPane);return t&&(this._panes[t]=i),i},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new O(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,e,i){t=N(t),i=A(i||[0,0]);var n=this.getZoom()||0,o=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),a=t.getSouthEast(),h=this.getSize().subtract(i),u=I(this.project(a,n),this.project(r,n)).getSize(),l=ft?this.options.zoomSnap:1,c=h.x/u.x,d=h.y/u.y,_=e?Math.max(c,d):Math.min(c,d);return n=this.getScaleZoom(_,n),l&&(n=Math.round(n/(l/100))*(l/100),n=e?Math.ceil(n/l)*l:Math.floor(n/l)*l),Math.max(o,Math.min(s,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new Z(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,e){var i=this._getTopLeftPoint(t,e);return new B(i,i.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return\"string\"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,e){var i=this.options.crs;return e=void 0===e?this._zoom:e,i.scale(t)/i.scale(e)},getScaleZoom:function(t,e){var i=this.options.crs;e=void 0===e?this._zoom:e;var n=i.zoom(t*i.scale(e));return isNaN(n)?1/0:n},project:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.latLngToPoint(D(t),e)},unproject:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.pointToLatLng(A(t),e)},layerPointToLatLng:function(t){var e=A(t).add(this.getPixelOrigin());return this.unproject(e)},latLngToLayerPoint:function(t){return this.project(D(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(D(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(N(t))},distance:function(t,e){return this.options.crs.distance(D(t),D(e))},containerPointToLayerPoint:function(t){return A(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return A(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var e=this.containerPointToLayerPoint(A(t));return this.layerPointToLatLng(e)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(D(t)))},mouseEventToContainerPoint:function(t){return Ne(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var e=this._container=te(t);if(!e)throw new Error(\"Map container not found.\");if(e._leaflet_id)throw new Error(\"Map container is already initialized.\");Te(e,\"scroll\",this._onScroll,this),this._containerId=s(e)},_initLayout:function(){var t=this._container;this._fadeAnimated=this.options.fadeAnimation&&ft,he(t,\"leaflet-container\"+(bt?\" leaflet-touch\":\"\")+(Tt?\" leaflet-retina\":\"\")+(Q?\" leaflet-oldie\":\"\")+(ut?\" leaflet-safari\":\"\")+(this._fadeAnimated?\" leaflet-fade-anim\":\"\"));var e=ee(t,\"position\");\"absolute\"!==e&&\"relative\"!==e&&\"fixed\"!==e&&(t.style.position=\"relative\"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane(\"mapPane\",this._container),me(this._mapPane,new Z(0,0)),this.createPane(\"tilePane\"),this.createPane(\"shadowPane\"),this.createPane(\"overlayPane\"),this.createPane(\"markerPane\"),this.createPane(\"tooltipPane\"),this.createPane(\"popupPane\"),this.options.markerZoomAnimation||(he(t.markerPane,\"leaflet-zoom-hide\"),he(t.shadowPane,\"leaflet-zoom-hide\"))},_resetView:function(t,e){me(this._mapPane,new Z(0,0));var i=!this._loaded;this._loaded=!0,e=this._limitZoom(e),this.fire(\"viewprereset\");var n=this._zoom!==e;this._moveStart(n,!1)._move(t,e)._moveEnd(n),this.fire(\"viewreset\"),i&&this.fire(\"load\")},_moveStart:function(t,e){return t&&this.fire(\"zoomstart\"),e||this.fire(\"movestart\"),this},_move:function(t,e,i){void 0===e&&(e=this._zoom);var n=this._zoom!==e;return this._zoom=e,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),(n||i&&i.pinch)&&this.fire(\"zoom\",i),this.fire(\"move\",i)},_moveEnd:function(t){return t&&this.fire(\"zoomend\"),this.fire(\"moveend\")},_stop:function(){return M(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){me(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error(\"Set map center and zoom first.\")},_initEvents:function(t){this._targets={},this._targets[s(this._container)]=this;var e=t?ze:Te;e(this._container,\"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup\",this._handleDOMEvent,this),this.options.trackResize&&e(window,\"resize\",this._onResize,this),ft&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,\"moveend\",this._onMoveEnd)},_onResize:function(){M(this._resizeRequest),this._resizeRequest=T((function(){this.invalidateSize({debounceMoveend:!0})}),this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,e){for(var i,n=[],o=\"mouseout\"===e||\"mouseover\"===e,r=t.target||t.srcElement,a=!1;r;){if((i=this._targets[s(r)])&&(\"click\"===e||\"preclick\"===e)&&!t._simulated&&this._draggableMoved(i)){a=!0;break}if(i&&i.listens(e,!0)){if(o&&!Fe(r,t))break;if(n.push(i),o)break}if(r===this._container)break;r=r.parentNode}return n.length||a||o||!Fe(r,t)||(n=[this]),n},_handleDOMEvent:function(t){if(this._loaded&&!We(t)){var e=t.type;\"mousedown\"!==e&&\"keypress\"!==e&&\"keyup\"!==e&&\"keydown\"!==e||xe(t.target||t.srcElement),this._fireDOMEvent(t,e)}},_mouseEvents:[\"click\",\"dblclick\",\"mouseover\",\"mouseout\",\"contextmenu\"],_fireDOMEvent:function(t,i,n){if(\"click\"===t.type){var o=e({},t);o.type=\"preclick\",this._fireDOMEvent(o,o.type,n)}if(!t._stopped&&(n=(n||[]).concat(this._findEventTargets(t,i))).length){var s=n[0];\"contextmenu\"===i&&s.listens(i,!0)&&Ie(t);var r={originalEvent:t};if(\"keypress\"!==t.type&&\"keydown\"!==t.type&&\"keyup\"!==t.type){var a=s.getLatLng&&(!s._radius||s._radius<=10);r.containerPoint=a?this.latLngToContainerPoint(s.getLatLng()):this.mouseEventToContainerPoint(t),r.layerPoint=this.containerPointToLayerPoint(r.containerPoint),r.latlng=a?s.getLatLng():this.layerPointToLatLng(r.layerPoint)}for(var h=0;h<n.length;h++)if(n[h].fire(i,r,!0),r.originalEvent._stopped||!1===n[h].options.bubblingMouseEvents&&-1!==g(this._mouseEvents,i))return}},_draggableMoved:function(t){return(t=t.dragging&&t.dragging.enabled()?t:this).dragging&&t.dragging.moved()||this.boxZoom&&this.boxZoom.moved()},_clearHandlers:function(){for(var t=0,e=this._handlers.length;t<e;t++)this._handlers[t].disable()},whenReady:function(t,e){return this._loaded?t.call(e||this,{target:this}):this.on(\"load\",t,e),this},_getMapPanePos:function(){return fe(this._mapPane)||new Z(0,0)},_moved:function(){var t=this._getMapPanePos();return t&&!t.equals([0,0])},_getTopLeftPoint:function(t,e){return(t&&void 0!==e?this._getNewPixelOrigin(t,e):this.getPixelOrigin()).subtract(this._getMapPanePos())},_getNewPixelOrigin:function(t,e){var i=this.getSize()._divideBy(2);return this.project(t,e)._subtract(i)._add(this._getMapPanePos())._round()},_latLngToNewLayerPoint:function(t,e,i){var n=this._getNewPixelOrigin(i,e);return this.project(t,e)._subtract(n)},_latLngBoundsToNewLayerBounds:function(t,e,i){var n=this._getNewPixelOrigin(i,e);return I([this.project(t.getSouthWest(),e)._subtract(n),this.project(t.getNorthWest(),e)._subtract(n),this.project(t.getSouthEast(),e)._subtract(n),this.project(t.getNorthEast(),e)._subtract(n)])},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(t){return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())},_limitCenter:function(t,e,i){if(!i)return t;var n=this.project(t,e),o=this.getSize().divideBy(2),s=new B(n.subtract(o),n.add(o)),r=this._getBoundsOffset(s,i,e);return r.round().equals([0,0])?t:this.unproject(n.add(r),e)},_limitOffset:function(t,e){if(!e)return t;var i=this.getPixelBounds(),n=new B(i.min.add(t),i.max.add(t));return t.add(this._getBoundsOffset(n,e))},_getBoundsOffset:function(t,e,i){var n=I(this.project(e.getNorthEast(),i),this.project(e.getSouthWest(),i)),o=n.min.subtract(t.min),s=n.max.subtract(t.max);return new Z(this._rebound(o.x,-s.x),this._rebound(o.y,-s.y))},_rebound:function(t,e){return t+e>0?Math.round(t-e)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(e))},_limitZoom:function(t){var e=this.getMinZoom(),i=this.getMaxZoom(),n=ft?this.options.zoomSnap:1;return n&&(t=Math.round(t/n)*n),Math.max(e,Math.min(i,t))},_onPanTransitionStep:function(){this.fire(\"move\")},_onPanTransitionEnd:function(){ue(this._mapPane,\"leaflet-pan-anim\"),this.fire(\"moveend\")},_tryAnimatedPan:function(t,e){var i=this._getCenterOffset(t)._trunc();return!(!0!==(e&&e.animate)&&!this.getSize().contains(i)||(this.panBy(i,e),0))},_createAnimProxy:function(){var t=this._proxy=ie(\"div\",\"leaflet-proxy leaflet-zoom-animated\");this._panes.mapPane.appendChild(t),this.on(\"zoomanim\",(function(t){var e=Xt,i=this._proxy.style[e];pe(this._proxy,this.project(t.center,t.zoom),this.getZoomScale(t.zoom,1)),i===this._proxy.style[e]&&this._animatingZoom&&this._onZoomTransitionEnd()}),this),this.on(\"load moveend\",this._animMoveEnd,this),this._on(\"unload\",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){ne(this._proxy),this.off(\"load moveend\",this._animMoveEnd,this),delete this._proxy},_animMoveEnd:function(){var t=this.getCenter(),e=this.getZoom();pe(this._proxy,this.project(t,e),this.getZoomScale(e,1))},_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf(\"transform\")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName(\"leaflet-zoom-animated\").length},_tryAnimatedZoom:function(t,e,i){if(this._animatingZoom)return!0;if(i=i||{},!this._zoomAnimated||!1===i.animate||this._nothingToAnimate()||Math.abs(e-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(e),o=this._getCenterOffset(t)._divideBy(1-1/n);return!(!0!==i.animate&&!this.getSize().contains(o)||(T((function(){this._moveStart(!0,!1)._animateZoom(t,e,!0)}),this),0))},_animateZoom:function(t,e,i,o){this._mapPane&&(i&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=e,he(this._mapPane,\"leaflet-zoom-anim\")),this.fire(\"zoomanim\",{center:t,zoom:e,noUpdate:o}),setTimeout(n(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&ue(this._mapPane,\"leaflet-zoom-anim\"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom),T((function(){this._moveEnd(!0)}),this))}});var qe=C.extend({options:{position:\"topright\"},initialize:function(t){d(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var e=this._map;return e&&e.removeControl(this),this.options.position=t,e&&e.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var e=this._container=this.onAdd(t),i=this.getPosition(),n=t._controlCorners[i];return he(e,\"leaflet-control\"),-1!==i.indexOf(\"bottom\")?n.insertBefore(e,n.firstChild):n.appendChild(e),this._map.on(\"unload\",this.remove,this),this},remove:function(){return this._map?(ne(this._container),this.onRemove&&this.onRemove(this._map),this._map.off(\"unload\",this.remove,this),this._map=null,this):this},_refocusOnMap:function(t){this._map&&t&&t.screenX>0&&t.screenY>0&&this._map.getContainer().focus()}}),Ke=function(t){return new qe(t)};Ge.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.remove(),this},_initControlPos:function(){var t=this._controlCorners={},e=\"leaflet-\",i=this._controlContainer=ie(\"div\",e+\"control-container\",this._container);function n(n,o){var s=e+n+\" \"+e+o;t[n+o]=ie(\"div\",s,i)}n(\"top\",\"left\"),n(\"top\",\"right\"),n(\"bottom\",\"left\"),n(\"bottom\",\"right\")},_clearControlPos:function(){for(var t in this._controlCorners)ne(this._controlCorners[t]);ne(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var Je=qe.extend({options:{collapsed:!0,position:\"topright\",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(t,e,i,n){return i<n?-1:n<i?1:0}},initialize:function(t,e,i){for(var n in d(this,i),this._layerControlInputs=[],this._layers=[],this._lastZIndex=0,this._handlingClick=!1,t)this._addLayer(t[n],n);for(n in e)this._addLayer(e[n],n,!0)},onAdd:function(t){this._initLayout(),this._update(),this._map=t,t.on(\"zoomend\",this._checkDisabledLayers,this);for(var e=0;e<this._layers.length;e++)this._layers[e].layer.on(\"add remove\",this._onLayerChange,this);return this._container},addTo:function(t){return qe.prototype.addTo.call(this,t),this._expandIfNotCollapsed()},onRemove:function(){this._map.off(\"zoomend\",this._checkDisabledLayers,this);for(var t=0;t<this._layers.length;t++)this._layers[t].layer.off(\"add remove\",this._onLayerChange,this)},addBaseLayer:function(t,e){return this._addLayer(t,e),this._map?this._update():this},addOverlay:function(t,e){return this._addLayer(t,e,!0),this._map?this._update():this},removeLayer:function(t){t.off(\"add remove\",this._onLayerChange,this);var e=this._getLayer(s(t));return e&&this._layers.splice(this._layers.indexOf(e),1),this._map?this._update():this},expand:function(){he(this._container,\"leaflet-control-layers-expanded\"),this._section.style.height=null;var t=this._map.getSize().y-(this._container.offsetTop+50);return t<this._section.clientHeight?(he(this._section,\"leaflet-control-layers-scrollbar\"),this._section.style.height=t+\"px\"):ue(this._section,\"leaflet-control-layers-scrollbar\"),this._checkDisabledLayers(),this},collapse:function(){return ue(this._container,\"leaflet-control-layers-expanded\"),this},_initLayout:function(){var t=\"leaflet-control-layers\",e=this._container=ie(\"div\",t),i=this.options.collapsed;e.setAttribute(\"aria-haspopup\",!0),Be(e),Ae(e);var n=this._section=ie(\"section\",t+\"-list\");i&&(this._map.on(\"click\",this.collapse,this),it||Te(e,{mouseenter:this.expand,mouseleave:this.collapse},this));var o=this._layersLink=ie(\"a\",t+\"-toggle\",e);o.href=\"#\",o.title=\"Layers\",bt?(Te(o,\"click\",Oe),Te(o,\"click\",this.expand,this)):Te(o,\"focus\",this.expand,this),i||this.expand(),this._baseLayersList=ie(\"div\",t+\"-base\",n),this._separator=ie(\"div\",t+\"-separator\",n),this._overlaysList=ie(\"div\",t+\"-overlays\",n),e.appendChild(n)},_getLayer:function(t){for(var e=0;e<this._layers.length;e++)if(this._layers[e]&&s(this._layers[e].layer)===t)return this._layers[e]},_addLayer:function(t,e,i){this._map&&t.on(\"add remove\",this._onLayerChange,this),this._layers.push({layer:t,name:e,overlay:i}),this.options.sortLayers&&this._layers.sort(n((function(t,e){return this.options.sortFunction(t.layer,e.layer,t.name,e.name)}),this)),this.options.autoZIndex&&t.setZIndex&&(this._lastZIndex++,t.setZIndex(this._lastZIndex)),this._expandIfNotCollapsed()},_update:function(){if(!this._container)return this;oe(this._baseLayersList),oe(this._overlaysList),this._layerControlInputs=[];var t,e,i,n,o=0;for(i=0;i<this._layers.length;i++)n=this._layers[i],this._addItem(n),e=e||n.overlay,t=t||!n.overlay,o+=n.overlay?0:1;return this.options.hideSingleBase&&(t=t&&o>1,this._baseLayersList.style.display=t?\"\":\"none\"),this._separator.style.display=e&&t?\"\":\"none\",this},_onLayerChange:function(t){this._handlingClick||this._update();var e=this._getLayer(s(t.target)),i=e.overlay?\"add\"===t.type?\"overlayadd\":\"overlayremove\":\"add\"===t.type?\"baselayerchange\":null;i&&this._map.fire(i,e)},_createRadioElement:function(t,e){var i='<input type=\"radio\" class=\"leaflet-control-layers-selector\" name=\"'+t+'\"'+(e?' checked=\"checked\"':\"\")+\"/>\",n=document.createElement(\"div\");return n.innerHTML=i,n.firstChild},_addItem:function(t){var e,i=document.createElement(\"label\"),n=this._map.hasLayer(t.layer);t.overlay?((e=document.createElement(\"input\")).type=\"checkbox\",e.className=\"leaflet-control-layers-selector\",e.defaultChecked=n):e=this._createRadioElement(\"leaflet-base-layers_\"+s(this),n),this._layerControlInputs.push(e),e.layerId=s(t.layer),Te(e,\"click\",this._onInputClick,this);var o=document.createElement(\"span\");o.innerHTML=\" \"+t.name;var r=document.createElement(\"div\");return i.appendChild(r),r.appendChild(e),r.appendChild(o),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(i),this._checkDisabledLayers(),i},_onInputClick:function(){var t,e,i=this._layerControlInputs,n=[],o=[];this._handlingClick=!0;for(var s=i.length-1;s>=0;s--)t=i[s],e=this._getLayer(t.layerId).layer,t.checked?n.push(e):t.checked||o.push(e);for(s=0;s<o.length;s++)this._map.hasLayer(o[s])&&this._map.removeLayer(o[s]);for(s=0;s<n.length;s++)this._map.hasLayer(n[s])||this._map.addLayer(n[s]);this._handlingClick=!1,this._refocusOnMap()},_checkDisabledLayers:function(){for(var t,e,i=this._layerControlInputs,n=this._map.getZoom(),o=i.length-1;o>=0;o--)t=i[o],e=this._getLayer(t.layerId).layer,t.disabled=void 0!==e.options.minZoom&&n<e.options.minZoom||void 0!==e.options.maxZoom&&n>e.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expand:function(){return this.expand()},_collapse:function(){return this.collapse()}}),Ye=qe.extend({options:{position:\"topleft\",zoomInText:\"+\",zoomInTitle:\"Zoom in\",zoomOutText:\"&#x2212;\",zoomOutTitle:\"Zoom out\"},onAdd:function(t){var e=\"leaflet-control-zoom\",i=ie(\"div\",e+\" leaflet-bar\"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,e+\"-in\",i,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,e+\"-out\",i,this._zoomOut),this._updateDisabled(),t.on(\"zoomend zoomlevelschange\",this._updateDisabled,this),i},onRemove:function(t){t.off(\"zoomend zoomlevelschange\",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoom<this._map.getMaxZoom()&&this._map.zoomIn(this._map.options.zoomDelta*(t.shiftKey?3:1))},_zoomOut:function(t){!this._disabled&&this._map._zoom>this._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,e,i,n,o){var s=ie(\"a\",i,n);return s.innerHTML=t,s.href=\"#\",s.title=e,s.setAttribute(\"role\",\"button\"),s.setAttribute(\"aria-label\",e),Be(s),Te(s,\"click\",Oe),Te(s,\"click\",o,this),Te(s,\"click\",this._refocusOnMap,this),s},_updateDisabled:function(){var t=this._map,e=\"leaflet-disabled\";ue(this._zoomInButton,e),ue(this._zoomOutButton,e),(this._disabled||t._zoom===t.getMinZoom())&&he(this._zoomOutButton,e),(this._disabled||t._zoom===t.getMaxZoom())&&he(this._zoomInButton,e)}});Ge.mergeOptions({zoomControl:!0}),Ge.addInitHook((function(){this.options.zoomControl&&(this.zoomControl=new Ye,this.addControl(this.zoomControl))}));var Xe=qe.extend({options:{position:\"bottomleft\",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var e=\"leaflet-control-scale\",i=ie(\"div\",e),n=this.options;return this._addScales(n,e+\"-line\",i),t.on(n.updateWhenIdle?\"moveend\":\"move\",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?\"moveend\":\"move\",this._update,this)},_addScales:function(t,e,i){t.metric&&(this._mScale=ie(\"div\",e,i)),t.imperial&&(this._iScale=ie(\"div\",e,i))},_update:function(){var t=this._map,e=t.getSize().y/2,i=t.distance(t.containerPointToLatLng([0,e]),t.containerPointToLatLng([this.options.maxWidth,e]));this._updateScales(i)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var e=this._getRoundNum(t),i=e<1e3?e+\" m\":e/1e3+\" km\";this._updateScale(this._mScale,i,e/t)},_updateImperial:function(t){var e,i,n,o=3.2808399*t;o>5280?(e=o/5280,i=this._getRoundNum(e),this._updateScale(this._iScale,i+\" mi\",i/e)):(n=this._getRoundNum(o),this._updateScale(this._iScale,n+\" ft\",n/o))},_updateScale:function(t,e,i){t.style.width=Math.round(this.options.maxWidth*i)+\"px\",t.innerHTML=e},_getRoundNum:function(t){var e=Math.pow(10,(Math.floor(t)+\"\").length-1),i=t/e;return e*(i>=10?10:i>=5?5:i>=3?3:i>=2?2:1)}}),$e=qe.extend({options:{position:\"bottomright\",prefix:'<a href=\"https://leafletjs.com\" title=\"A JS library for interactive maps\">Leaflet</a>'},initialize:function(t){d(this,t),this._attributions={}},onAdd:function(t){for(var e in t.attributionControl=this,this._container=ie(\"div\",\"leaflet-control-attribution\"),Be(this._container),t._layers)t._layers[e].getAttribution&&this.addAttribution(t._layers[e].getAttribution());return this._update(),this._container},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):this},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):this},_update:function(){if(this._map){var t=[];for(var e in this._attributions)this._attributions[e]&&t.push(e);var i=[];this.options.prefix&&i.push(this.options.prefix),t.length&&i.push(t.join(\", \")),this._container.innerHTML=i.join(\" | \")}}});Ge.mergeOptions({attributionControl:!0}),Ge.addInitHook((function(){this.options.attributionControl&&(new $e).addTo(this)}));qe.Layers=Je,qe.Zoom=Ye,qe.Scale=Xe,qe.Attribution=$e,Ke.layers=function(t,e,i){return new Je(t,e,i)},Ke.zoom=function(t){return new Ye(t)},Ke.scale=function(t){return new Xe(t)},Ke.attribution=function(t){return new $e(t)};var Qe=C.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled||(this._enabled=!0,this.addHooks()),this},disable:function(){return this._enabled?(this._enabled=!1,this.removeHooks(),this):this},enabled:function(){return!!this._enabled}});Qe.addTo=function(t,e){return t.addHandler(e,this),this};var ti,ei={Events:S},ii=bt?\"touchstart mousedown\":\"mousedown\",ni={mousedown:\"mouseup\",touchstart:\"touchend\",pointerdown:\"touchend\",MSPointerDown:\"touchend\"},oi={mousedown:\"mousemove\",touchstart:\"touchmove\",pointerdown:\"touchmove\",MSPointerDown:\"touchmove\"},si=k.extend({options:{clickTolerance:3},initialize:function(t,e,i,n){d(this,n),this._element=t,this._dragStartTarget=e||t,this._preventOutline=i},enable:function(){this._enabled||(Te(this._dragStartTarget,ii,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(si._dragging===this&&this.finishDrag(),ze(this._dragStartTarget,ii,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){if(!t._simulated&&this._enabled&&(this._moved=!1,!ae(this._element,\"leaflet-zoom-anim\")&&!(si._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||(si._dragging=this,this._preventOutline&&xe(this._element),ve(),Gt(),this._moving)))){this.fire(\"down\");var e=t.touches?t.touches[0]:t,i=be(this._element);this._startPoint=new Z(e.clientX,e.clientY),this._parentScale=Pe(i),Te(document,oi[t.type],this._onMove,this),Te(document,ni[t.type],this._onUp,this)}},_onMove:function(t){if(!t._simulated&&this._enabled)if(t.touches&&t.touches.length>1)this._moved=!0;else{var e=t.touches&&1===t.touches.length?t.touches[0]:t,i=new Z(e.clientX,e.clientY)._subtract(this._startPoint);(i.x||i.y)&&(Math.abs(i.x)+Math.abs(i.y)<this.options.clickTolerance||(i.x/=this._parentScale.x,i.y/=this._parentScale.y,Ie(t),this._moved||(this.fire(\"dragstart\"),this._moved=!0,this._startPos=fe(this._element).subtract(i),he(document.body,\"leaflet-dragging\"),this._lastTarget=t.target||t.srcElement,window.SVGElementInstance&&this._lastTarget instanceof window.SVGElementInstance&&(this._lastTarget=this._lastTarget.correspondingUseElement),he(this._lastTarget,\"leaflet-drag-target\")),this._newPos=this._startPos.add(i),this._moving=!0,M(this._animRequest),this._lastEvent=t,this._animRequest=T(this._updatePosition,this,!0)))}},_updatePosition:function(){var t={originalEvent:this._lastEvent};this.fire(\"predrag\",t),me(this._element,this._newPos),this.fire(\"drag\",t)},_onUp:function(t){!t._simulated&&this._enabled&&this.finishDrag()},finishDrag:function(){for(var t in ue(document.body,\"leaflet-dragging\"),this._lastTarget&&(ue(this._lastTarget,\"leaflet-drag-target\"),this._lastTarget=null),oi)ze(document,oi[t],this._onMove,this),ze(document,ni[t],this._onUp,this);ye(),qt(),this._moved&&this._moving&&(M(this._animRequest),this.fire(\"dragend\",{distance:this._newPos.distanceTo(this._startPos)})),this._moving=!1,si._dragging=!1}});function ri(t,e){if(!e||!t.length)return t.slice();var i=e*e;return function(t,e){var i=t.length,n=new(typeof Uint8Array!=void 0+\"\"?Uint8Array:Array)(i);n[0]=n[i-1]=1,hi(t,n,e,0,i-1);var o,s=[];for(o=0;o<i;o++)n[o]&&s.push(t[o]);return s}(t=function(t,e){for(var i=[t[0]],n=1,o=0,s=t.length;n<s;n++)di(t[n],t[o])>e&&(i.push(t[n]),o=n);return o<s-1&&i.push(t[s-1]),i}(t,i),i)}function ai(t,e,i){return Math.sqrt(_i(t,e,i,!0))}function hi(t,e,i,n,o){var s,r,a,h=0;for(r=n+1;r<=o-1;r++)(a=_i(t[r],t[n],t[o],!0))>h&&(s=r,h=a);h>i&&(e[s]=1,hi(t,e,i,n,s),hi(t,e,i,s,o))}function ui(t,e,i,n,o){var s,r,a,h=n?ti:ci(t,i),u=ci(e,i);for(ti=u;;){if(!(h|u))return[t,e];if(h&u)return!1;a=ci(r=li(t,e,s=h||u,i,o),i),s===h?(t=r,h=a):(e=r,u=a)}}function li(t,e,i,n,o){var s,r,a=e.x-t.x,h=e.y-t.y,u=n.min,l=n.max;return 8&i?(s=t.x+a*(l.y-t.y)/h,r=l.y):4&i?(s=t.x+a*(u.y-t.y)/h,r=u.y):2&i?(s=l.x,r=t.y+h*(l.x-t.x)/a):1&i&&(s=u.x,r=t.y+h*(u.x-t.x)/a),new Z(s,r,o)}function ci(t,e){var i=0;return t.x<e.min.x?i|=1:t.x>e.max.x&&(i|=2),t.y<e.min.y?i|=4:t.y>e.max.y&&(i|=8),i}function di(t,e){var i=e.x-t.x,n=e.y-t.y;return i*i+n*n}function _i(t,e,i,n){var o,s=e.x,r=e.y,a=i.x-s,h=i.y-r,u=a*a+h*h;return u>0&&((o=((t.x-s)*a+(t.y-r)*h)/u)>1?(s=i.x,r=i.y):o>0&&(s+=a*o,r+=h*o)),a=t.x-s,h=t.y-r,n?a*a+h*h:new Z(s,r)}function pi(t){return!f(t[0])||\"object\"!=typeof t[0][0]&&void 0!==t[0][0]}function mi(t){return console.warn(\"Deprecated use of _flat, please use L.LineUtil.isFlat instead.\"),pi(t)}var fi={simplify:ri,pointToSegmentDistance:ai,closestPointOnSegment:function(t,e,i){return _i(t,e,i)},clipSegment:ui,_getEdgeIntersection:li,_getBitCode:ci,_sqClosestPointOnSegment:_i,isFlat:pi,_flat:mi};function gi(t,e,i){var n,o,s,r,a,h,u,l,c,d=[1,4,2,8];for(o=0,u=t.length;o<u;o++)t[o]._code=ci(t[o],e);for(r=0;r<4;r++){for(l=d[r],n=[],o=0,s=(u=t.length)-1;o<u;s=o++)a=t[o],h=t[s],a._code&l?h._code&l||((c=li(h,a,l,e,i))._code=ci(c,e),n.push(c)):(h._code&l&&((c=li(h,a,l,e,i))._code=ci(c,e),n.push(c)),n.push(a));t=n}return t}var vi={clipPolygon:gi},yi={project:function(t){return new Z(t.lng,t.lat)},unproject:function(t){return new R(t.y,t.x)},bounds:new B([-180,-90],[180,90])},xi={R:6378137,R_MINOR:6356752.314245179,bounds:new B([-20037508.34279,-15496570.73972],[20037508.34279,18764656.23138]),project:function(t){var e=Math.PI/180,i=this.R,n=t.lat*e,o=this.R_MINOR/i,s=Math.sqrt(1-o*o),r=s*Math.sin(n),a=Math.tan(Math.PI/4-n/2)/Math.pow((1-r)/(1+r),s/2);return n=-i*Math.log(Math.max(a,1e-10)),new Z(t.lng*e*i,n)},unproject:function(t){for(var e,i=180/Math.PI,n=this.R,o=this.R_MINOR/n,s=Math.sqrt(1-o*o),r=Math.exp(-t.y/n),a=Math.PI/2-2*Math.atan(r),h=0,u=.1;h<15&&Math.abs(u)>1e-7;h++)e=s*Math.sin(a),e=Math.pow((1-e)/(1+e),s/2),a+=u=Math.PI/2-2*Math.atan(r*e)-a;return new R(a*i,t.x*i/n)}},wi={LonLat:yi,Mercator:xi,SphericalMercator:U},bi=e({},W,{code:\"EPSG:3395\",projection:xi,transformation:function(){var t=.5/(Math.PI*xi.R);return G(t,.5,-t,.5)}()}),Pi=e({},W,{code:\"EPSG:4326\",projection:yi,transformation:G(1/180,1,-1/180,.5)}),Li=e({},H,{projection:yi,transformation:G(1,0,-1,0),scale:function(t){return Math.pow(2,t)},zoom:function(t){return Math.log(t)/Math.LN2},distance:function(t,e){var i=e.lng-t.lng,n=e.lat-t.lat;return Math.sqrt(i*i+n*n)},infinite:!0});H.Earth=W,H.EPSG3395=bi,H.EPSG3857=q,H.EPSG900913=K,H.EPSG4326=Pi,H.Simple=Li;var Ti=k.extend({options:{pane:\"overlayPane\",attribution:null,bubblingMouseEvents:!0},addTo:function(t){return t.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(t){return t&&t.removeLayer(this),this},getPane:function(t){return this._map.getPane(t?this.options[t]||t:this.options.pane)},addInteractiveTarget:function(t){return this._map._targets[s(t)]=this,this},removeInteractiveTarget:function(t){return delete this._map._targets[s(t)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(t){var e=t.target;if(e.hasLayer(this)){if(this._map=e,this._zoomAnimated=e._zoomAnimated,this.getEvents){var i=this.getEvents();e.on(i,this),this.once(\"remove\",(function(){e.off(i,this)}),this)}this.onAdd(e),this.getAttribution&&e.attributionControl&&e.attributionControl.addAttribution(this.getAttribution()),this.fire(\"add\"),e.fire(\"layeradd\",{layer:this})}}});Ge.include({addLayer:function(t){if(!t._layerAdd)throw new Error(\"The provided object is not a Layer.\");var e=s(t);return this._layers[e]||(this._layers[e]=t,t._mapToAdd=this,t.beforeAdd&&t.beforeAdd(this),this.whenReady(t._layerAdd,t)),this},removeLayer:function(t){var e=s(t);return this._layers[e]?(this._loaded&&t.onRemove(this),t.getAttribution&&this.attributionControl&&this.attributionControl.removeAttribution(t.getAttribution()),delete this._layers[e],this._loaded&&(this.fire(\"layerremove\",{layer:t}),t.fire(\"remove\")),t._map=t._mapToAdd=null,this):this},hasLayer:function(t){return!!t&&s(t)in this._layers},eachLayer:function(t,e){for(var i in this._layers)t.call(e,this._layers[i]);return this},_addLayers:function(t){for(var e=0,i=(t=t?f(t)?t:[t]:[]).length;e<i;e++)this.addLayer(t[e])},_addZoomLimit:function(t){!isNaN(t.options.maxZoom)&&isNaN(t.options.minZoom)||(this._zoomBoundLayers[s(t)]=t,this._updateZoomLevels())},_removeZoomLimit:function(t){var e=s(t);this._zoomBoundLayers[e]&&(delete this._zoomBoundLayers[e],this._updateZoomLevels())},_updateZoomLevels:function(){var t=1/0,e=-1/0,i=this._getZoomSpan();for(var n in this._zoomBoundLayers){var o=this._zoomBoundLayers[n].options;t=void 0===o.minZoom?t:Math.min(t,o.minZoom),e=void 0===o.maxZoom?e:Math.max(e,o.maxZoom)}this._layersMaxZoom=e===-1/0?void 0:e,this._layersMinZoom=t===1/0?void 0:t,i!==this._getZoomSpan()&&this.fire(\"zoomlevelschange\"),void 0===this.options.maxZoom&&this._layersMaxZoom&&this.getZoom()>this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()<this._layersMinZoom&&this.setZoom(this._layersMinZoom)}});var Mi=Ti.extend({initialize:function(t,e){var i,n;if(d(this,e),this._layers={},t)for(i=0,n=t.length;i<n;i++)this.addLayer(t[i])},addLayer:function(t){var e=this.getLayerId(t);return this._layers[e]=t,this._map&&this._map.addLayer(t),this},removeLayer:function(t){var e=t in this._layers?t:this.getLayerId(t);return this._map&&this._layers[e]&&this._map.removeLayer(this._layers[e]),delete this._layers[e],this},hasLayer:function(t){return!!t&&(\"number\"==typeof t?t:this.getLayerId(t))in this._layers},clearLayers:function(){return this.eachLayer(this.removeLayer,this)},invoke:function(t){var e,i,n=Array.prototype.slice.call(arguments,1);for(e in this._layers)(i=this._layers[e])[t]&&i[t].apply(i,n);return this},onAdd:function(t){this.eachLayer(t.addLayer,t)},onRemove:function(t){this.eachLayer(t.removeLayer,t)},eachLayer:function(t,e){for(var i in this._layers)t.call(e,this._layers[i]);return this},getLayer:function(t){return this._layers[t]},getLayers:function(){var t=[];return this.eachLayer(t.push,t),t},setZIndex:function(t){return this.invoke(\"setZIndex\",t)},getLayerId:function(t){return s(t)}}),zi=Mi.extend({addLayer:function(t){return this.hasLayer(t)?this:(t.addEventParent(this),Mi.prototype.addLayer.call(this,t),this.fire(\"layeradd\",{layer:t}))},removeLayer:function(t){return this.hasLayer(t)?(t in this._layers&&(t=this._layers[t]),t.removeEventParent(this),Mi.prototype.removeLayer.call(this,t),this.fire(\"layerremove\",{layer:t})):this},setStyle:function(t){return this.invoke(\"setStyle\",t)},bringToFront:function(){return this.invoke(\"bringToFront\")},bringToBack:function(){return this.invoke(\"bringToBack\")},getBounds:function(){var t=new O;for(var e in this._layers){var i=this._layers[e];t.extend(i.getBounds?i.getBounds():i.getLatLng())}return t}}),Ci=C.extend({options:{popupAnchor:[0,0],tooltipAnchor:[0,0]},initialize:function(t){d(this,t)},createIcon:function(t){return this._createIcon(\"icon\",t)},createShadow:function(t){return this._createIcon(\"shadow\",t)},_createIcon:function(t,e){var i=this._getIconUrl(t);if(!i){if(\"icon\"===t)throw new Error(\"iconUrl not set in Icon options (see the docs).\");return null}var n=this._createImg(i,e&&\"IMG\"===e.tagName?e:null);return this._setIconStyles(n,t),n},_setIconStyles:function(t,e){var i=this.options,n=i[e+\"Size\"];\"number\"==typeof n&&(n=[n,n]);var o=A(n),s=A(\"shadow\"===e&&i.shadowAnchor||i.iconAnchor||o&&o.divideBy(2,!0));t.className=\"leaflet-marker-\"+e+\" \"+(i.className||\"\"),s&&(t.style.marginLeft=-s.x+\"px\",t.style.marginTop=-s.y+\"px\"),o&&(t.style.width=o.x+\"px\",t.style.height=o.y+\"px\")},_createImg:function(t,e){return(e=e||document.createElement(\"img\")).src=t,e},_getIconUrl:function(t){return Tt&&this.options[t+\"RetinaUrl\"]||this.options[t+\"Url\"]}});var Si=Ci.extend({options:{iconUrl:\"marker-icon.png\",iconRetinaUrl:\"marker-icon-2x.png\",shadowUrl:\"marker-shadow.png\",iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],tooltipAnchor:[16,-28],shadowSize:[41,41]},_getIconUrl:function(t){return Si.imagePath||(Si.imagePath=this._detectIconPath()),(this.options.imagePath||Si.imagePath)+Ci.prototype._getIconUrl.call(this,t)},_detectIconPath:function(){var t=ie(\"div\",\"leaflet-default-icon-path\",document.body),e=ee(t,\"background-image\")||ee(t,\"backgroundImage\");return document.body.removeChild(t),null===e||0!==e.indexOf(\"url\")?\"\":e.replace(/^url\\([\"']?/,\"\").replace(/marker-icon\\.png[\"']?\\)$/,\"\")}}),ki=Qe.extend({initialize:function(t){this._marker=t},addHooks:function(){var t=this._marker._icon;this._draggable||(this._draggable=new si(t,t,!0)),this._draggable.on({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).enable(),he(t,\"leaflet-marker-draggable\")},removeHooks:function(){this._draggable.off({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).disable(),this._marker._icon&&ue(this._marker._icon,\"leaflet-marker-draggable\")},moved:function(){return this._draggable&&this._draggable._moved},_adjustPan:function(t){var e=this._marker,i=e._map,n=this._marker.options.autoPanSpeed,o=this._marker.options.autoPanPadding,s=fe(e._icon),r=i.getPixelBounds(),a=i.getPixelOrigin(),h=I(r.min._subtract(a).add(o),r.max._subtract(a).subtract(o));if(!h.contains(s)){var u=A((Math.max(h.max.x,s.x)-h.max.x)/(r.max.x-h.max.x)-(Math.min(h.min.x,s.x)-h.min.x)/(r.min.x-h.min.x),(Math.max(h.max.y,s.y)-h.max.y)/(r.max.y-h.max.y)-(Math.min(h.min.y,s.y)-h.min.y)/(r.min.y-h.min.y)).multiplyBy(n);i.panBy(u,{animate:!1}),this._draggable._newPos._add(u),this._draggable._startPos._add(u),me(e._icon,this._draggable._newPos),this._onDrag(t),this._panRequest=T(this._adjustPan.bind(this,t))}},_onDragStart:function(){this._oldLatLng=this._marker.getLatLng(),this._marker.closePopup&&this._marker.closePopup(),this._marker.fire(\"movestart\").fire(\"dragstart\")},_onPreDrag:function(t){this._marker.options.autoPan&&(M(this._panRequest),this._panRequest=T(this._adjustPan.bind(this,t)))},_onDrag:function(t){var e=this._marker,i=e._shadow,n=fe(e._icon),o=e._map.layerPointToLatLng(n);i&&me(i,n),e._latlng=o,t.latlng=o,t.oldLatLng=this._oldLatLng,e.fire(\"move\",t).fire(\"drag\",t)},_onDragEnd:function(t){M(this._panRequest),delete this._oldLatLng,this._marker.fire(\"moveend\").fire(\"dragend\",t)}}),Zi=Ti.extend({options:{icon:new Si,interactive:!0,keyboard:!0,title:\"\",alt:\"\",zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250,pane:\"markerPane\",shadowPane:\"shadowPane\",bubblingMouseEvents:!1,draggable:!1,autoPan:!1,autoPanPadding:[50,50],autoPanSpeed:10},initialize:function(t,e){d(this,e),this._latlng=D(t)},onAdd:function(t){this._zoomAnimated=this._zoomAnimated&&t.options.markerZoomAnimation,this._zoomAnimated&&t.on(\"zoomanim\",this._animateZoom,this),this._initIcon(),this.update()},onRemove:function(t){this.dragging&&this.dragging.enabled()&&(this.options.draggable=!0,this.dragging.removeHooks()),delete this.dragging,this._zoomAnimated&&t.off(\"zoomanim\",this._animateZoom,this),this._removeIcon(),this._removeShadow()},getEvents:function(){return{zoom:this.update,viewreset:this.update}},getLatLng:function(){return this._latlng},setLatLng:function(t){var e=this._latlng;return this._latlng=D(t),this.update(),this.fire(\"move\",{oldLatLng:e,latlng:this._latlng})},setZIndexOffset:function(t){return this.options.zIndexOffset=t,this.update()},getIcon:function(){return this.options.icon},setIcon:function(t){return this.options.icon=t,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup,this._popup.options),this},getElement:function(){return this._icon},update:function(){if(this._icon&&this._map){var t=this._map.latLngToLayerPoint(this._latlng).round();this._setPos(t)}return this},_initIcon:function(){var t=this.options,e=\"leaflet-zoom-\"+(this._zoomAnimated?\"animated\":\"hide\"),i=t.icon.createIcon(this._icon),n=!1;i!==this._icon&&(this._icon&&this._removeIcon(),n=!0,t.title&&(i.title=t.title),\"IMG\"===i.tagName&&(i.alt=t.alt||\"\")),he(i,e),t.keyboard&&(i.tabIndex=\"0\"),this._icon=i,t.riseOnHover&&this.on({mouseover:this._bringToFront,mouseout:this._resetZIndex});var o=t.icon.createShadow(this._shadow),s=!1;o!==this._shadow&&(this._removeShadow(),s=!0),o&&(he(o,e),o.alt=\"\"),this._shadow=o,t.opacity<1&&this._updateOpacity(),n&&this.getPane().appendChild(this._icon),this._initInteraction(),o&&s&&this.getPane(t.shadowPane).appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&this.off({mouseover:this._bringToFront,mouseout:this._resetZIndex}),ne(this._icon),this.removeInteractiveTarget(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&ne(this._shadow),this._shadow=null},_setPos:function(t){this._icon&&me(this._icon,t),this._shadow&&me(this._shadow,t),this._zIndex=t.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(t){this._icon&&(this._icon.style.zIndex=this._zIndex+t)},_animateZoom:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center).round();this._setPos(e)},_initInteraction:function(){if(this.options.interactive&&(he(this._icon,\"leaflet-interactive\"),this.addInteractiveTarget(this._icon),ki)){var t=this.options.draggable;this.dragging&&(t=this.dragging.enabled(),this.dragging.disable()),this.dragging=new ki(this),t&&this.dragging.enable()}},setOpacity:function(t){return this.options.opacity=t,this._map&&this._updateOpacity(),this},_updateOpacity:function(){var t=this.options.opacity;this._icon&&de(this._icon,t),this._shadow&&de(this._shadow,t)},_bringToFront:function(){this._updateZIndex(this.options.riseOffset)},_resetZIndex:function(){this._updateZIndex(0)},_getPopupAnchor:function(){return this.options.icon.options.popupAnchor},_getTooltipAnchor:function(){return this.options.icon.options.tooltipAnchor}});var Ei=Ti.extend({options:{stroke:!0,color:\"#3388ff\",weight:3,opacity:1,lineCap:\"round\",lineJoin:\"round\",dashArray:null,dashOffset:null,fill:!1,fillColor:null,fillOpacity:.2,fillRule:\"evenodd\",interactive:!0,bubblingMouseEvents:!0},beforeAdd:function(t){this._renderer=t.getRenderer(this)},onAdd:function(){this._renderer._initPath(this),this._reset(),this._renderer._addPath(this)},onRemove:function(){this._renderer._removePath(this)},redraw:function(){return this._map&&this._renderer._updatePath(this),this},setStyle:function(t){return d(this,t),this._renderer&&(this._renderer._updateStyle(this),this.options.stroke&&t&&Object.prototype.hasOwnProperty.call(t,\"weight\")&&this._updateBounds()),this},bringToFront:function(){return this._renderer&&this._renderer._bringToFront(this),this},bringToBack:function(){return this._renderer&&this._renderer._bringToBack(this),this},getElement:function(){return this._path},_reset:function(){this._project(),this._update()},_clickTolerance:function(){return(this.options.stroke?this.options.weight/2:0)+this._renderer.options.tolerance}}),Ai=Ei.extend({options:{fill:!0,radius:10},initialize:function(t,e){d(this,e),this._latlng=D(t),this._radius=this.options.radius},setLatLng:function(t){var e=this._latlng;return this._latlng=D(t),this.redraw(),this.fire(\"move\",{oldLatLng:e,latlng:this._latlng})},getLatLng:function(){return this._latlng},setRadius:function(t){return this.options.radius=this._radius=t,this.redraw()},getRadius:function(){return this._radius},setStyle:function(t){var e=t&&t.radius||this._radius;return Ei.prototype.setStyle.call(this,t),this.setRadius(e),this},_project:function(){this._point=this._map.latLngToLayerPoint(this._latlng),this._updateBounds()},_updateBounds:function(){var t=this._radius,e=this._radiusY||t,i=this._clickTolerance(),n=[t+i,e+i];this._pxBounds=new B(this._point.subtract(n),this._point.add(n))},_update:function(){this._map&&this._updatePath()},_updatePath:function(){this._renderer._updateCircle(this)},_empty:function(){return this._radius&&!this._renderer._bounds.intersects(this._pxBounds)},_containsPoint:function(t){return t.distanceTo(this._point)<=this._radius+this._clickTolerance()}});var Bi=Ai.extend({initialize:function(t,i,n){if(\"number\"==typeof i&&(i=e({},n,{radius:i})),d(this,i),this._latlng=D(t),isNaN(this.options.radius))throw new Error(\"Circle radius cannot be NaN\");this._mRadius=this.options.radius},setRadius:function(t){return this._mRadius=t,this.redraw()},getRadius:function(){return this._mRadius},getBounds:function(){var t=[this._radius,this._radiusY||this._radius];return new O(this._map.layerPointToLatLng(this._point.subtract(t)),this._map.layerPointToLatLng(this._point.add(t)))},setStyle:Ei.prototype.setStyle,_project:function(){var t=this._latlng.lng,e=this._latlng.lat,i=this._map,n=i.options.crs;if(n.distance===W.distance){var o=Math.PI/180,s=this._mRadius/W.R/o,r=i.project([e+s,t]),a=i.project([e-s,t]),h=r.add(a).divideBy(2),u=i.unproject(h).lat,l=Math.acos((Math.cos(s*o)-Math.sin(e*o)*Math.sin(u*o))/(Math.cos(e*o)*Math.cos(u*o)))/o;(isNaN(l)||0===l)&&(l=s/Math.cos(Math.PI/180*e)),this._point=h.subtract(i.getPixelOrigin()),this._radius=isNaN(l)?0:h.x-i.project([u,t-l]).x,this._radiusY=h.y-r.y}else{var c=n.unproject(n.project(this._latlng).subtract([this._mRadius,0]));this._point=i.latLngToLayerPoint(this._latlng),this._radius=this._point.x-i.latLngToLayerPoint(c).x}this._updateBounds()}});var Ii=Ei.extend({options:{smoothFactor:1,noClip:!1},initialize:function(t,e){d(this,e),this._setLatLngs(t)},getLatLngs:function(){return this._latlngs},setLatLngs:function(t){return this._setLatLngs(t),this.redraw()},isEmpty:function(){return!this._latlngs.length},closestLayerPoint:function(t){for(var e,i,n=1/0,o=null,s=_i,r=0,a=this._parts.length;r<a;r++)for(var h=this._parts[r],u=1,l=h.length;u<l;u++){var c=s(t,e=h[u-1],i=h[u],!0);c<n&&(n=c,o=s(t,e,i))}return o&&(o.distance=Math.sqrt(n)),o},getCenter:function(){if(!this._map)throw new Error(\"Must add layer to map before using getCenter()\");var t,e,i,n,o,s,r,a=this._rings[0],h=a.length;if(!h)return null;for(t=0,e=0;t<h-1;t++)e+=a[t].distanceTo(a[t+1])/2;if(0===e)return this._map.layerPointToLatLng(a[0]);for(t=0,n=0;t<h-1;t++)if(o=a[t],s=a[t+1],(n+=i=o.distanceTo(s))>e)return r=(n-e)/i,this._map.layerPointToLatLng([s.x-r*(s.x-o.x),s.y-r*(s.y-o.y)])},getBounds:function(){return this._bounds},addLatLng:function(t,e){return e=e||this._defaultShape(),t=D(t),e.push(t),this._bounds.extend(t),this.redraw()},_setLatLngs:function(t){this._bounds=new O,this._latlngs=this._convertLatLngs(t)},_defaultShape:function(){return pi(this._latlngs)?this._latlngs:this._latlngs[0]},_convertLatLngs:function(t){for(var e=[],i=pi(t),n=0,o=t.length;n<o;n++)i?(e[n]=D(t[n]),this._bounds.extend(e[n])):e[n]=this._convertLatLngs(t[n]);return e},_project:function(){var t=new B;this._rings=[],this._projectLatlngs(this._latlngs,this._rings,t),this._bounds.isValid()&&t.isValid()&&(this._rawPxBounds=t,this._updateBounds())},_updateBounds:function(){var t=this._clickTolerance(),e=new Z(t,t);this._pxBounds=new B([this._rawPxBounds.min.subtract(e),this._rawPxBounds.max.add(e)])},_projectLatlngs:function(t,e,i){var n,o,s=t[0]instanceof R,r=t.length;if(s){for(o=[],n=0;n<r;n++)o[n]=this._map.latLngToLayerPoint(t[n]),i.extend(o[n]);e.push(o)}else for(n=0;n<r;n++)this._projectLatlngs(t[n],e,i)},_clipPoints:function(){var t=this._renderer._bounds;if(this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else{var e,i,n,o,s,r,a,h=this._parts;for(e=0,n=0,o=this._rings.length;e<o;e++)for(i=0,s=(a=this._rings[e]).length;i<s-1;i++)(r=ui(a[i],a[i+1],t,i,!0))&&(h[n]=h[n]||[],h[n].push(r[0]),r[1]===a[i+1]&&i!==s-2||(h[n].push(r[1]),n++))}},_simplifyPoints:function(){for(var t=this._parts,e=this.options.smoothFactor,i=0,n=t.length;i<n;i++)t[i]=ri(t[i],e)},_update:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),this._updatePath())},_updatePath:function(){this._renderer._updatePoly(this)},_containsPoint:function(t,e){var i,n,o,s,r,a,h=this._clickTolerance();if(!this._pxBounds||!this._pxBounds.contains(t))return!1;for(i=0,s=this._parts.length;i<s;i++)for(n=0,o=(r=(a=this._parts[i]).length)-1;n<r;o=n++)if((e||0!==n)&&ai(t,a[o],a[n])<=h)return!0;return!1}});Ii._flat=mi;var Oi=Ii.extend({options:{fill:!0},isEmpty:function(){return!this._latlngs.length||!this._latlngs[0].length},getCenter:function(){if(!this._map)throw new Error(\"Must add layer to map before using getCenter()\");var t,e,i,n,o,s,r,a,h,u=this._rings[0],l=u.length;if(!l)return null;for(s=r=a=0,t=0,e=l-1;t<l;e=t++)i=u[t],n=u[e],o=i.y*n.x-n.y*i.x,r+=(i.x+n.x)*o,a+=(i.y+n.y)*o,s+=3*o;return h=0===s?u[0]:[r/s,a/s],this._map.layerPointToLatLng(h)},_convertLatLngs:function(t){var e=Ii.prototype._convertLatLngs.call(this,t),i=e.length;return i>=2&&e[0]instanceof R&&e[0].equals(e[i-1])&&e.pop(),e},_setLatLngs:function(t){Ii.prototype._setLatLngs.call(this,t),pi(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return pi(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var t=this._renderer._bounds,e=this.options.weight,i=new Z(e,e);if(t=new B(t.min.subtract(i),t.max.add(i)),this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else for(var n,o=0,s=this._rings.length;o<s;o++)(n=gi(this._rings[o],t,!0)).length&&this._parts.push(n)},_updatePath:function(){this._renderer._updatePoly(this,!0)},_containsPoint:function(t){var e,i,n,o,s,r,a,h,u=!1;if(!this._pxBounds||!this._pxBounds.contains(t))return!1;for(o=0,a=this._parts.length;o<a;o++)for(s=0,r=(h=(e=this._parts[o]).length)-1;s<h;r=s++)i=e[s],n=e[r],i.y>t.y!=n.y>t.y&&t.x<(n.x-i.x)*(t.y-i.y)/(n.y-i.y)+i.x&&(u=!u);return u||Ii.prototype._containsPoint.call(this,t,!0)}});var Ni=zi.extend({initialize:function(t,e){d(this,e),this._layers={},t&&this.addData(t)},addData:function(t){var e,i,n,o=f(t)?t:t.features;if(o){for(e=0,i=o.length;e<i;e++)((n=o[e]).geometries||n.geometry||n.features||n.coordinates)&&this.addData(n);return this}var s=this.options;if(s.filter&&!s.filter(t))return this;var r=Ri(t,s);return r?(r.feature=Vi(t),r.defaultOptions=r.options,this.resetStyle(r),s.onEachFeature&&s.onEachFeature(t,r),this.addLayer(r)):this},resetStyle:function(t){return void 0===t?this.eachLayer(this.resetStyle,this):(t.options=e({},t.defaultOptions),this._setLayerStyle(t,this.options.style),this)},setStyle:function(t){return this.eachLayer((function(e){this._setLayerStyle(e,t)}),this)},_setLayerStyle:function(t,e){t.setStyle&&(\"function\"==typeof e&&(e=e(t.feature)),t.setStyle(e))}});function Ri(t,e){var i,n,o,s,r=\"Feature\"===t.type?t.geometry:t,a=r?r.coordinates:null,h=[],u=e&&e.pointToLayer,l=e&&e.coordsToLatLng||ji;if(!a&&!r)return null;switch(r.type){case\"Point\":return Di(u,t,i=l(a),e);case\"MultiPoint\":for(o=0,s=a.length;o<s;o++)i=l(a[o]),h.push(Di(u,t,i,e));return new zi(h);case\"LineString\":case\"MultiLineString\":return n=Hi(a,\"LineString\"===r.type?0:1,l),new Ii(n,e);case\"Polygon\":case\"MultiPolygon\":return n=Hi(a,\"Polygon\"===r.type?1:2,l),new Oi(n,e);case\"GeometryCollection\":for(o=0,s=r.geometries.length;o<s;o++){var c=Ri({geometry:r.geometries[o],type:\"Feature\",properties:t.properties},e);c&&h.push(c)}return new zi(h);default:throw new Error(\"Invalid GeoJSON object.\")}}function Di(t,e,i,n){return t?t(e,i):new Zi(i,n&&n.markersInheritOptions&&n)}function ji(t){return new R(t[1],t[0],t[2])}function Hi(t,e,i){for(var n,o=[],s=0,r=t.length;s<r;s++)n=e?Hi(t[s],e-1,i):(i||ji)(t[s]),o.push(n);return o}function Wi(t,e){return e=\"number\"==typeof e?e:6,void 0!==t.alt?[u(t.lng,e),u(t.lat,e),u(t.alt,e)]:[u(t.lng,e),u(t.lat,e)]}function Fi(t,e,i,n){for(var o=[],s=0,r=t.length;s<r;s++)o.push(e?Fi(t[s],e-1,i,n):Wi(t[s],n));return!e&&i&&o.push(o[0]),o}function Ui(t,i){return t.feature?e({},t.feature,{geometry:i}):Vi(i)}function Vi(t){return\"Feature\"===t.type||\"FeatureCollection\"===t.type?t:{type:\"Feature\",properties:{},geometry:t}}var Gi={toGeoJSON:function(t){return Ui(this,{type:\"Point\",coordinates:Wi(this.getLatLng(),t)})}};function qi(t,e){return new Ni(t,e)}Zi.include(Gi),Bi.include(Gi),Ai.include(Gi),Ii.include({toGeoJSON:function(t){var e=!pi(this._latlngs);return Ui(this,{type:(e?\"Multi\":\"\")+\"LineString\",coordinates:Fi(this._latlngs,e?1:0,!1,t)})}}),Oi.include({toGeoJSON:function(t){var e=!pi(this._latlngs),i=e&&!pi(this._latlngs[0]),n=Fi(this._latlngs,i?2:e?1:0,!0,t);return e||(n=[n]),Ui(this,{type:(i?\"Multi\":\"\")+\"Polygon\",coordinates:n})}}),Mi.include({toMultiPoint:function(t){var e=[];return this.eachLayer((function(i){e.push(i.toGeoJSON(t).geometry.coordinates)})),Ui(this,{type:\"MultiPoint\",coordinates:e})},toGeoJSON:function(t){var e=this.feature&&this.feature.geometry&&this.feature.geometry.type;if(\"MultiPoint\"===e)return this.toMultiPoint(t);var i=\"GeometryCollection\"===e,n=[];return this.eachLayer((function(e){if(e.toGeoJSON){var o=e.toGeoJSON(t);if(i)n.push(o.geometry);else{var s=Vi(o);\"FeatureCollection\"===s.type?n.push.apply(n,s.features):n.push(s)}}})),i?Ui(this,{geometries:n,type:\"GeometryCollection\"}):{type:\"FeatureCollection\",features:n}}});var Ki=qi,Ji=Ti.extend({options:{opacity:1,alt:\"\",interactive:!1,crossOrigin:!1,errorOverlayUrl:\"\",zIndex:1,className:\"\"},initialize:function(t,e,i){this._url=t,this._bounds=N(e),d(this,i)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(he(this._image,\"leaflet-interactive\"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){ne(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(t){return this.options.opacity=t,this._image&&this._updateOpacity(),this},setStyle:function(t){return t.opacity&&this.setOpacity(t.opacity),this},bringToFront:function(){return this._map&&se(this._image),this},bringToBack:function(){return this._map&&re(this._image),this},setUrl:function(t){return this._url=t,this._image&&(this._image.src=t),this},setBounds:function(t){return this._bounds=N(t),this._map&&this._reset(),this},getEvents:function(){var t={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var t=\"IMG\"===this._url.tagName,e=this._image=t?this._url:ie(\"img\");he(e,\"leaflet-image-layer\"),this._zoomAnimated&&he(e,\"leaflet-zoom-animated\"),this.options.className&&he(e,this.options.className),e.onselectstart=h,e.onmousemove=h,e.onload=n(this.fire,this,\"load\"),e.onerror=n(this._overlayOnError,this,\"error\"),(this.options.crossOrigin||\"\"===this.options.crossOrigin)&&(e.crossOrigin=!0===this.options.crossOrigin?\"\":this.options.crossOrigin),this.options.zIndex&&this._updateZIndex(),t?this._url=e.src:(e.src=this._url,e.alt=this.options.alt)},_animateZoom:function(t){var e=this._map.getZoomScale(t.zoom),i=this._map._latLngBoundsToNewLayerBounds(this._bounds,t.zoom,t.center).min;pe(this._image,i,e)},_reset:function(){var t=this._image,e=new B(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),i=e.getSize();me(t,e.min),t.style.width=i.x+\"px\",t.style.height=i.y+\"px\"},_updateOpacity:function(){de(this._image,this.options.opacity)},_updateZIndex:function(){this._image&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._image.style.zIndex=this.options.zIndex)},_overlayOnError:function(){this.fire(\"error\");var t=this.options.errorOverlayUrl;t&&this._url!==t&&(this._url=t,this._image.src=t)}}),Yi=Ji.extend({options:{autoplay:!0,loop:!0,keepAspectRatio:!0,muted:!1},_initImage:function(){var t=\"VIDEO\"===this._url.tagName,e=this._image=t?this._url:ie(\"video\");if(he(e,\"leaflet-image-layer\"),this._zoomAnimated&&he(e,\"leaflet-zoom-animated\"),this.options.className&&he(e,this.options.className),e.onselectstart=h,e.onmousemove=h,e.onloadeddata=n(this.fire,this,\"load\"),t){for(var i=e.getElementsByTagName(\"source\"),o=[],s=0;s<i.length;s++)o.push(i[s].src);this._url=i.length>0?o:[e.src]}else{f(this._url)||(this._url=[this._url]),!this.options.keepAspectRatio&&Object.prototype.hasOwnProperty.call(e.style,\"objectFit\")&&(e.style.objectFit=\"fill\"),e.autoplay=!!this.options.autoplay,e.loop=!!this.options.loop,e.muted=!!this.options.muted;for(var r=0;r<this._url.length;r++){var a=ie(\"source\");a.src=this._url[r],e.appendChild(a)}}}});var Xi=Ji.extend({_initImage:function(){var t=this._image=this._url;he(t,\"leaflet-image-layer\"),this._zoomAnimated&&he(t,\"leaflet-zoom-animated\"),this.options.className&&he(t,this.options.className),t.onselectstart=h,t.onmousemove=h}});var $i=Ti.extend({options:{offset:[0,7],className:\"\",pane:\"popupPane\"},initialize:function(t,e){d(this,t),this._source=e},onAdd:function(t){this._zoomAnimated=t._zoomAnimated,this._container||this._initLayout(),t._fadeAnimated&&de(this._container,0),clearTimeout(this._removeTimeout),this.getPane().appendChild(this._container),this.update(),t._fadeAnimated&&de(this._container,1),this.bringToFront()},onRemove:function(t){t._fadeAnimated?(de(this._container,0),this._removeTimeout=setTimeout(n(ne,void 0,this._container),200)):ne(this._container)},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=D(t),this._map&&(this._updatePosition(),this._adjustPan()),this},getContent:function(){return this._content},setContent:function(t){return this._content=t,this.update(),this},getElement:function(){return this._container},update:function(){this._map&&(this._container.style.visibility=\"hidden\",this._updateContent(),this._updateLayout(),this._updatePosition(),this._container.style.visibility=\"\",this._adjustPan())},getEvents:function(){var t={zoom:this._updatePosition,viewreset:this._updatePosition};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},isOpen:function(){return!!this._map&&this._map.hasLayer(this)},bringToFront:function(){return this._map&&se(this._container),this},bringToBack:function(){return this._map&&re(this._container),this},_prepareOpen:function(t,e,i){if(e instanceof Ti||(i=e,e=t),e instanceof zi)for(var n in t._layers){e=t._layers[n];break}if(!i)if(e.getCenter)i=e.getCenter();else{if(!e.getLatLng)throw new Error(\"Unable to get source layer LatLng.\");i=e.getLatLng()}return this._source=e,this.update(),i},_updateContent:function(){if(this._content){var t=this._contentNode,e=\"function\"==typeof this._content?this._content(this._source||this):this._content;if(\"string\"==typeof e)t.innerHTML=e;else{for(;t.hasChildNodes();)t.removeChild(t.firstChild);t.appendChild(e)}this.fire(\"contentupdate\")}},_updatePosition:function(){if(this._map){var t=this._map.latLngToLayerPoint(this._latlng),e=A(this.options.offset),i=this._getAnchor();this._zoomAnimated?me(this._container,t.add(i)):e=e.add(t).add(i);var n=this._containerBottom=-e.y,o=this._containerLeft=-Math.round(this._containerWidth/2)+e.x;this._container.style.bottom=n+\"px\",this._container.style.left=o+\"px\"}},_getAnchor:function(){return[0,0]}}),Qi=$i.extend({options:{maxWidth:300,minWidth:50,maxHeight:null,autoPan:!0,autoPanPaddingTopLeft:null,autoPanPaddingBottomRight:null,autoPanPadding:[5,5],keepInView:!1,closeButton:!0,autoClose:!0,closeOnEscapeKey:!0,className:\"\"},openOn:function(t){return t.openPopup(this),this},onAdd:function(t){$i.prototype.onAdd.call(this,t),t.fire(\"popupopen\",{popup:this}),this._source&&(this._source.fire(\"popupopen\",{popup:this},!0),this._source instanceof Ei||this._source.on(\"preclick\",Ee))},onRemove:function(t){$i.prototype.onRemove.call(this,t),t.fire(\"popupclose\",{popup:this}),this._source&&(this._source.fire(\"popupclose\",{popup:this},!0),this._source instanceof Ei||this._source.off(\"preclick\",Ee))},getEvents:function(){var t=$i.prototype.getEvents.call(this);return(void 0!==this.options.closeOnClick?this.options.closeOnClick:this._map.options.closePopupOnClick)&&(t.preclick=this._close),this.options.keepInView&&(t.moveend=this._adjustPan),t},_close:function(){this._map&&this._map.closePopup(this)},_initLayout:function(){var t=\"leaflet-popup\",e=this._container=ie(\"div\",t+\" \"+(this.options.className||\"\")+\" leaflet-zoom-animated\"),i=this._wrapper=ie(\"div\",t+\"-content-wrapper\",e);if(this._contentNode=ie(\"div\",t+\"-content\",i),Be(e),Ae(this._contentNode),Te(e,\"contextmenu\",Ee),this._tipContainer=ie(\"div\",t+\"-tip-container\",e),this._tip=ie(\"div\",t+\"-tip\",this._tipContainer),this.options.closeButton){var n=this._closeButton=ie(\"a\",t+\"-close-button\",e);n.href=\"#close\",n.innerHTML=\"&#215;\",Te(n,\"click\",this._onCloseButtonClick,this)}},_updateLayout:function(){var t=this._contentNode,e=t.style;e.width=\"\",e.whiteSpace=\"nowrap\";var i=t.offsetWidth;i=Math.min(i,this.options.maxWidth),i=Math.max(i,this.options.minWidth),e.width=i+1+\"px\",e.whiteSpace=\"\",e.height=\"\";var n=t.offsetHeight,o=this.options.maxHeight,s=\"leaflet-popup-scrolled\";o&&n>o?(e.height=o+\"px\",he(t,s)):ue(t,s),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),i=this._getAnchor();me(this._container,e.add(i))},_adjustPan:function(){if(this.options.autoPan){this._map._panAnim&&this._map._panAnim.stop();var t=this._map,e=parseInt(ee(this._container,\"marginBottom\"),10)||0,i=this._container.offsetHeight+e,n=this._containerWidth,o=new Z(this._containerLeft,-i-this._containerBottom);o._add(fe(this._container));var s=t.layerPointToContainerPoint(o),r=A(this.options.autoPanPadding),a=A(this.options.autoPanPaddingTopLeft||r),h=A(this.options.autoPanPaddingBottomRight||r),u=t.getSize(),l=0,c=0;s.x+n+h.x>u.x&&(l=s.x+n-u.x+h.x),s.x-l-a.x<0&&(l=s.x-a.x),s.y+i+h.y>u.y&&(c=s.y+i-u.y+h.y),s.y-c-a.y<0&&(c=s.y-a.y),(l||c)&&t.fire(\"autopanstart\").panBy([l,c])}},_onCloseButtonClick:function(t){this._close(),Oe(t)},_getAnchor:function(){return A(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}});Ge.mergeOptions({closePopupOnClick:!0}),Ge.include({openPopup:function(t,e,i){return t instanceof Qi||(t=new Qi(i).setContent(t)),e&&t.setLatLng(e),this.hasLayer(t)?this:(this._popup&&this._popup.options.autoClose&&this.closePopup(),this._popup=t,this.addLayer(t))},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&this.removeLayer(t),this}}),Ti.include({bindPopup:function(t,e){return t instanceof Qi?(d(t,e),this._popup=t,t._source=this):(this._popup&&!e||(this._popup=new Qi(e,this)),this._popup.setContent(t)),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t,e){return this._popup&&this._map&&(e=this._popup._prepareOpen(this,t,e),this._map.openPopup(this._popup,e)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(t){return this._popup&&(this._popup._map?this.closePopup():this.openPopup(t)),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var e=t.layer||t.target;this._popup&&this._map&&(Oe(t),e instanceof Ei?this.openPopup(t.layer||t.target,t.latlng):this._map.hasLayer(this._popup)&&this._popup._source===e?this.closePopup():this.openPopup(e,t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}});var tn=$i.extend({options:{pane:\"tooltipPane\",offset:[0,0],direction:\"auto\",permanent:!1,sticky:!1,interactive:!1,opacity:.9},onAdd:function(t){$i.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire(\"tooltipopen\",{tooltip:this}),this._source&&this._source.fire(\"tooltipopen\",{tooltip:this},!0)},onRemove:function(t){$i.prototype.onRemove.call(this,t),t.fire(\"tooltipclose\",{tooltip:this}),this._source&&this._source.fire(\"tooltipclose\",{tooltip:this},!0)},getEvents:function(){var t=$i.prototype.getEvents.call(this);return bt&&!this.options.permanent&&(t.preclick=this._close),t},_close:function(){this._map&&this._map.closeTooltip(this)},_initLayout:function(){var t=\"leaflet-tooltip \"+(this.options.className||\"\")+\" leaflet-zoom-\"+(this._zoomAnimated?\"animated\":\"hide\");this._contentNode=this._container=ie(\"div\",t)},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var e,i,n=this._map,o=this._container,s=n.latLngToContainerPoint(n.getCenter()),r=n.layerPointToContainerPoint(t),a=this.options.direction,h=o.offsetWidth,u=o.offsetHeight,l=A(this.options.offset),c=this._getAnchor();\"top\"===a?(e=h/2,i=u):\"bottom\"===a?(e=h/2,i=0):\"center\"===a?(e=h/2,i=u/2):\"right\"===a?(e=0,i=u/2):\"left\"===a?(e=h,i=u/2):r.x<s.x?(a=\"right\",e=0,i=u/2):(a=\"left\",e=h+2*(l.x+c.x),i=u/2),t=t.subtract(A(e,i,!0)).add(l).add(c),ue(o,\"leaflet-tooltip-right\"),ue(o,\"leaflet-tooltip-left\"),ue(o,\"leaflet-tooltip-top\"),ue(o,\"leaflet-tooltip-bottom\"),he(o,\"leaflet-tooltip-\"+a),me(o,t)},_updatePosition:function(){var t=this._map.latLngToLayerPoint(this._latlng);this._setPosition(t)},setOpacity:function(t){this.options.opacity=t,this._container&&de(this._container,t)},_animateZoom:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center);this._setPosition(e)},_getAnchor:function(){return A(this._source&&this._source._getTooltipAnchor&&!this.options.sticky?this._source._getTooltipAnchor():[0,0])}});Ge.include({openTooltip:function(t,e,i){return t instanceof tn||(t=new tn(i).setContent(t)),e&&t.setLatLng(e),this.hasLayer(t)?this:this.addLayer(t)},closeTooltip:function(t){return t&&this.removeLayer(t),this}}),Ti.include({bindTooltip:function(t,e){return t instanceof tn?(d(t,e),this._tooltip=t,t._source=this):(this._tooltip&&!e||(this._tooltip=new tn(e,this)),this._tooltip.setContent(t)),this._initTooltipInteractions(),this._tooltip.options.permanent&&this._map&&this._map.hasLayer(this)&&this.openTooltip(),this},unbindTooltip:function(){return this._tooltip&&(this._initTooltipInteractions(!0),this.closeTooltip(),this._tooltip=null),this},_initTooltipInteractions:function(t){if(t||!this._tooltipHandlersAdded){var e=t?\"off\":\"on\",i={remove:this.closeTooltip,move:this._moveTooltip};this._tooltip.options.permanent?i.add=this._openTooltip:(i.mouseover=this._openTooltip,i.mouseout=this.closeTooltip,this._tooltip.options.sticky&&(i.mousemove=this._moveTooltip),bt&&(i.click=this._openTooltip)),this[e](i),this._tooltipHandlersAdded=!t}},openTooltip:function(t,e){return this._tooltip&&this._map&&(e=this._tooltip._prepareOpen(this,t,e),this._map.openTooltip(this._tooltip,e),this._tooltip.options.interactive&&this._tooltip._container&&(he(this._tooltip._container,\"leaflet-clickable\"),this.addInteractiveTarget(this._tooltip._container))),this},closeTooltip:function(){return this._tooltip&&(this._tooltip._close(),this._tooltip.options.interactive&&this._tooltip._container&&(ue(this._tooltip._container,\"leaflet-clickable\"),this.removeInteractiveTarget(this._tooltip._container))),this},toggleTooltip:function(t){return this._tooltip&&(this._tooltip._map?this.closeTooltip():this.openTooltip(t)),this},isTooltipOpen:function(){return this._tooltip.isOpen()},setTooltipContent:function(t){return this._tooltip&&this._tooltip.setContent(t),this},getTooltip:function(){return this._tooltip},_openTooltip:function(t){var e=t.layer||t.target;this._tooltip&&this._map&&this.openTooltip(e,this._tooltip.options.sticky?t.latlng:void 0)},_moveTooltip:function(t){var e,i,n=t.latlng;this._tooltip.options.sticky&&t.originalEvent&&(e=this._map.mouseEventToContainerPoint(t.originalEvent),i=this._map.containerPointToLayerPoint(e),n=this._map.layerPointToLatLng(i)),this._tooltip.setLatLng(n)}});var en=Ci.extend({options:{iconSize:[12,12],html:!1,bgPos:null,className:\"leaflet-div-icon\"},createIcon:function(t){var e=t&&\"DIV\"===t.tagName?t:document.createElement(\"div\"),i=this.options;if(i.html instanceof Element?(oe(e),e.appendChild(i.html)):e.innerHTML=!1!==i.html?i.html:\"\",i.bgPos){var n=A(i.bgPos);e.style.backgroundPosition=-n.x+\"px \"+-n.y+\"px\"}return this._setIconStyles(e,\"icon\"),e},createShadow:function(){return null}});Ci.Default=Si;var nn=Ti.extend({options:{tileSize:256,opacity:1,updateWhenIdle:gt,updateWhenZooming:!0,updateInterval:200,zIndex:1,bounds:null,minZoom:0,maxZoom:void 0,maxNativeZoom:void 0,minNativeZoom:void 0,noWrap:!1,pane:\"tilePane\",className:\"\",keepBuffer:2},initialize:function(t){d(this,t)},onAdd:function(){this._initContainer(),this._levels={},this._tiles={},this._resetView(),this._update()},beforeAdd:function(t){t._addZoomLimit(this)},onRemove:function(t){this._removeAllTiles(),ne(this._container),t._removeZoomLimit(this),this._container=null,this._tileZoom=void 0},bringToFront:function(){return this._map&&(se(this._container),this._setAutoZIndex(Math.max)),this},bringToBack:function(){return this._map&&(re(this._container),this._setAutoZIndex(Math.min)),this},getContainer:function(){return this._container},setOpacity:function(t){return this.options.opacity=t,this._updateOpacity(),this},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},isLoading:function(){return this._loading},redraw:function(){return this._map&&(this._removeAllTiles(),this._update()),this},getEvents:function(){var t={viewprereset:this._invalidateAll,viewreset:this._resetView,zoom:this._resetView,moveend:this._onMoveEnd};return this.options.updateWhenIdle||(this._onMove||(this._onMove=r(this._onMoveEnd,this.options.updateInterval,this)),t.move=this._onMove),this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},createTile:function(){return document.createElement(\"div\")},getTileSize:function(){var t=this.options.tileSize;return t instanceof Z?t:new Z(t,t)},_updateZIndex:function(){this._container&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(t){for(var e,i=this.getPane().children,n=-t(-1/0,1/0),o=0,s=i.length;o<s;o++)e=i[o].style.zIndex,i[o]!==this._container&&e&&(n=t(n,+e));isFinite(n)&&(this.options.zIndex=n+t(-1,1),this._updateZIndex())},_updateOpacity:function(){if(this._map&&!Q){de(this._container,this.options.opacity);var t=+new Date,e=!1,i=!1;for(var n in this._tiles){var o=this._tiles[n];if(o.current&&o.loaded){var s=Math.min(1,(t-o.loaded)/200);de(o.el,s),s<1?e=!0:(o.active?i=!0:this._onOpaqueTile(o),o.active=!0)}}i&&!this._noPrune&&this._pruneTiles(),e&&(M(this._fadeFrame),this._fadeFrame=T(this._updateOpacity,this))}},_onOpaqueTile:h,_initContainer:function(){this._container||(this._container=ie(\"div\",\"leaflet-layer \"+(this.options.className||\"\")),this._updateZIndex(),this.options.opacity<1&&this._updateOpacity(),this.getPane().appendChild(this._container))},_updateLevels:function(){var t=this._tileZoom,e=this.options.maxZoom;if(void 0!==t){for(var i in this._levels)i=Number(i),this._levels[i].el.children.length||i===t?(this._levels[i].el.style.zIndex=e-Math.abs(t-i),this._onUpdateLevel(i)):(ne(this._levels[i].el),this._removeTilesAtZoom(i),this._onRemoveLevel(i),delete this._levels[i]);var n=this._levels[t],o=this._map;return n||((n=this._levels[t]={}).el=ie(\"div\",\"leaflet-tile-container leaflet-zoom-animated\",this._container),n.el.style.zIndex=e,n.origin=o.project(o.unproject(o.getPixelOrigin()),t).round(),n.zoom=t,this._setZoomTransform(n,o.getCenter(),o.getZoom()),n.el.offsetWidth,this._onCreateLevel(n)),this._level=n,n}},_onUpdateLevel:h,_onRemoveLevel:h,_onCreateLevel:h,_pruneTiles:function(){if(this._map){var t,e,i=this._map.getZoom();if(i>this.options.maxZoom||i<this.options.minZoom)this._removeAllTiles();else{for(t in this._tiles)(e=this._tiles[t]).retain=e.current;for(t in this._tiles)if((e=this._tiles[t]).current&&!e.active){var n=e.coords;this._retainParent(n.x,n.y,n.z,n.z-5)||this._retainChildren(n.x,n.y,n.z,n.z+2)}for(t in this._tiles)this._tiles[t].retain||this._removeTile(t)}}},_removeTilesAtZoom:function(t){for(var e in this._tiles)this._tiles[e].coords.z===t&&this._removeTile(e)},_removeAllTiles:function(){for(var t in this._tiles)this._removeTile(t)},_invalidateAll:function(){for(var t in this._levels)ne(this._levels[t].el),this._onRemoveLevel(Number(t)),delete this._levels[t];this._removeAllTiles(),this._tileZoom=void 0},_retainParent:function(t,e,i,n){var o=Math.floor(t/2),s=Math.floor(e/2),r=i-1,a=new Z(+o,+s);a.z=+r;var h=this._tileCoordsToKey(a),u=this._tiles[h];return u&&u.active?(u.retain=!0,!0):(u&&u.loaded&&(u.retain=!0),r>n&&this._retainParent(o,s,r,n))},_retainChildren:function(t,e,i,n){for(var o=2*t;o<2*t+2;o++)for(var s=2*e;s<2*e+2;s++){var r=new Z(o,s);r.z=i+1;var a=this._tileCoordsToKey(r),h=this._tiles[a];h&&h.active?h.retain=!0:(h&&h.loaded&&(h.retain=!0),i+1<n&&this._retainChildren(o,s,i+1,n))}},_resetView:function(t){var e=t&&(t.pinch||t.flyTo);this._setView(this._map.getCenter(),this._map.getZoom(),e,e)},_animateZoom:function(t){this._setView(t.center,t.zoom,!0,t.noUpdate)},_clampZoom:function(t){var e=this.options;return void 0!==e.minNativeZoom&&t<e.minNativeZoom?e.minNativeZoom:void 0!==e.maxNativeZoom&&e.maxNativeZoom<t?e.maxNativeZoom:t},_setView:function(t,e,i,n){var o=Math.round(e);o=void 0!==this.options.maxZoom&&o>this.options.maxZoom||void 0!==this.options.minZoom&&o<this.options.minZoom?void 0:this._clampZoom(o);var s=this.options.updateWhenZooming&&o!==this._tileZoom;n&&!s||(this._tileZoom=o,this._abortLoading&&this._abortLoading(),this._updateLevels(),this._resetGrid(),void 0!==o&&this._update(t),i||this._pruneTiles(),this._noPrune=!!i),this._setZoomTransforms(t,e)},_setZoomTransforms:function(t,e){for(var i in this._levels)this._setZoomTransform(this._levels[i],t,e)},_setZoomTransform:function(t,e,i){var n=this._map.getZoomScale(i,t.zoom),o=t.origin.multiplyBy(n).subtract(this._map._getNewPixelOrigin(e,i)).round();ft?pe(t.el,o,n):me(t.el,o)},_resetGrid:function(){var t=this._map,e=t.options.crs,i=this._tileSize=this.getTileSize(),n=this._tileZoom,o=this._map.getPixelWorldBounds(this._tileZoom);o&&(this._globalTileRange=this._pxBoundsToTileRange(o)),this._wrapX=e.wrapLng&&!this.options.noWrap&&[Math.floor(t.project([0,e.wrapLng[0]],n).x/i.x),Math.ceil(t.project([0,e.wrapLng[1]],n).x/i.y)],this._wrapY=e.wrapLat&&!this.options.noWrap&&[Math.floor(t.project([e.wrapLat[0],0],n).y/i.x),Math.ceil(t.project([e.wrapLat[1],0],n).y/i.y)]},_onMoveEnd:function(){this._map&&!this._map._animatingZoom&&this._update()},_getTiledPixelBounds:function(t){var e=this._map,i=e._animatingZoom?Math.max(e._animateToZoom,e.getZoom()):e.getZoom(),n=e.getZoomScale(i,this._tileZoom),o=e.project(t,this._tileZoom).floor(),s=e.getSize().divideBy(2*n);return new B(o.subtract(s),o.add(s))},_update:function(t){var e=this._map;if(e){var i=this._clampZoom(e.getZoom());if(void 0===t&&(t=e.getCenter()),void 0!==this._tileZoom){var n=this._getTiledPixelBounds(t),o=this._pxBoundsToTileRange(n),s=o.getCenter(),r=[],a=this.options.keepBuffer,h=new B(o.getBottomLeft().subtract([a,-a]),o.getTopRight().add([a,-a]));if(!(isFinite(o.min.x)&&isFinite(o.min.y)&&isFinite(o.max.x)&&isFinite(o.max.y)))throw new Error(\"Attempted to load an infinite number of tiles\");for(var u in this._tiles){var l=this._tiles[u].coords;l.z===this._tileZoom&&h.contains(new Z(l.x,l.y))||(this._tiles[u].current=!1)}if(Math.abs(i-this._tileZoom)>1)this._setView(t,i);else{for(var c=o.min.y;c<=o.max.y;c++)for(var d=o.min.x;d<=o.max.x;d++){var _=new Z(d,c);if(_.z=this._tileZoom,this._isValidTile(_)){var p=this._tiles[this._tileCoordsToKey(_)];p?p.current=!0:r.push(_)}}if(r.sort((function(t,e){return t.distanceTo(s)-e.distanceTo(s)})),0!==r.length){this._loading||(this._loading=!0,this.fire(\"loading\"));var m=document.createDocumentFragment();for(d=0;d<r.length;d++)this._addTile(r[d],m);this._level.el.appendChild(m)}}}}},_isValidTile:function(t){var e=this._map.options.crs;if(!e.infinite){var i=this._globalTileRange;if(!e.wrapLng&&(t.x<i.min.x||t.x>i.max.x)||!e.wrapLat&&(t.y<i.min.y||t.y>i.max.y))return!1}if(!this.options.bounds)return!0;var n=this._tileCoordsToBounds(t);return N(this.options.bounds).overlaps(n)},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var e=this._map,i=this.getTileSize(),n=t.scaleBy(i),o=n.add(i);return[e.unproject(n,t.z),e.unproject(o,t.z)]},_tileCoordsToBounds:function(t){var e=this._tileCoordsToNwSe(t),i=new O(e[0],e[1]);return this.options.noWrap||(i=this._map.wrapLatLngBounds(i)),i},_tileCoordsToKey:function(t){return t.x+\":\"+t.y+\":\"+t.z},_keyToTileCoords:function(t){var e=t.split(\":\"),i=new Z(+e[0],+e[1]);return i.z=+e[2],i},_removeTile:function(t){var e=this._tiles[t];e&&(ne(e.el),delete this._tiles[t],this.fire(\"tileunload\",{tile:e.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){he(t,\"leaflet-tile\");var e=this.getTileSize();t.style.width=e.x+\"px\",t.style.height=e.y+\"px\",t.onselectstart=h,t.onmousemove=h,Q&&this.options.opacity<1&&de(t,this.options.opacity),it&&!nt&&(t.style.WebkitBackfaceVisibility=\"hidden\")},_addTile:function(t,e){var i=this._getTilePos(t),o=this._tileCoordsToKey(t),s=this.createTile(this._wrapCoords(t),n(this._tileReady,this,t));this._initTile(s),this.createTile.length<2&&T(n(this._tileReady,this,t,null,s)),me(s,i),this._tiles[o]={el:s,coords:t,current:!0},e.appendChild(s),this.fire(\"tileloadstart\",{tile:s,coords:t})},_tileReady:function(t,e,i){e&&this.fire(\"tileerror\",{error:e,tile:i,coords:t});var o=this._tileCoordsToKey(t);(i=this._tiles[o])&&(i.loaded=+new Date,this._map._fadeAnimated?(de(i.el,0),M(this._fadeFrame),this._fadeFrame=T(this._updateOpacity,this)):(i.active=!0,this._pruneTiles()),e||(he(i.el,\"leaflet-tile-loaded\"),this.fire(\"tileload\",{tile:i.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire(\"load\"),Q||!this._map._fadeAnimated?T(this._pruneTiles,this):setTimeout(n(this._pruneTiles,this),250)))},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var e=new Z(this._wrapX?a(t.x,this._wrapX):t.x,this._wrapY?a(t.y,this._wrapY):t.y);return e.z=t.z,e},_pxBoundsToTileRange:function(t){var e=this.getTileSize();return new B(t.min.unscaleBy(e).floor(),t.max.unscaleBy(e).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}});var on=nn.extend({options:{minZoom:0,maxZoom:18,subdomains:\"abc\",errorTileUrl:\"\",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1},initialize:function(t,e){this._url=t,(e=d(this,e)).detectRetina&&Tt&&e.maxZoom>0&&(e.tileSize=Math.floor(e.tileSize/2),e.zoomReverse?(e.zoomOffset--,e.minZoom++):(e.zoomOffset++,e.maxZoom--),e.minZoom=Math.max(0,e.minZoom)),\"string\"==typeof e.subdomains&&(e.subdomains=e.subdomains.split(\"\")),it||this.on(\"tileunload\",this._onTileRemove)},setUrl:function(t,e){return this._url===t&&void 0===e&&(e=!0),this._url=t,e||this.redraw(),this},createTile:function(t,e){var i=document.createElement(\"img\");return Te(i,\"load\",n(this._tileOnLoad,this,e,i)),Te(i,\"error\",n(this._tileOnError,this,e,i)),(this.options.crossOrigin||\"\"===this.options.crossOrigin)&&(i.crossOrigin=!0===this.options.crossOrigin?\"\":this.options.crossOrigin),i.alt=\"\",i.setAttribute(\"role\",\"presentation\"),i.src=this.getTileUrl(t),i},getTileUrl:function(t){var i={r:Tt?\"@2x\":\"\",s:this._getSubdomain(t),x:t.x,y:t.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var n=this._globalTileRange.max.y-t.y;this.options.tms&&(i.y=n),i[\"-y\"]=n}return m(this._url,e(i,this.options))},_tileOnLoad:function(t,e){Q?setTimeout(n(t,this,null,e),0):t(null,e)},_tileOnError:function(t,e,i){var n=this.options.errorTileUrl;n&&e.getAttribute(\"src\")!==n&&(e.src=n),t(i,e)},_onTileRemove:function(t){t.tile.onload=null},_getZoomForUrl:function(){var t=this._tileZoom,e=this.options.maxZoom;return this.options.zoomReverse&&(t=e-t),t+this.options.zoomOffset},_getSubdomain:function(t){var e=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[e]},_abortLoading:function(){var t,e;for(t in this._tiles)this._tiles[t].coords.z!==this._tileZoom&&((e=this._tiles[t].el).onload=h,e.onerror=h,e.complete||(e.src=v,ne(e),delete this._tiles[t]))},_removeTile:function(t){var e=this._tiles[t];if(e)return st||e.el.setAttribute(\"src\",v),nn.prototype._removeTile.call(this,t)},_tileReady:function(t,e,i){if(this._map&&(!i||i.getAttribute(\"src\")!==v))return nn.prototype._tileReady.call(this,t,e,i)}});function sn(t,e){return new on(t,e)}var rn=on.extend({defaultWmsParams:{service:\"WMS\",request:\"GetMap\",layers:\"\",styles:\"\",format:\"image/jpeg\",transparent:!1,version:\"1.1.1\"},options:{crs:null,uppercase:!1},initialize:function(t,i){this._url=t;var n=e({},this.defaultWmsParams);for(var o in i)o in this.options||(n[o]=i[o]);var s=(i=d(this,i)).detectRetina&&Tt?2:1,r=this.getTileSize();n.width=r.x*s,n.height=r.y*s,this.wmsParams=n},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var e=this._wmsVersion>=1.3?\"crs\":\"srs\";this.wmsParams[e]=this._crs.code,on.prototype.onAdd.call(this,t)},getTileUrl:function(t){var e=this._tileCoordsToNwSe(t),i=this._crs,n=I(i.project(e[0]),i.project(e[1])),o=n.min,s=n.max,r=(this._wmsVersion>=1.3&&this._crs===Pi?[o.y,o.x,s.y,s.x]:[o.x,o.y,s.x,s.y]).join(\",\"),a=on.prototype.getTileUrl.call(this,t);return a+_(this.wmsParams,a,this.options.uppercase)+(this.options.uppercase?\"&BBOX=\":\"&bbox=\")+r},setParams:function(t,i){return e(this.wmsParams,t),i||this.redraw(),this}});on.WMS=rn,sn.wms=function(t,e){return new rn(t,e)};var an=Ti.extend({options:{padding:.1,tolerance:0},initialize:function(t){d(this,t),s(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),this._zoomAnimated&&he(this._container,\"leaflet-zoom-animated\")),this.getPane().appendChild(this._container),this._update(),this.on(\"update\",this._updatePaths,this)},onRemove:function(){this.off(\"update\",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var t={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(t.zoomanim=this._onAnimZoom),t},_onAnimZoom:function(t){this._updateTransform(t.center,t.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(t,e){var i=this._map.getZoomScale(e,this._zoom),n=fe(this._container),o=this._map.getSize().multiplyBy(.5+this.options.padding),s=this._map.project(this._center,e),r=this._map.project(t,e).subtract(s),a=o.multiplyBy(-i).add(n).add(o).subtract(r);ft?pe(this._container,a,i):me(this._container,a)},_reset:function(){for(var t in this._update(),this._updateTransform(this._center,this._zoom),this._layers)this._layers[t]._reset()},_onZoomEnd:function(){for(var t in this._layers)this._layers[t]._project()},_updatePaths:function(){for(var t in this._layers)this._layers[t]._update()},_update:function(){var t=this.options.padding,e=this._map.getSize(),i=this._map.containerPointToLayerPoint(e.multiplyBy(-t)).round();this._bounds=new B(i,i.add(e.multiplyBy(1+2*t)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),hn=an.extend({getEvents:function(){var t=an.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){an.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var t=this._container=document.createElement(\"canvas\");Te(t,\"mousemove\",this._onMouseMove,this),Te(t,\"click dblclick mousedown mouseup contextmenu\",this._onClick,this),Te(t,\"mouseout\",this._handleMouseOut,this),this._ctx=t.getContext(\"2d\")},_destroyContainer:function(){M(this._redrawRequest),delete this._ctx,ne(this._container),ze(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){for(var t in this._redrawBounds=null,this._layers)this._layers[t]._update();this._redraw()}},_update:function(){if(!this._map._animatingZoom||!this._bounds){an.prototype._update.call(this);var t=this._bounds,e=this._container,i=t.getSize(),n=Tt?2:1;me(e,t.min),e.width=n*i.x,e.height=n*i.y,e.style.width=i.x+\"px\",e.style.height=i.y+\"px\",Tt&&this._ctx.scale(2,2),this._ctx.translate(-t.min.x,-t.min.y),this.fire(\"update\")}},_reset:function(){an.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t),this._layers[s(t)]=t;var e=t._order={layer:t,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=e),this._drawLast=e,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(t){this._requestRedraw(t)},_removePath:function(t){var e=t._order,i=e.next,n=e.prev;i?i.prev=n:this._drawLast=n,n?n.next=i:this._drawFirst=i,delete t._order,delete this._layers[s(t)],this._requestRedraw(t)},_updatePath:function(t){this._extendRedrawBounds(t),t._project(),t._update(),this._requestRedraw(t)},_updateStyle:function(t){this._updateDashArray(t),this._requestRedraw(t)},_updateDashArray:function(t){if(\"string\"==typeof t.options.dashArray){var e,i,n=t.options.dashArray.split(/[, ]+/),o=[];for(i=0;i<n.length;i++){if(e=Number(n[i]),isNaN(e))return;o.push(e)}t.options._dashArray=o}else t.options._dashArray=t.options.dashArray},_requestRedraw:function(t){this._map&&(this._extendRedrawBounds(t),this._redrawRequest=this._redrawRequest||T(this._redraw,this))},_extendRedrawBounds:function(t){if(t._pxBounds){var e=(t.options.weight||0)+1;this._redrawBounds=this._redrawBounds||new B,this._redrawBounds.extend(t._pxBounds.min.subtract([e,e])),this._redrawBounds.extend(t._pxBounds.max.add([e,e]))}},_redraw:function(){this._redrawRequest=null,this._redrawBounds&&(this._redrawBounds.min._floor(),this._redrawBounds.max._ceil()),this._clear(),this._draw(),this._redrawBounds=null},_clear:function(){var t=this._redrawBounds;if(t){var e=t.getSize();this._ctx.clearRect(t.min.x,t.min.y,e.x,e.y)}else this._ctx.save(),this._ctx.setTransform(1,0,0,1,0,0),this._ctx.clearRect(0,0,this._container.width,this._container.height),this._ctx.restore()},_draw:function(){var t,e=this._redrawBounds;if(this._ctx.save(),e){var i=e.getSize();this._ctx.beginPath(),this._ctx.rect(e.min.x,e.min.y,i.x,i.y),this._ctx.clip()}this._drawing=!0;for(var n=this._drawFirst;n;n=n.next)t=n.layer,(!e||t._pxBounds&&t._pxBounds.intersects(e))&&t._updatePath();this._drawing=!1,this._ctx.restore()},_updatePoly:function(t,e){if(this._drawing){var i,n,o,s,r=t._parts,a=r.length,h=this._ctx;if(a){for(h.beginPath(),i=0;i<a;i++){for(n=0,o=r[i].length;n<o;n++)s=r[i][n],h[n?\"lineTo\":\"moveTo\"](s.x,s.y);e&&h.closePath()}this._fillStroke(h,t)}}},_updateCircle:function(t){if(this._drawing&&!t._empty()){var e=t._point,i=this._ctx,n=Math.max(Math.round(t._radius),1),o=(Math.max(Math.round(t._radiusY),1)||n)/n;1!==o&&(i.save(),i.scale(1,o)),i.beginPath(),i.arc(e.x,e.y/o,n,0,2*Math.PI,!1),1!==o&&i.restore(),this._fillStroke(i,t)}},_fillStroke:function(t,e){var i=e.options;i.fill&&(t.globalAlpha=i.fillOpacity,t.fillStyle=i.fillColor||i.color,t.fill(i.fillRule||\"evenodd\")),i.stroke&&0!==i.weight&&(t.setLineDash&&t.setLineDash(e.options&&e.options._dashArray||[]),t.globalAlpha=i.opacity,t.lineWidth=i.weight,t.strokeStyle=i.color,t.lineCap=i.lineCap,t.lineJoin=i.lineJoin,t.stroke())},_onClick:function(t){for(var e,i,n=this._map.mouseEventToLayerPoint(t),o=this._drawFirst;o;o=o.next)(e=o.layer).options.interactive&&e._containsPoint(n)&&(\"click\"!==t.type&&\"preclick\"===t.type||!this._map._draggableMoved(e))&&(i=e);i&&(He(t),this._fireEvent([i],t))},_onMouseMove:function(t){if(this._map&&!this._map.dragging.moving()&&!this._map._animatingZoom){var e=this._map.mouseEventToLayerPoint(t);this._handleMouseHover(t,e)}},_handleMouseOut:function(t){var e=this._hoveredLayer;e&&(ue(this._container,\"leaflet-interactive\"),this._fireEvent([e],t,\"mouseout\"),this._hoveredLayer=null,this._mouseHoverThrottled=!1)},_handleMouseHover:function(t,e){if(!this._mouseHoverThrottled){for(var i,o,s=this._drawFirst;s;s=s.next)(i=s.layer).options.interactive&&i._containsPoint(e)&&(o=i);o!==this._hoveredLayer&&(this._handleMouseOut(t),o&&(he(this._container,\"leaflet-interactive\"),this._fireEvent([o],t,\"mouseover\"),this._hoveredLayer=o)),this._hoveredLayer&&this._fireEvent([this._hoveredLayer],t),this._mouseHoverThrottled=!0,setTimeout(n((function(){this._mouseHoverThrottled=!1}),this),32)}},_fireEvent:function(t,e,i){this._map._fireDOMEvent(e,i||e.type,t)},_bringToFront:function(t){var e=t._order;if(e){var i=e.next,n=e.prev;i&&(i.prev=n,n?n.next=i:i&&(this._drawFirst=i),e.prev=this._drawLast,this._drawLast.next=e,e.next=null,this._drawLast=e,this._requestRedraw(t))}},_bringToBack:function(t){var e=t._order;if(e){var i=e.next,n=e.prev;n&&(n.next=i,i?i.prev=n:n&&(this._drawLast=n),e.prev=null,e.next=this._drawFirst,this._drawFirst.prev=e,this._drawFirst=e,this._requestRedraw(t))}}});function un(t){return zt?new hn(t):null}var ln=function(){try{return document.namespaces.add(\"lvml\",\"urn:schemas-microsoft-com:vml\"),function(t){return document.createElement(\"<lvml:\"+t+' class=\"lvml\">')}}catch(t){return function(t){return document.createElement(\"<\"+t+' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"lvml\">')}}}(),cn={_initContainer:function(){this._container=ie(\"div\",\"leaflet-vml-container\")},_update:function(){this._map._animatingZoom||(an.prototype._update.call(this),this.fire(\"update\"))},_initPath:function(t){var e=t._container=ln(\"shape\");he(e,\"leaflet-vml-shape \"+(this.options.className||\"\")),e.coordsize=\"1 1\",t._path=ln(\"path\"),e.appendChild(t._path),this._updateStyle(t),this._layers[s(t)]=t},_addPath:function(t){var e=t._container;this._container.appendChild(e),t.options.interactive&&t.addInteractiveTarget(e)},_removePath:function(t){var e=t._container;ne(e),t.removeInteractiveTarget(e),delete this._layers[s(t)]},_updateStyle:function(t){var e=t._stroke,i=t._fill,n=t.options,o=t._container;o.stroked=!!n.stroke,o.filled=!!n.fill,n.stroke?(e||(e=t._stroke=ln(\"stroke\")),o.appendChild(e),e.weight=n.weight+\"px\",e.color=n.color,e.opacity=n.opacity,n.dashArray?e.dashStyle=f(n.dashArray)?n.dashArray.join(\" \"):n.dashArray.replace(/( *, *)/g,\" \"):e.dashStyle=\"\",e.endcap=n.lineCap.replace(\"butt\",\"flat\"),e.joinstyle=n.lineJoin):e&&(o.removeChild(e),t._stroke=null),n.fill?(i||(i=t._fill=ln(\"fill\")),o.appendChild(i),i.color=n.fillColor||n.color,i.opacity=n.fillOpacity):i&&(o.removeChild(i),t._fill=null)},_updateCircle:function(t){var e=t._point.round(),i=Math.round(t._radius),n=Math.round(t._radiusY||i);this._setPath(t,t._empty()?\"M0 0\":\"AL \"+e.x+\",\"+e.y+\" \"+i+\",\"+n+\" 0,23592600\")},_setPath:function(t,e){t._path.v=e},_bringToFront:function(t){se(t._container)},_bringToBack:function(t){re(t._container)}},dn=St?ln:J,_n=an.extend({getEvents:function(){var t=an.prototype.getEvents.call(this);return t.zoomstart=this._onZoomStart,t},_initContainer:function(){this._container=dn(\"svg\"),this._container.setAttribute(\"pointer-events\",\"none\"),this._rootGroup=dn(\"g\"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){ne(this._container),ze(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_onZoomStart:function(){this._update()},_update:function(){if(!this._map._animatingZoom||!this._bounds){an.prototype._update.call(this);var t=this._bounds,e=t.getSize(),i=this._container;this._svgSize&&this._svgSize.equals(e)||(this._svgSize=e,i.setAttribute(\"width\",e.x),i.setAttribute(\"height\",e.y)),me(i,t.min),i.setAttribute(\"viewBox\",[t.min.x,t.min.y,e.x,e.y].join(\" \")),this.fire(\"update\")}},_initPath:function(t){var e=t._path=dn(\"path\");t.options.className&&he(e,t.options.className),t.options.interactive&&he(e,\"leaflet-interactive\"),this._updateStyle(t),this._layers[s(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){ne(t._path),t.removeInteractiveTarget(t._path),delete this._layers[s(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var e=t._path,i=t.options;e&&(i.stroke?(e.setAttribute(\"stroke\",i.color),e.setAttribute(\"stroke-opacity\",i.opacity),e.setAttribute(\"stroke-width\",i.weight),e.setAttribute(\"stroke-linecap\",i.lineCap),e.setAttribute(\"stroke-linejoin\",i.lineJoin),i.dashArray?e.setAttribute(\"stroke-dasharray\",i.dashArray):e.removeAttribute(\"stroke-dasharray\"),i.dashOffset?e.setAttribute(\"stroke-dashoffset\",i.dashOffset):e.removeAttribute(\"stroke-dashoffset\")):e.setAttribute(\"stroke\",\"none\"),i.fill?(e.setAttribute(\"fill\",i.fillColor||i.color),e.setAttribute(\"fill-opacity\",i.fillOpacity),e.setAttribute(\"fill-rule\",i.fillRule||\"evenodd\")):e.setAttribute(\"fill\",\"none\"))},_updatePoly:function(t,e){this._setPath(t,Y(t._parts,e))},_updateCircle:function(t){var e=t._point,i=Math.max(Math.round(t._radius),1),n=\"a\"+i+\",\"+(Math.max(Math.round(t._radiusY),1)||i)+\" 0 1,0 \",o=t._empty()?\"M0 0\":\"M\"+(e.x-i)+\",\"+e.y+n+2*i+\",0 \"+n+2*-i+\",0 \";this._setPath(t,o)},_setPath:function(t,e){t._path.setAttribute(\"d\",e)},_bringToFront:function(t){se(t._path)},_bringToBack:function(t){re(t._path)}});function pn(t){return Ct||St?new _n(t):null}St&&_n.include(cn),Ge.include({getRenderer:function(t){var e=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer;return e||(e=this._renderer=this._createRenderer()),this.hasLayer(e)||this.addLayer(e),e},_getPaneRenderer:function(t){if(\"overlayPane\"===t||void 0===t)return!1;var e=this._paneRenderers[t];return void 0===e&&(e=this._createRenderer({pane:t}),this._paneRenderers[t]=e),e},_createRenderer:function(t){return this.options.preferCanvas&&un(t)||pn(t)}});var mn=Oi.extend({initialize:function(t,e){Oi.prototype.initialize.call(this,this._boundsToLatLngs(t),e)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return[(t=N(t)).getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});_n.create=dn,_n.pointsToPath=Y,Ni.geometryToLayer=Ri,Ni.coordsToLatLng=ji,Ni.coordsToLatLngs=Hi,Ni.latLngToCoords=Wi,Ni.latLngsToCoords=Fi,Ni.getFeature=Ui,Ni.asFeature=Vi,Ge.mergeOptions({boxZoom:!0});var fn=Qe.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on(\"unload\",this._destroy,this)},addHooks:function(){Te(this._container,\"mousedown\",this._onMouseDown,this)},removeHooks:function(){ze(this._container,\"mousedown\",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){ne(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),Gt(),ve(),this._startPoint=this._map.mouseEventToContainerPoint(t),Te(document,{contextmenu:Oe,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=ie(\"div\",\"leaflet-zoom-box\",this._container),he(this._container,\"leaflet-crosshair\"),this._map.fire(\"boxzoomstart\")),this._point=this._map.mouseEventToContainerPoint(t);var e=new B(this._point,this._startPoint),i=e.getSize();me(this._box,e.min),this._box.style.width=i.x+\"px\",this._box.style.height=i.y+\"px\"},_finish:function(){this._moved&&(ne(this._box),ue(this._container,\"leaflet-crosshair\")),qt(),ye(),ze(document,{contextmenu:Oe,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){if((1===t.which||1===t.button)&&(this._finish(),this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(n(this._resetState,this),0);var e=new O(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(e).fire(\"boxzoomend\",{boxZoomBounds:e})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}});Ge.addInitHook(\"addHandler\",\"boxZoom\",fn),Ge.mergeOptions({doubleClickZoom:!0});var gn=Qe.extend({addHooks:function(){this._map.on(\"dblclick\",this._onDoubleClick,this)},removeHooks:function(){this._map.off(\"dblclick\",this._onDoubleClick,this)},_onDoubleClick:function(t){var e=this._map,i=e.getZoom(),n=e.options.zoomDelta,o=t.originalEvent.shiftKey?i-n:i+n;\"center\"===e.options.doubleClickZoom?e.setZoom(o):e.setZoomAround(t.containerPoint,o)}});Ge.addInitHook(\"addHandler\",\"doubleClickZoom\",gn),Ge.mergeOptions({dragging:!0,inertia:!nt,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var vn=Qe.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new si(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on(\"predrag\",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on(\"predrag\",this._onPreDragWrap,this),t.on(\"zoomend\",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))}he(this._map._container,\"leaflet-grab leaflet-touch-drag\"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){ue(this._map._container,\"leaflet-grab\"),ue(this._map._container,\"leaflet-touch-drag\"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t=this._map;if(t._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var e=N(this._map.options.maxBounds);this._offsetLimit=I(this._map.latLngToContainerPoint(e.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(e.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;t.fire(\"movestart\").fire(\"dragstart\"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){if(this._map.options.inertia){var e=this._lastTime=+new Date,i=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(i),this._times.push(e),this._prunePositions(e)}this._map.fire(\"move\",t).fire(\"drag\",t)},_prunePositions:function(t){for(;this._positions.length>1&&t-this._times[0]>50;)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var t=this._map.getSize().divideBy(2),e=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=e.subtract(t).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(t,e){return t-(t-e)*this._viscosity},_onPreDragLimit:function(){if(this._viscosity&&this._offsetLimit){var t=this._draggable._newPos.subtract(this._draggable._startPos),e=this._offsetLimit;t.x<e.min.x&&(t.x=this._viscousLimit(t.x,e.min.x)),t.y<e.min.y&&(t.y=this._viscousLimit(t.y,e.min.y)),t.x>e.max.x&&(t.x=this._viscousLimit(t.x,e.max.x)),t.y>e.max.y&&(t.y=this._viscousLimit(t.y,e.max.y)),this._draggable._newPos=this._draggable._startPos.add(t)}},_onPreDragWrap:function(){var t=this._worldWidth,e=Math.round(t/2),i=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-e+i)%t+e-i,s=(n+e+i)%t-e-i,r=Math.abs(o+i)<Math.abs(s+i)?o:s;this._draggable._absPos=this._draggable._newPos.clone(),this._draggable._newPos.x=r},_onDragEnd:function(t){var e=this._map,i=e.options,n=!i.inertia||this._times.length<2;if(e.fire(\"dragend\",t),n)e.fire(\"moveend\");else{this._prunePositions(+new Date);var o=this._lastPos.subtract(this._positions[0]),s=(this._lastTime-this._times[0])/1e3,r=i.easeLinearity,a=o.multiplyBy(r/s),h=a.distanceTo([0,0]),u=Math.min(i.inertiaMaxSpeed,h),l=a.multiplyBy(u/h),c=u/(i.inertiaDeceleration*r),d=l.multiplyBy(-c/2).round();d.x||d.y?(d=e._limitOffset(d,e.options.maxBounds),T((function(){e.panBy(d,{duration:c,easeLinearity:r,noMoveStart:!0,animate:!0})}))):e.fire(\"moveend\")}}});Ge.addInitHook(\"addHandler\",\"dragging\",vn),Ge.mergeOptions({keyboard:!0,keyboardPanDelta:80});var yn=Qe.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,54,173]},initialize:function(t){this._map=t,this._setPanDelta(t.options.keyboardPanDelta),this._setZoomDelta(t.options.zoomDelta)},addHooks:function(){var t=this._map._container;t.tabIndex<=0&&(t.tabIndex=\"0\"),Te(t,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.on({focus:this._addHooks,blur:this._removeHooks},this)},removeHooks:function(){this._removeHooks(),ze(this._map._container,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.off({focus:this._addHooks,blur:this._removeHooks},this)},_onMouseDown:function(){if(!this._focused){var t=document.body,e=document.documentElement,i=t.scrollTop||e.scrollTop,n=t.scrollLeft||e.scrollLeft;this._map._container.focus(),window.scrollTo(n,i)}},_onFocus:function(){this._focused=!0,this._map.fire(\"focus\")},_onBlur:function(){this._focused=!1,this._map.fire(\"blur\")},_setPanDelta:function(t){var e,i,n=this._panKeys={},o=this.keyCodes;for(e=0,i=o.left.length;e<i;e++)n[o.left[e]]=[-1*t,0];for(e=0,i=o.right.length;e<i;e++)n[o.right[e]]=[t,0];for(e=0,i=o.down.length;e<i;e++)n[o.down[e]]=[0,t];for(e=0,i=o.up.length;e<i;e++)n[o.up[e]]=[0,-1*t]},_setZoomDelta:function(t){var e,i,n=this._zoomKeys={},o=this.keyCodes;for(e=0,i=o.zoomIn.length;e<i;e++)n[o.zoomIn[e]]=t;for(e=0,i=o.zoomOut.length;e<i;e++)n[o.zoomOut[e]]=-t},_addHooks:function(){Te(document,\"keydown\",this._onKeyDown,this)},_removeHooks:function(){ze(document,\"keydown\",this._onKeyDown,this)},_onKeyDown:function(t){if(!(t.altKey||t.ctrlKey||t.metaKey)){var e,i=t.keyCode,n=this._map;if(i in this._panKeys)n._panAnim&&n._panAnim._inProgress||(e=this._panKeys[i],t.shiftKey&&(e=A(e).multiplyBy(3)),n.panBy(e),n.options.maxBounds&&n.panInsideBounds(n.options.maxBounds));else if(i in this._zoomKeys)n.setZoom(n.getZoom()+(t.shiftKey?3:1)*this._zoomKeys[i]);else{if(27!==i||!n._popup||!n._popup.options.closeOnEscapeKey)return;n.closePopup()}Oe(t)}}});Ge.addInitHook(\"addHandler\",\"keyboard\",yn),Ge.mergeOptions({scrollWheelZoom:!0,wheelDebounceTime:40,wheelPxPerZoomLevel:60});var xn=Qe.extend({addHooks:function(){Te(this._map._container,\"wheel\",this._onWheelScroll,this),this._delta=0},removeHooks:function(){ze(this._map._container,\"wheel\",this._onWheelScroll,this)},_onWheelScroll:function(t){var e=De(t),i=this._map.options.wheelDebounceTime;this._delta+=e,this._lastMousePos=this._map.mouseEventToContainerPoint(t),this._startTime||(this._startTime=+new Date);var o=Math.max(i-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(n(this._performZoom,this),o),Oe(t)},_performZoom:function(){var t=this._map,e=t.getZoom(),i=this._map.options.zoomSnap||0;t._stop();var n=this._delta/(4*this._map.options.wheelPxPerZoomLevel),o=4*Math.log(2/(1+Math.exp(-Math.abs(n))))/Math.LN2,s=i?Math.ceil(o/i)*i:o,r=t._limitZoom(e+(this._delta>0?s:-s))-e;this._delta=0,this._startTime=null,r&&(\"center\"===t.options.scrollWheelZoom?t.setZoom(e+r):t.setZoomAround(this._lastMousePos,e+r))}});Ge.addInitHook(\"addHandler\",\"scrollWheelZoom\",xn),Ge.mergeOptions({tap:!0,tapTolerance:15});var wn=Qe.extend({addHooks:function(){Te(this._map._container,\"touchstart\",this._onDown,this)},removeHooks:function(){ze(this._map._container,\"touchstart\",this._onDown,this)},_onDown:function(t){if(t.touches){if(Ie(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var e=t.touches[0],i=e.target;this._startPos=this._newPos=new Z(e.clientX,e.clientY),i.tagName&&\"a\"===i.tagName.toLowerCase()&&he(i,\"leaflet-active\"),this._holdTimeout=setTimeout(n((function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent(\"contextmenu\",e))}),this),1e3),this._simulateEvent(\"mousedown\",e),Te(document,{touchmove:this._onMove,touchend:this._onUp},this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),ze(document,{touchmove:this._onMove,touchend:this._onUp},this),this._fireClick&&t&&t.changedTouches){var e=t.changedTouches[0],i=e.target;i&&i.tagName&&\"a\"===i.tagName.toLowerCase()&&ue(i,\"leaflet-active\"),this._simulateEvent(\"mouseup\",e),this._isTapValid()&&this._simulateEvent(\"click\",e)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var e=t.touches[0];this._newPos=new Z(e.clientX,e.clientY),this._simulateEvent(\"mousemove\",e)},_simulateEvent:function(t,e){var i=document.createEvent(\"MouseEvents\");i._simulated=!0,e.target._simulatedClick=!0,i.initMouseEvent(t,!0,!0,window,1,e.screenX,e.screenY,e.clientX,e.clientY,!1,!1,!1,!1,0,null),e.target.dispatchEvent(i)}});!bt||wt&&!ut||Ge.addInitHook(\"addHandler\",\"tap\",wn),Ge.mergeOptions({touchZoom:bt&&!nt,bounceAtZoomLimits:!0});var bn=Qe.extend({addHooks:function(){he(this._map._container,\"leaflet-touch-zoom\"),Te(this._map._container,\"touchstart\",this._onTouchStart,this)},removeHooks:function(){ue(this._map._container,\"leaflet-touch-zoom\"),ze(this._map._container,\"touchstart\",this._onTouchStart,this)},_onTouchStart:function(t){var e=this._map;if(t.touches&&2===t.touches.length&&!e._animatingZoom&&!this._zooming){var i=e.mouseEventToContainerPoint(t.touches[0]),n=e.mouseEventToContainerPoint(t.touches[1]);this._centerPoint=e.getSize()._divideBy(2),this._startLatLng=e.containerPointToLatLng(this._centerPoint),\"center\"!==e.options.touchZoom&&(this._pinchStartLatLng=e.containerPointToLatLng(i.add(n)._divideBy(2))),this._startDist=i.distanceTo(n),this._startZoom=e.getZoom(),this._moved=!1,this._zooming=!0,e._stop(),Te(document,\"touchmove\",this._onTouchMove,this),Te(document,\"touchend\",this._onTouchEnd,this),Ie(t)}},_onTouchMove:function(t){if(t.touches&&2===t.touches.length&&this._zooming){var e=this._map,i=e.mouseEventToContainerPoint(t.touches[0]),o=e.mouseEventToContainerPoint(t.touches[1]),s=i.distanceTo(o)/this._startDist;if(this._zoom=e.getScaleZoom(s,this._startZoom),!e.options.bounceAtZoomLimits&&(this._zoom<e.getMinZoom()&&s<1||this._zoom>e.getMaxZoom()&&s>1)&&(this._zoom=e._limitZoom(this._zoom)),\"center\"===e.options.touchZoom){if(this._center=this._startLatLng,1===s)return}else{var r=i._add(o)._divideBy(2)._subtract(this._centerPoint);if(1===s&&0===r.x&&0===r.y)return;this._center=e.unproject(e.project(this._pinchStartLatLng,this._zoom).subtract(r),this._zoom)}this._moved||(e._moveStart(!0,!1),this._moved=!0),M(this._animRequest);var a=n(e._move,e,this._center,this._zoom,{pinch:!0,round:!1});this._animRequest=T(a,this,!0),Ie(t)}},_onTouchEnd:function(){this._moved&&this._zooming?(this._zooming=!1,M(this._animRequest),ze(document,\"touchmove\",this._onTouchMove,this),ze(document,\"touchend\",this._onTouchEnd,this),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))):this._zooming=!1}});Ge.addInitHook(\"addHandler\",\"touchZoom\",bn),Ge.BoxZoom=fn,Ge.DoubleClickZoom=gn,Ge.Drag=vn,Ge.Keyboard=yn,Ge.ScrollWheelZoom=xn,Ge.Tap=wn,Ge.TouchZoom=bn,t.version=\"1.7.1\",t.Control=qe,t.control=Ke,t.Browser=Zt,t.Evented=k,t.Mixin=ei,t.Util=z,t.Class=C,t.Handler=Qe,t.extend=e,t.bind=n,t.stamp=s,t.setOptions=d,t.DomEvent=Ue,t.DomUtil=Le,t.PosAnimation=Ve,t.Draggable=si,t.LineUtil=fi,t.PolyUtil=vi,t.Point=Z,t.point=A,t.Bounds=B,t.bounds=I,t.Transformation=V,t.transformation=G,t.Projection=wi,t.LatLng=R,t.latLng=D,t.LatLngBounds=O,t.latLngBounds=N,t.CRS=H,t.GeoJSON=Ni,t.geoJSON=qi,t.geoJson=Ki,t.Layer=Ti,t.LayerGroup=Mi,t.layerGroup=function(t,e){return new Mi(t,e)},t.FeatureGroup=zi,t.featureGroup=function(t,e){return new zi(t,e)},t.ImageOverlay=Ji,t.imageOverlay=function(t,e,i){return new Ji(t,e,i)},t.VideoOverlay=Yi,t.videoOverlay=function(t,e,i){return new Yi(t,e,i)},t.SVGOverlay=Xi,t.svgOverlay=function(t,e,i){return new Xi(t,e,i)},t.DivOverlay=$i,t.Popup=Qi,t.popup=function(t,e){return new Qi(t,e)},t.Tooltip=tn,t.tooltip=function(t,e){return new tn(t,e)},t.Icon=Ci,t.icon=function(t){return new Ci(t)},t.DivIcon=en,t.divIcon=function(t){return new en(t)},t.Marker=Zi,t.marker=function(t,e){return new Zi(t,e)},t.TileLayer=on,t.tileLayer=sn,t.GridLayer=nn,t.gridLayer=function(t){return new nn(t)},t.SVG=_n,t.svg=pn,t.Renderer=an,t.Canvas=hn,t.canvas=un,t.Path=Ei,t.CircleMarker=Ai,t.circleMarker=function(t,e){return new Ai(t,e)},t.Circle=Bi,t.circle=function(t,e,i){return new Bi(t,e,i)},t.Polyline=Ii,t.polyline=function(t,e){return new Ii(t,e)},t.Polygon=Oi,t.polygon=function(t,e){return new Oi(t,e)},t.Rectangle=mn,t.rectangle=function(t,e){return new mn(t,e)},t.Map=Ge,t.map=function(t,e){return new Ge(t,e)};var Pn=window.L;t.noConflict=function(){return window.L=Pn,this},window.L=t}(e)},379:(t,e,i)=>{\"use strict\";var n,o=function(){var t={};return function(e){if(void 0===t[e]){var i=document.querySelector(e);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(t){i=null}t[e]=i}return t[e]}}(),s=[];function r(t){for(var e=-1,i=0;i<s.length;i++)if(s[i].identifier===t){e=i;break}return e}function a(t,e){for(var i={},n=[],o=0;o<t.length;o++){var a=t[o],h=e.base?a[0]+e.base:a[0],u=i[h]||0,l=\"\".concat(h,\" \").concat(u);i[h]=u+1;var c=r(l),d={css:a[1],media:a[2],sourceMap:a[3]};-1!==c?(s[c].references++,s[c].updater(d)):s.push({identifier:l,updater:m(d,e),references:1}),n.push(l)}return n}function h(t){var e=document.createElement(\"style\"),n=t.attributes||{};if(void 0===n.nonce){var s=i.nc;s&&(n.nonce=s)}if(Object.keys(n).forEach((function(t){e.setAttribute(t,n[t])})),\"function\"==typeof t.insert)t.insert(e);else{var r=o(t.insert||\"head\");if(!r)throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");r.appendChild(e)}return e}var u,l=(u=[],function(t,e){return u[t]=e,u.filter(Boolean).join(\"\\n\")});function c(t,e,i,n){var o=i?\"\":n.media?\"@media \".concat(n.media,\" {\").concat(n.css,\"}\"):n.css;if(t.styleSheet)t.styleSheet.cssText=l(e,o);else{var s=document.createTextNode(o),r=t.childNodes;r[e]&&t.removeChild(r[e]),r.length?t.insertBefore(s,r[e]):t.appendChild(s)}}function d(t,e,i){var n=i.css,o=i.media,s=i.sourceMap;if(o?t.setAttribute(\"media\",o):t.removeAttribute(\"media\"),s&&\"undefined\"!=typeof btoa&&(n+=\"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(s)))),\" */\")),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}var _=null,p=0;function m(t,e){var i,n,o;if(e.singleton){var s=p++;i=_||(_=h(e)),n=c.bind(null,i,s,!1),o=c.bind(null,i,s,!0)}else i=h(e),n=d.bind(null,i,e),o=function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(i)};return n(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;n(t=e)}else o()}}t.exports=function(t,e){(e=e||{}).singleton||\"boolean\"==typeof e.singleton||(e.singleton=(void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n));var i=a(t=t||[],e);return function(t){if(t=t||[],\"[object Array]\"===Object.prototype.toString.call(t)){for(var n=0;n<i.length;n++){var o=r(i[n]);s[o].references--}for(var h=a(t,e),u=0;u<i.length;u++){var l=r(i[u]);0===s[l].references&&(s[l].updater(),s.splice(l,1))}i=h}}}}},e={};function i(n){var o=e[n];if(void 0!==o)return o.exports;var s=e[n]={id:n,exports:{}};return t[n].call(s.exports,s,s.exports,i),s.exports}i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.g=function(){if(\"object\"==typeof globalThis)return globalThis;try{return this||new Function(\"return this\")()}catch(t){if(\"object\"==typeof window)return window}}(),i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})};var n={};return(()=>{\"use strict\";function t(t){return function(e,i,n){const o=n.value;return n.set=function(e){let n=this.getAttribute(i);try{null!=e&&\"\"!==e||(e=t()),\"string\"!=typeof e&&(e=JSON.stringify(e)),e!==n&&(n=e),n=JSON.parse(n)}catch(o){console.warn(`Invalid value for attribute \"${i}\": ${e}`),n=t()}o.call(this,n)},n.get=function(){return this.hasAttribute(i)?JSON.parse(this.getAttribute(i)):t()},delete n.value,delete n.writable,n}}i.r(n),i.d(n,{MapPlugin:()=>d}),t((()=>({}))),t((()=>[]));var e=i(243),o=i.n(e);function s(t){return t}function r(t,e){return\"string\"==typeof e&&(e=t.objects[e]),\"GeometryCollection\"===e.type?{type:\"FeatureCollection\",features:e.geometries.map((function(e){return a(t,e)}))}:a(t,e)}function a(t,e){var i=e.id,n=e.bbox,o=null==e.properties?{}:e.properties,r=function(t,e){var i=function(t){if(null==t)return s;var e,i,n=t.scale[0],o=t.scale[1],r=t.translate[0],a=t.translate[1];return function(t,s){s||(e=i=0);var h=2,u=t.length,l=new Array(u);for(l[0]=(e+=t[0])*n+r,l[1]=(i+=t[1])*o+a;h<u;)l[h]=t[h],++h;return l}}(t.transform),n=t.arcs;function o(t,e){e.length&&e.pop();for(var o=n[t<0?~t:t],s=0,r=o.length;s<r;++s)e.push(i(o[s],s));t<0&&function(t,e){for(var i,n=t.length,o=n-e;o<--n;)i=t[o],t[o++]=t[n],t[n]=i}(e,r)}function r(t){return i(t)}function a(t){for(var e=[],i=0,n=t.length;i<n;++i)o(t[i],e);return e.length<2&&e.push(e[0]),e}function h(t){for(var e=a(t);e.length<4;)e.push(e[0]);return e}function u(t){return t.map(h)}return function t(e){var i,n=e.type;switch(n){case\"GeometryCollection\":return{type:n,geometries:e.geometries.map(t)};case\"Point\":i=r(e.coordinates);break;case\"MultiPoint\":i=e.coordinates.map(r);break;case\"LineString\":i=a(e.arcs);break;case\"MultiLineString\":i=e.arcs.map(a);break;case\"Polygon\":i=u(e.arcs);break;case\"MultiPolygon\":i=e.arcs.map(u);break;default:return null}return{type:n,coordinates:i}}(e)}(t,e);return null==i&&null==n?{type:\"Feature\",properties:o,geometry:r}:null==n?{type:\"Feature\",id:i,properties:o,geometry:r}:{type:\"Feature\",id:i,bbox:n,properties:o,geometry:r}}var h,u=i(379),l=i.n(u),c=i(28);l()(c.Z,{insert:\"head\",singleton:!1}),c.Z.locals,delete o().Icon.Default.prototype._getIconUrl,o().Icon.Default.mergeOptions({iconRetinaUrl:\"https://unpkg.com/browse/leaflet@1.7.1/dist/images/marker-icon-2x.png\",iconUrl:\"https://unpkg.com/leaflet@1.7.1/dist/images/marker-icon.png\",shadowUrl:\"https://unpkg.com/leaflet@1.7.1/dist/images/marker-shadow.png\"});class d{static async create(t,e){try{const i=JSON.parse(this.getAttribute(\"columns\")),n=this.getAttribute(\"geom\")||\"geometry\";let s,a=!1;if(null!==this.getAttribute(\"config-map\")){const{metric:t,zoom:e}=JSON.parse(this.getAttribute(\"config-map\"))||{};s=t,a=e||!1}i.includes(n)||(i.push(n),this.setAttribute(\"columns\",JSON.stringify(i)));const h=function(t,e,{zoom:i}){const{children:n}=t,s=`map-${Math.random().toString(36).substring(7)}`;[...n].map((({id:t})=>document.getElementById(t).remove()));const a=document.createElement(\"div\");a.id=s,e.innerHTML=\"\",e.appendChild(document.createElement(\"slot\")),t.appendChild(a);let h={};i||(h={zoomControl:!1,scrollWheelZoom:!1});const u=o().map(s,{center:[0,0],zoom:1,...h});return o().tileLayer(\"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\",{attribution:'&copy; <a href=\"https://www.openstreetmap.org/copyright\">OpenStreetMap</a> contributors'}).addTo(u),o().TopoJSON=o().GeoJSON.extend({addData:function(t){if(\"Topology\"===t.type)for(let e in t.objects)o().GeoJSON.prototype.addData.call(this,r(t,t.objects[e]));else o().GeoJSON.prototype.addData.call(this,t)}}),o().topoJSON=function(t,e){return new(o().TopoJSON)(t,e)},u}(this,t,{zoom:a});let u=await e.to_json()||[];if(u=u.filter((({geometry:t})=>!!t)),u.some((({[n]:t})=>!!t))){const[t,e]=s?[s,u[0][s]]:Object.entries(u[0])[0],i=Number.isFinite(e),r=u.map((e=>e[t]));let a=[];if(i){const t=r.every((t=>Number.isInteger(t))),[e,i]=[Math.min(...r),Math.max(...r)],n=5,o=(i-e)/(n-1);a=Array.from({length:n-1},((i,n)=>t?Math.floor(e+n*o):e+n*o)),a.push(i)}else a=[...new Set(r)];const l=t=>{if(i){const e=a.findIndex((e=>t<=e));return e>=0?`var(--perspective-map-range-${e+1})`:\"\"}return`var(--perspective-map-category-${a.findIndex((e=>t===e))+1})`},c=({properties:e={}})=>({fillColor:l(e[t]),fillOpacity:.7,weight:1,color:l(e[t])}),d=u.reduce(((t,{[n]:e=\"{}\",...i})=>{if(\"string\"==typeof e||e instanceof String){const{features:[n]}=o().topoJSON(JSON.parse(e)).toGeoJSON();t.push({...n,properties:i})}return t}),[]);if(d.length){[...new Set(d.map((t=>t[n].type)))].includes(\"Point\")||function({grades:t=[],getColor:e=(t=>t),fmt:i=(t=>t.toLocaleString()),continuous:n=!0}){const s=o().control({position:\"bottomleft\"});return s.onAdd=function(){const s=o().DomUtil.create(\"div\",\"perspective-map-legend\");for(var r=0;r<t.length;r++)s.innerHTML+=n?`<i style=\"background:${e(t[r])}\"></i>${i(t[r])}${t[r+1]?\"&ndash;\"+i(t[r+1])+\"<br>\":\"+\"}`:`<i style=\"background:${e(t[r])}\"></i>${i(t[r])}<br>`;return s},s}({grades:a,getColor:l,continuous:i}).addTo(h);const t=function(){const t=o().control();return t.onAdd=function(){return this._div=o().DomUtil.create(\"div\",\"perspective-map-tooltip\"),this.update(),this._div},t.update=function(t={}){this._div.innerHTML=Object.entries(t).map((([t,e])=>`<div><b>${t}</b>: ${e}</div>`)).join(\"\")},t}();t.addTo(h);const e=(e,i)=>{i.on({mouseover:()=>t.update(e.properties),mouseout:()=>t.update()})},s=o().geoJSON(d,{style:c,onEachFeature:e}).addTo(h);h.fitBounds(s.getBounds())}}}catch(t){if(\"View is not initialized\"!==t.message)throw t}}static update(){}static resize(){}static delete(){}static save(){}static restore(){}}Object.defineProperty(d,\"name\",{writable:!0,value:\"Map\"}),h=d,i.g.registerPlugin?i.g.registerPlugin(\"map\",h):(i.g.__perspective_plugins__=i.g.__perspective_plugins__||[],i.g.__perspective_plugins__.push([\"map\",h]))})(),n})()}));", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n  var WRAP_CLASS = \"CodeMirror-activeline\";\n  var BACK_CLASS = \"CodeMirror-activeline-background\";\n  var GUTT_CLASS = \"CodeMirror-activeline-gutter\";\n\n  CodeMirror.defineOption(\"styleActiveLine\", false, function(cm, val, old) {\n    var prev = old == CodeMirror.Init ? false : old;\n    if (val == prev) return\n    if (prev) {\n      cm.off(\"beforeSelectionChange\", selectionChange);\n      clearActiveLines(cm);\n      delete cm.state.activeLines;\n    }\n    if (val) {\n      cm.state.activeLines = [];\n      updateActiveLines(cm, cm.listSelections());\n      cm.on(\"beforeSelectionChange\", selectionChange);\n    }\n  });\n\n  function clearActiveLines(cm) {\n    for (var i = 0; i < cm.state.activeLines.length; i++) {\n      cm.removeLineClass(cm.state.activeLines[i], \"wrap\", WRAP_CLASS);\n      cm.removeLineClass(cm.state.activeLines[i], \"background\", BACK_CLASS);\n      cm.removeLineClass(cm.state.activeLines[i], \"gutter\", GUTT_CLASS);\n    }\n  }\n\n  function sameArray(a, b) {\n    if (a.length != b.length) return false;\n    for (var i = 0; i < a.length; i++)\n      if (a[i] != b[i]) return false;\n    return true;\n  }\n\n  function updateActiveLines(cm, ranges) {\n    var active = [];\n    for (var i = 0; i < ranges.length; i++) {\n      var range = ranges[i];\n      var option = cm.getOption(\"styleActiveLine\");\n      if (typeof option == \"object\" && option.nonEmpty ? range.anchor.line != range.head.line : !range.empty())\n        continue\n      var line = cm.getLineHandleVisualStart(range.head.line);\n      if (active[active.length - 1] != line) active.push(line);\n    }\n    if (sameArray(cm.state.activeLines, active)) return;\n    cm.operation(function() {\n      clearActiveLines(cm);\n      for (var i = 0; i < active.length; i++) {\n        cm.addLineClass(active[i], \"wrap\", WRAP_CLASS);\n        cm.addLineClass(active[i], \"background\", BACK_CLASS);\n        cm.addLineClass(active[i], \"gutter\", GUTT_CLASS);\n      }\n      cm.state.activeLines = active;\n    });\n  }\n\n  function selectionChange(cm, sel) {\n    updateActiveLines(cm, sel.ranges);\n  }\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var HINT_ELEMENT_CLASS        = \"CodeMirror-hint\";\n  var ACTIVE_HINT_ELEMENT_CLASS = \"CodeMirror-hint-active\";\n\n  // This is the old interface, kept around for now to stay\n  // backwards-compatible.\n  CodeMirror.showHint = function(cm, getHints, options) {\n    if (!getHints) return cm.showHint(options);\n    if (options && options.async) getHints.async = true;\n    var newOpts = {hint: getHints};\n    if (options) for (var prop in options) newOpts[prop] = options[prop];\n    return cm.showHint(newOpts);\n  };\n\n  CodeMirror.defineExtension(\"showHint\", function(options) {\n    options = parseOptions(this, this.getCursor(\"start\"), options);\n    var selections = this.listSelections()\n    if (selections.length > 1) return;\n    // By default, don't allow completion when something is selected.\n    // A hint function can have a `supportsSelection` property to\n    // indicate that it can handle selections.\n    if (this.somethingSelected()) {\n      if (!options.hint.supportsSelection) return;\n      // Don't try with cross-line selections\n      for (var i = 0; i < selections.length; i++)\n        if (selections[i].head.line != selections[i].anchor.line) return;\n    }\n\n    if (this.state.completionActive) this.state.completionActive.close();\n    var completion = this.state.completionActive = new Completion(this, options);\n    if (!completion.options.hint) return;\n\n    CodeMirror.signal(this, \"startCompletion\", this);\n    completion.update(true);\n  });\n\n  CodeMirror.defineExtension(\"closeHint\", function() {\n    if (this.state.completionActive) this.state.completionActive.close()\n  })\n\n  function Completion(cm, options) {\n    this.cm = cm;\n    this.options = options;\n    this.widget = null;\n    this.debounce = 0;\n    this.tick = 0;\n    this.startPos = this.cm.getCursor(\"start\");\n    this.startLen = this.cm.getLine(this.startPos.line).length - this.cm.getSelection().length;\n\n    var self = this;\n    cm.on(\"cursorActivity\", this.activityFunc = function() { self.cursorActivity(); });\n  }\n\n  var requestAnimationFrame = window.requestAnimationFrame || function(fn) {\n    return setTimeout(fn, 1000/60);\n  };\n  var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;\n\n  Completion.prototype = {\n    close: function() {\n      if (!this.active()) return;\n      this.cm.state.completionActive = null;\n      this.tick = null;\n      this.cm.off(\"cursorActivity\", this.activityFunc);\n\n      if (this.widget && this.data) CodeMirror.signal(this.data, \"close\");\n      if (this.widget) this.widget.close();\n      CodeMirror.signal(this.cm, \"endCompletion\", this.cm);\n    },\n\n    active: function() {\n      return this.cm.state.completionActive == this;\n    },\n\n    pick: function(data, i) {\n      var completion = data.list[i], self = this;\n      this.cm.operation(function() {\n        if (completion.hint)\n          completion.hint(self.cm, data, completion);\n        else\n          self.cm.replaceRange(getText(completion), completion.from || data.from,\n                               completion.to || data.to, \"complete\");\n        CodeMirror.signal(data, \"pick\", completion);\n        self.cm.scrollIntoView();\n      })\n      this.close();\n    },\n\n    cursorActivity: function() {\n      if (this.debounce) {\n        cancelAnimationFrame(this.debounce);\n        this.debounce = 0;\n      }\n\n      var identStart = this.startPos;\n      if(this.data) {\n        identStart = this.data.from;\n      }\n\n      var pos = this.cm.getCursor(), line = this.cm.getLine(pos.line);\n      if (pos.line != this.startPos.line || line.length - pos.ch != this.startLen - this.startPos.ch ||\n          pos.ch < identStart.ch || this.cm.somethingSelected() ||\n          (!pos.ch || this.options.closeCharacters.test(line.charAt(pos.ch - 1)))) {\n        this.close();\n      } else {\n        var self = this;\n        this.debounce = requestAnimationFrame(function() {self.update();});\n        if (this.widget) this.widget.disable();\n      }\n    },\n\n    update: function(first) {\n      if (this.tick == null) return\n      var self = this, myTick = ++this.tick\n      fetchHints(this.options.hint, this.cm, this.options, function(data) {\n        if (self.tick == myTick) self.finishUpdate(data, first)\n      })\n    },\n\n    finishUpdate: function(data, first) {\n      if (this.data) CodeMirror.signal(this.data, \"update\");\n\n      var picked = (this.widget && this.widget.picked) || (first && this.options.completeSingle);\n      if (this.widget) this.widget.close();\n\n      this.data = data;\n\n      if (data && data.list.length) {\n        if (picked && data.list.length == 1) {\n          this.pick(data, 0);\n        } else {\n          this.widget = new Widget(this, data);\n          CodeMirror.signal(data, \"shown\");\n        }\n      }\n    }\n  };\n\n  function parseOptions(cm, pos, options) {\n    var editor = cm.options.hintOptions;\n    var out = {};\n    for (var prop in defaultOptions) out[prop] = defaultOptions[prop];\n    if (editor) for (var prop in editor)\n      if (editor[prop] !== undefined) out[prop] = editor[prop];\n    if (options) for (var prop in options)\n      if (options[prop] !== undefined) out[prop] = options[prop];\n    if (out.hint.resolve) out.hint = out.hint.resolve(cm, pos)\n    return out;\n  }\n\n  function getText(completion) {\n    if (typeof completion == \"string\") return completion;\n    else return completion.text;\n  }\n\n  function buildKeyMap(completion, handle) {\n    var baseMap = {\n      Up: function() {handle.moveFocus(-1);},\n      Down: function() {handle.moveFocus(1);},\n      PageUp: function() {handle.moveFocus(-handle.menuSize() + 1, true);},\n      PageDown: function() {handle.moveFocus(handle.menuSize() - 1, true);},\n      Home: function() {handle.setFocus(0);},\n      End: function() {handle.setFocus(handle.length - 1);},\n      Enter: handle.pick,\n      Tab: handle.pick,\n      Esc: handle.close\n    };\n\n    var mac = /Mac/.test(navigator.platform);\n\n    if (mac) {\n      baseMap[\"Ctrl-P\"] = function() {handle.moveFocus(-1);};\n      baseMap[\"Ctrl-N\"] = function() {handle.moveFocus(1);};\n    }\n\n    var custom = completion.options.customKeys;\n    var ourMap = custom ? {} : baseMap;\n    function addBinding(key, val) {\n      var bound;\n      if (typeof val != \"string\")\n        bound = function(cm) { return val(cm, handle); };\n      // This mechanism is deprecated\n      else if (baseMap.hasOwnProperty(val))\n        bound = baseMap[val];\n      else\n        bound = val;\n      ourMap[key] = bound;\n    }\n    if (custom)\n      for (var key in custom) if (custom.hasOwnProperty(key))\n        addBinding(key, custom[key]);\n    var extra = completion.options.extraKeys;\n    if (extra)\n      for (var key in extra) if (extra.hasOwnProperty(key))\n        addBinding(key, extra[key]);\n    return ourMap;\n  }\n\n  function getHintElement(hintsElement, el) {\n    while (el && el != hintsElement) {\n      if (el.nodeName.toUpperCase() === \"LI\" && el.parentNode == hintsElement) return el;\n      el = el.parentNode;\n    }\n  }\n\n  function Widget(completion, data) {\n    this.completion = completion;\n    this.data = data;\n    this.picked = false;\n    var widget = this, cm = completion.cm;\n    var ownerDocument = cm.getInputField().ownerDocument;\n    var parentWindow = ownerDocument.defaultView || ownerDocument.parentWindow;\n\n    var hints = this.hints = ownerDocument.createElement(\"ul\");\n    var theme = completion.cm.options.theme;\n    hints.className = \"CodeMirror-hints \" + theme;\n    this.selectedHint = data.selectedHint || 0;\n\n    var completions = data.list;\n    for (var i = 0; i < completions.length; ++i) {\n      var elt = hints.appendChild(ownerDocument.createElement(\"li\")), cur = completions[i];\n      var className = HINT_ELEMENT_CLASS + (i != this.selectedHint ? \"\" : \" \" + ACTIVE_HINT_ELEMENT_CLASS);\n      if (cur.className != null) className = cur.className + \" \" + className;\n      elt.className = className;\n      if (cur.render) cur.render(elt, data, cur);\n      else elt.appendChild(ownerDocument.createTextNode(cur.displayText || getText(cur)));\n      elt.hintId = i;\n    }\n\n    var container = completion.options.container || ownerDocument.body;\n    var pos = cm.cursorCoords(completion.options.alignWithWord ? data.from : null);\n    var left = pos.left, top = pos.bottom, below = true;\n    var offsetLeft = 0, offsetTop = 0;\n    if (container !== ownerDocument.body) {\n      // We offset the cursor position because left and top are relative to the offsetParent's top left corner.\n      var isContainerPositioned = ['absolute', 'relative', 'fixed'].indexOf(parentWindow.getComputedStyle(container).position) !== -1;\n      var offsetParent = isContainerPositioned ? container : container.offsetParent;\n      var offsetParentPosition = offsetParent.getBoundingClientRect();\n      var bodyPosition = ownerDocument.body.getBoundingClientRect();\n      offsetLeft = (offsetParentPosition.left - bodyPosition.left - offsetParent.scrollLeft);\n      offsetTop = (offsetParentPosition.top - bodyPosition.top - offsetParent.scrollTop);\n    }\n    hints.style.left = (left - offsetLeft) + \"px\";\n    hints.style.top = (top - offsetTop) + \"px\";\n\n    // If we're at the edge of the screen, then we want the menu to appear on the left of the cursor.\n    var winW = parentWindow.innerWidth || Math.max(ownerDocument.body.offsetWidth, ownerDocument.documentElement.offsetWidth);\n    var winH = parentWindow.innerHeight || Math.max(ownerDocument.body.offsetHeight, ownerDocument.documentElement.offsetHeight);\n    container.appendChild(hints);\n    var box = hints.getBoundingClientRect(), overlapY = box.bottom - winH;\n    var scrolls = hints.scrollHeight > hints.clientHeight + 1\n    var startScroll = cm.getScrollInfo();\n\n    if (overlapY > 0) {\n      var height = box.bottom - box.top, curTop = pos.top - (pos.bottom - box.top);\n      if (curTop - height > 0) { // Fits above cursor\n        hints.style.top = (top = pos.top - height - offsetTop) + \"px\";\n        below = false;\n      } else if (height > winH) {\n        hints.style.height = (winH - 5) + \"px\";\n        hints.style.top = (top = pos.bottom - box.top - offsetTop) + \"px\";\n        var cursor = cm.getCursor();\n        if (data.from.ch != cursor.ch) {\n          pos = cm.cursorCoords(cursor);\n          hints.style.left = (left = pos.left - offsetLeft) + \"px\";\n          box = hints.getBoundingClientRect();\n        }\n      }\n    }\n    var overlapX = box.right - winW;\n    if (overlapX > 0) {\n      if (box.right - box.left > winW) {\n        hints.style.width = (winW - 5) + \"px\";\n        overlapX -= (box.right - box.left) - winW;\n      }\n      hints.style.left = (left = pos.left - overlapX - offsetLeft) + \"px\";\n    }\n    if (scrolls) for (var node = hints.firstChild; node; node = node.nextSibling)\n      node.style.paddingRight = cm.display.nativeBarWidth + \"px\"\n\n    cm.addKeyMap(this.keyMap = buildKeyMap(completion, {\n      moveFocus: function(n, avoidWrap) { widget.changeActive(widget.selectedHint + n, avoidWrap); },\n      setFocus: function(n) { widget.changeActive(n); },\n      menuSize: function() { return widget.screenAmount(); },\n      length: completions.length,\n      close: function() { completion.close(); },\n      pick: function() { widget.pick(); },\n      data: data\n    }));\n\n    if (completion.options.closeOnUnfocus) {\n      var closingOnBlur;\n      cm.on(\"blur\", this.onBlur = function() { closingOnBlur = setTimeout(function() { completion.close(); }, 100); });\n      cm.on(\"focus\", this.onFocus = function() { clearTimeout(closingOnBlur); });\n    }\n\n    cm.on(\"scroll\", this.onScroll = function() {\n      var curScroll = cm.getScrollInfo(), editor = cm.getWrapperElement().getBoundingClientRect();\n      var newTop = top + startScroll.top - curScroll.top;\n      var point = newTop - (parentWindow.pageYOffset || (ownerDocument.documentElement || ownerDocument.body).scrollTop);\n      if (!below) point += hints.offsetHeight;\n      if (point <= editor.top || point >= editor.bottom) return completion.close();\n      hints.style.top = newTop + \"px\";\n      hints.style.left = (left + startScroll.left - curScroll.left) + \"px\";\n    });\n\n    CodeMirror.on(hints, \"dblclick\", function(e) {\n      var t = getHintElement(hints, e.target || e.srcElement);\n      if (t && t.hintId != null) {widget.changeActive(t.hintId); widget.pick();}\n    });\n\n    CodeMirror.on(hints, \"click\", function(e) {\n      var t = getHintElement(hints, e.target || e.srcElement);\n      if (t && t.hintId != null) {\n        widget.changeActive(t.hintId);\n        if (completion.options.completeOnSingleClick) widget.pick();\n      }\n    });\n\n    CodeMirror.on(hints, \"mousedown\", function() {\n      setTimeout(function(){cm.focus();}, 20);\n    });\n    this.scrollToActive()\n\n    CodeMirror.signal(data, \"select\", completions[this.selectedHint], hints.childNodes[this.selectedHint]);\n    return true;\n  }\n\n  Widget.prototype = {\n    close: function() {\n      if (this.completion.widget != this) return;\n      this.completion.widget = null;\n      this.hints.parentNode.removeChild(this.hints);\n      this.completion.cm.removeKeyMap(this.keyMap);\n\n      var cm = this.completion.cm;\n      if (this.completion.options.closeOnUnfocus) {\n        cm.off(\"blur\", this.onBlur);\n        cm.off(\"focus\", this.onFocus);\n      }\n      cm.off(\"scroll\", this.onScroll);\n    },\n\n    disable: function() {\n      this.completion.cm.removeKeyMap(this.keyMap);\n      var widget = this;\n      this.keyMap = {Enter: function() { widget.picked = true; }};\n      this.completion.cm.addKeyMap(this.keyMap);\n    },\n\n    pick: function() {\n      this.completion.pick(this.data, this.selectedHint);\n    },\n\n    changeActive: function(i, avoidWrap) {\n      if (i >= this.data.list.length)\n        i = avoidWrap ? this.data.list.length - 1 : 0;\n      else if (i < 0)\n        i = avoidWrap ? 0  : this.data.list.length - 1;\n      if (this.selectedHint == i) return;\n      var node = this.hints.childNodes[this.selectedHint];\n      if (node) node.className = node.className.replace(\" \" + ACTIVE_HINT_ELEMENT_CLASS, \"\");\n      node = this.hints.childNodes[this.selectedHint = i];\n      node.className += \" \" + ACTIVE_HINT_ELEMENT_CLASS;\n      this.scrollToActive()\n      CodeMirror.signal(this.data, \"select\", this.data.list[this.selectedHint], node);\n    },\n\n    scrollToActive: function() {\n      var margin = this.completion.options.scrollMargin || 0;\n      var node1 = this.hints.childNodes[Math.max(0, this.selectedHint - margin)];\n      var node2 = this.hints.childNodes[Math.min(this.data.list.length - 1, this.selectedHint + margin)];\n      var firstNode = this.hints.firstChild;\n      if (node1.offsetTop < this.hints.scrollTop)\n        this.hints.scrollTop = node1.offsetTop - firstNode.offsetTop;\n      else if (node2.offsetTop + node2.offsetHeight > this.hints.scrollTop + this.hints.clientHeight)\n        this.hints.scrollTop = node2.offsetTop + node2.offsetHeight - this.hints.clientHeight + firstNode.offsetTop;\n    },\n\n    screenAmount: function() {\n      return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1;\n    }\n  };\n\n  function applicableHelpers(cm, helpers) {\n    if (!cm.somethingSelected()) return helpers\n    var result = []\n    for (var i = 0; i < helpers.length; i++)\n      if (helpers[i].supportsSelection) result.push(helpers[i])\n    return result\n  }\n\n  function fetchHints(hint, cm, options, callback) {\n    if (hint.async) {\n      hint(cm, callback, options)\n    } else {\n      var result = hint(cm, options)\n      if (result && result.then) result.then(callback)\n      else callback(result)\n    }\n  }\n\n  function resolveAutoHints(cm, pos) {\n    var helpers = cm.getHelpers(pos, \"hint\"), words\n    if (helpers.length) {\n      var resolved = function(cm, callback, options) {\n        var app = applicableHelpers(cm, helpers);\n        function run(i) {\n          if (i == app.length) return callback(null)\n          fetchHints(app[i], cm, options, function(result) {\n            if (result && result.list.length > 0) callback(result)\n            else run(i + 1)\n          })\n        }\n        run(0)\n      }\n      resolved.async = true\n      resolved.supportsSelection = true\n      return resolved\n    } else if (words = cm.getHelper(cm.getCursor(), \"hintWords\")) {\n      return function(cm) { return CodeMirror.hint.fromList(cm, {words: words}) }\n    } else if (CodeMirror.hint.anyword) {\n      return function(cm, options) { return CodeMirror.hint.anyword(cm, options) }\n    } else {\n      return function() {}\n    }\n  }\n\n  CodeMirror.registerHelper(\"hint\", \"auto\", {\n    resolve: resolveAutoHints\n  });\n\n  CodeMirror.registerHelper(\"hint\", \"fromList\", function(cm, options) {\n    var cur = cm.getCursor(), token = cm.getTokenAt(cur)\n    var term, from = CodeMirror.Pos(cur.line, token.start), to = cur\n    if (token.start < cur.ch && /\\w/.test(token.string.charAt(cur.ch - token.start - 1))) {\n      term = token.string.substr(0, cur.ch - token.start)\n    } else {\n      term = \"\"\n      from = cur\n    }\n    var found = [];\n    for (var i = 0; i < options.words.length; i++) {\n      var word = options.words[i];\n      if (word.slice(0, term.length) == term)\n        found.push(word);\n    }\n\n    if (found.length) return {list: found, from: from, to: to};\n  });\n\n  CodeMirror.commands.autocomplete = CodeMirror.showHint;\n\n  var defaultOptions = {\n    hint: CodeMirror.hint.auto,\n    completeSingle: true,\n    alignWithWord: true,\n    closeCharacters: /[\\s()\\[\\]{};:>,]/,\n    closeOnUnfocus: true,\n    completeOnSingleClick: true,\n    container: null,\n    customKeys: null,\n    extraKeys: null\n  };\n\n  CodeMirror.defineOption(\"hintOptions\", null);\n});\n", "// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n  if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n    mod(require(\"../../lib/codemirror\"), require(\"../../mode/sql/sql\"));\n  else if (typeof define == \"function\" && define.amd) // AMD\n    define([\"../../lib/codemirror\", \"../../mode/sql/sql\"], mod);\n  else // Plain browser env\n    mod(CodeMirror);\n})(function(CodeMirror) {\n  \"use strict\";\n\n  var tables;\n  var defaultTable;\n  var keywords;\n  var identifierQuote;\n  var CONS = {\n    QUERY_DIV: \";\",\n    ALIAS_KEYWORD: \"AS\"\n  };\n  var Pos = CodeMirror.Pos, cmpPos = CodeMirror.cmpPos;\n\n  function isArray(val) { return Object.prototype.toString.call(val) == \"[object Array]\" }\n\n  function getKeywords(editor) {\n    var mode = editor.doc.modeOption;\n    if (mode === \"sql\") mode = \"text/x-sql\";\n    return CodeMirror.resolveMode(mode).keywords;\n  }\n\n  function getIdentifierQuote(editor) {\n    var mode = editor.doc.modeOption;\n    if (mode === \"sql\") mode = \"text/x-sql\";\n    return CodeMirror.resolveMode(mode).identifierQuote || \"`\";\n  }\n\n  function getText(item) {\n    return typeof item == \"string\" ? item : item.text;\n  }\n\n  function wrapTable(name, value) {\n    if (isArray(value)) value = {columns: value}\n    if (!value.text) value.text = name\n    return value\n  }\n\n  function parseTables(input) {\n    var result = {}\n    if (isArray(input)) {\n      for (var i = input.length - 1; i >= 0; i--) {\n        var item = input[i]\n        result[getText(item).toUpperCase()] = wrapTable(getText(item), item)\n      }\n    } else if (input) {\n      for (var name in input)\n        result[name.toUpperCase()] = wrapTable(name, input[name])\n    }\n    return result\n  }\n\n  function getTable(name) {\n    return tables[name.toUpperCase()]\n  }\n\n  function shallowClone(object) {\n    var result = {};\n    for (var key in object) if (object.hasOwnProperty(key))\n      result[key] = object[key];\n    return result;\n  }\n\n  function match(string, word) {\n    var len = string.length;\n    var sub = getText(word).substr(0, len);\n    return string.toUpperCase() === sub.toUpperCase();\n  }\n\n  function addMatches(result, search, wordlist, formatter) {\n    if (isArray(wordlist)) {\n      for (var i = 0; i < wordlist.length; i++)\n        if (match(search, wordlist[i])) result.push(formatter(wordlist[i]))\n    } else {\n      for (var word in wordlist) if (wordlist.hasOwnProperty(word)) {\n        var val = wordlist[word]\n        if (!val || val === true)\n          val = word\n        else\n          val = val.displayText ? {text: val.text, displayText: val.displayText} : val.text\n        if (match(search, val)) result.push(formatter(val))\n      }\n    }\n  }\n\n  function cleanName(name) {\n    // Get rid name from identifierQuote and preceding dot(.)\n    if (name.charAt(0) == \".\") {\n      name = name.substr(1);\n    }\n    // replace doublicated identifierQuotes with single identifierQuotes\n    // and remove single identifierQuotes\n    var nameParts = name.split(identifierQuote+identifierQuote);\n    for (var i = 0; i < nameParts.length; i++)\n      nameParts[i] = nameParts[i].replace(new RegExp(identifierQuote,\"g\"), \"\");\n    return nameParts.join(identifierQuote);\n  }\n\n  function insertIdentifierQuotes(name) {\n    var nameParts = getText(name).split(\".\");\n    for (var i = 0; i < nameParts.length; i++)\n      nameParts[i] = identifierQuote +\n        // doublicate identifierQuotes\n        nameParts[i].replace(new RegExp(identifierQuote,\"g\"), identifierQuote+identifierQuote) +\n        identifierQuote;\n    var escaped = nameParts.join(\".\");\n    if (typeof name == \"string\") return escaped;\n    name = shallowClone(name);\n    name.text = escaped;\n    return name;\n  }\n\n  function nameCompletion(cur, token, result, editor) {\n    // Try to complete table, column names and return start position of completion\n    var useIdentifierQuotes = false;\n    var nameParts = [];\n    var start = token.start;\n    var cont = true;\n    while (cont) {\n      cont = (token.string.charAt(0) == \".\");\n      useIdentifierQuotes = useIdentifierQuotes || (token.string.charAt(0) == identifierQuote);\n\n      start = token.start;\n      nameParts.unshift(cleanName(token.string));\n\n      token = editor.getTokenAt(Pos(cur.line, token.start));\n      if (token.string == \".\") {\n        cont = true;\n        token = editor.getTokenAt(Pos(cur.line, token.start));\n      }\n    }\n\n    // Try to complete table names\n    var string = nameParts.join(\".\");\n    addMatches(result, string, tables, function(w) {\n      return useIdentifierQuotes ? insertIdentifierQuotes(w) : w;\n    });\n\n    // Try to complete columns from defaultTable\n    addMatches(result, string, defaultTable, function(w) {\n      return useIdentifierQuotes ? insertIdentifierQuotes(w) : w;\n    });\n\n    // Try to complete columns\n    string = nameParts.pop();\n    var table = nameParts.join(\".\");\n\n    var alias = false;\n    var aliasTable = table;\n    // Check if table is available. If not, find table by Alias\n    if (!getTable(table)) {\n      var oldTable = table;\n      table = findTableByAlias(table, editor);\n      if (table !== oldTable) alias = true;\n    }\n\n    var columns = getTable(table);\n    if (columns && columns.columns)\n      columns = columns.columns;\n\n    if (columns) {\n      addMatches(result, string, columns, function(w) {\n        var tableInsert = table;\n        if (alias == true) tableInsert = aliasTable;\n        if (typeof w == \"string\") {\n          w = tableInsert + \".\" + w;\n        } else {\n          w = shallowClone(w);\n          w.text = tableInsert + \".\" + w.text;\n        }\n        return useIdentifierQuotes ? insertIdentifierQuotes(w) : w;\n      });\n    }\n\n    return start;\n  }\n\n  function eachWord(lineText, f) {\n    var words = lineText.split(/\\s+/)\n    for (var i = 0; i < words.length; i++)\n      if (words[i]) f(words[i].replace(/[`,;]/g, ''))\n  }\n\n  function findTableByAlias(alias, editor) {\n    var doc = editor.doc;\n    var fullQuery = doc.getValue();\n    var aliasUpperCase = alias.toUpperCase();\n    var previousWord = \"\";\n    var table = \"\";\n    var separator = [];\n    var validRange = {\n      start: Pos(0, 0),\n      end: Pos(editor.lastLine(), editor.getLineHandle(editor.lastLine()).length)\n    };\n\n    //add separator\n    var indexOfSeparator = fullQuery.indexOf(CONS.QUERY_DIV);\n    while(indexOfSeparator != -1) {\n      separator.push(doc.posFromIndex(indexOfSeparator));\n      indexOfSeparator = fullQuery.indexOf(CONS.QUERY_DIV, indexOfSeparator+1);\n    }\n    separator.unshift(Pos(0, 0));\n    separator.push(Pos(editor.lastLine(), editor.getLineHandle(editor.lastLine()).text.length));\n\n    //find valid range\n    var prevItem = null;\n    var current = editor.getCursor()\n    for (var i = 0; i < separator.length; i++) {\n      if ((prevItem == null || cmpPos(current, prevItem) > 0) && cmpPos(current, separator[i]) <= 0) {\n        validRange = {start: prevItem, end: separator[i]};\n        break;\n      }\n      prevItem = separator[i];\n    }\n\n    if (validRange.start) {\n      var query = doc.getRange(validRange.start, validRange.end, false);\n\n      for (var i = 0; i < query.length; i++) {\n        var lineText = query[i];\n        eachWord(lineText, function(word) {\n          var wordUpperCase = word.toUpperCase();\n          if (wordUpperCase === aliasUpperCase && getTable(previousWord))\n            table = previousWord;\n          if (wordUpperCase !== CONS.ALIAS_KEYWORD)\n            previousWord = word;\n        });\n        if (table) break;\n      }\n    }\n    return table;\n  }\n\n  CodeMirror.registerHelper(\"hint\", \"sql\", function(editor, options) {\n    tables = parseTables(options && options.tables)\n    var defaultTableName = options && options.defaultTable;\n    var disableKeywords = options && options.disableKeywords;\n    defaultTable = defaultTableName && getTable(defaultTableName);\n    keywords = getKeywords(editor);\n    identifierQuote = getIdentifierQuote(editor);\n\n    if (defaultTableName && !defaultTable)\n      defaultTable = findTableByAlias(defaultTableName, editor);\n\n    defaultTable = defaultTable || [];\n\n    if (defaultTable.columns)\n      defaultTable = defaultTable.columns;\n\n    var cur = editor.getCursor();\n    var result = [];\n    var token = editor.getTokenAt(cur), start, end, search;\n    if (token.end > cur.ch) {\n      token.end = cur.ch;\n      token.string = token.string.slice(0, cur.ch - token.start);\n    }\n\n    if (token.string.match(/^[.`\"'\\w@][\\w$#]*$/g)) {\n      search = token.string;\n      start = token.start;\n      end = token.end;\n    } else {\n      start = end = cur.ch;\n      search = \"\";\n    }\n    if (search.charAt(0) == \".\" || search.charAt(0) == identifierQuote) {\n      start = nameCompletion(cur, token, result, editor);\n    } else {\n      var objectOrClass = function(w, className) {\n        if (typeof w === \"object\") {\n          w.className = className;\n        } else {\n          w = { text: w, className: className };\n        }\n        return w;\n      };\n    addMatches(result, search, defaultTable, function(w) {\n        return objectOrClass(w, \"CodeMirror-hint-table CodeMirror-hint-default-table\");\n    });\n    addMatches(\n        result,\n        search,\n        tables, function(w) {\n          return objectOrClass(w, \"CodeMirror-hint-table\");\n        }\n    );\n    if (!disableKeywords)\n      addMatches(result, search, keywords, function(w) {\n          return objectOrClass(w.toUpperCase(), \"CodeMirror-hint-keyword\");\n      });\n  }\n\n    return {list: result, from: Pos(cur.line, start), to: Pos(cur.line, end)};\n  });\n});\n", "import './lib/commons';\nimport './lib/i18n';\nimport './gobierto_data';\n", "// Run this files BEFORE everything to avoid JS \"imports\" hoisting\nimport './modules/jquery';\nimport './modules/i18n';\n\nimport Rails from \"@rails/ujs\";\nRails.start()\n\n// NOTE: these modules are required for the legacy views\nimport './modules/module-search';\nimport './modules/module-sessions';\nimport './modules/module-site_header';\nimport './modules/magnific-popup';\nimport './modules/globals.js';\nimport './modules/tabs';\nimport './modules/velocity_settings';\nimport './modules/shareContent';\nimport './modules/separate-tabs';\nimport './modules/check-start-turbolinks';\nimport './modules/iframe_handler';\n", "// Do that to avoid JS \"imports\" hoisting\n// https://gorails.com/episodes/how-to-use-jquery-with-esbuild\nimport $ from 'jquery'\n\nwindow.$ = $\nwindow.jQuery = $\n", "// Do that to avoid JS \"imports\" hoisting\nimport I18n from 'i18n-js'\n\nwindow.I18n = I18n\n", "import 'devbridge-autocomplete';\nimport { AUTOCOMPLETE_DEFAULTS } from '../../../lib/shared';\n\n$(document).on('turbolinks:load', function() {\n  var $input = $('input#gobierto_search:visible');\n  var $mobile_input = $('input#gobierto_search_mobile');\n\n  function truncateOnWord(str, limit) {\n    var trimmable = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u2028\\u2029\\u3000\\uFEFF';\n    var reg = new RegExp('(?=[' + trimmable + '])');\n    var words = str.split(reg);\n    var count = 0;\n    return words.filter(function(word) {\n      count += word.length;\n      return count <= limit;\n    }).join('');\n  }\n\n  function itemUpdatedAt(d){\n    if (d['searchable_updated_at'] == null)\n      return;\n\n    return `${I18n.t(\"layouts.search.updated\")}: ${I18n.l(\"date.formats.short\", d['searchable_updated_at'])}`;\n  }\n\n  function itemDescription(d){\n    var maxLength = 200;\n    var description = (d['description'] || '');\n    if (description === '' || description.length < maxLength)\n      return description;\n    return truncateOnWord(description, maxLength) + '...';\n  }\n\n  function itemType(d){\n    let class_name = d['class_name'] || d['searchable_type']\n    if (class_name === undefined)\n      return;\n\n    switch (class_name){\n      case 'GobiertoPeople::Person':\n        return I18n.t(\"layouts.search.person_item\");\n      case 'GobiertoPeople::PersonPost':\n        return I18n.t(\"layouts.search.person_post_item\");\n      case 'GobiertoCalendars::Event':\n        return I18n.t(\"layouts.search.event_item\");\n      case 'GobiertoPeople::PersonStatement':\n        return I18n.t(\"layouts.search.person_statement_item\");\n      case 'GobiertoCms::Page':\n        return I18n.t(\"layouts.search.page_item\");\n      case 'GobiertoBudgets::BudgetLine':\n        if (d[\"meta\"] != null && d['meta']['kind'] === 'I') {\n          return I18n.t(\"layouts.search.budget_line_item_income\");\n        } else {\n          return I18n.t(\"layouts.search.budget_line_item_expense\");\n        }\n      case 'GobiertoPlans::Node':\n        return I18n.t(\"layouts.search.plan_project_item\");\n      case 'GobiertoData::Dataset':\n        return I18n.t(\"layouts.search.dataset_item\");\n    }\n  }\n\n  function formattedResult(d){\n    return `<a class=\"result\" href=\"${d['resource_path']}\" data-turbolinks=\"false\">\n             <h2>${d['title']}</h2>\n             <div class=\"description\">\n               <div>${itemDescription(d)}</div>\n               <span class=\"soft item_type\">${itemType(d)}</span>\n               ${itemUpdatedAt(d) ? ` \u00B7 <span class=\"soft updated_at\">${itemUpdatedAt(d)}</span>` : ''}\n             </div>\n           </a>`\n  }\n\n  var searchOptions = {\n    serviceUrl: '/api/v1/search',\n    dataType: 'json',\n    params: window.searchClient === undefined ?\n      {} :\n      {\n        filters:\n          {\n            searchable_type: window.searchClient.searchable_types\n          }\n      },\n    beforeRender(container) {\n      container.css({ width: '100%' })\n    },\n    transformResult: function(response) {\n      return {\n        suggestions: response.data.map(item => ({\n          value: item.attributes.title,\n          data: item.attributes\n        }))\n      }\n    },\n    formatResult: function(suggestion){\n      return formattedResult(suggestion.data)\n    },\n    noSuggestionNotice: `<div class=\"result\"><p>${ I18n.t(\"layouts.search.no_results\") }</p></div>`\n  };\n\n  $input.devbridgeAutocomplete($.extend({ appendTo: $input.parent() }, AUTOCOMPLETE_DEFAULTS, searchOptions));\n  $mobile_input.devbridgeAutocomplete($.extend({ appendTo: $mobile_input.parent() }, AUTOCOMPLETE_DEFAULTS, searchOptions));\n});\n", "/**\n*  Ajax Autocomplete for jQuery, version 2.0.1\n*  (c) 2025 Tomas Kirda\n*\n*  Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license.\n*  For details, see the web site: https://github.com/devbridge/jQuery-Autocomplete\n*/\n\n// src/index.ts\nimport jQuery from \"jquery\";\n\n// src/jquery-ref.ts\nvar $ = null;\nfunction setJQuery(jq) {\n  $ = jq;\n}\n\n// src/utils.ts\nvar utils = {\n  escapeRegExChars(value) {\n    return value.replace(/[|\\\\{}()[\\]^$+*?.]/g, \"\\\\$&\");\n  },\n  createNode(containerClass) {\n    const div = document.createElement(\"div\");\n    div.className = containerClass;\n    div.style.position = \"absolute\";\n    div.style.display = \"none\";\n    return div;\n  }\n};\nvar keys = {\n  ESC: 27,\n  TAB: 9,\n  RETURN: 13,\n  LEFT: 37,\n  UP: 38,\n  RIGHT: 39,\n  DOWN: 40\n};\n\n// src/format.ts\nfunction lookupFilter(suggestion, _originalQuery, queryLowerCase) {\n  return suggestion.value.toLowerCase().indexOf(queryLowerCase) !== -1;\n}\nfunction transformResult(response) {\n  return typeof response === \"string\" ? JSON.parse(response) : response;\n}\nfunction formatResult(suggestion, currentValue) {\n  if (!currentValue) {\n    const span = document.createElement(\"span\");\n    span.textContent = suggestion.value;\n    return span.innerHTML;\n  }\n  const pattern = \"(\" + utils.escapeRegExChars(currentValue) + \")\";\n  return suggestion.value.replace(new RegExp(pattern, \"gi\"), \"<strong>$1</strong>\").replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/\"/g, \"&quot;\").replace(/&lt;(\\/?strong)&gt;/g, \"<$1>\");\n}\nfunction formatGroup(_suggestion, category) {\n  const div = document.createElement(\"div\");\n  div.className = \"autocomplete-group\";\n  div.textContent = category;\n  return div.outerHTML;\n}\n\n// src/defaults.ts\nvar noop = () => {\n};\nvar defaults = {\n  ajaxSettings: {},\n  autoSelectFirst: false,\n  appendTo: \"body\",\n  width: \"auto\",\n  minChars: 1,\n  maxHeight: 300,\n  deferRequestBy: 0,\n  params: {},\n  formatResult,\n  formatGroup,\n  zIndex: 9999,\n  type: \"GET\",\n  noCache: false,\n  onSearchStart: noop,\n  onSearchComplete: noop,\n  onSearchError: noop,\n  preserveInput: false,\n  containerClass: \"autocomplete-suggestions\",\n  tabDisabled: false,\n  dataType: \"text\",\n  triggerSelectOnValidInput: true,\n  preventBadQueries: true,\n  lookupFilter,\n  paramName: \"query\",\n  transformResult,\n  showNoSuggestionNotice: false,\n  noSuggestionNotice: \"No results\",\n  orientation: \"bottom\",\n  forceFixPosition: false\n};\n\n// src/Autocomplete.ts\nvar _Autocomplete = class _Autocomplete {\n  constructor(el, options) {\n    this.suggestions = [];\n    this.badQueries = [];\n    this.selectedIndex = -1;\n    this.cachedResponse = {};\n    this.onChangeTimeout = null;\n    this.isLocal = false;\n    this.classes = {\n      selected: \"autocomplete-selected\",\n      suggestion: \"autocomplete-suggestion\"\n    };\n    this.hint = null;\n    this.hintValue = \"\";\n    this.selection = null;\n    this.currentRequest = null;\n    this.element = el;\n    this.el = $(el);\n    this.currentValue = el.value;\n    this.options = $.extend(true, {}, _Autocomplete.defaults, options);\n    this.initialize();\n    this.setOptions(options);\n  }\n  initialize() {\n    const self = this;\n    const suggestionSelector = `.${this.classes.suggestion}`;\n    const selected = this.classes.selected;\n    const options = this.options;\n    this.element.setAttribute(\"autocomplete\", \"off\");\n    this.$noSuggestionsContainer = $('<div class=\"autocomplete-no-suggestion\"></div>').html(\n      options.noSuggestionNotice\n    );\n    this.noSuggestionsContainer = this.$noSuggestionsContainer.get(0);\n    this.suggestionsContainer = _Autocomplete.utils.createNode(options.containerClass);\n    this.$container = $(this.suggestionsContainer);\n    this.$container.appendTo(options.appendTo || \"body\");\n    if (options.width !== \"auto\") {\n      this.$container.css(\"width\", options.width);\n    }\n    const container = this.$container;\n    container.on(\"mouseover.autocomplete\", suggestionSelector, function() {\n      self.activate($(this).data(\"index\"));\n    });\n    container.on(\"click.autocomplete\", suggestionSelector, function() {\n      self.select($(this).data(\"index\"));\n    });\n    container.on(\"mouseout.autocomplete\", () => {\n      this.selectedIndex = -1;\n      container.children(`.${selected}`).removeClass(selected);\n    });\n    container.on(\"click.autocomplete\", () => {\n      if (this.blurTimeoutId !== void 0) {\n        clearTimeout(this.blurTimeoutId);\n      }\n    });\n    this.fixPositionCapture = () => {\n      if (this.visible) {\n        this.fixPosition();\n      }\n    };\n    $(window).on(\"resize.autocomplete\", this.fixPositionCapture);\n    this.el.on(\"keydown.autocomplete\", (e) => this.onKeyPress(e));\n    this.el.on(\"keyup.autocomplete\", (e) => this.onKeyUp(e));\n    this.el.on(\"blur.autocomplete\", () => this.onBlur());\n    this.el.on(\"focus.autocomplete\", () => this.onFocus());\n    this.el.on(\"change.autocomplete\", (e) => this.onKeyUp(e));\n    this.el.on(\"input.autocomplete\", (e) => this.onKeyUp(e));\n  }\n  onFocus() {\n    if (this.disabled) {\n      return;\n    }\n    this.fixPosition();\n    if (this.el.val().length >= this.options.minChars) {\n      this.onValueChange();\n    }\n  }\n  onBlur() {\n    const options = this.options;\n    const query = this.getQuery(this.el.val());\n    this.blurTimeoutId = setTimeout(() => {\n      this.hide();\n      if (this.selection && this.currentValue !== query) {\n        options.onInvalidateSelection?.call(this.element);\n      }\n    }, 200);\n  }\n  abortAjax() {\n    if (this.currentRequest) {\n      this.currentRequest.abort();\n      this.currentRequest = null;\n    }\n  }\n  setOptions(suppliedOptions) {\n    const options = { ...this.options, ...suppliedOptions };\n    this.isLocal = Array.isArray(options.lookup);\n    if (this.isLocal) {\n      options.lookup = this.verifySuggestionsFormat(options.lookup);\n    }\n    options.orientation = this.validateOrientation(options.orientation, \"bottom\");\n    this.$container.css({\n      \"max-height\": `${options.maxHeight}px`,\n      width: `${options.width}px`,\n      \"z-index\": options.zIndex\n    });\n    this.options = options;\n  }\n  clearCache() {\n    this.cachedResponse = {};\n    this.badQueries = [];\n  }\n  clear() {\n    this.clearCache();\n    this.currentValue = \"\";\n    this.suggestions = [];\n  }\n  disable() {\n    this.disabled = true;\n    if (this.onChangeTimeout) {\n      clearTimeout(this.onChangeTimeout);\n    }\n    this.abortAjax();\n  }\n  enable() {\n    this.disabled = false;\n  }\n  fixPosition() {\n    const $container = this.$container;\n    const containerParent = $container.parent().get(0);\n    if (containerParent !== document.body && !this.options.forceFixPosition) {\n      return;\n    }\n    let orientation = this.options.orientation;\n    const containerHeight = $container.outerHeight() ?? 0;\n    const height = this.el.outerHeight() ?? 0;\n    const offset = this.el.offset() ?? { top: 0, left: 0 };\n    const styles = {\n      top: offset.top,\n      left: offset.left\n    };\n    if (orientation === \"auto\") {\n      const viewPortHeight = $(window).height() ?? 0;\n      const scrollTop = $(window).scrollTop() ?? 0;\n      const topOverflow = -scrollTop + offset.top - containerHeight;\n      const bottomOverflow = scrollTop + viewPortHeight - (offset.top + height + containerHeight);\n      orientation = Math.max(topOverflow, bottomOverflow) === topOverflow ? \"top\" : \"bottom\";\n    }\n    styles.top += orientation === \"top\" ? -containerHeight : height;\n    if (containerParent !== document.body && containerParent !== void 0) {\n      const opacity = $container.css(\"opacity\");\n      if (!this.visible) {\n        $container.css(\"opacity\", 0).show();\n      }\n      const parentOffsetDiff = $container.offsetParent().offset() ?? { top: 0, left: 0 };\n      styles.top -= parentOffsetDiff.top;\n      styles.top += containerParent.scrollTop;\n      styles.left -= parentOffsetDiff.left;\n      if (!this.visible) {\n        $container.css(\"opacity\", opacity).hide();\n      }\n    }\n    if (this.options.width === \"auto\") {\n      styles.width = `${this.el.outerWidth() ?? 0}px`;\n    }\n    $container.css(styles);\n  }\n  isCursorAtEnd() {\n    const valLength = this.el.val().length;\n    const { selectionStart } = this.element;\n    return typeof selectionStart === \"number\" ? selectionStart === valLength : true;\n  }\n  onKeyPress(e) {\n    if (!this.disabled && !this.visible && e.which === keys.DOWN && this.currentValue) {\n      this.suggest();\n      return;\n    }\n    if (this.disabled || !this.visible) {\n      return;\n    }\n    switch (e.which) {\n      case keys.ESC:\n        this.el.val(this.currentValue);\n        this.hide();\n        break;\n      case keys.RIGHT:\n        if (this.hint && this.options.onHint && this.isCursorAtEnd()) {\n          this.selectHint();\n          break;\n        }\n        return;\n      case keys.TAB:\n        if (this.hint && this.options.onHint) {\n          this.selectHint();\n          return;\n        }\n        if (this.selectedIndex === -1) {\n          this.hide();\n          return;\n        }\n        this.select(this.selectedIndex);\n        if (this.options.tabDisabled === false) {\n          return;\n        }\n        break;\n      case keys.RETURN:\n        if (this.selectedIndex === -1) {\n          this.hide();\n          return;\n        }\n        this.select(this.selectedIndex);\n        break;\n      case keys.UP:\n        this.moveUp();\n        break;\n      case keys.DOWN:\n        this.moveDown();\n        break;\n      default:\n        return;\n    }\n    e.stopImmediatePropagation();\n    e.preventDefault();\n  }\n  onKeyUp(e) {\n    if (this.disabled) {\n      return;\n    }\n    if (e.which === keys.UP || e.which === keys.DOWN) {\n      return;\n    }\n    if (this.onChangeTimeout) {\n      clearTimeout(this.onChangeTimeout);\n    }\n    if (this.currentValue !== this.el.val()) {\n      this.findBestHint();\n      if (this.options.deferRequestBy > 0) {\n        this.onChangeTimeout = setTimeout(\n          () => this.onValueChange(),\n          this.options.deferRequestBy\n        );\n      } else {\n        this.onValueChange();\n      }\n    }\n  }\n  onValueChange() {\n    if (this.ignoreValueChange) {\n      this.ignoreValueChange = false;\n      return;\n    }\n    const options = this.options;\n    const value = this.el.val();\n    const query = this.getQuery(value);\n    if (this.selection && this.currentValue !== query) {\n      this.selection = null;\n      options.onInvalidateSelection?.call(this.element);\n    }\n    if (this.onChangeTimeout) {\n      clearTimeout(this.onChangeTimeout);\n    }\n    this.currentValue = value;\n    this.selectedIndex = -1;\n    if (options.triggerSelectOnValidInput && this.isExactMatch(query)) {\n      this.select(0);\n      return;\n    }\n    if (query.length < options.minChars) {\n      this.hide();\n    } else {\n      this.getSuggestions(query);\n    }\n  }\n  isExactMatch(query) {\n    const { suggestions } = this;\n    return suggestions.length === 1 && suggestions[0].value.toLowerCase() === query.toLowerCase();\n  }\n  getQuery(value) {\n    const { delimiter } = this.options;\n    if (!delimiter) {\n      return value;\n    }\n    const parts = value.split(delimiter);\n    return parts[parts.length - 1].trim();\n  }\n  getSuggestionsLocal(query) {\n    const options = this.options;\n    const queryLowerCase = query.toLowerCase();\n    const filter = options.lookupFilter;\n    const limit = parseInt(options.lookupLimit, 10);\n    const lookup = options.lookup;\n    const matched = lookup.filter((suggestion) => filter(suggestion, query, queryLowerCase));\n    return {\n      suggestions: limit && matched.length > limit ? matched.slice(0, limit) : matched\n    };\n  }\n  getSuggestions(q) {\n    const options = this.options;\n    let serviceUrl = options.serviceUrl;\n    let response;\n    let cacheKey;\n    options.params[options.paramName] = q;\n    if (options.onSearchStart.call(this.element, options.params) === false) {\n      return;\n    }\n    const params = options.ignoreParams ? null : options.params;\n    if (typeof options.lookup === \"function\") {\n      options.lookup(q, (data) => {\n        const suggestions = this.verifySuggestionsFormat(data.suggestions);\n        this.suggestions = suggestions;\n        options.onSearchComplete.call(this.element, q, suggestions);\n        this.suggest();\n      });\n      return;\n    }\n    if (this.isLocal) {\n      response = this.getSuggestionsLocal(q);\n    } else {\n      if (typeof serviceUrl === \"function\") {\n        serviceUrl = serviceUrl.call(this.element, q);\n      }\n      cacheKey = `${serviceUrl}?${$.param(params ?? {})}`;\n      response = this.cachedResponse[cacheKey];\n    }\n    if (response && Array.isArray(response.suggestions)) {\n      this.suggestions = response.suggestions;\n      options.onSearchComplete.call(this.element, q, response.suggestions);\n      this.suggest();\n    } else if (!this.isBadQuery(q)) {\n      this.abortAjax();\n      const ajaxSettings = {\n        url: serviceUrl,\n        data: params ?? void 0,\n        type: options.type,\n        dataType: options.dataType,\n        ...options.ajaxSettings\n      };\n      this.currentRequest = $.ajax(ajaxSettings).done((data) => {\n        this.currentRequest = null;\n        const result = options.transformResult(data, q);\n        result.suggestions = this.verifySuggestionsFormat(result.suggestions);\n        options.onSearchComplete.call(this.element, q, result.suggestions);\n        this.processResponse(result, q, cacheKey);\n      }).fail((jqXHR, textStatus, errorThrown) => {\n        options.onSearchError.call(this.element, q, jqXHR, textStatus, errorThrown);\n      });\n    } else {\n      options.onSearchComplete.call(this.element, q, []);\n    }\n  }\n  isBadQuery(q) {\n    if (!this.options.preventBadQueries) {\n      return false;\n    }\n    return this.badQueries.some((bad) => q.indexOf(bad) === 0);\n  }\n  hide() {\n    if (this.options.onHide && this.visible) {\n      this.options.onHide.call(this.element, this.$container);\n    }\n    this.visible = false;\n    this.selectedIndex = -1;\n    if (this.onChangeTimeout) {\n      clearTimeout(this.onChangeTimeout);\n    }\n    this.$container.hide();\n    this.onHint(null);\n  }\n  groupSuggestionsByCategory(suggestions, key) {\n    const groups = /* @__PURE__ */ new Map();\n    for (const s of suggestions) {\n      const cat = s.data[key];\n      const arr = groups.get(cat);\n      if (arr) {\n        arr.push(s);\n      } else {\n        groups.set(cat, [s]);\n      }\n    }\n    return Array.from(groups.values()).flat();\n  }\n  suggest() {\n    if (!this.suggestions.length) {\n      if (this.options.showNoSuggestionNotice) {\n        this.noSuggestions();\n      } else {\n        this.hide();\n      }\n      return;\n    }\n    const options = this.options;\n    const { groupBy, formatResult: formatResultFn, beforeRender } = options;\n    const value = this.getQuery(this.currentValue);\n    const className = this.classes.suggestion;\n    const classSelected = this.classes.selected;\n    const container = this.$container;\n    if (options.triggerSelectOnValidInput && this.isExactMatch(value)) {\n      this.select(0);\n      return;\n    }\n    if (groupBy) {\n      this.suggestions = this.groupSuggestionsByCategory(this.suggestions, groupBy);\n    }\n    let category;\n    const formatGroupFn = (suggestion) => {\n      const currentCategory = suggestion.data[groupBy];\n      if (category === currentCategory) {\n        return \"\";\n      }\n      category = currentCategory;\n      return options.formatGroup(suggestion, category);\n    };\n    const html = this.suggestions.map((suggestion, i) => {\n      const group = groupBy ? formatGroupFn(suggestion) : \"\";\n      return `${group}<div class=\"${className}\" data-index=\"${i}\">${formatResultFn(suggestion, value, i)}</div>`;\n    }).join(\"\");\n    this.adjustContainerWidth();\n    this.$noSuggestionsContainer.detach();\n    container.html(html);\n    beforeRender?.call(this.element, container, this.suggestions);\n    this.fixPosition();\n    container.show();\n    if (options.autoSelectFirst) {\n      this.selectedIndex = 0;\n      container.scrollTop(0);\n      container.children(`.${className}`).first().addClass(classSelected);\n    }\n    this.visible = true;\n    this.findBestHint();\n  }\n  noSuggestions() {\n    const { beforeRender } = this.options;\n    const container = this.$container;\n    this.adjustContainerWidth();\n    this.$noSuggestionsContainer.detach();\n    container.empty().append(this.$noSuggestionsContainer);\n    beforeRender?.call(this.element, container, this.suggestions);\n    this.fixPosition();\n    container.show();\n    this.visible = true;\n  }\n  adjustContainerWidth() {\n    const { width } = this.options;\n    if (width === \"auto\") {\n      const w = this.el.outerWidth() ?? 0;\n      this.$container.css(\"width\", w > 0 ? w : 300);\n    } else if (width === \"flex\") {\n      this.$container.css(\"width\", \"\");\n    }\n  }\n  findBestHint() {\n    const value = this.el.val().toLowerCase();\n    if (!value) {\n      return;\n    }\n    const bestMatch = this.suggestions.find((s) => s.value.toLowerCase().indexOf(value) === 0) ?? null;\n    this.onHint(bestMatch);\n  }\n  onHint(suggestion) {\n    const { onHint: onHintCallback } = this.options;\n    const hintValue = suggestion ? this.currentValue + suggestion.value.substr(this.currentValue.length) : \"\";\n    if (this.hintValue !== hintValue) {\n      this.hintValue = hintValue;\n      this.hint = suggestion;\n      onHintCallback?.call(this.element, hintValue);\n    }\n  }\n  verifySuggestionsFormat(suggestions) {\n    if (suggestions.length && typeof suggestions[0] === \"string\") {\n      return suggestions.map((value) => ({ value, data: null }));\n    }\n    return suggestions.map(\n      (s) => typeof s.value === \"string\" ? s : { ...s, value: String(s.value) }\n    );\n  }\n  validateOrientation(orientation, fallback) {\n    const normalized = (orientation || \"\").trim().toLowerCase();\n    if (normalized === \"auto\" || normalized === \"top\" || normalized === \"bottom\") {\n      return normalized;\n    }\n    return fallback;\n  }\n  processResponse(result, originalQuery, cacheKey) {\n    const options = this.options;\n    result.suggestions = this.verifySuggestionsFormat(result.suggestions);\n    if (!options.noCache) {\n      this.cachedResponse[cacheKey] = result;\n      if (options.preventBadQueries && !result.suggestions.length) {\n        this.badQueries.push(originalQuery);\n      }\n    }\n    if (originalQuery !== this.getQuery(this.currentValue)) {\n      return;\n    }\n    this.suggestions = result.suggestions;\n    this.suggest();\n  }\n  activate(index) {\n    const selected = this.classes.selected;\n    const container = this.$container;\n    const children = container.find(`.${this.classes.suggestion}`);\n    container.find(`.${selected}`).removeClass(selected);\n    this.selectedIndex = index;\n    if (this.selectedIndex !== -1 && children.length > this.selectedIndex) {\n      const activeItem = children.get(this.selectedIndex);\n      $(activeItem).addClass(selected);\n      return activeItem;\n    }\n    return null;\n  }\n  selectHint() {\n    this.select(this.suggestions.indexOf(this.hint));\n  }\n  select(i) {\n    this.hide();\n    this.onSelect(i);\n  }\n  moveUp() {\n    if (this.selectedIndex === -1) {\n      return;\n    }\n    if (this.selectedIndex === 0) {\n      this.$container.children(`.${this.classes.suggestion}`).first().removeClass(this.classes.selected);\n      this.selectedIndex = -1;\n      this.ignoreValueChange = false;\n      this.el.val(this.currentValue);\n      this.findBestHint();\n      return;\n    }\n    this.adjustScroll(this.selectedIndex - 1);\n  }\n  moveDown() {\n    if (this.selectedIndex === this.suggestions.length - 1) {\n      return;\n    }\n    this.adjustScroll(this.selectedIndex + 1);\n  }\n  adjustScroll(index) {\n    const activeItem = this.activate(index);\n    if (!activeItem) {\n      return;\n    }\n    const heightDelta = $(activeItem).outerHeight() ?? 0;\n    const offsetTop = activeItem.offsetTop;\n    const container = this.$container;\n    const upperBound = container.scrollTop() ?? 0;\n    const lowerBound = upperBound + this.options.maxHeight - heightDelta;\n    if (offsetTop < upperBound) {\n      container.scrollTop(offsetTop);\n    } else if (offsetTop > lowerBound) {\n      container.scrollTop(offsetTop - this.options.maxHeight + heightDelta);\n    }\n    if (!this.options.preserveInput) {\n      this.ignoreValueChange = true;\n      this.el.val(this.getValue(this.suggestions[index].value));\n    }\n    this.onHint(null);\n  }\n  onSelect(index) {\n    const onSelectCallback = this.options.onSelect;\n    const suggestion = this.suggestions[index];\n    this.currentValue = this.getValue(suggestion.value);\n    if (this.currentValue !== this.el.val() && !this.options.preserveInput) {\n      this.el.val(this.currentValue);\n    }\n    this.onHint(null);\n    this.suggestions = [];\n    this.selection = suggestion;\n    onSelectCallback?.call(this.element, suggestion);\n  }\n  getValue(value) {\n    const { delimiter } = this.options;\n    if (!delimiter) {\n      return value;\n    }\n    const currentValue = this.currentValue;\n    const parts = currentValue.split(delimiter);\n    if (parts.length === 1) {\n      return value;\n    }\n    return currentValue.substr(0, currentValue.length - parts[parts.length - 1].length) + value;\n  }\n  dispose() {\n    this.el.off(\".autocomplete\").removeData(\"autocomplete\");\n    if (this.fixPositionCapture) {\n      $(window).off(\"resize.autocomplete\", this.fixPositionCapture);\n    }\n    this.$container.remove();\n  }\n};\n_Autocomplete.defaults = defaults;\n_Autocomplete.utils = utils;\nvar Autocomplete = _Autocomplete;\n\n// src/jquery-plugin.ts\nvar dataKey = \"autocomplete\";\nfunction installAutocomplete($2) {\n  setJQuery($2);\n  $2.Autocomplete = Autocomplete;\n  $2.fn.devbridgeAutocomplete = function(options, args) {\n    if (!arguments.length) {\n      return this.first().data(dataKey);\n    }\n    return this.each(function() {\n      const inputElement = $2(this);\n      let instance = inputElement.data(dataKey);\n      if (typeof options === \"string\") {\n        if (instance && typeof instance[options] === \"function\") {\n          instance[options](\n            args\n          );\n        }\n      } else {\n        if (instance && instance.dispose) {\n          instance.dispose();\n        }\n        instance = new Autocomplete(this, options);\n        inputElement.data(dataKey, instance);\n      }\n    });\n  };\n  if (!$2.fn.autocomplete) {\n    $2.fn.autocomplete = $2.fn.devbridgeAutocomplete;\n  }\n}\n\n// src/index.ts\ninstallAutocomplete(jQuery);\nexport {\n  Autocomplete\n};\n", "// legacy\nimport { AUTOCOMPLETE_DEFAULTS } from './modules/autocomplete_settings.js';\nimport { URLParams } from './modules/URLParams.js';\nimport d3locale from './modules/d3-locale.js';\nimport { createScaleColors } from './modules/createScaleColors.js';\nimport { slugString } from './modules/slugString.js';\nimport accounting from 'accounting';\nimport { SETTINGS } from './modules/accounting_settings.js';\naccounting.settings = SETTINGS;\n\n// new modules\nimport { Datepicker } from './modules/air-datepicker.js';\nimport { readMore } from './modules/read-more.js';\nimport { HorizontalCarousel } from './modules/horizontal-carousel.js';\nimport { ImageLightbox } from './modules/image-lightbox.js';\nimport { RangeSlider } from './modules/range-slider.js';\nimport { Middleware } from './modules/middleware.js';\nimport { debounce } from './modules/debounce.js';\nimport { checkAndReportAccessibility } from './modules/accessibility.js';\nimport { groupBy } from './modules/groupBy.js';\nimport { formatNumbers } from './modules/d3-format-numbers.js';\nimport appsignal from './modules/appsignal.js';\nimport wordwrap from './modules/wordwrap.js';\nimport tspans from './modules/tspans.js';\nimport divide from './modules/safe-division.js';\n\nexport {\n  AUTOCOMPLETE_DEFAULTS,\n  accounting,\n  createScaleColors,\n  d3locale,\n  URLParams,\n  RangeSlider,\n  Datepicker,\n  readMore,\n  HorizontalCarousel,\n  ImageLightbox,\n  Middleware,\n  slugString,\n  debounce,\n  checkAndReportAccessibility,\n  groupBy,\n  formatNumbers,\n  appsignal,\n  wordwrap,\n  tspans,\n  divide\n};\n", "export const AUTOCOMPLETE_DEFAULTS = {\n  dataType: 'json',\n  minChars: 3,\n  showNoSuggestionNotice: true,\n  noSuggestionNotice: 'Lo sentimos, pero no hay resultados.',\n  preserveInput: true,\n  autoSelectFirst: true,\n  triggerSelectOnValidInput: false,\n  preventBadQueries: false,\n  tabDisabled: true\n};", "// Fallback IE\nconst updateQueryStringParam = (key, value, url) => {\n  let urlQueryString = url || \"\"\n  // let urlQueryString = document.location.search\n  let newParam = key + '=' + value\n  let params = newParam\n\n  // If the \"search\" string exists, then build params from it\n  if (urlQueryString) {\n    var updateRegex = new RegExp('([?&])' + key + '[^&]*');\n    var removeRegex = new RegExp('([?&])' + key + '=[^&;]+[&;]?');\n\n    if (typeof value == 'undefined' || value == null || value == '') { // Remove param if value is empty\n      params = urlQueryString.replace(removeRegex, \"$1\");\n      params = params.replace(/[&;]$/, \"\");\n\n    } else if (urlQueryString.match(updateRegex) !== null) { // If param exists already, update it\n      params = urlQueryString.replace(updateRegex, \"$1\" + newParam);\n\n    } else { // Otherwise, add it to end of query string\n      params = urlQueryString + '&' + newParam;\n    }\n  }\n\n  return params\n};\n\nexport const URLParams = function(args) {\n\n  let params = \"\"\n\n  // Break if no endpoint\n  if (!args.endpoint) throw \"No endpoint provided\"\n\n  // Force param object to be present\n  if (!args.hasOwnProperty(\"params\")) {\n    args.params = {}\n  }\n\n  if (window.URLSearchParams) {\n    params = new URLSearchParams()\n\n    for (var param in args.params) {\n      if (args.params.hasOwnProperty(param)) {\n        params.set(param, args.params[param])\n      }\n    }\n  } else {\n    params = \"\"\n    // IE 10+\n    for (var ieParam in args.params) {\n      if (args.params.hasOwnProperty(ieParam)) {\n        params = updateQueryStringParam(ieParam, args.params[ieParam], params)\n      }\n    }\n  }\n\n  return `${args.endpoint}?${params.toString()}`\n}\n", "var es = {\n  \"decimal\": \",\",\n  \"thousands\": \".\",\n  \"grouping\": [3],\n  \"currency\": [\"\u20AC\", \"\"],\n  \"dateTime\": \"%a %b %e %X %Y\",\n  \"date\": \"%d/%m/%Y\",\n  \"time\": \"%H:%M:%S\",\n  \"periods\": [\"AM\", \"PM\"],\n  \"days\": [\"Domingo\", \"Lunes\", \"Martes\", \"Mi\u00E9rcoles\", \"Jueves\", \"Viernes\", \"S\u00E1bado\"],\n  \"shortDays\": [\"Dom\", \"Lun\", \"Mar\", \"Mi\", \"Jue\", \"Vie\", \"Sab\"],\n  \"months\": [\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\n  \"shortMonths\": [\"Ene\", \"Feb\", \"Mar\", \"Abr\", \"May\", \"Jun\", \"Jul\", \"Ago\", \"Sep\", \"Oct\", \"Nov\", \"Dic\"]\n};\n\nvar ca = {\n  \"decimal\": \",\",\n  \"thousands\": \".\",\n  \"grouping\": [3],\n  \"currency\": [\"\u20AC\", \"\"],\n  \"dateTime\": \"%a %b %e %X %Y\",\n  \"date\": \"%d/%m/%Y\",\n  \"time\": \"%H:%M:%S\",\n  \"periods\": [\"AM\", \"PM\"],\n  \"days\": [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"],\n  \"shortDays\": [\"Diu\", \"Dill\", \"Dim\", \"Dime\", \"Dij\", \"Div\", \"Div\"],\n  \"months\": [\"Gener\", \"Febrer\", \"Mar\u00E7\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\n  \"shortMonths\": [\"Gen\", \"Feb\", \"Mar\u00E7\", \"Abr\", \"Maig\", \"Juny\", \"Jul\", \"Ago\", \"Sep\", \"Oct\", \"Nov\", \"Des\"]\n}\n\nvar en = {\n  \"decimal\": \",\",\n  \"thousands\": \".\",\n  \"grouping\": [3],\n  \"currency\": [\"\u20AC\", \"\"],\n  \"dateTime\": \"%a %b %e %X %Y\",\n  \"date\": \"%d/%m/%Y\",\n  \"time\": \"%H:%M:%S\",\n  \"periods\": [\"AM\", \"PM\"],\n  \"days\": [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n  \"shortDays\": [\"Sun\", \"Mon\", \"Tues\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  \"months\": [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n  \"shortMonths\": [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n}\n\nexport default { es, en, ca }", "import * as d3 from 'd3';\n\nexport function createScaleColors(values, arrayDomain) {\n  let colorsGobiertoExtend = [\"var(--color-gobierto-turquoise)\", \"var(--color-gobierto-blue)\", \"var(--color-gobierto-red)\", \"var(--color-gobierto-yellow)\", \"var(--color-gobierto-extra-5)\", \"var(--color-gobierto-extra-6)\", \"var(--color-gobierto-extra-7)\", \"var(--color-gobierto-extra-8)\", \"var(--color-gobierto-extra-9)\", \"var(--color-gobierto-extra-10)\" ]\n  colorsGobiertoExtend = colorsGobiertoExtend.slice(0, values)\n\n  const colors = d3.scaleOrdinal()\n    .domain(arrayDomain)\n    .range(colorsGobiertoExtend);\n  return colors;\n}\n", "export * from \"d3-array\";\nexport * from \"d3-axis\";\nexport * from \"d3-brush\";\nexport * from \"d3-chord\";\nexport * from \"d3-color\";\nexport * from \"d3-contour\";\nexport * from \"d3-delaunay\";\nexport * from \"d3-dispatch\";\nexport * from \"d3-drag\";\nexport * from \"d3-dsv\";\nexport * from \"d3-ease\";\nexport * from \"d3-fetch\";\nexport * from \"d3-force\";\nexport * from \"d3-format\";\nexport * from \"d3-geo\";\nexport * from \"d3-hierarchy\";\nexport * from \"d3-interpolate\";\nexport * from \"d3-path\";\nexport * from \"d3-polygon\";\nexport * from \"d3-quadtree\";\nexport * from \"d3-random\";\nexport * from \"d3-scale\";\nexport * from \"d3-scale-chromatic\";\nexport * from \"d3-selection\";\nexport * from \"d3-shape\";\nexport * from \"d3-time\";\nexport * from \"d3-time-format\";\nexport * from \"d3-timer\";\nexport * from \"d3-transition\";\nexport * from \"d3-zoom\";\n", "export {\n  default as brush,\n  brushX,\n  brushY,\n  brushSelection\n} from \"./brush.js\";\n", "import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n    MODE_SPACE = {name: \"space\"},\n    MODE_HANDLE = {name: \"handle\"},\n    MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n  return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n  return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n  name: \"x\",\n  handles: [\"w\", \"e\"].map(type),\n  input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n  output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n  name: \"y\",\n  handles: [\"n\", \"s\"].map(type),\n  input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n  output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n  name: \"xy\",\n  handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n  input: function(xy) { return xy == null ? null : number2(xy); },\n  output: function(xy) { return xy; }\n};\n\nvar cursors = {\n  overlay: \"crosshair\",\n  selection: \"move\",\n  n: \"ns-resize\",\n  e: \"ew-resize\",\n  s: \"ns-resize\",\n  w: \"ew-resize\",\n  nw: \"nwse-resize\",\n  ne: \"nesw-resize\",\n  se: \"nwse-resize\",\n  sw: \"nesw-resize\"\n};\n\nvar flipX = {\n  e: \"w\",\n  w: \"e\",\n  nw: \"ne\",\n  ne: \"nw\",\n  se: \"sw\",\n  sw: \"se\"\n};\n\nvar flipY = {\n  n: \"s\",\n  s: \"n\",\n  nw: \"sw\",\n  ne: \"se\",\n  se: \"ne\",\n  sw: \"nw\"\n};\n\nvar signsX = {\n  overlay: +1,\n  selection: +1,\n  n: null,\n  e: +1,\n  s: null,\n  w: -1,\n  nw: -1,\n  ne: +1,\n  se: +1,\n  sw: -1\n};\n\nvar signsY = {\n  overlay: +1,\n  selection: +1,\n  n: -1,\n  e: null,\n  s: +1,\n  w: null,\n  nw: -1,\n  ne: -1,\n  se: +1,\n  sw: +1\n};\n\nfunction type(t) {\n  return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n  return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n  var svg = this.ownerSVGElement || this;\n  if (svg.hasAttribute(\"viewBox\")) {\n    svg = svg.viewBox.baseVal;\n    return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n  }\n  return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n  return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name \u201C__brush\u201D rather than auto-generated.\nfunction local(node) {\n  while (!node.__brush) if (!(node = node.parentNode)) return;\n  return node.__brush;\n}\n\nfunction empty(extent) {\n  return extent[0][0] === extent[1][0]\n      || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n  var state = node.__brush;\n  return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n  return brush(X);\n}\n\nexport function brushY() {\n  return brush(Y);\n}\n\nexport default function() {\n  return brush(XY);\n}\n\nfunction brush(dim) {\n  var extent = defaultExtent,\n      filter = defaultFilter,\n      touchable = defaultTouchable,\n      keys = true,\n      listeners = dispatch(\"start\", \"brush\", \"end\"),\n      handleSize = 6,\n      touchending;\n\n  function brush(group) {\n    var overlay = group\n        .property(\"__brush\", initialize)\n      .selectAll(\".overlay\")\n      .data([type(\"overlay\")]);\n\n    overlay.enter().append(\"rect\")\n        .attr(\"class\", \"overlay\")\n        .attr(\"pointer-events\", \"all\")\n        .attr(\"cursor\", cursors.overlay)\n      .merge(overlay)\n        .each(function() {\n          var extent = local(this).extent;\n          select(this)\n              .attr(\"x\", extent[0][0])\n              .attr(\"y\", extent[0][1])\n              .attr(\"width\", extent[1][0] - extent[0][0])\n              .attr(\"height\", extent[1][1] - extent[0][1]);\n        });\n\n    group.selectAll(\".selection\")\n      .data([type(\"selection\")])\n      .enter().append(\"rect\")\n        .attr(\"class\", \"selection\")\n        .attr(\"cursor\", cursors.selection)\n        .attr(\"fill\", \"#777\")\n        .attr(\"fill-opacity\", 0.3)\n        .attr(\"stroke\", \"#fff\")\n        .attr(\"shape-rendering\", \"crispEdges\");\n\n    var handle = group.selectAll(\".handle\")\n      .data(dim.handles, function(d) { return d.type; });\n\n    handle.exit().remove();\n\n    handle.enter().append(\"rect\")\n        .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n        .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n    group\n        .each(redraw)\n        .attr(\"fill\", \"none\")\n        .attr(\"pointer-events\", \"all\")\n        .on(\"mousedown.brush\", started)\n      .filter(touchable)\n        .on(\"touchstart.brush\", started)\n        .on(\"touchmove.brush\", touchmoved)\n        .on(\"touchend.brush touchcancel.brush\", touchended)\n        .style(\"touch-action\", \"none\")\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  brush.move = function(group, selection, event) {\n    if (group.tween) {\n      group\n          .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n          .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n          .tween(\"brush\", function() {\n            var that = this,\n                state = that.__brush,\n                emit = emitter(that, arguments),\n                selection0 = state.selection,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n                i = interpolate(selection0, selection1);\n\n            function tween(t) {\n              state.selection = t === 1 && selection1 === null ? null : i(t);\n              redraw.call(that);\n              emit.brush();\n            }\n\n            return selection0 !== null && selection1 !== null ? tween : tween(1);\n          });\n    } else {\n      group\n          .each(function() {\n            var that = this,\n                args = arguments,\n                state = that.__brush,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n                emit = emitter(that, args).beforestart();\n\n            interrupt(that);\n            state.selection = selection1 === null ? null : selection1;\n            redraw.call(that);\n            emit.start(event).brush(event).end(event);\n          });\n    }\n  };\n\n  brush.clear = function(group, event) {\n    brush.move(group, null, event);\n  };\n\n  function redraw() {\n    var group = select(this),\n        selection = local(this).selection;\n\n    if (selection) {\n      group.selectAll(\".selection\")\n          .style(\"display\", null)\n          .attr(\"x\", selection[0][0])\n          .attr(\"y\", selection[0][1])\n          .attr(\"width\", selection[1][0] - selection[0][0])\n          .attr(\"height\", selection[1][1] - selection[0][1]);\n\n      group.selectAll(\".handle\")\n          .style(\"display\", null)\n          .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n          .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n          .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n          .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n    }\n\n    else {\n      group.selectAll(\".selection,.handle\")\n          .style(\"display\", \"none\")\n          .attr(\"x\", null)\n          .attr(\"y\", null)\n          .attr(\"width\", null)\n          .attr(\"height\", null);\n    }\n  }\n\n  function emitter(that, args, clean) {\n    var emit = that.__brush.emitter;\n    return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n  }\n\n  function Emitter(that, args, clean) {\n    this.that = that;\n    this.args = args;\n    this.state = that.__brush;\n    this.active = 0;\n    this.clean = clean;\n  }\n\n  Emitter.prototype = {\n    beforestart: function() {\n      if (++this.active === 1) this.state.emitter = this, this.starting = true;\n      return this;\n    },\n    start: function(event, mode) {\n      if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n      else this.emit(\"brush\", event);\n      return this;\n    },\n    brush: function(event, mode) {\n      this.emit(\"brush\", event, mode);\n      return this;\n    },\n    end: function(event, mode) {\n      if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n      return this;\n    },\n    emit: function(type, event, mode) {\n      var d = select(this.that).datum();\n      listeners.call(\n        type,\n        this.that,\n        new BrushEvent(type, {\n          sourceEvent: event,\n          target: brush,\n          selection: dim.output(this.state.selection),\n          mode,\n          dispatch: listeners\n        }),\n        d\n      );\n    }\n  };\n\n  function started(event) {\n    if (touchending && !event.touches) return;\n    if (!filter.apply(this, arguments)) return;\n\n    var that = this,\n        type = event.target.__data__.type,\n        mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n        signX = dim === Y ? null : signsX[type],\n        signY = dim === X ? null : signsY[type],\n        state = local(that),\n        extent = state.extent,\n        selection = state.selection,\n        W = extent[0][0], w0, w1,\n        N = extent[0][1], n0, n1,\n        E = extent[1][0], e0, e1,\n        S = extent[1][1], s0, s1,\n        dx = 0,\n        dy = 0,\n        moving,\n        shifting = signX && signY && keys && event.shiftKey,\n        lockX,\n        lockY,\n        points = Array.from(event.touches || [event], t => {\n          const i = t.identifier;\n          t = pointer(t, that);\n          t.point0 = t.slice();\n          t.identifier = i;\n          return t;\n        });\n\n    interrupt(that);\n    var emit = emitter(that, arguments, true).beforestart();\n\n    if (type === \"overlay\") {\n      if (selection) moving = true;\n      const pts = [points[0], points[1] || points[0]];\n      state.selection = selection = [[\n          w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n          n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n        ], [\n          e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n          s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n        ]];\n      if (points.length > 1) move(event);\n    } else {\n      w0 = selection[0][0];\n      n0 = selection[0][1];\n      e0 = selection[1][0];\n      s0 = selection[1][1];\n    }\n\n    w1 = w0;\n    n1 = n0;\n    e1 = e0;\n    s1 = s0;\n\n    var group = select(that)\n        .attr(\"pointer-events\", \"none\");\n\n    var overlay = group.selectAll(\".overlay\")\n        .attr(\"cursor\", cursors[type]);\n\n    if (event.touches) {\n      emit.moved = moved;\n      emit.ended = ended;\n    } else {\n      var view = select(event.view)\n          .on(\"mousemove.brush\", moved, true)\n          .on(\"mouseup.brush\", ended, true);\n      if (keys) view\n          .on(\"keydown.brush\", keydowned, true)\n          .on(\"keyup.brush\", keyupped, true)\n\n      dragDisable(event.view);\n    }\n\n    redraw.call(that);\n    emit.start(event, mode.name);\n\n    function moved(event) {\n      for (const p of event.changedTouches || [event]) {\n        for (const d of points)\n          if (d.identifier === p.identifier) d.cur = pointer(p, that);\n      }\n      if (shifting && !lockX && !lockY && points.length === 1) {\n        const point = points[0];\n        if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n          lockY = true;\n        else\n          lockX = true;\n      }\n      for (const point of points)\n        if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n      moving = true;\n      noevent(event);\n      move(event);\n    }\n\n    function move(event) {\n      const point = points[0], point0 = point.point0;\n      var t;\n\n      dx = point[0] - point0[0];\n      dy = point[1] - point0[1];\n\n      switch (mode) {\n        case MODE_SPACE:\n        case MODE_DRAG: {\n          if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n          if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n          break;\n        }\n        case MODE_HANDLE: {\n          if (points[1]) {\n            if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n            if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n          } else {\n            if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n            else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n            if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n            else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n          }\n          break;\n        }\n        case MODE_CENTER: {\n          if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n          if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n          break;\n        }\n      }\n\n      if (e1 < w1) {\n        signX *= -1;\n        t = w0, w0 = e0, e0 = t;\n        t = w1, w1 = e1, e1 = t;\n        if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n      }\n\n      if (s1 < n1) {\n        signY *= -1;\n        t = n0, n0 = s0, s0 = t;\n        t = n1, n1 = s1, s1 = t;\n        if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n      }\n\n      if (state.selection) selection = state.selection; // May be set by brush.move!\n      if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n      if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n      if (selection[0][0] !== w1\n          || selection[0][1] !== n1\n          || selection[1][0] !== e1\n          || selection[1][1] !== s1) {\n        state.selection = [[w1, n1], [e1, s1]];\n        redraw.call(that);\n        emit.brush(event, mode.name);\n      }\n    }\n\n    function ended(event) {\n      nopropagation(event);\n      if (event.touches) {\n        if (event.touches.length) return;\n        if (touchending) clearTimeout(touchending);\n        touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n      } else {\n        dragEnable(event.view, moving);\n        view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n      }\n      group.attr(\"pointer-events\", \"all\");\n      overlay.attr(\"cursor\", cursors.overlay);\n      if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n      if (empty(selection)) state.selection = null, redraw.call(that);\n      emit.end(event, mode.name);\n    }\n\n    function keydowned(event) {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          shifting = signX && signY;\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_HANDLE) {\n            if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n            if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n            mode = MODE_CENTER;\n            move(event);\n          }\n          break;\n        }\n        case 32: { // SPACE; takes priority over ALT\n          if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n            if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n            mode = MODE_SPACE;\n            overlay.attr(\"cursor\", cursors.selection);\n            move(event);\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent(event);\n    }\n\n    function keyupped(event) {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          if (shifting) {\n            lockX = lockY = shifting = false;\n            move(event);\n          }\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n            if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n            mode = MODE_HANDLE;\n            move(event);\n          }\n          break;\n        }\n        case 32: { // SPACE\n          if (mode === MODE_SPACE) {\n            if (event.altKey) {\n              if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n              if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n              mode = MODE_CENTER;\n            } else {\n              if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n              if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n              mode = MODE_HANDLE;\n            }\n            overlay.attr(\"cursor\", cursors[type]);\n            move(event);\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent(event);\n    }\n  }\n\n  function touchmoved(event) {\n    emitter(this, arguments).moved(event);\n  }\n\n  function touchended(event) {\n    emitter(this, arguments).ended(event);\n  }\n\n  function initialize() {\n    var state = this.__brush || {selection: null};\n    state.extent = number2(extent.apply(this, arguments));\n    state.dim = dim;\n    return state;\n  }\n\n  brush.extent = function(_) {\n    return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n  };\n\n  brush.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n  };\n\n  brush.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n  };\n\n  brush.handleSize = function(_) {\n    return arguments.length ? (handleSize = +_, brush) : handleSize;\n  };\n\n  brush.keyModifiers = function(_) {\n    return arguments.length ? (keys = !!_, brush) : keys;\n  };\n\n  brush.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? brush : value;\n  };\n\n  return brush;\n}\n", "export {default as dispatch} from \"./dispatch.js\";\n", "var noop = {value: () => {}};\n\nfunction dispatch() {\n  for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n    if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n    _[t] = [];\n  }\n  return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n  this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n    return {type: t, name: name};\n  });\n}\n\nDispatch.prototype = dispatch.prototype = {\n  constructor: Dispatch,\n  on: function(typename, callback) {\n    var _ = this._,\n        T = parseTypenames(typename + \"\", _),\n        t,\n        i = -1,\n        n = T.length;\n\n    // If no callback was specified, return the callback of the given type and name.\n    if (arguments.length < 2) {\n      while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n      return;\n    }\n\n    // If a type was specified, set the callback for the given type and name.\n    // Otherwise, if a null callback was specified, remove callbacks of the given name.\n    if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n    while (++i < n) {\n      if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n      else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n    }\n\n    return this;\n  },\n  copy: function() {\n    var copy = {}, _ = this._;\n    for (var t in _) copy[t] = _[t].slice();\n    return new Dispatch(copy);\n  },\n  call: function(type, that) {\n    if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  },\n  apply: function(type, that, args) {\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  }\n};\n\nfunction get(type, name) {\n  for (var i = 0, n = type.length, c; i < n; ++i) {\n    if ((c = type[i]).name === name) {\n      return c.value;\n    }\n  }\n}\n\nfunction set(type, name, callback) {\n  for (var i = 0, n = type.length; i < n; ++i) {\n    if (type[i].name === name) {\n      type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n      break;\n    }\n  }\n  if (callback != null) type.push({name: name, value: callback});\n  return type;\n}\n\nexport default dispatch;\n", "export {default as create} from \"./create.js\";\nexport {default as creator} from \"./creator.js\";\nexport {default as local} from \"./local.js\";\nexport {default as matcher} from \"./matcher.js\";\nexport {default as namespace} from \"./namespace.js\";\nexport {default as namespaces} from \"./namespaces.js\";\nexport {default as pointer} from \"./pointer.js\";\nexport {default as pointers} from \"./pointers.js\";\nexport {default as select} from \"./select.js\";\nexport {default as selectAll} from \"./selectAll.js\";\nexport {default as selection} from \"./selection/index.js\";\nexport {default as selector} from \"./selector.js\";\nexport {default as selectorAll} from \"./selectorAll.js\";\nexport {styleValue as style} from \"./selection/style.js\";\nexport {default as window} from \"./window.js\";\n", "import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n  return function() {\n    var document = this.ownerDocument,\n        uri = this.namespaceURI;\n    return uri === xhtml && document.documentElement.namespaceURI === xhtml\n        ? document.createElement(name)\n        : document.createElementNS(uri, name);\n  };\n}\n\nfunction creatorFixed(fullname) {\n  return function() {\n    return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n  };\n}\n\nexport default function(name) {\n  var fullname = namespace(name);\n  return (fullname.local\n      ? creatorFixed\n      : creatorInherit)(fullname);\n}\n", "import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n  var prefix = name += \"\", i = prefix.indexOf(\":\");\n  if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n  return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n", "export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n  svg: \"http://www.w3.org/2000/svg\",\n  xhtml: xhtml,\n  xlink: \"http://www.w3.org/1999/xlink\",\n  xml: \"http://www.w3.org/XML/1998/namespace\",\n  xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n", "import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n  this._groups = groups;\n  this._parents = parents;\n}\n\nfunction selection() {\n  return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n  return this;\n}\n\nSelection.prototype = selection.prototype = {\n  constructor: Selection,\n  select: selection_select,\n  selectAll: selection_selectAll,\n  selectChild: selection_selectChild,\n  selectChildren: selection_selectChildren,\n  filter: selection_filter,\n  data: selection_data,\n  enter: selection_enter,\n  exit: selection_exit,\n  join: selection_join,\n  merge: selection_merge,\n  selection: selection_selection,\n  order: selection_order,\n  sort: selection_sort,\n  call: selection_call,\n  nodes: selection_nodes,\n  node: selection_node,\n  size: selection_size,\n  empty: selection_empty,\n  each: selection_each,\n  attr: selection_attr,\n  style: selection_style,\n  property: selection_property,\n  classed: selection_classed,\n  text: selection_text,\n  html: selection_html,\n  raise: selection_raise,\n  lower: selection_lower,\n  append: selection_append,\n  insert: selection_insert,\n  remove: selection_remove,\n  clone: selection_clone,\n  datum: selection_datum,\n  on: selection_on,\n  dispatch: selection_dispatch,\n  [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n", "import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n", "function none() {}\n\nexport default function(selector) {\n  return selector == null ? none : function() {\n    return this.querySelector(selector);\n  };\n}\n", "import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n  return function() {\n    return array(select.apply(this, arguments));\n  };\n}\n\nexport default function(select) {\n  if (typeof select === \"function\") select = arrayAll(select);\n  else select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        subgroups.push(select.call(node, node.__data__, i, group));\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, parents);\n}\n", "// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don\u2019t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n  return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n", "function empty() {\n  return [];\n}\n\nexport default function(selector) {\n  return selector == null ? empty : function() {\n    return this.querySelectorAll(selector);\n  };\n}\n", "import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n  return function() {\n    return find.call(this.children, match);\n  };\n}\n\nfunction childFirst() {\n  return this.firstElementChild;\n}\n\nexport default function(match) {\n  return this.select(match == null ? childFirst\n      : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n", "export default function(selector) {\n  return function() {\n    return this.matches(selector);\n  };\n}\n\nexport function childMatcher(selector) {\n  return function(node) {\n    return node.matches(selector);\n  };\n}\n\n", "import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n  return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n  return function() {\n    return filter.call(this.children, match);\n  };\n}\n\nexport default function(match) {\n  return this.selectAll(match == null ? children\n      : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n", "import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n", "import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n  var i = 0,\n      node,\n      groupLength = group.length,\n      dataLength = data.length;\n\n  // Put any non-null nodes that fit into update.\n  // Put any null nodes into enter.\n  // Put any remaining data into enter.\n  for (; i < dataLength; ++i) {\n    if (node = group[i]) {\n      node.__data__ = data[i];\n      update[i] = node;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Put any non-null nodes that don\u2019t fit into exit.\n  for (; i < groupLength; ++i) {\n    if (node = group[i]) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n  var i,\n      node,\n      nodeByKeyValue = new Map,\n      groupLength = group.length,\n      dataLength = data.length,\n      keyValues = new Array(groupLength),\n      keyValue;\n\n  // Compute the key for each node.\n  // If multiple nodes have the same key, the duplicates are added to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if (node = group[i]) {\n      keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n      if (nodeByKeyValue.has(keyValue)) {\n        exit[i] = node;\n      } else {\n        nodeByKeyValue.set(keyValue, node);\n      }\n    }\n  }\n\n  // Compute the key for each datum.\n  // If there a node associated with this key, join and add it to update.\n  // If there is not (or the key is a duplicate), add it to enter.\n  for (i = 0; i < dataLength; ++i) {\n    keyValue = key.call(parent, data[i], i, data) + \"\";\n    if (node = nodeByKeyValue.get(keyValue)) {\n      update[i] = node;\n      node.__data__ = data[i];\n      nodeByKeyValue.delete(keyValue);\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Add any remaining nodes that were not bound to data to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction datum(node) {\n  return node.__data__;\n}\n\nexport default function(value, key) {\n  if (!arguments.length) return Array.from(this, datum);\n\n  var bind = key ? bindKey : bindIndex,\n      parents = this._parents,\n      groups = this._groups;\n\n  if (typeof value !== \"function\") value = constant(value);\n\n  for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n    var parent = parents[j],\n        group = groups[j],\n        groupLength = group.length,\n        data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n        dataLength = data.length,\n        enterGroup = enter[j] = new Array(dataLength),\n        updateGroup = update[j] = new Array(dataLength),\n        exitGroup = exit[j] = new Array(groupLength);\n\n    bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n    // Now connect the enter nodes to their following update node, such that\n    // appendChild can insert the materialized enter node before this node,\n    // rather than at the end of the parent node.\n    for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n      if (previous = enterGroup[i0]) {\n        if (i0 >= i1) i1 = i0 + 1;\n        while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n        previous._next = next || null;\n      }\n    }\n  }\n\n  update = new Selection(update, parents);\n  update._enter = enter;\n  update._exit = exit;\n  return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn\u2019t worried about \u201Clive\u201D collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don\u2019t; we\u2019d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n  return typeof data === \"object\" && \"length\" in data\n    ? data // Array, TypedArray, NodeList, array-like\n    : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n", "import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n  return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n  this.ownerDocument = parent.ownerDocument;\n  this.namespaceURI = parent.namespaceURI;\n  this._next = null;\n  this._parent = parent;\n  this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n  constructor: EnterNode,\n  appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n  insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n  querySelector: function(selector) { return this._parent.querySelector(selector); },\n  querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n", "export default function(update) {\n  return new Array(update.length);\n}\n", "export default function(x) {\n  return function() {\n    return x;\n  };\n}\n", "import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n  return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n", "export default function(onenter, onupdate, onexit) {\n  var enter = this.enter(), update = this, exit = this.exit();\n  if (typeof onenter === \"function\") {\n    enter = onenter(enter);\n    if (enter) enter = enter.selection();\n  } else {\n    enter = enter.append(onenter + \"\");\n  }\n  if (onupdate != null) {\n    update = onupdate(update);\n    if (update) update = update.selection();\n  }\n  if (onexit == null) exit.remove(); else onexit(exit);\n  return enter && update ? enter.merge(update).order() : update;\n}\n", "import {Selection} from \"./index.js\";\n\nexport default function(context) {\n  var selection = context.selection ? context.selection() : context;\n\n  for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Selection(merges, this._parents);\n}\n", "export default function() {\n\n  for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n    for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n      if (node = group[i]) {\n        if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n        next = node;\n      }\n    }\n  }\n\n  return this;\n}\n", "import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n  if (!compare) compare = ascending;\n\n  function compareNode(a, b) {\n    return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n  }\n\n  for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        sortgroup[i] = node;\n      }\n    }\n    sortgroup.sort(compareNode);\n  }\n\n  return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n", "export default function() {\n  var callback = arguments[0];\n  arguments[0] = this;\n  callback.apply(null, arguments);\n  return this;\n}\n", "export default function() {\n  return Array.from(this);\n}\n", "export default function() {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n      var node = group[i];\n      if (node) return node;\n    }\n  }\n\n  return null;\n}\n", "export default function() {\n  let size = 0;\n  for (const node of this) ++size; // eslint-disable-line no-unused-vars\n  return size;\n}\n", "export default function() {\n  return !this.node();\n}\n", "export default function(callback) {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) callback.call(node, node.__data__, i, group);\n    }\n  }\n\n  return this;\n}\n", "import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, value) {\n  return function() {\n    this.setAttribute(name, value);\n  };\n}\n\nfunction attrConstantNS(fullname, value) {\n  return function() {\n    this.setAttributeNS(fullname.space, fullname.local, value);\n  };\n}\n\nfunction attrFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttribute(name);\n    else this.setAttribute(name, v);\n  };\n}\n\nfunction attrFunctionNS(fullname, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n    else this.setAttributeNS(fullname.space, fullname.local, v);\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name);\n\n  if (arguments.length < 2) {\n    var node = this.node();\n    return fullname.local\n        ? node.getAttributeNS(fullname.space, fullname.local)\n        : node.getAttribute(fullname);\n  }\n\n  return this.each((value == null\n      ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)\n      : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n", "import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, value, priority) {\n  return function() {\n    this.style.setProperty(name, value, priority);\n  };\n}\n\nfunction styleFunction(name, value, priority) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.style.removeProperty(name);\n    else this.style.setProperty(name, v, priority);\n  };\n}\n\nexport default function(name, value, priority) {\n  return arguments.length > 1\n      ? this.each((value == null\n            ? styleRemove : typeof value === \"function\"\n            ? styleFunction\n            : styleConstant)(name, value, priority == null ? \"\" : priority))\n      : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n  return node.style.getPropertyValue(name)\n      || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n", "export default function(node) {\n  return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n      || (node.document && node) // node is a Window\n      || node.defaultView; // node is a Document\n}\n", "function propertyRemove(name) {\n  return function() {\n    delete this[name];\n  };\n}\n\nfunction propertyConstant(name, value) {\n  return function() {\n    this[name] = value;\n  };\n}\n\nfunction propertyFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) delete this[name];\n    else this[name] = v;\n  };\n}\n\nexport default function(name, value) {\n  return arguments.length > 1\n      ? this.each((value == null\n          ? propertyRemove : typeof value === \"function\"\n          ? propertyFunction\n          : propertyConstant)(name, value))\n      : this.node()[name];\n}\n", "function classArray(string) {\n  return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n  return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n  this._node = node;\n  this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n  add: function(name) {\n    var i = this._names.indexOf(name);\n    if (i < 0) {\n      this._names.push(name);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  remove: function(name) {\n    var i = this._names.indexOf(name);\n    if (i >= 0) {\n      this._names.splice(i, 1);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  contains: function(name) {\n    return this._names.indexOf(name) >= 0;\n  }\n};\n\nfunction classedAdd(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n  return function() {\n    classedAdd(this, names);\n  };\n}\n\nfunction classedFalse(names) {\n  return function() {\n    classedRemove(this, names);\n  };\n}\n\nfunction classedFunction(names, value) {\n  return function() {\n    (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n  };\n}\n\nexport default function(name, value) {\n  var names = classArray(name + \"\");\n\n  if (arguments.length < 2) {\n    var list = classList(this.node()), i = -1, n = names.length;\n    while (++i < n) if (!list.contains(names[i])) return false;\n    return true;\n  }\n\n  return this.each((typeof value === \"function\"\n      ? classedFunction : value\n      ? classedTrue\n      : classedFalse)(names, value));\n}\n", "function textRemove() {\n  this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.textContent = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? textRemove : (typeof value === \"function\"\n          ? textFunction\n          : textConstant)(value))\n      : this.node().textContent;\n}\n", "function htmlRemove() {\n  this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n  return function() {\n    this.innerHTML = value;\n  };\n}\n\nfunction htmlFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.innerHTML = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? htmlRemove : (typeof value === \"function\"\n          ? htmlFunction\n          : htmlConstant)(value))\n      : this.node().innerHTML;\n}\n", "function raise() {\n  if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n  return this.each(raise);\n}\n", "function lower() {\n  if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n  return this.each(lower);\n}\n", "import creator from \"../creator.js\";\n\nexport default function(name) {\n  var create = typeof name === \"function\" ? name : creator(name);\n  return this.select(function() {\n    return this.appendChild(create.apply(this, arguments));\n  });\n}\n", "import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n  return null;\n}\n\nexport default function(name, before) {\n  var create = typeof name === \"function\" ? name : creator(name),\n      select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n  return this.select(function() {\n    return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n  });\n}\n", "function remove() {\n  var parent = this.parentNode;\n  if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n  return this.each(remove);\n}\n", "function selection_cloneShallow() {\n  var clone = this.cloneNode(false), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n  var clone = this.cloneNode(true), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n  return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n", "export default function(value) {\n  return arguments.length\n      ? this.property(\"__data__\", value)\n      : this.node().__data__;\n}\n", "function contextListener(listener) {\n  return function(event) {\n    listener.call(this, event, this.__data__);\n  };\n}\n\nfunction parseTypenames(typenames) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    return {type: t, name: name};\n  });\n}\n\nfunction onRemove(typename) {\n  return function() {\n    var on = this.__on;\n    if (!on) return;\n    for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n      if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.options);\n      } else {\n        on[++i] = o;\n      }\n    }\n    if (++i) on.length = i;\n    else delete this.__on;\n  };\n}\n\nfunction onAdd(typename, value, options) {\n  return function() {\n    var on = this.__on, o, listener = contextListener(value);\n    if (on) for (var j = 0, m = on.length; j < m; ++j) {\n      if ((o = on[j]).type === typename.type && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.options);\n        this.addEventListener(o.type, o.listener = listener, o.options = options);\n        o.value = value;\n        return;\n      }\n    }\n    this.addEventListener(typename.type, listener, options);\n    o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n    if (!on) this.__on = [o];\n    else on.push(o);\n  };\n}\n\nexport default function(typename, value, options) {\n  var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n  if (arguments.length < 2) {\n    var on = this.node().__on;\n    if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n      for (i = 0, o = on[j]; i < n; ++i) {\n        if ((t = typenames[i]).type === o.type && t.name === o.name) {\n          return o.value;\n        }\n      }\n    }\n    return;\n  }\n\n  on = value ? onAdd : onRemove;\n  for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n  return this;\n}\n", "import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n  var window = defaultView(node),\n      event = window.CustomEvent;\n\n  if (typeof event === \"function\") {\n    event = new event(type, params);\n  } else {\n    event = window.document.createEvent(\"Event\");\n    if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n    else event.initEvent(type, false, false);\n  }\n\n  node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params);\n  };\n}\n\nfunction dispatchFunction(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params.apply(this, arguments));\n  };\n}\n\nexport default function(type, params) {\n  return this.each((typeof params === \"function\"\n      ? dispatchFunction\n      : dispatchConstant)(type, params));\n}\n", "export default function*() {\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) yield node;\n    }\n  }\n}\n", "export {default as interpolate} from \"./value.js\";\nexport {default as interpolateArray} from \"./array.js\";\nexport {default as interpolateBasis} from \"./basis.js\";\nexport {default as interpolateBasisClosed} from \"./basisClosed.js\";\nexport {default as interpolateDate} from \"./date.js\";\nexport {default as interpolateDiscrete} from \"./discrete.js\";\nexport {default as interpolateHue} from \"./hue.js\";\nexport {default as interpolateNumber} from \"./number.js\";\nexport {default as interpolateNumberArray} from \"./numberArray.js\";\nexport {default as interpolateObject} from \"./object.js\";\nexport {default as interpolateRound} from \"./round.js\";\nexport {default as interpolateString} from \"./string.js\";\nexport {interpolateTransformCss, interpolateTransformSvg} from \"./transform/index.js\";\nexport {default as interpolateZoom} from \"./zoom.js\";\nexport {default as interpolateRgb, rgbBasis as interpolateRgbBasis, rgbBasisClosed as interpolateRgbBasisClosed} from \"./rgb.js\";\nexport {default as interpolateHsl, hslLong as interpolateHslLong} from \"./hsl.js\";\nexport {default as interpolateLab} from \"./lab.js\";\nexport {default as interpolateHcl, hclLong as interpolateHclLong} from \"./hcl.js\";\nexport {default as interpolateCubehelix, cubehelixLong as interpolateCubehelixLong} from \"./cubehelix.js\";\nexport {default as piecewise} from \"./piecewise.js\";\nexport {default as quantize} from \"./quantize.js\";\n", "export {default as color, rgb, hsl} from \"./color.js\";\nexport {default as lab, hcl, lch, gray} from \"./lab.js\";\nexport {default as cubehelix} from \"./cubehelix.js\";\n", "import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n    reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n    reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n    reHex = /^#([0-9a-f]{3,8})$/,\n    reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n    reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n    reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n    reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n    reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n    reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n  aliceblue: 0xf0f8ff,\n  antiquewhite: 0xfaebd7,\n  aqua: 0x00ffff,\n  aquamarine: 0x7fffd4,\n  azure: 0xf0ffff,\n  beige: 0xf5f5dc,\n  bisque: 0xffe4c4,\n  black: 0x000000,\n  blanchedalmond: 0xffebcd,\n  blue: 0x0000ff,\n  blueviolet: 0x8a2be2,\n  brown: 0xa52a2a,\n  burlywood: 0xdeb887,\n  cadetblue: 0x5f9ea0,\n  chartreuse: 0x7fff00,\n  chocolate: 0xd2691e,\n  coral: 0xff7f50,\n  cornflowerblue: 0x6495ed,\n  cornsilk: 0xfff8dc,\n  crimson: 0xdc143c,\n  cyan: 0x00ffff,\n  darkblue: 0x00008b,\n  darkcyan: 0x008b8b,\n  darkgoldenrod: 0xb8860b,\n  darkgray: 0xa9a9a9,\n  darkgreen: 0x006400,\n  darkgrey: 0xa9a9a9,\n  darkkhaki: 0xbdb76b,\n  darkmagenta: 0x8b008b,\n  darkolivegreen: 0x556b2f,\n  darkorange: 0xff8c00,\n  darkorchid: 0x9932cc,\n  darkred: 0x8b0000,\n  darksalmon: 0xe9967a,\n  darkseagreen: 0x8fbc8f,\n  darkslateblue: 0x483d8b,\n  darkslategray: 0x2f4f4f,\n  darkslategrey: 0x2f4f4f,\n  darkturquoise: 0x00ced1,\n  darkviolet: 0x9400d3,\n  deeppink: 0xff1493,\n  deepskyblue: 0x00bfff,\n  dimgray: 0x696969,\n  dimgrey: 0x696969,\n  dodgerblue: 0x1e90ff,\n  firebrick: 0xb22222,\n  floralwhite: 0xfffaf0,\n  forestgreen: 0x228b22,\n  fuchsia: 0xff00ff,\n  gainsboro: 0xdcdcdc,\n  ghostwhite: 0xf8f8ff,\n  gold: 0xffd700,\n  goldenrod: 0xdaa520,\n  gray: 0x808080,\n  green: 0x008000,\n  greenyellow: 0xadff2f,\n  grey: 0x808080,\n  honeydew: 0xf0fff0,\n  hotpink: 0xff69b4,\n  indianred: 0xcd5c5c,\n  indigo: 0x4b0082,\n  ivory: 0xfffff0,\n  khaki: 0xf0e68c,\n  lavender: 0xe6e6fa,\n  lavenderblush: 0xfff0f5,\n  lawngreen: 0x7cfc00,\n  lemonchiffon: 0xfffacd,\n  lightblue: 0xadd8e6,\n  lightcoral: 0xf08080,\n  lightcyan: 0xe0ffff,\n  lightgoldenrodyellow: 0xfafad2,\n  lightgray: 0xd3d3d3,\n  lightgreen: 0x90ee90,\n  lightgrey: 0xd3d3d3,\n  lightpink: 0xffb6c1,\n  lightsalmon: 0xffa07a,\n  lightseagreen: 0x20b2aa,\n  lightskyblue: 0x87cefa,\n  lightslategray: 0x778899,\n  lightslategrey: 0x778899,\n  lightsteelblue: 0xb0c4de,\n  lightyellow: 0xffffe0,\n  lime: 0x00ff00,\n  limegreen: 0x32cd32,\n  linen: 0xfaf0e6,\n  magenta: 0xff00ff,\n  maroon: 0x800000,\n  mediumaquamarine: 0x66cdaa,\n  mediumblue: 0x0000cd,\n  mediumorchid: 0xba55d3,\n  mediumpurple: 0x9370db,\n  mediumseagreen: 0x3cb371,\n  mediumslateblue: 0x7b68ee,\n  mediumspringgreen: 0x00fa9a,\n  mediumturquoise: 0x48d1cc,\n  mediumvioletred: 0xc71585,\n  midnightblue: 0x191970,\n  mintcream: 0xf5fffa,\n  mistyrose: 0xffe4e1,\n  moccasin: 0xffe4b5,\n  navajowhite: 0xffdead,\n  navy: 0x000080,\n  oldlace: 0xfdf5e6,\n  olive: 0x808000,\n  olivedrab: 0x6b8e23,\n  orange: 0xffa500,\n  orangered: 0xff4500,\n  orchid: 0xda70d6,\n  palegoldenrod: 0xeee8aa,\n  palegreen: 0x98fb98,\n  paleturquoise: 0xafeeee,\n  palevioletred: 0xdb7093,\n  papayawhip: 0xffefd5,\n  peachpuff: 0xffdab9,\n  peru: 0xcd853f,\n  pink: 0xffc0cb,\n  plum: 0xdda0dd,\n  powderblue: 0xb0e0e6,\n  purple: 0x800080,\n  rebeccapurple: 0x663399,\n  red: 0xff0000,\n  rosybrown: 0xbc8f8f,\n  royalblue: 0x4169e1,\n  saddlebrown: 0x8b4513,\n  salmon: 0xfa8072,\n  sandybrown: 0xf4a460,\n  seagreen: 0x2e8b57,\n  seashell: 0xfff5ee,\n  sienna: 0xa0522d,\n  silver: 0xc0c0c0,\n  skyblue: 0x87ceeb,\n  slateblue: 0x6a5acd,\n  slategray: 0x708090,\n  slategrey: 0x708090,\n  snow: 0xfffafa,\n  springgreen: 0x00ff7f,\n  steelblue: 0x4682b4,\n  tan: 0xd2b48c,\n  teal: 0x008080,\n  thistle: 0xd8bfd8,\n  tomato: 0xff6347,\n  turquoise: 0x40e0d0,\n  violet: 0xee82ee,\n  wheat: 0xf5deb3,\n  white: 0xffffff,\n  whitesmoke: 0xf5f5f5,\n  yellow: 0xffff00,\n  yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n  copy(channels) {\n    return Object.assign(new this.constructor, this, channels);\n  },\n  displayable() {\n    return this.rgb().displayable();\n  },\n  hex: color_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: color_formatHex,\n  formatHex8: color_formatHex8,\n  formatHsl: color_formatHsl,\n  formatRgb: color_formatRgb,\n  toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n  return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n  return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n  return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n  return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n  var m, l;\n  format = (format + \"\").trim().toLowerCase();\n  return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n      : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n      : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n      : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n      : null) // invalid hex\n      : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n      : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n      : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n      : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n      : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n      : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n      : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n      : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n      : null;\n}\n\nfunction rgbn(n) {\n  return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n  if (a <= 0) r = g = b = NaN;\n  return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Rgb;\n  o = o.rgb();\n  return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n  return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n  this.r = +r;\n  this.g = +g;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  rgb() {\n    return this;\n  },\n  clamp() {\n    return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n  },\n  displayable() {\n    return (-0.5 <= this.r && this.r < 255.5)\n        && (-0.5 <= this.g && this.g < 255.5)\n        && (-0.5 <= this.b && this.b < 255.5)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: rgb_formatHex,\n  formatHex8: rgb_formatHex8,\n  formatRgb: rgb_formatRgb,\n  toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n  const a = clampa(this.opacity);\n  return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n  return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n  return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n  value = clampi(value);\n  return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n  if (a <= 0) h = s = l = NaN;\n  else if (l <= 0 || l >= 1) h = s = NaN;\n  else if (s <= 0) h = NaN;\n  return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n  if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Hsl;\n  if (o instanceof Hsl) return o;\n  o = o.rgb();\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      h = NaN,\n      s = max - min,\n      l = (max + min) / 2;\n  if (s) {\n    if (r === max) h = (g - b) / s + (g < b) * 6;\n    else if (g === max) h = (b - r) / s + 2;\n    else h = (r - g) / s + 4;\n    s /= l < 0.5 ? max + min : 2 - max - min;\n    h *= 60;\n  } else {\n    s = l > 0 && l < 1 ? 0 : h;\n  }\n  return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n  return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb() {\n    var h = this.h % 360 + (this.h < 0) * 360,\n        s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n        l = this.l,\n        m2 = l + (l < 0.5 ? l : 1 - l) * s,\n        m1 = 2 * l - m2;\n    return new Rgb(\n      hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n      hsl2rgb(h, m1, m2),\n      hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n      this.opacity\n    );\n  },\n  clamp() {\n    return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n  },\n  displayable() {\n    return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n        && (0 <= this.l && this.l <= 1)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  formatHsl() {\n    const a = clampa(this.opacity);\n    return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n  }\n}));\n\nfunction clamph(value) {\n  value = (value || 0) % 360;\n  return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n  return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n  return (h < 60 ? m1 + (m2 - m1) * h / 60\n      : h < 180 ? m2\n      : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n      : m1) * 255;\n}\n", "export default function(constructor, factory, prototype) {\n  constructor.prototype = factory.prototype = prototype;\n  prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n  var prototype = Object.create(parent.prototype);\n  for (var key in definition) prototype[key] = definition[key];\n  return prototype;\n}\n", "import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n  var color = gamma(y);\n\n  function rgb(start, end) {\n    var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n        g = color(start.g, end.g),\n        b = color(start.b, end.b),\n        opacity = nogamma(start.opacity, end.opacity);\n    return function(t) {\n      start.r = r(t);\n      start.g = g(t);\n      start.b = b(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n\n  rgb.gamma = rgbGamma;\n\n  return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n  return function(colors) {\n    var n = colors.length,\n        r = new Array(n),\n        g = new Array(n),\n        b = new Array(n),\n        i, color;\n    for (i = 0; i < n; ++i) {\n      color = colorRgb(colors[i]);\n      r[i] = color.r || 0;\n      g[i] = color.g || 0;\n      b[i] = color.b || 0;\n    }\n    r = spline(r);\n    g = spline(g);\n    b = spline(b);\n    color.opacity = 1;\n    return function(t) {\n      color.r = r(t);\n      color.g = g(t);\n      color.b = b(t);\n      return color + \"\";\n    };\n  };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n", "export function basis(t1, v0, v1, v2, v3) {\n  var t2 = t1 * t1, t3 = t2 * t1;\n  return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n      + (4 - 6 * t2 + 3 * t3) * v1\n      + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n      + t3 * v3) / 6;\n}\n\nexport default function(values) {\n  var n = values.length - 1;\n  return function(t) {\n    var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n        v1 = values[i],\n        v2 = values[i + 1],\n        v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n        v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n", "import {basis} from \"./basis.js\";\n\nexport default function(values) {\n  var n = values.length;\n  return function(t) {\n    var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n        v0 = values[(i + n - 1) % n],\n        v1 = values[i % n],\n        v2 = values[(i + 1) % n],\n        v3 = values[(i + 2) % n];\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n", "import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n  return function(t) {\n    return a + t * d;\n  };\n}\n\nfunction exponential(a, b, y) {\n  return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n    return Math.pow(a + t * b, y);\n  };\n}\n\nexport function hue(a, b) {\n  var d = b - a;\n  return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n  return (y = +y) === 1 ? nogamma : function(a, b) {\n    return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n  };\n}\n\nexport default function nogamma(a, b) {\n  var d = b - a;\n  return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n", "export default x => () => x;\n", "export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return a * (1 - t) + b * t;\n  };\n}\n", "import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n    reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n  return function() {\n    return b;\n  };\n}\n\nfunction one(b) {\n  return function(t) {\n    return b(t) + \"\";\n  };\n}\n\nexport default function(a, b) {\n  var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n      am, // current match in a\n      bm, // current match in b\n      bs, // string preceding current number in b, if any\n      i = -1, // index in s\n      s = [], // string constants and placeholders\n      q = []; // number interpolators\n\n  // Coerce inputs to strings.\n  a = a + \"\", b = b + \"\";\n\n  // Interpolate pairs of numbers in a & b.\n  while ((am = reA.exec(a))\n      && (bm = reB.exec(b))) {\n    if ((bs = bm.index) > bi) { // a string precedes the next number in b\n      bs = b.slice(bi, bs);\n      if (s[i]) s[i] += bs; // coalesce with previous string\n      else s[++i] = bs;\n    }\n    if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n      if (s[i]) s[i] += bm; // coalesce with previous string\n      else s[++i] = bm;\n    } else { // interpolate non-matching numbers\n      s[++i] = null;\n      q.push({i: i, x: number(am, bm)});\n    }\n    bi = reB.lastIndex;\n  }\n\n  // Add remains of b.\n  if (bi < b.length) {\n    bs = b.slice(bi);\n    if (s[i]) s[i] += bs; // coalesce with previous string\n    else s[++i] = bs;\n  }\n\n  // Special optimization for only a single match.\n  // Otherwise, interpolate each of the numbers and rejoin the string.\n  return s.length < 2 ? (q[0]\n      ? one(q[0].x)\n      : zero(b))\n      : (b = q.length, function(t) {\n          for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n          return s.join(\"\");\n        });\n}\n", "import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n  function pop(s) {\n    return s.length ? s.pop() + \" \" : \"\";\n  }\n\n  function translate(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb || yb) {\n      s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n    }\n  }\n\n  function rotate(a, b, s, q) {\n    if (a !== b) {\n      if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n      q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"rotate(\" + b + degParen);\n    }\n  }\n\n  function skewX(a, b, s, q) {\n    if (a !== b) {\n      q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"skewX(\" + b + degParen);\n    }\n  }\n\n  function scale(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb !== 1 || yb !== 1) {\n      s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n    }\n  }\n\n  return function(a, b) {\n    var s = [], // string constants and placeholders\n        q = []; // number interpolators\n    a = parse(a), b = parse(b);\n    translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n    rotate(a.rotate, b.rotate, s, q);\n    skewX(a.skewX, b.skewX, s, q);\n    scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n    a = b = null; // gc\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n", "import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n  const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n  return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n  if (value == null) return identity;\n  if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n  svgNode.setAttribute(\"transform\", value);\n  if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n  value = value.matrix;\n  return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n", "var degrees = 180 / Math.PI;\n\nexport var identity = {\n  translateX: 0,\n  translateY: 0,\n  rotate: 0,\n  skewX: 0,\n  scaleX: 1,\n  scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n  var scaleX, scaleY, skewX;\n  if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n  if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n  if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n  if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n  return {\n    translateX: e,\n    translateY: f,\n    rotate: Math.atan2(b, a) * degrees,\n    skewX: Math.atan(skewX) * degrees,\n    scaleX: scaleX,\n    scaleY: scaleY\n  };\n}\n", "import \"./selection/index.js\";\nexport {default as transition} from \"./transition/index.js\";\nexport {default as active} from \"./active.js\";\nexport {default as interrupt} from \"./interrupt.js\";\n", "import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n", "import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n  return this.each(function() {\n    interrupt(this, name);\n  });\n}\n", "import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n  var schedules = node.__transition,\n      schedule,\n      active,\n      empty = true,\n      i;\n\n  if (!schedules) return;\n\n  name = name == null ? null : name + \"\";\n\n  for (i in schedules) {\n    if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n    active = schedule.state > STARTING && schedule.state < ENDING;\n    schedule.state = ENDED;\n    schedule.timer.stop();\n    schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n    delete schedules[i];\n  }\n\n  if (empty) delete node.__transition;\n}\n", "import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n  var schedules = node.__transition;\n  if (!schedules) node.__transition = {};\n  else if (id in schedules) return;\n  create(node, id, {\n    name: name,\n    index: index, // For context during callback.\n    group: group, // For context during callback.\n    on: emptyOn,\n    tween: emptyTween,\n    time: timing.time,\n    delay: timing.delay,\n    duration: timing.duration,\n    ease: timing.ease,\n    timer: null,\n    state: CREATED\n  });\n}\n\nexport function init(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n  return schedule;\n}\n\nexport function set(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n  return schedule;\n}\n\nexport function get(node, id) {\n  var schedule = node.__transition;\n  if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n  return schedule;\n}\n\nfunction create(node, id, self) {\n  var schedules = node.__transition,\n      tween;\n\n  // Initialize the self timer when the transition is created.\n  // Note the actual delay is not known until the first callback!\n  schedules[id] = self;\n  self.timer = timer(schedule, 0, self.time);\n\n  function schedule(elapsed) {\n    self.state = SCHEDULED;\n    self.timer.restart(start, self.delay, self.time);\n\n    // If the elapsed delay is less than our first sleep, start immediately.\n    if (self.delay <= elapsed) start(elapsed - self.delay);\n  }\n\n  function start(elapsed) {\n    var i, j, n, o;\n\n    // If the state is not SCHEDULED, then we previously errored on start.\n    if (self.state !== SCHEDULED) return stop();\n\n    for (i in schedules) {\n      o = schedules[i];\n      if (o.name !== self.name) continue;\n\n      // While this element already has a starting transition during this frame,\n      // defer starting an interrupting transition until that transition has a\n      // chance to tick (and possibly end); see d3/d3-transition#54!\n      if (o.state === STARTED) return timeout(start);\n\n      // Interrupt the active transition, if any.\n      if (o.state === RUNNING) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n\n      // Cancel any pre-empted transitions.\n      else if (+i < id) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n    }\n\n    // Defer the first tick to end of the current frame; see d3/d3#1576.\n    // Note the transition may be canceled after start and before the first tick!\n    // Note this must be scheduled before the start event; see d3/d3-transition#16!\n    // Assuming this is successful, subsequent callbacks go straight to tick.\n    timeout(function() {\n      if (self.state === STARTED) {\n        self.state = RUNNING;\n        self.timer.restart(tick, self.delay, self.time);\n        tick(elapsed);\n      }\n    });\n\n    // Dispatch the start event.\n    // Note this must be done before the tween are initialized.\n    self.state = STARTING;\n    self.on.call(\"start\", node, node.__data__, self.index, self.group);\n    if (self.state !== STARTING) return; // interrupted\n    self.state = STARTED;\n\n    // Initialize the tween, deleting null tween.\n    tween = new Array(n = self.tween.length);\n    for (i = 0, j = -1; i < n; ++i) {\n      if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n        tween[++j] = o;\n      }\n    }\n    tween.length = j + 1;\n  }\n\n  function tick(elapsed) {\n    var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n        i = -1,\n        n = tween.length;\n\n    while (++i < n) {\n      tween[i].call(node, t);\n    }\n\n    // Dispatch the end event.\n    if (self.state === ENDING) {\n      self.on.call(\"end\", node, node.__data__, self.index, self.group);\n      stop();\n    }\n  }\n\n  function stop() {\n    self.state = ENDED;\n    self.timer.stop();\n    delete schedules[id];\n    for (var i in schedules) return; // eslint-disable-line no-unused-vars\n    delete node.__transition;\n  }\n}\n", "export {\n  now,\n  timer,\n  timerFlush\n} from \"./timer.js\";\n\nexport {\n  default as timeout\n} from \"./timeout.js\";\n\nexport {\n  default as interval\n} from \"./interval.js\";\n", "var frame = 0, // is an animation frame pending?\n    timeout = 0, // is a timeout pending?\n    interval = 0, // are any timers active?\n    pokeDelay = 1000, // how frequently we check for clock skew\n    taskHead,\n    taskTail,\n    clockLast = 0,\n    clockNow = 0,\n    clockSkew = 0,\n    clock = typeof performance === \"object\" && performance.now ? performance : Date,\n    setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n  return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n  clockNow = 0;\n}\n\nexport function Timer() {\n  this._call =\n  this._time =\n  this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n  constructor: Timer,\n  restart: function(callback, delay, time) {\n    if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n    time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n    if (!this._next && taskTail !== this) {\n      if (taskTail) taskTail._next = this;\n      else taskHead = this;\n      taskTail = this;\n    }\n    this._call = callback;\n    this._time = time;\n    sleep();\n  },\n  stop: function() {\n    if (this._call) {\n      this._call = null;\n      this._time = Infinity;\n      sleep();\n    }\n  }\n};\n\nexport function timer(callback, delay, time) {\n  var t = new Timer;\n  t.restart(callback, delay, time);\n  return t;\n}\n\nexport function timerFlush() {\n  now(); // Get the current time, if not already set.\n  ++frame; // Pretend we\u2019ve set an alarm, if we haven\u2019t already.\n  var t = taskHead, e;\n  while (t) {\n    if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n    t = t._next;\n  }\n  --frame;\n}\n\nfunction wake() {\n  clockNow = (clockLast = clock.now()) + clockSkew;\n  frame = timeout = 0;\n  try {\n    timerFlush();\n  } finally {\n    frame = 0;\n    nap();\n    clockNow = 0;\n  }\n}\n\nfunction poke() {\n  var now = clock.now(), delay = now - clockLast;\n  if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n  var t0, t1 = taskHead, t2, time = Infinity;\n  while (t1) {\n    if (t1._call) {\n      if (time > t1._time) time = t1._time;\n      t0 = t1, t1 = t1._next;\n    } else {\n      t2 = t1._next, t1._next = null;\n      t1 = t0 ? t0._next = t2 : taskHead = t2;\n    }\n  }\n  taskTail = t0;\n  sleep(time);\n}\n\nfunction sleep(time) {\n  if (frame) return; // Soonest alarm already set, or will be.\n  if (timeout) timeout = clearTimeout(timeout);\n  var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n  if (delay > 24) {\n    if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n    if (interval) interval = clearInterval(interval);\n  } else {\n    if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n    frame = 1, setFrame(wake);\n  }\n}\n", "import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n  var t = new Timer;\n  delay = delay == null ? 0 : +delay;\n  t.restart(elapsed => {\n    t.stop();\n    callback(elapsed + delay);\n  }, delay, time);\n  return t;\n}\n", "import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n  time: null, // Set on use.\n  delay: 0,\n  duration: 250,\n  ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n  var timing;\n  while (!(timing = node.__transition) || !(timing = timing[id])) {\n    if (!(node = node.parentNode)) {\n      throw new Error(`transition ${id} not found`);\n    }\n  }\n  return timing;\n}\n\nexport default function(name) {\n  var id,\n      timing;\n\n  if (name instanceof Transition) {\n    id = name._id, name = name._name;\n  } else {\n    id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n  }\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        schedule(node, name, id, i, group, timing || inherit(node, id));\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id);\n}\n", "import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n  this._groups = groups;\n  this._parents = parents;\n  this._name = name;\n  this._id = id;\n}\n\nexport default function transition(name) {\n  return selection().transition(name);\n}\n\nexport function newId() {\n  return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n  constructor: Transition,\n  select: transition_select,\n  selectAll: transition_selectAll,\n  selectChild: selection_prototype.selectChild,\n  selectChildren: selection_prototype.selectChildren,\n  filter: transition_filter,\n  merge: transition_merge,\n  selection: transition_selection,\n  transition: transition_transition,\n  call: selection_prototype.call,\n  nodes: selection_prototype.nodes,\n  node: selection_prototype.node,\n  size: selection_prototype.size,\n  empty: selection_prototype.empty,\n  each: selection_prototype.each,\n  on: transition_on,\n  attr: transition_attr,\n  attrTween: transition_attrTween,\n  style: transition_style,\n  styleTween: transition_styleTween,\n  text: transition_text,\n  textTween: transition_textTween,\n  remove: transition_remove,\n  tween: transition_tween,\n  delay: transition_delay,\n  duration: transition_duration,\n  ease: transition_ease,\n  easeVarying: transition_easeVarying,\n  end: transition_end,\n  [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n", "import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttribute(name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttributeNS(fullname.space, fullname.local);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttribute(name);\n    string0 = this.getAttribute(name);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n    string0 = this.getAttributeNS(fullname.space, fullname.local);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n  return this.attrTween(name, typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n      : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n      : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n", "import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n  var tween0, tween1;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we\u2019re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = tween0 = tween;\n      for (var i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1 = tween1.slice();\n          tween1.splice(i, 1);\n          break;\n        }\n      }\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nfunction tweenFunction(id, name, value) {\n  var tween0, tween1;\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we\u2019re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = (tween0 = tween).slice();\n      for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1[i] = t;\n          break;\n        }\n      }\n      if (i === n) tween1.push(t);\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nexport default function(name, value) {\n  var id = this._id;\n\n  name += \"\";\n\n  if (arguments.length < 2) {\n    var tween = get(this.node(), id).tween;\n    for (var i = 0, n = tween.length, t; i < n; ++i) {\n      if ((t = tween[i]).name === name) {\n        return t.value;\n      }\n    }\n    return null;\n  }\n\n  return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n  var id = transition._id;\n\n  transition.each(function() {\n    var schedule = set(this, id);\n    (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n  });\n\n  return function(node) {\n    return get(node, id).value[name];\n  };\n}\n", "import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n  var c;\n  return (typeof b === \"number\" ? interpolateNumber\n      : b instanceof color ? interpolateRgb\n      : (c = color(b)) ? (b = c, interpolateRgb)\n      : interpolateString)(a, b);\n}\n", "import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n  return function(t) {\n    this.setAttribute(name, i.call(this, t));\n  };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n  return function(t) {\n    this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n  };\n}\n\nfunction attrTweenNS(fullname, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nfunction attrTween(name, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value) {\n  var key = \"attr.\" + name;\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  var fullname = namespace(name);\n  return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n", "import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n  return function() {\n    init(this, id).delay = +value.apply(this, arguments);\n  };\n}\n\nfunction delayConstant(id, value) {\n  return value = +value, function() {\n    init(this, id).delay = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? delayFunction\n          : delayConstant)(id, value))\n      : get(this.node(), id).delay;\n}\n", "import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n  return function() {\n    set(this, id).duration = +value.apply(this, arguments);\n  };\n}\n\nfunction durationConstant(id, value) {\n  return value = +value, function() {\n    set(this, id).duration = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? durationFunction\n          : durationConstant)(id, value))\n      : get(this.node(), id).duration;\n}\n", "import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    set(this, id).ease = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each(easeConstant(id, value))\n      : get(this.node(), id).ease;\n}\n", "import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (typeof v !== \"function\") throw new Error;\n    set(this, id).ease = v;\n  };\n}\n\nexport default function(value) {\n  if (typeof value !== \"function\") throw new Error;\n  return this.each(easeVarying(this._id, value));\n}\n", "import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, this._name, this._id);\n}\n", "import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n  if (transition._id !== this._id) throw new Error;\n\n  for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Transition(merges, this._parents, this._name, this._id);\n}\n", "import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n  return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n    var i = t.indexOf(\".\");\n    if (i >= 0) t = t.slice(0, i);\n    return !t || t === \"start\";\n  });\n}\n\nfunction onFunction(id, name, listener) {\n  var on0, on1, sit = start(name) ? init : set;\n  return function() {\n    var schedule = sit(this, id),\n        on = schedule.on;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we\u2019re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, listener) {\n  var id = this._id;\n\n  return arguments.length < 2\n      ? get(this.node(), id).on.on(name)\n      : this.each(onFunction(id, name, listener));\n}\n", "function removeFunction(id) {\n  return function() {\n    var parent = this.parentNode;\n    for (var i in this.__transition) if (+i !== id) return;\n    if (parent) parent.removeChild(this);\n  };\n}\n\nexport default function() {\n  return this.on(\"end.remove\", removeFunction(this._id));\n}\n", "import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n        schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, name, id);\n}\n", "import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n          if (child = children[k]) {\n            schedule(child, name, id, k, children, inherit);\n          }\n        }\n        subgroups.push(children);\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, parents, name, id);\n}\n", "import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n  return new Selection(this._groups, this._parents);\n}\n", "import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        string1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, string10 = string1);\n  };\n}\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = style(this, name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction styleFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        value1 = value(this),\n        string1 = value1 + \"\";\n    if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction styleMaybeRemove(id, name) {\n  var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n  return function() {\n    var schedule = set(this, id),\n        on = schedule.on,\n        listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we\u2019re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, value, priority) {\n  var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n  return value == null ? this\n      .styleTween(name, styleNull(name, i))\n      .on(\"end.style.\" + name, styleRemove(name))\n    : typeof value === \"function\" ? this\n      .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n      .each(styleMaybeRemove(this._id, name))\n    : this\n      .styleTween(name, styleConstant(name, i, value), priority)\n      .on(\"end.style.\" + name, null);\n}\n", "function styleInterpolate(name, i, priority) {\n  return function(t) {\n    this.style.setProperty(name, i.call(this, t), priority);\n  };\n}\n\nfunction styleTween(name, value, priority) {\n  var t, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n    return t;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value, priority) {\n  var key = \"style.\" + (name += \"\");\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n", "import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var value1 = value(this);\n    this.textContent = value1 == null ? \"\" : value1;\n  };\n}\n\nexport default function(value) {\n  return this.tween(\"text\", typeof value === \"function\"\n      ? textFunction(tweenValue(this, \"text\", value))\n      : textConstant(value == null ? \"\" : value + \"\"));\n}\n", "function textInterpolate(i) {\n  return function(t) {\n    this.textContent = i.call(this, t);\n  };\n}\n\nfunction textTween(value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(value) {\n  var key = \"text\";\n  if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, textTween(value));\n}\n", "import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n  var name = this._name,\n      id0 = this._id,\n      id1 = newId();\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        var inherit = get(node, id0);\n        schedule(node, name, id1, i, group, {\n          time: inherit.time + inherit.delay + inherit.duration,\n          delay: 0,\n          duration: inherit.duration,\n          ease: inherit.ease\n        });\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id1);\n}\n", "import {set} from \"./schedule.js\";\n\nexport default function() {\n  var on0, on1, that = this, id = that._id, size = that.size();\n  return new Promise(function(resolve, reject) {\n    var cancel = {value: reject},\n        end = {value: function() { if (--size === 0) resolve(); }};\n\n    that.each(function() {\n      var schedule = set(this, id),\n          on = schedule.on;\n\n      // If this node shared a dispatch with the previous node,\n      // just assign the updated shared dispatch and we\u2019re done!\n      // Otherwise, copy-on-write.\n      if (on !== on0) {\n        on1 = (on0 = on).copy();\n        on1._.cancel.push(cancel);\n        on1._.interrupt.push(cancel);\n        on1._.end.push(end);\n      }\n\n      schedule.on = on1;\n    });\n\n    // The selection was empty, resolve end immediately\n    if (size === 0) resolve();\n  });\n}\n", "export {\n  linear as easeLinear\n} from \"./linear.js\";\n\nexport {\n  quadInOut as easeQuad,\n  quadIn as easeQuadIn,\n  quadOut as easeQuadOut,\n  quadInOut as easeQuadInOut\n} from \"./quad.js\";\n\nexport {\n  cubicInOut as easeCubic,\n  cubicIn as easeCubicIn,\n  cubicOut as easeCubicOut,\n  cubicInOut as easeCubicInOut\n} from \"./cubic.js\";\n\nexport {\n  polyInOut as easePoly,\n  polyIn as easePolyIn,\n  polyOut as easePolyOut,\n  polyInOut as easePolyInOut\n} from \"./poly.js\";\n\nexport {\n  sinInOut as easeSin,\n  sinIn as easeSinIn,\n  sinOut as easeSinOut,\n  sinInOut as easeSinInOut\n} from \"./sin.js\";\n\nexport {\n  expInOut as easeExp,\n  expIn as easeExpIn,\n  expOut as easeExpOut,\n  expInOut as easeExpInOut\n} from \"./exp.js\";\n\nexport {\n  circleInOut as easeCircle,\n  circleIn as easeCircleIn,\n  circleOut as easeCircleOut,\n  circleInOut as easeCircleInOut\n} from \"./circle.js\";\n\nexport {\n  bounceOut as easeBounce,\n  bounceIn as easeBounceIn,\n  bounceOut as easeBounceOut,\n  bounceInOut as easeBounceInOut\n} from \"./bounce.js\";\n\nexport {\n  backInOut as easeBack,\n  backIn as easeBackIn,\n  backOut as easeBackOut,\n  backInOut as easeBackInOut\n} from \"./back.js\";\n\nexport {\n  elasticOut as easeElastic,\n  elasticIn as easeElasticIn,\n  elasticOut as easeElasticOut,\n  elasticInOut as easeElasticInOut\n} from \"./elastic.js\";\n", "export function cubicIn(t) {\n  return t * t * t;\n}\n\nexport function cubicOut(t) {\n  return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n  return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n", "export default x => () => x;\n", "export default function BrushEvent(type, {\n  sourceEvent,\n  target,\n  selection,\n  mode,\n  dispatch\n}) {\n  Object.defineProperties(this, {\n    type: {value: type, enumerable: true, configurable: true},\n    sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n    target: {value: target, enumerable: true, configurable: true},\n    selection: {value: selection, enumerable: true, configurable: true},\n    mode: {value: mode, enumerable: true, configurable: true},\n    _: {value: dispatch}\n  });\n}\n", "export function nopropagation(event) {\n  event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n", "export {default as formatDefaultLocale, format, formatPrefix} from \"./defaultLocale.js\";\nexport {default as formatLocale} from \"./locale.js\";\nexport {default as formatSpecifier, FormatSpecifier} from \"./formatSpecifier.js\";\nexport {default as precisionFixed} from \"./precisionFixed.js\";\nexport {default as precisionPrefix} from \"./precisionPrefix.js\";\nexport {default as precisionRound} from \"./precisionRound.js\";\n", "import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  format = locale.format;\n  formatPrefix = locale.formatPrefix;\n  return locale;\n}\n", "import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n    prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"\u00B5\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n  var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n      currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n      currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n      decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n      numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n      percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n      minus = locale.minus === undefined ? \"\u2212\" : locale.minus + \"\",\n      nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n  function newFormat(specifier) {\n    specifier = formatSpecifier(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        trim = specifier.trim,\n        type = specifier.type;\n\n    // The \"n\" type is an alias for \",g\".\n    if (type === \"n\") comma = true, type = \"g\";\n\n    // The \"\" type, and any invalid type, is an alias for \".12~g\".\n    else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n    // If zero fill is specified, padding goes after sign and before digits.\n    if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n    // Compute the prefix and suffix.\n    // For SI-prefix, the suffix is lazily computed.\n    var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = formatTypes[type],\n        maybeSuffix = /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision === undefined ? 6\n        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n        : Math.max(0, Math.min(20, precision));\n\n    function format(value) {\n      var valuePrefix = prefix,\n          valueSuffix = suffix,\n          i, n, c;\n\n      if (type === \"c\") {\n        valueSuffix = formatType(value) + valueSuffix;\n        value = \"\";\n      } else {\n        value = +value;\n\n        // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n        var valueNegative = value < 0 || 1 / value < 0;\n\n        // Perform the initial formatting.\n        value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n        // Trim insignificant zeros.\n        if (trim) value = formatTrim(value);\n\n        // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n        if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n        valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n        // Break the formatted value into the integer \u201Cvalue\u201D part that can be\n        // grouped, and fractional or exponential \u201Csuffix\u201D part that is not.\n        if (maybeSuffix) {\n          i = -1, n = value.length;\n          while (++i < n) {\n            if (c = value.charCodeAt(i), 48 > c || c > 57) {\n              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n              value = value.slice(0, i);\n              break;\n            }\n          }\n        }\n      }\n\n      // If the fill character is not \"0\", grouping is applied before padding.\n      if (comma && !zero) value = group(value, Infinity);\n\n      // Compute the padding.\n      var length = valuePrefix.length + value.length + valueSuffix.length,\n          padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n      // If the fill character is \"0\", grouping is applied after padding.\n      if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n      // Reconstruct the final output based on the desired alignment.\n      switch (align) {\n        case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n        case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n        case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n        default: value = padding + valuePrefix + value + valueSuffix; break;\n      }\n\n      return numerals(value);\n    }\n\n    format.toString = function() {\n      return specifier + \"\";\n    };\n\n    return format;\n  }\n\n  function formatPrefix(specifier, value) {\n    var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n        e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        prefix = prefixes[8 + e / 3];\n    return function(value) {\n      return f(k * value) + prefix;\n    };\n  }\n\n  return {\n    format: newFormat,\n    formatPrefix: formatPrefix\n  };\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n  return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n", "export default function(x) {\n  return Math.abs(x = Math.round(x)) >= 1e21\n      ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n      : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, \u00B1Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n", "export default function(grouping, thousands) {\n  return function(value, width) {\n    var i = value.length,\n        t = [],\n        j = 0,\n        g = grouping[0],\n        length = 0;\n\n    while (i > 0 && g > 0) {\n      if (length + g + 1 > width) g = Math.max(1, width - length);\n      t.push(value.substring(i -= g, i + g));\n      if ((length += g + 1) > width) break;\n      g = grouping[j = (j + 1) % grouping.length];\n    }\n\n    return t.reverse().join(thousands);\n  };\n}\n", "export default function(numerals) {\n  return function(value) {\n    return value.replace(/[0-9]/g, function(i) {\n      return numerals[+i];\n    });\n  };\n}\n", "// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n  if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n  var match;\n  return new FormatSpecifier({\n    fill: match[1],\n    align: match[2],\n    sign: match[3],\n    symbol: match[4],\n    zero: match[5],\n    width: match[6],\n    comma: match[7],\n    precision: match[8] && match[8].slice(1),\n    trim: match[9],\n    type: match[10]\n  });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n  this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n  this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n  this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n  this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n  this.zero = !!specifier.zero;\n  this.width = specifier.width === undefined ? undefined : +specifier.width;\n  this.comma = !!specifier.comma;\n  this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n  this.trim = !!specifier.trim;\n  this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n  return this.fill\n      + this.align\n      + this.sign\n      + this.symbol\n      + (this.zero ? \"0\" : \"\")\n      + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n      + (this.comma ? \",\" : \"\")\n      + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n      + (this.trim ? \"~\" : \"\")\n      + this.type;\n};\n", "// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n  out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n    switch (s[i]) {\n      case \".\": i0 = i1 = i; break;\n      case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n      default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n    }\n  }\n  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n", "import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n  \"%\": (x, p) => (x * 100).toFixed(p),\n  \"b\": (x) => Math.round(x).toString(2),\n  \"c\": (x) => x + \"\",\n  \"d\": formatDecimal,\n  \"e\": (x, p) => x.toExponential(p),\n  \"f\": (x, p) => x.toFixed(p),\n  \"g\": (x, p) => x.toPrecision(p),\n  \"o\": (x) => Math.round(x).toString(8),\n  \"p\": (x, p) => formatRounded(x * 100, p),\n  \"r\": formatRounded,\n  \"s\": formatPrefixAuto,\n  \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n  \"x\": (x) => Math.round(x).toString(16)\n};\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n", "import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n", "export default function(x) {\n  return x;\n}\n", "export {default as zoom} from \"./zoom.js\";\nexport {default as zoomTransform, identity as zoomIdentity, Transform as ZoomTransform} from \"./transform.js\";\n", "import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n  return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n  var e = this;\n  if (e instanceof SVGElement) {\n    e = e.ownerSVGElement || e;\n    if (e.hasAttribute(\"viewBox\")) {\n      e = e.viewBox.baseVal;\n      return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n    }\n    return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n  }\n  return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n  return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n  return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n  return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n  var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n      dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n      dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n      dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n  return transform.translate(\n    dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n    dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n  );\n}\n\nexport default function() {\n  var filter = defaultFilter,\n      extent = defaultExtent,\n      constrain = defaultConstrain,\n      wheelDelta = defaultWheelDelta,\n      touchable = defaultTouchable,\n      scaleExtent = [0, Infinity],\n      translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n      duration = 250,\n      interpolate = interpolateZoom,\n      listeners = dispatch(\"start\", \"zoom\", \"end\"),\n      touchstarting,\n      touchfirst,\n      touchending,\n      touchDelay = 500,\n      wheelDelay = 150,\n      clickDistance2 = 0,\n      tapDistance = 10;\n\n  function zoom(selection) {\n    selection\n        .property(\"__zoom\", defaultTransform)\n        .on(\"wheel.zoom\", wheeled, {passive: false})\n        .on(\"mousedown.zoom\", mousedowned)\n        .on(\"dblclick.zoom\", dblclicked)\n      .filter(touchable)\n        .on(\"touchstart.zoom\", touchstarted)\n        .on(\"touchmove.zoom\", touchmoved)\n        .on(\"touchend.zoom touchcancel.zoom\", touchended)\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  zoom.transform = function(collection, transform, point, event) {\n    var selection = collection.selection ? collection.selection() : collection;\n    selection.property(\"__zoom\", defaultTransform);\n    if (collection !== selection) {\n      schedule(collection, transform, point, event);\n    } else {\n      selection.interrupt().each(function() {\n        gesture(this, arguments)\n          .event(event)\n          .start()\n          .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n          .end();\n      });\n    }\n  };\n\n  zoom.scaleBy = function(selection, k, p, event) {\n    zoom.scaleTo(selection, function() {\n      var k0 = this.__zoom.k,\n          k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n      return k0 * k1;\n    }, p, event);\n  };\n\n  zoom.scaleTo = function(selection, k, p, event) {\n    zoom.transform(selection, function() {\n      var e = extent.apply(this, arguments),\n          t0 = this.__zoom,\n          p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n          p1 = t0.invert(p0),\n          k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n      return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n    }, p, event);\n  };\n\n  zoom.translateBy = function(selection, x, y, event) {\n    zoom.transform(selection, function() {\n      return constrain(this.__zoom.translate(\n        typeof x === \"function\" ? x.apply(this, arguments) : x,\n        typeof y === \"function\" ? y.apply(this, arguments) : y\n      ), extent.apply(this, arguments), translateExtent);\n    }, null, event);\n  };\n\n  zoom.translateTo = function(selection, x, y, p, event) {\n    zoom.transform(selection, function() {\n      var e = extent.apply(this, arguments),\n          t = this.__zoom,\n          p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n      return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n        typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n        typeof y === \"function\" ? -y.apply(this, arguments) : -y\n      ), e, translateExtent);\n    }, p, event);\n  };\n\n  function scale(transform, k) {\n    k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n    return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n  }\n\n  function translate(transform, p0, p1) {\n    var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n    return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n  }\n\n  function centroid(extent) {\n    return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n  }\n\n  function schedule(transition, transform, point, event) {\n    transition\n        .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n        .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n        .tween(\"zoom\", function() {\n          var that = this,\n              args = arguments,\n              g = gesture(that, args).event(event),\n              e = extent.apply(that, args),\n              p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n              w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n              a = that.__zoom,\n              b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n              i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n          return function(t) {\n            if (t === 1) t = b; // Avoid rounding error on end.\n            else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n            g.zoom(null, t);\n          };\n        });\n  }\n\n  function gesture(that, args, clean) {\n    return (!clean && that.__zooming) || new Gesture(that, args);\n  }\n\n  function Gesture(that, args) {\n    this.that = that;\n    this.args = args;\n    this.active = 0;\n    this.sourceEvent = null;\n    this.extent = extent.apply(that, args);\n    this.taps = 0;\n  }\n\n  Gesture.prototype = {\n    event: function(event) {\n      if (event) this.sourceEvent = event;\n      return this;\n    },\n    start: function() {\n      if (++this.active === 1) {\n        this.that.__zooming = this;\n        this.emit(\"start\");\n      }\n      return this;\n    },\n    zoom: function(key, transform) {\n      if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n      if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n      if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n      this.that.__zoom = transform;\n      this.emit(\"zoom\");\n      return this;\n    },\n    end: function() {\n      if (--this.active === 0) {\n        delete this.that.__zooming;\n        this.emit(\"end\");\n      }\n      return this;\n    },\n    emit: function(type) {\n      var d = select(this.that).datum();\n      listeners.call(\n        type,\n        this.that,\n        new ZoomEvent(type, {\n          sourceEvent: this.sourceEvent,\n          target: zoom,\n          type,\n          transform: this.that.__zoom,\n          dispatch: listeners\n        }),\n        d\n      );\n    }\n  };\n\n  function wheeled(event, ...args) {\n    if (!filter.apply(this, arguments)) return;\n    var g = gesture(this, args).event(event),\n        t = this.__zoom,\n        k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n        p = pointer(event);\n\n    // If the mouse is in the same location as before, reuse it.\n    // If there were recent wheel events, reset the wheel idle timeout.\n    if (g.wheel) {\n      if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n        g.mouse[1] = t.invert(g.mouse[0] = p);\n      }\n      clearTimeout(g.wheel);\n    }\n\n    // If this wheel event won\u2019t trigger a transform change, ignore it.\n    else if (t.k === k) return;\n\n    // Otherwise, capture the mouse point and location at the start.\n    else {\n      g.mouse = [p, t.invert(p)];\n      interrupt(this);\n      g.start();\n    }\n\n    noevent(event);\n    g.wheel = setTimeout(wheelidled, wheelDelay);\n    g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n    function wheelidled() {\n      g.wheel = null;\n      g.end();\n    }\n  }\n\n  function mousedowned(event, ...args) {\n    if (touchending || !filter.apply(this, arguments)) return;\n    var currentTarget = event.currentTarget,\n        g = gesture(this, args, true).event(event),\n        v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n        p = pointer(event, currentTarget),\n        x0 = event.clientX,\n        y0 = event.clientY;\n\n    dragDisable(event.view);\n    nopropagation(event);\n    g.mouse = [p, this.__zoom.invert(p)];\n    interrupt(this);\n    g.start();\n\n    function mousemoved(event) {\n      noevent(event);\n      if (!g.moved) {\n        var dx = event.clientX - x0, dy = event.clientY - y0;\n        g.moved = dx * dx + dy * dy > clickDistance2;\n      }\n      g.event(event)\n       .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n    }\n\n    function mouseupped(event) {\n      v.on(\"mousemove.zoom mouseup.zoom\", null);\n      dragEnable(event.view, g.moved);\n      noevent(event);\n      g.event(event).end();\n    }\n  }\n\n  function dblclicked(event, ...args) {\n    if (!filter.apply(this, arguments)) return;\n    var t0 = this.__zoom,\n        p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n        p1 = t0.invert(p0),\n        k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n        t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n    noevent(event);\n    if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n    else select(this).call(zoom.transform, t1, p0, event);\n  }\n\n  function touchstarted(event, ...args) {\n    if (!filter.apply(this, arguments)) return;\n    var touches = event.touches,\n        n = touches.length,\n        g = gesture(this, args, event.changedTouches.length === n).event(event),\n        started, i, t, p;\n\n    nopropagation(event);\n    for (i = 0; i < n; ++i) {\n      t = touches[i], p = pointer(t, this);\n      p = [p, this.__zoom.invert(p), t.identifier];\n      if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n      else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n    }\n\n    if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n    if (started) {\n      if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n      interrupt(this);\n      g.start();\n    }\n  }\n\n  function touchmoved(event, ...args) {\n    if (!this.__zooming) return;\n    var g = gesture(this, args).event(event),\n        touches = event.changedTouches,\n        n = touches.length, i, t, p, l;\n\n    noevent(event);\n    for (i = 0; i < n; ++i) {\n      t = touches[i], p = pointer(t, this);\n      if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n      else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n    }\n    t = g.that.__zoom;\n    if (g.touch1) {\n      var p0 = g.touch0[0], l0 = g.touch0[1],\n          p1 = g.touch1[0], l1 = g.touch1[1],\n          dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n          dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n      t = scale(t, Math.sqrt(dp / dl));\n      p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n      l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n    }\n    else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n    else return;\n\n    g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n  }\n\n  function touchended(event, ...args) {\n    if (!this.__zooming) return;\n    var g = gesture(this, args).event(event),\n        touches = event.changedTouches,\n        n = touches.length, i, t;\n\n    nopropagation(event);\n    if (touchending) clearTimeout(touchending);\n    touchending = setTimeout(function() { touchending = null; }, touchDelay);\n    for (i = 0; i < n; ++i) {\n      t = touches[i];\n      if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n      else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n    }\n    if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n    if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n    else {\n      g.end();\n      // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n      if (g.taps === 2) {\n        t = pointer(t, this);\n        if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n          var p = select(this).on(\"dblclick.zoom\");\n          if (p) p.apply(this, arguments);\n        }\n      }\n    }\n  }\n\n  zoom.wheelDelta = function(_) {\n    return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n  };\n\n  zoom.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n  };\n\n  zoom.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n  };\n\n  zoom.extent = function(_) {\n    return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n  };\n\n  zoom.scaleExtent = function(_) {\n    return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n  };\n\n  zoom.translateExtent = function(_) {\n    return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n  };\n\n  zoom.constrain = function(_) {\n    return arguments.length ? (constrain = _, zoom) : constrain;\n  };\n\n  zoom.duration = function(_) {\n    return arguments.length ? (duration = +_, zoom) : duration;\n  };\n\n  zoom.interpolate = function(_) {\n    return arguments.length ? (interpolate = _, zoom) : interpolate;\n  };\n\n  zoom.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? zoom : value;\n  };\n\n  zoom.clickDistance = function(_) {\n    return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n  };\n\n  zoom.tapDistance = function(_) {\n    return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n  };\n\n  return zoom;\n}\n", "export {default as create} from \"./create.js\";\nexport {default as creator} from \"./creator.js\";\nexport {default as local} from \"./local.js\";\nexport {default as matcher} from \"./matcher.js\";\nexport {default as namespace} from \"./namespace.js\";\nexport {default as namespaces} from \"./namespaces.js\";\nexport {default as pointer} from \"./pointer.js\";\nexport {default as pointers} from \"./pointers.js\";\nexport {default as select} from \"./select.js\";\nexport {default as selectAll} from \"./selectAll.js\";\nexport {default as selection} from \"./selection/index.js\";\nexport {default as selector} from \"./selector.js\";\nexport {default as selectorAll} from \"./selectorAll.js\";\nexport {styleValue as style} from \"./selection/style.js\";\nexport {default as window} from \"./window.js\";\n", "import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n  return function() {\n    var document = this.ownerDocument,\n        uri = this.namespaceURI;\n    return uri === xhtml && document.documentElement.namespaceURI === xhtml\n        ? document.createElement(name)\n        : document.createElementNS(uri, name);\n  };\n}\n\nfunction creatorFixed(fullname) {\n  return function() {\n    return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n  };\n}\n\nexport default function(name) {\n  var fullname = namespace(name);\n  return (fullname.local\n      ? creatorFixed\n      : creatorInherit)(fullname);\n}\n", "import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n  var prefix = name += \"\", i = prefix.indexOf(\":\");\n  if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n  return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n", "export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n  svg: \"http://www.w3.org/2000/svg\",\n  xhtml: xhtml,\n  xlink: \"http://www.w3.org/1999/xlink\",\n  xml: \"http://www.w3.org/XML/1998/namespace\",\n  xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n", "import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n  this._groups = groups;\n  this._parents = parents;\n}\n\nfunction selection() {\n  return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n  return this;\n}\n\nSelection.prototype = selection.prototype = {\n  constructor: Selection,\n  select: selection_select,\n  selectAll: selection_selectAll,\n  selectChild: selection_selectChild,\n  selectChildren: selection_selectChildren,\n  filter: selection_filter,\n  data: selection_data,\n  enter: selection_enter,\n  exit: selection_exit,\n  join: selection_join,\n  merge: selection_merge,\n  selection: selection_selection,\n  order: selection_order,\n  sort: selection_sort,\n  call: selection_call,\n  nodes: selection_nodes,\n  node: selection_node,\n  size: selection_size,\n  empty: selection_empty,\n  each: selection_each,\n  attr: selection_attr,\n  style: selection_style,\n  property: selection_property,\n  classed: selection_classed,\n  text: selection_text,\n  html: selection_html,\n  raise: selection_raise,\n  lower: selection_lower,\n  append: selection_append,\n  insert: selection_insert,\n  remove: selection_remove,\n  clone: selection_clone,\n  datum: selection_datum,\n  on: selection_on,\n  dispatch: selection_dispatch,\n  [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n", "import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n", "function none() {}\n\nexport default function(selector) {\n  return selector == null ? none : function() {\n    return this.querySelector(selector);\n  };\n}\n", "import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n  return function() {\n    var group = select.apply(this, arguments);\n    return group == null ? [] : array(group);\n  };\n}\n\nexport default function(select) {\n  if (typeof select === \"function\") select = arrayAll(select);\n  else select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        subgroups.push(select.call(node, node.__data__, i, group));\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, parents);\n}\n", "export default function(x) {\n  return typeof x === \"object\" && \"length\" in x\n    ? x // Array, TypedArray, NodeList, array-like\n    : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n", "function empty() {\n  return [];\n}\n\nexport default function(selector) {\n  return selector == null ? empty : function() {\n    return this.querySelectorAll(selector);\n  };\n}\n", "import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n  return function() {\n    return find.call(this.children, match);\n  };\n}\n\nfunction childFirst() {\n  return this.firstElementChild;\n}\n\nexport default function(match) {\n  return this.select(match == null ? childFirst\n      : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n", "export default function(selector) {\n  return function() {\n    return this.matches(selector);\n  };\n}\n\nexport function childMatcher(selector) {\n  return function(node) {\n    return node.matches(selector);\n  };\n}\n\n", "import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n  return this.children;\n}\n\nfunction childrenFilter(match) {\n  return function() {\n    return filter.call(this.children, match);\n  };\n}\n\nexport default function(match) {\n  return this.selectAll(match == null ? children\n      : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n", "import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n", "import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport array from \"../array.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n  var i = 0,\n      node,\n      groupLength = group.length,\n      dataLength = data.length;\n\n  // Put any non-null nodes that fit into update.\n  // Put any null nodes into enter.\n  // Put any remaining data into enter.\n  for (; i < dataLength; ++i) {\n    if (node = group[i]) {\n      node.__data__ = data[i];\n      update[i] = node;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Put any non-null nodes that don\u2019t fit into exit.\n  for (; i < groupLength; ++i) {\n    if (node = group[i]) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n  var i,\n      node,\n      nodeByKeyValue = new Map,\n      groupLength = group.length,\n      dataLength = data.length,\n      keyValues = new Array(groupLength),\n      keyValue;\n\n  // Compute the key for each node.\n  // If multiple nodes have the same key, the duplicates are added to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if (node = group[i]) {\n      keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n      if (nodeByKeyValue.has(keyValue)) {\n        exit[i] = node;\n      } else {\n        nodeByKeyValue.set(keyValue, node);\n      }\n    }\n  }\n\n  // Compute the key for each datum.\n  // If there a node associated with this key, join and add it to update.\n  // If there is not (or the key is a duplicate), add it to enter.\n  for (i = 0; i < dataLength; ++i) {\n    keyValue = key.call(parent, data[i], i, data) + \"\";\n    if (node = nodeByKeyValue.get(keyValue)) {\n      update[i] = node;\n      node.__data__ = data[i];\n      nodeByKeyValue.delete(keyValue);\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Add any remaining nodes that were not bound to data to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction datum(node) {\n  return node.__data__;\n}\n\nexport default function(value, key) {\n  if (!arguments.length) return Array.from(this, datum);\n\n  var bind = key ? bindKey : bindIndex,\n      parents = this._parents,\n      groups = this._groups;\n\n  if (typeof value !== \"function\") value = constant(value);\n\n  for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n    var parent = parents[j],\n        group = groups[j],\n        groupLength = group.length,\n        data = array(value.call(parent, parent && parent.__data__, j, parents)),\n        dataLength = data.length,\n        enterGroup = enter[j] = new Array(dataLength),\n        updateGroup = update[j] = new Array(dataLength),\n        exitGroup = exit[j] = new Array(groupLength);\n\n    bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n    // Now connect the enter nodes to their following update node, such that\n    // appendChild can insert the materialized enter node before this node,\n    // rather than at the end of the parent node.\n    for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n      if (previous = enterGroup[i0]) {\n        if (i0 >= i1) i1 = i0 + 1;\n        while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n        previous._next = next || null;\n      }\n    }\n  }\n\n  update = new Selection(update, parents);\n  update._enter = enter;\n  update._exit = exit;\n  return update;\n}\n", "import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n  return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n  this.ownerDocument = parent.ownerDocument;\n  this.namespaceURI = parent.namespaceURI;\n  this._next = null;\n  this._parent = parent;\n  this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n  constructor: EnterNode,\n  appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n  insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n  querySelector: function(selector) { return this._parent.querySelector(selector); },\n  querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n", "export default function(update) {\n  return new Array(update.length);\n}\n", "export default function(x) {\n  return function() {\n    return x;\n  };\n}\n", "import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n  return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n", "export default function(onenter, onupdate, onexit) {\n  var enter = this.enter(), update = this, exit = this.exit();\n  enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n  if (onupdate != null) update = onupdate(update);\n  if (onexit == null) exit.remove(); else onexit(exit);\n  return enter && update ? enter.merge(update).order() : update;\n}\n", "import {Selection} from \"./index.js\";\n\nexport default function(selection) {\n  if (!(selection instanceof Selection)) throw new Error(\"invalid merge\");\n\n  for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Selection(merges, this._parents);\n}\n", "export default function() {\n\n  for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n    for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n      if (node = group[i]) {\n        if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n        next = node;\n      }\n    }\n  }\n\n  return this;\n}\n", "import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n  if (!compare) compare = ascending;\n\n  function compareNode(a, b) {\n    return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n  }\n\n  for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        sortgroup[i] = node;\n      }\n    }\n    sortgroup.sort(compareNode);\n  }\n\n  return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n", "export default function() {\n  var callback = arguments[0];\n  arguments[0] = this;\n  callback.apply(null, arguments);\n  return this;\n}\n", "export default function() {\n  return Array.from(this);\n}\n", "export default function() {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n      var node = group[i];\n      if (node) return node;\n    }\n  }\n\n  return null;\n}\n", "export default function() {\n  let size = 0;\n  for (const node of this) ++size; // eslint-disable-line no-unused-vars\n  return size;\n}\n", "export default function() {\n  return !this.node();\n}\n", "export default function(callback) {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) callback.call(node, node.__data__, i, group);\n    }\n  }\n\n  return this;\n}\n", "import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, value) {\n  return function() {\n    this.setAttribute(name, value);\n  };\n}\n\nfunction attrConstantNS(fullname, value) {\n  return function() {\n    this.setAttributeNS(fullname.space, fullname.local, value);\n  };\n}\n\nfunction attrFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttribute(name);\n    else this.setAttribute(name, v);\n  };\n}\n\nfunction attrFunctionNS(fullname, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n    else this.setAttributeNS(fullname.space, fullname.local, v);\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name);\n\n  if (arguments.length < 2) {\n    var node = this.node();\n    return fullname.local\n        ? node.getAttributeNS(fullname.space, fullname.local)\n        : node.getAttribute(fullname);\n  }\n\n  return this.each((value == null\n      ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)\n      : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n", "import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, value, priority) {\n  return function() {\n    this.style.setProperty(name, value, priority);\n  };\n}\n\nfunction styleFunction(name, value, priority) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.style.removeProperty(name);\n    else this.style.setProperty(name, v, priority);\n  };\n}\n\nexport default function(name, value, priority) {\n  return arguments.length > 1\n      ? this.each((value == null\n            ? styleRemove : typeof value === \"function\"\n            ? styleFunction\n            : styleConstant)(name, value, priority == null ? \"\" : priority))\n      : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n  return node.style.getPropertyValue(name)\n      || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n", "export default function(node) {\n  return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n      || (node.document && node) // node is a Window\n      || node.defaultView; // node is a Document\n}\n", "function propertyRemove(name) {\n  return function() {\n    delete this[name];\n  };\n}\n\nfunction propertyConstant(name, value) {\n  return function() {\n    this[name] = value;\n  };\n}\n\nfunction propertyFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) delete this[name];\n    else this[name] = v;\n  };\n}\n\nexport default function(name, value) {\n  return arguments.length > 1\n      ? this.each((value == null\n          ? propertyRemove : typeof value === \"function\"\n          ? propertyFunction\n          : propertyConstant)(name, value))\n      : this.node()[name];\n}\n", "function classArray(string) {\n  return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n  return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n  this._node = node;\n  this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n  add: function(name) {\n    var i = this._names.indexOf(name);\n    if (i < 0) {\n      this._names.push(name);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  remove: function(name) {\n    var i = this._names.indexOf(name);\n    if (i >= 0) {\n      this._names.splice(i, 1);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  contains: function(name) {\n    return this._names.indexOf(name) >= 0;\n  }\n};\n\nfunction classedAdd(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n  return function() {\n    classedAdd(this, names);\n  };\n}\n\nfunction classedFalse(names) {\n  return function() {\n    classedRemove(this, names);\n  };\n}\n\nfunction classedFunction(names, value) {\n  return function() {\n    (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n  };\n}\n\nexport default function(name, value) {\n  var names = classArray(name + \"\");\n\n  if (arguments.length < 2) {\n    var list = classList(this.node()), i = -1, n = names.length;\n    while (++i < n) if (!list.contains(names[i])) return false;\n    return true;\n  }\n\n  return this.each((typeof value === \"function\"\n      ? classedFunction : value\n      ? classedTrue\n      : classedFalse)(names, value));\n}\n", "function textRemove() {\n  this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.textContent = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? textRemove : (typeof value === \"function\"\n          ? textFunction\n          : textConstant)(value))\n      : this.node().textContent;\n}\n", "function htmlRemove() {\n  this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n  return function() {\n    this.innerHTML = value;\n  };\n}\n\nfunction htmlFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.innerHTML = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? htmlRemove : (typeof value === \"function\"\n          ? htmlFunction\n          : htmlConstant)(value))\n      : this.node().innerHTML;\n}\n", "function raise() {\n  if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n  return this.each(raise);\n}\n", "function lower() {\n  if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n  return this.each(lower);\n}\n", "import creator from \"../creator.js\";\n\nexport default function(name) {\n  var create = typeof name === \"function\" ? name : creator(name);\n  return this.select(function() {\n    return this.appendChild(create.apply(this, arguments));\n  });\n}\n", "import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n  return null;\n}\n\nexport default function(name, before) {\n  var create = typeof name === \"function\" ? name : creator(name),\n      select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n  return this.select(function() {\n    return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n  });\n}\n", "function remove() {\n  var parent = this.parentNode;\n  if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n  return this.each(remove);\n}\n", "function selection_cloneShallow() {\n  var clone = this.cloneNode(false), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n  var clone = this.cloneNode(true), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n  return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n", "export default function(value) {\n  return arguments.length\n      ? this.property(\"__data__\", value)\n      : this.node().__data__;\n}\n", "function contextListener(listener) {\n  return function(event) {\n    listener.call(this, event, this.__data__);\n  };\n}\n\nfunction parseTypenames(typenames) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    return {type: t, name: name};\n  });\n}\n\nfunction onRemove(typename) {\n  return function() {\n    var on = this.__on;\n    if (!on) return;\n    for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n      if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.options);\n      } else {\n        on[++i] = o;\n      }\n    }\n    if (++i) on.length = i;\n    else delete this.__on;\n  };\n}\n\nfunction onAdd(typename, value, options) {\n  return function() {\n    var on = this.__on, o, listener = contextListener(value);\n    if (on) for (var j = 0, m = on.length; j < m; ++j) {\n      if ((o = on[j]).type === typename.type && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.options);\n        this.addEventListener(o.type, o.listener = listener, o.options = options);\n        o.value = value;\n        return;\n      }\n    }\n    this.addEventListener(typename.type, listener, options);\n    o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n    if (!on) this.__on = [o];\n    else on.push(o);\n  };\n}\n\nexport default function(typename, value, options) {\n  var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n  if (arguments.length < 2) {\n    var on = this.node().__on;\n    if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n      for (i = 0, o = on[j]; i < n; ++i) {\n        if ((t = typenames[i]).type === o.type && t.name === o.name) {\n          return o.value;\n        }\n      }\n    }\n    return;\n  }\n\n  on = value ? onAdd : onRemove;\n  for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n  return this;\n}\n", "import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n  var window = defaultView(node),\n      event = window.CustomEvent;\n\n  if (typeof event === \"function\") {\n    event = new event(type, params);\n  } else {\n    event = window.document.createEvent(\"Event\");\n    if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n    else event.initEvent(type, false, false);\n  }\n\n  node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params);\n  };\n}\n\nfunction dispatchFunction(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params.apply(this, arguments));\n  };\n}\n\nexport default function(type, params) {\n  return this.each((typeof params === \"function\"\n      ? dispatchFunction\n      : dispatchConstant)(type, params));\n}\n", "export default function*() {\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) yield node;\n    }\n  }\n}\n", "import \"./selection/index.js\";\nexport {default as transition} from \"./transition/index.js\";\nexport {default as active} from \"./active.js\";\nexport {default as interrupt} from \"./interrupt.js\";\n", "import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n", "import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n  return this.each(function() {\n    interrupt(this, name);\n  });\n}\n", "import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n  var schedules = node.__transition,\n      schedule,\n      active,\n      empty = true,\n      i;\n\n  if (!schedules) return;\n\n  name = name == null ? null : name + \"\";\n\n  for (i in schedules) {\n    if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n    active = schedule.state > STARTING && schedule.state < ENDING;\n    schedule.state = ENDED;\n    schedule.timer.stop();\n    schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n    delete schedules[i];\n  }\n\n  if (empty) delete node.__transition;\n}\n", "import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n  var schedules = node.__transition;\n  if (!schedules) node.__transition = {};\n  else if (id in schedules) return;\n  create(node, id, {\n    name: name,\n    index: index, // For context during callback.\n    group: group, // For context during callback.\n    on: emptyOn,\n    tween: emptyTween,\n    time: timing.time,\n    delay: timing.delay,\n    duration: timing.duration,\n    ease: timing.ease,\n    timer: null,\n    state: CREATED\n  });\n}\n\nexport function init(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n  return schedule;\n}\n\nexport function set(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n  return schedule;\n}\n\nexport function get(node, id) {\n  var schedule = node.__transition;\n  if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n  return schedule;\n}\n\nfunction create(node, id, self) {\n  var schedules = node.__transition,\n      tween;\n\n  // Initialize the self timer when the transition is created.\n  // Note the actual delay is not known until the first callback!\n  schedules[id] = self;\n  self.timer = timer(schedule, 0, self.time);\n\n  function schedule(elapsed) {\n    self.state = SCHEDULED;\n    self.timer.restart(start, self.delay, self.time);\n\n    // If the elapsed delay is less than our first sleep, start immediately.\n    if (self.delay <= elapsed) start(elapsed - self.delay);\n  }\n\n  function start(elapsed) {\n    var i, j, n, o;\n\n    // If the state is not SCHEDULED, then we previously errored on start.\n    if (self.state !== SCHEDULED) return stop();\n\n    for (i in schedules) {\n      o = schedules[i];\n      if (o.name !== self.name) continue;\n\n      // While this element already has a starting transition during this frame,\n      // defer starting an interrupting transition until that transition has a\n      // chance to tick (and possibly end); see d3/d3-transition#54!\n      if (o.state === STARTED) return timeout(start);\n\n      // Interrupt the active transition, if any.\n      if (o.state === RUNNING) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n\n      // Cancel any pre-empted transitions.\n      else if (+i < id) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n    }\n\n    // Defer the first tick to end of the current frame; see d3/d3#1576.\n    // Note the transition may be canceled after start and before the first tick!\n    // Note this must be scheduled before the start event; see d3/d3-transition#16!\n    // Assuming this is successful, subsequent callbacks go straight to tick.\n    timeout(function() {\n      if (self.state === STARTED) {\n        self.state = RUNNING;\n        self.timer.restart(tick, self.delay, self.time);\n        tick(elapsed);\n      }\n    });\n\n    // Dispatch the start event.\n    // Note this must be done before the tween are initialized.\n    self.state = STARTING;\n    self.on.call(\"start\", node, node.__data__, self.index, self.group);\n    if (self.state !== STARTING) return; // interrupted\n    self.state = STARTED;\n\n    // Initialize the tween, deleting null tween.\n    tween = new Array(n = self.tween.length);\n    for (i = 0, j = -1; i < n; ++i) {\n      if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n        tween[++j] = o;\n      }\n    }\n    tween.length = j + 1;\n  }\n\n  function tick(elapsed) {\n    var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n        i = -1,\n        n = tween.length;\n\n    while (++i < n) {\n      tween[i].call(node, t);\n    }\n\n    // Dispatch the end event.\n    if (self.state === ENDING) {\n      self.on.call(\"end\", node, node.__data__, self.index, self.group);\n      stop();\n    }\n  }\n\n  function stop() {\n    self.state = ENDED;\n    self.timer.stop();\n    delete schedules[id];\n    for (var i in schedules) return; // eslint-disable-line no-unused-vars\n    delete node.__transition;\n  }\n}\n", "export {default as dispatch} from \"./dispatch.js\";\n", "var noop = {value: () => {}};\n\nfunction dispatch() {\n  for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n    if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n    _[t] = [];\n  }\n  return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n  this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n    return {type: t, name: name};\n  });\n}\n\nDispatch.prototype = dispatch.prototype = {\n  constructor: Dispatch,\n  on: function(typename, callback) {\n    var _ = this._,\n        T = parseTypenames(typename + \"\", _),\n        t,\n        i = -1,\n        n = T.length;\n\n    // If no callback was specified, return the callback of the given type and name.\n    if (arguments.length < 2) {\n      while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n      return;\n    }\n\n    // If a type was specified, set the callback for the given type and name.\n    // Otherwise, if a null callback was specified, remove callbacks of the given name.\n    if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n    while (++i < n) {\n      if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n      else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n    }\n\n    return this;\n  },\n  copy: function() {\n    var copy = {}, _ = this._;\n    for (var t in _) copy[t] = _[t].slice();\n    return new Dispatch(copy);\n  },\n  call: function(type, that) {\n    if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  },\n  apply: function(type, that, args) {\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  }\n};\n\nfunction get(type, name) {\n  for (var i = 0, n = type.length, c; i < n; ++i) {\n    if ((c = type[i]).name === name) {\n      return c.value;\n    }\n  }\n}\n\nfunction set(type, name, callback) {\n  for (var i = 0, n = type.length; i < n; ++i) {\n    if (type[i].name === name) {\n      type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n      break;\n    }\n  }\n  if (callback != null) type.push({name: name, value: callback});\n  return type;\n}\n\nexport default dispatch;\n", "export {\n  now,\n  timer,\n  timerFlush\n} from \"./timer.js\";\n\nexport {\n  default as timeout\n} from \"./timeout.js\";\n\nexport {\n  default as interval\n} from \"./interval.js\";\n", "var frame = 0, // is an animation frame pending?\n    timeout = 0, // is a timeout pending?\n    interval = 0, // are any timers active?\n    pokeDelay = 1000, // how frequently we check for clock skew\n    taskHead,\n    taskTail,\n    clockLast = 0,\n    clockNow = 0,\n    clockSkew = 0,\n    clock = typeof performance === \"object\" && performance.now ? performance : Date,\n    setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n  return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n  clockNow = 0;\n}\n\nexport function Timer() {\n  this._call =\n  this._time =\n  this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n  constructor: Timer,\n  restart: function(callback, delay, time) {\n    if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n    time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n    if (!this._next && taskTail !== this) {\n      if (taskTail) taskTail._next = this;\n      else taskHead = this;\n      taskTail = this;\n    }\n    this._call = callback;\n    this._time = time;\n    sleep();\n  },\n  stop: function() {\n    if (this._call) {\n      this._call = null;\n      this._time = Infinity;\n      sleep();\n    }\n  }\n};\n\nexport function timer(callback, delay, time) {\n  var t = new Timer;\n  t.restart(callback, delay, time);\n  return t;\n}\n\nexport function timerFlush() {\n  now(); // Get the current time, if not already set.\n  ++frame; // Pretend we\u2019ve set an alarm, if we haven\u2019t already.\n  var t = taskHead, e;\n  while (t) {\n    if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n    t = t._next;\n  }\n  --frame;\n}\n\nfunction wake() {\n  clockNow = (clockLast = clock.now()) + clockSkew;\n  frame = timeout = 0;\n  try {\n    timerFlush();\n  } finally {\n    frame = 0;\n    nap();\n    clockNow = 0;\n  }\n}\n\nfunction poke() {\n  var now = clock.now(), delay = now - clockLast;\n  if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n  var t0, t1 = taskHead, t2, time = Infinity;\n  while (t1) {\n    if (t1._call) {\n      if (time > t1._time) time = t1._time;\n      t0 = t1, t1 = t1._next;\n    } else {\n      t2 = t1._next, t1._next = null;\n      t1 = t0 ? t0._next = t2 : taskHead = t2;\n    }\n  }\n  taskTail = t0;\n  sleep(time);\n}\n\nfunction sleep(time) {\n  if (frame) return; // Soonest alarm already set, or will be.\n  if (timeout) timeout = clearTimeout(timeout);\n  var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n  if (delay > 24) {\n    if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n    if (interval) interval = clearInterval(interval);\n  } else {\n    if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n    frame = 1, setFrame(wake);\n  }\n}\n", "import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n  var t = new Timer;\n  delay = delay == null ? 0 : +delay;\n  t.restart(elapsed => {\n    t.stop();\n    callback(elapsed + delay);\n  }, delay, time);\n  return t;\n}\n", "import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n  time: null, // Set on use.\n  delay: 0,\n  duration: 250,\n  ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n  var timing;\n  while (!(timing = node.__transition) || !(timing = timing[id])) {\n    if (!(node = node.parentNode)) {\n      throw new Error(`transition ${id} not found`);\n    }\n  }\n  return timing;\n}\n\nexport default function(name) {\n  var id,\n      timing;\n\n  if (name instanceof Transition) {\n    id = name._id, name = name._name;\n  } else {\n    id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n  }\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        schedule(node, name, id, i, group, timing || inherit(node, id));\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id);\n}\n", "import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n  this._groups = groups;\n  this._parents = parents;\n  this._name = name;\n  this._id = id;\n}\n\nexport default function transition(name) {\n  return selection().transition(name);\n}\n\nexport function newId() {\n  return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n  constructor: Transition,\n  select: transition_select,\n  selectAll: transition_selectAll,\n  filter: transition_filter,\n  merge: transition_merge,\n  selection: transition_selection,\n  transition: transition_transition,\n  call: selection_prototype.call,\n  nodes: selection_prototype.nodes,\n  node: selection_prototype.node,\n  size: selection_prototype.size,\n  empty: selection_prototype.empty,\n  each: selection_prototype.each,\n  on: transition_on,\n  attr: transition_attr,\n  attrTween: transition_attrTween,\n  style: transition_style,\n  styleTween: transition_styleTween,\n  text: transition_text,\n  textTween: transition_textTween,\n  remove: transition_remove,\n  tween: transition_tween,\n  delay: transition_delay,\n  duration: transition_duration,\n  ease: transition_ease,\n  easeVarying: transition_easeVarying,\n  end: transition_end,\n  [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n", "import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttribute(name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttributeNS(fullname.space, fullname.local);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttribute(name);\n    string0 = this.getAttribute(name);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n    string0 = this.getAttributeNS(fullname.space, fullname.local);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n  return this.attrTween(name, typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n      : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n      : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n", "export {default as interpolate} from \"./value.js\";\nexport {default as interpolateArray} from \"./array.js\";\nexport {default as interpolateBasis} from \"./basis.js\";\nexport {default as interpolateBasisClosed} from \"./basisClosed.js\";\nexport {default as interpolateDate} from \"./date.js\";\nexport {default as interpolateDiscrete} from \"./discrete.js\";\nexport {default as interpolateHue} from \"./hue.js\";\nexport {default as interpolateNumber} from \"./number.js\";\nexport {default as interpolateNumberArray} from \"./numberArray.js\";\nexport {default as interpolateObject} from \"./object.js\";\nexport {default as interpolateRound} from \"./round.js\";\nexport {default as interpolateString} from \"./string.js\";\nexport {interpolateTransformCss, interpolateTransformSvg} from \"./transform/index.js\";\nexport {default as interpolateZoom} from \"./zoom.js\";\nexport {default as interpolateRgb, rgbBasis as interpolateRgbBasis, rgbBasisClosed as interpolateRgbBasisClosed} from \"./rgb.js\";\nexport {default as interpolateHsl, hslLong as interpolateHslLong} from \"./hsl.js\";\nexport {default as interpolateLab} from \"./lab.js\";\nexport {default as interpolateHcl, hclLong as interpolateHclLong} from \"./hcl.js\";\nexport {default as interpolateCubehelix, cubehelixLong as interpolateCubehelixLong} from \"./cubehelix.js\";\nexport {default as piecewise} from \"./piecewise.js\";\nexport {default as quantize} from \"./quantize.js\";\n", "export {default as color, rgb, hsl} from \"./color.js\";\nexport {default as lab, hcl, lch, gray} from \"./lab.js\";\nexport {default as cubehelix} from \"./cubehelix.js\";\n", "import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n    reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n    reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n    reHex = /^#([0-9a-f]{3,8})$/,\n    reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n    reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n    reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n    reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n    reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n    reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n  aliceblue: 0xf0f8ff,\n  antiquewhite: 0xfaebd7,\n  aqua: 0x00ffff,\n  aquamarine: 0x7fffd4,\n  azure: 0xf0ffff,\n  beige: 0xf5f5dc,\n  bisque: 0xffe4c4,\n  black: 0x000000,\n  blanchedalmond: 0xffebcd,\n  blue: 0x0000ff,\n  blueviolet: 0x8a2be2,\n  brown: 0xa52a2a,\n  burlywood: 0xdeb887,\n  cadetblue: 0x5f9ea0,\n  chartreuse: 0x7fff00,\n  chocolate: 0xd2691e,\n  coral: 0xff7f50,\n  cornflowerblue: 0x6495ed,\n  cornsilk: 0xfff8dc,\n  crimson: 0xdc143c,\n  cyan: 0x00ffff,\n  darkblue: 0x00008b,\n  darkcyan: 0x008b8b,\n  darkgoldenrod: 0xb8860b,\n  darkgray: 0xa9a9a9,\n  darkgreen: 0x006400,\n  darkgrey: 0xa9a9a9,\n  darkkhaki: 0xbdb76b,\n  darkmagenta: 0x8b008b,\n  darkolivegreen: 0x556b2f,\n  darkorange: 0xff8c00,\n  darkorchid: 0x9932cc,\n  darkred: 0x8b0000,\n  darksalmon: 0xe9967a,\n  darkseagreen: 0x8fbc8f,\n  darkslateblue: 0x483d8b,\n  darkslategray: 0x2f4f4f,\n  darkslategrey: 0x2f4f4f,\n  darkturquoise: 0x00ced1,\n  darkviolet: 0x9400d3,\n  deeppink: 0xff1493,\n  deepskyblue: 0x00bfff,\n  dimgray: 0x696969,\n  dimgrey: 0x696969,\n  dodgerblue: 0x1e90ff,\n  firebrick: 0xb22222,\n  floralwhite: 0xfffaf0,\n  forestgreen: 0x228b22,\n  fuchsia: 0xff00ff,\n  gainsboro: 0xdcdcdc,\n  ghostwhite: 0xf8f8ff,\n  gold: 0xffd700,\n  goldenrod: 0xdaa520,\n  gray: 0x808080,\n  green: 0x008000,\n  greenyellow: 0xadff2f,\n  grey: 0x808080,\n  honeydew: 0xf0fff0,\n  hotpink: 0xff69b4,\n  indianred: 0xcd5c5c,\n  indigo: 0x4b0082,\n  ivory: 0xfffff0,\n  khaki: 0xf0e68c,\n  lavender: 0xe6e6fa,\n  lavenderblush: 0xfff0f5,\n  lawngreen: 0x7cfc00,\n  lemonchiffon: 0xfffacd,\n  lightblue: 0xadd8e6,\n  lightcoral: 0xf08080,\n  lightcyan: 0xe0ffff,\n  lightgoldenrodyellow: 0xfafad2,\n  lightgray: 0xd3d3d3,\n  lightgreen: 0x90ee90,\n  lightgrey: 0xd3d3d3,\n  lightpink: 0xffb6c1,\n  lightsalmon: 0xffa07a,\n  lightseagreen: 0x20b2aa,\n  lightskyblue: 0x87cefa,\n  lightslategray: 0x778899,\n  lightslategrey: 0x778899,\n  lightsteelblue: 0xb0c4de,\n  lightyellow: 0xffffe0,\n  lime: 0x00ff00,\n  limegreen: 0x32cd32,\n  linen: 0xfaf0e6,\n  magenta: 0xff00ff,\n  maroon: 0x800000,\n  mediumaquamarine: 0x66cdaa,\n  mediumblue: 0x0000cd,\n  mediumorchid: 0xba55d3,\n  mediumpurple: 0x9370db,\n  mediumseagreen: 0x3cb371,\n  mediumslateblue: 0x7b68ee,\n  mediumspringgreen: 0x00fa9a,\n  mediumturquoise: 0x48d1cc,\n  mediumvioletred: 0xc71585,\n  midnightblue: 0x191970,\n  mintcream: 0xf5fffa,\n  mistyrose: 0xffe4e1,\n  moccasin: 0xffe4b5,\n  navajowhite: 0xffdead,\n  navy: 0x000080,\n  oldlace: 0xfdf5e6,\n  olive: 0x808000,\n  olivedrab: 0x6b8e23,\n  orange: 0xffa500,\n  orangered: 0xff4500,\n  orchid: 0xda70d6,\n  palegoldenrod: 0xeee8aa,\n  palegreen: 0x98fb98,\n  paleturquoise: 0xafeeee,\n  palevioletred: 0xdb7093,\n  papayawhip: 0xffefd5,\n  peachpuff: 0xffdab9,\n  peru: 0xcd853f,\n  pink: 0xffc0cb,\n  plum: 0xdda0dd,\n  powderblue: 0xb0e0e6,\n  purple: 0x800080,\n  rebeccapurple: 0x663399,\n  red: 0xff0000,\n  rosybrown: 0xbc8f8f,\n  royalblue: 0x4169e1,\n  saddlebrown: 0x8b4513,\n  salmon: 0xfa8072,\n  sandybrown: 0xf4a460,\n  seagreen: 0x2e8b57,\n  seashell: 0xfff5ee,\n  sienna: 0xa0522d,\n  silver: 0xc0c0c0,\n  skyblue: 0x87ceeb,\n  slateblue: 0x6a5acd,\n  slategray: 0x708090,\n  slategrey: 0x708090,\n  snow: 0xfffafa,\n  springgreen: 0x00ff7f,\n  steelblue: 0x4682b4,\n  tan: 0xd2b48c,\n  teal: 0x008080,\n  thistle: 0xd8bfd8,\n  tomato: 0xff6347,\n  turquoise: 0x40e0d0,\n  violet: 0xee82ee,\n  wheat: 0xf5deb3,\n  white: 0xffffff,\n  whitesmoke: 0xf5f5f5,\n  yellow: 0xffff00,\n  yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n  copy: function(channels) {\n    return Object.assign(new this.constructor, this, channels);\n  },\n  displayable: function() {\n    return this.rgb().displayable();\n  },\n  hex: color_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: color_formatHex,\n  formatHsl: color_formatHsl,\n  formatRgb: color_formatRgb,\n  toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n  return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n  return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n  return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n  var m, l;\n  format = (format + \"\").trim().toLowerCase();\n  return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n      : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n      : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n      : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n      : null) // invalid hex\n      : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n      : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n      : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n      : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n      : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n      : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n      : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n      : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n      : null;\n}\n\nfunction rgbn(n) {\n  return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n  if (a <= 0) r = g = b = NaN;\n  return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Rgb;\n  o = o.rgb();\n  return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n  return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n  this.r = +r;\n  this.g = +g;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n  brighter: function(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  rgb: function() {\n    return this;\n  },\n  displayable: function() {\n    return (-0.5 <= this.r && this.r < 255.5)\n        && (-0.5 <= this.g && this.g < 255.5)\n        && (-0.5 <= this.b && this.b < 255.5)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: rgb_formatHex,\n  formatRgb: rgb_formatRgb,\n  toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n  return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n  var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n  return (a === 1 ? \"rgb(\" : \"rgba(\")\n      + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n      + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n      + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n      + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n  value = Math.max(0, Math.min(255, Math.round(value) || 0));\n  return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n  if (a <= 0) h = s = l = NaN;\n  else if (l <= 0 || l >= 1) h = s = NaN;\n  else if (s <= 0) h = NaN;\n  return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n  if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Hsl;\n  if (o instanceof Hsl) return o;\n  o = o.rgb();\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      h = NaN,\n      s = max - min,\n      l = (max + min) / 2;\n  if (s) {\n    if (r === max) h = (g - b) / s + (g < b) * 6;\n    else if (g === max) h = (b - r) / s + 2;\n    else h = (r - g) / s + 4;\n    s /= l < 0.5 ? max + min : 2 - max - min;\n    h *= 60;\n  } else {\n    s = l > 0 && l < 1 ? 0 : h;\n  }\n  return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n  return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n  brighter: function(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb: function() {\n    var h = this.h % 360 + (this.h < 0) * 360,\n        s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n        l = this.l,\n        m2 = l + (l < 0.5 ? l : 1 - l) * s,\n        m1 = 2 * l - m2;\n    return new Rgb(\n      hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n      hsl2rgb(h, m1, m2),\n      hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n      this.opacity\n    );\n  },\n  displayable: function() {\n    return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n        && (0 <= this.l && this.l <= 1)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  formatHsl: function() {\n    var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n    return (a === 1 ? \"hsl(\" : \"hsla(\")\n        + (this.h || 0) + \", \"\n        + (this.s || 0) * 100 + \"%, \"\n        + (this.l || 0) * 100 + \"%\"\n        + (a === 1 ? \")\" : \", \" + a + \")\");\n  }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n  return (h < 60 ? m1 + (m2 - m1) * h / 60\n      : h < 180 ? m2\n      : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n      : m1) * 255;\n}\n", "export default function(constructor, factory, prototype) {\n  constructor.prototype = factory.prototype = prototype;\n  prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n  var prototype = Object.create(parent.prototype);\n  for (var key in definition) prototype[key] = definition[key];\n  return prototype;\n}\n", "import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n  var color = gamma(y);\n\n  function rgb(start, end) {\n    var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n        g = color(start.g, end.g),\n        b = color(start.b, end.b),\n        opacity = nogamma(start.opacity, end.opacity);\n    return function(t) {\n      start.r = r(t);\n      start.g = g(t);\n      start.b = b(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n\n  rgb.gamma = rgbGamma;\n\n  return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n  return function(colors) {\n    var n = colors.length,\n        r = new Array(n),\n        g = new Array(n),\n        b = new Array(n),\n        i, color;\n    for (i = 0; i < n; ++i) {\n      color = colorRgb(colors[i]);\n      r[i] = color.r || 0;\n      g[i] = color.g || 0;\n      b[i] = color.b || 0;\n    }\n    r = spline(r);\n    g = spline(g);\n    b = spline(b);\n    color.opacity = 1;\n    return function(t) {\n      color.r = r(t);\n      color.g = g(t);\n      color.b = b(t);\n      return color + \"\";\n    };\n  };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n", "export function basis(t1, v0, v1, v2, v3) {\n  var t2 = t1 * t1, t3 = t2 * t1;\n  return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n      + (4 - 6 * t2 + 3 * t3) * v1\n      + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n      + t3 * v3) / 6;\n}\n\nexport default function(values) {\n  var n = values.length - 1;\n  return function(t) {\n    var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n        v1 = values[i],\n        v2 = values[i + 1],\n        v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n        v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n", "import {basis} from \"./basis.js\";\n\nexport default function(values) {\n  var n = values.length;\n  return function(t) {\n    var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n        v0 = values[(i + n - 1) % n],\n        v1 = values[i % n],\n        v2 = values[(i + 1) % n],\n        v3 = values[(i + 2) % n];\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n", "import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n  return function(t) {\n    return a + t * d;\n  };\n}\n\nfunction exponential(a, b, y) {\n  return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n    return Math.pow(a + t * b, y);\n  };\n}\n\nexport function hue(a, b) {\n  var d = b - a;\n  return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n  return (y = +y) === 1 ? nogamma : function(a, b) {\n    return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n  };\n}\n\nexport default function nogamma(a, b) {\n  var d = b - a;\n  return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n", "export default x => () => x;\n", "export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return a * (1 - t) + b * t;\n  };\n}\n", "import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n    reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n  return function() {\n    return b;\n  };\n}\n\nfunction one(b) {\n  return function(t) {\n    return b(t) + \"\";\n  };\n}\n\nexport default function(a, b) {\n  var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n      am, // current match in a\n      bm, // current match in b\n      bs, // string preceding current number in b, if any\n      i = -1, // index in s\n      s = [], // string constants and placeholders\n      q = []; // number interpolators\n\n  // Coerce inputs to strings.\n  a = a + \"\", b = b + \"\";\n\n  // Interpolate pairs of numbers in a & b.\n  while ((am = reA.exec(a))\n      && (bm = reB.exec(b))) {\n    if ((bs = bm.index) > bi) { // a string precedes the next number in b\n      bs = b.slice(bi, bs);\n      if (s[i]) s[i] += bs; // coalesce with previous string\n      else s[++i] = bs;\n    }\n    if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n      if (s[i]) s[i] += bm; // coalesce with previous string\n      else s[++i] = bm;\n    } else { // interpolate non-matching numbers\n      s[++i] = null;\n      q.push({i: i, x: number(am, bm)});\n    }\n    bi = reB.lastIndex;\n  }\n\n  // Add remains of b.\n  if (bi < b.length) {\n    bs = b.slice(bi);\n    if (s[i]) s[i] += bs; // coalesce with previous string\n    else s[++i] = bs;\n  }\n\n  // Special optimization for only a single match.\n  // Otherwise, interpolate each of the numbers and rejoin the string.\n  return s.length < 2 ? (q[0]\n      ? one(q[0].x)\n      : zero(b))\n      : (b = q.length, function(t) {\n          for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n          return s.join(\"\");\n        });\n}\n", "import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n  function pop(s) {\n    return s.length ? s.pop() + \" \" : \"\";\n  }\n\n  function translate(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb || yb) {\n      s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n    }\n  }\n\n  function rotate(a, b, s, q) {\n    if (a !== b) {\n      if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n      q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"rotate(\" + b + degParen);\n    }\n  }\n\n  function skewX(a, b, s, q) {\n    if (a !== b) {\n      q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"skewX(\" + b + degParen);\n    }\n  }\n\n  function scale(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb !== 1 || yb !== 1) {\n      s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n    }\n  }\n\n  return function(a, b) {\n    var s = [], // string constants and placeholders\n        q = []; // number interpolators\n    a = parse(a), b = parse(b);\n    translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n    rotate(a.rotate, b.rotate, s, q);\n    skewX(a.skewX, b.skewX, s, q);\n    scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n    a = b = null; // gc\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n", "import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n  const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n  return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n  if (value == null) return identity;\n  if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n  svgNode.setAttribute(\"transform\", value);\n  if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n  value = value.matrix;\n  return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n", "var degrees = 180 / Math.PI;\n\nexport var identity = {\n  translateX: 0,\n  translateY: 0,\n  rotate: 0,\n  skewX: 0,\n  scaleX: 1,\n  scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n  var scaleX, scaleY, skewX;\n  if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n  if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n  if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n  if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n  return {\n    translateX: e,\n    translateY: f,\n    rotate: Math.atan2(b, a) * degrees,\n    skewX: Math.atan(skewX) * degrees,\n    scaleX: scaleX,\n    scaleY: scaleY\n  };\n}\n", "import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n  var tween0, tween1;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we\u2019re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = tween0 = tween;\n      for (var i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1 = tween1.slice();\n          tween1.splice(i, 1);\n          break;\n        }\n      }\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nfunction tweenFunction(id, name, value) {\n  var tween0, tween1;\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we\u2019re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = (tween0 = tween).slice();\n      for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1[i] = t;\n          break;\n        }\n      }\n      if (i === n) tween1.push(t);\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nexport default function(name, value) {\n  var id = this._id;\n\n  name += \"\";\n\n  if (arguments.length < 2) {\n    var tween = get(this.node(), id).tween;\n    for (var i = 0, n = tween.length, t; i < n; ++i) {\n      if ((t = tween[i]).name === name) {\n        return t.value;\n      }\n    }\n    return null;\n  }\n\n  return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n  var id = transition._id;\n\n  transition.each(function() {\n    var schedule = set(this, id);\n    (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n  });\n\n  return function(node) {\n    return get(node, id).value[name];\n  };\n}\n", "import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n  var c;\n  return (typeof b === \"number\" ? interpolateNumber\n      : b instanceof color ? interpolateRgb\n      : (c = color(b)) ? (b = c, interpolateRgb)\n      : interpolateString)(a, b);\n}\n", "import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n  return function(t) {\n    this.setAttribute(name, i.call(this, t));\n  };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n  return function(t) {\n    this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n  };\n}\n\nfunction attrTweenNS(fullname, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nfunction attrTween(name, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value) {\n  var key = \"attr.\" + name;\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  var fullname = namespace(name);\n  return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n", "import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n  return function() {\n    init(this, id).delay = +value.apply(this, arguments);\n  };\n}\n\nfunction delayConstant(id, value) {\n  return value = +value, function() {\n    init(this, id).delay = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? delayFunction\n          : delayConstant)(id, value))\n      : get(this.node(), id).delay;\n}\n", "import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n  return function() {\n    set(this, id).duration = +value.apply(this, arguments);\n  };\n}\n\nfunction durationConstant(id, value) {\n  return value = +value, function() {\n    set(this, id).duration = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? durationFunction\n          : durationConstant)(id, value))\n      : get(this.node(), id).duration;\n}\n", "import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    set(this, id).ease = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each(easeConstant(id, value))\n      : get(this.node(), id).ease;\n}\n", "import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (typeof v !== \"function\") throw new Error;\n    set(this, id).ease = v;\n  };\n}\n\nexport default function(value) {\n  if (typeof value !== \"function\") throw new Error;\n  return this.each(easeVarying(this._id, value));\n}\n", "import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, this._name, this._id);\n}\n", "import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n  if (transition._id !== this._id) throw new Error;\n\n  for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Transition(merges, this._parents, this._name, this._id);\n}\n", "import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n  return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n    var i = t.indexOf(\".\");\n    if (i >= 0) t = t.slice(0, i);\n    return !t || t === \"start\";\n  });\n}\n\nfunction onFunction(id, name, listener) {\n  var on0, on1, sit = start(name) ? init : set;\n  return function() {\n    var schedule = sit(this, id),\n        on = schedule.on;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we\u2019re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, listener) {\n  var id = this._id;\n\n  return arguments.length < 2\n      ? get(this.node(), id).on.on(name)\n      : this.each(onFunction(id, name, listener));\n}\n", "function removeFunction(id) {\n  return function() {\n    var parent = this.parentNode;\n    for (var i in this.__transition) if (+i !== id) return;\n    if (parent) parent.removeChild(this);\n  };\n}\n\nexport default function() {\n  return this.on(\"end.remove\", removeFunction(this._id));\n}\n", "import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n        schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, name, id);\n}\n", "import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n          if (child = children[k]) {\n            schedule(child, name, id, k, children, inherit);\n          }\n        }\n        subgroups.push(children);\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, parents, name, id);\n}\n", "import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n  return new Selection(this._groups, this._parents);\n}\n", "import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        string1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, string10 = string1);\n  };\n}\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = style(this, name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction styleFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        value1 = value(this),\n        string1 = value1 + \"\";\n    if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction styleMaybeRemove(id, name) {\n  var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n  return function() {\n    var schedule = set(this, id),\n        on = schedule.on,\n        listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we\u2019re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, value, priority) {\n  var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n  return value == null ? this\n      .styleTween(name, styleNull(name, i))\n      .on(\"end.style.\" + name, styleRemove(name))\n    : typeof value === \"function\" ? this\n      .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n      .each(styleMaybeRemove(this._id, name))\n    : this\n      .styleTween(name, styleConstant(name, i, value), priority)\n      .on(\"end.style.\" + name, null);\n}\n", "function styleInterpolate(name, i, priority) {\n  return function(t) {\n    this.style.setProperty(name, i.call(this, t), priority);\n  };\n}\n\nfunction styleTween(name, value, priority) {\n  var t, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n    return t;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value, priority) {\n  var key = \"style.\" + (name += \"\");\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n", "import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var value1 = value(this);\n    this.textContent = value1 == null ? \"\" : value1;\n  };\n}\n\nexport default function(value) {\n  return this.tween(\"text\", typeof value === \"function\"\n      ? textFunction(tweenValue(this, \"text\", value))\n      : textConstant(value == null ? \"\" : value + \"\"));\n}\n", "function textInterpolate(i) {\n  return function(t) {\n    this.textContent = i.call(this, t);\n  };\n}\n\nfunction textTween(value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(value) {\n  var key = \"text\";\n  if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, textTween(value));\n}\n", "import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n  var name = this._name,\n      id0 = this._id,\n      id1 = newId();\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        var inherit = get(node, id0);\n        schedule(node, name, id1, i, group, {\n          time: inherit.time + inherit.delay + inherit.duration,\n          delay: 0,\n          duration: inherit.duration,\n          ease: inherit.ease\n        });\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id1);\n}\n", "import {set} from \"./schedule.js\";\n\nexport default function() {\n  var on0, on1, that = this, id = that._id, size = that.size();\n  return new Promise(function(resolve, reject) {\n    var cancel = {value: reject},\n        end = {value: function() { if (--size === 0) resolve(); }};\n\n    that.each(function() {\n      var schedule = set(this, id),\n          on = schedule.on;\n\n      // If this node shared a dispatch with the previous node,\n      // just assign the updated shared dispatch and we\u2019re done!\n      // Otherwise, copy-on-write.\n      if (on !== on0) {\n        on1 = (on0 = on).copy();\n        on1._.cancel.push(cancel);\n        on1._.interrupt.push(cancel);\n        on1._.end.push(end);\n      }\n\n      schedule.on = on1;\n    });\n\n    // The selection was empty, resolve end immediately\n    if (size === 0) resolve();\n  });\n}\n", "export {\n  linear as easeLinear\n} from \"./linear.js\";\n\nexport {\n  quadInOut as easeQuad,\n  quadIn as easeQuadIn,\n  quadOut as easeQuadOut,\n  quadInOut as easeQuadInOut\n} from \"./quad.js\";\n\nexport {\n  cubicInOut as easeCubic,\n  cubicIn as easeCubicIn,\n  cubicOut as easeCubicOut,\n  cubicInOut as easeCubicInOut\n} from \"./cubic.js\";\n\nexport {\n  polyInOut as easePoly,\n  polyIn as easePolyIn,\n  polyOut as easePolyOut,\n  polyInOut as easePolyInOut\n} from \"./poly.js\";\n\nexport {\n  sinInOut as easeSin,\n  sinIn as easeSinIn,\n  sinOut as easeSinOut,\n  sinInOut as easeSinInOut\n} from \"./sin.js\";\n\nexport {\n  expInOut as easeExp,\n  expIn as easeExpIn,\n  expOut as easeExpOut,\n  expInOut as easeExpInOut\n} from \"./exp.js\";\n\nexport {\n  circleInOut as easeCircle,\n  circleIn as easeCircleIn,\n  circleOut as easeCircleOut,\n  circleInOut as easeCircleInOut\n} from \"./circle.js\";\n\nexport {\n  bounceOut as easeBounce,\n  bounceIn as easeBounceIn,\n  bounceOut as easeBounceOut,\n  bounceInOut as easeBounceInOut\n} from \"./bounce.js\";\n\nexport {\n  backInOut as easeBack,\n  backIn as easeBackIn,\n  backOut as easeBackOut,\n  backInOut as easeBackInOut\n} from \"./back.js\";\n\nexport {\n  elasticOut as easeElastic,\n  elasticIn as easeElasticIn,\n  elasticOut as easeElasticOut,\n  elasticInOut as easeElasticInOut\n} from \"./elastic.js\";\n", "export function cubicIn(t) {\n  return t * t * t;\n}\n\nexport function cubicOut(t) {\n  return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n  return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n", "import {Transition} from \"./transition/index.js\";\nimport {SCHEDULED} from \"./transition/schedule.js\";\n\nvar root = [null];\n\nexport default function(node, name) {\n  var schedules = node.__transition,\n      schedule,\n      i;\n\n  if (schedules) {\n    name = name == null ? null : name + \"\";\n    for (i in schedules) {\n      if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n        return new Transition([[node]], root, name, +i);\n      }\n    }\n  }\n\n  return null;\n}\n", "export default x => () => x;\n", "export default function ZoomEvent(type, {\n  sourceEvent,\n  target,\n  transform,\n  dispatch\n}) {\n  Object.defineProperties(this, {\n    type: {value: type, enumerable: true, configurable: true},\n    sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n    target: {value: target, enumerable: true, configurable: true},\n    transform: {value: transform, enumerable: true, configurable: true},\n    _: {value: dispatch}\n  });\n}\n", "export function Transform(k, x, y) {\n  this.k = k;\n  this.x = x;\n  this.y = y;\n}\n\nTransform.prototype = {\n  constructor: Transform,\n  scale: function(k) {\n    return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n  },\n  translate: function(x, y) {\n    return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n  },\n  apply: function(point) {\n    return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n  },\n  applyX: function(x) {\n    return x * this.k + this.x;\n  },\n  applyY: function(y) {\n    return y * this.k + this.y;\n  },\n  invert: function(location) {\n    return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n  },\n  invertX: function(x) {\n    return (x - this.x) / this.k;\n  },\n  invertY: function(y) {\n    return (y - this.y) / this.k;\n  },\n  rescaleX: function(x) {\n    return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n  },\n  rescaleY: function(y) {\n    return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n  },\n  toString: function() {\n    return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n  }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n  while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n  return node.__zoom;\n}\n", "export function nopropagation(event) {\n  event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n", "export function slugString(string) {\n  return string\n    .normalize(\"NFD\")\n    .replace(/[\\u0300-\\u036f]/g, \"\") // remove accents\n    .replace(/ /g, \"-\") // turn spaces into dashes\n    .replace(/[^A-Z0-9-]/gi, \"\") // remove everything but letters, numbers and dashes; case insensitive\n    .toLowerCase();\n}\n", "export const SETTINGS = {\n  currency: {\n    symbol: \"\u20AC\", // default currency symbol is '$'\n    format: \"%v %s\", // controls output: %s = symbol, %v = value/number (can be object: see below)\n    decimal: \",\", // decimal point separator\n    thousand:  \".\", // thousands separator\n    precision: 2 // decimal places\n  },\n  number: {\n    precision: 2, // default precision on numbers is 0\n    decimal: \",\", // decimal point separator\n    thousand: \".\", // thousands separator\n  }\n}\n", "import 'air-datepicker';\nimport 'air-datepicker/dist/css/datepicker.css';\n\n$.fn.datepicker.language[\"en\"] = {\n  days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n  daysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  daysMin: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n  months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n  monthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n  today: \"Today\",\n  clear: \"Clear\",\n  dateFormat: \"mm/dd/yyyy\",\n  timeFormat: \"hh:ii aa\",\n  firstDay: 0\n};\n\n$.fn.datepicker.language[\"ca\"] = {\n  days: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"],\n  daysShort: [\"Diu\", \"Dill\", \"Dima\", \"Dime\", \"Dij\", \"Div\", \"Dis\"],\n  daysMin: [\"Dg\", \"Dl\", \"Dm\", \"Dc\", \"Dj\", \"Dv\", \"Ds\"],\n  months: [\"Gener\", \"Febrer\", \"Mar\u00E7\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\n  monthsShort: [\"Gen\", \"Feb\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Oct\", \"Nov\", \"Des\"],\n  today: \"Avui\",\n  clear: \"Netejar\",\n  dateFormat: \"dd/mm/yyyy\",\n  timeFormat: \"hh:ii aa\",\n  firstDay: 1\n};\n\n$.fn.datepicker.language[\"es\"] = {\n  days: [\"Domingo\", \"Lunes\", \"Martes\", \"Mi\u00E9rcoles\", \"Jueves\", \"Viernes\", \"S\u00E1bado\"],\n  daysShort: [\"Dom\", \"Lun\", \"Mar\", \"Mie\", \"Jue\", \"Vie\", \"Sab\"],\n  daysMin: [\"Do\", \"Lu\", \"Ma\", \"Mi\", \"Ju\", \"Vi\", \"Sa\"],\n  months: [\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\n  monthsShort: [\"Ene\", \"Feb\", \"Mar\", \"Abr\", \"May\", \"Jun\", \"Jul\", \"Ago\", \"Sep\", \"Oct\", \"Nov\", \"Dic\"],\n  today: \"Hoy\",\n  clear: \"Limpiar\",\n  dateFormat: \"dd/mm/yyyy\",\n  timeFormat: \"hh:ii aa\",\n  firstDay: 1\n};\n\n// http://t1m0n.name/air-datepicker/docs/\nexport class Datepicker {\n  constructor(elem, options) {\n    this.element = elem || undefined\n\n    if (this.element) {\n      const $selector = $(this.element)\n      if ($selector.data('datepicker') === undefined) {\n        $selector.datepicker(options);\n      }\n\n      return $selector.data('datepicker');\n    }\n  }\n\n  destroy() {\n    $(this.element).data('datepicker').destroy()\n  }\n}\n", "require('./datepicker');\r\nrequire('./body');\r\nrequire('./navigation');\r\nrequire('./timepicker');", "export const readMore = el => {\n  el.firstElementChild.querySelector(\"[data-toggle]\").addEventListener(\"click\", () => el.classList.add(\"is-active\"));\n  el.lastElementChild.querySelector(\"[data-toggle]\").addEventListener(\"click\", () => el.classList.remove(\"is-active\"));\n};\n\n// Static initialization\n$(document).on(\"turbolinks:load\", function() {\n  const elements = document.querySelectorAll(\".js-read-more\");\n  elements.forEach(el => readMore(el));\n});\n", "import { ImageLightbox } from './image-lightbox';\n\nexport class HorizontalCarousel {\n  constructor(carousel) {\n    if (carousel) {\n      this.content = carousel.firstElementChild;\n      this.next = carousel.querySelector(\"[data-next]\");\n      this.prev = carousel.querySelector(\"[data-prev]\");\n\n      // initializations\n      const { visibleItems, thumbnails } = carousel.dataset\n      this.start = 0;\n      this.thumbnails = thumbnails;\n\n      if (this.thumbnails && this.content.children.length > 1) {\n        carousel.parentNode.insertBefore(document.createElement(\"div\"), carousel.parentNode.firstElementChild)\n        this.setActiveThumbnail(this.content.firstElementChild)\n\n        // event handling for thumbnails\n        Array.from(this.content.children).forEach(child => {\n          child.addEventListener(\"click\", this.onThumbnailClick.bind(this))\n          child.classList.add(\"is-thumbnail\")\n        })\n\n        const avg = [...this.content.children].reduce((acc, b) => acc + b.getBoundingClientRect().width, 0) / this.content.children.length\n        // const [{ width: totalWidth }, { width }] = [, this.content.children[1].getBoundingClientRect()]\n        this.visibleItems = this.content.getBoundingClientRect().width / avg\n      } else {\n        this.visibleItems = parseInt(visibleItems) || 1;\n        Array.from(this.content.children).forEach(child => (child.style.flex = `0 0 calc(100% / ${this.visibleItems})`));\n      }\n\n      this.maxValue = (this.content.children.length - this.visibleItems) * (100 / this.visibleItems);\n\n      // init frames\n      this.setVisibility(this.next, this.start < this.maxValue);\n      this.setVisibility(this.prev, this.start !== 0);\n\n      // event handling\n      this.next.addEventListener(\"click\", this.onNextClick.bind(this));\n      this.prev.addEventListener(\"click\", this.onPrevClick.bind(this));\n    } else {\n      console.warn(\"Horizontal Carousel Error: DOM Element missing\");\n    }\n  }\n\n  setTransform() {\n    this.content.style.transform = `translateX(${this.start}%)`;\n  }\n\n  setVisibility(element, visible = true) {\n    element.style.visibility = visible ? \"visible\" : \"hidden\";\n  }\n\n  setActiveThumbnail(node) {\n    const carousel = this.content.parentNode\n    const copy = node.cloneNode(true)\n    copy.classList.remove(\"is-thumbnail\")\n    copy.classList.add(\"is-active\")\n    copy.style = \"position:relative;\"\n    carousel.parentNode.replaceChild(copy, carousel.parentNode.firstElementChild)\n\n    new ImageLightbox(copy)\n\n    copy.querySelector(\"img\").addEventListener(\"load\", this.onImageLoad.bind(this))\n  }\n\n  onNextClick() {\n    if (Math.abs(this.start) < this.maxValue) {\n      this.start -= 100 / this.visibleItems;\n      this.start = Math.ceil(Math.abs(this.start)) > this.maxValue ? -1 * this.maxValue : this.start\n      this.setTransform(this.start);\n    }\n\n    this.setVisibility(this.next, Math.abs(this.start) < this.maxValue);\n    this.setVisibility(this.prev, this.start < 0);\n  }\n\n  onPrevClick() {\n    if (this.start < 0) {\n      this.start += 100 / this.visibleItems;\n      this.start = Math.ceil(this.start) > 0 ? 0 : this.start\n      this.setTransform(this.start);\n    }\n\n    this.setVisibility(this.prev, this.start < 0);\n    this.setVisibility(this.next, Math.abs(this.start) < this.maxValue);\n  }\n\n  onThumbnailClick({ currentTarget }) {\n    this.setActiveThumbnail(currentTarget)\n  }\n\n  onImageLoad({ target }) {\n    const { naturalHeight, naturalWidth } = target;\n    if (naturalHeight > naturalWidth) {\n      target.classList.add(\"is-portrait\");\n    }\n  }\n\n  destroy() {\n    this.next.removeEventListener(\"click\", this.onNextClick.bind(this));\n    this.prev.removeEventListener(\"click\", this.onPrevClick.bind(this));\n\n    if (this.thumbnails && this.content.children.length > 1) {\n      Array.from(this.content.children).forEach(child => child.removeEventListener(\"click\", this.onThumbnailClick.bind(this)))\n    }\n  }\n}\n\n// Static initialization\n$(document).on(\"turbolinks:load\", function() {\n  const carousels = document.querySelectorAll(\".js-horizontal-carousel\");\n  carousels.forEach(carousel => new HorizontalCarousel(carousel));\n});\n", "export class ImageLightbox {\n  constructor(lightbox) {\n    if (lightbox) {\n      const isImg = this.isImage(lightbox);\n\n      if (isImg || this.containsAnImg(lightbox)) {\n        const options = {\n          type: \"image\",\n          closeOnContentClick: true,\n          closeBtnInside: false,\n          image: {\n            verticalFit: true\n          },\n          items: {\n            src: isImg ? lightbox.src : lightbox.querySelector(\"img\").src\n          }\n        };\n\n        $(lightbox).magnificPopup(options);\n      } else {\n        console.warn(\"Image-lightbox Error: there's no images in the markup\");\n      }\n    } else {\n      console.warn(\"Image-lightbox Error: DOM Element missing\");\n    }\n  }\n\n  isImage(node) {\n    return node.tagName === \"IMG\";\n  }\n\n  containsAnImg(node) {\n    return node.querySelector(\"img\") !== null;\n  }\n}\n\n// Static initialization\n$(document).on(\"turbolinks:load\", function() {\n  const lightboxes = document.querySelectorAll(\".js-image-lightbox\");\n  lightboxes.forEach(lightbox => new ImageLightbox(lightbox));\n});\n", "// https://api.jqueryui.com/slider/\nexport class RangeSlider {\n  constructor({ elem, min = 0, max = 100, defaultRange = [min, max], rangeCallback = () => {} }) {\n    this.element = elem || undefined;\n\n    if (this.element) {\n      $(this.element).slider({\n        range: true,\n        min,\n        max,\n        values: defaultRange,\n        slide: rangeCallback\n      });\n    }\n  }\n\n  destroy() {\n    $(this.element).slider(\"destroy\")\n  }\n}\n", "import { translate } from '../../../lib/vue/filters'\n\nexport class Middleware {\n  constructor({ dictionary, filters }) {\n    this.dictionary = dictionary || []\n    this.filters = filters || []\n  }\n\n  getFilters(stats) {\n    const filters = [];\n\n    for (let index = 0; index < this.filters.length; index++) {\n      const { id: key, ...rest } = this.filters[index];\n      const element = stats[key];\n      const { field_type: type, vocabulary_terms: options = [], name_translations: title = {} } = this.getAttributesByKey(key);\n\n      filters.push({\n        ...element,\n        ...rest,\n        title: translate(title),\n        options: Array.isArray(options) ? options.map(opt => ({ ...opt, title: translate(opt.name_translations) })) : [],\n        type: type ? type : key,\n        key\n      });\n    }\n\n    return filters;\n  }\n\n  getAttributesByKey(prop) {\n    const { attributes = {} } =\n      this.dictionary.find(entry => {\n        const { attributes: { uid = \"\" } = {} } = entry;\n        return uid === prop;\n      }) || {};\n\n    return attributes;\n  }\n}\n", "export const translate = (value = {}) => {\n  const lang = I18n.locale || \"es\";\n  // Look for the language key, fallback to the first found key\n  return Object.prototype.hasOwnProperty.call(value, lang) && value[lang]\n    ? value[lang]\n    : value[Object.keys(value)[0]];\n};\n\nexport const money = (value, opts = {}) => {\n  const lang = I18n.locale || \"es\";\n  const options = { style: \"currency\", currency: \"EUR\", ...opts };\n  return value !== undefined && value !== null\n    ? parseFloat(value).toLocaleString(lang, options)\n    : undefined;\n};\n\nexport const date = (value, opts = {}) => {\n  if (!value) return null\n  const lang = I18n.locale || \"es\";\n  return value instanceof Date\n    ? value.toLocaleDateString(lang, opts)\n    : new Date(value).toLocaleDateString(lang, opts);\n};\n\nexport const truncate = (value = \"\", opts = {}) => {\n  const { length = 30, omission = \"\u2026\" } = opts\n  return value.length <= length\n    ? value\n    : `${value.substring(0, length)}${omission}`\n};\n\nexport const percent = value => {\n  if (typeof value !== \"number\") return;\n  return (value / 100).toLocaleString(I18n.locale, {\n    style: \"percent\",\n    maximumFractionDigits: 1\n  });\n};\n\nexport const VueFiltersMixin = {\n  methods: {\n    translate,\n    money,\n    date,\n    truncate,\n    percent\n  },\n  filters: {\n    translate,\n    money,\n    date,\n    truncate,\n    percent\n  }\n};\n", "export const debounce = (func, timeout) => {\n  let timer = undefined;\n  return (...args) => {\n    const next = () => func(...args);\n    if (timer) {\n      clearTimeout(timer);\n    }\n    timer = setTimeout(next, timeout > 0 ? timeout : 300);\n  };\n}", "import axeCore from 'axe-core';\nimport '../../../../assets/stylesheets/modules/accessibility.css';\n\nlet cache = {}\nlet style = {}\nlet lastNotification = ''\n\nconst deferred = {}\nconst impacts = [...axeCore.constants.impact].reverse()\n\nexport function checkAndReportAccessibility (node, label) {\n  const deferred = createDeferred()\n  style = { ...defaultOptions.style }\n\n  axeCore.run(node || document, defaultOptions.runOptions, (error, results) => {\n    if (error) deferred.reject(error)\n    if (results && !results.violations.length) return\n    if (JSON.stringify(results.violations) === lastNotification) return\n\n    defaultOptions.customResultHandler ? defaultOptions.customResultHandler(error, results) : standardResultHandler(error, results, label)\n    deferred.resolve()\n    lastNotification = JSON.stringify(results.violations)\n  })\n  return deferred.promise\n}\n\nconst standardResultHandler = function (errorInfo, results, label) {\n  results.violations = results.violations.filter(result => {\n    result.nodes = result.nodes.filter(node => {\n      const key = node.target.toString() + result.id\n      const retVal = (!cache[key])\n      cache[key] = key\n      return retVal\n    })\n    return (!!result.nodes.length)\n  })\n\n  if (results.violations.length) {\n    const violations = sortViolations(results.violations)\n    console.group(`%cAxe issues ${label ? '- ' + label : ''}`, style.head)\n    violations.forEach(result => {\n      console.groupCollapsed('%c%s%c %s %s %c%s', style[result.impact || 'minor'], result.impact, style.title, result.help, '\\n', style.url, result.helpUrl)\n      result.nodes.forEach(node => {\n        failureSummary(node, 'any')\n        failureSummary(node, 'none')\n      })\n      console.groupEnd()\n    })\n    console.groupEnd()\n  }\n}\n\nexport function resetCache () {\n  cache = {}\n}\n\nexport function resetLastNotification () {\n  lastNotification = ''\n}\n\nexport const draf = (cb) => requestAnimationFrame(() => requestAnimationFrame(cb))\n\nfunction sortViolations (violations) {\n  let sorted = []\n  impacts.forEach(impact => {\n    sorted = [...sorted, ...violations.filter(violation => violation.impact === impact)]\n  })\n  return sorted\n}\n\nfunction createDeferred () {\n  deferred.promise = new Promise((resolve, reject) => {\n    deferred.resolve = resolve\n    deferred.reject = reject\n  })\n  return deferred\n}\n\nfunction failureSummary (node, key) {\n  if (node[key].length > 0) {\n    logElement(node, console.groupCollapsed)\n    logHtml(node)\n    logFailureMessage(node, key)\n\n    var relatedNodes = []\n    node[key].forEach(check => {\n      relatedNodes = relatedNodes.concat(check.relatedNodes)\n    })\n\n    if (relatedNodes.length > 0) {\n      console.groupCollapsed('Related nodes')\n      relatedNodes.forEach(relatedNode => {\n        logElement(relatedNode, console.log)\n        logHtml(relatedNode)\n      })\n      console.groupEnd()\n    }\n    console.groupEnd()\n  }\n}\n\nfunction logElement (node, logFn) {\n  const el = document.querySelector(node.target.toString())\n  if (!el) {\n    return logFn('Selector: %c%s', style.boldCourier, node.target.toString())\n  }\n  logFn('Element: %o', el)\n}\n\nfunction logHtml (node) {\n  console.log('HTML: %c%s', style.boldCourier, node.html)\n}\n\nfunction logFailureMessage (node, key) {\n  const message = axeCore._audit.data.failureSummaries[key]\n    .failureMessage(node[key]\n      .map(function (check) {\n        return check.message || ''\n      }))\n  console.error(message)\n}\n\nexport const defaultOptions = {\n  auto: true,\n  allowConsoleClears: true,\n  clearConsoleOnUpdate: false,\n  delay: 500,\n  config: {\n    branding: {\n      application: 'vue-axe'\n    }\n  },\n  runOptions: {\n    reporter: 'v2',\n    resultTypes: ['violations']\n  },\n  style: {\n    head: 'padding:6px;font-size:20px;font-weight:bold;',\n    boldCourier: 'font-weight:bold;font-family:Courier;',\n    moderate: 'padding:2px 4px;border-radius:5px;background-color:#FFBA52;color:#222;font-weight:normal;',\n    critical: 'padding:2px 4px;border-radius:5px;background-color:#AD0000;color:#fff;font-weight:normal;',\n    serious: 'padding:2px 4px;border-radius:5px;background-color:#333;color:#FFCE85;font-weight:normal;',\n    minor: 'padding:2px 4px;border-radius:5px;background-color:#333;color:#FFCE85;font-weight:normal;',\n    title: 'font-color:black;font-weight:bold;',\n    url: 'font-color:#4D4D4D;font-weight:normal;'\n  },\n  plugins: []\n}\n\nexport function clear (forceClear = false, options) {\n  resetCache()\n  if (forceClear || options.clearConsoleOnUpdate) {\n    resetLastNotification()\n    if (options.allowConsoleClears) {\n      console.clear()\n    }\n  }\n}\n", "/**\n * Returns an object whose keys are the different groups, i.e. the different values of the groupBy property\n * @param {Array} xs array element\n * @param {String} key property to be grouped by.\n */\nexport const groupBy = (xs, key) => xs.reduce((rv, x) => {\n  (rv[x[key]] = rv[x[key]] || []).push(x);\n  return rv;\n}, {});\n", "import * as d3 from 'd3';\nimport { d3locale } from '../../../lib/shared';\n\nexport const formatNumbers = (value) => {\n  const lang = I18n.locale || \"es\";\n  return value.toString().length >= 7 ? d3.format(\".2s\")(value) : d3.formatDefaultLocale(d3locale[lang]).format(',.0f')(value)\n};\n", "import Appsignal from '@appsignal/javascript'\nimport { plugin } from '@appsignal/plugin-window-events'\n\nconst appsignal = new Appsignal({\n  key: process.env.APPSIGNAL_PUSH_API_KEY\n});\n\n// https://docs.appsignal.com/front-end/plugins/plugin-window-events.html\nappsignal.use(plugin())\n\nexport default appsignal;\n", "/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(t) {\n      for (var s, i = 1, n = arguments.length; i < n; i++) {\n          s = arguments[i];\n          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n      return t;\n  }\n  return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n  return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n  }\n  Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n          r[k] = a[j];\n  return r;\n}\n\nexport function __spreadArray(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}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose;\n    if (async) {\n        if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n        dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n        if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n        dispose = value[Symbol.dispose];\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  function next() {\n    while (env.stack.length) {\n      var rec = env.stack.pop();\n      try {\n        var result = rec.dispose && rec.dispose.call(rec.value);\n        if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n      }\n      catch (e) {\n          fail(e);\n      }\n    }\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n};\n", "// Utils\nexport * from \"./utils/functional\"\nexport * from \"./utils/hashmap\"\nexport * from \"./utils/error\"\nexport * from \"./utils/url\"\nexport * from \"./utils/async\"\nexport * from \"./utils/environment\"\nexport * from \"./utils/push-api\"\n\n// Classes\nexport { Serializable } from \"./serializable\"\n", "/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(t) {\n      for (var s, i = 1, n = arguments.length; i < n; i++) {\n          s = arguments[i];\n          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n      return t;\n  }\n  return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n  return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n  }\n  Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n          r[k] = a[j];\n  return r;\n}\n\nexport function __spreadArray(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}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose;\n    if (async) {\n        if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n        dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n        if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n        dispose = value[Symbol.dispose];\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  function next() {\n    while (env.stack.length) {\n      var rec = env.stack.pop();\n      try {\n        var result = rec.dispose && rec.dispose.call(rec.value);\n        if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n      }\n      catch (e) {\n          fail(e);\n      }\n    }\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n};\n", "/**\n * Taken from from https://github.com/reduxjs/redux\n *\n * (This file used to be a TypeScript port of the `compose` function, but since\n * Redux has been ported to TypeScript, it's now an exact copy)\n */\n\ntype Func<T extends any[], R> = (...a: T) => R\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for the\n * resulting composite function.\n *\n * @param funcs The functions to compose.\n * @returns A function obtained by composing the argument functions from right\n *   to left. For example, `compose(f, g, h)` is identical to doing\n *   `(...args) => f(g(h(...args)))`.\n */\nexport function compose(): <R>(a: R) => R\n\nexport function compose<F extends Function>(f: F): F\n\n/* two functions */\nexport function compose<A, T extends any[], R>(\n  f1: (a: A) => R,\n  f2: Func<T, A>\n): Func<T, R>\n\n/* three functions */\nexport function compose<A, B, T extends any[], R>(\n  f1: (b: B) => R,\n  f2: (a: A) => B,\n  f3: Func<T, A>\n): Func<T, R>\n\n/* four functions */\nexport function compose<A, B, C, T extends any[], R>(\n  f1: (c: C) => R,\n  f2: (b: B) => C,\n  f3: (a: A) => B,\n  f4: Func<T, A>\n): Func<T, R>\n\n/* rest */\nexport function compose<R>(\n  f1: (a: any) => R,\n  ...funcs: Function[]\n): (...args: any[]) => R\n\nexport function compose<R>(...funcs: Function[]): (...args: any[]) => R\n\nexport function compose(...funcs: Function[]) {\n  if (funcs.length === 0) {\n    // infer the argument type so it is usable in inference down the line\n    return <T>(arg: T) => arg\n  }\n\n  if (funcs.length === 1) {\n    return funcs[0]\n  }\n\n  return funcs.reduce((a, b) => (...args: any) => a(b(...args)))\n}\n", "import type { HashMap, HashMapValue } from \"@appsignal/types\"\n\n/**\n * Converts all values in a flat object to a string.\n *\n * Adapted from https://stackoverflow.com/questions/46982698/how-do-i-convert-all-property-values-in-an-object-to-type-string\n */\nexport function toHashMapString(\n  obj?: HashMap<any>\n): HashMap<string> | undefined {\n  if (!obj) return\n\n  Object.keys(obj).forEach(k => {\n    if (typeof obj[k] === \"object\") {\n      obj[k] = JSON.stringify(obj[k])\n    }\n\n    obj[k] = String(obj[k])\n  })\n\n  return obj\n}\n\n/**\n * Converts any non-string, boolean or number value in an object to a string\n */\nexport function toHashMap(\n  obj?: HashMap<any>\n): HashMap<HashMapValue> | undefined {\n  if (!obj) return\n\n  Object.keys(obj).forEach(k => {\n    if (\n      typeof obj[k] === \"string\" ||\n      typeof obj[k] === \"boolean\" ||\n      typeof obj[k] === \"number\"\n    ) {\n      return\n    }\n\n    obj[k] = JSON.stringify(obj[k])\n  })\n\n  return obj\n}\n", "/**\n * Check if the given object is an error-like object.\n *\n * @param   {Error | T}     error      An `Error` object or an error-like object\n *\n * @return  {boolean}\n */\nexport function isError<T extends Error>(error: Error | T): boolean {\n  return (\n    typeof error === \"object\" && typeof (error as any).message !== \"undefined\"\n  )\n}\n\n/**\n * Get backtrace from an `Error` object, or an error-like object\n *\n * @param   {Error | T}     error      An `Error` object or an error-like object\n *\n * @return  {string[]}                 A backtrace\n */\nexport function getStacktrace<T extends Error>(error: Error | T): string[] {\n  if (\n    typeof (error as any).stacktrace !== \"undefined\" ||\n    typeof (error as any)[\"opera#sourceloc\"] !== \"undefined\"\n  ) {\n    // probably opera\n    const { stacktrace = \"\" } = error as any\n    return stacktrace\n      .split(\"\\n\")\n      .filter((line: string | undefined) => line !== \"\")\n  } else if (error.stack) {\n    // an Error or a plain object that resembles an error\n    const { stack = \"\" } = error\n    return stack.split(\"\\n\").filter(line => line !== \"\")\n  } else {\n    // probably IE9 :(\n    return [\"No stacktrace available\"]\n  }\n}\n", "/**\n * Encodes given object into url-friendly format\n *\n * @param   {object}  object:   [object: An object that contains serializable values]\n *\n * @return  {string}            [Encoded URI params]\n */\nexport function urlEncode(object: { [key: string]: any }): string {\n  return Object.keys(object)\n    .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n    .join(\"&\")\n}\n", "/**\n * Returns `true` if the function is an async function.\n *\n * Adapted from https://davidwalsh.name/javascript-detect-async-function\n */\nexport const isAsync = (fn: Function) => fn.constructor.name === \"AsyncFunction\"\n", "/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * Originally from https://github.com/getsentry/sentry-javascript/\n */\n\nexport function isNodeEnv(): boolean {\n  return (\n    Object.prototype.toString.call(\n      typeof process !== \"undefined\" ? process : 0\n    ) === \"[object process]\"\n  )\n}\n\n/**\n * Safely get global scope object\n *\n * Originally from https://github.com/getsentry/sentry-javascript/\n */\nexport function getGlobalObject<T>(): T {\n  return (isNodeEnv()\n    ? global\n    : typeof window !== \"undefined\"\n    ? window\n    : typeof self !== \"undefined\"\n    ? self\n    : {}) as T\n}\n", "import fetch from \"isomorphic-unfetch\"\n\nexport async function validatePushApiKey({\n  endpoint = \"https://push.appsignal.com\",\n  apiKey\n}: {\n  endpoint?: string\n  apiKey: string\n}) {\n  const { status } = await fetch(`${endpoint}/1/auth?api_key=${apiKey}`)\n\n  switch (status) {\n    case 200:\n      return true\n    case 401:\n      return false\n    default:\n      throw new Error(\n        `Invalid ${status} response from server when authenticating`\n      )\n  }\n}\n", "export class Serializable<T = [] | {}> {\n  protected _data: T\n\n  constructor(data: T) {\n    this._data = data\n  }\n\n  public toJSON(): string {\n    return JSON.stringify(this._data)\n  }\n\n  public serialize(): T {\n    return this._data\n  }\n}\n", "// Do not touch this file, auto-generated by scripts/create-version\nexport const VERSION = \"1.3.27\"\n", "import { getGlobalObject, isNodeEnv } from \"@appsignal/core\"\n\nexport class Environment {\n  /**\n   * Serializes the current browser environment into an object.\n   */\n  public static serialize(): { [key: string]: string } {\n    return {\n      transport: this.transport(),\n      origin: this.origin()\n    }\n  }\n\n  /**\n   * Returns the origin of the current context.\n   *\n   * @return  {string}       The origin URL\n   */\n  public static origin(): string {\n    const globals = getGlobalObject<Window>()\n\n    // environments like nodejs or react native where an origin isn't relavent\n    if (!globals.location) {\n      return \"\"\n    }\n\n    return (\n      globals.location.origin ||\n      `${globals.location.protocol}//${globals.location.hostname}`\n    )\n  }\n\n  /**\n   * Returns the best currently available API that the current browser supports\n   * for making HTTP requests.\n   *\n   * @return  {string}       The name of the best availble HTTP transport\n   */\n  public static transport(): string {\n    // we throw out the typechecking here as the transports aren't exported\n    // using TS' `Window` type\n    const globals = getGlobalObject<Window>() as any\n\n    // we ignore jest here, as it's a false positive for a node\n    // environment and breaks the tests\n    if (isNodeEnv() && typeof jest === \"undefined\") {\n      return \"NodeHTTP\"\n    } else if (globals.XDomainRequest) {\n      return \"XDomainRequest\"\n    } else if (globals.XMLHttpRequest && !globals.fetch) {\n      return \"XMLHttpRequest\"\n    } else {\n      return \"fetch\"\n    }\n  }\n\n  /**\n   * Indicates whether promises are available in the current browser\n   * or environment.\n   *\n   * Adapted from https://github.com/Modernizr/Modernizr/blob/master/feature-detects/es6/promises.js\n   *\n   * @return  {boolean}       A value indicating if Promises are supported\n   */\n  public static supportsPromises(): boolean {\n    // we throw out the typechecking here as the transports aren't exported\n    // using TS' `Window` type\n    const globals = getGlobalObject<Window>() as any\n\n    return (\n      \"Promise\" in globals &&\n      // Some of these methods are missing from\n      // Firefox/Chrome experimental implementations\n      \"resolve\" in globals.Promise &&\n      \"reject\" in globals.Promise &&\n      \"all\" in globals.Promise &&\n      \"race\" in globals.Promise &&\n      // Older version of the spec had a resolver object\n      // as the arg rather than a function\n      (function () {\n        var resolve\n        new globals.Promise(function (r: any) {\n          resolve = r\n        })\n        return typeof resolve === \"function\"\n      })()\n    )\n  }\n}\n", "import { Transport } from \"../interfaces/transport\"\n\n// Fixes TypeScript complaining about this class\n// not existing\ndeclare var XDomainRequest: any\n\nexport class XDomainTransport implements Transport {\n  public url: string\n\n  constructor(url: string) {\n    this.url = url\n  }\n\n  public send(data: string): Promise<any> {\n    return new Promise((resolve, reject) => {\n      const req = new XDomainRequest()\n      const rx = new RegExp(\"^https?:\")\n\n      req.onload = () => resolve({})\n\n      // XDomainRequest will only make a request to a URL with\n      // the same protocol\n      req.open(\"POST\", this.url.replace(rx, window?.location?.protocol))\n\n      setTimeout(() => {\n        try {\n          req.send(data)\n        } catch (e) {\n          reject(e)\n        }\n      }, 0)\n    })\n  }\n}\n", "import { Transport } from \"../interfaces/transport\"\n\nexport class XHRTransport implements Transport {\n  public url: string\n\n  constructor(url: string) {\n    this.url = url\n  }\n\n  public send(data: string): Promise<any> {\n    return new Promise((resolve, reject) => {\n      try {\n        const req = new XMLHttpRequest()\n\n        req.onreadystatechange = () => {\n          if (req.readyState === XMLHttpRequest.DONE) {\n            resolve({})\n          }\n        }\n\n        req.open(\"POST\", this.url)\n        req.send(data)\n      } catch (e) {\n        reject(e)\n      }\n    })\n  }\n}\n", "import { Transport } from \"../interfaces/transport\"\n\nexport class FetchTransport implements Transport {\n  public url: string\n\n  constructor(url: string, headers?: { [key: string]: string }) {\n    this.url = url\n  }\n\n  public async send(data: string): Promise<any> {\n    const res = await fetch(this.url, {\n      method: \"POST\",\n      body: data\n    })\n\n    const { statusText, ok } = res\n\n    return ok ? Promise.resolve({}) : Promise.reject({ statusText })\n  }\n}\n", "import { Transport } from \"../interfaces/transport\"\nimport type https from \"https\"\nexport class NodeTransport implements Transport {\n  public url: string\n  private https: Promise<typeof https>\n\n  constructor(url: string) {\n    this.url = url\n    this.https = import(\"https\")\n  }\n\n  public send(data: string): Promise<any> {\n    const options = {\n      method: \"POST\",\n      headers: {\n        \"Content-Type\": \"application/json\",\n        \"Content-Length\": data.length\n      }\n    }\n\n    return new Promise((resolve, reject) => {\n      this.https\n        .then(https => {\n          const req = https\n            .request(this.url, options, () => {})\n            .on(\"error\", error => reject(error))\n\n          req.write(data)\n          req.end()\n\n          resolve({})\n        })\n        .catch(reason => {\n          console.warn(\n            \"NodeTransport is being used, but the HTTPS module could not be imported. No data will be sent to AppSignal.\"\n          )\n          reject(reason)\n        })\n    })\n  }\n}\n", "import { urlEncode } from \"@appsignal/core\"\n\nimport { Environment } from \"./environment\"\nimport { Span } from \"./span\"\n\nimport { XDomainTransport } from \"./transports/xdomain\"\nimport { XHRTransport } from \"./transports/xhr\"\nimport { FetchTransport } from \"./transports/fetch\"\nimport { NodeTransport } from \"./transports/node\"\n\nimport { PushApiOptions } from \"./interfaces/options\"\nimport { Transport } from \"./interfaces/transport\"\n\nexport class PushApi {\n  private _uri: string\n  private _apiKey: string\n  private _clientVersion: string\n  private _transport: Transport\n\n  /**\n   * Creates a new instance of the Push API client.\n   *\n   * @constructor\n   *\n   * @param   {object}  options  An object of options to configure the Push API client\n   */\n  constructor(options: PushApiOptions) {\n    this._uri = options.uri || \"https://appsignal-endpoint.net/collect\"\n    this._apiKey = options.key\n    this._clientVersion = options.version\n\n    this._transport = this._createTransport(this._url())\n  }\n\n  /**\n   * Pushes a transaction to the Push API.\n   *\n   * @param   {Span}     span     A single API `Span`\n   *\n   * @return  {Promise<Span>}     A single API `Span`\n   */\n  public async push(span: Span): Promise<Span> {\n    await this._transport.send(span.toJSON())\n    return span\n  }\n\n  /**\n   * Creates an instance of a new `Transport` object. A `Transport` is a\n   * browser API that is able to sent HTTP requests to an endpoint. A\n   * transport is selected based on the best available in the current\n   * environment.\n   *\n   * @return  {ITransport}  A Transport object\n   */\n  private _createTransport(url: string): Transport {\n    switch (Environment.transport()) {\n      case \"XDomainRequest\":\n        return new XDomainTransport(url)\n      case \"XMLHttpRequest\":\n        return new XHRTransport(url)\n      case \"NodeHTTP\":\n        return new NodeTransport(url)\n      default:\n        return new FetchTransport(url)\n    }\n  }\n\n  /**\n   * Constructs a complete URL for accessing the Push API.\n   *\n   * @return  {string}  A Push API URL string\n   */\n  private _url(): string {\n    const auth = this._authorization()\n    return `${this._uri}?${urlEncode(auth)}`\n  }\n\n  /**\n   * Creates an object of API credentials.\n   *\n   * @return  {object}  API credentials\n   */\n  private _authorization(): object {\n    return {\n      api_key: this._apiKey,\n      version: this._clientVersion\n    }\n  }\n}\n", "import {\n  Serializable,\n  getStacktrace,\n  toHashMapString,\n  isError\n} from \"@appsignal/core\"\nimport type {\n  JSSpanData,\n  Breadcrumb,\n  HashMap,\n  HashMapValue\n} from \"@appsignal/types\"\n\nexport class Span extends Serializable<JSSpanData> {\n  constructor(span?: Partial<JSSpanData>) {\n    super({\n      timestamp: Math.round(new Date().getTime() / 1000),\n      namespace: \"frontend\",\n      error: {\n        name: \"NullError\",\n        message: \"No error has been set\",\n        backtrace: []\n      },\n      ...span\n    })\n  }\n\n  public setAction(name: string): this {\n    if (!name || typeof name !== \"string\") {\n      return this\n    }\n\n    this._data.action = name\n    return this\n  }\n\n  public setNamespace(name: string): this {\n    if (!name || typeof name !== \"string\") {\n      return this\n    }\n\n    this._data.namespace = name\n    return this\n  }\n\n  public setError<T extends Error>(error: Error | T): this {\n    if (!error || !isError(error)) return this\n\n    this._data.error = {\n      name: error.name || \"[unknown]\",\n      message: error.message,\n      backtrace: getStacktrace(error)\n    }\n\n    return this\n  }\n\n  public setTags(tags: HashMap<string>): this {\n    this._data.tags = { ...this._data.tags, ...toHashMapString(tags) }\n    return this\n  }\n\n  public setParams(params: HashMap<any>): this {\n    this._data.params = { ...this._data.params, ...params }\n    return this\n  }\n\n  public setBreadcrumbs(breadcrumbs: Breadcrumb[]): this {\n    this._data.breadcrumbs = breadcrumbs\n    return this\n  }\n}\n", "import { Span } from \"./span\"\n\nexport class Queue {\n  private _data: Span[]\n\n  constructor(data?: Span[]) {\n    this._data = data || []\n  }\n\n  public clear() {\n    this._data = []\n  }\n\n  public values(): Span[] {\n    return this._data\n  }\n\n  public push(item: Span | Span[]) {\n    return Array.isArray(item)\n      ? this._data.push(...item)\n      : this._data.push(item)\n  }\n\n  public *drain() {\n    while (this._data.length > 0) {\n      yield this._data.shift()\n    }\n  }\n}\n", "import { getGlobalObject } from \"@appsignal/core\"\n\nimport { Queue } from \"./queue\"\nimport { PushApi } from \"./api\"\n\ntype DispatcherOptions = { limit: number; initialDuration: number }\n\nexport class Dispatcher {\n  public options: DispatcherOptions\n\n  private _queue: Queue\n  private _api: PushApi\n  private _retries = 0\n  private _timerID = 0\n  private _duration = 0\n\n  constructor(\n    queue: Queue,\n    api: PushApi,\n    options?: Partial<DispatcherOptions>\n  ) {\n    this._api = api\n    this._queue = queue\n\n    this.options = {\n      limit: 5,\n      initialDuration: 1000,\n      ...options\n    }\n\n    this.reset()\n  }\n\n  public schedule(time = this._duration): number {\n    const globals = getGlobalObject<Window>()\n\n    // @TODO: make this configurable?\n    const BACKOFF_FACTOR = 1.3\n\n    const cb = async () => {\n      for (let span of this._queue.drain()) {\n        if (!span) return\n\n        try {\n          await this._api.push(span)\n        } catch (e) {\n          // when the first promise fails, reschedule a timer\n          const expDuration = Math.floor(Math.pow(time, BACKOFF_FACTOR))\n\n          this._retries = this._retries - 1\n\n          if (this._retries === 0) {\n            this.reset()\n          } else {\n            this._queue.push(span)\n            this._timerID = this.schedule(expDuration)\n          }\n\n          return\n        }\n      }\n\n      // reset once all promises are cleared\n      this.reset()\n    }\n\n    return globals.setTimeout(cb, time)\n  }\n\n  public reset() {\n    const { limit, initialDuration } = this.options\n    this._retries = limit\n    this._duration = initialDuration\n  }\n}\n", "/**\n * The AppSignal client.\n * @module Appsignal\n */\n\nimport { compose, toHashMap } from \"@appsignal/core\"\nimport type { Breadcrumb, JSClient, Hook, HashMap } from \"@appsignal/types\"\n\nimport { VERSION } from \"./version\"\nimport { PushApi } from \"./api\"\nimport { Environment } from \"./environment\"\nimport { Span } from \"./span\"\nimport { Queue } from \"./queue\"\nimport { Dispatcher } from \"./dispatcher\"\n\nimport { AppsignalOptions } from \"./interfaces/options\"\n\nexport default class Appsignal implements JSClient {\n  public VERSION = VERSION\n  public ignored: RegExp[] = []\n\n  private _dispatcher: Dispatcher\n  private _options: AppsignalOptions\n  private _api: PushApi\n  private _breadcrumbs: Breadcrumb[] = []\n\n  private _hooks = {\n    decorators: Array<Hook>(),\n    overrides: Array<Hook>()\n  }\n\n  private _env = Environment.serialize()\n  private _queue = new Queue([])\n\n  /**\n   * Creates a new instance of the AppSignal client.\n   *\n   * @constructor\n   *\n   * @param   {AppsignalOptions}  options        An object of options to configure the AppSignal client\n   */\n  constructor(options: AppsignalOptions) {\n    const { key = \"\", uri, revision, ignoreErrors } = options\n\n    // `revision` should be a `string`, but we attempt to\n    // normalise to one anyway\n    if (revision && typeof revision !== \"string\") {\n      options.revision = String(revision)\n    }\n\n    // starting with no key means nothing will be sent to the API\n    if (key === \"\") {\n      console.info(\"[APPSIGNAL]: Started in development mode.\")\n    }\n\n    this._api = new PushApi({\n      key,\n      uri,\n      version: this.VERSION\n    })\n\n    // ignored exceptions are checked against the `message`\n    // property of a given `Error`\n    if (ignoreErrors && Array.isArray(ignoreErrors)) {\n      this.ignored = ignoreErrors\n    }\n\n    this._dispatcher = new Dispatcher(this._queue, this._api)\n\n    this._options = options\n  }\n\n  /**\n   * Records and sends a browser `Error` to AppSignal.\n   *\n   * @param   {Error}             error          A JavaScript Error object\n   * @param   {Function | void}   fn             Optional callback function to modify span before it's sent.\n   *\n   * @return  {Promise<Span> | void}             An API response, or `void` if `Promise` is unsupported.\n   */\n  public send<T>(error: Error, fn?: (span: Span) => T): Promise<Span> | void\n\n  /**\n   * Records and sends a browser `Error` to AppSignal.\n   *\n   * @param   {Error}             error          A JavaScript Error object\n   * @param   {object}            tags           An key, value object of tags\n   * @param   {string}            namespace      An optional namespace name\n   *\n   * @return  {Promise<Span> | void}             An API response, or `void` if `Promise` is unsupported.\n   */\n  public send(\n    error: Error,\n    tags?: object,\n    namespace?: string\n  ): Promise<Span> | void\n\n  /**\n   * Records and sends an Appsignal `Span` object to AppSignal.\n   *\n   * @param   {Error}             error          A JavaScript Error object\n   *\n   * @return  {Promise<Span>}                    An API response, or `void` if `Promise` is unsupported.\n   */\n  public send(span: Span): Promise<Span> | void\n\n  /**\n   *\n   * @param   {Error | Span}      data           A JavaScript Error or Appsignal Span object\n   * @param   {object | Function} tagsOrFn       An key-value object of tags or a callback function to customize the span before it is sent.\n   * @param   {string}            namespace      DEPRECATED: An optional namespace name.\n   *\n   * @return  {Promise<Span> | void}             An API response, or `void` if `Promise` is unsupported.\n   */\n  public send<T>(\n    data: Error | Span,\n    tagsOrFn?: object | ((span: Span) => T),\n    namespace?: string\n  ): Promise<any> | void {\n    if (!(data instanceof Error) && !(data instanceof Span)) {\n      // @TODO: route this through a central logger\n      console.error(\n        \"[APPSIGNAL]: Can't send error, given error is not a valid type\"\n      )\n      return\n    }\n\n    // handle user defined ignores\n    if (this.ignored.length !== 0) {\n      if (\n        data instanceof Error &&\n        this.ignored.some(el => el.test(data.message))\n      ) {\n        console.warn(`[APPSIGNAL]: Ignored an error: ${data.message}`)\n        return\n      }\n\n      if (data instanceof Span) {\n        const { error } = data.serialize()\n\n        // using the bang operator here as tsc doesnt recognise that we are\n        // checking for the value to be set as the first predicate\n        if (error.message && this.ignored.some(el => el.test(error.message!))) {\n          console.warn(`[APPSIGNAL]: Ignored a span: ${error.message}`)\n          return\n        }\n      }\n    }\n\n    // a \"span\" currently refers to a fixed point in time, as opposed to\n    // a range or length in time. this may change in future!\n    const span = data instanceof Span ? data : this._createSpanFromError(data)\n\n    // A Span can be \"decorated\" with metadata after it has been created,\n    // but before it is sent to the API and before metadata provided\n    // as arguments is added\n    if (this._hooks.decorators.length > 0) {\n      compose(...this._hooks.decorators)(span)\n    }\n\n    if (tagsOrFn) {\n      if (typeof tagsOrFn === \"function\") {\n        const callback = tagsOrFn\n        callback(span)\n      } else {\n        console.warn(\n          \"[APPSIGNAL]: DEPRECATED: Calling the `send`/`sendError` function with a tags object is deprecated. Use the callback argument instead.\"\n        )\n        const tags = (toHashMap(tagsOrFn) || {}) as HashMap<string>\n        span.setTags(tags)\n      }\n    }\n    if (namespace) {\n      console.warn(\n        \"[APPSIGNAL]: DEPRECATED: Calling the `send`/`sendError` function with a namespace is deprecated. Use the callback argument instead.\"\n      )\n      span.setNamespace(namespace)\n    }\n\n    if (this._breadcrumbs.length > 0) span.setBreadcrumbs(this._breadcrumbs)\n\n    // A Span can be \"overridden\" with metadata after it has been created,\n    // but before it is sent to the API and after metadata provided\n    // as arguments is added\n    if (this._hooks.overrides.length > 0) {\n      compose(...this._hooks.overrides)(span)\n    }\n\n    if (Environment.supportsPromises()) {\n      // clear breadcrumbs as they are now loaded into the span,\n      // and we are sure that it's possible to send them\n      this._breadcrumbs = []\n\n      // if no key is supplied, we just output the span to the console\n      // and rethrow the error\n      if (!this._options.key) {\n        // @TODO: route this through a central logger\n        console.warn(\n          \"[APPSIGNAL]: Span not sent because we're in development mode:\",\n          span\n        )\n\n        if (data instanceof Error) {\n          throw data\n        }\n      } else {\n        // attempt to push to the API\n        return this._api.push(span).catch(() => {\n          this._queue.push(span)\n\n          // schedule on next tick\n          setTimeout(() => this._dispatcher.schedule(), 0)\n        })\n      }\n    } else {\n      // @TODO: route this through a central logger\n      console.error(\n        \"[APPSIGNAL]: Error not sent. A Promise polyfill is required.\"\n      )\n      return\n    }\n  }\n\n  sendError<T>(error: Error): Promise<Span> | void\n  sendError<T>(error: Error, callback: (span: Span) => T): Promise<Span> | void\n  sendError<T>(\n    error: Error,\n    tags?: object,\n    namespace?: string\n  ): Promise<Span> | void\n\n  /**\n   * Records and sends a browser `Error` to AppSignal. An alias to `#send()`\n   * to maintain compatibility.\n   *\n   * @param   {Error}             error          A JavaScript Error object\n   * @param   {object | Function} tagsOrFn       An key-value object of tags or callback function to customize the span before it is sent.\n   * @param   {string}            namespace      DEPRECATED: An optional namespace name\n   *\n   * @return  {Promise<Span> | void}             An API response, or `void` if `Promise` is unsupported.\n   */\n  public sendError<T>(\n    error: Error,\n    tagsOrFn?: object | ((span: Span) => T),\n    namespace?: string\n  ): Promise<Span> | void {\n    return this.send(error, tagsOrFn, namespace)\n  }\n\n  /**\n   * Registers and installs a valid plugin.\n   *\n   * A plugin is typically a function that can be used to provide a\n   * reference to the `Appsignal` instance via returning a function\n   * that can be bound to `this`.\n   *\n   * @param   {Plugin}            plugin         A JavaScript Error object\n   *\n   * @return  {void}\n   */\n  public use(plugin: Function): void {\n    plugin.call(this)\n  }\n\n  /**\n   * Creates a new `Span`, augmented with the current environment.\n   *\n   * @param   {Function | void}   fn         Optional function to modify span\n   *\n   * @return  {Span}              An AppSignal `Span` object\n   */\n  public createSpan(fn?: (span: Span) => void): Span {\n    const { revision = \"\", namespace } = this._options\n\n    const span = new Span({\n      environment: this._env,\n      revision\n    })\n\n    // set default namespace from constructor if none is set\n    if (namespace) span.setNamespace(namespace)\n\n    if (fn && typeof fn === \"function\") fn(span)\n\n    return span\n  }\n\n  /**\n   * Wraps and catches errors within a given function. If the function throws an\n   * error, a rejected `Promise` will be returned and the error thrown will be\n   * logged to AppSignal.\n   */\n  public async wrap<T>(fn: () => T, callbackFn?: (span: Span) => T): Promise<T>\n\n  /**\n   * Wraps and catches errors within a given function. If the function throws an\n   * error, a rejected `Promise` will be returned and the error thrown will be\n   * logged to AppSignal.\n   */\n  public async wrap<T>(\n    fn: () => T,\n    tags?: object,\n    namespace?: string\n  ): Promise<T>\n\n  /**\n   * Wraps and catches errors within a given function. If the function throws an\n   * error, a rejected `Promise` will be returned and the error thrown will be\n   * logged to AppSignal.\n   *\n   * @param   {Function}          fn             A function to wrap\n   * @param   {object | Function} tagsOrFn       An key-value object of tags or a callback function to customize the span before it is sent.\n   * @param   {string}            namespace      DEPRECATED: An optional namespace name\n   *\n   * @return  {Promise<any>}      A Promise containing the return value of the function, or a `Span` if an error was thrown.\n   */\n  public async wrap<T>(\n    fn: () => T,\n    tagsOrFn?: object | ((span: Span) => T),\n    namespace?: string\n  ): Promise<T> {\n    try {\n      return await fn()\n    } catch (e) {\n      await this.sendError(e, tagsOrFn, namespace)\n      return Promise.reject(e)\n    }\n  }\n\n  /**\n   * Registers a span decorator to be applied every time a Span\n   * is sent to the Push API\n   *\n   * @param   {Function}  decorator  A decorator function, returning `Span`\n   *\n   * @return  {void}\n   */\n  public addDecorator<T extends Hook>(decorator: T): void {\n    this._hooks.decorators.push(decorator)\n  }\n\n  /**\n   * Registers a span override to be applied every time a Span\n   * is sent to the Push API\n   *\n   * @param   {Function}  override  An override function, returning `Span`\n   *\n   * @return  {void}\n   */\n  public addOverride<T extends Hook>(override: T): void {\n    this._hooks.overrides.push(override)\n  }\n\n  /**\n   * Sends a demonstration error to AppSignal.\n   *\n   * @return  {void}\n   */\n  public demo(): void {\n    const span = this._createSpanFromError(\n      new Error(\n        \"Hello world! This is an error used for demonstration purposes.\"\n      )\n    )\n\n    span\n      .setAction(\"TestAction\")\n      .setParams({\n        path: \"/hello\",\n        method: \"GET\"\n      })\n      .setTags({\n        demo_sample: \"true\"\n      })\n\n    this.send(span)\n  }\n\n  /**\n   * Adds a breadcrumb.\n   *\n   * @param   {Breadcrumb}  breadcrumb  A valid breadcrumb\n   *\n   * @return  {void}\n   */\n  public addBreadcrumb(breadcrumb: Omit<Breadcrumb, \"timestamp\">): void {\n    const crumb: Breadcrumb = {\n      timestamp: Math.round(new Date().getTime() / 1000),\n      ...breadcrumb,\n      metadata: toHashMap(breadcrumb.metadata)\n    }\n\n    if (!crumb.category) {\n      console.warn(\"[APPSIGNAL]: Breadcrumb not added. `category` is missing.\")\n      return\n    }\n\n    if (!crumb.action) {\n      console.warn(\"[APPSIGNAL]: Breadcrumb not added. `action` is missing.\")\n      return\n    }\n\n    if (this._breadcrumbs.length === 20) {\n      this._breadcrumbs.pop()\n    }\n\n    this._breadcrumbs.unshift(crumb)\n  }\n\n  /**\n   * Creates a valid AppSignal `Span` from a JavaScript `Error`\n   * object.\n   *\n   * @param   {Error}  error  A JavaScript error\n   *\n   * @return  {Span}         An AppSignal event\n   */\n  private _createSpanFromError(error: Error): Span {\n    const event = this.createSpan()\n    event.setError(error)\n\n    return event\n  }\n}\n", "import type { JSClient } from \"@appsignal/types\"\nimport { isError } from \"@appsignal/core\"\n\nfunction windowEventsPlugin(options?: { [key: string]: any }) {\n  const ctx = window as Window\n\n  const opts = {\n    onerror: true,\n    onunhandledrejection: true,\n    ...options\n  }\n\n  return function (this: JSClient) {\n    const self = this\n\n    const prev = {\n      onError: ctx.onerror,\n      unhandledRejection: ctx.onunhandledrejection\n    }\n\n    function _onErrorHandler(\n      this: WindowEventHandlers,\n      event: Event | string,\n      source?: string,\n      lineno?: number,\n      colno?: number,\n      error?: Error\n    ): void {\n      const span = self.createSpan()\n\n      // handles \"Script error.\" message in some browsers when script is loaded\n      // cross origin.\n      // https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror#Notes\n      if (\n        typeof event === \"string\" &&\n        lineno === 0 &&\n        /Script error\\.?/.test(event)\n      ) {\n        console.warn(\n          \"[APPSIGNAL]: Cross-domain or eval script error detected, error ignored\"\n        )\n      } else {\n        if (error) {\n          span.setError(error)\n        } else {\n          // handle browsers that don't supply an `error` argument\n          // or don't return a stacktrace\n          span.setError({\n            name: \"Error\",\n            // `event` shoiuld be the message in most browsers\n            message:\n              typeof event === \"string\"\n                ? event\n                : 'An HTML onerror=\"\" handler failed to execute',\n            stack: `at ${source}:${lineno}${colno ? `:${colno}` : \"\"}`\n          })\n        }\n\n        self.send(span)\n      }\n\n      if (typeof prev.onError === \"function\") {\n        prev.onError.apply(this, arguments as any)\n      }\n    }\n\n    function _onUnhandledRejectionHandler(\n      this: WindowEventHandlers,\n      event: PromiseRejectionEvent\n    ): void {\n      const span = self.createSpan()\n\n      let error: Error\n\n      if (event && event.reason && isError(event.reason)) {\n        error = event.reason\n      } else {\n        error = {\n          name: \"UnhandledPromiseRejectionError\",\n          message: _reasonFromEvent(event)\n        }\n      }\n\n      span.setError(error)\n\n      self.send(span)\n\n      if (typeof prev.unhandledRejection === \"function\") {\n        prev.unhandledRejection.apply(this, arguments as any)\n      }\n    }\n\n    if (opts.onerror) {\n      ctx.onerror = _onErrorHandler\n    }\n\n    if (opts.onunhandledrejection) {\n      ctx.onunhandledrejection = _onUnhandledRejectionHandler\n    }\n  }\n\n  function _reasonFromEvent(event: PromiseRejectionEvent): string {\n    if (!event || !event.reason) {\n      return \"\"\n    }\n\n    if (typeof event.reason === \"string\") {\n      return event.reason\n    }\n\n    return JSON.stringify(event.reason, circularReplacer())\n  }\n\n  function circularReplacer() {\n    const seenValue: any[] = []\n    const seenKey: string[] = []\n    return (key: string, value: any) => {\n      if (typeof value === \"object\" && value !== null) {\n        const i = seenValue.indexOf(value)\n        if (i !== -1) {\n          return `[cyclic value: ${seenKey[i] || \"root object\"}]`\n        } else {\n          seenValue.push(value)\n          seenKey.push(key)\n        }\n      }\n\n      return value\n    }\n  }\n}\n\nexport const plugin = windowEventsPlugin\n", "// https://github.com/gka/d3-jetpack/blob/main/src/wordwrap.js\n\nimport * as d3 from 'd3';\n\n// while this might not be reprentative for all fonts, it is\n// still better than assuming every character has the same width\n// (set monospace=true if you want to bypass this)\nvar CHAR_W = {\n    A:7,a:7,B:8,b:7,C:8,c:6,D:9,d:7,E:7,e:7,F:7,f:4,G:9,g:7,H:9,h:7,I:3,i:3,J:5,j:3,K:8,k:6,L:7,l:3,M:11,\n    m:11,N:9,n:7,O:9,o:7,P:8,p:7,Q:9,q:7,R:8,r:4,S:8,s:6,T:7,t:4,U:9,u:7,V:7,v:6,W:11,w:9,X:7,x:6,Y:7,y:6,Z:7,z:5,\n    '.':2,',':2,':':2,';':2\n};\n\nexport default function(line, maxCharactersPerLine, minCharactersPerLine, monospace) {\n    var l, lines = [], w = [], words = [], w1, maxChars, minChars, maxLineW, minLineW;\n    w1 = line.split(' ');\n    w1.forEach(function(s, i) {\n        var w2 = s.split('-');\n        var lw = (i < w1.length - 1 ? ' ' : '');\n        if (w2.length > 1) {\n            w2.forEach(function(t, j) {\n                w.push(t + (j < w2.length - 1 ? '-' : lw));\n            });\n        } else {\n            w.push(s + lw);\n        }\n    });\n    maxChars = maxCharactersPerLine || 40;\n    minChars = minCharactersPerLine || Math.max(3, Math.min(maxChars * 0.5, 0.75 * w.map(word_len).sort(num_asc)[Math.round(w.length / 2)]));\n    maxLineW = maxChars * CHAR_W.a;\n    minLineW = minChars * CHAR_W.a;\n    l = 0;\n    w.forEach(function(d) {\n        var ww = d3.sum(d.split('').map(char_w));\n        if (l + ww > maxLineW && l > minLineW) {\n            lines.push(words.join(''));\n            words.length = 0;\n            l = 0;\n        }\n        l += ww;\n        return words.push(d);\n    });\n    if (words.length) {\n        lines.push(words.join(''));\n    }\n    return lines.filter(function(d) {\n        return d !== '';\n    });\n    function char_w(c) { return !monospace && CHAR_W[c] || CHAR_W.a; }\n    function word_len(d) { return d.length; }\n    function num_asc(a, b) { return a - b; }\n}\n", "// https://github.com/gka/d3-jetpack/blob/main/src/tspans.js\n\nexport default function(lines, lh) {\n  return this.selectAll('tspan')\n      .data(function(d, i) {\n        return (typeof(lines) === 'function' ? lines.call(this, d, i) : lines)\n          .map(function(l) {\n            return { line: l, parent: d };\n          });\n      })\n      .enter()\n    .append('tspan')\n      .text(function(d) { return d.line; })\n      .attr('x', 0)\n      .attr('dy', function(d, i) { return i ? (typeof(lh) === 'function' ? lh.call(this, d.parent, d.line, i) : lh) || 15 : 0; });\n}\n", "export default function divide(a, b, def = 0) {\n  if (b === 0) return def\n  return a / b\n}\n", "import 'velocity-animate'\n\n$(document).on('turbolinks:load', function() {\n\n\t$('.show_login_box').click(function(e) {\n\t\te.preventDefault();\n\t\t$('.password_recovery_box').addClass(\"hidden\");\n\t\t$('.login_box').removeClass('hidden').velocity(\"transition.slideLeftIn\");\n\t});\n\n\t$('.show_password_recovery_box').click(function(e) {\n\t\te.preventDefault();\n\t\t$('.login_box').addClass(\"hidden\");\n\t\t$('.password_recovery_box').removeClass('hidden').velocity(\"transition.slideLeftIn\");\n\t});\n\n});\n", "import 'velocity-animate'\n\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n  menuResponsive()\n})\n\nfunction menuResponsive() {\n  $('.nav_control, .close').click(function(e) {\n    e.preventDefault();\n\n    $('body').velocity('scroll', {\n      duration: 500,\n      offset: -40,\n      easing: 'ease-in-out'\n    });\n\n    // Style itself\n    var $selector;\n    if ($(this).hasClass('nav_control')) {\n      $selector = $('.nav_control');\n    } else {\n      $selector = $('.close');\n    }\n\n    $selector.find('i').toggleClass('fa-bars fa-times');\n    $selector.parent().toggleClass('hamburger_container--transparent');\n\n    $('.js-mobile-header').toggle();\n    $('.js-mobile-nav').toggle();\n    $('.js-mobile-buttons').toggle();\n  });\n\n  $('.site_header_logo .search_icon').click(function(e) {\n    e.preventDefault();\n    $('.search_control').velocity(\"fadeIn\", {\n      complete: function (element) {\n        $(element[0]).find('input').removeClass('hidden').focus();\n      }\n    });\n  });\n\n  $('.site_header_logo .search_control input').on('focusout', function() {\n    $('.search_control').velocity(\"fadeOut\");\n  });\n\n  $('.follow_process').on('click', function() {\n    $(this)\n      .toggleClass('checked')\n      .find('.fa')\n      .toggleClass('fa-rss fa-star')\n      .velocity({ translateY: -5 }, { duration: 100, loop: 2 })\n      .next('span')\n      .toggleText('Sigue este proceso', '\u00A1Proceso seguido!');\n  });\n\n  $('.scroll-up').on('click', function() {\n    $('body').velocity('scroll', {\n      duration: 500,\n      offset: -40,\n      easing: 'ease-in-out'\n    });\n  });\n\n  $('.js-submenu-toggle').on('click', function() {\n    $('.js-slider:visible').toggleClass('is-open');\n  });\n\n  $('.js-item-toggle').on('click', function() {\n    var parent = $(this).parent();\n\n    // If open same menu-item, just close it.\n    if (parent.next().find('.js-slider').hasClass('is-open')) {\n      parent.next().find('.js-slider').removeClass('is-open');\n      return;\n    }\n\n    // Closes all menus\n    parent.closest('.js-mobile-nav').find('.is-open').removeClass('is-open');\n\n    // Delayed to get accordion effect\n    setTimeout(function () {\n      // Open sibling menu\n      parent.next().find('.js-slider').toggleClass('is-open');\n    }, 200);\n\n    // REVIEW:\n    // if ($(this).prev().find('a').attr('href') === \"/participacion\") {\n    //   $('.js-secondary_nav').addClass('is-open');\n    // } else {\n    //   $('.js-secondary_nav').removeClass('is-open');\n    // }\n  });\n}\n", "import { GOBIERTO_DASHBOARDS } from '../../../lib/events';\nimport 'magnific-popup';\n\nfunction addMagnificPopups() {\n  // flag storing whether the modal trigger is a dashboard initializer or not\n  let isDashboardTrigger = false\n\n  $(\".open_remote_modal\").magnificPopup({\n    type: \"ajax\",\n    removalDelay: 300,\n    mainClass: \"mfp-move-horizontal\",\n    // closeOnContentClick: !isDashboardTrigger,\n    // closeOnBgClick: !isDashboardTrigger,\n    callbacks: {\n      change: function({ el }) {\n        const { dataset } = el[0] || {} // 0 is a jQuery value, not array index\n\n        // if the modal trigger (.open_remote_modal) contains data-dashboards-maker directive\n        // then it activates the trigger. Once the DOM (the modal content) has been loaded, ajaxContentAdded will dispatch the event.\n        // it must be done in this callback, due to next one does not provide access to \"el\" object\n        isDashboardTrigger = (!!dataset?.dashboardsMaker)\n      },\n      ajaxContentAdded: function() {\n        // This conditionals are always true \u00AC\u00AC\n        if (window.GobiertoAdmin && window.GobiertoAdmin.process_stages_controller) {\n          window.GobiertoAdmin.process_stages_controller.form();\n        }\n        if (window.GobiertoAdmin && window.GobiertoAdmin.globalized_forms_component) {\n          window.GobiertoAdmin.globalized_forms_component.handleGlobalizedForm();\n        }\n        if (window.GobiertoAdmin && window.GobiertoAdmin.gobierto_citizens_charters_editions_intervals_controller) {\n          window.GobiertoAdmin.gobierto_citizens_charters_editions_intervals_controller.handleForm();\n        }\n        if (window.GobiertoAdmin && window.GobiertoAdmin.admin_groups_admins_controller) {\n          window.GobiertoAdmin.admin_groups_admins_controller.index();\n        }\n        if (window.GobiertoAdmin && window.GobiertoAdmin.terms_controller) {\n          window.GobiertoAdmin.terms_controller.form()\n        }\n\n        // autofocus on the first modal input field\n        $(\".modal .form_item input[type=text]:visible\").first().focus()\n\n        if (isDashboardTrigger) {\n          const event = new Event(GOBIERTO_DASHBOARDS.CREATE)\n          document.dispatchEvent(event)\n        }\n    },\n    }\n  });\n}\n\n$(document).on(\"turbolinks:load ajax:complete ajaxSuccess\", addMagnificPopups);\n", "export const GOBIERTO_BUDGETS = {\n  LOADED: \"chart-loaded\"\n}\n\nexport const GOBIERTO_DASHBOARDS = {\n  CREATE: \"create-dashboard-maker\",\n  LOAD: \"load-dashboard-viewer\",\n  LOADED: \"dashboard-viewer-loaded\",\n  SELECTED: \"dashboard-viewer-selected\"\n}", "import 'tipsy-1a';\n\n/* Toggle text method */\n$.fn.extend({\n  toggleText: function(a, b) {\n    return this.text(this.text() == b ? a : b);\n  }\n});\n\n$(document).on(\"ajax:complete ajaxSuccess\", function() {\n  $(\".tipsit\").tipsy({ fade: false, gravity: \"s\", html: true });\n  $(\".tipsit-n\").tipsy({ fade: false, gravity: \"n\", html: true });\n  $(\".tipsit-w\").tipsy({ fade: false, gravity: \"w\", html: true });\n  $(\".tipsit-e\").tipsy({ fade: false, gravity: \"e\", html: true });\n  $(\".tipsit-treemap\").tipsy({ fade: false, gravity: $.fn.tipsy.autoNS, html: true });\n});\n\n$(document).on(\"turbolinks:load\", function() {\n  // Include here common callbacks and behaviours\n\n  // Tabs navigation\n  $(\"[data-tab-target]\").on(\"click\", function(e) {\n    e.preventDefault();\n    var target = $(this).data(\"tab-target\");\n    var scope = $(\"[data-tab-scope]\").length ? $(this).closest(\"[data-tab-scope]\") : $(\"body\");\n\n    scope\n      .find(\"[data-tab-target]\")\n      .parent()\n      .removeClass(\"active\");\n    scope\n      .find('[data-tab-target=\"' + target + '\"]')\n      .parent()\n      .addClass(\"active\");\n    scope.find(\"[data-tab]\").removeClass(\"active\");\n    scope.find('[data-tab=\"' + target + '\"]').addClass(\"active\");\n  });\n\n  function toggleTarget($this) {\n    var $target = $('[data-toggle-target=\"' + $this.data(\"toggle\") + '\"]');\n    $this.is(\":checked\") ? $target.show() : $target.hide();\n  }\n\n  $(\"[data-toggle-target]\").hide();\n  $(\"[data-toggle]\").each(function() {\n    toggleTarget($(this));\n  });\n  $(\"[data-toggle]\").click(function() {\n    toggleTarget($(this));\n  });\n});\n", "// tipsy, facebook style tooltips for jquery\n// version 1.0.0a\n// (c) 2008-2010 jason frame [jason@onehackoranother.com]\n// released under the MIT license\n\n(function($) {\n    \n    function maybeCall(thing, ctx) {\n        return (typeof thing == 'function') ? (thing.call(ctx)) : thing;\n    };\n    \n    function isElementInDOM(ele) {\n      while (ele = ele.parentNode) {\n        if (ele == document) return true;\n      }\n      return false;\n    };\n    \n    function Tipsy(element, options) {\n        this.$element = $(element);\n        this.options = options;\n        this.enabled = true;\n        this.fixTitle();\n    };\n    \n    Tipsy.prototype = {\n        show: function() {\n            var title = this.getTitle();\n            if (title && this.enabled) {\n                var $tip = this.tip();\n                \n                $tip.find('.tipsy-inner')[this.options.html ? 'html' : 'text'](title);\n                $tip[0].className = 'tipsy'; // reset classname in case of dynamic gravity\n                $tip.remove().css({top: 0, left: 0, visibility: 'hidden', display: 'block'}).prependTo(document.body);\n                \n                var pos = $.extend({}, this.$element.offset(), {\n                    width: this.$element[0].offsetWidth,\n                    height: this.$element[0].offsetHeight\n                });\n                \n                var actualWidth = $tip[0].offsetWidth,\n                    actualHeight = $tip[0].offsetHeight,\n                    gravity = maybeCall(this.options.gravity, this.$element[0]);\n                \n                var tp;\n                switch (gravity.charAt(0)) {\n                    case 'n':\n                        tp = {top: pos.top + pos.height + this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2};\n                        break;\n                    case 's':\n                        tp = {top: pos.top - actualHeight - this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2};\n                        break;\n                    case 'e':\n                        tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth - this.options.offset};\n                        break;\n                    case 'w':\n                        tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width + this.options.offset};\n                        break;\n                }\n                \n                if (gravity.length == 2) {\n                    if (gravity.charAt(1) == 'w') {\n                        tp.left = pos.left + pos.width / 2 - 15;\n                    } else {\n                        tp.left = pos.left + pos.width / 2 - actualWidth + 15;\n                    }\n                }\n                \n                $tip.css(tp).addClass('tipsy-' + gravity);\n                $tip.find('.tipsy-arrow')[0].className = 'tipsy-arrow tipsy-arrow-' + gravity.charAt(0);\n                if (this.options.className) {\n                    $tip.addClass(maybeCall(this.options.className, this.$element[0]));\n                }\n                \n                if (this.options.fade) {\n                    $tip.stop().css({opacity: 0, display: 'block', visibility: 'visible'}).animate({opacity: this.options.opacity});\n                } else {\n                    $tip.css({visibility: 'visible', opacity: this.options.opacity});\n                }\n            }\n        },\n        \n        hide: function() {\n            if (this.options.fade) {\n                this.tip().stop().fadeOut(function() { $(this).remove(); });\n            } else {\n                this.tip().remove();\n            }\n        },\n        \n        fixTitle: function() {\n            var $e = this.$element;\n            if ($e.attr('title') || typeof($e.attr('original-title')) != 'string') {\n                $e.attr('original-title', $e.attr('title') || '').removeAttr('title');\n            }\n        },\n        \n        getTitle: function() {\n            var title, $e = this.$element, o = this.options;\n            this.fixTitle();\n            var title, o = this.options;\n            if (typeof o.title == 'string') {\n                title = $e.attr(o.title == 'title' ? 'original-title' : o.title);\n            } else if (typeof o.title == 'function') {\n                title = o.title.call($e[0]);\n            }\n            title = ('' + title).replace(/(^\\s*|\\s*$)/, \"\");\n            return title || o.fallback;\n        },\n        \n        tip: function() {\n            if (!this.$tip) {\n                this.$tip = $('<div class=\"tipsy\"></div>').html('<div class=\"tipsy-arrow\"></div><div class=\"tipsy-inner\"></div>');\n                this.$tip.data('tipsy-pointee', this.$element[0]);\n            }\n            return this.$tip;\n        },\n        \n        validate: function() {\n            if (!this.$element[0].parentNode) {\n                this.hide();\n                this.$element = null;\n                this.options = null;\n            }\n        },\n        \n        enable: function() { this.enabled = true; },\n        disable: function() { this.enabled = false; },\n        toggleEnabled: function() { this.enabled = !this.enabled; }\n    };\n    \n    $.fn.tipsy = function(options) {\n        \n        if (options === true) {\n            return this.data('tipsy');\n        } else if (typeof options == 'string') {\n            var tipsy = this.data('tipsy');\n            if (tipsy) tipsy[options]();\n            return this;\n        }\n        \n        options = $.extend({}, $.fn.tipsy.defaults, options);\n        \n        function get(ele) {\n            var tipsy = $.data(ele, 'tipsy');\n            if (!tipsy) {\n                tipsy = new Tipsy(ele, $.fn.tipsy.elementOptions(ele, options));\n                $.data(ele, 'tipsy', tipsy);\n            }\n            return tipsy;\n        }\n        \n        function enter() {\n            var tipsy = get(this);\n            tipsy.hoverState = 'in';\n            if (options.delayIn == 0) {\n                tipsy.show();\n            } else {\n                tipsy.fixTitle();\n                setTimeout(function() { if (tipsy.hoverState == 'in') tipsy.show(); }, options.delayIn);\n            }\n        };\n        \n        function leave() {\n            var tipsy = get(this);\n            tipsy.hoverState = 'out';\n            if (options.delayOut == 0) {\n                tipsy.hide();\n            } else {\n                setTimeout(function() { if (tipsy.hoverState == 'out') tipsy.hide(); }, options.delayOut);\n            }\n        };\n        \n        if (!options.live) this.each(function() { get(this); });\n        \n        if (options.trigger != 'manual') {\n            var binder   = options.live ? 'live' : 'bind',\n                eventIn  = options.trigger == 'hover' ? 'mouseenter' : 'focus',\n                eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur';\n            this[binder](eventIn, enter)[binder](eventOut, leave);\n        }\n        \n        return this;\n        \n    };\n    \n    $.fn.tipsy.defaults = {\n        className: null,\n        delayIn: 0,\n        delayOut: 0,\n        fade: false,\n        fallback: '',\n        gravity: 'n',\n        html: false,\n        live: false,\n        offset: 0,\n        opacity: 0.8,\n        title: 'title',\n        trigger: 'hover'\n    };\n    \n    $.fn.tipsy.revalidate = function() {\n      $('.tipsy').each(function() {\n        var pointee = $.data(this, 'tipsy-pointee');\n        if (!pointee || !isElementInDOM(pointee)) {\n          $(this).remove();\n        }\n      });\n    };\n    \n    // Overwrite this method to provide options on a per-element basis.\n    // For example, you could store the gravity in a 'tipsy-gravity' attribute:\n    // return $.extend({}, options, {gravity: $(ele).attr('tipsy-gravity') || 'n' });\n    // (remember - do not modify 'options' in place!)\n    $.fn.tipsy.elementOptions = function(ele, options) {\n        return $.metadata ? $.extend({}, options, $(ele).metadata()) : options;\n    };\n    \n    $.fn.tipsy.autoNS = function() {\n        return $(this).offset().top > ($(document).scrollTop() + $(window).height() / 2) ? 's' : 'n';\n    };\n    \n    $.fn.tipsy.autoWE = function() {\n        return $(this).offset().left > ($(document).scrollLeft() + $(window).width() / 2) ? 'e' : 'w';\n    };\n    \n    /**\n     * yields a closure of the supplied parameters, producing a function that takes\n     * no arguments and is suitable for use as an autogravity function like so:\n     *\n     * @param margin (int) - distance from the viewable region edge that an\n     *        element should be before setting its tooltip's gravity to be away\n     *        from that edge.\n     * @param prefer (string, e.g. 'n', 'sw', 'w') - the direction to prefer\n     *        if there are no viewable region edges effecting the tooltip's\n     *        gravity. It will try to vary from this minimally, for example,\n     *        if 'sw' is preferred and an element is near the right viewable \n     *        region edge, but not the top edge, it will set the gravity for\n     *        that element's tooltip to be 'se', preserving the southern\n     *        component.\n     */\n     $.fn.tipsy.autoBounds = function(margin, prefer) {\n\t\treturn function() {\n\t\t\tvar dir = {ns: prefer[0], ew: (prefer.length > 1 ? prefer[1] : false)},\n\t\t\t    boundTop = $(document).scrollTop() + margin,\n\t\t\t    boundLeft = $(document).scrollLeft() + margin,\n\t\t\t    $this = $(this);\n\n\t\t\tif ($this.offset().top < boundTop) dir.ns = 'n';\n\t\t\tif ($this.offset().left < boundLeft) dir.ew = 'w';\n\t\t\tif ($(window).width() + $(document).scrollLeft() - $this.offset().left < margin) dir.ew = 'e';\n\t\t\tif ($(window).height() + $(document).scrollTop() - $this.offset().top < margin) dir.ns = 's';\n\n\t\t\treturn dir.ns + (dir.ew ? dir.ew : '');\n\t\t}\n\t};\n    \n})(jQuery);\n", "$(document).on('turbolinks:load', function() {\n  (function () {\n    var tablist = document.querySelectorAll('[role=\"tablist\"]')[0];\n    var tabs;\n    // eslint-disable-next-line\n    var panels;\n\n    generateArrays();\n\n    function generateArrays () {\n      tabs = document.querySelectorAll('[role=\"tab\"]');\n      panels = document.querySelectorAll('[role=\"tabpanel\"]');\n    }\n\n    // For easy reference\n    var keys = {\n      end: 35,\n      home: 36,\n      left: 37,\n      up: 38,\n      right: 39,\n      down: 40,\n      enter: 13,\n      space: 32\n    };\n\n    // Add or substract depenign on key pressed\n    var direction = {\n      37: -1,\n      38: -1,\n      39: 1,\n      40: 1\n    };\n\n    // Bind listeners\n    for (var i = 0; i < tabs.length; ++i) {\n      addListeners(i);\n    }\n\n    function addListeners (index) {\n      tabs[index].addEventListener('click', clickEventListener);\n      tabs[index].addEventListener('keydown', keydownEventListener);\n      tabs[index].addEventListener('keyup', keyupEventListener);\n\n      // Build an array with all tabs (<button>s) in it\n      tabs[index].index = index;\n    }\n\n    // When a tab is clicked, activateTab is fired to activate it\n    function clickEventListener (event) {\n      var tab = event.target;\n      activateTab(tab, false);\n    }\n\n    // Handle keydown on tabs\n    function keydownEventListener (event) {\n      var key = event.keyCode;\n\n      switch (key) {\n        case keys.end:\n          event.preventDefault();\n          // Activate last tab\n          focusLastTab();\n          break;\n        case keys.home:\n          event.preventDefault();\n          // Activate first tab\n          focusFirstTab();\n          break;\n\n        // Up and down are in keydown\n        // because we need to prevent page scroll >:)\n        case keys.up:\n        case keys.down:\n          determineOrientation(event);\n          break;\n      }\n    }\n\n    // Handle keyup on tabs\n    function keyupEventListener (event) {\n      var key = event.keyCode;\n\n      switch (key) {\n        case keys.left:\n        case keys.right:\n          determineOrientation(event);\n          break;\n        case keys.enter:\n        case keys.space:\n          activateTab(event.target);\n          break;\n      }\n    }\n\n    // When a tablist\u2019s aria-orientation is set to vertical,\n    // only up and down arrow should function.\n    // In all other cases only left and right arrow function.\n    function determineOrientation (event) {\n      var key = event.keyCode;\n      var vertical = tablist.getAttribute('aria-orientation') == 'vertical';\n      var proceed = false;\n\n      if (vertical) {\n        if (key === keys.up || key === keys.down) {\n          event.preventDefault();\n          proceed = true;\n        }\n      }\n      else {\n        if (key === keys.left || key === keys.right) {\n          proceed = true;\n        }\n      }\n\n      if (proceed) {\n        switchTabOnArrowPress(event);\n      }\n    }\n\n    // Either focus the next, previous, first, or last tab\n    // depening on key pressed\n    function switchTabOnArrowPress (event) {\n      var pressed = event.keyCode;\n\n      if (direction[pressed]) {\n        var target = event.target;\n        if (target.index !== undefined) {\n          if (tabs[target.index + direction[pressed]]) {\n            tabs[target.index + direction[pressed]].focus();\n          }\n          else if (pressed === keys.left || pressed === keys.up) {\n            focusLastTab();\n          }\n          else if (pressed === keys.right || pressed == keys.down) {\n            focusFirstTab();\n          }\n        }\n      }\n    }\n\n    // Activates any given tab panel\n    function activateTab (tab, setFocus) {\n      setFocus = setFocus || true;\n      // Deactivate all other tabs\n\n      var currentTabpanel = $(tab).closest('[role=\"tabpanel\"]');\n\n      deactivateTabs(currentTabpanel);\n\n      // Remove tabindex attribute\n      tab.removeAttribute('tabindex');\n\n      // Set the tab as selected\n      tab.setAttribute('aria-selected', 'true');\n\n      // Get the value of aria-controls (which is an ID)\n      var controls = tab.getAttribute('aria-controls');\n\n      // Remove hidden attribute from tab panel to make it visible\n      var tabPanel = document.getElementById(controls);\n\n      if (tabPanel) {\n        tabPanel.removeAttribute('hidden');\n      }\n\n      // Set focus when required\n      if (setFocus) {\n        tab.focus();\n      }\n    }\n\n    // Deactivate all tabs and tab panels\n    function deactivateTabs (currentTabpanel) {\n      var tabsInCurrentTabpanel = $(currentTabpanel).find('[role=\"tab\"]');\n\n      for (var t = 0; t < tabsInCurrentTabpanel.length; t++) {\n        tabsInCurrentTabpanel[t].setAttribute('tabindex', '-1');\n        tabsInCurrentTabpanel[t].setAttribute('aria-selected', 'false');\n      }\n    }\n\n    // Make a guess\n    function focusFirstTab () {\n      tabs[0].focus();\n    }\n\n    // Make a guess\n    function focusLastTab () {\n      tabs[tabs.length - 1].focus();\n    }\n\n    // Determine whether there should be a delay\n    // when user navigates with the arrow keys\n    // eslint-disable-next-line\n    function determineDelay () {\n      var hasDelay = tablist.hasAttribute('data-delay');\n      var delay = 0;\n\n      if (hasDelay) {\n        var delayValue = tablist.getAttribute('data-delay');\n        if (delayValue) {\n          delay = delayValue;\n        }\n        else {\n          // If no value is specified, default to 300ms\n          delay = 300;\n        }\n      }\n\n      return delay;\n    }\n  })();\n});\n", "import 'velocity-animate'\nimport 'velocity-ui-pack'\n\n$(document).on('turbolinks:load', function() {\n  $.Velocity.RegisterEffect(\"transition.slideLeftLongOut\", { defaultDuration: 500, calls: [[ { opacity: [ 0, 1 ], translateX: -500, translateZ: 0 } ]],reset: { translateX: 0 } })\n  $.Velocity.RegisterEffect(\"transition.slideLeftLongIn\", { defaultDuration: 500, calls: [[ { opacity: [ 1, 0 ], translateX: [0,-500], translateZ: 0 } ]] })\n  $.Velocity.RegisterEffect(\"transition.slideRightLongOut\", { defaultDuration: 500, calls: [[ { opacity: [ 0, 1 ], translateX: 500, translateZ: 0 } ]],reset: { translateX: 0 } })\n  $.Velocity.RegisterEffect(\"transition.slideRightLongIn\", { defaultDuration: 500, calls: [[ { opacity: [ 1, 0 ], translateX: [0,500], translateZ: 0 } ]] })\n});\n", "import * as flight from 'flightjs'\n\nexport var shareContent = flight.component(function(){\n  this.attributes({\n    url: \"\",\n    modalOptions: 'menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=300,width=600'\n  });\n\n  this.after('initialize', function() {\n\n    var twitterElement = document.querySelector(\".twitter\");\n    var facebookElement = document.querySelector(\".facebook\");\n\n    if (this.$node.find('[data-share-url]').length > 0){\n      this.attr.url = this.$node.find('[data-share-url]').data('share-url');\n    }\n\n    if (this.$node.data('anchor') !== undefined){\n      this.attr.url += '#' + this.$node.data('anchor');\n    }\n\n    var twitterHandleContent = document.head.querySelector(\"[name='twitter:site']\")\n\n    if (twitterHandleContent === null && twitterElement) {\n      twitterElement.style.display = 'none'\n    } else if (twitterElement) {\n      twitterElement.style.display = 'inline-block'\n      facebookElement.style.display = 'inline-block'\n    }\n\n    this.attr.twitterHandle = twitterHandleContent === null ? '' : twitterHandleContent.content\n\n\n    if (this.attr.url === \"\") {\n      this.attr.url = window.location.href;\n    }\n\n    this.twitterLink = this.$node.find('[data-share-network=twitter]');\n    this.facebookLink = this.$node.find('[data-share-network=facebook]');\n    this.linkedinLink = this.$node.find('[data-share-network=linkedin]');\n    this.emailLink = this.$node.find('[data-share-network=email]');\n    this.codeLink = this.$node.find('[data-share-network=code]');\n\n    if (this.twitterLink)\n      this.twitterLink.on('click', this.clickTwitterHandle.bind(this));\n\n    if (this.facebookLink)\n      this.facebookLink.on('click', this.clickFacebookHandle.bind(this));\n\n    if (this.linkedinLink)\n      this.linkedinLink.on('click', this.clickLinkedinHandle.bind(this));\n\n    if (this.emailLink.length)\n      this.emailLink.on('click', this.clickEmailHandle.bind(this));\n  });\n\n  this.clickTwitterHandle = function(e) {\n    e.preventDefault();\n    try {\n      var twitter_intent_url = 'https://twitter.com/intent/tweet?text=' + this.shareText();\n      if (this.attr.twitterHashtags != undefined) {\n        twitter_intent_url += '&hashtags= ' + this.attr.twitterHashtags;\n      }\n      twitter_intent_url += '&url=' + encodeURIComponent(this.attr.url);\n      if (this.attr.twitterHandle != undefined) {\n        twitter_intent_url += '&via=' + this.attr.twitterHandle;\n      }\n\n      window.open(twitter_intent_url, '', this.attr.modalOptions);\n\n    } catch (missingShareTextNode) {\n      console.warn('Error: missing share Text Node');\n    }\n  };\n\n  this.clickFacebookHandle = function(e) {\n    e.preventDefault();\n    window.open('http://www.facebook.com/sharer/sharer.php?u='+ encodeURIComponent(this.attr.url), '', this.attr.modalOptions);\n  };\n\n  this.clickLinkedinHandle = function(e) {\n    e.preventDefault();\n\n    window.open('https://www.linkedin.com/shareArticle?mini=true&url='+encodeURIComponent(this.attr.url)+'&title=' + this.shareText(), '', this.attr.modalOptions);\n  };\n\n  this.clickEmailHandle = function(e) {\n    e.preventDefault();\n    try {\n      window.location.href = 'mailto:?subject=Recommended article from ICIJ&body=' + this.shareText() + ' ' + encodeURIComponent(this.attr.url);\n    } catch (missingShareTextNode) {\n      console.warn('Error: missing share Text Node');\n    }\n  };\n\n  this.shareText = function(){\n    var text;\n    var textNode = this.$node.find('[data-share-text]');\n\n    if (textNode.length && textNode.data('share-text') !== undefined) {\n      text = textNode.data('share-text');\n    } else {\n      if (!textNode.length)\n        textNode = $('[data-share-text]')\n      if (!textNode.length)\n        textNode = $('h1');\n      text = $.trim(textNode.text());\n      if (!text.length)\n        text = window.document.title;\n    }\n\n    if (text.length > 101) {\n      text = text.substring(0,101) + '\u2026';\n    }\n    return text;\n  };\n});\n\n$(document).on('turbolinks:load ajax:complete ajaxSuccess', function() {\n  shareContent.attachTo('[data-share]');\n});\n", "$(document).on(\"turbolinks:load\", function() {\n  const tabs = document.querySelectorAll(\"[role^=tabs]\");\n  const activeClass = \"is-active\";\n\n  const getSeed = str => {\n    const pattern = new RegExp(/^tabs-(.*)/);\n    const match = pattern.exec(str) || [];\n    return match.length > 1 ? match[1] : undefined;\n  };\n\n  const deactivate = elems => {\n    for (let i = 0; i < elems.length; i++) {\n      elems[i].classList.remove(activeClass);\n    }\n  };\n\n  const activate = elems => {\n    for (let i = 0; i < elems.length; i++) {\n      elems[i].classList.add(activeClass);\n    }\n  };\n\n  tabs.forEach(tab => {\n    const seed = getSeed(tab.getAttribute(\"role\"));\n\n    if (seed) {\n      const tabscontent = document.querySelector(`[role=tabscontent-${seed}]`);\n      const tabcontent = tabscontent.querySelectorAll(\"[role=tabcontent]\");\n      const tablinks = tab.querySelectorAll(\"[role=tablink]\");\n\n      for (let i = 0; i < tablinks.length; i++) {\n        if (tablinks[i].classList.contains(activeClass) || tabcontent[i].classList.contains(activeClass)) {\n          activate([tablinks[i], tabcontent[i]]);\n        }\n\n        tablinks[i].addEventListener(\"click\", function(event) {\n          const elem = event.currentTarget;\n\n          if (!elem.classList.contains(activeClass)) {\n            deactivate([...tablinks, ...tabcontent]);\n\n            const index = [...tablinks].indexOf(elem);\n            activate([elem, tabcontent[index]]);\n          }\n        });\n      }\n    }\n  });\n});\n", "import Turbolinks from 'turbolinks'\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n  const disableTurbolinks = document.querySelector(\"body[data-turbolinks='false']\")\n\n  // If we don't found at body level this tag, we enable Turbolinks by default\n  if (!disableTurbolinks) {\n    Turbolinks.start()\n  }\n})\n", "// iFrame communication\nexport function handleIFramePageLoaded() {\n  // If the current page has been loaded in an iframe\n  if (window.location !== window.parent.location) {\n    // Send a message to the iframe container with the URL (href + hash) and the title of the document\n    let message = {\n      type: 'gobiertoIframeUrl',\n      href: window.location.href,\n      hash: window.location.hash,\n      title: window.document.title\n    };\n    window.parent.postMessage(message, '*');\n  }\n}\n\n$(document).on(\"turbolinks:load\", () => handleIFramePageLoaded())\n", "import './modules/translations.js'\n", "I18n.translations || (I18n.translations = {});\nI18n.translations[\"ca\"] = I18n.extend((I18n.translations[\"ca\"] || {}), JSON.parse('{\"activemodel\":{\"attributes\":{\"gobierto_admin/admin_confirmation_form\":{\"email\":\"Email\"},\"gobierto_admin/admin_edit_password_form\":{\"password\":\"Contrasenya\",\"password_confirmation\":\"Confirmaci\u00F3 de la contrasenya\"},\"gobierto_admin/admin_form\":{\"email\":\"Email\",\"name\":\"Nom\",\"password\":\"Contrasenya\",\"password_confirmation\":\"Confirmaci\u00F3 de la contrasenya\",\"site_ids\":\"Sites\",\"site_modules\":\"M\u00F2duls\"},\"gobierto_admin/admin_group_form\":{\"name\":\"Nom del grup\"},\"gobierto_admin/admin_invitation_form\":{\"emails\":\"Emails\",\"site_ids\":\"Sites\"},\"gobierto_admin/admin_new_password_form\":{\"email\":\"Email\"},\"gobierto_admin/file_attachment_form\":{\"description\":\"Descripci\u00F3\",\"file_digest\":\"Aquest arxiu\",\"name\":\"Nom\"},\"gobierto_admin/gobierto_budgets/options_form\":{\"budgets_guide_page\":\"P\u00E0gina de la guia de pressupostos (si no selecciones niguna se mostrar\u00E0 el text per defecte)\",\"comparison_compare_municipalities\":\"Mostrar municipis espec\u00EDfics\",\"comparison_context_table_enabled\":\"Mostrar taula de contexte\",\"comparison_show_widget\":\"Mostrar widget comparaci\u00F3\",\"comparison_tool_enabled\":\"Comparaci\u00F3\",\"feedback_emails\":\"Correu-e per a rebre participacions\",\"receipt_configuration\":\"Configuraci\u00F3 del rebut\"},\"gobierto_admin/gobierto_calendars/calendar_configuration_form\":{\"ibm_notes_pwd\":\"La contrasenya\",\"ibm_notes_url\":\"La URL\",\"ibm_notes_usr\":\"El nom d\\'usuari\",\"microsoft_exchange_pwd\":\"La contrasenya\",\"microsoft_exchange_url\":\"La URL\",\"microsoft_exchange_usr\":\"El nom d\\'usuari\"},\"gobierto_admin/gobierto_calendars/event_form\":{\"attachment_file\":\"Fitxer adjunt\",\"description\":\"Descripci\u00F3\",\"ends_at\":\"Data de finalitzaci\u00F3\",\"starts_at\":\"Data de comen\u00E7ament\",\"title\":\"T\u00EDtol\",\"title_translations\":\"T\u00EDtol\"},\"gobierto_admin/gobierto_cms/page_form\":{\"body\":\"Contingut\",\"published_on\":\"Data de publicaci\u00F3\",\"slug\":\"URL\",\"title\":\"T\u00EDtol\"},\"gobierto_admin/gobierto_cms/section_form\":{\"slug\":\"URL\",\"title\":\"T\u00EDtol\"},\"gobierto_admin/gobierto_common/collection_form\":{\"container_global_id\":\"Contenidor\",\"container_id\":\"Contenidor\",\"item_type\":\"Tipus\",\"slug\":\"URL\",\"title\":\"T\u00EDtol\"},\"gobierto_admin/gobierto_common/custom_field_form\":{\"date\":\"Data\",\"field_type\":\"Tipus de camp\",\"image\":\"Imatge\",\"indicators\":\"Indicadors\",\"localized_paragraph\":\"Text llarg\",\"localized_string\":\"Text (l\u00EDnia)\",\"multiple_options\":\"Selecci\u00F3 m\u00FAltiple\",\"name\":\"Nom\",\"numeric\":\"Nombre\",\"options\":\"Opcions\",\"paragraph\":\"Text llarg sense traduccions\",\"single_option\":\"Selecci\u00F3 \u00FAnica\",\"string\":\"Text sense traduccions (l\u00EDnia)\",\"uid\":\"Identificador\",\"vocabulary_options\":\"Vocabulari\"},\"gobierto_admin/gobierto_common/term_form\":{\"description\":\"Descripci\u00F3\",\"external_id\":\"ID extern\",\"name\":\"Nom\",\"slug\":\"Slug\",\"term_id\":\"T\u00E9rme Pare\"},\"gobierto_admin/gobierto_common/vocabulary_form\":{\"name\":\"Nom\"},\"gobierto_admin/gobierto_data/dataset_form\":{\"name\":\"Nom\",\"slug\":\"Slug\",\"table_name\":\"Nom de la taula\"},\"gobierto_admin/gobierto_data/settings_form\":{\"api_settings_max_dataset_size_for_queries\":\"Mida m\u00E0xima de datasets sense limitar la vista pr\u00E8via (MB)\",\"db_config\":\"Configuraci\u00F3 de la connexi\u00F3 a la base de dades\",\"frontend_enabled\":\"Front-end visible\"},\"gobierto_admin/gobierto_investments/project_form\":{\"external_id\":\"ID extern\",\"title\":\"T\u00EDtol\"},\"gobierto_admin/gobierto_observatory/settings_form\":{\"observatory_config\":\"Configuraci\u00F3 de l\\'observatori\"},\"gobierto_admin/gobierto_people/person_form\":{\"avatar_file\":\"Avatar\",\"avatar_url\":\"Avatar\",\"bio\":\"Biografia\",\"bio_file\":\"Fitxer adjunt\",\"bio_url\":\"Fichero adjunto\",\"category\":\"Categoria\",\"charge\":\"C\u00E0rrec\",\"email\":\"Correu-e\",\"name\":\"Nom\",\"party\":\"Posici\u00F3\",\"political_group_id\":\"Grup pol\u00EDtic\"},\"gobierto_admin/gobierto_people/person_post_form\":{\"body\":\"Contingut\",\"tags\":\"Tags\",\"title\":\"T\u00EDtol\"},\"gobierto_admin/gobierto_people/person_statement_form\":{\"attachment_file\":\"Fitxer adjunt\",\"published_on\":\"Data de publicaci\u00F3\",\"title\":\"T\u00EDtol\",\"title_translations\":\"T\u00EDtol\"},\"gobierto_admin/gobierto_people/political_group_form\":{\"name\":\"Nom de l\\'grupaci\u00F3\"},\"gobierto_admin/gobierto_plans/node_form\":{\"category_id\":\"Categoria\",\"ends_at\":\"Data de fi\",\"name\":\"Projecte\",\"progress\":\"Progr\u00E9s\",\"starts_at\":\"Data d\\'inici\",\"status_id\":\"Estat\"},\"gobierto_admin/gobierto_plans/plan_form\":{\"configuration_data\":\"Configuraci\u00F3\",\"css\":\"CSS\",\"csv_file\":\"Fitxer CSV\",\"footer\":\"Peu de p\u00E0gina\",\"introduction\":\"Introducci\u00F3\",\"plan_type_id\":\"Tipus\",\"slug\":\"url\",\"statuses_vocabulary_id\":\"Vocabulari de estats\",\"title\":\"T\u00EDtol\",\"vocabulary_id\":\"Vocabulari de categories\",\"year\":\"Any\"},\"gobierto_admin/gobierto_plans/plan_type_form\":{\"name\":\"Nom\",\"slug\":\"url\"},\"gobierto_admin/gobierto_visualizations/settings_form\":{\"visualizations_config\":\"Configuraci\u00F3 de les visualitzacions\"},\"gobierto_admin/issue_form\":{\"name\":\"Nom\",\"slug\":\"URL\"},\"gobierto_admin/scope_form\":{\"name\":\"Nom\"},\"gobierto_admin/site_form\":{\"admin_custom_code\":\"Codi personalitzat d\\'admin\",\"available_locales\":\"Idiomes disponibles\",\"default_locale\":\"Idioma per defecte\",\"domain\":\"Domini\",\"foot_markup\":\"HTML de Peu\",\"google_analytics_id\":\"Codi de Google Analytics\",\"head_markup\":\"HTML de Cap\u00E7alera\",\"home_page\":\"M\u00F2dul d\\'inici\",\"home_page_item_id\":\"P\u00E0gina d\\'inici\",\"links_markup\":\"HTML de Enlla\u00E7os\",\"logo_file\":\"Logotip\",\"name\":\"Nom de l\\'entitat\",\"organization_id\":\"Identificador de l\\'organitzaci\u00F3 (codi INE)\",\"organization_name\":\"Organitzaci\u00F3\",\"populate_data_api_token\":\"API token Populate Data\",\"privacy_page_id\":\"P\u00E0gina privacitat\",\"raw_configuration_variables\":\"Altres variables configuraci\u00F3\",\"registration_disabled\":\"Deshabilitar el registre (nom\u00E9s oculta els enlla\u00E7os al registre/login)\",\"reply_to_email\":\"Direcci\u00F3 de resposta en correus-e\",\"title\":\"Nom del site\"},\"gobierto_admin/user_form\":{\"email\":\"Email\",\"name\":\"Nom\"},\"gobierto_admin/user_password_form\":{\"password\":\"Contrasenya\",\"password_confirmation\":\"Confirmaci\u00F3n de contrasenya\"},\"gobierto_dashboards/dashboard_form\":{\"title\":\"T\u00EDtol\"},\"gobierto_people/person_message\":{\"body\":\"Missatge\",\"email\":\"El teu e-mail\",\"name\":\"El teu nom\"},\"user/census_verification_form\":{\"date_of_birth\":\"Data de naixement\",\"document_number\":\"Nombre de document\",\"site\":\"Lloc\"},\"user/confirmation_form\":{\"date_of_birth\":\"Data de naixement\",\"document_number\":\"Nombre de document\",\"email\":\"El teu Correu-e\",\"gender\":\"Genre\",\"name\":\"El teu Nom\",\"password\":\"La teva contrasenya\",\"password_confirmation\":\"La teva contrasenya, de nou\"},\"user/confirmation_request_form\":{\"email\":\"El teu Correu-e\"},\"user/edit_password_form\":{\"password\":\"La teva contrasenya\",\"password_confirmation\":\"La teva contrasenya, de nou\"},\"user/new_password_form\":{\"email\":\"El teu Correu-e\"},\"user/registration_form\":{\"email\":\"El teu Correu-e\"},\"user/session_form\":{\"email\":\"El teu Correu-e\",\"password\":\"La teva Contrasenya\"},\"user/settings_form\":{\"date_of_birth\":\"Data de naixement\",\"email\":\"El teu Correu-e\",\"gender\":\"Genre\",\"name\":\"El teu Nom\",\"password\":\"La teva contrasenya\",\"password_confirmation\":\"La teva contrasenya, de nou\"},\"user/subscription_form\":{\"subscribable\":\"Recurs\",\"user\":\"Usuari\",\"user_email\":\"Correu-e\"}},\"errors\":{\"models\":{\"gobierto_admin/gobierto_common/vocabulary_terms_import_form\":{\"attributes\":{\"base\":{\"invalid_row\":\"Hi ha una fila amb dades inv\u00E0lid: %{row_data}\"}}},\"gobierto_admin/gobierto_data/dataset_form\":{\"attributes\":{\"table_name\":{\"invalid_table\":\"No es pot accedir a la taula. Missatge d\\'error: \\\\\"%{error_message}\\\\\"\"}}},\"gobierto_admin/gobierto_data/settings_form\":{\"attributes\":{\"db_config\":{\"invalid_connection\":\"No es pot connectar amb les dades de configuraci\u00F3. Missatge d\\'error: \\\\\"%{error_message}\\\\\"\",\"invalid_format\":\"La configuraci\u00F3 no t\u00E9 un format JSON v\u00E0lid\"}}},\"gobierto_admin/gobierto_observatory/settings_form\":{\"attributes\":{\"observatory_config\":{\"invalid_format\":\"La configuraci\u00F3 no t\u00E9 un format JSON v\u00E0lid\",\"invalid_values\":\"La configuraci\u00F3 no t\u00E9 valors v\u00E0lids\"}}},\"gobierto_admin/gobierto_plans/plan_data_form\":{\"attributes\":{\"base\":{\"category_not_found\":\"Alguna de les categories no s\\'ha pogut trobar. Contingut de la fila: %{row_data}\",\"external_id_taken\":\"El camp external_id ja est\u00E0 en \u00FAs, b\u00E9 perqu\u00E8 una altra fila t\u00E9 el mateix external_id o perqu\u00E8 estava buida i autom\u00E0ticament es va assignar el mateix valor. Contingut de la fila: %{row_data}\",\"file_not_found\":\"Fitxer no trobat\",\"invalid_columns\":\"No estan totes les columnes necess\u00E0ries\",\"invalid_format\":\"Format de fitxer inv\u00E0lid\",\"invalid_row\":\"Hi ha una fila amb dades inv\u00E0lid: %{row_data}\",\"status_missing\":\"L\\'estat de la fila no s\\'ha trobat en el vocabulari d\\'estats corresponent o hi ha un estat a la fila per\u00F2 no hi ha un vocabulari d\\'estats configurat en el pla. Contingut de la fila: %{row_data}\",\"term_not_found\":\"No ha estat possible trobar el terme \\'%{term}\\' en el vocabulari \\'%{vocabulary}\\' usat per la columna \\'Node.%{uid}\\'\",\"used_resource\":\"El vocabulari empra termes que s\\'usen en altres parts de l\\'aplicaci\u00F3\"}}},\"gobierto_admin/gobierto_plans/plan_table_custom_fields_form\":{\"attributes\":{\"base\":{\"file_not_found\":\"Fitxer no trobat\",\"invalid_columns\":\"No estan totes les columnes necess\u00E0ries\",\"invalid_format\":\"Format de fitxer inv\u00E0lid\"}}},\"gobierto_admin/gobierto_plans/projects_form\":{\"attributes\":{\"base\":{\"category_missing\":\"Categoria no trobada en dades del projecte. Si us plau, proporcioneu un category_id o category_external_id v\u00E0lid. Dades del projecte: %{json_data}\",\"failed_import\":\"El projecte amb les dades seg\u00FCents no ha pogut ser importat: %{json_data}\",\"status_missing\":\"Estat no trobat en dades del projecte. Si us plau, proporciona un status_id o status_external_id v\u00E0lid. Dades del projecte: %{json_data}\"}}},\"gobierto_admin/gobierto_visualizations/settings_form\":{\"attributes\":{\"visualizations_config\":{\"invalid_format\":\"La configuraci\u00F3 no t\u00E9 un format JSON v\u00E0lid\",\"invalid_values\":\"La configuraci\u00F3 no t\u00E9 valors v\u00E0lids\"}}},\"gobierto_data/dataset_form\":{\"attributes\":{\"data_file\":{\"no_file_included\":\"L\\'arxiu no s\\'ha pogut carregar. Si us plau, revisa la petici\u00F3 i assegura\\'t que el contingut de l\\'arxiu s\\'hagi incl\u00F2s en ella\"}}}}},\"models\":{\"gobierto_admin/admin_confirmation_form\":\"Confirmaci\u00F3\",\"gobierto_admin/admin_edit_password_form\":\"Canvi de contrasenya\",\"gobierto_admin/admin_form\":\"Administrador\",\"gobierto_admin/admin_group_form\":\"Grup\",\"gobierto_admin/admin_invitation_form\":\"Invitaci\u00F3\",\"gobierto_admin/admin_new_password_form\":\"Recuperaci\u00F3 de contrasenya\",\"gobierto_admin/file_attachment_form\":\"Canvi en el fitxer\",\"gobierto_admin/gobierto_budgets/options_form\":\"Opcions\",\"gobierto_admin/gobierto_calendars/event_form\":\"Esdeveniment\",\"gobierto_admin/gobierto_cms/page_form\":\"P\u00E0gina\",\"gobierto_admin/gobierto_cms/section_form\":\"Secci\u00F3\",\"gobierto_admin/gobierto_common/collection_form\":\"Col\u00B7lecci\u00F3\",\"gobierto_admin/gobierto_common/content_block_form\":\"Bloc de contingut\",\"gobierto_admin/gobierto_common/term_form\":\"Terme\",\"gobierto_admin/gobierto_common/vocabulary_form\":\"Vocabulari\",\"gobierto_admin/gobierto_people/person_form\":\"Perfil\",\"gobierto_admin/gobierto_people/person_post_form\":\"Post\",\"gobierto_admin/gobierto_people/person_statement_form\":\"Declaraci\u00F3\",\"gobierto_admin/gobierto_people/political_group_form\":\"Agrupaci\u00F3 pol\u00EDtica\",\"gobierto_admin/issue_form\":\"Tema\",\"gobierto_admin/scope_form\":\"\u00C0mbit\",\"gobierto_admin/site_form\":\"Lloc\",\"gobierto_admin/user_form\":\"Usuari\",\"gobierto_admin/user_password_form\":\"Canvi de contrasenya\",\"gobierto_admin/user_welcome_message_form\":\"Email de benvinguda\",\"gobierto_people/person_message\":\"Missatge\",\"user/census_verification_form\":\"Verificaci\u00F3 de la identitat\",\"user/confirmation_form\":\"Confirmaci\u00F3\",\"user/confirmation_request_form\":\"Sol\u00B7licitud de confirmaci\u00F3\",\"user/edit_password_form\":\"Canviar contrasenya\",\"user/new_password_form\":\"Recuperar contrasenya\",\"user/registration_form\":\"Registre\",\"user/session_form\":\"Sessi\u00F3\",\"user/settings_form\":\"Ajusts\",\"user/subscription_form\":\"Subscripci\u00F3\"}},\"activerecord\":{\"attributes\":{\"gobierto_admin/api_token\":{\"domain\":\"Domini\",\"name\":\"Nom\"},\"gobierto_admin/permission/site_option\":{\"resource_types\":{\"admins\":\"Administradors\",\"calendars\":\"Agendes\",\"custom_fields\":\"Camps personalitzats\",\"customize\":\"Personalitzar site\",\"documents\":\"Documents\",\"templates\":\"Plantilles\",\"vocabularies\":\"Vocabularis\"}},\"gobierto_attachments/attachment\":{\"current_version\":\"Versi\u00F3 actual\",\"description\":\"Descripci\u00F3\",\"file_digest\":\"Fitxer\",\"file_name\":\"Nom del fitxer\",\"file_size\":\"Mida del fitxer\",\"name\":\"Nom\",\"url\":\"URL\"},\"gobierto_calendars/event_attendee\":{\"charge\":\"C\u00E0rrec\",\"name\":\"Nom\",\"person\":\"Persona\"},\"gobierto_calendars/event_location\":{\"address\":\"Adre\u00E7a\",\"name\":\"Nom\"},\"gobierto_calendars/filtering_rule\":{\"remove_filtering_text\":\"Eliminar text filtrat\"},\"gobierto_cms/page\":{\"body\":\"Contingut\",\"slug\":\"URL\",\"title\":\"T\u00EDtol\"},\"gobierto_common/api_token_form\":{\"domain\":\"Domini\",\"name\":\"Nom\"},\"gobierto_common/content_block_field\":{\"field_type\":\"Tipus de camp\",\"field_types\":{\"currency\":\"Moneda\",\"date\":\"Data\",\"text\":\"Tipus de camp\",\"url\":\"URL\"}},\"gobierto_people/trip\":{\"accomodation_expenses\":\"Hotels i allotjament\",\"food_expenses\":\"Dietes i manutenci\u00F3\",\"other_expenses\":\"Altres despeses\",\"total_expenses\":\"Despeses totals\",\"transport_expenses\":\"Transport\"},\"user/api_token\":{\"domain\":\"Domini\",\"name\":\"Nom\"}},\"enums\":{\"gobierto_calendars/filtering_rule\":{\"action\":{\"ignore\":\"Ignorar\",\"import\":\"Importar\",\"import_as_draft\":\"Importar como esborrany\"},\"condition\":{\"contains\":\"Cont\u00E9\",\"ends_with\":\"Termina per\",\"not_contains\":\"No cont\u00E9\",\"not_starts_with\":\"No comen\u00E7a per\",\"starts_with\":\"Comen\u00E7a per\"},\"field\":{\"description\":\"Cos\",\"title\":\"T\u00EDtol\"}}},\"errors\":{\"messages\":{\"record_invalid\":\"La validaci\u00F3 ha fallat: %{errors}\"},\"models\":{\"gobierto_admin/api_token\":{\"attributes\":{\"domain\":{\"not_valid_format\":\"Format inv\u00E0lid\"}}},\"gobierto_common/custom_field_record\":{\"attributes\":{\"item\":{\"wrong_item_class\":\"no est\u00E0 associat a un item de la classe adequada\"}}},\"gobierto_common/term\":{\"attributes\":{\"base\":{\"has_dependent_resources_html\":\"Est\u00E0 sent usat pels recursos:\\\\u003c/br\\\\u003e %{dependencies_list}\"}}},\"gobierto_data/connection\":{\"missing_configuration\":\"La base de dades no est\u00E0 configurada\"},\"user/api_token\":{\"attributes\":{\"domain\":{\"not_valid_format\":\"Format inv\u00E0lid\"}}}}},\"messages\":{\"gobierto_attachments/attachment\":{\"file_too_big\":\"El fitxer excedeix la mida m\u00E0xima\"}},\"models\":{\"gobierto_attachments/attachment\":\"Adjunt\",\"gobierto_calendars/event\":\"Esdeveniment\",\"gobierto_calendars/event_attendee\":\"Assistent\",\"gobierto_calendars/event_location\":\"Localitzaci\u00F3\",\"gobierto_cms/news\":\"Noticia\",\"gobierto_cms/news_plural\":\"Noticies\",\"gobierto_cms/page\":\"P\u00E0gina\",\"gobierto_cms/pages_collection\":\"Col\u00B7lecci\u00F3 de P\u00E0gines\",\"gobierto_common/content_block_field\":\"Camp\",\"gobierto_data/dataset\":{\"one\":\"Conjunt de dades\",\"other\":\"Conjunts de dades\"},\"gobierto_investments/project\":{\"one\":\"Projecte\",\"other\":\"Projectes\"},\"gobierto_people/person\":\"C\u00E0rrec\",\"gobierto_people/person_post\":\"Post\",\"gobierto_people/person_statement\":\"Declaraci\u00F3\",\"gobierto_plans/node\":{\"one\":\"Projecte\",\"other\":\"Projectes\"},\"gobierto_plans/plan\":{\"one\":\"Pla\",\"other\":\"Plans\"},\"user\":\"Usuari\"}},\"admin_gobierto_calendars\":{\"events\":{\"admin_gobierto_calendars_calendars_synchronized\":\"Calendaris sincronitzats\"}},\"admin_groups\":{\"events\":{\"admin_groups_admin_group_created\":\"Grup d\\'admin creat creat\",\"admin_groups_admin_group_updated\":\"Grup d\\'admin actualitzat\"}},\"admins\":{\"events\":{\"admins_admin_authorization_level_updated\":\"Nivel autoritzaci\u00F3 admin actualitzat\",\"admins_admin_created\":\"Admin creat\",\"admins_admin_group_member_created\":\"Admin afegit a grup de permisos\",\"admins_admin_group_member_deleted\":\"Admin eliminat de grup de permisos\",\"admins_admin_updated\":\"Admin actualitzat\",\"admins_invitation_accepted\":\"Invitaci\u00F3 admin aceptada\",\"admins_invitation_created\":\"Admin invitat\"}},\"based_on\":\"Web basat en\",\"census\":{\"events\":{\"census_census_imported\":\"Cens importat\"}},\"concerns\":{\"gobierto_common\":{\"api_tokens_concern\":{\"create\":{\"success\":\"El Token de l\\'API s\\'ha creat correctament\"},\"destroy\":{\"failed\":\"El Token de l\\'API no ha pogut ser eliminat\",\"success\":\"El Token de l\\'API s\\'ha eliminat correctament\"},\"update\":{\"success\":\"El Token de l\\'API s\\'ha actualizat correctament\"}}}},\"controllers\":{\"gobierto_budgets\":{\"api\":{\"data\":{\"expense\":\"Despesa\",\"income\":\"Ingr\u00E9s\"}},\"budgets_execution\":{\"index\":{\"alert\":\"No hi ha dades disponibles el %{year} aix\u00ED que et mostrem el primer any amb dades\"}}}},\"cookies_eu\":{\"cookies_text\":\"Les cookies ens ajuden a oferir els nostres serveis. En utilitzar els nostres serveis, acceptes l\\'\u00FAs de cookies.\",\"learn_more\":\"M\u00E9s informaci\u00F3\",\"ok\":\"OK\"},\"countries\":{\"AC\":\"illa de l\u2019Ascensi\u00F3\",\"AD\":\"Andorra\",\"AE\":\"Emirats \u00C0rabs Units\",\"AF\":\"Afganistan\",\"AG\":\"Antigua i Barbuda\",\"AI\":\"Anguilla\",\"AL\":\"Alb\u00E0nia\",\"AM\":\"Arm\u00E8nia\",\"AN\":\"Antilles Neerlandeses\",\"AO\":\"Angola\",\"AQ\":\"Ant\u00E0rtida\",\"AR\":\"Argentina\",\"AS\":\"Samoa Nord-americana\",\"AT\":\"\u00C0ustria\",\"AU\":\"Austr\u00E0lia\",\"AW\":\"Aruba\",\"AX\":\"illes \u00C5land\",\"AZ\":\"Azerbaidjan\",\"BA\":\"B\u00F2snia i Hercegovina\",\"BB\":\"Barbados\",\"BD\":\"Bangla Desh\",\"BE\":\"B\u00E8lgica\",\"BF\":\"Burkina Faso\",\"BG\":\"Bulg\u00E0ria\",\"BH\":\"Bahrain\",\"BI\":\"Burundi\",\"BJ\":\"Ben\u00EDn\",\"BL\":\"Saint Barth\u00E9lemy\",\"BM\":\"Bermudes\",\"BN\":\"Brunei\",\"BO\":\"Bol\u00EDvia\",\"BQ\":\"Carib Neerland\u00E8s\",\"BR\":\"Brasil\",\"BS\":\"Bahames\",\"BT\":\"Bhutan\",\"BV\":\"Bouvet\",\"BW\":\"Botswana\",\"BY\":\"Bielor\u00FAssia\",\"BZ\":\"Belize\",\"CA\":\"Canad\u00E0\",\"CC\":\"illes Cocos\",\"CD\":\"Congo - Kinshasa\",\"CF\":\"Rep\u00FAblica Centreafricana\",\"CG\":\"Congo - Brazzaville\",\"CH\":\"Su\u00EFssa\",\"CI\":\"Costa d\u2019Ivori\",\"CK\":\"illes Cook\",\"CL\":\"Xile\",\"CM\":\"Camerun\",\"CN\":\"Xina\",\"CO\":\"Col\u00F2mbia\",\"CP\":\"illa Clipperton\",\"CR\":\"Costa Rica\",\"CU\":\"Cuba\",\"CV\":\"Cap Verd\",\"CW\":\"Cura\u00E7ao\",\"CX\":\"illa Christmas\",\"CY\":\"Xipre\",\"CZ\":\"Rep\u00FAblica Txeca\",\"DE\":\"Alemanya\",\"DG\":\"Diego Garcia\",\"DJ\":\"Djibouti\",\"DK\":\"Dinamarca\",\"DM\":\"Dominica\",\"DO\":\"Rep\u00FAblica Dominicana\",\"DZ\":\"Alg\u00E8ria\",\"EA\":\"Ceuta i Melilla\",\"EC\":\"Equador\",\"EE\":\"Est\u00F2nia\",\"EG\":\"Egipte\",\"EH\":\"S\u00E0hara Occidental\",\"ER\":\"Eritrea\",\"ES\":\"Espanya\",\"ET\":\"Eti\u00F2pia\",\"EU\":\"Uni\u00F3 Europea\",\"FI\":\"Finl\u00E0ndia\",\"FJ\":\"Fiji\",\"FK\":\"Illes Malvines\",\"FM\":\"Micron\u00E8sia\",\"FO\":\"illes F\u00E8roe\",\"FR\":\"Fran\u00E7a\",\"GA\":\"Gabon\",\"GB\":\"Regne Unit\",\"GD\":\"Grenada\",\"GE\":\"Ge\u00F2rgia\",\"GF\":\"Guaiana Francesa\",\"GG\":\"Guernsey\",\"GH\":\"Ghana\",\"GI\":\"Gibraltar\",\"GL\":\"Grenl\u00E0ndia\",\"GM\":\"G\u00E0mbia\",\"GN\":\"Guinea\",\"GP\":\"Guadeloupe\",\"GQ\":\"Guinea Equatorial\",\"GR\":\"Gr\u00E8cia\",\"GS\":\"illes Ge\u00F2rgia del Sud i Sandwich del Sud\",\"GT\":\"Guatemala\",\"GU\":\"Guam\",\"GW\":\"Guinea Bissau\",\"GY\":\"Guyana\",\"HK\":\"Hong Kong (RAE Xina)\",\"HM\":\"Illa Heard i Illes McDonald\",\"HN\":\"Hondures\",\"HR\":\"Cro\u00E0cia\",\"HT\":\"Hait\u00ED\",\"HU\":\"Hongria\",\"IC\":\"illes Can\u00E0ries\",\"ID\":\"Indon\u00E8sia\",\"IE\":\"Irlanda\",\"IL\":\"Israel\",\"IM\":\"illa de Man\",\"IN\":\"\u00CDndia\",\"IO\":\"Territori Brit\u00E0nic de l\u2019Oce\u00E0 \u00CDndic\",\"IQ\":\"Iraq\",\"IR\":\"Iran\",\"IS\":\"Isl\u00E0ndia\",\"IT\":\"It\u00E0lia\",\"JE\":\"Jersey\",\"JM\":\"Jamaica\",\"JO\":\"Jord\u00E0nia\",\"JP\":\"Jap\u00F3\",\"KE\":\"Kenya\",\"KG\":\"Kirguizistan\",\"KH\":\"Cambodja\",\"KI\":\"Kiribati\",\"KM\":\"Comores\",\"KN\":\"Saint Christopher i Nevis\",\"KP\":\"Corea del Nord\",\"KR\":\"Corea del Sud\",\"KW\":\"Kuwait\",\"KY\":\"Illes Caiman\",\"KZ\":\"Kazakhstan\",\"LA\":\"Laos\",\"LB\":\"L\u00EDban\",\"LC\":\"Saint Lucia\",\"LI\":\"Liechtenstein\",\"LK\":\"Sri Lanka\",\"LR\":\"Lib\u00E8ria\",\"LS\":\"Lesotho\",\"LT\":\"Litu\u00E0nia\",\"LU\":\"Luxemburg\",\"LV\":\"Let\u00F2nia\",\"LY\":\"L\u00EDbia\",\"MA\":\"Marroc\",\"MC\":\"M\u00F2naco\",\"MD\":\"Mold\u00E0via\",\"ME\":\"Montenegro\",\"MF\":\"Saint Martin\",\"MG\":\"Madagascar\",\"MH\":\"illes Marshall\",\"MK\":\"Maced\u00F2nia\",\"ML\":\"Mali\",\"MM\":\"Myanmar (Birm\u00E0nia)\",\"MN\":\"Mong\u00F2lia\",\"MO\":\"Macau (RAE Xina)\",\"MP\":\"illes Mariannes del Nord\",\"MQ\":\"Martinica\",\"MR\":\"Maurit\u00E0nia\",\"MS\":\"Montserrat\",\"MT\":\"Malta\",\"MU\":\"Maurici\",\"MV\":\"Maldives\",\"MW\":\"Malawi\",\"MX\":\"M\u00E8xic\",\"MY\":\"Mal\u00E0isia\",\"MZ\":\"Mo\u00E7ambic\",\"NA\":\"Nam\u00EDbia\",\"NC\":\"Nova Caled\u00F2nia\",\"NE\":\"N\u00EDger\",\"NF\":\"Norfolk\",\"NG\":\"Nig\u00E8ria\",\"NI\":\"Nicaragua\",\"NL\":\"Pa\u00EFsos Baixos\",\"NO\":\"Noruega\",\"NP\":\"Nepal\",\"NR\":\"Nauru\",\"NU\":\"Niue\",\"NZ\":\"Nova Zelanda\",\"OM\":\"Oman\",\"PA\":\"Panam\u00E0\",\"PE\":\"Per\u00FA\",\"PF\":\"Polin\u00E8sia Francesa\",\"PG\":\"Papua Nova Guinea\",\"PH\":\"Filipines\",\"PK\":\"Pakistan\",\"PL\":\"Pol\u00F2nia\",\"PM\":\"Saint-Pierre-et-Miquelon\",\"PN\":\"illes Pitcairn\",\"PR\":\"Puerto Rico\",\"PS\":\"Palestina\",\"PT\":\"Portugal\",\"PW\":\"Palau\",\"PY\":\"Paraguai\",\"QA\":\"Qatar\",\"QO\":\"Territoris allunyats d\u2019Oceania\",\"RE\":\"Illa de la Reuni\u00F3\",\"RO\":\"Romania\",\"RS\":\"S\u00E8rbia\",\"RU\":\"R\u00FAssia\",\"RW\":\"Ruanda\",\"SA\":\"Ar\u00E0bia Saudita\",\"SB\":\"illes Salom\u00F3\",\"SC\":\"Seychelles\",\"SD\":\"Sudan\",\"SE\":\"Su\u00E8cia\",\"SG\":\"Singapur\",\"SH\":\"Saint Helena\",\"SI\":\"Eslov\u00E8nia\",\"SJ\":\"Svalbard i Jan Mayen\",\"SK\":\"Eslov\u00E0quia\",\"SL\":\"Sierra Leone\",\"SM\":\"San Marino\",\"SN\":\"Senegal\",\"SO\":\"Som\u00E0lia\",\"SR\":\"Surinam\",\"SS\":\"Sudan del Sud\",\"ST\":\"S\u00E3o Tom\u00E9 i Pr\u00EDncipe\",\"SV\":\"El Salvador\",\"SX\":\"Sint Maarten\",\"SY\":\"S\u00EDria\",\"SZ\":\"Swazil\u00E0ndia\",\"TA\":\"Trist\u00E3o da Cunha\",\"TC\":\"Illes Turks i Caicos\",\"TD\":\"Txad\",\"TF\":\"Territoris Francesos del Sud\",\"TG\":\"Togo\",\"TH\":\"Tail\u00E0ndia\",\"TJ\":\"Tadjikistan\",\"TK\":\"Tokelau\",\"TL\":\"Timor Oriental\",\"TM\":\"Turkmenistan\",\"TN\":\"Tun\u00EDsia\",\"TO\":\"Tonga\",\"TR\":\"Turquia\",\"TT\":\"Trinitat i Tobago\",\"TV\":\"Tuvalu\",\"TW\":\"Taiwan\",\"TZ\":\"Tanz\u00E0nia\",\"UA\":\"Ucra\u00EFna\",\"UG\":\"Uganda\",\"UM\":\"illes Perif\u00E8riques Menors dels EUA\",\"US\":\"Estats Units\",\"UY\":\"Uruguai\",\"UZ\":\"Uzbekistan\",\"VA\":\"Ciutat del Vatic\u00E0\",\"VC\":\"Saint Vincent i les Grenadines\",\"VE\":\"Vene\u00E7uela\",\"VG\":\"Illes Verges Brit\u00E0niques\",\"VI\":\"Illes Verges Nord-americanes\",\"VN\":\"Vietnam\",\"VU\":\"Vanuatu\",\"WF\":\"Wallis i Futuna\",\"WS\":\"Samoa\",\"XK\":\"Kosovo\",\"YE\":\"Iemen\",\"YT\":\"Mayotte\",\"ZA\":\"Rep\u00FAblica de Sud-\u00E0frica\",\"ZM\":\"Z\u00E0mbia\",\"ZW\":\"Zimb\u00E0bue\"},\"country\":\"Espanya\",\"date\":{\"abbr_day_names\":[\"dg\",\"dl\",\"dm\",\"dc\",\"dj\",\"dv\",\"ds\"],\"abbr_month_names\":[null,\"gen\",\"feb\",\"mar\",\"abr\",\"mai\",\"jun\",\"jul\",\"ago\",\"set\",\"oct\",\"nov\",\"des\"],\"day_names\":[\"diumenge\",\"dilluns\",\"dimarts\",\"dimecres\",\"dijous\",\"divendres\",\"dissabte\"],\"formats\":{\"day_month\":\"%d/%m\",\"default\":\"%d-%m-%Y\",\"long\":\"%d %B de %Y\",\"short\":\"%d %b\",\"shortest\":\"%d %b %y\"},\"month_names\":[null,\"gener\",\"febrer\",\"mar\u00E7\",\"abril\",\"maig\",\"juny\",\"juliol\",\"agost\",\"setembre\",\"octubre\",\"novembre\",\"desembre\"],\"order\":[\"day\",\"month\",\"year\"]},\"datetime\":{\"distance_in_words\":{\"about_x_hours\":{\"one\":\"fa aproximadament 1 hora\",\"other\":\"fa aproximadament %{count} hores\"},\"about_x_months\":{\"one\":\"fa aproximadament 1 mes\",\"other\":\"fa aproximadament %{count} mesos\"},\"about_x_years\":{\"one\":\"fa aproximadament 1 any\",\"other\":\"fa aproximadament %{count} anys\"},\"almost_x_years\":{\"one\":\"fa quasi 1 any\",\"other\":\"fa quasi %{count} anys\"},\"half_a_minute\":\"fa mig minut\",\"less_than_x_minutes\":{\"one\":\"fa menys d\\'1 minut\",\"other\":\"fa menys de %{count} minuts\"},\"less_than_x_seconds\":{\"one\":\"fa menys d\\'1 segon\",\"other\":\"fa menys de %{count} segons\"},\"over_x_years\":{\"one\":\"fa m\u00E9s d\\'1 any\",\"other\":\"fa m\u00E9s de %{count} anys\"},\"x_days\":{\"one\":\"fa 1 dia\",\"other\":\"fa %{count} dies\"},\"x_minutes\":{\"one\":\"fa 1 minut\",\"other\":\"fa %{count} minuts\"},\"x_months\":{\"one\":\"fa 1 mes\",\"other\":\"fa %{count} mesos\"},\"x_seconds\":{\"one\":\"fa 1 segon\",\"other\":\"fa %{count} segons\"},\"x_years\":{\"one\":\"fa 1 any\",\"other\":\"fa %{count} anys\"}},\"prompts\":{\"day\":\"Dia\",\"hour\":\"Hora\",\"minute\":\"Minuts\",\"month\":\"Mes\",\"second\":\"Segons\",\"year\":\"Any\"}},\"errors\":{\"format\":\"%{attribute} %{message}\",\"messages\":{\"accepted\":\"ha de ser acceptat\",\"array_too_short\":{\"one\":\"\u00E9s massa curt (al menys 1 element)\",\"other\":\"\u00E9s massa curt (al menys %{count} elements)\"},\"blank\":\"no pot estar en blanc\",\"blank_for_modules\":\"L\\'organitzaci\u00F3 no est\u00E0 correctament configurada. L\\'identificador \u00E9s obligatori per als m\u00F2duls que has activat.\",\"collection_taken\":\"no pot tenir una altra col\u00B7lecci\u00F3 d\\'aquest tipus.\",\"confirmation\":\"no coincideix amb %{attribute}\",\"custom_fields\":{\"options\":{\"missing_vocabulary\":\"Alguna columna de tipus \\\\\"vocabulary\\\\\" no t\u00E9 valor en \\\\\"dataSource\\\\\"\",\"wrong_column_type\":\"Alguna columna no pertany a un tipus reconegut. Tipus reconeguts: \\\\\"text\\\\\", \\\\\"integer\\\\\", \\\\\"float\\\\\", \\\\\"date\\\\\" y \\\\\"vocabulary\\\\\"\",\"wrong_custom_field_uids\":\"Els uids configurats no existeixen o pertanyen a camps personalitzats que no tenen definit un valor de progr\u00E9s\"}},\"empty\":\"no pot estar buit\",\"equal_to\":\"ha de ser igual a %{count}\",\"even\":\"ha de ser parell\",\"exclusion\":\"est\u00E0 reservat\",\"greater_than\":\"ha de ser m\u00E9s gran que %{count}\",\"greater_than_or_equal_to\":\"ha de ser m\u00E9s gran o igual a %{count}\",\"inclusion\":\"no est\u00E0 incl\u00F3s a la llista\",\"invalid\":\"no \u00E9s v\u00E0lid\",\"invalid_consultation_response\":\"No s\\'ha desat la consulta. Per favor, revisa els valors i prova de nou.\",\"invalid_table_name\":\"Ha de comen\u00E7ar per una lletra o un gui\u00F3 baix; la resta nom\u00E9s pot contenir lletres, d\u00EDgits o guions baixos\",\"less_than\":\"ha de ser menor que %{count}\",\"less_than_or_equal_to\":\"ha de ser menor o igual a %{count}\",\"not_a_number\":\"no \u00E9s un n\u00FAmero\",\"not_an_integer\":\"ha de ser un enter\",\"not_found\":\"No es troba\",\"odd\":\"ha de ser senar\",\"other_than\":\"ha de ser diferent de %{count}\",\"page_as_homepage\":\"No s\\'ha pogut desar els canvis en la p\u00E0gina perqu\u00E8 no es pot canviar la vibilidad d\\'una p\u00E0gina que s\\'utilitza com p\u00E0gina principal.\",\"present\":\"ha de ser blanc\",\"record_invalid\":\"La validaci\u00F3 va fallar: %{errors}\",\"restrict_dependent_destroy\":{\"one\":\"No es pot eliminar el registre perque existeix %{record} dependent\",\"other\":\"No es pot eliminar el registre perque hi ha %{record} dependents\"},\"taken\":\"no est\u00E0 disponible\",\"too_long\":{\"one\":\"\u00E9s massa llarg (1 car\u00E0cter m\u00E0xim)\",\"other\":\"\u00E9s massa llarg (%{count} car\u00E0cters m\u00E0xim)\"},\"too_short\":{\"one\":\"\u00E9s massa curt (1 car\u00E0cter m\u00EDnim)\",\"other\":\"\u00E9s massa curt (%{count} car\u00E0cters m\u00EDnim)\"},\"wrong_length\":{\"one\":\"no t\u00E9 la longitud correcta (1 car\u00E0cter exactament)\",\"other\":\"no t\u00E9 la longitud correcta (%{count} car\u00E0cters exactament)\"}},\"template\":{\"body\":\"Hi ha hagut problemes amb els seg\u00FCents camps:\",\"header\":{\"one\":\"No s\\'ha pogut desar aquest/a %{model} perqu\u00E8 hi ha 1 error\",\"other\":\"No s\\'ha pogut desar aquest/a %{model} perqu\u00E8 hi ha hagut %{count} errors\"}}},\"gobierto_admin\":{\"activities\":{\"activities_list\":{\"header\":{\"action\":\"Acci\u00F3\",\"date\":\"Data\",\"ip\":\"IP\",\"recipient\":\"Receptor\",\"subject\":\"Subjecte\",\"user\":\"Usuari\"}},\"index\":{\"title\":\"Log de activitats\"}},\"admin\":{\"invitation_acceptances\":{\"show\":{\"error\":\"Esta URL no sembla ser v\u00E0lida\",\"success\":\"Sessi\u00F3 iniciada correctament\"}},\"invitations\":{\"create\":{\"error\":\"Hi ha hagut un problema al enviar les invitacions\",\"success\":\"Les invitacions s\\'han enviat correctament\",\"success_with_errors\":\"Algunes invitacions no han pogut ser enviades: %{email_addresses}.\"},\"form\":{\"placeholders\":{\"emails\":\"maria@hotmail.com, felipe@gmail.com\"},\"sites\":\"Sites amb acc\u00E9s\",\"submit\":\"Enviar invitacions\"},\"new\":{\"title\":\"Enviar invitacions\"}},\"passwords\":{\"create\":{\"error\":\"L\\'adre\u00E7a de e-mail que has indicat no sembla ser v\u00E0lida\",\"success\":\"Per favor, revisa el teu email per rebre instruccions\"},\"edit\":{\"error\":\"Esta URL no sembla ser v\u00E0lida\",\"title\":\"Establir una nueva contrasenya\"},\"edit_form\":{\"submit\":\"Canviar contrasenya\"},\"new\":{\"title\":\"Recuperar la teva contrasenya\"},\"new_form\":{\"placeholders\":{\"email\":\"fsanchez@gmail.com\"},\"submit\":\"Solicitar recuperaci\u00F3\"},\"update\":{\"error\":\"Hi va haver un problema al canviar la teua contrasenya\",\"success\":\"Sessi\u00F3 iniciada correctament\"}},\"settings\":{\"edit\":{\"password_block\":\"Contrasenya\",\"placeholders\":{\"email\":\"Email\",\"name\":\"Nom\"},\"title\":\"Edita les teves dades\"},\"update\":{\"error\":\"No s\\'han pogut guardar les dades\",\"success\":\"Dades actualitzades correctament\"}}},\"admin_groups\":{\"admins\":{\"modal_index\":{\"add\":\"Afegir\",\"add_title\":\"Afegir usuari\",\"created_at\":\"Acc\u00E9s concedit\",\"delete\":\"Eliminar acc\u00E9s\",\"email\":\"correu-e\",\"user\":\"Usuari\",\"users_with_access\":\"Usuaris amb acc\u00E9s\"}},\"breadcrumb\":{\"admin_groups\":\"Grups\"},\"create\":{\"success\":\"El Grup d\\'admins s\\'ha creat correctament\"},\"edit\":{\"title\":\"Permisos del grup: %{name}\"},\"form\":{\"action_names\":{\"create_projects\":\"Crea projectes\",\"delete_projects_all\":\"Elimina projectes (tots)\",\"delete_projects_assigned\":\"Elimina projectes (assignats)\",\"edit\":\"Editar\",\"edit_projects_all\":\"Edita projectes (tots)\",\"edit_projects_assigned\":\"Edita projectes (assignats)\",\"edit_projects_permissions_all\":\"Edita permisos de projectes (tots)\",\"edit_projects_permissions_assigned\":\"Edita permisos de projectes (assignats)\",\"manage_dashboards\":\"Administrar dashboards\",\"manage_plans\":\"Administrar plans\",\"moderate_projects_all\":\"Modera projectes (tots)\",\"moderate_projects_assigned\":\"Modera projectes (assignats)\",\"publish_projects_all\":\"Publica projectes (tots)\",\"publish_projects_assigned\":\"Publica projectes (assignats)\",\"update_projects_as_minor_change_all\":\"Desa canvis menors en projectes (tots)\",\"update_projects_as_minor_change_assigned\":\"Desa canvis menors en projectes (assignats)\",\"view_dashboards\":\"Veure dashboards\",\"view_projects_all\":\"Veure projectes (tots)\",\"view_projects_assigned\":\"Veure projectes (assignats)\"},\"actions\":\"Accions\",\"all\":\"Tots\",\"members\":{\"one\":\"Hi ha un administrador amb aquest grup.\",\"other\":\"Hi ha %{count} administradors amb aquest grup.\",\"zero\":\"Aquest grup no t\u00E9 administradors.\"},\"modules_permissions\":\"M\u00F2duls\",\"people\":\"Persones\",\"placeholders\":{\"name\":\"Grup glo bal d\\'administradors\"},\"site_options_permissions\":\"Lloc web\"},\"index\":{\"header\":{\"admin_group\":\"Grup\"},\"new\":\"Nou\",\"title\":\"Grups\"},\"new\":{\"title\":\"Nou grup\"},\"update\":{\"success\":\"El Grup d\\'admins s\\'ha actualizat correctament\"}},\"admin_mailer\":{\"invitation_instructions\":{\"bye\":\"Salutacions\",\"click_link\":\"Has estat convidat a col\u00B7laborar a la nostra plataforma web. Fes clic en el seg\u00FCent enlla\u00E7 per a crear el teu compte.\",\"hi\":\"Hola\",\"subject\":\"Has estat convidat a col\u00B7laborar a Gobierto\"},\"reset_password_instructions\":{\"bye\":\"Salutacions\",\"click_link\":\"Fes clic en el seg\u00FCent enlla\u00E7 per restaurar la teva contrasenya\",\"hi\":\"Hola\",\"subject\":\"Instruccions per activar el teu compte a Gobierto\"}},\"admin_unauthorized\":\"No tens prou permisos per a realitzar aquesta acci\u00F3\",\"admins\":{\"create\":{\"success\":\"El Admin s\\'ha creat correctament\"},\"edit\":{\"title\":\"Editar Administrador\"},\"form\":{\"activity_block\":\"Log d\\'actividad\",\"admin_groups_block\":\"Grup\",\"authorization_level\":{\"disabled\":\"Deshabilitat\",\"manager\":\"Manager\",\"regular\":\"Regular\"},\"password_block\":\"Contrasenya\",\"placeholders\":{\"email\":\"fgonzalez@gmail.com\",\"name\":\"Fernando Gonz\u00E1lez\"},\"sites_block\":\"Sites amb acc\u00E9s\",\"sites_block_description\":\"Aquest usuari pot accedir a administrar:\"},\"index\":{\"groups_and_permissions\":\"Grups i permisos\",\"header\":{\"admin\":\"Administrador\",\"created_at\":\"Creat\",\"email\":\"Email\",\"groups\":\"Grups\",\"last_sign_in_at\":\"\u00DAltim login\",\"primary_api_token\":\"Token de l\\'API primari\",\"role\":\"Rol\"},\"new\":\"Nou Administrador\",\"send_invitations\":\"Enviar invitacions\",\"title\":\"Administradors\",\"users_section\":\"Usuaris\",\"view_admin\":\"Veure Administrador\"},\"new\":{\"title\":\"Nou Administrador\"},\"show\":{\"admin_tokens\":\"Tokens d\\'autoritzaci\u00F3\",\"copy_to_clipboard\":\"Copia\",\"primary_api_token\":\"Token primari\"},\"update\":{\"success\":\"El Admin s\\'ha actualizat correctament\"}},\"api_tokens\":{\"api_token\":{\"primary\":\"Primari\"},\"edit\":{\"api_token\":\"Token de l\\'API %{name}\"},\"form\":{\"placeholders\":{\"domain\":\"www.example.org\",\"name\":\"Token per a aplicacions externes\"},\"update_token\":\"Actualitzar Token\"},\"list\":{\"header\":{\"created_at\":\"Creat\",\"domain\":\"Domini\",\"name\":\"Nom\",\"token\":\"Token\"},\"new\":\"Nou\",\"title\":\"Tokens de l\\'API\"},\"new\":{\"api_token\":\"Nou Token de l\\'API\"}},\"census\":{\"imports\":{\"create\":{\"error\":\"Hi ha hagut un error al importar el teu arxiu. Per favor, tria de nou.\",\"success\":\"S\\'ha importat %{record_count} registres\"},\"file_format_notes\":{\"instructions\":\"El arxiu a carregar deu de ser un CSV, sense fila de capcalera, amb les columnes de dades que vulguem que el usuari hagi de verificar. Per exemple, si volem validar DNI, data de naixement i codi postal, deurem preparar un arxiu com aquest:\"},\"form\":{\"disable_with\":\"Carregant...\",\"submit\":\"Carregant archiu de cens\"},\"new\":{\"final_notes\":\"es sustituir\u00E0n tots els registres, i si alg\u00FAn DNI d\\'usuari verificat deixa d\\'estar present, el usuari deixar\u00E1 de tindre acc\u00E9s\",\"import_status\":\"El cens ha sigut actualitzat per \u00FAltima volta el %{created_at} per %{admin_name} (%{admin_email}). El arxiu t\u00E9 %{imported_records} registres.\",\"title\":\"Configuraci\u00F3 de cens\"}}},\"custom_fields_plugins\":{\"budgets\":{\"area\":\"\u00C0rea\",\"assigned_amount\":\"Assignat\",\"budget_line\":\"Partida pressupost\u00E0ria\",\"custom\":\"Personalitzada\",\"economic\":\"Econ\u00F2mica\",\"full_amount\":\"Total\",\"functional\":\"Funcional\",\"not_available\":\"No disp.\",\"weight\":\"Pes\",\"year\":\"Any\"},\"common\":{\"custom\":\"Personalitzada\",\"economic\":\"Econ\u00F2mica\",\"functional\":\"Funcional\"},\"data_grid\":{\"remove_rows\":\"Eliminar files seleccionades\",\"select_deselect_all\":\"Seleccionar / Deseleccionar totes\"},\"progress\":{\"progress\":\"Progr\u00E9s\"},\"table\":{\"remove_rows\":\"Eliminar files seleccionades\",\"select_deselect_all\":\"Seleccionar / Deseleccionar totes\"}},\"custom_sessions\":{\"ldap_strategy\":{\"form\":{\"identifier\":\"Identificador\",\"password\":\"Contrasenya\",\"submit\":\"Enviar\"}}},\"gobierto_attachments\":{\"file_attachments\":{\"create\":{\"success_html\":\"El document s\\'ha creat correctament. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVeure el document\\\\u003c/a\\\\u003e.\"},\"destroy\":{\"success\":\"El document s\\'ha archivat correctament\"},\"edit\":{\"title\":\"Modifica adjunt\"},\"form\":{\"file_constraints\":\"Adjuntar document\",\"placeholders\":{\"description\":\"Descripci\u00F3 del fitxer\",\"name\":\"Nom del document\",\"slug\":\"nom-del-document\"}},\"index\":{\"add_new_attachment\":\"Afegeix nou document\",\"collections\":\"Col\u00B7leccions\",\"created_at\":\"Creat\",\"header\":{\"collection\":\"Col\u00B7lecci\u00F3\",\"file_attachments\":\"Documents\"},\"latest_editions\":\"\u00DAltimes edicions\",\"new\":\"Nova\",\"title\":\"Documents\",\"updated_at\":\"Actualitzat\",\"view_collection\":\"Veure col\u00B7lecci\u00F3\"},\"new\":{\"title\":\"Nou document\"},\"recover\":{\"success\":\"El document s\\'ha recuperat correctament\"},\"update\":{\"success_html\":\"El document s\\'ha actualitzat correctament. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVeure el document\\\\u003c/a\\\\u003e.\"}}},\"gobierto_budgets\":{\"feedback\":{\"index\":{\"answer1_0\":\"Si\",\"answer1_1\":\"No\",\"answer2_0\":\"Poc\",\"answer2_1\":\"Apropiat\",\"answer2_2\":\"Molt\",\"budget\":\"Pressupostat\",\"last\":\"\u00DAltima\",\"total_feedback\":\"Total opinions\",\"understand\":\"Ho entens?\",\"you_think\":\"Et sembla...\"}},\"options\":{\"index\":{\"comparison_compare_municipalities_desc\":\"Mostra una taula amb municipis espec\u00EDfics (amb dades disponbiles en presupuestos.gobierto.es - fes all\u00ED la comparaci\u00F3 avan\u00E7 d\\'incluir-los)\",\"comparison_context_table_enabled_desc\":\"Mostra la taula que ofereix context amb mitjanes provincials, auton\u00F2miques o estatals\",\"comparison_show_widget_desc\":\"Facilita l\\'acc\u00E9s a la ferramenta de comparaci\u00F3 de pressupostos de Gobierto: presupuestos.gobierto.es\",\"comparison_tool_enabled_desc\":\"Habilita ferramentes de comparaci\u00F3\",\"confirm_update_annual_data\":\"Comen\u00E7ar\u00E0 un proc\u00E9s en segon pla per actualitzar els fitxers. Continuar?\",\"elaboration\":\"Elaboraci\u00F3\",\"elaboration_desc1\":\"Habilita la secci\u00F3 d\\'Elaboraci\u00F3 del pressupost\",\"elaboration_desc2_html\":\"\\\\u003cstrong\\\\u003eImportant:\\\\u003c/strong\\\\u003e es necessari carregar les dades d\\'elaboraci\u00F3 avans. Contacta amb el teu administrador sin tens dubtes.\",\"feedback\":\"Micro-participacions\",\"feedback_desc\":\"Habilita la opci\u00F3 per a que els visitants opinen sobre les partides del pressupost\",\"feedback_emails_desc\":\"Les participacions (opini\u00F3 sobre partides i petici\u00F3 de m\u00E9s informaci\u00F3) s\\'enviar\u00E0n a aquesta direcci\u00F3\",\"indicators\":\"Indicadors\",\"indicators_desc1\":\"Habilita la secci\u00F3 Indicadors\",\"options\":\"Opcions\",\"providers\":\"Prove\u00EFdors i Factures\",\"providers_desc1\":\"Habilita la secci\u00F3 Prove\u00EFdors i Factures\",\"receipt\":\"Recibo de tus impuestos\",\"receipt_desc1\":\"Habilita la secci\u00F3n El recibo de tus impuestos\",\"receipt_desc2_html\":\"\\\\u003cstrong\\\\u003eImportante:\\\\u003c/strong\\\\u003e debes de rellenar el JSON con los datos.\",\"update_annual_data\":\"Generar fitxers de partides del pressupost per any\"},\"update\":{\"error\":\"No s\\'han pogut guardar les opcions: %{validation_errors}\",\"success\":\"Opcions desades correctament\"},\"update_annual_data\":{\"success\":\"S\\'ha llan\u00E7at un proc\u00E9s per generar els fitxers de partides del pressupost per any\"}},\"shared\":{\"tabs\":{\"budgets\":\"Pressupost\",\"feedback\":\"Opinions\",\"options\":\"Opcions\"}}},\"gobierto_calendars\":{\"calendar_configuration\":{\"edit\":{\"add_rule\":\"Crear regla\",\"calendar_integration\":\"Integraci\u00F3 de calendari\",\"confirm_sync\":\"Est\u00E0s segur?\",\"filter_events\":\"Filtrat d\\'esdeveniments\",\"filter_events_desc\":\"Quan s\\'importa un esdeveniment...\",\"filter_events_label\":\"Si el\",\"google_calendar\":\"Google Calendar\",\"ibm_notes\":\"IBM Notes\",\"labels\":{\"ibm_notes_pwd\":\"Contrasenya\",\"ibm_notes_url\":\"URL del calendari d\\'IBM Notes\",\"ibm_notes_usr\":\"Compte de IBM Notes\",\"microsoft_exchange_pwd\":\"Contrasenya\",\"microsoft_exchange_url\":\"URL del calendari\",\"microsoft_exchange_usr\":\"Compte de Microsoft Exchange\"},\"last_sync\":\"Darrera sincronitzaci\u00F3\",\"manage\":\"Gestiona la configuraci\u00F3 del calendari\",\"microsoft_exchange\":\"Microsoft Exchange\",\"placeholders\":{\"filter_text\":\"Text pel qual filtrar\",\"ibm_notes_url\":\"ex. https://example.com/mail/abc.nsf/api/calendar/events\",\"microsoft_exchange_url\":\"ex. https://example.com/ews/exchange.asmx\",\"username\":\"ex. perico85\"},\"remove_configuration\":\"Eliminar configuraci\u00F3\",\"sync\":\"Sincronitzar ara\",\"without_description\":\"No importar la descripci\u00F3 de l\\'esdeveniment\"},\"gobierto_people_person_navigation\":{\"calendar_configuration\":\"Configuraci\u00F3 del calendari\"},\"google_calendar_fields\":{\"calendar_configured\":\"Actualment esta persona t\u00E9 aquestos calendaris configurats\",\"share_link\":\"Comparteix aquest enlla\u00E7 amb el alt c\u00E0rrec per a permetre a Gobierto llegir els seus esdeveniments de Google Calendar:\"},\"sync_calendars\":{\"success\":\"Sincronitzaci\u00F3 realitzada\"},\"update\":{\"success\":\"Prefer\u00E8ncies actualitzades correctament\"}},\"collections\":{\"index\":{\"add_new_event\":\"Afegeix nou esdeveniment\",\"collections\":\"Calendaris\",\"header\":{\"collection\":\"Calendari\",\"events\":\"Esdeveniments\"},\"latest_editions\":\"\u00DAltims esdeveniments editats\",\"new\":\"Nou\",\"title\":\"Agendas\",\"view_collection\":\"Veure col\u00B7lecci\u00F3\"}},\"events\":{\"attendees_form\":{\"header\":{\"charge\":\"C\u00E0rrec\",\"name\":\"Nom\",\"person\":\"Persona\"},\"title\":\"Assistents\",\"view_person\":\"Veure persona\"},\"create\":{\"success_html\":\"El esdeveniment s\\'ha creat correctament. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVeure el esdeveniment\\\\u003c/a\\\\u003e.\"},\"destroy\":{\"success\":\"El esdeveniment s\\'ha archivat correctament\"},\"edit\":{\"title\":\"Editar event\"},\"form\":{\"placeholders\":{\"slug\":\"event\",\"title\":\"T\u00EDtol del event\"},\"state\":{\"pending\":\"Pendent\",\"published\":\"Publicat\"}},\"index\":{\"configuration\":\"Configuraci\u00F3\",\"header\":{\"date\":\"Data\",\"event\":\"Dsdeveniment\",\"location\":\"Localitzaci\u00F3\",\"status\":\"Estat\"},\"new\":\"Nou esdeveniment\",\"past_events\":\"Esdeveniments passats\",\"pending_events\":\"Pendents de moderar\",\"published_events\":\"Esdeveniments publicats\",\"upcoming_events\":\"Pr\u00F2xims\",\"view_event\":\"Veure esdeveniment\",\"visibility_level\":{\"archived\":\"Archivat\",\"pending\":\"Borrador\",\"published\":\"Publicat\"}},\"locations_form\":{\"header\":{\"address\":\"Adre\u00E7a\",\"place\":\"Lloc\"},\"title\":\"Lloc\"},\"new\":{\"title\":\"Nou event\"},\"person_breadcrumb\":{\"back_to_collections\":\"\\\\u003c Tornar a agendes\"},\"recover\":{\"success\":\"El esdeveniment s\\'ha recuperat correctament\"},\"update\":{\"success_html\":\"El esdeveniment s\\'ha actualitzat correctament. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVeure el esdeveniment\\\\u003c/a\\\\u003e.\"}}},\"gobierto_cms\":{\"file_attachments\":{\"index\":{\"title\":\"Documents\"}},\"pages\":{\"create\":{\"success_html\":\"La p\u00E0gina ha estat creada correctament. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVeure la p\u00E0gina\\\\u003c/a\\\\u003e.\"},\"destroy\":{\"success\":\"La p\u00E0gina ha estat eliminada correctament\"},\"edit\":{\"title\":\"Editar p\u00E0gina\"},\"form\":{\"include_in_section\":\"Incloure a la secci\u00F3\",\"new_section\":\"(Nova secci\u00F3)\",\"placeholders\":{\"slug\":\"sobre-aquesta-web\",\"title\":\"T\u00EDtol de la p\u00E0gina\"},\"section\":\"Secci\u00F3\",\"visibility_level\":{\"active\":\"Publicada\",\"draft\":\"Borrador\"},\"without_parent\":\"(sense pare)\"},\"index\":{\"add_new\":\"Afegir nova\",\"collections\":\"Col\u00B7leccions\",\"header\":{\"collection\":\"Col\u00B7lecci\u00F3\",\"pages\":\"P\u00E0gines\",\"section\":\"Secci\u00F3\"},\"latest_editions\":\"\u00DAltimes edicions\",\"new\":\"Nova\",\"sections\":\"Seccions\",\"title\":\"CMS\",\"view_collection\":\"Veure col\u00B7lecci\u00F3\",\"view_section\":\"Veure secci\u00F3\"},\"new\":{\"title\":\"Nova p\u00E0gina\"},\"recover\":{\"success\":\"La p\u00E0gina ha estat recuperada correctament\"},\"update\":{\"success_html\":\"La p\u00E0gina ha estat actualitzada correctament. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVeure la p\u00E0gina\\\\u003c/a\\\\u003e.\"}},\"sections\":{\"create\":{\"success\":\"La secci\u00F3 ha estat creada correctament.\"},\"edit_modal\":{\"title\":\"Editar secci\u00F3\"},\"form\":{\"placeholders\":{\"slug\":\"sobre-aquesta-seccio\",\"title\":\"T\u00EDtol de la secci\u00F3\"}},\"index\":{\"header\":{\"pages\":\"P\u00E0gines\",\"title\":\"Secci\u00F3\"},\"new\":\"Nova\",\"title\":\"Seccions\",\"view\":\"Veure secci\u00F3\"},\"new_modal\":{\"title\":\"Nova secci\u00F3\"},\"pages_filter\":{\"page_help\":\"Arrossega i deixa anar a la part esquerra per col\u00B7locar aquesta p\u00E0gina al men\u00FA\"},\"show\":{\"collapse\":\"Colapsar tot\",\"configuration\":\"Configuraci\u00F3\",\"delete_element\":\"Eliminar element del men\u00FA\",\"expand\":\"Expandir tot\",\"help\":\"Configureu els elements del vostre men\u00FA. Arrossega el tauler dret al men\u00FA de la esquerra\",\"last_edited_pages\":\"\u00DAltimes p\u00E0gines editades\",\"placeholders\":{\"search\":\"Escriu el t\u00EDtol de la p\u00E0gina per cercar\"},\"sections\":\"Seccions\",\"select_page\":\"Selecciona una p\u00E0gina per incloure en la secci\u00F3\",\"view\":\"Veure secci\u00F3\"},\"update\":{\"success\":\"La secci\u00F3 ha estat actualitzada correctament.\"}}},\"gobierto_common\":{\"collections\":{\"check_container_presence\":{\"container_not_found\":\"El recurs a qu\u00E8 pertany la col\u00B7lecci\u00F3 no es troba\"},\"create\":{\"success\":\"La col\u00B7lecci\u00F3 s\\'ha creat correctament.\"},\"edit_modal\":{\"title\":\"Edita col\u00B7lecci\u00F3\"},\"form\":{\"placeholders\":{\"slug\":\"sobre-aquesta-colleccio\",\"title\":\"Nom de la col\u00B7lecci\u00F3\"}},\"index\":{\"collections\":\"Col\u00B7leccions\",\"header\":{\"collection\":\"T\u00EDtol\",\"pages\":\"P\u00E1ginas\"},\"latest_editions\":\"\u00DAltimes edicions\",\"new\":\"Nou\",\"title\":\"CMS\",\"view_collection\":\"Veure col\u00B7lecci\u00F3\"},\"new_modal\":{\"title\":\"Nova col\u00B7lecci\u00F3\"},\"show\":{\"configuration\":\"Configuraci\u00F3\",\"file_attachments\":{\"created_at\":\"Creat\",\"file_name\":\"Nom del fitxer\",\"view\":\"Veure fitxer\"},\"new_attachment\":\"Nou\",\"new_page\":\"Nova\",\"pages\":{\"created_at\":\"Creada\",\"public\":\"P\u00FAblica\",\"published_on\":\"Publicada\",\"updated_at\":\"Actualitzada\",\"view\":\"Veure p\u00E0gina\",\"visibility_level\":{\"active\":\"Publicada\",\"archived\":\"Arxivada\",\"draft\":\"Borrador\"}}},\"update\":{\"success\":\"La col\u00B7lecci\u00F3 s\\'ha actualitzat correctament.\"}},\"content_blocks\":{\"create\":{\"success\":\"El bloc s\\'ha creat correctament\"},\"destroy\":{\"success\":\"El bloc s\\'ha eliminat correctament\"},\"edit\":{\"title\":\"Editar bloc\"},\"form\":{\"add_child\":\"Afegir columna\",\"fields\":\"Columnes\",\"title\":\"Nom del bloc\"},\"new\":{\"title\":\"Afegir bloc\"},\"update\":{\"success\":\"El bloc s\\'ha actualitzat correctament\"}},\"custom_fields\":{\"custom_fields\":{\"create\":{\"success\":\"Camp personalitzat creat correctament\"},\"date_options\":{\"date\":\"Data\",\"datetime\":\"Data i hora\",\"type\":\"Tipus\"},\"destroy\":{\"failed\":\"Hi ha hagut un error que ha impedit eliminar el camp personalitzat\",\"success\":\"Camp personalitzat eliminat correctament\"},\"edit\":{\"instance_title\":\"Edita %{field_name} de %{instance_name}\",\"title\":\"Edita %{name}\"},\"form\":{\"confirm\":\"Est\u00E0s segur?\",\"crop\":\"Retallar\",\"multiple\":\"M\u00FAltiple\",\"type\":\"Opcions de contingut\"},\"index\":{\"instance_title\":\"Camps personalitzats de %{instance_name}\",\"localized_custom_fields\":\"Camps tradu\u00EFbles\",\"new\":\"Afegir nou camp\",\"not_localized_custom_fields\":\"Camps no tradu\u00EFbles\",\"title\":\"Camps personalitzats\"},\"new\":{\"instance_title\":\"Nou camp de %{instance_name}\",\"title\":\"Nou camp\"},\"new_option\":{\"cancel_new_option\":\"Cancel\u00B7lar\",\"create\":\"Crear opci\u00F3\",\"new\":\"Nova opci\u00F3\"},\"numeric_options\":{\"currency\":\"Monet\u00E0ria\",\"generic\":\"Gen\u00E8rica\",\"unit_type\":\"Tipus d\\'unitat\"},\"options_form\":{\"add_option\":\"Afegir opci\u00F3\"},\"plugin\":{\"budgets\":\"Pressupostos\",\"progress\":\"Progr\u00E9s\",\"table\":\"Taula\",\"type\":\"Tipus\"},\"plugin_configuration_form\":{\"configuration\":\"Configuraci\u00F3\"},\"update\":{\"success\":\"Camp personalitzat actualitzat correctament\"},\"vocabulary_select\":{\"vocabulary\":\"Vocabulari d\\'opcions\"},\"vocabulary_type_select\":{\"multiple_select\":\"Selecci\u00F3 m\u00FAltiple\",\"single_select\":\"Selecci\u00F3 \u00FAnica\",\"tags\":\"Tags\",\"type\":\"Tipus\"}},\"forms\":{\"new_gallery_image\":{\"add_item\":\"Afegir imatge\",\"cancel_new_item\":\"Cancel\"}},\"module_resources\":{\"index\":{\"custom_fields_for_instances_of\":\"Camps personalitzats per a inst\u00E0ncies de %{name}\",\"empty\":\"De moment no hi ha cap model amb camps personalitzats habilitats\"}}},\"dynamic_content\":{\"form\":{\"add_child\":\"Afegir nou registre\",\"add_content_block\":\"Afegir nou bloc\",\"add_record\":\"Afegir\",\"attachment\":\"Adjunt\",\"attachment_file\":\"Arxiu adjunt\",\"cancel_record\":\"Cancel\u00B7lar\",\"delete_content_block\":\"Eliminar bloc\",\"delete_content_block_confirm\":\"Est\u00E0s segur de suprimir aquest bloc?\",\"download_attachment\":\"Descarregar adjunt\",\"edit_content_block\":\"Editar\",\"remove_attachment\":\"Eliminar adjunt\",\"save_record\":\"Guardar\"}},\"ordered_terms\":{\"create\":{\"success\":\"El terme s\\'ha creat correctament.\"},\"destroy\":{\"destroy_failed\":\"El terme no ha pogut ser eliminat: %{validation_errors}\",\"success\":\"El terme ha estat eliminat correctament.\"},\"edit_modal\":{\"title\":\"Edita %{term}\"},\"form\":{\"placeholders\":{\"description\":\"Descripci\u00F3 del terme\",\"external_id\":\"ID001\",\"name\":\"Nom del terme\",\"slug\":\"terme\"}},\"index\":{\"collapse_all\":\"Plegar tot\",\"explore\":\"Explora\",\"new\":\"Nou\",\"open_all\":\"Desplegar tot\",\"title\":\"Termes de %{vocabulary}\"},\"new_modal\":{\"title\":\"Nou terme\"},\"terms_tree\":{\"delete_confirm\":\"Est\u00E0s segur? Aquesta operaci\u00F3 no \u00E9s reversible\"},\"update\":{\"success\":\"El terme s\\'ha actualitzat correctament.\"}},\"terms\":{\"create\":{\"success\":\"El terme s\\'ha creat correctament.\"},\"destroy\":{\"destroy_failed\":\"El terme no ha pogut ser eliminat.\",\"success\":\"El terme ha estat eliminat correctament.\"},\"edit\":{\"edit\":\"Editar %{term}\"},\"form\":{\"placeholders\":{\"description\":\"El cavall \u00E9s un mam\u00EDfer herb\u00EDvor\",\"name\":\"Cavall\",\"slug\":\"regne-animal-cavall\"}},\"index\":{\"delete_confirm\":\"Est\u00E0s segur? Aquesta operaci\u00F3 no \u00E9s reversible\",\"header\":{\"description\":\"Descripci\u00F3\",\"level\":\"Nivell\",\"name\":\"Nom\",\"parent\":\"Pare\"},\"new\":\"Nou\",\"title\":\"Termes de %{vocabulary}\"},\"new\":{\"new\":\"Nou Terme\"},\"update\":{\"success\":\"El terme s\\'ha actualitzat correctament.\"}},\"vocabularies\":{\"create\":{\"success\":\"El vocabulari s\\'ha creat correctament.\"},\"destroy\":{\"destroy_failed\":\"El vocabulari no ha pogut ser eliminat perqu\u00E8 est\u00E0 en \u00FAs.\",\"success\":\"El vocabulari ha estat eliminat correctament.\"},\"edit\":{\"edit\":\"Editar %{vocabulary}\"},\"edit_modal\":{\"title\":\"Editar %{vocabulary}\"},\"form\":{\"placeholders\":{\"name\":\"Regne animal\",\"slug\":\"regne_animal\"}},\"index\":{\"delete_confirm\":\"Est\u00E0s segur? Aquesta operaci\u00F3 no \u00E9s reversible\",\"header\":{\"name\":\"Tema\",\"terms\":\"Termes\"},\"new\":\"Nou\",\"title\":\"Vocabularis\",\"view_vocabulary\":\"Veure termes\"},\"new\":{\"new\":\"Nou Vocabulari\"},\"new_modal\":{\"title\":\"Nou Vocabulari\"},\"show\":{\"created_at\":\"Creaci\u00F3\",\"terms\":\"Termes\",\"terms_count\":\"%{count} termes\"},\"update\":{\"success\":\"El vocabulari s\\'ha actualitzat correctament.\"}}},\"gobierto_core\":{\"site_templates\":{\"create\":{\"success\":\"La plantilla s\\'ha editat correctament.\"},\"destroy\":{\"success\":\"La plantilla s\\'ha esborrat correctament.\"},\"update\":{\"success\":\"La plantilla s\\'ha actualitzat correctament.\"}},\"templates\":{\"edit\":{\"preview\":\"Previsualitzar\",\"reset\":\"Resetejar\",\"reset_title\":\"Descarta els canvis guardats, i tornar a la plantilla original (ull, no podr\u00E0s recuperar la plantilla que hagis personalitzat)\",\"save\":\"Desar\"},\"index\":{\"edit_templates\":\"Edita plantilles\"}}},\"gobierto_dashboards\":{\"dashboards\":{\"destroy\":{\"success\":\"El dashboard s\\'ha esborrat correctament.\"},\"list_modal\":{\"add\":\"Afegiu-hi\",\"new\":\"\u00BFNecessiteu crear un nou dashboard?\",\"no_dashboards\":\"No hi ha cap dashboard\",\"title\":\"Seleccioneu el dashboard on incloure aquest indicador\"}}},\"gobierto_data\":{\"configuration\":{\"settings\":{\"edit\":{\"api_settings\":\"Configuraci\u00F3 de l\\'API\",\"db_config_placeholder\":\"{\\\\\"pool\\\\\":5, \\\\\"adapter\\\\\":\\\\\"postgresql\\\\\", \\\\\"database\\\\\":\\\\\"gobierto_test\\\\\", \\\\\"encoding\\\\\":\\\\\"unicode\\\\\", \\\\\"password\\\\\":\\\\\"gobierto\\\\\", \\\\\"username\\\\\":\\\\\"gobierto\\\\\"}\",\"frontend\":\"Front-end\",\"frontend_enabled\":\"Visible\",\"title\":\"Configuraci\u00F3\",\"update\":\"Actualitzar\"},\"title\":\"Preferencies\",\"update\":{\"success\":\"Configuraci\u00F3 guardada correctament\"}}},\"datasets\":{\"create\":{\"success\":\"El conjunt de dades s\\'ha creat correctament.\"},\"destroy\":{\"success\":\"El conjunt de dades s\\'ha esborrat correctament.\"},\"form\":{\"placeholders\":{\"name\":\"Habitants\",\"slug\":\"habitants\"}},\"index\":{\"header\":{\"name\":\"Nom\",\"status\":\"Estat\",\"table_name\":\"Nom de la taula\"},\"new\":\"Nou\",\"title\":\"Conjunts de dades\",\"view_dataset\":\"Veure conjunt de dades\"},\"new\":{\"title\":\"Nou conjunt de dades\"},\"update\":{\"success\":\"El conjunt de dades s\\'ha actualitzat correctament.\"}}},\"gobierto_investments\":{\"projects\":{\"create\":{\"success\":\"El projecte s\\'ha creat correctament.\"},\"destroy\":{\"success\":\"El projecte s\\'ha esborrat correctament.\"},\"form\":{\"placeholders\":{\"external_id\":\"ID001\",\"title\":\"Centre esportiu\"}},\"index\":{\"header\":{\"external_id\":\"ID extern\",\"title\":\"T\u00EDtol\"},\"new\":\"Nou\",\"title\":\"Projectes\",\"view_project\":\"Veure projecte\"},\"new\":{\"title\":\"Nou projecte\"},\"update\":{\"success\":\"El projecte s\\'ha actualitzat correctament.\"}}},\"gobierto_observatory\":{\"configuration\":{\"settings\":{\"edit\":{\"title\":\"Configuraci\u00F3 del observatori\",\"update\":\"Actualitzar\"},\"title\":\"Preferencies\",\"update\":{\"error\":\"Hi ha hagut un error al desar la configuraci\u00F3: %{validation_errors}\",\"success\":\"Configuraci\u00F3 guardada correctament\"}}}},\"gobierto_people\":{\"configuration\":{\"settings\":{\"edit\":{\"agendas\":\"Agendes\",\"blogs\":\"Blogs\",\"departments\":\"Departaments\",\"gifts\":\"Obsequis\",\"interest_groups\":\"Grups d\\'inter\u00E8s\",\"invitations\":\"Invitacions\",\"officials\":\"Persones\",\"placeholders\":{\"home_text_ca\":\"Text home catal\u00E0\",\"home_text_en\":\"Text home angl\u00E9s\",\"home_text_es\":\"Text home espanyol\"},\"political_groups_vocabulary\":\"Vocabulari de grups pol\u00EDtics\",\"statements\":\"Declaracions\",\"submodules_enabled\":\"Subm\u00F2duls habilitats\",\"trips\":\"Viatges\",\"update\":\"Actualitzar\"},\"update\":{\"error\":\"Hi ha hagut un error guardant les prefer\u00E8ncies\",\"success\":\"Prefer\u00E8ncies actualitzades correctament\"}},\"title\":\"Configuraci\u00F3\"},\"people\":{\"create\":{\"success_html\":\"El perfil s\\'ha creat correctament. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVeure la persona\\\\u003c/a\\\\u003e.\"},\"edit\":{\"title\":\"Editar persona\"},\"form\":{\"avatar_file_constraints\":\"Avatar de usuari (fitxer de 500x500)\",\"bio_file_constraints\":\"Adjuntar fitxer (PDF)\",\"category\":{\"executive\":\"Directiu\",\"politician\":\"Pol\u00EDtic\"},\"crop\":\"Retallar\",\"party\":{\"government\":\"Equip de Govern\",\"opposition\":\"Oposici\u00F3\"},\"placeholders\":{\"charge\":\"Alcalde\",\"email\":\"Correu-e\",\"name\":\"Rafael Garc\u00EDa\"}},\"index\":{\"configuration\":\"Configuraci\u00F3\",\"drag_to_sort\":\"Arrastra per a ordenar\",\"header\":{\"charge\":\"C\u00E0rrec\",\"events\":\"Esdeveniments\",\"person\":\"Persona\",\"posts\":\"Posts\",\"statements\":\"Declaracions\",\"status\":\"Estat\"},\"new\":\"Nova persona\",\"no_permissions\":\"No tens permisos per editar aquesta persona. Si la necessites editar, parla amb l\\'administrador\",\"title\":\"Persones\",\"view_person\":\"Veure persona\",\"visibility_level\":{\"active\":\"Publicat\",\"draft\":\"Borrador\"}},\"navigation\":{\"agenda\":\"Agenda\",\"person\":\"Persona\",\"posts\":\"Blog\",\"statements\":\"Declaracions\"},\"new\":{\"title\":\"Nova persona\"},\"person_events\":{\"index\":{\"title\":\"Agenda\"}},\"person_posts\":{\"create\":{\"success_html\":\"El post s\\'ha creat correctament. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVeure el post\\\\u003c/a\\\\u003e.\"},\"edit\":{\"title\":\"Editar post\"},\"form\":{\"placeholders\":{\"tags\":\"personal, la meva carrera, sobre mi\",\"title\":\"Sobre mi\"}},\"index\":{\"header\":{\"date\":\"Data\",\"status\":\"Estat\",\"tags\":\"Tags\",\"title\":\"T\u00EDtol\"},\"new\":\"Nou post\",\"title\":\"Blog\",\"view_post\":\"Veure post\",\"visibility_level\":{\"active\":\"Publicat\",\"draft\":\"Borrador\"}},\"new\":{\"title\":\"Nou post\"},\"update\":{\"success_html\":\"El post s\\'ha actualitzat correctament. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVeure el post\\\\u003c/a\\\\u003e.\"}},\"person_statements\":{\"create\":{\"success_html\":\"La declaraci\u00F3 s\\'ha creat correctament. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVeure la declaraci\u00F3\\\\u003c/a\\\\u003e.\"},\"edit\":{\"title\":\"Editar declaraci\u00F3\"},\"form\":{\"placeholders\":{\"title\":\"Declaraci\u00F3 de b\u00E9ns i activitats\"}},\"index\":{\"header\":{\"date\":\"Data\",\"statement\":\"Declaraci\u00F3\",\"status\":\"Estat\"},\"new\":\"Nova declaraci\u00F3\",\"title\":\"Declaracions\",\"view_statement\":\"Veure declaraci\u00F3\",\"visibility_level\":{\"active\":\"Publicada\",\"draft\":\"Borrador\"}},\"new\":{\"title\":\"Nou declaraci\u00F3\"},\"update\":{\"success_html\":\"La declaraci\u00F3 s\\'ha actualitzat correctament. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVeure la declaraci\u00F3\\\\u003c/a\\\\u003e.\"}},\"update\":{\"success_html\":\"El perfil s\\'ha actualitzat correctament. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVeure la persona\\\\u003c/a\\\\u003e.\"}},\"settings\":{\"title\":\"Preferencies\"}},\"gobierto_plans\":{\"admin_mailer\":{\"project_attributes_changed\":{\"bye\":\"Salutacions\",\"edition_change\":\"el contingut\",\"hi\":\"Hola\",\"intro_html\":\"%{author_name} ha actualitzat %{updates_list} al projecte %{project_link} del pla %{plan_title}.\",\"minor_change_notice\":\"El canvi s\\'ha desat com a menor amb el que no s\\'ha creat una nova versi\u00F3.\",\"moderation_stage_change\":\"l\\'estat de moderaci\u00F3 a %{value}\",\"subject\":\"S\\'ha modificat un projecte en el pla %{plan_title} de %{site_name}\",\"subject_with_changes\":\"S\\'ha modificat un projecte en el pla %{plan_title} de %{site_name} a %{changes}\",\"visibility_level_change\":\"l\\'estat de publicaci\u00F3 a %{value}\",\"visibility_levels\":{\"draft\":\"No publicat\",\"published\":\"Publicat\"}},\"project_created\":{\"bye\":\"Salutacions\",\"hi\":\"Hola\",\"intro_html\":\"%{author_name} ha creat un nou projecte %{project_link} en el pla %{plan_title}\",\"subject\":\"S\\'ha creat un projecte en el pla %{plan_title} de %{site_name}\"},\"project_deleted\":{\"bye\":\"Salutacions\",\"hi\":\"Hola\",\"intro_html\":\"%{author_name} ha eliminat el projecte %{project_name} del pla %{plan_link}\",\"subject\":\"S\\'ha eliminat un projecte del pla %{plan_title} de %{site_name}\"}},\"categories\":{\"calculated_headers\":{\"items\":\"Elements\",\"progress\":\"Progr\u00E9s\"},\"create\":{\"success\":\"La categoria s\\'ha creat correctament.\"},\"destroy\":{\"destroy_failed\":\"No pots esborrar una categoria mentre tingui projectes o altres elements associats.\",\"success\":\"La categoria ha estat eliminat correctament.\"},\"index\":{\"progress_excluded_nodes_explanation\":\"S\\'han descartat alguns projectes del c\u00E0lcul perqu\u00E8 tenen algun dels seg\u00FCents estats exclosos: %{statuses}\"},\"plan_summary\":{\"global_progress\":\"Progr\u00E9s global\",\"projects\":\"Projectes\"},\"update\":{\"success\":\"La categoria s\\'ha actualitzat correctament.\"}},\"dashboards\":{\"index\":{\"headers\":{\"status\":\"Visibilitat\",\"title\":\"T\u00EDtol\",\"updated\":\"Actualitzat\"},\"new\":\"Nou\",\"visibility_level\":{\"active\":\"P\u00FAblic\",\"draft\":\"Privat\"}}},\"plan_types\":{\"create\":{\"success\":\"El pla s\\'ha creat correctament.\"},\"destroy\":{\"has_items\":\"No es pot arxivar un tipus de pla mentre tingui elements associats.\",\"success\":\"El pla s\\'ha esborrat correctament.\"},\"edit\":{\"title\":\"Edita el tipus de pla\"},\"form\":{\"placeholders\":{\"name\":\"Nom del tipus de pla\",\"slug\":\"sobre-de-aquest-tipus-de-pla\"}},\"index\":{\"delete\":\"Esborrar\",\"header\":{\"type\":\"Tipus\"},\"new\":\"Nou\",\"title\":\"Tipus de plans\"},\"new\":{\"title\":\"Nou tipus de pla\"},\"update\":{\"success\":\"El pla pla s\\'ha actualizat correctament.\"}},\"plans\":{\"create\":{\"success_html\":\"Pla s\\'ha creat correctament. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVeure el pla\\\\u003c/a\\\\u003e.\"},\"delete_contents\":{\"success\":\"Els projectes de el pla han estat correctament eliminats\",\"term_deletion_failed_html\":\"El terme \\\\\"%{term}\\\\\" de l\\'vocabulari \\\\\"%{vocabulary}\\\\\" no pot ser esborrat: %{message}\"},\"destroy\":{\"success\":\"El pla s\\'ha esborrat correctament.\"},\"edit\":{\"title\":\"Configuraci\u00F3\"},\"form\":{\"delete_contents\":\"Eliminar els projectes d\\'aquest pla\",\"delete_contents_confirm\":\"Confirma que vols eliminar els projectes d\\'aquest pla\",\"export_csv\":\"Exportar a CSV\",\"import_csv\":\"Importar des de CSV\",\"indicators\":\"indicadors\",\"placeholders\":{\"configuration_data\":\"{ \\\\\"open_node\\\\\": true }\",\"css\":\".gobierto_planification section.level_0 .cat_1 { background-color: rgba(0, 191, 255, 0.95); }\",\"footer\":\"Peu de p\u00E0gina del pla\",\"introduction\":\"Introducci\u00F3 del pla\",\"slug\":\"sobre-de-aquest-pla\",\"title\":\"T\u00EDtol del pla\",\"year\":2018},\"projects\":\"Projectes\",\"publish_last_version_automatically\":\"Publicar les versions noves dels projectes autom\u00E0ticament\"},\"import_csv\":{\"defaults\":{\"category\":{\"one\":\"element de nivell %{level}\",\"other\":\"elements de nivell %{level}\"},\"project\":{\"one\":\"projecte\",\"other\":\"projectes\"}},\"latest_update\":\"\u00DAltima actualitzaci\u00F3: %{datetime}\",\"no_data\":\"Encara no hi ha dades carregades\",\"there_are\":\"Hi ha %{info}\",\"title\":\"Importa CSV\"},\"import_csv_form\":{\"confirm_import\":\"N\\'est\u00E0s segur?\",\"custom_fields_table_plugin\":\"Camps personalitzats (plugin de taula)\",\"disable_with\":\"Carregant...\",\"more_info_html\":\"Per obtenir m\u00E9s informaci\u00F3 visita la documentaci\u00F3 \\\\u003ca href=\\\\\"%{url}\\\\\" target=\\\\\"_blank\\\\\"\\\\u003eImportar datos de un plan\\\\u003c/a\\\\u003e.\",\"plan_content\":\"Contingut del pla\",\"submit\":\"Importa des de fitxer CSV\",\"vocabulary_used_by_other_plans\":\"El vocabulari configurat per aquest pla ja est\u00E0 configurat per a algun altre. Si us plau, crea un vocabulari nou per aquest pla o elimina-de la configuraci\u00F3 dels altres plans que ho estiguin fent servir, at\u00E8s que s\\'esborrarien les seves dades amb la importaci\u00F3.\",\"warning\":\"\\\\u003cstrong\\\\u003eAv\u00EDs\\\\u003c/strong\\\\u003e A l\\'importar des d\\'un fitxer CSV, si el pla est\u00E0 buit s\\'afegiran termes als vocabularis associats amb categories i camps personalitzats a mesura que es trobin, per\u00F2 si el pla ja cont\u00E9 dades, al tractar-se d\\'una actualitzaci\u00F3, es produiran errors per als termes que no es trobin en els respectius vocabularis.\"},\"import_data\":{\"missing_file\":\"Es necessari seleccionar un fitxer per a la importaci\u00F3.\",\"success_html\":\"Les dades s\\'han importat correctament. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVeure el pla\\\\u003c/a\\\\u003e.\"},\"index\":{\"header\":{\"elements\":\"Elements\",\"status\":\"Estat\",\"title\":\"T\u00EDtol\",\"type\":\"Tipus\",\"year\":\"Any\"},\"new\":\"Nou\",\"title\":\"Plans\",\"types\":\"Tipus\",\"view_plan\":\"Veure pla\",\"visibility_level\":{\"draft\":\"Esborrany\",\"published\":\"Publicat\"}},\"new\":{\"title\":\"Nou pla\"},\"recover\":{\"success\":\"El pla s\\'ha recuperat correctament.\"},\"update\":{\"success_html\":\"El tipus de pla s\\'ha actualizat correctament. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVeure el pla\\\\u003c/a\\\\u003e.\"}},\"projects\":{\"create\":{\"success\":\"El projecte s\\'ha creat correctament.\"},\"destroy\":{\"success\":\"El projecte s\\'ha esborrat correctament.\"},\"filter_form\":{\"author\":\"Autor\",\"category\":\"Categoria\",\"clear_filters\":\"Netejeu filtres\",\"filter\":\"Filtrar\",\"interval\":\"Rang de dates\",\"progress\":\"Progr\u00E9s\",\"search\":\"Cerca...\",\"status\":\"Estat\",\"submit\":\"Filtrar\"},\"filters_row\":{\"all\":\"Tots\",\"moderation_stage\":\"Moderaci\u00F3\",\"moderation_stage_value\":{\"approved\":\"Aprovats\",\"blank\":\"Sense moderaci\u00F3\",\"in_review\":\"En revisi\u00F3\",\"rejected\":\"No aprovats\",\"sent\":\"Enviat\",\"unsent\":\"No enviats\"},\"total\":\"Total\",\"versions_visibility_level\":\"Publicaci\u00F3\",\"versions_visibility_level_value\":{\"draft\":\"Esborrany\",\"published_up_to_date\":\"Publicat actualitzat\",\"published_with_unpublished_changes\":\"Publicat amb canvis sense publicar\"}},\"find_versioned_project\":{\"unavailable_version\":\"Versi\u00F3 no disponible\"},\"form\":{\"button\":{\"add_dashboard\":\"Afegir a un dashboard\"},\"placeholders\":{\"name\":\"T\u00EDtol del projecte\"}},\"index\":{\"headers\":{\"progress\":\"Progr\u00E9s\",\"project\":\"Projecte\",\"status\":\"Estat\",\"updated\":\"Actualitzat\",\"visibility_level\":\"Publicaci\u00F3\"},\"new\":\"Nou\",\"title\":\"Projectes de %{name}\",\"view\":\"Veure \u00EDtem\"},\"new\":{\"title\":\"Nou projecte\"},\"publish\":{\"confirm\":\"Vas a publicar aquest projecte, de manera que qualsevol usuari podr\u00E0 veure-ho.\",\"error\":\"El projecte no s\\'ha pogut publicar.\",\"success\":\"El projecte s\\'ha publicat correctament.\"},\"send\":{\"confirm\":\"Vas a enviar aquest projecte a un moderador per a la seva validaci\u00F3.\"},\"unpublish\":{\"error\":\"El projecte no s\\'ha pogut despublicar.\",\"success\":\"El projecte s\\'ha despublicat correctament.\"},\"update\":{\"moderation_reset\":\"Com que has modificat el projecte i no tens permisos de moderaci\u00F3 el seu estat ha estat mogut a No enviat.\",\"no_changes\":\"No s\\'han produ\u00EFt canvis al projecte. Mantenint la versi\u00F3 actual.\",\"success\":\"El projecte s\\'ha actualitzat correctament.\",\"suggest_unpublish_html\":\"El projecte est\u00E0 sense aprovar per\u00F2 publicat. \\\\u003ca rel=\\\\\"nofollow\\\\\" data-method=\\\\\"post\\\\\" href=\\\\\"%{url}\\\\\"\\\\u003eDespublicar\\\\u003c/a\\\\u003e.\"}},\"shared\":{\"navigation\":{\"configuration_tab\":\"Configuraci\u00F3\",\"dashboards_tab\":\"Dashboards\",\"plan_terms_tab\":\"Pla\",\"projects_tab\":\"Projectes\"}}},\"gobierto_visualizations\":{\"configuration\":{\"settings\":{\"edit\":{\"title\":\"Configuraci\u00F3 dels Visualitzacions\",\"update\":\"Actualitzar\"},\"title\":\"Preferencies\",\"update\":{\"error\":\"Hi ha hagut un error al desar la configuraci\u00F3: %{validation_errors}\",\"success\":\"Configuraci\u00F3 guardada correctament\"}}}},\"layouts\":{\"application\":{\"admin_dropdown\":{\"account\":\"El teu compte\",\"sign_out\":\"Tancar sessi\u00F3\"},\"calendars\":\"Agendes\",\"cms\":\"CMS\",\"collapse_menu\":\"Colapsar men\u00FA\",\"custom_fields\":\"Camps personalitzats\",\"dirty_forms\":{\"message\":\"Hi ha canvis sense desar. Est\u00E0s segur de voler continuar?\"},\"edit_site\":\"Personalitzar site\",\"file_attachments\":\"Documents\",\"global\":\"General\",\"hey_admin\":\"Hola, %{admin_name}\",\"manage_sites\":\"Gestionar sites\",\"modules\":{\"budgets\":\"Pressupostos\",\"data\":\"Dades\",\"investments\":\"Inversions\",\"observatory\":\"Observatori\",\"people\":\"Alts c\u00E0rrecs i Agendes\",\"plans\":\"Plans\",\"visualizations\":\"Visualitzacions\"},\"notifications\":\"Notificacions\",\"site_network\":\"Xarxa\",\"templates\":\"Plantilles\",\"users\":\"Usuaris\",\"view_documentation\":\"Veure documentaci\u00F3\",\"view_item\":\"Veure \u00EDtem\",\"view_site\":\"Veure site\",\"vocabularies\":\"Vocabularis\"}},\"module_helper\":{\"not_enabled\":\"No est\u00E0s autoritzat a realitzar esta acci\u00F3\"},\"session_helper\":{\"already_signed_in\":\"Ja est\u00E1s identificat\",\"not_authorized\":\"No est\u00E0s autoritzat a realitzar aquesta acci\u00F3\",\"not_signed_in\":\"Has d\\'estar identificat per continuar\"},\"sessions\":{\"create\":{\"error\":\"Les dades que has introduit no semblen ser v\u00E0lides. Per favor, tria de nou.\",\"success\":\"Sessi\u00F3 iniciada correctament\"},\"destroy\":{\"success\":\"Sessi\u00F3 tancada correctament\"},\"form\":{\"email\":\"Email\",\"password\":\"Contrasenya\",\"submit\":\"Enviar\"},\"new\":{\"forgot_your_password\":\"Has oblidat la contrasenya?\",\"title\":\"Iniciar sessi\u00F3\"}},\"shared\":{\"admin_widget_attachment\":{\"add_new_document\":\"Afegeix nou document\",\"attachments\":\"Documents\",\"copy_to_clipboard\":\"Copia URL\",\"description\":\"Descripci\u00F3\",\"document\":\"Document\",\"document_title\":\"T\u00EDtol del document\",\"drag_document_here\":\"Arrastra i solta el document aqu\u00ED\",\"edit_document\":\"Editar document\",\"include_file\":\"Incloure arxiu\",\"include_in_text\":\"Incloure arxiu en el text\",\"latest_documents\":\"\u00DAltims documents afexits\",\"no_docs\":\"No hi ha documents\",\"or\":\"o\",\"save\":\"Desar\",\"search\":\"Cercar\",\"select_file\":\"Tria un arxiu del disc dur\"},\"archive\":{\"confirm\":\"\u00BFSegur que vols arxivar aquest element? No es mostrar\u00E0 al front ni en llistes com aquesta. Vost\u00E8 podr\u00E0 recuperar-lo.\",\"element\":\"Arxivar aquest element\",\"elements\":\"Elements arxivats\"},\"draft\":\"Borrador\",\"form_locale_switchers\":{\"define_content_in_locale\":\"Defineix el contingut en la versi\u00F3 en %{locale_name}\",\"translate\":\"Traduxir\"},\"moderation_save_widget\":{\"change_moderation_status\":\"Canvia l\\'estat de moderaci\u00F3\",\"confirm\":\"Est\u00E0s segur?\",\"confirm_moderation_blocked_update\":\"Est\u00E0s segur? Si deseu modificacions en aquest projecte l\\'estat s\\'actualitzar\u00E0 a No enviat.\",\"edit_version\":\"Editant versi\u00F3\",\"last_versions\":\"\u00DAltimes versions\",\"minor_change\":\"Canvi menor (no guarda versi\u00F3)\",\"moderation\":\"Moderaci\u00F3\",\"moderation_info\":{\"new\":\"Un cop guardis el teu contingut, podr\u00E0s enviar-lo a moderaci\u00F3.\",\"publicable\":\"Fes click a Publicar perqu\u00E8 aquesta versi\u00F3 sigui visible p\u00FAblicament.\",\"publicable_html\":\"Fes click a Publicar perqu\u00E8 aquesta versi\u00F3 sigui visible p\u00FAblicament.\",\"published\":\"La versi\u00F3 actual \u00E9s la que est\u00E0 publicada.\",\"published_html\":\"La versi\u00F3 actual \u00E9s la que est\u00E0 publicada. \\\\u003ca rel=\\\\\"nofollow\\\\\" data-method=\\\\\"post\\\\\" href=\\\\\"%{url}\\\\\"\\\\u003eDespublicar\\\\u003c/a\\\\u003e.\",\"rejected\":\"La versi\u00F3 est\u00E0 rebutjada.\",\"sent\":\"El teu contingut ha estat enviat per a revisi\u00F3. Rebr\u00E0s una notificaci\u00F3 quan s\\'aprovi o et demanin canvis.\",\"unsent\":\"Quan el teu contingut estigui llest per a ser revisat per un moderador, fes click a Enviar.\"},\"moderation_status\":{\"approved\":\"Aprovat\",\"in_review\":\"En revisi\u00F3\",\"rejected\":\"No aprovat\",\"sent\":\"Enviat\",\"unsent\":\"No enviat\"},\"new_version\":\"Nova (no guardada)\",\"preview\":\"Previsualitzar\",\"previous_versions\":\"Versions anteriors\",\"publication_status\":{\"approved\":\"Publicada\",\"not_published\":\"No publicada\"},\"publish\":\"Publicar\",\"publish_last_version_automatically\":\"Publica autom\u00E0ticament aquesta versi\u00F3\",\"publish_status\":\"Estat\",\"published_version\":\"Versi\u00F3 publicada\",\"published_version_blank\":\"sense publicar encara\",\"save\":\"Guardar\",\"see_all\":\"veure totes\",\"send\":\"Enviar\",\"unpublish\":\"Despublicar\"},\"module\":\"M\u00F2dul\",\"recover\":{\"confirm\":\"Si es recupera un element, es tornar\u00E0 a llistar de nou.\",\"element\":\"Recuperar element\"},\"resource_admin_permissions_button\":{\"permissions\":\"Permisos\"},\"save_widget\":{\"save\":\"Guardar\",\"visibility_level\":{\"active\":\"P\u00FAblic\",\"draft\":\"Borrador\",\"published\":\"P\u00FAblic\"}}},\"sites\":{\"create\":{\"success\":\"El lloc s\\'ha creat correctament\"},\"destroy\":{\"success\":\"El lloc s\\'ha eliminat correctament\"},\"edit\":{\"title\":\"Personalitzar lloc\"},\"form\":{\"admin_authentication_modules\":\"Estrat\u00E8gies d\\'autenticaci\u00F3 per admins\",\"authentication_modules\":\"Estrat\u00E8gies d\\'autenticaci\u00F3 per a usuaris\",\"hints\":{\"domain\":{\"a_record\":\"Entrada A a %{target}\",\"cname_record\":\"Entrada CNAME a %{target}\",\"if_domain\":\"Si es un domini\",\"if_subdomain\":\"Si es un subdomini\",\"instructions\":\"Important: aquest domini deur\u00E0 estar creant previament per a que el lloc funcione correctament.\"},\"organization_id_html\":\"Pots buscar el codi \\\\u003ca href=\\\\\"https://populatetools.github.io/ine-places/places.html\\\\\" target=\\\\\"_blank\\\\\"\\\\u003een aquesta taula\\\\u003c/a\\\\u003e.\"},\"modules_enabled\":\"M\u00F3duls actius para aquest lloc\",\"password\":\"Contrasenya\",\"placeholders\":{\"domain\":\"gobierto.burjassot.es\",\"google_analytics_id\":\"UA-000000-01\",\"name\":\"Ajuntament de Burjassot\",\"organization_name\":\"Burjassot\",\"populate_data_api_token\":\"Token de API de Populate Data\",\"reply_to_email\":\"contacte@email.com\",\"title\":\"Transparencia i Participci\u00F3\"},\"registration\":\"Registre d\\'usuaris\",\"registration_disabled\":\"Deshabilitar el registre (nom\u00E9s oculta els enlla\u00E7os al registre/login)\",\"username\":\"Noe d\\'usuari\",\"visibility_level\":{\"active\":\"Publicat\",\"draft\":\"Borrador\"}},\"index\":{\"configuration\":\"Configuraci\u00F3\",\"header\":{\"created_at\":\"Creat\",\"domain\":\"Domini\",\"site\":\"Lloc\",\"status\":\"Estat\"},\"new\":\"Crear lloc\",\"title\":\"Sites\",\"view_site\":\"Veure lloc\"},\"new\":{\"title\":\"Crear lloc\"},\"pages\":\"P\u00E0gines\",\"sections\":\"Seccions\",\"update\":{\"success\":\"El lloc s\\'ha actualizat correctament\"}},\"users\":{\"edit\":{\"title\":\"Editar Usuari\"},\"form\":{\"change_password\":\"Canviar contrasenya\",\"password_block\":\"Contrasenya\",\"placeholders\":{\"email\":\"fgonzalez@gmail.com\",\"name\":\"Fernando Gonz\u00E1lez\"},\"resend_welcome_email\":\"Reenviar Email de benvinguda\",\"resend_welcome_email_notes\":\"amb enlla\u00E7 per canviar la contrasenya\"},\"index\":{\"admins_section\":\"Administradors\",\"census_configuration\":\"Cens\",\"header\":{\"created_at\":\"Creat\",\"email\":\"Email\",\"last_sign_in_at\":\"\u00DAltim login\",\"user\":\"Usuari\",\"verified\":\"Verificat\"},\"title\":\"Usuaris\",\"users\":{\"one\":\"%{count} usuari\",\"other\":\"%{count} usuaris\"},\"users_confirmed\":{\"one\":\"%{count}% confirmat\",\"other\":\"%{count}% confirmats\"},\"users_verified\":{\"one\":\"%{count}% verificat\",\"other\":\"%{count}% verificats\"},\"view_user\":\"Veure usuari\"},\"passwords\":{\"create\":{\"error\":\"Hi ha hagut un problema al canviar la contrasenya del usuari\",\"success\":\"La contrasenya del usuari s\\'ha canviat correctamente\"},\"form\":{\"submit\":\"Enviar\"},\"new\":{\"title\":\"Canviar contrasenya d\\'usuari\"}},\"session_information\":{\"created_at\":\"Creat\",\"last_sign_in\":\"\u00DAltim login\",\"site\":\"Site\"},\"update\":{\"success\":\"El Usuari s\\'ha actualitzat correctament\"},\"welcome_messages\":{\"create\":{\"error\":\"El missatge de benvinguda no s\\'ha pogut enviar. Per favor, tria de nou.\",\"success\":\"El missatge de benvinguda s\\'ha enviat\"}}},\"welcome\":{\"index\":{\"title\":\"Inici\"}}},\"gobierto_attachments\":{\"events\":{\"gobierto_attachments_attachment_created\":\"Document s\\'ha creat\",\"gobierto_attachments_attachment_updated\":\"Document s\\'ha actualitzat\"}},\"gobierto_budgets\":{\"budget_lines\":{\"explorer\":{\"examples\":\"Exemples\",\"expenses\":\"Despeses\",\"explore_the_detail\":\"Explora el detall\",\"income\":\"Ingressos\",\"search\":\"Cercar\",\"search_budget_line\":\"Cerca una partida espec\u00EDfica\"},\"index\":{\"amount\":\"Quantitat\",\"budget_guide_pitch\":\"Consulta la Guia del Pressupost\",\"budget_line\":\"Partida\",\"categories\":\"Categories pressupost\u00E0ries\",\"custom\":\"Personalitzada\",\"expense_in_what\":\"En qu\u00E8 es gasta\",\"expense_to_do_what\":\"Per a qu\u00E8 es gasta\",\"help\":\"T\\'expliquem com funciona un pressupost municipal\",\"income_from_what\":\"En qu\u00E8 s\\'ingressa\",\"per_inhabitant\":\"Per habitant\",\"title\":\"Pressupostos municipals en %{year}\"},\"show\":{\"about_this_line\":\"Sobre aquesta partida\",\"avg_province\":\"Mitjana %{kind} provincial\",\"avg_province_tooltip\":\"Mitjana d\\'aquesta partida en els municipis de la prov\u00EDncia\",\"back_to_parent\":\"Tornar a la partida pare\",\"budget_line_category\":\"Categoria\",\"budget_line_percentage\":\"Percentatge\",\"budget_line_value\":\"Quantitat\",\"budget_lines_distribution\":\"Distribuci\u00F3 de les despeses d\\'aquesta partida\",\"current_amount\":\"Pressupost actual\",\"current_amount_per_inhabitant\":\"Pressupost actual / hab.\",\"evolution\":\"Evoluci\u00F3\",\"give_your_opinion\":\"Opina sobre aquesta partida\",\"give_your_opinion_cta\":\"Entens de qu\u00E8 va aquesta partida? Et sembla molt, poc? Opina\",\"initial_estimate\":\"Pressupost inicial\",\"last_year\":\"L\\'any passat %{value}\",\"no_description\":\"No hi ha una descripci\u00F3 associada a aquesta partida.\",\"no_distribution\":\"No hi ha distribuci\u00F3 associada a aquesta partida.\",\"no_more_descendants\":\"No hi ha m\u00E9s subpartides\",\"not_available\":\"No disp.\",\"percentage\":\"% sobre el total del press.\",\"percentage_tooltip\":\"Percentage del pressupost total que suposa aquesta partida\",\"planned\":\"pressupostat\",\"planned_female\":\"pressupostada\",\"planned_per_inhabitant\":\"Pressupost inicial / hab.\",\"planned_per_inhabitant_tooltip\":\"Quantitat pressupostada dividida pel nombre d\\'habitants\",\"planned_tooltip\":\"Quantitat pressupostada\",\"raise_hand\":\"Al\u00E7a la m\u00E0\",\"real_value\":\"%{kind} real s\u00F3n %{value}\",\"real_vs_planned\":\"% execuci\u00F3\",\"real_vs_planned_tooltip\":\"Percentage de la partida que ha sigut executat\",\"sub_budget_lines\":\"Dins d\\'aquesta partida\",\"twitter_text_expense\":\"En @gobierto: Despesa municipal de %{name} en %{budget_line_name} al %{year}\",\"twitter_text_income\":\"En @gobierto: Ingr\u00E9s municipal de %{name} en %{budget_line_name} al %{year}\",\"updated\":\"actualitzat\",\"updated_female\":\"actualitzada\",\"vs_previous_year\":\"vs. exercici anterior\",\"vs_previous_year_tooltip\":\"Comparaci\u00F3 amb les dades de l\\'exercici anterior\"}},\"budgets\":{\"guide\":{\"budget_execution\":\"L\\'execuci\u00F3 pressupost\u00E0ria\",\"budget_execution_p1_html\":\"Aprovar un pressupost no vol dir que es quedi escrit en una pedra. Al llarg de l\\'any sorgeixen imprevistos que canvien la quantitat o la finalitat de les despeses. Aquests canvis s\u00F3n els que s\u2019anomenen l\u2019\\\\u003ca href=/presupuestos/ejecucion/%{year}\\\\\"\\\\u003eexecuci\u00F3 pressupost\u00E0ria\\\\u003c/a\\\\u003e.\",\"budget_execution_p2\":\"Per saber si l\u2019Ajuntament ha planificat b\u00E9 els comptes nom\u00E9s hem de comparar el pressupost i l\\'execuci\u00F3: ha gastat m\u00E9s del pressupostat? Li han sobrat diners? O s\\'ha ajustat al que preveia?\",\"capital_income\":\"Ingressos de capital\",\"capital_income_p1\":\"Procedeixen de la venda de propietats municipals com solars o finques. Tamb\u00E9 poden procedir de transfer\u00E8ncies d\u2019altres administracions (inclosos fons europeus) per a la realitzaci\u00F3 d\u2019inversions.\",\"classification\":\"Classificaci\u00F3 pressupost\u00E0ria\",\"classification_p1\":\"En aquesta eina, els ingressos estan classificats tenint en compte la seva naturalesa econ\u00F2mica, que estableix el seu origen. I les despeses, d\\'altra banda, estan classificades de dues formes: a partir de criteris de programa (en qu\u00E8 es gasten els diners) i econ\u00F2mics (com es gasten aquests diners).\",\"debt\":\"Quant deu el municipi\",\"description\":\"El pressupost municipal \u00E9s el pla econ\u00F2mic i financer que explica com l\u2019Ajuntament gestiona els diners p\u00FAblics per donar resposta a les necessitats del municipi. Serveix per planificar, programar, controlar i avaluar les actuacions municipals i fer el seguiment de les finances. \u00C9s una eina de car\u00E0cter anual i especifica les previsions d\u2019ingressos i despeses. Aqu\u00ED t\\'expliquem els conceptes m\u00E9s importants perqu\u00E8 siguin m\u00E9s comprensibles.\",\"economic\":\"Despesa econ\u00F2mica\",\"economic_p1\":\"\u00C9s la classificaci\u00F3 que indica la naturalesa de la despesa. Per exemple, \\\\\"despeses de personal\\\\\", que engloba els sous de tots els treballadors i treballadores de l\u2019Ajuntament.\",\"economic_p2\":\"En un pressupost oficial, els apartats principals es diuen cap\u00EDtols. I al seu torn, cada cap\u00EDtol es divideix en articles, conceptes i subconceptes.\",\"execution\":\"Execuci\u00F3 pressupost\u00E0ria\",\"expense_economic_1_desc\":\"Sous de funcionaris, personal laboral, \u00F2rgans de govern, personal directiu i eventual, aix\u00ED com les cotitzacions a la Seguretat Social i les despeses de formaci\u00F3.\",\"expense_economic_2_desc\":\"Subministraments, reparacions, materials i despeses de serveis o treballs realitzats per empreses externes contractades.\",\"expense_economic_3_desc\":\"Pagament d\\'interessos derivats d\\'operacions financeres.\",\"expense_economic_4_desc\":\"Aportacions a d\u2019altres entitats locals o empreses privades per finan\u00E7ar activitats o serveis, com els ajuts socials, beques, etc.\",\"expense_economic_5_desc\":\"S\u00F3n diners que cobreixen situacions d\\'emerg\u00E8ncia i despeses no previstes. La seva quantia est\u00E0 delimitada a la normativa.\",\"expense_economic_6_desc\":\"Construcci\u00F3 o rehabilitaci\u00F3 d\u2019equipaments, adquisici\u00F3 de maquin\u00E0ria o de b\u00E9ns inventariables aix\u00ED com totes les actuacions que incrementin la vida \u00FAtil del patrimoni municipal.\",\"expense_economic_7_desc\":\"S\u00F3n aportacions o transfer\u00E8ncies a d\u2019altres administracions i/o entitats per a la realitzaci\u00F3 de projectes d\u2019inversi\u00F3.\",\"expense_economic_8_desc\":\"Inclouen bestretes de personal, compra de valors financers, etc.\",\"expense_economic_9_desc\":\"Amortitzaci\u00F3 de pr\u00E9stecs i cr\u00E8dits.\",\"expense_functional_0_desc\":\"Aquesta partida es destina a pagar el deute acumulat per l\\'ajuntament.\",\"expense_functional_1_desc\":\"Cobreix les necessitats obligat\u00F2ries del municipi: clavegueram, neteja, enllumenat, seguretat, etc.\",\"expense_functional_2_desc\":\"S\u00F3n els diners que es destinen a actuacions assistencials i preventives. Per exemple, serveis socials, el foment de l\\'ocupaci\u00F3, Rescat Social, etc.\",\"expense_functional_3_desc\":\"Fa refer\u00E8ncia als serveis que milloren la qualitat de vida de la ciutadania: educaci\u00F3, cultura, esports, salut, etc.\",\"expense_functional_4_desc\":\"Inclou accions que ajuden a desenvolupar el potencial dels diferents sectors econ\u00F2mics, com infraestructures i transports.\",\"expense_functional_9_desc\":\"S\\'hi agrupen les despeses del mateix Ajuntament, com serveis de car\u00E0cter general o transfer\u00E8ncies a d\u2019altres organismes p\u00FAblics.\",\"expenses\":\"Despeses\",\"expenses_how\":\"A qu\u00E8 dedica l\\'Ajuntament els diners de la ciutadania? Les despeses es poden classificar de dues maneres: des del punt de vista de programa (en qu\u00E8 es gasta) i econ\u00F2mic (com es gasta). Des del punt de vista de programa, els diners es poden destinar a pagar deute p\u00FAblic, serveis p\u00FAblics o actuacions de promoci\u00F3 social, entre d\\'altres. I des del punt de vista econ\u00F2mic, s\\'utilitzen per pagar despeses de personal, manteniment d\\'equipaments i serveis, despeses financeres o transfer\u00E8ncies a les entitats de la ciutat (subvencions) i a d\\'altres administracions.\",\"expenses_per_inhabitant\":\"La despesa per habitant va ser de ...\",\"expenses_types\":\"Tipus de despesa\",\"expenses_types_p1\":\"Com fa servir l\\'Ajuntament els diners del pressupost? Les despeses es poden classificar de dues maneres: des del punt de vista de programa (en qu\u00E8 es gasta) i econ\u00F2mic (com es gasta). La quantitat de diners \u00E9s la mateixa, per\u00F2 la veiem des de dos punts de vista diferents.\",\"financial_income\":\"Ingressos financers\",\"financial_income_p1\":\"Poden ser interessos de dip\u00F2sits bancaris, dividents d\u2019accions o productes financers i noves operacions d\u2019endeutament.\",\"functional\":\"Despesa per programa\",\"functional_p1\":\"\u00C9s la classificaci\u00F3 m\u00E9s explicativa: indica, per exemple, quants diners es gasta l\u2019Ajuntament en la gesti\u00F3 de residus o en instal\u00B7lacions esportives, per exemple. En un pressupost oficial les despeses s\u2019estructuren en \u00E0rees i aquestes es divideixen en diferents tipologies de pol\u00EDtiques (promoci\u00F3 de l\u2019activitat econ\u00F2mica, culturals, esportives, ocupacionals, etc.), i tamb\u00E9 en grups i programes. Aquest nivell de profunditat permet con\u00E8ixer amb detall on van els diners.\",\"functional_p2\":\"\",\"how_much_debt\":\"Quant deu el municipi?\",\"how_much_debt_p1\":\"El deute viu d\\'un municipi indica el que deu l\\'Ajuntament a bancs i altres entitats financeres. Cal no confondre\u2019l amb el total del d\u00E8ficit del municipi (la difer\u00E8ncia entre els ingressos i les despeses).\",\"how_much_debt_p2\":\"\",\"how_much_debt_p3\":\"\",\"how_to_read\":\"Com es llegeix?\",\"how_to_read_p1_html\":\"Tots els pressupostos municipals tenen la mateixa estructura, definida legalment en l\\'\\\\u003ca href=\\\\\"https://www.boe.es/buscar/doc.php?id=BOE-A-2008-19916\\\\\"\\\\u003eOrdre EHA / 3565/2008\\\\u003c/a\\\\u003e. L\\'estructura b\u00E0sica \u00E9s senzilla: es divideix en ingressos i despeses. \u00C9s a dir, respon a les preguntes: d\\'on surten els diners? (ingressos) i en qu\u00E8 es gasten? (despeses).\",\"income\":\"Ingressos\",\"income_1_desc\":\"Graven la font de la renda, els fruits del patrimoni o d\\'una activitat econ\u00F2mica. Per exemple, l\u2019Impost de B\u00E9ns Immobles (IBI).\",\"income_2_desc\":\"Recull els ingressos derivats de la recaptaci\u00F3 d\u2019impostos per a la realitzaci\u00F3, dins del terme municipal, de qualsevol construcci\u00F3, instal\u00B7laci\u00F3 i obra.\",\"income_3_desc\":\"Imports que cobra l\\'Ajuntament per oferir serveis, com la taxa per la gesti\u00F3 dels residus,  els preus p\u00FAblics per serveis com escoles bressol, escola de m\u00FAsica, serveis d\\'atenci\u00F3 domiciali\u00E0ria, esportius, etc.\",\"income_4_desc\":\"Diners que l\\'Ajuntament rep de l\\'Estat, la Generalitat, la Diputaci\u00F3 de Barcelona, l\\'\u00C0rea Metropolitana de Barcelona i empreses privades (en alguns ajuntaments).\",\"income_5_desc\":\"Rendes de patrimoni del municipi. S\u00F3n els beneficis sobre b\u00E9ns que no es destinen a servei p\u00FAblic. Per exemple, els c\u00E0nons derivats de concessions, com la piscina, el tanatori, etc.\",\"income_6_desc\":\"Venda de solars i finques r\u00FAstiques.\",\"income_7_desc\":\"Ingressos procedents de qualsevol administraci\u00F3 p\u00FAblica o entitat destinats a finan\u00E7ar despeses de capital (solars o finques).\",\"income_8_desc\":\"S\u00F3n fiances o dip\u00F2sits.\",\"income_9_desc\":\"Cr\u00E8dits sol\u00B7licitats a bancs o a d\u2019altres entitats privades.\",\"income_p1\":\"Els ingressos es divideixen segons la seva naturalesa econ\u00F2mica, \u00E9s a dir, d\\'on venen els diners: a trav\u00E9s d\\'impostos, transfer\u00E8ncies d\\'altres administracions, taxes i preus p\u00FAblics o b\u00E9 de la gesti\u00F3 per tercers del patrimoni municipal. I tamb\u00E9 es divideixen segons la forma, \u00E9s a dir, si \u00E9s un cr\u00E8dit bancari, una propietat municipal que s\\'ha venut o un impost.\",\"income_p2\":\"En %{year} es van ingressar...\",\"intro_p1\":\"L\u2019equip de govern dissenya el pressupost i el redacta amb els serveis econ\u00F2mics. Posteriorment s\u2019informa i es treballa amb tots els grups municipals. En paral\u00B7lel s\u2019informa la ciutadania i les entitats en un acte p\u00FAblic i per \u00FAltim es presenta al ple municipal per al seu debat i aprovaci\u00F3.\",\"intro_p2\":\"Un cop aprovat al ple s\u2019obre un per\u00EDode de quinze dies perqu\u00E8 la ciutadania i els grups municipals facin al\u00B7legacions. Tot seguit, si no es produeixen al\u00B7legacions, queda aprovat definitivament.\",\"intro_p3\":\"Perqu\u00E8 el pressupost estigui vigent l\u20191 de gener ha de quedar aprovat definitivament abans del 31 de desembre de l\\'any anterior, si no es prorroga de forma autom\u00E0tica el de l\u2019any anterior.\",\"regular_income\":\"Ingressos corrents\",\"regular_income_p1\":\"Els impostos, els diners que les administracions transfereixen a cada municipi, i taxes i preus p\u00FAblics que recapta l\\'Ajuntament s\u00F3n els m\u00E9s habituals.\",\"sources\":\"Fonts\",\"sources_p1_html\":\"Per elaborar aquesta guia hem pres com a refer\u00E8ncia l\\'estructura oficial d\\'un pressupost municipal, definida a la \\\\u003ca href=\\\\\"https://www.boe.es/buscar/doc.php?id=BOE-A-2008-19916\\\\\"\\\\u003eOrdre EHA / 3565/2008\\\\u003c/a\\\\u003e i ens hem inspirat en altres documents com \\\\u003ca href=\\\\\"http://www.ocmcartagena.org/files/archive/Entendiendo-un-presupuesto-municipal.pdf\\\\\"\\\\u003eEntenent un pressupost municipal\\\\u003c/a\\\\u003e i \\\\u003ca href=\\\\\"https://docs.google.com/presentation/d/1oysDrJvlFxP0sKlzBalxvrV3lzSE5OCSKY7qd5yYpcA/pub?start=false\\\\u0026loop=false\\\\u0026delayms=3000\\\\u0026slide=id.p\\\\\"\\\\u003eGuia d\\'introducci\u00F3 als pressupostos municipals\\\\u003c/a\\\\u003e .\",\"title\":\"Com funciona un pressupost municipal\",\"types_income\":\"Tipus d\\'ingr\u00E9s\",\"types_income_p1\":\"Els ingressos tal com estableix la llei es divideixen en tres apartats:\",\"types_income_p2\":\"\",\"types_income_p3\":\"\"},\"index\":{\"at_a_glance\":\"Evoluci\u00F3 de la despesa i comparaci\u00F3\",\"at_years_end\":\"* a final del %{year}\",\"budget_guide\":\"Llegeix la Guia del Pressupost\",\"budget_lines_block\":{\"intro\":\"Aquestes s\u00F3n les partides del pressupost m\u00E9s importants al teu municipi.\",\"title\":\"Partides del pressupost\"},\"budget_receipt\":{\"intro\":\"Descobreix a qu\u00E8 es dediquen les teves aportacions\",\"title\":\"El rebut dels meus impostos\"},\"budget_slides\":{\"slide_1\":\"Gasto en asistencia social por habitante\",\"title\":\"Els pressupostos d\\'un cop d\\'ull\"},\"budgets_comparision\":{\"button\":\"Comparar\",\"text\":\"Compara el pressupost del %{site} amb el dels altres municipis des de\"},\"category_percentage\":\"Percentatge\",\"category_value\":\"Quantitat\",\"context\":\"Context\",\"data_of_year\":\"* dades del %{year}\",\"debt\":\"Deute\",\"debt_tooltip\":\"Deute del sector d\u2019administracions p\u00FAbliques %{of_the_organization_name}\",\"description\":\"En aquesta p\u00E0gina pots con\u00E8ixer la distribuci\u00F3 del pressupost, l\\'estat d\\'execuci\u00F3 de cada partida i com ha evolucionat la despesa per habitant\",\"executed\":\"Execuci\u00F3 del pres. actual\",\"executed_percent\":\"%{percentage}% del pressupost actual\",\"executed_percent_other_year_html\":\"El %{year} va ser un %{link}\",\"executed_tooltip\":\"Despesa executada respecte el pressupost actual (pressupost inicial m\u00E9s modificacions)\",\"execution_block\":{\"button\":\"Consulta l\\'execuci\u00F3 al complet\",\"expense\":\"Despesa\",\"income\":\"Ingressos\",\"intro\":\"Aix\u00ED s\\'est\u00E0 executant el pressupost municipal.\",\"last_update\":\"Darrera actualitzaci\u00F3: %{date}.\",\"title\":\"Execuci\u00F3\"},\"expenses\":\"Despeses\",\"expenses_per_inhabitant\":\"Despesa per habitant\",\"expenses_per_inhabitant_tooltip\":\"Pressupost inicial dividit pel nombre d\u2019habitants\",\"expenses_per_inhabitant_updated\":\"Pres. per hab. actual\",\"header\":\"Pressupostos\",\"in_total\":\"En total\",\"income\":\"Ingressos\",\"income_per_inhabitant\":\"Ingressos per habitant\",\"income_per_inhabitant_tooltip\":\"Pressupost inicial dividit pel nombre d\u2019habitants\",\"inhabitants\":\"Habitants\",\"inhabitants_tooltip\":\"Nombre d\u2019habitants\",\"initial_estimate\":\"sobre el pres. inicial\",\"initial_estimate_per_inhabitant\":\"sobre el pres. inicial per hab.\",\"less\":\"menys\",\"level_1_category\":\"Categoria nivell 1\",\"level_2_category\":\"Categoria nivell 2\",\"main_budget_levels_legend_down\":\"Han baixat\",\"main_budget_levels_legend_one\":\"Canvi entre aquest any\",\"main_budget_levels_legend_two\":\"i el passat\",\"main_budget_levels_legend_up\":\"Han pujat\",\"main_budget_levels_per_inhabitant\":\"per habitant\",\"main_budget_levels_timeline\":\"Compara despeses i ingressos any per any\",\"main_budget_levels_tooltip_article\":\"des de\",\"main_budget_levels_tooltip_down\":\"Ha baixat un\",\"main_budget_levels_tooltip_up\":\"Ha pujat un\",\"main_budget_lines\":\"Els principals ingressos i despeses %{from_your_organization_name}\",\"main_budget_lines_expense\":\"Despeses\",\"main_budget_lines_income\":\"Ingressos\",\"more\":\"m\u00E9s\",\"most_interesting_budget_lines\":\"Despeses que m\u00E9s t\\'interessen\",\"most_interesting_budget_lines_description\":\"Et mostrem algunes de les partides que m\u00E9s afecten en el dia a dia de la ciutadania. Tamb\u00E9 pots consultar l\\'explorador complet.\",\"not_available_short\":\"No disp.\",\"note_about_the_data\":\"Nota sobre les dades\",\"note_about_the_data_title\":\"La base de dades que utilitzem no inclou dades per al 100% dels municipis, aix\u00ED que les mitjanes estan calculades amb les dades que existeixen (que s\u00F3n la gran majoria). M\u00E9s informaci\u00F3 a les nostres preguntes freq\u00FCents.\",\"per_person\":\"Per habitant\",\"planned_vs_executed_other_year_html\":\"En %{year} va ser un %{link}\",\"search_for_a_budget_line\":\"Cerca una partida\",\"see_all\":\"Veure tots\",\"stories_header\":\"T\\'expliquem el pressupost\",\"story_1\":{\"lede\":\"Et contem quines s\u00F3n les prioritats pressupuest\u00E0ries per al 2017 segons les quals hem articulat el pla econ\u00F2mic.\",\"title\":\"Actuacions de car\u00E0cter general\"},\"story_2\":{\"lede\":\"Et contem quines s\u00F3n les prioritats pressupuest\u00E0ries per al 2017 segons les quals hem articulat el pla econ\u00F2mic.\",\"title\":\"Pressupostos i medi ambient\"},\"story_3\":{\"lede\":\"Et contem quines s\u00F3n les prioritats pressupuest\u00E0ries per al 2017 segons les quals hem articulat el pla econ\u00F2mic.\",\"title\":\"Potenciant l\\'esport\"},\"title\":\"Pressupostos municipals de %{place} - %{year}\",\"top_expense_category\":\"Categoria\",\"top_expense_value\":\"Quantitat\",\"top_income_category\":\"Categoria\",\"top_income_value\":\"Quantitat\",\"total_expenses\":\"Despesa total\",\"total_expenses_tooltip\":\"Pressupost inicial de despesa\",\"total_expenses_updated\":\"Pressupost actual\",\"visualize\":\"Visualitza les despeses per habitant o el total\"}},\"budgets_elaboration\":{\"index\":{\"at_a_glance\":\"Evoluci\u00F3 de la despesa i comparaci\u00F3\",\"auto_funding\":\"Capacitat d\\'autofinan\u00E7ament\",\"auto_funding_tooltip\":\"Percentatge dels ingressos fiscals respecte als ingressos corrents\",\"by_custom_category\":\"per \u00E0rea\",\"by_economic_expense\":\"en qu\u00E8 es gasta\",\"by_economic_income\":\"en qu\u00E8 s\\'ingressa\",\"by_functional_expense\":\"per a qu\u00E8\",\"category_percentage\":\"% s/ Total\",\"category_value\":\"Quantitat\",\"context\":\"Context\",\"debt_level\":\"Nivell d\\'endeutament\",\"debt_level_tooltip\":\"Necessitat de financiaci\u00F3 external pera a poder pagar despeses, una vegada utilizats els recursos tributaris i subvencions i transfer\u00E8ncies\",\"description\":\"L\\'equip de govern publica l\u2019esborrany del pressupost del pr\u00F2xim exercici per compartir en obert amb l\\'oposici\u00F3 i els ve\u00EFns i ve\u00EFnes. Entre tots i totes podem elaborar el pressupost m\u00E9s adient per a %{place_name}.\",\"diff_previous\":\"vs. anterior\",\"expenses_per_inhabitant\":\"Despesa per habitant\",\"expenses_per_inhabitant_tooltip\":\"Pressupost inicial dividit pel nombre d\\'habitants\",\"explore_the_detail\":\"Explora el detall\",\"header\":\"Tramitaci\u00F3 del pressupost %{year}\",\"in_total\":\"En total\",\"income_per_inhabitant\":\"Ingressos per habitant\",\"income_per_inhabitant_tooltip\":\"Pressupost inicial dividit pel nombre d\u2019habitants\",\"main_budget_levels_timeline\":\"Compara despeses i ingressos any per any\",\"main_budget_lines\":\"Els principals ingressos i despeses %{from_your_organization_name}\",\"main_budget_lines_expense\":\"Despeses\",\"main_budget_lines_income\":\"Ingressos\",\"metric_boxes_data\":\"Les dades\",\"metric_boxes_data_description\":\"Aix\u00ED canviar\u00E0 el pressupost del proper exercici\",\"net_savings\":\"Estalviament net\",\"net_savings_tooltip\":\"Ingressos corrents menys despeses corrents i despeses financieres\",\"next_year_proposal\":\"Proposta per al %{year}\",\"no_data\":\"Ni ha dades per a aquesta classificaci\u00F3\",\"note_about_the_data\":\"Nota sobre les dades\",\"note_about_the_data_title\":\"La base de dades que utilitzem no inclou dades per al 100% dels municipis, aix\u00ED que les mitjanes estan calculades amb les dades que existeixen (que s\u00F3n la gran majoria). M\u00E9s informaci\u00F3 a les nostres preguntes freq\u00FCents.\",\"per_person\":\"Per habitant\",\"proposal\":\"Proposta\",\"total_expenses\":\"Despesa total\",\"total_expenses_tooltip\":\"Pressupost inicial\",\"total_income\":\"Ingr\u00E9s total\",\"total_income_tooltip\":\"Pressupost inicial d\\'ingressos\",\"visualize\":\"Visualitza la despesa per habitant o total\"}},\"budgets_execution\":{\"execution_table\":{\"deviation\":\"Desviaci\u00F3\",\"executed\":\"Executat\",\"planned\":\"Pres.\",\"view_less\":\"Veure menys\",\"view_more\":\"Veure m\u00E9s\"},\"index\":{\"budget_guide\":\"Consulta la Guia del pressupost\",\"budget_lines_expense_higher\":\"Partides de despeses molt superiors al pressupost\",\"budget_lines_expense_lower\":\"Partides de despeses molt inferiors al pressupost\",\"budget_lines_income_higher\":\"Partides d\\'ingressos molt superiors al pressupost\",\"budget_lines_income_lower\":\"Partides d\\'ingressos molt inferiors al pressupost\",\"category\":\"Categoria\",\"custom_button\":\"Personalitzada\",\"description\":\"L\\'execuci\u00F3 fa refer\u00E8ncia a les despeses finals comparades amb el pressupost inicial actualitzat. Hi poden haver canvis, perqu\u00E8 \u00E9s impossible preveure totes les despeses amb precisi\u00F3 absoluta\",\"economic\":\"Econ\u00F2mica\",\"economic_button\":\"En qu\u00E8 es gasta\",\"euros\":\"En euros\",\"execution_disclaimer\":\"Es normal que hi haja desviacions ja que \u00E9s impossible preveure totes les despeses amb precisi\u00F3 absoluta.\",\"execution_help\":\"L\\'execuci\u00F3 es la quantitat que finalment s\\'ha gastat sobre el pressupost inicial actualitzat.\",\"expenses_executed\":\"Despeses executades\",\"expenses_planned\":\"Despeses pressupostades\",\"functional\":\"Funcional\",\"functional_button\":\"Per a qu\u00E8 es gasta\",\"higher_execution\":\"M\u00E9s execuci\u00F3\",\"income_executed\":\"Ingressos executats\",\"income_planned\":\"Ingressos pressupostats\",\"initial_estimate\":\"Pressupost inicial\",\"initial_estimate_per_inhabitant\":\"Pressupost inicial per habitant\",\"lower_execution\":\"Menys execuci\u00F3\",\"metric\":{\"execution\":{\"expenses_title\":\"Execuci\u00F3 de despeses\",\"income_title\":\"Execuci\u00F3 d\\'ingressos\",\"previous_execution_message\":\"El %{year} l\\'execuci\u00F3 va ser del %{percentage}\"}},\"percentage\":\"Percentatge\",\"sort\":\"Ordre\",\"title\":\"Execuci\u00F3 pressupost\u00E0ria\",\"tooltip_disclaimer\":\"\\\\u003cstrong\\\\u003eAquesta \u00E9s una aproximaci\u00F3\\\\u003c/strong\\\\u003e. \\\\u003cbr /\\\\u003e Al llarg de l\\'any sorgeixen imprevistos que canvien la quantitat o la finalitat de les despeses o ingressos.\",\"value\":\"Valor\",\"vis\":{\"absolute\":\"Execuci\u00F3 en \u20AC\",\"empty_lines\":\"No hi ha dades disponibles per aquesta classificaci\u00F3 en aquest any. Per favor, selecciona un altre filtrat.\",\"expenses\":{\"title\":\"L\\'estat de l\\'execuci\u00F3 de les despeses\"},\"income\":{\"title\":\"L\\'estat de l\\'execuci\u00F3 dels ingressos\"},\"lines_title\":\"Partides pressupost\u00E0ries\",\"percent\":\"% de progr\u00E9s\",\"percent_log\":\"% de progr\u00E9s (log)\",\"tooltip\":\"S\\'ha executat un\",\"tooltip_budgeted\":\"Pressupostat inicial\",\"tooltip_budgeted_updated\":\"Pressupostat actualitzat\",\"tooltip_executed_amount\":\"Import executat\"}},\"widget_template_deviation\":{\"expense\":\"Despeses\",\"income\":\"Ingressos\",\"planned\":\"pressupostat\",\"real\":\"reals\"}},\"common\":{\"budget_line_description_html\":\"Aquesta partida compr\u00E8n les %{kind_what} en %{description}. Si vols saber m\u00E9s sobre aquesta partida pots consultar la partida pare: %{link}\",\"expense\":\"despesa\",\"expenses\":\"despeses\",\"income\":\"ingr\u00E9s\",\"incomes\":\"ingressos\"},\"events\":{\"gobierto_budgets_budgets_updated\":\"Pressuposts actualitzats\"},\"exports\":{\"budget_lines_description\":\"Compara despeses i ingressos any per any\",\"budget_lines_title\":\"Partides del pressupost\",\"invoices_description\":\"Dades per any\",\"invoices_title\":\"Prove\u00EFdors i Factures\"},\"featured_budget_lines\":{\"gobierto_site_template\":{\"how_much_place_in\":\"Quant es gasta %{place} en...\",\"last_year\":\"L\\'any passat vam gastar\",\"per_person\":\"Per habitant\",\"show_me_another\":\"Mostra\\'m un altre exemple\",\"title\":\"Algunes despeses destacades\",\"total\":\"Despesa total\"}},\"feedback\":{\"ask_more_information\":{\"ask_for_feedback\":\"Escriu el teu email per a que %{your_organization_name} et puga contestar\",\"send\":\"Enviar\",\"your_email\":\"El teu correu\"},\"follow\":{\"follow\":\"Seguir\",\"your_email\":\"El teu correu\"},\"follow_success\":{\"error\":\"Pareix que el correu introduit no es v\u00E0lid. Per favor revisa-ho\",\"share\":\"Vols compartir aquestes dades en\",\"share_text\":\"Informat i opina sobre el pressupost de %{place_name}\",\"success\":\"Molt b\u00E9! Revisa el teu correu i fes click en el enlla\u00E7 que t\\'hem enviat\"},\"step1\":{\"answer1_0\":\"Si\",\"answer1_1\":\"No\",\"understand\":\"Entens de qu\u00E8 va aquesta partida?\"},\"step2_no\":{\"answer_html\":\"El \\\\u003cstrong\\\\u003e%{datum}\\\\u003c/strong\\\\u003e de persones han dit que \\\\u003cstrong\\\\u003eNo entenen de qu\u00E8 va aquesta partida\\\\u003c/strong\\\\u003e\",\"ask\":\"Pots demanar ampliar la informaci\u00F3 sobre aquesta i altres partides\"},\"step2_yes\":{\"option1_html\":\"Em sembla \\\\u003cspan\\\\u003ePOC\\\\u003c/span\\\\u003e\",\"option2_html\":\"Em sembla \\\\u003cspan\\\\u003eAPROPIAT\\\\u003c/span\\\\u003e\",\"option3_html\":\"Em sembla \\\\u003cspan\\\\u003eMOLT\\\\u003c/span\\\\u003e\",\"question\":\"Creus que la quantitat de despesa es apropiada?\"},\"step3\":{\"option1\":\"Poc\",\"option2\":\"Apropiat\",\"option3\":\"Molt\",\"thanks\":\"Gr\u00E0cies por la teva opini\u00F3. Aix\u00F2 es el que pensa la resta de la gent:\"}},\"feedback_mailer\":{\"new_feedback_request\":{\"body\":\"Has rebut una nova petici\u00F3 d\\'informaci\u00F3 per a la partida %{budget_line_name} (%{year}) d\\'una persona amb el email %{person_email}.\",\"body_budgets\":\"Has rebut una nova petici\u00F3 d\\'informaci\u00F3 per al pressupostos del teu municipi d\\'una persona amb el email %{person_email}.\",\"subject\":\"Has rebut una nova petici\u00F3 d\\'informaci\u00F3\"}},\"indicators\":\"Indicadors\",\"indicators_intro\":\"Coneix els pressupostos de %{place} a partir de les principals xifres: estalvi brut, inversi\u00F3 per habitant o finan\u00E7ament d\\'inversions.\",\"invoices\":{\"show\":{\"empty\":\"Cap filtre t\u00E9 dades.\",\"fromto\":\"De a N\u00BA Fact.\",\"invoiced\":\"Import facturat\",\"more\":\"M\u00E9s de\",\"table\":{\"fields\":{\"date\":\"Data\",\"paid\":\"Pagat\",\"payment_date\":\"Data de pagament\",\"payment_date_limit\":\"Data prevista de pagament\",\"provider_id\":\"NIF\",\"provider_name\":\"Prove\u00EFdor\",\"subject\":\"Concepte\",\"value\":\"Quantitat\"},\"pager\":{\"first\":\"Primer\",\"format\":\"P\u00E0gines %{tpl} de %{tpl2}\",\"last\":\"\u00DAltim\",\"next\":\"Seg\u00FCent\",\"prev\":\"Anterior\"}}}},\"layouts\":{\"application\":{\"budgets\":\"Pressupostos\"},\"menu_subsections\":{\"data\":\"Dades\",\"elaboration\":\"Elaboraci\u00F3\",\"execution\":\"Execuci\u00F3\",\"guide\":\"Guia\",\"indicators\":\"Indicadors\",\"providers\":\"Prove\u00EFdors i Factures\",\"receipt\":\"Rebut\"}},\"providers\":{\"index\":{\"all_invoices\":\"Totes les factures\",\"amount_distribution\":\"Distribuci\u00F3 per imports\",\"and_more_html\":\"i \\\\u003cspan id=\\\\\"providers-number\\\\\"\\\\u003e\\\\u003c/span\\\\u003e prove\u00EFdors m\u00E9s\",\"are_from\":\"s\u00F3n de\",\"check_detail\":\"Consulta el detall\",\"corporation_sa\":\"societats an\u00F2nimes\",\"corporation_sl\":\"societats limitades i altres\",\"description\":\"A quins prove\u00EFdors contracta %{the_organization_name}? Quines factures paga? Des d\\'aquesta secci\u00F3 podr\u00E0s consultar i revisar el detall de cadascun dels pagaments que realitza %{the_organization_name}.\",\"freelances\":\"aut\u00F2noms\",\"invoices\":\"Factures\",\"invoices_from_which\":\"De les quals\",\"invoices_sum\":\"factures sumen un total de\",\"largest_provider_html\":\"El major prove\u00EFdor suposa un \\\\u003cspan id=\\\\\"largestProvider\\\\\"\\\\u003e\\\\u003c/span\\\\u003e de tota la facturaci\u00F3\",\"last_12_months\":\"\u00DAltims 12 mesos\",\"last_3_months\":\"\u00DAltims 3 mesos\",\"less_than_1000_html\":\"El \\\\u003cspan id=\\\\\"lessThan1000\\\\\"\\\\u003e\\\\u003c/span\\\\u003e de les factures s\u00F3n menors de 1.000 \u20AC\",\"loading\":\"Carregant...\",\"main_providers\":\"Principals prove\u00EFdors\",\"mean_amount\":\"import mig\",\"mean_and_median\":\"Mitjana i mediana\",\"mean_and_median_summary\":\"\u00C9s a dir, la meitat de les factures s\u00F3n d\\'aquest import o inferior\",\"mean_summary\":\"Import resultant de sumar els imports de totes les factures dividit pel nombre de factures\",\"median_amount\":\"mediana dels imports\",\"months_distribution\":\"Distribuci\u00F3 per mesos\",\"percentile_10_html\":\"El \\\\u003cspan id=\\\\\"percentile10\\\\\"\\\\u003e\\\\u003c/span\\\\u003e de les factures concentren el 10 % de la facturaci\u00F3\",\"percentile_50_html\":\"El \\\\u003cspan id=\\\\\"percentile50\\\\\"\\\\u003e\\\\u003c/span\\\\u003e de les factures concentren el 50 % de la facturaci\u00F3\",\"previous\":\"Anteriors\",\"sum_amount\":\"IMPORT ACUMULAT\",\"this_year\":\"Aquest any\",\"view_data_from\":\"Veure les dades de\"}},\"receipts\":{\"show\":{\"description\":\"Part del pressupost del teu municipi es finan\u00E7a directament d\\'impostos i taxes locals. Calcula quant aportes tu al pressupost d\\'acord a la teva casa, vehicles...\",\"detail\":\"Detall de la teva contribuci\u00F3\",\"explanation\":\"Introdueix les quantitats que has pagat per a cadascun dels conceptes en\",\"pick_to_calculate\":\"Selecciona per calcular\",\"share\":\"Comparteix-ho\",\"share_text\":\"Comprova com \u00E9s la teva aportaci\u00F3 al pressupost de d\\'\",\"title\":\"Quina es la teva contribuci\u00F3 al pressupost de %{site_name}?\",\"your_contribution\":\"La teva contribuci\u00F3 als pressupostos de %{site_name}\"}},\"shared\":{\"data_updated_at\":{\"last_update\":\"\u00DAltima actualitzaci\u00F3\"},\"enough_information\":{\"enough_information\":\"Hi ha prou informaci\u00F3?\",\"enough_information_cta\":\"Demana m\u00E9s informaci\u00F3\",\"enough_information_desc\":\"Si trobes que cal incloure m\u00E9s informaci\u00F3 per tenir una visi\u00F3 m\u00E9s completa, comunica-ho i et respondrem\"}},\"visualizations\":{\"G_custom\":\"Despeses per \u00E0rea\",\"G_economic\":\"En qu\u00E8 es gasta\",\"G_functional\":\"Per a qu\u00E8 es gasta\",\"I_custom\":\"Ingressos per \u00E0rea\",\"I_economic\":\"En qu\u00E8 s\\'ingressa\",\"category_per_inhabitant\":\"%{category} per habitant\",\"expenses_per_inhabitant\":\"Despesa per habitant\",\"expenses_per_inhabitant_updated\":\"Despesa per habitant actual\",\"inhabitant_short\":\"hab\",\"mean_autonomy\":\"Mitjana auton\u00F2mica\",\"mean_national\":\"Mitjana estatal\",\"mean_province\":\"Mitjana provincial\",\"previous_year_diff\":\"Canvi any anterior\",\"total_expenses\":\"Despesa total\"}},\"gobierto_calendars\":{\"calendar_integration\":{\"auth_error\":{\"message\":\"Les credencials del calendari no s\u00F3n v\u00E0lides.\"},\"error\":{\"message\":\"Hi ha hagut un problema sincronitzant el calendari.\"},\"timeout_error\":{\"message\":\"El temps de connexi\u00F3 al servidor de calendaris ha expirat.\"}},\"events\":{\"gobierto_calendars_event_published\":\"%{subject_name}\",\"gobierto_calendars_event_updated\":\"%{subject_name}\"},\"fullcalendar\":{\"day\":\"Dia\",\"list\":\"Llista\",\"month\":\"Mes\",\"today\":\"Avui\",\"week\":\"Setmana\"}},\"gobierto_cms\":{\"events\":{\"gobierto_cms_page_created\":\"P\u00E0gina creada\",\"gobierto_cms_page_published\":\"P\u00E0gina publicada\",\"gobierto_cms_page_updated\":\"P\u00E0gina actualitzada\",\"gobierto_cms_section_created\":\"Secci\u00F3 creat\",\"gobierto_cms_section_item_created\":\"P\u00E0gina afegida a una secci\u00F3\",\"gobierto_cms_section_item_deleted\":\"P\u00E0gina esborrada de secci\u00F3\",\"gobierto_cms_section_updated\":\"Secci\u00F3 actualitzada\"},\"pages\":{\"templates\":{\"page\":{\"documents\":\"Documents\"}}}},\"gobierto_common\":{\"dynamic_content\":{\"table_component\":{\"attachment\":\"Adjunt\",\"download\":\"Descarregar\",\"download_attachment\":\"Descarregar adjunt\",\"view_content\":\"Veure contingut\"}},\"events\":{\"gobierto_common_collection_created\":\"Col\u00B7lecci\u00F3 creat\",\"gobierto_common_collection_updated\":\"Col\u00B7lecci\u00F3 actualizat\",\"gobierto_common_term_created\":\"Terme creat\",\"gobierto_common_term_updated\":\"Terme actualitzat\"},\"visualizations\":{\"absolute\":\"Execuci\u00F3 en \u20AC\",\"adults\":\"Poblaci\u00F3 activa\",\"age\":\"Edat\",\"axis\":\"anys\",\"between_25_44\":\"Entre 25 i 44\",\"cards\":{\"active_pop\":{\"figure_first\":\"del total\",\"figure_second\":\"persones\",\"title\":\"Poblaci\u00F3 activa\"},\"births\":{\"country\":\"Mitjana estatal\",\"place\":\"%{place}\",\"province\":\"Mitjana provincial\",\"title\":\"Taxa de naixements\"},\"budget_by_inhabitant\":{\"title\":\"Pressupost per habitant\"},\"cars\":{\"title\":\"Cotxes per habitant\"},\"cars_tax\":{\"figure_first\":\"%{place}\",\"figure_second\":\"mitjana provincial\",\"title\":\"Impost a turismes\"},\"companies\":{\"title\":\"Empreses\"},\"construction_tax\":{\"figure_first\":\"%{place}\",\"figure_second\":\"mitjana provincial\",\"title\":\"Impost a les contruccions\"},\"contracts_comparison\":{\"figure_first\":\"temporals\",\"figure_second\":\"indefinits\",\"title\":\"Contractes en el darrer mes\"},\"contracts_sector\":{\"agriculture\":\"Agricultura\",\"construction\":\"Construcci\u00F3\",\"industry\":\"Ind\u00FAstria\",\"services\":\"Serveis\",\"title\":\"Contractes per sector\"},\"deaths\":{\"country\":\"Mitjana estatal\",\"place\":\"%{place}\",\"province\":\"Mitjana provincial\",\"title\":\"Taxa de defuncions\"},\"debt_by_inhabitant\":{\"title\":\"Deute per habitant\"},\"debt_level\":{\"title\":\"Nivell d\\'endeutament\"},\"economic_tax\":{\"title\":\"Impost a les activitats econ\u00F2miques\"},\"expenditure_rigidity\":{\"title\":\"Rigidesa de despesa\"},\"financial_charge\":{\"title\":\"C\u00E0rrega financera\"},\"financial_risk\":{\"title\":\"Risc financer\"},\"freelancers\":{\"title\":\"Aut\u00F3noms\"},\"frequency\":\"Actualitzaci\u00F3 %{type}\",\"gross_saving\":{\"title\":\"Estalvi brut\"},\"gross_savings_rate\":{\"title\":\"\u00CDndex d\\'estalvi brut\"},\"houses\":{\"figure_first\":\"familiars\",\"figure_second\":\"principals\",\"title\":\"Habitatge\"},\"ibi\":{\"first_column\":\"\",\"second_column\":\"Urb\u00E0ns\",\"third_column\":\"R\u00FAstics\",\"title\":\"Impost sobre els B\u00E9ns Immobles\"},\"income\":{\"first_column\":\"\",\"second_column\":\"Per habitant\",\"third_column\":\"Per llar\",\"title\":\"Renda municipal\"},\"income_overview\":{\"figure_first\":\"%{place}\",\"figure_second\":\"Espanya\",\"title\":\"Renda bruta\"},\"investment_by_inhabitant\":{\"title\":\"Inversi\u00F3 per habitant\"},\"investment_financing\":{\"title\":\"Finan\u00E7ament inversions\"},\"liability_cost\":{\"title\":\"Cost deute\"},\"meta\":{\"time\":\" al \",\"where\":\"A \"},\"net_saving\":{\"title\":\"Ahorro net\"},\"net_savings_rate\":{\"title\":\"\u00CDndex d\\'estalvi net\"},\"per_capita_investment\":{\"title\":\"Inversi\u00F3 per habitant\"},\"per_capita_tax_burden\":{\"title\":\"Pressi\u00F3 fiscal per habitant\"},\"population\":{\"title\":\"Habitants\"},\"self_financing_capacity\":{\"title\":\"Capacitat d\\'autofinan\u00E7ament\"},\"ss_members\":{\"title\":\"Afiliats a la Seguretat Social\"},\"tax_autonomy\":{\"title\":\"Autonomia fiscal\"},\"unemployed_sector\":{\"agriculture\":\"Agricultura\",\"construction\":\"Construcci\u00F3\",\"industry\":\"Ind\u00FAstria\",\"services\":\"Serveis\",\"title\":\"Desempleats per sector\"},\"updated\":\"Darrera actualitzaci\u00F3\"},\"country\":\"Espanya\",\"elderly\":\"Majors\",\"elderly_info\":\"El %{percent} de la poblaci\u00F3 t\u00E9 m\u00E9s de %{limit} anys\",\"empty_lines\":\"No hi ha dades disponibles per aquesta classificaci\u00F3 en aquest any. Per favor, selecciona un altre filtrat.\",\"frequency\":\"Actualitzaci\u00F3 %{type}\",\"gross_income\":\"Renda bruta\",\"increase\":\"Augmentar\",\"inhabitant_short\":\"hab\",\"inhabitants\":\"Habitants\",\"keep\":\"Mantindre\",\"label\":\"habitants\",\"less_25\":\"Menors de 25\",\"lines_title\":\"Partides pressupost\u00E0ries\",\"main_budget_levels_legend_down\":\"Han baixat\",\"main_budget_levels_legend_one\":\"Canvi entre aquest any\",\"main_budget_levels_legend_two\":\"i el passat\",\"main_budget_levels_legend_up\":\"Han pujat\",\"main_budget_levels_per_inhabitant\":\"per habitant\",\"main_budget_levels_tooltip_article\":\"des de\",\"main_budget_levels_tooltip_article_last\":\"des de l\\'anterior\",\"main_budget_levels_tooltip_down\":\"Ha baixat un\",\"main_budget_levels_tooltip_up\":\"Ha pujat un\",\"mean\":\"Edat mitja: %{age} anys\",\"mean_autonomy\":\"Mitjana auton\u00F2mica\",\"mean_national\":\"Mitjana estatal\",\"mean_province\":\"Mitjana provincial\",\"median\":\"Edat mitjana: %{age} anys\",\"men\":\"Homes\",\"million\":\"mili\u00F3\",\"mode\":\"Edat m\u00E9s com\u00FA: %{age} anys\",\"more_44\":\"M\u00E9s de 44\",\"percent\":\"% de progr\u00E9s\",\"percent_log\":\"% de progr\u00E9s (log)\",\"previous_year_diff\":\"Canvi any anterior\",\"project\":\"Projecte\",\"questions\":\"Preguntes\",\"reduce\":\"Reduir\",\"thousand\":\"mil\",\"time\":\" al \",\"title\":\"Riquesa i poblaci\u00F3 a la prov\u00EDncia\",\"tooltip\":\"S\\'ha executat un\",\"tooltip_budgeted\":\"Pressupostat inicial\",\"tooltip_budgeted_updated\":\"Pressupostat actualitzat\",\"tooltip_executed_amount\":\"Import executat\",\"unemployed\":\"Aturada\",\"where\":\"A \",\"women\":\"Dones\",\"youth\":\"Menors\",\"youth_info\":\"El %{percent} de la poblaci\u00F3 t\u00E9 menys de %{limit} anys\"},\"vue_components\":{\"block_header\":{\"all\":\"Totes\",\"none\":\"Cap\"},\"calendar\":{\"date\":\"Escolliu data\"},\"filters\":{\"clear\":\"Netejeu filtres\"},\"pagination\":{\"next\":\"Seg\u00FCent\",\"previous\":\"Anterior\"},\"read_more\":{\"less\":\"Vegeu-ne menys\",\"more\":\"Vegeu-ne m\u00E8s\"},\"table\":{\"customize_columns\":\"Personalitzeu columnes\",\"no_data\":\"No hi ha dades per a aquest criteri\"}}},\"gobierto_dashboards\":{\"available_cards\":\"Targetes disponibles\",\"back\":\"enrere\",\"changes\":\"Dashboard modificat\",\"date\":\"Data: \",\"default_title\":\"T\u00EDtol del dashboard\",\"delete\":\"Esborrar\",\"delete_dialog\":\"Desitjeu esborrar el dashboard?\",\"discard\":\"tancar sense guardar\",\"indicators_amount\":\"\u279E %{amount} indicadors\",\"instructions\":\"\\\\\"\u21E7 Selecciona un tipus de targeta i inclou-la en l\\'\u00E0rea central \u279E\\\\n\\\\nDespr\u00E9s podr\u00E0s configurar-la.\\\\\"\\\\n\",\"objective\":\"Objectiu\",\"percentage\":\"Consecuci\u00F3\",\"percentage_alt\":\"% consecuci\u00F3\",\"placeholder\":\"Escriu el t\u00EDtol de l\\'indicador o projecte\",\"public\":\"P\u00FAblic\",\"save\":\"Guardar\",\"select\":\"Selecciona l\\'indicador\",\"type\":\"Tipus\",\"value\":\"Aconseguit\",\"view_item\":\"Veure \u00EDtem\",\"widgets\":{\"html\":\"Contingut HTML\",\"indicator\":\"Indicador\",\"individual\":\"Individual\",\"table\":\"Taula\"}},\"gobierto_data\":{\"accessibility\":{\"editor\":\"Editor SQL\"},\"data_type\":{\"boolean\":\"boolean\",\"date\":\"data\",\"datetime\":\"data i hora\",\"decimal\":\"decimal\",\"hstore\":\"hstore\",\"integer\":\"enter\",\"jsonb\":\"jsonb\",\"string\":\"cadena\",\"text\":\"text\",\"time\":\"temps\",\"timestamp\":\"data i hora\",\"timestampz\":\"data i hora\"},\"events\":{\"gobierto_data_dataset_dataset_created\":\"Conjunt de dades creat\",\"gobierto_data_dataset_dataset_data_updated\":\"Dades de conjunt de dades actualitzats\",\"gobierto_data_dataset_dataset_deleted\":\"Conjunt de dades eliminat\",\"gobierto_data_dataset_dataset_updated\":\"Conjunt de dades actualitzat\"},\"layouts\":{\"application\":{\"gobierto_data\":\"Dades\"}},\"projects\":{\"all\":\"Totes\",\"buttonFork\":\"Feu clic per crear una versi\u00F3 d\\'aquesta consulta\",\"buttonQueries\":\"Vegeu consultes (c)\",\"buttonRecentQueries\":\"Vegeu consultes recents (r)\",\"buttonRunQuery\":\"Executeu consulta (CMD/WIN + Enter)\",\"cancel\":\"Cancel\u00B7leu\",\"categories\":\"Categories\",\"createCopy\":\"Crear una c\u00F2pia\",\"dashboards\":\"Dashboards\",\"data\":\"Dades\",\"dataset\":\"Conjunts de dades\",\"datasetUpdated\":\"Darrers datasets actualitzats\",\"deleteQuery\":\"Esteu segur que voleu suprimir aquesta consulta?\",\"deleteViz\":\"Esteu segur que voleu suprimir aquesta visualitzaci\u00F3?\",\"description\":\"Descripci\u00F3\",\"download\":\"Desc\u00E0rrega\",\"downloadData\":\"Descarregueu dades\",\"edit\":\"Editeu\",\"emptyRecentQueries\":\"No hi ha consultes recents\",\"favs\":\"Favorites\",\"frequency\":\"Freq\u00FC\u00E8ncia\",\"guide\":\"Guia per utilitzar l\\'editor SQL\",\"license\":\"Llic\u00E8ncia\",\"link\":\"Enlla\u00E7\",\"map\":\"Mapa\",\"modifiedQuery\":\"Consulta modificada\",\"modifiedVisualization\":\"Visualitzaci\u00F3 modificada\",\"numberOfRows\":\"Nombre de registres\",\"preview\":\"Previsualitzeu\",\"private\":\"Privat\",\"queries\":\"Consultes\",\"query\":\"Consulta\",\"queryEmpty\":\"Cap consulte disponible\",\"queryExecuted\":\"Consulta executada en\",\"queryName\":\"Nom consulta\",\"recents\":\"Recents\",\"records\":\"Registres\",\"resetQuery\":\"Restablir la consulta\",\"resetViz\":\"Restablir la visualitzaci\u00F3\",\"resources\":\"Recursos\",\"revert\":\"Revertir\",\"runQuery\":\"Executeu consulta\",\"save\":\"Deseu\",\"savedQuery\":\"Consulta desada\",\"savedVisualization\":\"Visualitzaci\u00F3 desada\",\"sets\":\"Conjunts\",\"showAll\":\"Vegeu-ho tot\",\"showLess\":\"Vegeu-ne menys\",\"sourceDataset\":\"Font\",\"sourceDatasetUrl\":\"Font url\",\"subject\":\"Tema\",\"summary\":\"Resum\",\"updated\":\"Actualizat\",\"visEmpty\":\"Cap visualitzaci\u00F3 disponible\",\"visName\":\"Nom visualitzaci\u00F3\",\"visPrivate\":\"Les teves visualitzacions\",\"visPublic\":\"Totes\",\"visualizations\":\"Visualitzacions\",\"visualize\":\"Visualitzar\",\"yourQueries\":\"Les teves consultes\"}},\"gobierto_exports\":{\"exports\":{\"index\":{\"no_submodules\":\"No hi ha cap subm\u00F2dul actiu\",\"subtitle\":\"Des d\\'aquesta p\u00E0gina pots descarregar en format reutilitzable el contingut d\\'aquesta web\",\"title\":\"Descarrega dades\"}}},\"gobierto_indicators\":{\"events\":{\"gobierto_indicators_indicator_updated\":\"Indicator actualitzat\"},\"indicators\":{\"gci\":{\"gci_description\":\"Els indicadors GCI (Global City Indicators), que reflecteixen la qualitat de vida de la ciutat, els defineix el Banc Mundial , associaci\u00F3 amb el prop\u00F2sit de combatre la pobresa i recolzar el desenvolupament. Els indicadors poden variar segons l\u2019any seleccionat.\",\"gci_title\":\"Indicadors GCI\",\"title\":\"Indicadors %{year}\"},\"ip\":{\"ip_description\":\"Infoparticipa \u00E9s un projecte desenvolupat per el LPCCP, des de l\\'any 2012, l\\'objectiu \u00E9s avaluar la informaci\u00F3 que es publica als webs de les administracions p\u00FAbliques per promoure que millori la seva transpar\u00E8ncia i qualitat.\",\"ip_title\":\"Indicadors Infoparticipa\",\"title\":\"Indicadors %{year}\"},\"ita\":{\"ita_description\":\"Els indicadors ITA (\u00CDndex de Transpar\u00E8ncia dels Ajuntaments) s\u00F3n una eina que l\\'organitzaci\u00F3 no governamental Transpar\u00E8ncia Internacional posa a disposici\u00F3 dels ajuntaments espanyols per mesurar el seu nivell de transpar\u00E8ncia. Avaluen la gesti\u00F3 realitzada per l\u2019ajuntament d\u2019una ciutat a trav\u00E9s d\\'un conjunt integrat de 80 indicadors agrupat en diverses \u00E0rees.\",\"ita_title\":\"Indicadors ITA\",\"title\":\"Indicadors %{year}\"},\"shared\":{\"latest_update_html\":\"\\\\u003cstrong\\\\u003eDarrera actualitzaci\u00F3:\\\\u003c/strong\\\\u003e %{date}\"},\"template\":{\"calculation\":\"C\u00E0lcul\",\"false\":\"no es compleix\",\"methodology\":\"Metodologia\",\"more\":\"M\u00E9s informaci\u00F3\",\"source\":\"Font\",\"true\":\"es compleix\"}},\"layouts\":{\"application\":{\"indicators\":\"Indicadors\"},\"navigation\":{\"sub\":{\"gci\":\"Indicadors GCI\",\"ip\":\"Indicadors Infoparticipa\",\"ita\":\"Indicadors ITA\"}}}},\"gobierto_investments\":{\"events\":{\"gobierto_investments_project_project_created\":\"Projecte d\\'inversi\u00F3 creat\",\"gobierto_investments_project_project_updated\":\"Projecte d\\'inversi\u00F3 actualitzat\"},\"layouts\":{\"application\":{\"investments\":\"Inversions\",\"investments_paragraph\":\"Consulta els projectes que t\u00E9 en marxa l\\'Ajuntament, els que comen\u00E7aran properament, i els plans a mig termini. Detall sobre el pla anual d\\'inversions i mecanismes de seguiment de les obres en marxa.\"}},\"projects\":{\"back\":\"vegeu-ho tot\",\"description\":\"Descripci\u00F3\",\"detail_title\":\"Detall del projecte\",\"empty\":\"Sense resultats\",\"exit\":\"Sortir\",\"gallery\":\"Galeria\",\"list\":\"Llista\",\"loading\":\"Carregant dades...\",\"map\":\"Mapa\",\"project\":{\"one\":\"%{count} projecte\",\"other\":\"%{count} projectes\"},\"reset\":\"Netejeu filtres\",\"see\":\"Vegeu-ho de nou\",\"showall\":\"Vegeu-ho tot\",\"showless\":\"Vegeu-ne menys\",\"summary\":\"Resum per estats\",\"tech_sheet\":\"Fitxa t\u00E8cnica\",\"tour\":\"Tour virtual\"}},\"gobierto_observatory\":{\"cards\":{\"active_pop\":{\"figure_first\":\"del total\",\"figure_second\":\"persones\",\"title\":\"Poblaci\u00F3 activa\"},\"births\":{\"country\":\"Mitjana estatal\",\"place\":\"%{place}\",\"province\":\"Mitjana provincial\",\"title\":\"Taxa de naixements\"},\"budget_by_inhabitant\":{\"title\":\"Pressupost per habitant\"},\"cars\":{\"title\":\"Cotxes per habitant\"},\"cars_tax\":{\"figure_first\":\"%{place}\",\"figure_second\":\"mitjana provincial\",\"title\":\"Impost a turismes\"},\"companies\":{\"title\":\"Empreses\"},\"construction_tax\":{\"figure_first\":\"%{place}\",\"figure_second\":\"mitjana provincial\",\"title\":\"Impost a les contruccions\"},\"contracts_comparison\":{\"figure_first\":\"temporals\",\"figure_second\":\"indefinits\",\"title\":\"Contractes en el darrer mes\"},\"contracts_sector\":{\"agriculture\":\"Agricultura\",\"construction\":\"Construcci\u00F3\",\"industry\":\"Ind\u00FAstria\",\"services\":\"Serveis\",\"title\":\"Contractes per sector\"},\"deaths\":{\"country\":\"Mitjana estatal\",\"place\":\"%{place}\",\"province\":\"Mitjana provincial\",\"title\":\"Taxa de defuncions\"},\"debt_by_inhabitant\":{\"title\":\"Deute per habitant\"},\"economic_tax\":{\"title\":\"Impost a les activitats econ\u00F2miques\"},\"freelancers\":{\"title\":\"Aut\u00F3noms\"},\"frequency\":\"Actualitzaci\u00F3 %{type}\",\"houses\":{\"figure_first\":\"familiars\",\"figure_second\":\"principals\",\"title\":\"Habitatge\"},\"ibi\":{\"first_column\":\"\",\"second_column\":\"Urb\u00E0ns\",\"third_column\":\"R\u00FAstics\",\"title\":\"Impost sobre els B\u00E9ns Immobles\"},\"income\":{\"first_column\":\"\",\"second_column\":\"Bruta\",\"third_column\":\"Disponible\",\"title\":\"Renda municipal\"},\"income_overview\":{\"figure_first\":\"%{place}\",\"figure_second\":\"Espanya\",\"title\":\"Renda bruta\"},\"investment_by_inhabitant\":{\"title\":\"Inversi\u00F3 per habitant\"},\"meta\":{\"time\":\" al \",\"where\":\"A \"},\"population\":{\"title\":\"Habitants\"},\"ss_members\":{\"title\":\"Afiliats a la Seguretat Social\"},\"unemployed_sector\":{\"agriculture\":\"Agricultura\",\"construction\":\"Construcci\u00F3\",\"industry\":\"Ind\u00FAstria\",\"services\":\"Serveis\",\"title\":\"Desempleats per sector\"},\"updated\":\"Darrera actualitzaci\u00F3\"},\"graphics\":{\"age_distribution\":{\"axis\":\"anys\",\"label\":\"habitants\",\"title\":\"Descobreix la distribuci\u00F3 per edats del teu municipi\"},\"population_pyramid\":{\"adults\":\"Poblaci\u00F3 activa\",\"age\":\"Edat\",\"country\":\"Espanya\",\"elderly\":\"Majors\",\"elderly_info\":\"El %{percent} de la poblaci\u00F3 t\u00E9 m\u00E9s de %{limit} anys\",\"mean\":\"Edat mitja: %{age} anys\",\"median\":\"Edat mitjana: %{age} anys\",\"men\":\"Homes\",\"mode\":\"Edat m\u00E9s com\u00FA: %{age} anys\",\"unemployed\":\"Aturada\",\"women\":\"Dones\",\"youth\":\"Menors\",\"youth_info\":\"El %{percent} de la poblaci\u00F3 t\u00E9 menys de %{limit} anys\"},\"rent_distribution\":{\"gross_income\":\"Renda bruta\",\"inhabitants\":\"Habitants\",\"million\":\"mili\u00F3\",\"thousand\":\"mil\",\"title\":\"Riquesa i poblaci\u00F3 a la prov\u00EDncia\"},\"unemployment_age\":{\"between_25_44\":\"Entre 25 i 44\",\"less_25\":\"Menors de 25\",\"more_44\":\"M\u00E9s de 44\",\"title\":\"L\\'atur segons l\\'edat\"},\"unemployment_rate\":{\"country\":\"Espanya\",\"title\":\"Comparaci\u00F3 de la taxa d\\'atur\"},\"unemployment_sex\":{\"men\":\"Homes\",\"title\":\"L\\'atur segons el sexe\",\"women\":\"Dones\"}},\"inhabitants\":\"hab\",\"intro\":\"Coneix %{place} a partir de les principals xifres: la poblaci\u00F3, l\\'ocupaci\u00F3 i l\\'economia.\",\"layouts\":{\"application\":{\"observatory\":\"Observatori\"},\"menu_subsections\":{\"banner_map\":\"Un visor geogr\u00E0fic per explorar l\\'estructura demogr\u00E0fica de %{place}\",\"demographic_observatory\":\"Observatori demogr\u00E0fic\",\"economia\":\"Economia\",\"empleo\":\"Ocupaci\u00F3\",\"poblacion\":\"Poblaci\u00F3\"}}},\"gobierto_people\":{\"departments\":{\"index\":{\"description\":\"Qualsevol organitzaci\u00F3 que es reuneix amb un alt c\u00E0rrec ha de registrar-se com a grup d\\'inter\u00E8s, i es crea un registre de les trobades. \\\\u003ca href=\\\\\"https://web.gencat.cat/es/tramits/tramits-temes/registre-grups-interes\\\\\"\\\\u003eM\u00E9s informaci\u00F3 sobre la normativa de grups d\\'inter\u00E8s\\\\u003c/a\\\\u003e. Exploreu les organitzacions (empreses, fundacions, associacions...) que es reuneixen amb alts c\u00E0rrecs de la Generalitat.\",\"events\":\"Reunions registrades\",\"events_by_department\":\"Reunions per departaments\",\"explore_departments\":\"Exploreu els departaments i els seus alts c\u00E0rrecs\",\"explore_people\":\"Consulteu les agendes dels alts c\u00E0rrecs\",\"people_events\":\"Alts c\u00E0rrecs amb m\u00E9s reunions en departaments\",\"people_with_events\":\"Alts c\u00E0rrecs amb reunions registrades\",\"punchcard_title\":\"Reunions per departament i mes\"},\"show\":{\"interest_groups_box_subtitle\":\"amb reunions en el per\u00EDode\",\"interest_groups_box_title\":\"Grups d\\'inter\u00E8s\",\"interest_groups_box_title_single\":\"Grup d\\'inter\u00E8s\",\"interest_groups_rowchart_title\":\"Grups d\\'inter\u00E8s amb m\u00E9s reunions amb aquest departament\",\"interest_groups_with_events\":\"Grups d\\'inter\u00E8s que s\\'han reunit amb aquest departament\",\"map_title\":\"On viatgen els alts carr\u00E8cs?\",\"meetings_box_subtitle\":\"amb grups d\\'inter\u00E8s\",\"meetings_box_title\":\"Reunions registrades\",\"meetings_box_title_single\":\"Reuni\u00F3 registrada\",\"people_box_subtitle\":\"amb reunions registrades\",\"people_box_title\":\"Alts c\u00E0rrecs d\\'aquest departament\",\"people_box_title_single\":\"Alt c\u00E0rrec d\\'aquest departament\",\"people_rowchart_title\":\"Alts c\u00E0rrec d\\'aquest departament amb m\u00E9s reunions\",\"people_with_events\":\"Alts c\u00E0rrecs d\\'aquest departament amb reunions registrades\",\"punchcard_title\":\"Reunions per alt c\u00E0rrec i mes\"}},\"events\":{\"gobierto_people_person_post_published\":\"Actualitzaci\u00F3 del blog: %{subject_name}\",\"gobierto_people_person_post_updated\":\"Actualitzaci\u00F3 del post: %{subject_name}\",\"gobierto_people_person_published\":\"Creada nova persona: %{subject_name}\",\"gobierto_people_person_statement_published\":\"Publicada la declaraci\u00F3: %{subject_name}\",\"gobierto_people_person_statement_updated\":\"Actualitzada la declaraci\u00F3: %{subject_name}\",\"gobierto_people_person_updated\":\"Actualitzaci\u00F3 de la informaci\u00F3 personal\"},\"exports\":{\"index\":{\"events\":{\"description\":\"Llistat dels esdeveniments (passats i futurs) amb t\u00EDtol i descripci\u00F3, assistents, ubicaci\u00F3...\",\"title\":\"Agendes\"},\"people\":{\"description\":\"Llistat dels c\u00E0rrecs, amb les seves dades de contacte, biografia, titulacions, etc.\",\"title\":\"C\u00E0rrecs\"},\"posts\":{\"description\":\"\u00DAltimes entrades del conjunt dels blogs\",\"title\":\"Blogs\"},\"statements\":{\"description\":\"Llistat de les declaracions de b\u00E9ns i activitats i tots els seus elements\",\"title\":\"Declaracions de b\u00E9ns i activitats\"}}},\"gifts\":{\"coc\":\"El Codi de conducta regula quins obsequis es poden rebre.\",\"description\":\"Els alts c\u00E0rrecs han d\u2019abstenir-se d\\'acceptar regals i donacions de particulars i d\\'entitats p\u00FAbliques o privades a excepci\u00F3 feta de les mostres no venals de cortesia i objectes commemoratius, oficials o protocol\u00B7laris que li puguin ser lliurats per ra\u00F3 del seu c\u00E0rrec.\",\"last\":\"Darrers obsequis\",\"none\":\"No s\\'han registrat obsequis en aquest per\u00EDode\",\"title\":\"Obsequis\"},\"interest_groups\":{\"index\":{\"description\":\"Qualsevol organitzaci\u00F3 que es reuneix amb un alt c\u00E0rrec ha de registrar-se com a grup d\\'inter\u00E8s, i es crea un registre de les trobades. \\\\u003ca href=\\\\\"https://web.gencat.cat/es/tramits/tramits-temes/registre-grups-interes\\\\\"\\\\u003eM\u00E9s informaci\u00F3 sobre la normativa de grups d\\'inter\u00E8s\\\\u003c/a\\\\u003e. Exploreu les organitzacions (empreses, fundacions, associacions...) que es reuneixen amb alts c\u00E0rrecs de la Generalitat.\",\"interest_groups\":\"Grups d\\'inter\u00E8s inscrits\",\"no_data\":\"No hi ha dades per a les dates seleccionades\",\"rowchart_title\":\"Grups d\\'inter\u00E8s amb m\u00E9s reunions\",\"title\":\"Grups d\\'inter\u00E8s\"},\"show\":{\"event\":\"Reuni\u00F3 registrada\",\"events\":\"Reunions registrades\",\"events_by_department\":\"Amb quins departaments es reuneix aquest grup\",\"events_by_person\":\"Alts c\u00E0rrecs amb els quals s\\'ha reunit aquest grup\",\"explore_departments\":\"Exploreu els departaments i els seus alts c\u00E0rrecs\",\"explore_people\":\"Consulteu les agendes dels alts c\u00E0rrecs\",\"people_with_events\":\"El nombre d\\'alts c\u00E0rrecs amb els quals s\\'ha reunit aquest grup\",\"punchcard_title\":\"Reunions per alt c\u00E0rrec i mes\",\"status\":\"Situaci\u00F3 d\\'inscripci\u00F3 al registre de grups d\\'inter\u00E8s: %{status}\"}},\"invitations\":{\"coc\":\"El Codi de conducta regula quines invitacions es poden acceptar.\",\"description\":\"Els alts c\u00E0rrecs han d\u2019acceptar nom\u00E9s el pagament de viatges, despla\u00E7aments i allotjaments per part d\\'altres administracions p\u00FAbliques o d\\'entitats p\u00FAbliques dependents d\\'aquestes, universitats o entitats sense \u00E0nim de lucre, quan hagi d\\'assistir convidat oficialment per ra\u00F3 del c\u00E0rrec a una activitat relacionada amb les seves responsabilitats.\",\"last\":\"Darreres invitacions\",\"none\":\"No s\\'han registrat invitacions en aquest per\u00EDode\",\"title\":\"Invitacions\"},\"layouts\":{\"application\":{\"title\":\"Alts c\u00E0rrecs i agendes\"},\"departments\":{\"no_departments_within_dates\":\"No hi ha cap departament per aquestes dates\"},\"menu_subsections\":{\"agendas\":\"Agendes\",\"blogs\":\"Blogs\",\"departments\":\"Departaments\",\"gifts\":\"Obsequis\",\"interest_groups\":\"Grups d\\'inter\u00E8s\",\"invitations\":\"Invitacions\",\"people\":\"C\u00E0rrecs\",\"statements\":\"Declaracions\",\"trips\":\"Viatges\"}},\"people\":{\"contact_methods\":{\"send_email\":\"Envia un correu-e\"},\"gifts\":{\"index\":{\"gifts\":\"Obsequis\",\"no_gifts\":\"No hi ha obsequis en les dates seleccionades\",\"title\":\"Obsequis rebuts per %{person_name}\"}},\"google_calendar\":{\"authorization\":{\"new\":{\"success\":\"Configuraci\u00F3 guardada correctament. Una \u00FAltima cosa, tria quins calendirs vols publicar autom\u00E0ticament a la teva agenda\"}},\"calendars\":{\"edit\":{\"explain\":\"Tria quins calendaris vols publicar autom\u00E0ticament a la teva agenda\",\"save\":\"Guardar\",\"title\":\"Integraci\u00F3 amb Google Calendar\"},\"update\":{\"success\":\"Calendaris guardats correctament.\"}}},\"index\":{\"department_officials\":\"Alts c\u00E0rrecs en %{department_name}\",\"no_people_within_range\":\"No hi ha cap alt c\u00E0rrec per aquestes dates\",\"subscribable_box\":{\"title\":\"Rebeu una alerta al vostre correu-e\"},\"title\":\"Organigrama de %{site_name}\"},\"invitations\":{\"index\":{\"invitations\":\"Invitacions\",\"no_invitations\":\"No hi ha invitacions en les dates seleccionades\",\"title\":\"Invitacions rebudes per %{person_name}\"}},\"latest_activity\":{\"no_activity\":\"Aquest perfil encara no ha registrat cap activitat.\",\"title\":\"Darrera activitat\"},\"navigation\":{\"agenda\":\"Agenda\",\"bio\":\"Biografia i CV\",\"blog\":\"Blog\",\"gift_received\":\"obsequi rebut\",\"gifts\":\"Obsequis i regals\",\"gifts_received\":\"obsequis rebuts\",\"interest_group\":\"Grup d\\'inter\u00E8s\",\"interest_groups\":\"Grups d\\'inter\u00E8s\",\"invitation\":\"invitaci\u00F3\",\"invitations\":\"invitacions\",\"meeting_with\":\"reuni\u00F3 amb\",\"meetings_with\":\"reunions amb\",\"statements\":\"B\u00E9ns i activitats\",\"trip_made\":\"viatge realitzat\",\"trips\":\"Viatges\",\"trips_made\":\"viatges realitzats\"},\"people_filter\":{\"organigram\":\"Organigrama de %{name}\",\"political_groups\":\"Grups pol\u00EDtics de %{name}\"},\"person\":{\"picture\":\"Foto de %{name}\"},\"person_bio\":{\"show\":{\"download\":\"Descarregar CV\",\"subtitle\":\"Biografia i CV\",\"title\":\"Perfil de %{person_name}\"}},\"person_events\":{\"index\":{\"agenda\":\"Agenda\",\"no_events\":\"No hi ha reunions en les dates seleccionades\",\"past_events\":\"Esdeveniments passats\",\"title\":\"Agenda de %{person_name}\",\"upcoming_events\":\"Agenda\"},\"show\":{\"event_data\":{\"event_attachments\":\"Documents\",\"event_attendees\":\"Assistents\",\"event_locations\":\"Lloc\"},\"title\":\"Agenda de %{person_name}\"}},\"person_messages\":{\"create\":{\"error\":\"No s\\'ha pogut enviar el missatge\",\"success\":\"Missatge enviat correctamente\"},\"new\":{\"placeholders\":{\"body\":\"Escriu un missatge\",\"email\":\"El teu correu-e\",\"name\":\"El teu nom\"},\"submit\":\"Enviar\",\"title\":\"Envia un missatge a %{name}\"}},\"person_post_tags\":{\"show\":{\"filtering_by_tag\":\"Filtrant per \\\\\"%{tag}\\\\\"\",\"go_back\":\"Tornar al blog\"}},\"person_posts\":{\"index\":{\"no_posts\":\"Encara no hi ha posts publicats.\",\"title\":\"El blog de %{person_name}, %{person_charge}\"},\"show\":{\"title\":\"El blog de %{person_name}, %{person_charge}\"}},\"person_statements\":{\"index\":{\"no_statements\":\"Encara no hi ha declaracions publicades per a aquesta persona.\",\"title\":\"B\u00E9ns i activitats de %{person_name}\"},\"show\":{\"download\":\"Descarregar declaraci\u00F3 (%{file_size})\",\"title\":\"B\u00E9ns i activitats de %{person_name}\",\"view_previous\":\"Veure anteriors\"}},\"show\":{\"events_section_title\":\"Darreres reunions\",\"gifts_section_title\":\"Darrers obsequis\",\"invitations_section_title\":\"Darreres invitacions\",\"no_data\":\"No hi ha dades en les dates seleccionades\",\"party\":{\"government\":\"Equip de govern\",\"opposition\":\"Oposici\u00F3\"},\"trips_section_title\":\"Darrers viatges\"},\"subscription_button\":{\"cancel\":\"Cancel\u00B7lar\",\"follow\":\"Seguir\"},\"trips\":{\"index\":{\"no_trips\":\"No hi ha viatges en les dates seleccionades\",\"title\":\"Viatges realitzats per %{person_name}\",\"trips\":\"Viatges\"},\"trip\":{\"accomodation_expenses\":\"Hotels i allotjament\",\"by\":\"per\",\"company\":\"Comitiva\",\"expenses\":\"Despeses\",\"food_expenses\":\"Dietes i manutenci\u00F3\",\"in\":\"a\",\"meeting_name\":{\"one\":\"reuni\u00F3\",\"other\":\"reunions\",\"person_name\":{\"one\":\"persona\",\"other\":\"persones\"}},\"other_expenses\":\"Altres despeses\",\"person_name\":{\"one\":\"persona\",\"other\":\"persones\"},\"total_expenses\":\"Total despeses\",\"transport_expenses\":\"Transport\"}},\"upcoming_events\":{\"no_upcoming_events\":\"No hi ha esdeveniments programats en aquesta agenda.\",\"title\":\"Agenda\",\"view_all\":\"Veure\\'ls tots\"}},\"people_filter\":{\"all\":\"Tots\",\"categories\":{\"executive\":\"Directius\"},\"parties\":{\"government\":\"Equip de Govern\",\"opposition\":\"Oposici\u00F3\"},\"political_groups\":{\"title\":\"Grups pol\u00EDtics\"}},\"person_events\":{\"index\":{\"agenda_switcher\":{\"subtitle\":\"Filtrar per membres de la comunitat\",\"title\":\"Consulteu l\\'agenda de...\"},\"displaying_events_of\":\"Mostrant esdeveniments del %{date}\",\"go_back\":\"Tornar\",\"no_events\":\"No hi ha esdeveniments futurs ni passats.\",\"no_past_events\":\"Filtrar per membres de la comunitat\",\"no_upcoming_events\":\"Consulteu l\\'agenda de...\",\"past_events\":\"Esdeveniments passats\",\"subscribable_box\":{\"title\":\"Rebeu un resum de les agendes dels vostres representants\"},\"title\":\"Agendes dels membres de %{site_name}\",\"upcoming_events\":\"Agenda\"},\"person_events_filter\":{\"agenda\":\"Agenda dels membres del %{name}\"}},\"person_gifts\":{\"index\":{\"error\":\"No hem trobat la p\u00E0gina que busqueu\"}},\"person_mailer\":{\"new_message\":{\"hi\":\"Hola\",\"new_message\":\"Has rebut un nou missatge de %{name} (%{reply_to})\",\"subject\":\"Has rebut un nou missatge des de %{name}\"}},\"person_post_tags\":{\"show\":{\"filtering_by_tag\":\"Filtrant per \\\\\"%{tag}\\\\\"\",\"go_back\":\"Tornar\"}},\"person_posts\":{\"index\":{\"subscribable_box\":{\"title\":\"Rebeu una alerta al vostre correu-e\"},\"switcher\":{\"subtitle\":\"Filtrar per membres de la comunitat\",\"title\":\"Consulteu els blogs de...\"},\"title\":\"Blogs\"},\"person_post_excerpt\":{\"continue\":\"Seguir llegint\"}},\"person_statements\":{\"index\":{\"subscribable_box\":{\"title\":\"Rebeu una alerta al vostre correu-e\"},\"switcher\":{\"subtitle\":\"Filtrar per membres de la comunitat\",\"title\":\"Consulteu les declaracions de...\"},\"title\":\"Declaracions\"}},\"person_trips\":{\"index\":{\"error\":\"No hem trobat la p\u00E0gina que busqueu\"}},\"shared\":{\"app_breadcrumb_title\":\"Visor de l\u2019activitat directiva\",\"app_title\":\"Activitat directiva p\u00FAblica derivada del Codi de conducta\",\"check_it_out\":\"Consulteu el text del Codi de conducta\",\"datepicker\":{\"1m\":\"Darrer mes\",\"1y\":\"Darrer any\",\"3m\":\"Darrers tres mesos\",\"all\":\"Tot\",\"range\":\"Rang personalitzat\",\"today\":\"Avui\"},\"datepicker_fixed\":\"Data corresponent al per\u00EDode\",\"destination\":\"destinaci\u00F3\",\"destinations\":\"destinacions\",\"displacement\":\"despla\u00E7ament\",\"displacements\":\"despla\u00E7aments\",\"from\":\"de\",\"locales\":{\"locale\":\"Idioma\",\"page_locale\":\"Idioma de la p\u00E0gina\",\"select_locale\":\"Selecciona idioma\"},\"meetings_punchcard\":{\"tooltip\":\"reunions\",\"tooltip_single\":\"reuni\u00F3\"},\"meetings_rowchart\":{\"tooltip\":\"reunions\",\"tooltip_single\":\"reuni\u00F3\"},\"noresults\":\"Sense resultats\",\"open_data_footer\":{\"gifts\":\"Obsequis\",\"invitations\":\"Invitacions\",\"meetings\":\"Reunions\",\"title\":\"Accediu a les dades al Portal de dades obertes\",\"trips\":\"Viatges\"},\"table_item\":{\"view_details\":\"Veure detalls\"},\"to\":\"per a\",\"view_all\":\"Vegeu-ne m\u00E9s\",\"view_all_f\":\"Vegeu-ne m\u00E9s\",\"view_charges\":\"Vegeu tots els c\u00E0rrecs\",\"view_details\":\"Veure detalls\",\"view_gifts\":\"Veure tots els obsequis al Portal de dades oberts\",\"view_invitations\":\"Veure totes les invitacions al Portal de dades oberts\",\"view_officials\":\"Veure alts c\u00E0rrecs\"},\"welcome\":{\"index\":{\"departments\":\"Departaments\",\"departments_extra\":\"es mostren els departaments que existeixen o han existit en funci\u00F3 del per\u00EDode seleccionat\",\"departments_rowchart_title\":\"Departaments amb m\u00E9s reunions\",\"description_1\":\"El visor mostra les reunions dels alts c\u00E0rrecs de l\u2019administraci\u00F3 de la Generalitat amb els grups d\u2019inter\u00E8s en el per\u00EDode temporal que seleccioneu. Tamb\u00E9 hi trobareu els regals i invitacions permesos pel Codi de conducta, que obliga els alts c\u00E0rrecs a fer p\u00FAblica aquesta informaci\u00F3. Aix\u00ED mateix, el visor permet consultar els viatges a l\u2019estranger del president, consellers, assessors i alts c\u00E0rrecs en l\u2019exercici de les seves funcions.\",\"description_2_html\":\"Respecte de l\\'informaci\u00F3 dels alts c\u00E0rrecs, es mostren els c\u00E0rrecs que ocupen o han ocupat en el per\u00EDode temporal seleccionat.\",\"events_summary\":{\"no_events\":\"No hi ha esdeveniments\",\"no_upcoming_events\":\"No hi ha esdeveniments futurs. Mireu els esdeveniments passats.\",\"past_events\":\"Esdeveniments passats\",\"upcoming_events\":\"Propers esdeveniments\",\"view_all\":\"Veure\\'ls tots\"},\"gifts\":\"Obsequis i regals\",\"interest_groups_box_subtitle\":\"amb reunions en el per\u00EDode\",\"interest_groups_box_title\":\"Grups d\\'inter\u00E8s\",\"interest_groups_box_title_single\":\"Grup d\\'inter\u00E8s\",\"interest_groups_rowchart_title\":\"Grups d\\'inter\u00E8s amb m\u00E9s reunions\",\"map_title\":\"On viatgen els alts carr\u00E8cs?\",\"meetings_box_subtitle\":\"amb grups d\\'inter\u00E8s\",\"meetings_box_title\":\"Reunions registrades\",\"meetings_box_title_single\":\"Reuni\u00F3 registrada\",\"people_box_subtitle\":\"amb activitat registrada\",\"people_box_title\":\"Alts c\u00E0rrecs\",\"people_box_title_single\":\"Alt c\u00E0rrec\",\"people_rowchart_title\":\"Alts c\u00E0rrecs amb m\u00E9s reunions\",\"people_summary\":{\"no_people\":\"No hi ha persones\",\"title\":\"Organigrama de %{site_name}\",\"view_all\":\"Veure\\'ls tots\"},\"posts_summary\":{\"title\":\"Blogs\",\"view_all\":\"Veure\\'ls tots\"},\"punchcard_title\":\"Reunions per alt c\u00E0rrec i mes\",\"search\":\"Cercar\",\"search_placeholder\":\"Cerca un c\u00E0rrec\",\"statements\":\"Declaracions de b\u00E9ns i activitats\",\"subscribable_box\":{\"title\":\"Rebeu un resum setmanal de l\\'agenda dels vostres representants\"},\"title\":\"Agendes\",\"trips\":\"Viatges i despla\u00E7aments\"}}},\"gobierto_plans\":{\"custom_fields_plugins\":{\"budgets\":{\"detail_text\":\"veure detall en Pressupostos\",\"title\":\"Pressupost\"}},\"events\":{\"gobierto_plans_plan_created\":\"Pla creat\",\"gobierto_plans_plan_data_csv_imported\":\"Dades de pla importats des de fitxer CSV\",\"gobierto_plans_plan_type_created\":\"Tipus de pla creat\",\"gobierto_plans_plan_type_updated\":\"Tipus de pla actualitzat\",\"gobierto_plans_plan_updated\":\"Pla actualitzat\",\"gobierto_plans_progresses_updated\":\"Progressos de projectes actualitzats\",\"gobierto_plans_project_created\":\"Projecte creat\",\"gobierto_plans_project_destroyed\":\"Projecte eliminat del pla\",\"gobierto_plans_project_updated\":\"Projecte actualitzat\"},\"layouts\":{\"application\":{\"plans\":\"Plans\"}},\"plan_types\":{\"sdg\":{\"header\":{\"sdgs_description\":\"Els Objectius de Desenvolupament Sostenible s\u00F3n un conjunt d\\'objectius mundials relacionats amb els desafiaments ambientals, pol\u00EDtics i econ\u00F2mics amb qu\u00E8 s\\'enfronta el nostre m\u00F3n. Aqu\u00ED pots veure com el Pla d\\'Actuaci\u00F3 Municipal connecta amb els ODS.\",\"sdgs_title\":\"Objectius de Desenvolupament Sostenible\"},\"projects\":{\"sdg_projects_empty\":\"No hi ha %{projects_term} de el pla relacionats amb aquest ODS\",\"sdg_projects_title\":\"%{projects_term} del pla relacionades amb aquest ODS\"}},\"show\":{\"category\":\"Categoria\",\"customize_columns\":\"Personalitzeu columnes\",\"dashboards\":\"Dashboards\",\"desc\":\"Descripci\u00F3\",\"ends\":\"Fi\",\"global_execution\":\"Estat d\\'execuci\u00F3 global\",\"latest_update_html\":\"\\\\u003cstrong\\\\u003eDarrera actualitzaci\u00F3:\\\\u003c/strong\\\\u003e %{date}\",\"loading\":\"Carregant...\",\"percent_out_of_total\":\"% sobre total\",\"plan\":\"Plan\",\"progress\":\"Progr\u00E9s\",\"read_less\":\"Llegiu menys\",\"read_more\":\"Llegiu m\u00E9s\",\"starts\":\"Inici\",\"status\":\"Estat\",\"view_by\":\"Veure per\"}}},\"gobierto_visualizations\":{\"layouts\":{\"application\":{\"gobierto_visualizations\":{\"contracts\":\"Contractes i licitacions\",\"costs\":\"Costos\",\"debts\":\"Deute\",\"odss\":\"ODS\",\"subsidies\":\"Subvencions\"}}},\"shared\":{\"download_data\":\"Descarregueu les dades en format reutilitzable\",\"loading\":\"Carregant dades...\"},\"visualizations\":{\"categories\":{\"agriculture\":\"Serveis agr\u00EDcoles i forestals\",\"architecture\":\"Arquitectura i enginyeria\",\"audiovisual\":\"Audiovisual\",\"catering\":\"Hostaleria i restauraci\u00F3\",\"construction\":\"Construcci\u00F3 i manteniment\",\"culture\":\"Cultura i esport\",\"education\":\"Ensenyament i formaci\u00F3\",\"electrical\":\"Equips el\u00E8ctrics i d\\'il\u00B7luminaci\u00F3\",\"energy\":\"Energia\",\"environment\":\"Medi ambient\",\"finance\":\"Serveis financers i assegurances\",\"furniture\":\"Mobiliari\",\"health\":\"Salut\",\"industry\":\"Ind\u00FAstria i maquin\u00E0ria\",\"it\":\"Tecnologia de la informaci\u00F3\",\"legal\":\"Jur\u00EDdic, comptabilitat, m\u00E0rqueting ...\",\"maintenance\":\"Reparaci\u00F3 i manteniment\",\"other\":\"Altres\",\"print\":\"Impressi\u00F3 i material d\\'oficina\",\"public_services\":\"Serveis p\u00FAblics\",\"real_estate\":\"Immobiliari\",\"security\":\"Seguretat\",\"social_services\":\"Serveis socials\",\"software\":\"Consultoria i desenvolupament de programari, equips i llic\u00E8ncies\",\"telecom\":\"Telecomunicacions i correus\",\"textile\":\"T\u00E8xtil\",\"transportation\":\"Transport\"},\"contract_statuses\":{\"abandoned\":\"Desistiment\",\"awarded\":\"Adjudicat\",\"finally_awarded\":\"Finalment adjudicat\",\"finally_void\":\"Desert\",\"formalized\":\"Formalitzat\",\"highest_rated\":\"Millor valorat\",\"provisionally_awarded\":\"Provisionalment adjudicat\",\"provisionally_void\":\"Provisionalment desert\",\"revoked\":\"Revocat\",\"void\":\"Desert\"},\"contract_types\":{\"construction\":\"Obres\",\"other\":\"Altres\",\"patrimonial\":\"Patrimonial\",\"private_contract\":\"Privat\",\"public_private_collaboration\":\"Col\u00B7laboraci\u00F3 entre el sector p\u00FAblic i sector privat\",\"public_services_management\":\"Gesti\u00F3 de Serveis P\u00FAblics\",\"public_works\":\"Concessi\u00F3 d\\'Obres p\u00FAbliques\",\"services\":\"Serveis\",\"special_administrative\":\"Administratiu especial\",\"supplies\":\"Subministraments\"},\"contracts\":{\"amount_by_type_of_process\":\"Import per tipus de procediment\",\"amount_distribution\":\"Distribuci\u00F3 per imports\",\"assignee\":\"Adjudicatari\",\"categories\":\"Categories\",\"contract\":\"Contracte\",\"contract_amount\":\"Imp. adjudicaci\u00F3\",\"contract_type\":\"Tipus de contracte\",\"contractor\":\"Contractor\",\"contracts\":\"Contractes\",\"contracts_assigned_to\":\"Contractes adjudicats a\",\"contracts_show\":{\"assignee_description\":\"Empresa que ha guanyat el contracte (Adjudicatari)\",\"assignees_description\":\"Empreses que han guanyat el contracte (Adjudicataris)\",\"awarding_entity\":\"Entitat adjudicadora\",\"batch\":\"Lot\",\"bid_description\":\"Pressupost base de licitaci\u00F3 sense impostos\",\"bidders_description\":\"Numero d\\'empreses que s\\'han presentat al proc\u00E9s (Licitadors)\",\"contract_amount\":\"Import d\\'adjudicaci\u00F3\",\"entity\":\"Entitat\",\"estimated_value\":\"Valor estimat\",\"external_source\":\"Font\",\"formalization\":\"Formalitzaci\u00F3\",\"process\":\"Procediment\",\"question_description\":\"Quin % del pressupost suposa aquest contracte?\",\"tender\":\"Licitaci\u00F3\",\"type\":\"Tipus\"},\"date\":\"Data\",\"dates\":\"Dates\",\"description\":\"Visualitzaci\u00F3 i an\u00E0lisi dels contractes adjudicats i les licitacions del %{entity_name}\",\"entities\":\"Entitats\",\"final_amount_no_taxes\":\"Import\",\"formalization_date\":\"Data de formalitzaci\u00F3\",\"fromto\":\"De a N\u00BA Contr.\",\"main_assignees\":\"Principals adjudicataris\",\"more\":\"M\u00E9s de\",\"nav\":{\"contracts\":\"Contractes\",\"summary\":\"Resum\",\"tenders\":\"Licitacions\"},\"process_type\":\"Tipus de procediment\",\"search_placeholder\":\"Cerqueu per adjudicatari o per t\u00EDtol del contracte\",\"status\":\"Estat\",\"submission_date\":\"Data\",\"summary\":{\"contracts\":\"Contractes adjudicats\",\"contracts_for\":\"contractes per import de\",\"mean_amount\":\"Import mig\",\"median_amount\":\"Mediana dels imports\",\"tenders\":\"Licitacions\",\"tenders_for\":\"licitacions per un import de\",\"tip_1\":\"El %{strong1} dels contractes s\u00F3n menors de %{strong2}\",\"tip_2\":\"El major contracte suposa un %{strong} de tota la despesa en contractes\",\"tip_3\":\"El %{strong} de contractes concentren el 50% de tota la despesa\"},\"tender_amount\":\"Imp. licitaci\u00F3\",\"tender_date\":\"Data de licitaci\u00F3\",\"title\":\"Contractes i licitacions\"},\"costs\":{\"activities\":\"activitats\",\"cost_direct\":\"Cost directe\",\"cost_indirect\":\"Cost indirecte\",\"cost_inhabitant\":\"Cost / habitant\",\"cost_per_inhabitant\":\"Cost per habitant\",\"coverage\":\"Cobertura\",\"description\":\"L\\'%{entity_name} presta serveis als seus ciutadans a partir de les seves compet\u00E8ncies. Aquesta prestaci\u00F3 de serveis suposa un cost que es cobreix amb els ingressos que disposa l\u2019Ajuntament, que s\u00F3n els derivats del propi servei a prestar o b\u00E9 de recursos generals dels impostos o subvencions rebudes.\",\"description_2\":\"En aquest apartat es mostren les dades sobre els costos dels serveis i els ingressos necessaris per prestar-los.\",\"description_3\":\"El punt de partida \u00E9s el pressupost municipal, per\u00F2 amb aquesta an\u00E0lisi s\u2019amplia i es concreta el cost real d\u2019un servei ja que podem trobar relacionat el cost indirecte (de suport) necessari per a la prestaci\u00F3 d\u2019un servei.\",\"detail\":\"Detall\",\"distribution\":\"Distribuci\u00F3 de costos per \u00E0rea\",\"home\":\"Inici\",\"income\":\"Ingressos\",\"inhabitants\":\"Habitants\",\"item\":{\"competence\":\"Compet\u00E8ncia\",\"description\":\"Descripci\u00F3\",\"equipments\":\"Equipaments\",\"external_services\":\"Serveis exteriors\",\"goods_and_services\":\"B\u00E9ns i serveis\",\"income_cost\":\"Ingressos - Cost\",\"legal_framework\":\"Marc legal\",\"observation\":\"Observacions\",\"personal_cost\":\"Cost personal\",\"public_tax\":\"Taxa o preus p\u00FAblics\",\"subsidies\":\"Subvencions\",\"total\":\"Total\",\"transference\":\"Transfer\u00E8ncies\",\"types\":\"Tipus\"},\"per_inhabitant\":\"per habitant\",\"see_all\":\"Vegeu-ho tot\",\"title\":\"Costos\",\"tooltips\":{\"cost_direct\":\"Recursos necessaris per la prestaci\u00F3 d\u2019un servei o activitat finalista i que es relacionen directament.\",\"cost_indirect\":\"Recursos per la prestaci\u00F3 de serveis no finalistes i que s\u00F3n de suport necessari per a la realitzaci\u00F3 de serveis i activitats finalistes.\",\"cost_per_habitant\":\"Cost total dividit pel nombre d \u0301habitants.\",\"cost_total\":\"Suma del cost directe i cost indirecte.\",\"coverage\":\"Grau de cobertura dels ingressos directament relacionats amb el cost total de l\u2019activitat o servei.\",\"income\":\"Ingressos directament relacionats amb la prestaci\u00F3 del servei, ja siguin derivats de l\u2019aplicaci\u00F3 d\u2019una taxa o preu p\u00FAblic o b\u00E9 d\u2019una subvenci\u00F3.\"},\"tooltips_items\":{\"cost_indirect\":\"Part proporcional del cost de les activitats no finalistes (recursos humans, serveis econ\u00F2mics).\",\"coverage\":\"Mesura (en %) en qu\u00E8 els ingressos directament relacionats amb l\u2019activitat s\u00F3n suficients per cobrir el seu cost.\",\"equipments\":\"Cost proporcional de l\u2019\u00FAs de la infrastuctura necess\u00E0ria per a la prestaci\u00F3 de l\u2019activitat o servei (consums i manteniments dels edificis, vehicles) en funci\u00F3 del seu grau d\u2019utilitzaci\u00F3.\",\"externalServices\":\"Serveis diversos adquirits per l\u2019Ajuntament i prestacions de persones jur\u00EDdiques o f\u00EDsiques no integrades a la plantilla.\",\"goodsServices\":\"Valoraci\u00F3 monet\u00E0ria del consum de material fungible necessari i no emmagatzemable necessari per a la prestaci\u00F3 de l\u2019activitat o servei (subministrament, material d\u2019oficina)\",\"income_cost\":\"Difer\u00E8ncia entre conjunt d\u2019ingressos directament relacionats amb l\u2019activitat i el cost necessari per a la seva prestaci\u00F3. Un saldo negatiu indica la insufici\u00E8ncia de recursos espec\u00EDfics i la necessitat de finan\u00E7ament amb recursos generals de l\u2019Ajuntament.\",\"staff_cost\":\"C\u00F2mput anual de la part dels sous i salaris de les treballadores i treballadors proporcional a la seva dedicaci\u00F3 a l\u2019activitat.\",\"subsidies\":\"Ingressos sense contraprestaci\u00F3 directa per part del beneficiari, destinats a una activitat o a un projecte espec\u00EDfic.\",\"taxes\":\"Contraprestacions econ\u00F2miques rebudes per la prestaci\u00F3 d\u2019un servei o per la utilitzaci\u00F3 privativa o aprofitament especial del domini p\u00FAblic.\",\"transferences\":\"Aportacions de recursos financers per part de l\u2019Ajuntament en concepte de subvenci\u00F3 pr\u00E8viament concedida.\"},\"total\":\"Total\",\"total_cost\":\"Cost total\"},\"debts\":{\"breakdown_debt\":\"Desglossament del deute\",\"creditor\":\"Per creditor\",\"date_debt\":\"Dades de deute a 31 de desembre de 2025.\",\"debtor\":\"Per deutor\",\"description\":\"EL deute financer i d\u2019altre a llarg termini del Grup Ajuntament englova  el deute de tots els seus ens dependents (Societats Mercantils, EPE\u2019s, Fundacio\u00F3ns, Consorcis).\",\"evolution_debt\":\"Evoluci\u00F3 del deute\",\"millions\":\"La unitat de les xifres d\\'aquest gr\u00E0fic \u00E9s milions d\\'euros.\",\"title\":\"Deute\",\"total_debt\":\"Deute total\"},\"odss\":{\"amount\":\"Import\",\"assigned\":\"Alineat\",\"description_html\":\"\\\\u003cp\\\\u003eDes que l\u2019any 2015, l\u2019ONU) va aprovar l\u2019Agenda 2030, integrant els 17 Objectius de Desenvolupament Sostenible (ODS), i va establir una visi\u00F3 transformadora cap a la sostenibilitat econ\u00F2mica, social i ambiental, aquest Ajuntament ha coadjuvat en obrir un nou cam\u00ED per millorar la vida de totes i tots, sense deixar ning\u00FA enrere.\\\\u003c/p\\\\u003e \\\\u003cp\\\\u003e\u00C9s per aix\u00F2, que despr\u00E9s de presentar el Pla Estrat\u00E8gic Municipal 2023-2027 alineat amb els ODS, competeix l\u2019alineaci\u00F3 del pressupost municipal amb l\u2019Agenda 2030.\\\\u003c/p\\\\u003e \\\\u003cp\\\\u003eEl visor del pressupost  permet una millor avaluaci\u00F3 de l\\'adequaci\u00F3 dels recursos utilitzats i les prioritats pol\u00EDtiques, i contribueix a dirigir els esfor\u00E7os cap a les \u00E0rees on es necessita un major enfocament.\\\\u003c/p\\\\u003e \\\\u003cp\\\\u003eAquesta eina es planteja amb l\\'objectiu d\\'oferir a la ciutadania una visi\u00F3 integral del grau d\u2019alineament de les despeses municipals d\u2019enguany amb la consecuci\u00F3 dels ODS.\\\\u003c/p\\\\u003e\",\"functional_code\":\"C\u00F3digo programa\",\"label_title_budgets_ods\":\"Distribuci\u00F3 de partides per ODS\",\"label_title_ods\":\"Distribuci\u00F3 de despesa per Objectius de Desenvolupament Sostenible\",\"name\":\"Nom\",\"ods_distribution\":\"Distribuci\u00F3 ODS\",\"title\":\"Pressupost vigent alineat amb els Objectius de Desenvolupament Sostenible (ODS)\",\"unassigned\":\"Sense alinear\",\"updated_date\":\"Dades actualitzades el 18 de mar\u00E7 de 2025\"},\"process_types\":{\"based_on_agreement\":\"Basat en Acord Marc\",\"competitive_dialogue\":\"Di\u00E0leg competitiu\",\"dynamic_acquisition\":\"Basat en sistema din\u00E0mic d\\'adquisici\u00F3\",\"innovation\":\"Associaci\u00F3 per a la innovaci\u00F3\",\"innovation_derived\":\"Derivat d\\'associaci\u00F3 per a la innovaci\u00F3\",\"internal_rules\":\"Normes Internes\",\"minor_contract\":\"Contracte menor\",\"negotiated\":\"Licitaci\u00F3 amb negociaci\u00F3\",\"negotiated_with_publicity\":\"Negociat amb publicitat\",\"negotiated_without_publicity\":\"Negociat sense publicitat\",\"open\":\"Obert\",\"open_simplified\":\"Obert simplificat\",\"others\":\"Altres\",\"project_competition\":\"Concurs de projectes\",\"restricted\":\"Restringit\"},\"subsidies\":{\"amount\":\"Import\",\"amount_distribution\":\"Distribuci\u00F3 per imports\",\"beneficiary\":\"beneficiari\",\"call\":\"Convocat\u00F2ria\",\"category\":\"Categoria\",\"date\":\"Data\",\"dates\":\"Dates\",\"description\":\"Visualitzaci\u00F3 i an\u00E0lisi de les subvencions concedides per %{entity_name}\",\"details\":\"D\\'acord amb el que preveu l\\'article 7.8 del Reial Decret 130/2019, la informaci\u00F3 sobre concessions romandr\u00E0 publicada durant els quatre anys naturals seg\u00FCents a l\\'any en qu\u00E8 es va concedir la subvenci\u00F3 en el cas de persones jur\u00EDdiques, i en el cas de persones f\u00EDsiques la publicitat es redueix a l\\'any de concessi\u00F3 i l\\'any seg\u00FCent.\",\"fromto\":\"De a N\u00BA Subv.\",\"main_beneficiaries\":\"Principals beneficiaris\",\"more\":\"M\u00E9s de\",\"nav\":{\"subsidies\":\"Subvencions\",\"summary\":\"Resum\"},\"person\":\"Persona individual\",\"subsidies\":\"Subvencions\",\"subsidies_amount\":\"Imp. Subvencion\",\"subsidies_total\":\"Total Subvencions\",\"summary\":{\"collective_subsidies_for\":\"a col\u00B7lectius per import de\",\"individual_subsidies_for\":\"a particulars per import de\",\"mean_amount\":\"Import mig\",\"median_amount\":\"Mediana dels imports\",\"subsidies\":\"Subvencions\",\"subsidies_for\":\"subvencions per import de\",\"tip_1\":\"El %{strong1} de les subvencions s\u00F3n menors de %{strong2}\",\"tip_2\":\"La major subvenci\u00F3 suposa %{strong} de tota la despesa en subvencions\",\"tip_3\":\"El %{strong} de subvencions concentren el 50% de tota la despesa\"},\"title\":\"Subvencions\"},\"tender_statuses\":{\"awarded\":\"Adjudicat\",\"cancelled\":\"Desistida\",\"evaluation\":\"Avaluaci\u00F3\",\"modified\":\"Anul\u00B7lada\",\"partially_awarded\":\"Parcialment adjudicada\",\"partially_resolved\":\"Parcialment resolta\",\"prior_announcement\":\"Anunci previ\",\"prior_evaluation\":\"Avaluaci\u00F3 pr\u00E8via\",\"provisionally_resolved\":\"Adjudicaci\u00F3 provisional\",\"published\":\"Publicada\",\"resolved\":\"Resolta\"},\"visualizations\":{\"title_beeswarm\":\"Contractes per tipus, volum, mida i data\",\"tooltip_beeswarm\":\"Import d\\'adjudicaci\u00F3\",\"tooltip_treemap\":\"Total contractes\"}}},\"grammatical_particles\":{\"from\":\"de\",\"of\":\"de\",\"of_the\":{\"apostrophized\":\"de l\\'\",\"f\":\"de la\",\"m\":\"del\",\"n\":\"del\"},\"our\":{\"f\":\"nostra\",\"m\":\"nostre\",\"n\":\"nostre\"},\"the\":{\"apostrophized\":\"l\\'\",\"f\":\"la\",\"m\":\"el\",\"n\":\"el\"},\"to\":\"a\",\"to_your\":{\"f\":\"a la teva\",\"m\":\"al teu\",\"n\":\"al teu\"},\"your\":{\"f\":\"teva\",\"m\":\"teu\",\"n\":\"teu\"}},\"helpers\":{\"page_entries_info\":{\"more_pages\":{\"display_entries\":\"Mostrant %{entry_name} \\\\u003cb\\\\u003e%{first}\\\\u0026nbsp;-\\\\u0026nbsp;%{last}\\\\u003c/b\\\\u003e de \\\\u003cb\\\\u003e%{total}\\\\u003c/b\\\\u003e en total\"},\"one_page\":{\"display_entries\":{\"one\":\"Mostrant \\\\u003cb\\\\u003e1\\\\u003c/b\\\\u003e %{entry_name}\",\"other\":\"Mostrant \\\\u003cb\\\\u003e%{count}\\\\u003c/b\\\\u003e %{entry_name}\",\"zero\":\"No hi ha %{entry_name}\"}}},\"select\":{\"prompt\":\"Si us plau tria\"},\"submit\":{\"create\":\"Crear\",\"submit\":\"Desar\",\"update\":\"Actualitzar\"}},\"invisible_captcha\":{\"sentence_for_humans\":\"Si sou hum\u00E0, si us plau, ignoreu aquest camp.\",\"timestamp_error_message\":\"Disculpeu, aix\u00F2 ha anat molt r\u00E0pid. Si us plau, torneu a enviar el formulari.\"},\"issue\":{\"events\":{\"issue_description_translations_changed\":\"Nou tema creat\"}},\"issues\":{\"events\":{\"issues_issue_created\":\"Tema creat\",\"issues_issue_updated\":\"Tema actualitzat\"}},\"layouts\":{\"accept_privacy_policy_signup\":\"En registrar-vos, accepteu la pol\u00EDtica de privacitat.\",\"application\":{\"disclaimer\":\"Aquest web es una demostraci\u00F3 de Gobierto, un programari de transpar\u00E8ncia i participaci\u00F3.\",\"more_information\":\"M\u00E9s informaci\u00F3 a gobierto.es\",\"search\":\"Cerca...\",\"session\":{\"alerts\":\"Les vostres alertes\",\"login\":\"Feu login o registreu-vos\",\"notifications\":\"Notificacions\",\"sign_in\":\"Iniciar sessi\u00F3\",\"sign_out\":\"Tancar sessi\u00F3\",\"title\":\"El vostre compte\"},\"start\":\"Inici\"},\"gobierto_budgets\":{\"application\":{\"about_the_data\":\"Sobre les dades\",\"disclaimer\":\"Aquesta web es una demostraci\u00F3 de Gobierto, software de transpar\u00E8ncia i participaci\u00F3\",\"is_open_source\":\"es software lliure creat per\",\"more_information\":\"M\u00E9s informaci\u00F3 en gobierto.es\",\"session\":{\"admin\":\"Administraci\u00F3\",\"alerts\":\"Les teves alertes\",\"notifications\":\"Notificacions\",\"sign_in\":\"Iniciar sessi\u00F3\",\"sign_out\":\"Tancar sessi\u00F3\",\"title\":\"El teu compte\"}}},\"mailcheck\":{\"suggestion_message\":\"Vols dir\"},\"sandbox\":{\"application\":{\"about_the_data\":\"Sobre les dades\",\"disclaimer\":\"Aquesta web es una demostraci\u00F3 de Gobierto, un programari de transpar\u00E8ncia i participaci\u00F3\",\"is_open_source\":\"es programari lliure creat per\",\"more_information\":\"M\u00E9s informaci\u00F3 en gobierto.es\",\"session\":{\"admin\":\"Administraci\u00F3\",\"alerts\":\"Les teves alertes\",\"notifications\":\"Notificacions\",\"sign_in\":\"Iniciar sessi\u00F3\",\"sign_out\":\"Tancar sessi\u00F3\",\"title\":\"El teu compte\"}}},\"search\":{\"budget_line_item_expense\":\"Partida pressupost\u00E0ria - Despesa\",\"budget_line_item_income\":\"Partida pressupost\u00E0ria - Ingr\u00E9s\",\"dataset_item\":\"Dades\",\"drag_drop_instructions\":\"Arrossegueu i deixeu anar al costat esquerre per a col\u00B7locar aquesta p\u00E0gina al men\u00FA\",\"event_item\":\"Esdeveniment \",\"no_results\":\"La cerca no ha coincidit amb cap p\u00E0gina. Intenteu fer servir termes m\u00E9s generals o comproveu l\\'ortografia.\",\"page_item\":\"P\u00E0gina\",\"person_item\":\"Biografia\",\"person_post_item\":\"Post\",\"person_statement_item\":\"Declaraci\u00F3\",\"plan_project_item\":\"Plan - Actuaci\u00F3\",\"updated\":\"Actualitzat\"}},\"locales\":{\"ca\":\"Catal\u00E0\",\"ca_short\":\"CA\",\"en\":\"Angl\u00E8s\",\"en_short\":\"EN\",\"es\":\"Castell\u00E0\",\"es_short\":\"ES\"},\"number\":{\"currency\":{\"format\":{\"delimiter\":\".\",\"format\":\"%n %u\",\"precision\":2,\"separator\":\",\",\"significant\":false,\"strip_insignificant_zeros\":false,\"unit\":\"\u20AC\"}},\"format\":{\"delimiter\":\".\",\"precision\":3,\"separator\":\",\",\"significant\":false,\"strip_insignificant_zeros\":false},\"human\":{\"decimal_units\":{\"format\":\"%n %u\",\"units\":{\"billion\":\"mil milions\",\"million\":\"mili\u00F3\",\"quadrillion\":\"quadrili\u00F3\",\"thousand\":\"mil\",\"trillion\":\"trili\u00F3\",\"unit\":\"\"}},\"format\":{\"delimiter\":\"\",\"precision\":1,\"significant\":true,\"strip_insignificant_zeros\":true},\"storage_units\":{\"format\":\"%n %u\",\"units\":{\"byte\":{\"one\":\"Byte\",\"other\":\"Bytes\"},\"gb\":\"GB\",\"kb\":\"KB\",\"mb\":\"MB\",\"tb\":\"TB\"}}},\"percentage\":{\"format\":{\"delimiter\":\"\",\"format\":\"%n%\"}},\"precision\":{\"format\":{\"delimiter\":\"\"}}},\"routes\":{\"bio\":\"biografia\",\"department_people\":\"carrecs/departments/:department_slug\",\"departments\":\"departments\",\"events\":\"agendes\",\"executive_category_events\":\"agendes/directius\",\"executive_category_past_events\":\"agendes/directius/reunions-passades\",\"gifts\":\"regals-i-obsequis\",\"government\":\"govern\",\"government_party_events\":\"agendes/govern\",\"government_party_past_events\":\"agendes/govern/reunions-passades\",\"interest_groups\":\"grups-d-interes\",\"invitations\":\"invitacions\",\"managers\":\"directius\",\"messages\":\"contacte\",\"opposition\":\"oposicio\",\"opposition_party_events\":\"agendes/oposicio\",\"opposition_party_past_events\":\"agendes/oposicio/reunions-passades\",\"past_events\":\"agendes/reunions-passades\",\"people\":\"carrecs\",\"people_and_agendas\":\"carrecs-i-agendes\",\"people_government\":\"carrecs/govern\",\"people_managers\":\"carrecs/directius\",\"people_opposition\":\"carrecs/oposicio\",\"person_events\":\"agendes/:container_slug\",\"person_past_events\":\"agendes/:container_slug/reunions-passades\",\"person_post_tags\":\"blogs/:person_slug/tags\",\"person_posts\":\"blogs/:person_slug\",\"person_statements\":\"declaracions/:person_slug\",\"political_groups\":\"carrecs/grups-politics\",\"post_tags\":\"blogs/tags\",\"posts\":\"blogs/posts\",\"statements\":\"declaracions\",\"trips\":\"viatges-i-desplacaments\"},\"scopes\":{\"events\":{\"scopes_scope_created\":\"\u00C0mbit creat\",\"scopes_scope_updated\":\"\u00C0mbit actualitzat\"}},\"shared\":{\"currently\":\"actualment\",\"download_open_data\":{\"exports\":\"Descarregueu les dades en format reutilitzable\"},\"poll_question\":{\"multiple_choice_msg\":\"Podeu triar diverses opcions\"},\"polls\":{\"no_unanswered_polls\":\"No hi ha enquestes pendents de contestar.\",\"opinion\":\"Opineu\"},\"previous\":\"anterior\"},\"sites\":{\"events\":{\"sites_site_created\":\"Site creat\",\"sites_site_destroyed\":\"Site eliminat\",\"sites_site_modules_updated\":\"M\u00F3duls del site actualitzats\",\"sites_site_updated\":\"Site actualitzat\",\"sites_site_visibility_updated\":\"Site publicat\"}},\"support\":{\"array\":{\"last_word_connector\":\" i \",\"two_words_connector\":\" i \",\"words_connector\":\", \"}},\"time\":{\"am\":\"am\",\"formats\":{\"default\":\"%A, %d %B de %Y %H:%M:%S %z\",\"from_to\":\"De %{starts} a %{ends}\",\"long\":\"%d %B de %Y %H:%M\",\"short\":\"%d %b %H:%M\"},\"pm\":\"pm\"},\"user\":{\"census_verifications\":{\"create\":{\"error\":\"No s\\'ha pogut verificar la teva identitat. Per favor, revisa les teves dades i prova de nou. Si el problema continua, comunica\\'t amb la teva administraci\u00F3\",\"notice\":\"La teva identitat ha estat verificada correctament\"},\"form\":{\"verify\":\"Verificar\"},\"messages\":{\"already_verified\":\"El teu compte ja est\u00E0 verificat\",\"comments\":{\"not_verified\":\"La contribuci\u00F3 en que vols participar exigeix que verifiquis que est\u00E0s empadronat/ada a %{site_name}. Confirma les teves dades per continuar (seran verificades amb el padr\u00F3, si no est\u00E0s empadronat/ada, no et podrem verificar)\"},\"consultation_responses\":{\"not_verified\":\"El proc\u00E9s en el que vols participar exigeix que verifiquis que est\u00E0s empadronat/ada a %{site_name}. Confirma les teves dades per continuar (seran verificades amb el padr\u00F3, si no est\u00E0s empadronat/ada, no et podrem verificar)\"},\"contributions\":{\"not_verified\":\"La contribuci\u00F3 en que vols participar exigeix que verifiquis que est\u00E0s empadronat/ada a %{site_name}. Confirma les teves dades per continuar (seran verificades amb el padr\u00F3, si no est\u00E0s empadronat/ada, no et podrem verificar)\"},\"flags\":{\"not_verified\":\"La contribuci\u00F3 en que vols participar exigeix que verifiquis que est\u00E0s empadronat/ada a %{site_name}. Confirma les teves dades per continuar (seran verificades amb el padr\u00F3, si no est\u00E0s empadronat/ada, no et podrem verificar)\"},\"not_verified\":\"El proc\u00E9s en el que vols participar exigeix que verifiquis que est\u00E0s empadronat/ada a %{site_name}. Confirma les teves dades per continuar (seran verificades amb el padr\u00F3, si no est\u00E0s empadronat/ada, no et podrem verificar)\",\"poll_answers\":{\"not_verified\":\"El proc\u00E9s en el que vols participar exigeix que verifiquis que est\u00E0s empadronat/ada a %{site_name}. Confirma les teves dades per continuar (seran verificades amb el padr\u00F3, si no est\u00E0s empadronat/ada, no et podrem verificar)\"},\"process_contributions\":{\"not_verified\":\"La contribuci\u00F3 en que vols participar exigeix que verifiquis que est\u00E0s empadronat/ada a %{site_name}. Confirma les teves dades per continuar (seran verificades amb el padr\u00F3, si no est\u00E0s empadronat/ada, no et podrem verificar)\"},\"votes\":{\"not_verified\":\"La contribuci\u00F3 en que vols participar exigeix que verifiquis que est\u00E0s empadronat/ada a %{site_name}. Confirma les teves dades per continuar (seran verificades amb el padr\u00F3, si no est\u00E0s empadronat/ada, no et podrem verificar)\"}},\"new\":{\"title\":\"Verifica la teva identitat\"}},\"confirmations\":{\"create\":{\"error\":\"Les dades que has introduit no semblen ser correctes. Per favor, intenta-ho de nou.\",\"success\":\"Sessi\u00F3 iniciada correctament\"},\"form\":{\"document_number_notice\":\"N\u00FAmero de document (si et falla prova sense lletra)\",\"gender\":{\"female\":\"Dona\",\"male\":\"Home\"},\"hints\":{\"census_locked\":\"Aquesta informaci\u00F3 prov\u00E9 del cens, de manera que no \u00E9s editable.\",\"date_of_birth\":\"Aquesta informaci\u00F3 ser\u00E0 privada, i mai se t\\'identificar\u00E0 amb el teu perfil. La dada ser\u00E0 anonimitzada, i te la demanem nom\u00E9s per poder obtindre informaci\u00F3 segmentada i entendre millor les opinions i prefer\u00E8ncies dels ciutadans.\",\"email\":\"La teva adre\u00E7a de correu-e ser\u00E0 privada en tot moment. Nom\u00E9s la utilitzarem per enviar-te comunicacions.\",\"gender\":\"Aquesta informaci\u00F3 ser\u00E0 privada, i mai se t\\'identificarem amb el teu perfil. La dada ser\u00E0 anonimitzada, i te la demanem nom\u00E9s per poder obtindre informaci\u00F3 segmentada i entendre millor les opinions i prefer\u00E8ncies dels ciutadans.\"},\"submit\":\"Desa\",\"your_gender_is\":\"Ets...\"},\"new\":{\"error\":\"La URL no sembla correcta\",\"title\":\"Ja casi estem: completa les dades per personalitzar les alertes i participar a la web. Pots completar el teu perfil m\u00E9s endavant.\"}},\"custom_sessions\":{\"create\":{\"invalid_data\":\"Les dades rebudes no s\u00F3n v\u00E0lids. No s\\'ha pogut crear la sessi\u00F3\",\"not_confirmed\":\"Revisa el teu correu-e i fes click en l\\'enlla\u00E7 de confirmaci\u00F3 per poder accedir al servei\",\"success\":\"Sessi\u00F3 iniciada correctament\"},\"destroy\":{\"success\":\"Sessi\u00F3 terminada correctament\"},\"null_strategy\":{\"edit_form\":{\"edit\":\"Afegiu algun camp a aquest formulari\",\"session_title\":\"Si us plau, completeu els camps que falten (Null strategy)\",\"submit\":\"Enviar\"},\"new_form\":{\"session_title\":\"Iniciar sessi\u00F3 (Null strategy)\",\"submit\":\"Enviar\"}}},\"layouts\":{\"menu_subsections\":{\"admin\":\"Configuraci\u00F3\",\"alerts\":\"Las teves alertes\",\"notifications\":\"Notificacions\"}},\"notification_mailer\":{\"notification_digest\":{\"bye\":\"Salutacions\",\"hi\":\"Hola\",\"manage_notifications\":\"Recorda que pots administrar les teves notificacions a %{url}\",\"manage_notifications_html\":\"Recorda que pots administrar les teves notificacions a \\\\u003ca href=\\'%{url}\\'\\\\u003ela teva p\u00E0gina de configuraci\u00F3\\\\u003c/a\\\\u003e\",\"new_activity\":\"Hi ha nova activitat en %{site_name}\",\"subject\":\"Resum d\\'activitat en %{site_name}\"},\"single_notification\":{\"bye\":\"Salutacions\",\"hi\":\"Hola\",\"manage_notifications\":\"Recorda que pots administrar les teves notificacions a %{url}\",\"manage_notifications_html\":\"Recorda que pots administrar les teves notificacions a \\\\u003ca href=\\'%{url}\\'\\\\u003ela teva p\u00E0gina de configuraci\u00F3\\\\u003c/a\\\\u003e\",\"new_activity\":\"Hi ha una nova activitat a %{site_name}\",\"subject\":\"Nova activitat a %{site_name}: %{action_name}\"}},\"notifications\":{\"index\":{\"no_new_notifications\":\"No hi ha notificacions noves\",\"title\":\"Activitat recent\"}},\"passwords\":{\"create\":{\"error\":\"La direcci\u00F3 d\\'email que has indicat no sembla ser v\u00E0lida\",\"success\":\"Per favor, comprova el teu email per rebre les instruccions\"},\"edit\":{\"error\":\"Aquesta URL no sembla ser v\u00E0lida\",\"title\":\"Estableix la teva nova contrasenya:\"},\"edit_form\":{\"submit\":\"Canviar\"},\"update\":{\"error\":\"Hi ha hagut un problema al canviar la teva contrasenya\",\"success\":\"Sessi\u00F3 iniciada correctament\"}},\"registrations\":{\"create\":{\"email_taken\":\"El e-mail ja est\u00E0 en \u00FAs. Prova a fer login o a recuperar la contrasenya\",\"error\":\"Les dades que has introduit no semblen ser v\u00E0lides. Per favor, intenta-ho de nou.\",\"success\":\"Genial. Revisa el teu correu-e i fes click en l\\'enlla\u00E7 de confirmaci\u00F3 per continuar amb el proc\u00E9s de registre.\"}},\"sessions\":{\"create\":{\"error\":\"Les dades que has introduit no semblen ser v\u00E0lides. Per favor, intenta-ho de nou.\",\"success\":\"Sessi\u00F3 iniciada correctament\"},\"destroy\":{\"success\":\"Sessi\u00F3 terminada correctament\"},\"new\":{\"password_title\":\"No recordes la teva contrasenya? T\\'ajudem:\",\"registration_title\":\"Nou per ac\u00ED? Crea un compte:\",\"session_title\":\"Ja tens compte? Fes login\"},\"new_password_form\":{\"session_section\":\"Te\\'n recordes de la contrasenya? Fes login\",\"submit\":\"Recuperar\"},\"registration_form\":{\"submit\":\"Anem\"},\"session_form\":{\"password_section\":\"Contrasenya?\",\"submit\":\"Connectar-se\"},\"user_already_authenticated\":\"Ja est\u00E0s autenticat\",\"user_not_authorized\":\"No est\u00E0s autoritzat.\",\"user_not_signed_in\":\"Registra\\'t o fes login per poder continuar.\"},\"settings\":{\"form\":{\"gender\":{\"female\":\"Dona\",\"male\":\"Home\"},\"hints\":{\"census_locked\":\"Aquesta informaci\u00F3 prov\u00E9 del cens, de manera que no \u00E9s editable.\",\"date_of_birth\":\"Aquesta informaci\u00F3 ser\u00E0 privada, i nunca s\\'identificar\u00E0 amb el teu perfil. La dada ser\u00E0 anonimitzada, i te la demanem nom\u00E9s per a poder obtindre informaci\u00F3 segmentada i entendre millor les opinions i prefer\u00E8ncies dels ciutadans.\",\"email\":\"La teva adre\u00E7a de correu-e ser\u00E0 privada en tot moment. Nom\u00E9s l\\'utilitzarem per enviar-te comunicacions.\",\"gender\":\"Aquesta informaci\u00F3 ser\u00E0 privada, i nunca s\\'identificar\u00E0 amb el teu perfil. La dada ser\u00E0 anonimitzada, i te la demanem nom\u00E9s per a poder obtindre informaci\u00F3 segmentada i entendre millor les opinions i prefer\u00E8ncies dels ciutadans.\"},\"submit\":\"Guardar\",\"your_gender_is\":\"Eres...\"},\"show\":{\"title\":\"El teu compte\"},\"update\":{\"error\":\"Hi ha hagut un error al desar la teva configuraci\u00F3\",\"success\":\"Configuraci\u00F3 desada amb \u00E9xit\"}},\"subscription_preferences\":{\"update\":{\"error\":\"Ha ocorregut un problema al actualitzar: %{details}\",\"update_success\":\"S\\'han actualitzat les dades correctament\"}},\"subscriptions\":{\"create\":{\"create_success\":\"S\\'ha realitzat la suscripci\u00F3\",\"delete_success\":\"S\\'ha cancel\u00B7lat aquesta suscripci\u00F3\",\"error\":\"Ha ocorregut un problema en subscriure\\'t: %{details}. Si ja est\u00E0s registrat, identifica\\'t \\\\u003ca href=\\\\\"%{sign_in_path}\\\\\"\\\\u003eac\u00ED\\\\u003c/a\\\\u003e.\"},\"destroy\":{\"success\":\"S\\'ha cancel\u00B7lat aquesta suscripci\u00F3\"},\"index\":{\"areas\":\"\u00C0rees\",\"frequency\":\"Freq\u00FC\u00E8ncia\",\"modules\":{\"gobierto_budgets\":\"Pressupostos\",\"gobierto_observatory\":\"Observatori\",\"gobierto_people\":\"Persones\"},\"notification_frequency\":{\"daily\":\"Resum diari\",\"disabled\":\"Deshabilitades\",\"hourly\":\"Resum cada hora\",\"immediate\":\"Inmediates\",\"submit\":\"Desa\",\"weekly\":\"Resum setmanal\"},\"people\":\"Persones\",\"submit\":\"Desa\",\"title\":\"Les teves alertes\",\"whole_site\":\"Tot el site\"},\"subscribable_box\":{\"cancel\":\"Ja est\u00E0s subscrit, cancel\u00B7lar?\",\"form\":{\"placeholders\":{\"user_email\":\"El teu correu-e\"},\"submit\":\"Subscriu-me\"},\"subscribe\":\"Subscriu-me\"},\"subscribable_button\":{\"event_followed\":\"Esdeveniment seguit!\",\"follow_event\":\"Segueix l\\'esdeveniment\",\"follow_group_process\":\"Segueix el grup\",\"follow_issue\":\"Segueix el tema\",\"follow_person\":\"Segueix la persona\",\"follow_process\":\"Segueix el proc\u00E9s\",\"follow_scope\":\"Segueix l\u00B4\u00E0mbit\",\"group_process_followed\":\"Grup seguit!\",\"issue_followed\":\"Tema seguit!\",\"manage_subscriptions\":\"Gestionar les teves alertes\",\"person_followed\":\"Persona seguida!\",\"process_followed\":\"Proc\u00E9s seguit!\",\"scope_followed\":\"\u00C0mbit seguit!\"}},\"user_mailer\":{\"confirmation_instructions\":{\"bye\":\"Salutacions\",\"click_link\":\"Per confirmar el teu registre fes click en el seg\u00FCent enlla\u00E7:\",\"hi\":\"Hola\",\"ignore_link\":\"si no t\\'estaves subscrivint a %{site_name}, pots ignorar este missatge\",\"subject\":\"Completa el teu registre en %{site_name}\"},\"reset_password_instructions\":{\"bye\":\"Salutacions\",\"click_link\":\"Has solicitat restaurar la teva contrasenya. Pulsa en el seg\u00FCent enlla\u00E7 i segueix les instruccions:\",\"hi\":\"Hola\",\"subject\":\"Restaura la teva contrasenya\"},\"welcome\":{\"alerts\":\"Pots gestionar les teves alertes des del teu compte: %{subscriptions_url}\",\"bye\":\"Salutacions\",\"hi\":\"Hola\",\"subject\":\"Benvingut\",\"success\":\"El registre s\\'ha completat amb \u00E8xit. Ara pots interactuar a %{site_url} com usuari registrat.\"}}},\"users\":{\"events\":{\"users_user_updated\":\"Usuari actualitzat\"}},\"views\":{\"delete\":\"Eliminar\",\"delete_confirm\":\"Est\u00E0s segur? Aquesta operaci\u00F3 no \u00E9s reversible\",\"edit\":\"Edita\",\"forms\":{\"max_characters\":\"M\u00E0x. %{length} car\u00E0cters\",\"required\":\"Obligatori\",\"required_and_max_characters\":\"Obligatori i m\u00E0x. %{length} car\u00E0cters\"},\"of\":\"de\",\"pagination\":{\"next\":\"Seg\u00FCent\",\"previous\":\"Anterior\",\"truncate\":\"\\\\u0026hellip;\"},\"see\":{\"less\":\"veure menys\",\"more\":\"veure m\u00E9s\"}}}'));\nI18n.translations[\"en\"] = I18n.extend((I18n.translations[\"en\"] || {}), JSON.parse('{\"activemodel\":{\"attributes\":{\"gobierto_admin/admin_confirmation_form\":{\"email\":\"Email\"},\"gobierto_admin/admin_edit_password_form\":{\"password\":\"Password\",\"password_confirmation\":\"Password confirmation\"},\"gobierto_admin/admin_form\":{\"email\":\"Email\",\"name\":\"Name\",\"password\":\"Password\",\"password_confirmation\":\"Password confirmation\",\"site_ids\":\"Sites\",\"site_modules\":\"Modules\"},\"gobierto_admin/admin_group_form\":{\"name\":\"Group name\"},\"gobierto_admin/admin_invitation_form\":{\"emails\":\"Emails\",\"site_ids\":\"Sites\"},\"gobierto_admin/admin_new_password_form\":{\"email\":\"Email\"},\"gobierto_admin/file_attachment_form\":{\"description\":\"Description\",\"file_digest\":\"This file\",\"name\":\"Name\"},\"gobierto_admin/gobierto_budgets/options_form\":{\"budgets_guide_page\":\"Budgets guide page\",\"comparison_compare_municipalities\":\"Show specific municipalities\",\"comparison_context_table_enabled\":\"Show context table\",\"comparison_show_widget\":\"Show comparison widget\",\"comparison_tool_enabled\":\"Comparison\",\"feedback_emails\":\"Email to receive particpations\",\"receipt_configuration\":\"Receipt configuration\"},\"gobierto_admin/gobierto_calendars/calendar_configuration_form\":{\"ibm_notes_pwd\":\"Password\",\"ibm_notes_url\":\"URL\",\"ibm_notes_usr\":\"Username\",\"microsoft_exchange_pwd\":\"Password\",\"microsoft_exchange_url\":\"URL\",\"microsoft_exchange_usr\":\"Username\"},\"gobierto_admin/gobierto_calendars/event_form\":{\"attachment_file\":\"Attached file\",\"description\":\"Description\",\"ends_at\":\"End date\",\"starts_at\":\"Start date\",\"title\":\"Title\",\"title_translations\":\"Title\"},\"gobierto_admin/gobierto_cms/page_form\":{\"body\":\"Body\",\"published_on\":\"Publication date\",\"slug\":\"URL\",\"title\":\"Title\"},\"gobierto_admin/gobierto_cms/section_form\":{\"slug\":\"URL\",\"title\":\"Title\"},\"gobierto_admin/gobierto_common/collection_form\":{\"container_global_id\":\"Container\",\"container_id\":\"Container\",\"item_type\":\"Type\",\"slug\":\"URL\",\"title\":\"Title\"},\"gobierto_admin/gobierto_common/custom_field_form\":{\"date\":\"Date\",\"field_type\":\"Type of field\",\"image\":\"Image\",\"indicators\":\"Indicators\",\"localized_paragraph\":\"Long text\",\"localized_string\":\"Text (line)\",\"multiple_options\":\"Multiple selections\",\"name\":\"Name\",\"numeric\":\"Number\",\"options\":\"Options\",\"paragraph\":\"Long text without translations\",\"single_option\":\"One selection\",\"string\":\"Text without translations (line)\",\"uid\":\"Identifier\",\"vocabulary_options\":\"Vocabulary\"},\"gobierto_admin/gobierto_common/term_form\":{\"description\":\"Description\",\"external_id\":\"External ID\",\"name\":\"Name\",\"slug\":\"Slug\",\"term_id\":\"Parent Term\"},\"gobierto_admin/gobierto_common/vocabulary_form\":{\"name\":\"Name\"},\"gobierto_admin/gobierto_data/dataset_form\":{\"name\":\"Name\",\"slug\":\"Slug\",\"table_name\":\"Table name\"},\"gobierto_admin/gobierto_data/settings_form\":{\"api_settings_max_dataset_size_for_queries\":\"Datasets maximum size without limiting the preview (MB)\",\"db_config\":\"Database connection configuration\",\"frontend_enabled\":\"Front-end visible\"},\"gobierto_admin/gobierto_investments/project_form\":{\"external_id\":\"External ID\",\"title\":\"Title\"},\"gobierto_admin/gobierto_observatory/settings_form\":{\"observatory_config\":\"Observatory configuration\"},\"gobierto_admin/gobierto_people/person_form\":{\"avatar_file\":\"Avatar\",\"avatar_url\":\"Avatar\",\"bio\":\"Bio\",\"bio_file\":\"Attached file\",\"bio_url\":\"Attached file\",\"category\":\"Category\",\"charge\":\"Position\",\"email\":\"Email\",\"name\":\"Name\",\"party\":\"Party\",\"political_group_id\":\"Political group\"},\"gobierto_admin/gobierto_people/person_post_form\":{\"body\":\"Body\",\"tags\":\"Tags\",\"title\":\"Title\"},\"gobierto_admin/gobierto_people/person_statement_form\":{\"attachment_file\":\"Attached file\",\"published_on\":\"Publishing date\",\"title\":\"Title\",\"title_translations\":\"Title\"},\"gobierto_admin/gobierto_people/political_group_form\":{\"name\":\"Group name\"},\"gobierto_admin/gobierto_plans/node_form\":{\"category_id\":\"Category\",\"ends_at\":\"End date\",\"name\":\"Project\",\"progress\":\"Progress\",\"starts_at\":\"Start date\",\"status_id\":\"Status\"},\"gobierto_admin/gobierto_plans/plan_form\":{\"configuration_data\":\"Configuration\",\"css\":\"CSS\",\"csv_file\":\"CSV file\",\"footer\":\"Footer\",\"introduction\":\"Introduction\",\"plan_type_id\":\"Type\",\"slug\":\"url\",\"statuses_vocabulary_id\":\"Statuses vocabulary\",\"title\":\"Title\",\"vocabulary_id\":\"Categories vocabulary\",\"year\":\"Year\"},\"gobierto_admin/gobierto_plans/plan_type_form\":{\"name\":\"Name\",\"slug\":\"url\"},\"gobierto_admin/gobierto_visualizations/settings_form\":{\"visualizations_config\":\"Visualizations configuration\"},\"gobierto_admin/issue_form\":{\"name\":\"Name\",\"slug\":\"URL\"},\"gobierto_admin/scope_form\":{\"name\":\"Name\"},\"gobierto_admin/site_form\":{\"admin_custom_code\":\"Admin custom code\",\"available_locales\":\"Available locales\",\"default_locale\":\"Default locale\",\"domain\":\"Domain\",\"foot_markup\":\"Foot HTML\",\"google_analytics_id\":\"Google Analytics code\",\"head_markup\":\"Head HTML\",\"home_page\":\"Home module\",\"home_page_item_id\":\"Home page\",\"links_markup\":\"Links HTML\",\"logo_file\":\"Logo\",\"name\":\"Entity ame\",\"organization_id\":\"Organization identifier (INE code)\",\"organization_name\":\"Organization\",\"populate_data_api_token\":\"API token Populate Data\",\"privacy_page_id\":\"Privacy page\",\"raw_configuration_variables\":\"Other configuration variables\",\"registration_disabled\":\"Disable registration (only hides links to registration/login)\",\"reply_to_email\":\"Email address for answers\",\"title\":\"Site name\"},\"gobierto_admin/user_form\":{\"email\":\"Email\",\"name\":\"Name\"},\"gobierto_admin/user_password_form\":{\"password\":\"Password\",\"password_confirmation\":\"Password confirmation\"},\"gobierto_dashboards/dashboard_form\":{\"title\":\"Title\"},\"gobierto_people/person_message\":{\"body\":\"Message\",\"email\":\"Your email\",\"name\":\"Your name\"},\"user/census_verification_form\":{\"date_of_birth\":\"Date of birth\",\"document_number\":\"Document number\",\"site\":\"Site\"},\"user/confirmation_form\":{\"date_of_birth\":\"Date of birth\",\"document_number\":\"Document number\",\"email\":\"Your e-mail\",\"gender\":\"Gender\",\"name\":\"Your name\",\"password\":\"Your password\",\"password_confirmation\":\"Your password, one more time\"},\"user/confirmation_request_form\":{\"email\":\"Your e-mail\"},\"user/edit_password_form\":{\"password\":\"Your password\",\"password_confirmation\":\"Your password, one more time\"},\"user/new_password_form\":{\"email\":\"Your e-mail\"},\"user/registration_form\":{\"email\":\"Your e-mail\"},\"user/session_form\":{\"email\":\"Your e-mail\",\"password\":\"Password\"},\"user/settings_form\":{\"date_of_birth\":\"Date of birth\",\"email\":\"Your e-mail\",\"gender\":\"Gender\",\"name\":\"Your name\",\"password\":\"Your password\",\"password_confirmation\":\"Your password, one more time\"},\"user/subscription_form\":{\"subscribable\":\"Resource\",\"user\":\"User\",\"user_email\":\"E-mail\"}},\"errors\":{\"models\":{\"gobierto_admin/gobierto_common/vocabulary_terms_import_form\":{\"attributes\":{\"base\":{\"invalid_row\":\"There is an invalid row: %{row_data}\"}}},\"gobierto_admin/gobierto_data/dataset_form\":{\"attributes\":{\"table_name\":{\"invalid_table\":\"Unable to access the table. Error message: \\\\\"%{error_message}\\\\\"\"}}},\"gobierto_admin/gobierto_data/settings_form\":{\"attributes\":{\"db_config\":{\"invalid_connection\":\"Unable to connect using configuration data. Error message: \\\\\"%{error_message}\\\\\"\",\"invalid_format\":\"The configuration does not have a valid JSON format\"}}},\"gobierto_admin/gobierto_observatory/settings_form\":{\"attributes\":{\"observatory_config\":{\"invalid_format\":\"The configuration does not have a valid JSON format\",\"invalid_values\":\"The configuration does not have valid values\"}}},\"gobierto_admin/gobierto_plans/plan_data_form\":{\"attributes\":{\"base\":{\"category_not_found\":\"One of the categories couldn\\'t be found. Row content: %{row_data}\",\"external_id_taken\":\"The external_id field is already in use, either because another row has the same external_id or because it was empty and this value was automatically assigned. Row content: %{row_data}\",\"file_not_found\":\"File not found\",\"invalid_columns\":\"Required columns are missing\",\"invalid_format\":\"Invalid file format\",\"invalid_row\":\"There is an invalid row: %{row_data}\",\"status_missing\":\"The state on the row has not been found in the corresponding statuses vocabulary or there is a status in the row but none statuses vocabulary has been configured in the plan. Row content: %{row_data}\",\"term_not_found\":\"The term \\'%{term}\\' couldn\\'t be found in the vocabulary \\'%{vocabulary}\\' used by the column \\'Node.%{uid}\\'\",\"used_resource\":\"The vocabulary contains terms used in other parts of the application\"}}},\"gobierto_admin/gobierto_plans/plan_table_custom_fields_form\":{\"attributes\":{\"base\":{\"file_not_found\":\"File not found\",\"invalid_columns\":\"Required columns are missing\",\"invalid_format\":\"Invalid file format\"}}},\"gobierto_admin/gobierto_plans/projects_form\":{\"attributes\":{\"base\":{\"category_missing\":\"Category not found in project data. Please, provide a valid category_id or category_external_id. Project data: %{json_data}\",\"failed_import\":\"The project with the following data could not be imported: %{json_data}\",\"status_missing\":\"Status not found in project data. Please, provide a valid status_id or status_external_id. Project data: %{json_data}\"}}},\"gobierto_admin/gobierto_visualizations/settings_form\":{\"attributes\":{\"visualizations_config\":{\"invalid_format\":\"The configuration does not have a valid JSON format\",\"invalid_values\":\"The configuration does not have valid values\"}}},\"gobierto_data/dataset_form\":{\"attributes\":{\"data_file\":{\"no_file_included\":\"The file hasn\\'t been uploaded. Please, review the request and ensure the file content has been sent in the request\"}}}}},\"models\":{\"gobierto_admin/admin_confirmation_form\":\"Confirmation\",\"gobierto_admin/admin_edit_password_form\":\"Password change\",\"gobierto_admin/admin_form\":\"Admin\",\"gobierto_admin/admin_group_form\":\"Group\",\"gobierto_admin/admin_invitation_form\":\"Invitation\",\"gobierto_admin/admin_new_password_form\":\"Password recovery\",\"gobierto_admin/file_attachment_form\":\"Document change\",\"gobierto_admin/gobierto_budgets/options_form\":\"Options\",\"gobierto_admin/gobierto_calendars/event_form\":\"Event\",\"gobierto_admin/gobierto_cms/page_form\":\"Page\",\"gobierto_admin/gobierto_cms/section_form\":\"Section\",\"gobierto_admin/gobierto_common/collection_form\":\"Collection\",\"gobierto_admin/gobierto_common/content_block_form\":\"Content block\",\"gobierto_admin/gobierto_common/term_form\":\"Term\",\"gobierto_admin/gobierto_common/vocabulary_form\":\"Vocabulary\",\"gobierto_admin/gobierto_people/person_form\":\"Person\",\"gobierto_admin/gobierto_people/person_post_form\":\"Post\",\"gobierto_admin/gobierto_people/person_statement_form\":\"Statement\",\"gobierto_admin/gobierto_people/political_group_form\":\"Political group\",\"gobierto_admin/issue_form\":\"Issue\",\"gobierto_admin/scope_form\":\"Scope\",\"gobierto_admin/site_form\":\"Site\",\"gobierto_admin/user_form\":\"User\",\"gobierto_admin/user_password_form\":\"Password change\",\"gobierto_admin/user_welcome_message_form\":\"Welcome message\",\"gobierto_people/person_message\":\"Message\",\"user/census_verification_form\":\"Census verification\",\"user/confirmation_form\":\"Confirmation\",\"user/confirmation_request_form\":\"Confirmation request\",\"user/edit_password_form\":\"Change password\",\"user/new_password_form\":\"Recover password\",\"user/registration_form\":\"Registration\",\"user/session_form\":\"Session\",\"user/settings_form\":\"Settings\",\"user/subscription_form\":\"Subscription\"}},\"activerecord\":{\"attributes\":{\"gobierto_admin/api_token\":{\"domain\":\"Domain\",\"name\":\"Name\"},\"gobierto_admin/permission/site_option\":{\"resource_types\":{\"admins\":\"Admins\",\"calendars\":\"Calendars\",\"custom_fields\":\"Custom fields\",\"customize\":\"Customize site\",\"documents\":\"Documents\",\"templates\":\"Templates\",\"vocabularies\":\"Vocabularies\"}},\"gobierto_attachments/attachment\":{\"current_version\":\"Current version\",\"description\":\"Description\",\"file_digest\":\"File\",\"file_name\":\"File name\",\"file_size\":\"File size\",\"name\":\"Name\",\"url\":\"URL\"},\"gobierto_calendars/event_attendee\":{\"charge\":\"Position\",\"name\":\"Name\",\"person\":\"Person\"},\"gobierto_calendars/event_location\":{\"address\":\"Address\",\"name\":\"Name\"},\"gobierto_calendars/filtering_rule\":{\"remove_filtering_text\":\"Remove filtering text\"},\"gobierto_cms/page\":{\"body\":\"Body\",\"slug\":\"URL\",\"title\":\"Title\"},\"gobierto_common/api_token_form\":{\"domain\":\"Domain\",\"name\":\"Name\"},\"gobierto_common/content_block_field\":{\"field_type\":\"Field type\",\"field_types\":{\"currency\":\"Currency\",\"date\":\"Date\",\"text\":\"Text\",\"url\":\"URL\"}},\"gobierto_people/trip\":{\"accomodation_expenses\":\"Accomodation expenses\",\"food_expenses\":\"Food expenses\",\"other_expenses\":\"Other expenses\",\"total_expenses\":\"Total expenses\",\"transport_expenses\":\"Transport\"},\"user/api_token\":{\"domain\":\"Domain\",\"name\":\"Name\"}},\"enums\":{\"gobierto_calendars/filtering_rule\":{\"action\":{\"ignore\":\"Ignore\",\"import\":\"Import\",\"import_as_draft\":\"Import as draft\"},\"condition\":{\"contains\":\"Contains\",\"ends_with\":\"Ends with\",\"not_contains\":\"Not contains\",\"not_starts_with\":\"Not starts with\",\"starts_with\":\"Starts with\"},\"field\":{\"description\":\"Description\",\"title\":\"Title\"}}},\"errors\":{\"messages\":{\"record_invalid\":\"Validation failed: %{errors}\",\"restrict_dependent_destroy\":{\"has_many\":\"Cannot delete record because dependent %{record} exist\",\"has_one\":\"Cannot delete record because a dependent %{record} exists\"}},\"models\":{\"gobierto_admin/api_token\":{\"attributes\":{\"domain\":{\"not_valid_format\":\"Invalid format\"}}},\"gobierto_common/custom_field_record\":{\"attributes\":{\"item\":{\"wrong_item_class\":\"not associated with an item of the appropriate class\"}}},\"gobierto_common/term\":{\"attributes\":{\"base\":{\"has_dependent_resources_html\":\"Is being used by the following resources:\\\\u003c/br\\\\u003e %{dependencies_list}\"}}},\"gobierto_data/connection\":{\"missing_configuration\":\"Database configuration missing\"},\"user/api_token\":{\"attributes\":{\"domain\":{\"not_valid_format\":\"Invalid format\"}}}}},\"messages\":{\"gobierto_attachments/attachment\":{\"file_too_big\":\"File exceeds max size\"}},\"models\":{\"gobierto_attachments/attachment\":\"Document\",\"gobierto_calendars/event\":\"Event\",\"gobierto_calendars/event_attendee\":\"Attendee\",\"gobierto_calendars/event_location\":\"Location\",\"gobierto_cms/news\":\"News\",\"gobierto_cms/news_plural\":\"News\",\"gobierto_cms/page\":\"Page\",\"gobierto_cms/pages_collection\":\"Pages Collection\",\"gobierto_common/content_block_field\":\"Field\",\"gobierto_data/dataset\":{\"one\":\"Dataset\",\"other\":\"Datasets\"},\"gobierto_investments/project\":{\"one\":\"Project\",\"other\":\"Projects\"},\"gobierto_people/person\":\"Officer\",\"gobierto_people/person_post\":\"Post\",\"gobierto_people/person_statement\":\"Statement\",\"gobierto_plans/node\":{\"one\":\"Project\",\"other\":\"Projects\"},\"gobierto_plans/plan\":{\"one\":\"Plan\",\"other\":\"Plans\"},\"user\":\"User\"}},\"admin_gobierto_calendars\":{\"events\":{\"admin_gobierto_calendars_calendars_synchronized\":\"Synchronized calendars\"}},\"admin_groups\":{\"events\":{\"admin_groups_admin_group_created\":\"Admin group created\",\"admin_groups_admin_group_updated\":\"Admin group updated\"}},\"admins\":{\"events\":{\"admins_admin_authorization_level_updated\":\"Admin authorization level updated\",\"admins_admin_created\":\"Admin created\",\"admins_admin_group_member_created\":\"Admin added to permissions group\",\"admins_admin_group_member_deleted\":\"Admin removed from permissions group\",\"admins_admin_updated\":\"Admin updated\",\"admins_invitation_accepted\":\"Admin invitation accepted\",\"admins_invitation_created\":\"Admin invited\"}},\"based_on\":\"Web based on\",\"census\":{\"events\":{\"census_census_imported\":\"Census imported\"}},\"concerns\":{\"gobierto_common\":{\"api_tokens_concern\":{\"create\":{\"success\":\"API Token was successfully created\"},\"destroy\":{\"failed\":\"API Token couldn\\'t be deleted\",\"success\":\"API Token deleted successfully\"},\"update\":{\"success\":\"API Token was successfully updated\"}}}},\"controllers\":{\"gobierto_budgets\":{\"api\":{\"data\":{\"expense\":\"Expense\",\"income\":\"Income\"}},\"budgets_execution\":{\"index\":{\"alert\":\"There\\'s no data for %{year} so we are showing you the first year with data\"}}}},\"cookies_eu\":{\"cookies_text\":\"Cookies help us deliver our services. By using our services, you agree to our use of cookies.\",\"learn_more\":\"Learn more\",\"ok\":\"OK\"},\"countries\":{\"AC\":\"Ascension Island\",\"AD\":\"Andorra\",\"AE\":\"United Arab Emirates\",\"AF\":\"Afghanistan\",\"AG\":\"Antigua \\\\u0026 Barbuda\",\"AI\":\"Anguilla\",\"AL\":\"Albania\",\"AM\":\"Armenia\",\"AN\":\"Netherlands Antilles\",\"AO\":\"Angola\",\"AQ\":\"Antarctica\",\"AR\":\"Argentina\",\"AS\":\"American Samoa\",\"AT\":\"Austria\",\"AU\":\"Australia\",\"AW\":\"Aruba\",\"AX\":\"\u00C5land Islands\",\"AZ\":\"Azerbaijan\",\"BA\":\"Bosnia \\\\u0026 Herzegovina\",\"BB\":\"Barbados\",\"BD\":\"Bangladesh\",\"BE\":\"Belgium\",\"BF\":\"Burkina Faso\",\"BG\":\"Bulgaria\",\"BH\":\"Bahrain\",\"BI\":\"Burundi\",\"BJ\":\"Benin\",\"BL\":\"St. Barth\u00E9lemy\",\"BM\":\"Bermuda\",\"BN\":\"Brunei\",\"BO\":\"Bolivia\",\"BQ\":\"Caribbean Netherlands\",\"BR\":\"Brazil\",\"BS\":\"Bahamas\",\"BT\":\"Bhutan\",\"BV\":\"Bouvet Island\",\"BW\":\"Botswana\",\"BY\":\"Belarus\",\"BZ\":\"Belize\",\"CA\":\"Canada\",\"CC\":\"Cocos (Keeling) Islands\",\"CD\":\"Congo - Kinshasa\",\"CF\":\"Central African Republic\",\"CG\":\"Congo - Brazzaville\",\"CH\":\"Switzerland\",\"CI\":\"C\u00F4te d\u2019Ivoire\",\"CK\":\"Cook Islands\",\"CL\":\"Chile\",\"CM\":\"Cameroon\",\"CN\":\"China\",\"CO\":\"Colombia\",\"CP\":\"Clipperton Island\",\"CR\":\"Costa Rica\",\"CU\":\"Cuba\",\"CV\":\"Cape Verde\",\"CW\":\"Cura\u00E7ao\",\"CX\":\"Christmas Island\",\"CY\":\"Cyprus\",\"CZ\":\"Czech Republic\",\"DE\":\"Germany\",\"DG\":\"Diego Garcia\",\"DJ\":\"Djibouti\",\"DK\":\"Denmark\",\"DM\":\"Dominica\",\"DO\":\"Dominican Republic\",\"DZ\":\"Algeria\",\"EA\":\"Ceuta \\\\u0026 Melilla\",\"EC\":\"Ecuador\",\"EE\":\"Estonia\",\"EG\":\"Egypt\",\"EH\":\"Western Sahara\",\"ER\":\"Eritrea\",\"ES\":\"Spain\",\"ET\":\"Ethiopia\",\"EU\":\"European Union\",\"FI\":\"Finland\",\"FJ\":\"Fiji\",\"FK\":\"Falkland Islands\",\"FM\":\"Micronesia\",\"FO\":\"Faroe Islands\",\"FR\":\"France\",\"GA\":\"Gabon\",\"GB\":\"United Kingdom\",\"GD\":\"Grenada\",\"GE\":\"Georgia\",\"GF\":\"French Guiana\",\"GG\":\"Guernsey\",\"GH\":\"Ghana\",\"GI\":\"Gibraltar\",\"GL\":\"Greenland\",\"GM\":\"Gambia\",\"GN\":\"Guinea\",\"GP\":\"Guadeloupe\",\"GQ\":\"Equatorial Guinea\",\"GR\":\"Greece\",\"GS\":\"South Georgia \\\\u0026 South Sandwich Islands\",\"GT\":\"Guatemala\",\"GU\":\"Guam\",\"GW\":\"Guinea-Bissau\",\"GY\":\"Guyana\",\"HK\":\"Hong Kong SAR China\",\"HM\":\"Heard \\\\u0026 McDonald Islands\",\"HN\":\"Honduras\",\"HR\":\"Croatia\",\"HT\":\"Haiti\",\"HU\":\"Hungary\",\"IC\":\"Canary Islands\",\"ID\":\"Indonesia\",\"IE\":\"Ireland\",\"IL\":\"Israel\",\"IM\":\"Isle of Man\",\"IN\":\"India\",\"IO\":\"British Indian Ocean Territory\",\"IQ\":\"Iraq\",\"IR\":\"Iran\",\"IS\":\"Iceland\",\"IT\":\"Italy\",\"JE\":\"Jersey\",\"JM\":\"Jamaica\",\"JO\":\"Jordan\",\"JP\":\"Japan\",\"KE\":\"Kenya\",\"KG\":\"Kyrgyzstan\",\"KH\":\"Cambodia\",\"KI\":\"Kiribati\",\"KM\":\"Comoros\",\"KN\":\"St. Kitts \\\\u0026 Nevis\",\"KP\":\"North Korea\",\"KR\":\"South Korea\",\"KW\":\"Kuwait\",\"KY\":\"Cayman Islands\",\"KZ\":\"Kazakhstan\",\"LA\":\"Laos\",\"LB\":\"Lebanon\",\"LC\":\"St. Lucia\",\"LI\":\"Liechtenstein\",\"LK\":\"Sri Lanka\",\"LR\":\"Liberia\",\"LS\":\"Lesotho\",\"LT\":\"Lithuania\",\"LU\":\"Luxembourg\",\"LV\":\"Latvia\",\"LY\":\"Libya\",\"MA\":\"Morocco\",\"MC\":\"Monaco\",\"MD\":\"Moldova\",\"ME\":\"Montenegro\",\"MF\":\"St. Martin\",\"MG\":\"Madagascar\",\"MH\":\"Marshall Islands\",\"MK\":\"Macedonia\",\"ML\":\"Mali\",\"MM\":\"Myanmar (Burma)\",\"MN\":\"Mongolia\",\"MO\":\"Macau SAR China\",\"MP\":\"Northern Mariana Islands\",\"MQ\":\"Martinique\",\"MR\":\"Mauritania\",\"MS\":\"Montserrat\",\"MT\":\"Malta\",\"MU\":\"Mauritius\",\"MV\":\"Maldives\",\"MW\":\"Malawi\",\"MX\":\"Mexico\",\"MY\":\"Malaysia\",\"MZ\":\"Mozambique\",\"NA\":\"Namibia\",\"NC\":\"New Caledonia\",\"NE\":\"Niger\",\"NF\":\"Norfolk Island\",\"NG\":\"Nigeria\",\"NI\":\"Nicaragua\",\"NL\":\"Netherlands\",\"NO\":\"Norway\",\"NP\":\"Nepal\",\"NR\":\"Nauru\",\"NU\":\"Niue\",\"NZ\":\"New Zealand\",\"OM\":\"Oman\",\"PA\":\"Panama\",\"PE\":\"Peru\",\"PF\":\"French Polynesia\",\"PG\":\"Papua New Guinea\",\"PH\":\"Philippines\",\"PK\":\"Pakistan\",\"PL\":\"Poland\",\"PM\":\"St. Pierre \\\\u0026 Miquelon\",\"PN\":\"Pitcairn Islands\",\"PR\":\"Puerto Rico\",\"PS\":\"Palestinian Territories\",\"PT\":\"Portugal\",\"PW\":\"Palau\",\"PY\":\"Paraguay\",\"QA\":\"Qatar\",\"QO\":\"Outlying Oceania\",\"RE\":\"R\u00E9union\",\"RO\":\"Romania\",\"RS\":\"Serbia\",\"RU\":\"Russia\",\"RW\":\"Rwanda\",\"SA\":\"Saudi Arabia\",\"SB\":\"Solomon Islands\",\"SC\":\"Seychelles\",\"SD\":\"Sudan\",\"SE\":\"Sweden\",\"SG\":\"Singapore\",\"SH\":\"St. Helena\",\"SI\":\"Slovenia\",\"SJ\":\"Svalbard \\\\u0026 Jan Mayen\",\"SK\":\"Slovakia\",\"SL\":\"Sierra Leone\",\"SM\":\"San Marino\",\"SN\":\"Senegal\",\"SO\":\"Somalia\",\"SR\":\"Suriname\",\"SS\":\"South Sudan\",\"ST\":\"S\u00E3o Tom\u00E9 \\\\u0026 Pr\u00EDncipe\",\"SV\":\"El Salvador\",\"SX\":\"Saint Martin\",\"SY\":\"Syria\",\"SZ\":\"Swaziland\",\"TA\":\"Tristan da Cunha\",\"TC\":\"Turks \\\\u0026 Caicos Islands\",\"TD\":\"Chad\",\"TF\":\"French Southern Territories\",\"TG\":\"Togo\",\"TH\":\"Thailand\",\"TJ\":\"Tajikistan\",\"TK\":\"Tokelau\",\"TL\":\"Timor-Leste\",\"TM\":\"Turkmenistan\",\"TN\":\"Tunisia\",\"TO\":\"Tonga\",\"TR\":\"Turkey\",\"TT\":\"Trinidad \\\\u0026 Tobago\",\"TV\":\"Tuvalu\",\"TW\":\"Taiwan\",\"TZ\":\"Tanzania\",\"UA\":\"Ukraine\",\"UG\":\"Uganda\",\"UM\":\"U.S. Outlying Islands\",\"US\":\"United States\",\"UY\":\"Uruguay\",\"UZ\":\"Uzbekistan\",\"VA\":\"Vatican City\",\"VC\":\"St. Vincent \\\\u0026 Grenadines\",\"VE\":\"Venezuela\",\"VG\":\"British Virgin Islands\",\"VI\":\"U.S. Virgin Islands\",\"VN\":\"Vietnam\",\"VU\":\"Vanuatu\",\"WF\":\"Wallis \\\\u0026 Futuna\",\"WS\":\"Samoa\",\"XK\":\"Kosovo\",\"YE\":\"Yemen\",\"YT\":\"Mayotte\",\"ZA\":\"South Africa\",\"ZM\":\"Zambia\",\"ZW\":\"Zimbabwe\"},\"country\":\"Spain\",\"date\":{\"abbr_day_names\":[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],\"abbr_month_names\":[null,\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],\"day_names\":[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],\"formats\":{\"day_month\":\"%d/%m\",\"default\":\"%Y-%m-%d\",\"long\":\"%B %d, %Y\",\"short\":\"%b %d %Y\",\"shortest\":\"%d %b %y\"},\"month_names\":[null,\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],\"order\":[\"year\",\"month\",\"day\"]},\"datetime\":{\"distance_in_words\":{\"about_x_hours\":{\"one\":\"about 1 hour ago\",\"other\":\"about %{count} hours ago\"},\"about_x_months\":{\"one\":\"about 1 month ago\",\"other\":\"about %{count} months ago\"},\"about_x_years\":{\"one\":\"about 1 year ago\",\"other\":\"about %{count} years ago\"},\"almost_x_years\":{\"one\":\"almost 1 year ago\",\"other\":\"almost %{count} years ago\"},\"half_a_minute\":\"half a minute ago\",\"less_than_x_minutes\":{\"one\":\"less than a minute ago\",\"other\":\"less than %{count} minutes ago\"},\"less_than_x_seconds\":{\"one\":\"less than 1 second ago\",\"other\":\"less than %{count} seconds ago\"},\"over_x_years\":{\"one\":\"over 1 year ago\",\"other\":\"over %{count} years ago\"},\"x_days\":{\"one\":\"1 day ago\",\"other\":\"%{count} days ago\"},\"x_minutes\":{\"one\":\"1 minute ago\",\"other\":\"%{count} minutes ago\"},\"x_months\":{\"one\":\"1 month ago\",\"other\":\"%{count} months ago\"},\"x_seconds\":{\"one\":\"1 second ago\",\"other\":\"%{count} seconds ago\"},\"x_years\":{\"one\":\"1 year ago\",\"other\":\"%{count} years ago\"}},\"prompts\":{\"day\":\"Day\",\"hour\":\"Hour\",\"minute\":\"Minute\",\"month\":\"Month\",\"second\":\"Seconds\",\"year\":\"Year\"}},\"errors\":{\"format\":\"%{attribute} %{message}\",\"messages\":{\"accepted\":\"must be accepted\",\"array_too_short\":{\"one\":\"is too short (minimum at least 1 element)\",\"other\":\"is too short (minimum at least %{count} elements)\"},\"blank\":\"can\\'t be blank\",\"blank_for_modules\":\"Organization is miss-configured. The identifier is mandatory for the modules you have configured.\",\"collection_taken\":\"can\\'t have another collection of this type.\",\"confirmation\":\"doesn\\'t match %{attribute}\",\"custom_fields\":{\"options\":{\"missing_vocabulary\":\"Some column of type \\\\\"vocabulary\\\\\" has no value in \\\\\"dataSource\\\\\"\",\"wrong_column_type\":\"Some column does not belong to a recognized type. Types recognized: \\\\\"text\\\\\", \\\\\"integer\\\\\", \\\\\"float\\\\\", \\\\\"date\\\\\" y \\\\\"vocabulary\\\\\"\",\"wrong_custom_field_uids\":\"The configuration uids doesn\\'t existe or belongs to custom fields which doesn\\'t have a definition for progress\"}},\"empty\":\"can\\'t be empty\",\"equal_to\":\"must be equal to %{count}\",\"even\":\"must be even\",\"exclusion\":\"is reserved\",\"greater_than\":\"must be greater than %{count}\",\"greater_than_or_equal_to\":\"must be greater than or equal to %{count}\",\"inclusion\":\"is not included in the list\",\"invalid\":\"is invalid\",\"invalid_consultation_response\":\"Consultation couldn\\'t be saved. Please, review the responses and try again\",\"invalid_table_name\":\"Must start with a letter or an underscore; the rest can only contain letters, digits or underscores\",\"less_than\":\"must be less than %{count}\",\"less_than_or_equal_to\":\"must be less than or equal to %{count}\",\"model_invalid\":\"Validation failed: %{errors}\",\"not_a_number\":\"is not a number\",\"not_an_integer\":\"must be an integer\",\"not_found\":\"not found\",\"odd\":\"must be odd\",\"other_than\":\"must be other than %{count}\",\"page_as_homepage\":\"The changes to the page could not be saved because You can\\'t change the vibility of a page that is used as a homepage.\",\"present\":\"must be blank\",\"record_invalid\":\"Validation failed: %{errors}\",\"required\":\"must exist\",\"restrict_dependent_destroy\":{\"one\":\"Cannot delete record because a dependent %{record} exists\",\"other\":\"Cannot delete record because dependent %{record} exist\"},\"taken\":\"has already been taken\",\"too_long\":{\"one\":\"is too long (maximum is 1 character)\",\"other\":\"is too long (maximum is %{count} characters)\"},\"too_short\":{\"one\":\"is too short (minimum is 1 character)\",\"other\":\"is too short (minimum is %{count} characters)\"},\"wrong_length\":{\"one\":\"is the wrong length (should be 1 character)\",\"other\":\"is the wrong length (should be %{count} characters)\"}},\"template\":{\"body\":\"There were problems with the following fields:\",\"header\":{\"one\":\"1 error prohibited this %{model} from being saved\",\"other\":\"%{count} errors prohibited this %{model} from being saved\"}}},\"flash\":{\"actions\":{\"create\":{\"notice\":\"%{resource_name} was successfully created.\"},\"destroy\":{\"alert\":\"%{resource_name} could not be destroyed.\",\"notice\":\"%{resource_name} was successfully destroyed.\"},\"update\":{\"notice\":\"%{resource_name} was successfully updated.\"}}},\"gobierto_admin\":{\"activities\":{\"activities_list\":{\"header\":{\"action\":\"Action\",\"date\":\"Date\",\"ip\":\"IP\",\"recipient\":\"Recipient\",\"subject\":\"Subject\",\"user\":\"User\"}},\"index\":{\"title\":\"Activity log\"}},\"admin\":{\"invitation_acceptances\":{\"show\":{\"error\":\"This URL doesn\\'t seem to be valid\",\"success\":\"Signed in successfully\"}},\"invitations\":{\"create\":{\"error\":\"There was a problem sending the invitations\",\"success\":\"The invitations have been successfully sent\",\"success_with_errors\":\"Some invitations could not be delivered: %{email_addresses}.\"},\"form\":{\"placeholders\":{\"emails\":\"maria@hotmail.com, felipe@gmail.com\"},\"sites\":\"Allowed sites\",\"submit\":\"Send invitations\"},\"new\":{\"title\":\"Send invitations\"}},\"passwords\":{\"create\":{\"error\":\"The email address specified doesn\\'t seem to be valid\",\"success\":\"Please, check your inbox to get instructions\"},\"edit\":{\"error\":\"This URL doesn\\'t seem to be valid\",\"title\":\"Set your new password\"},\"edit_form\":{\"submit\":\"Change password\"},\"new\":{\"title\":\"Recover your password\"},\"new_form\":{\"placeholders\":{\"email\":\"fsanchez@gmail.com\"},\"submit\":\"Request recovery\"},\"update\":{\"error\":\"There was a problem changing your password\",\"success\":\"Signed in successfully\"}},\"settings\":{\"edit\":{\"password_block\":\"Password\",\"placeholders\":{\"email\":\"Email\",\"name\":\"Name\"},\"title\":\"Edit your data\"},\"update\":{\"error\":\"There was an error updating your data\",\"success\":\"Data updated successfully\"}}},\"admin_groups\":{\"admins\":{\"modal_index\":{\"add\":\"Add\",\"add_title\":\"Add user\",\"created_at\":\"Access granted\",\"delete\":\"Delete access\",\"email\":\"email\",\"user\":\"User\",\"users_with_access\":\"Users with access\"}},\"breadcrumb\":{\"admin_groups\":\"Groups\"},\"create\":{\"success\":\"Admins Group was successfully created\"},\"edit\":{\"title\":\"Permissions of group: %{name}\"},\"form\":{\"action_names\":{\"create_projects\":\"Create projects\",\"delete_projects_all\":\"Delete projects (all)\",\"delete_projects_assigned\":\"Delete projects (assigned)\",\"edit\":\"Edit\",\"edit_projects_all\":\"Edit projects (all)\",\"edit_projects_assigned\":\"Edit projects (assigned)\",\"edit_projects_permissions_all\":\"Edit project permissions (all)\",\"edit_projects_permissions_assigned\":\"Edit project permissions (assigned)\",\"manage_dashboards\":\"Manage dashboards\",\"manage_plans\":\"Manage plans\",\"moderate_projects_all\":\"Moderate projects (all)\",\"moderate_projects_assigned\":\"Moderate projects (assigned)\",\"publish_projects_all\":\"Publish projects (all)\",\"publish_projects_assigned\":\"Publish projects (assigned)\",\"update_projects_as_minor_change_all\":\"Save minor changes in projects (all)\",\"update_projects_as_minor_change_assigned\":\"Save minor changes in projects (assigned)\",\"view_dashboards\":\"View dashboards\",\"view_projects_all\":\"View projects (all)\",\"view_projects_assigned\":\"View projects (assigned)\"},\"actions\":\"Actions\",\"all\":\"All\",\"members\":{\"one\":\"There is an admin with this group.\",\"other\":\"There are %{count} admins with this group.\",\"zero\":\"This group doesn\\'t have admins.\"},\"modules_permissions\":\"Modules\",\"people\":\"People\",\"placeholders\":{\"name\":\"Global admins group\"},\"site_options_permissions\":\"Site\"},\"index\":{\"header\":{\"admin_group\":\"Group\"},\"new\":\"New\",\"title\":\"Groups\"},\"new\":{\"title\":\"New group\"},\"update\":{\"success\":\"Admins Group was successfully updated\"}},\"admin_mailer\":{\"invitation_instructions\":{\"bye\":\"Cheers\",\"click_link\":\"You have been invited to collaborate in Gobierto. Click the following link to create your account\",\"hi\":\"Hi\",\"subject\":\"You have been invitited to collaborate in Gobierto\"},\"reset_password_instructions\":{\"bye\":\"Cheers\",\"click_link\":\"Click in the following link to reset your password\",\"hi\":\"Hi\",\"subject\":\"Reset password instructions\"}},\"admin_unauthorized\":\"You do not have enough permissions to perform this action\",\"admins\":{\"create\":{\"success\":\"Admin was successfully created\"},\"edit\":{\"title\":\"Edit Admin\"},\"form\":{\"activity_block\":\"Activity log\",\"admin_groups_block\":\"Group\",\"authorization_level\":{\"disabled\":\"Disabled\",\"manager\":\"Manager\",\"regular\":\"Regular\"},\"password_block\":\"Password\",\"placeholders\":{\"email\":\"fgonzalez@gmail.com\",\"name\":\"Fernando Gonz\u00E1lez\"},\"sites_block\":\"Allowed sites\",\"sites_block_description\":\"This Admin has administration access to:\"},\"index\":{\"groups_and_permissions\":\"Groups and permissions\",\"header\":{\"admin\":\"Admin\",\"created_at\":\"Created\",\"email\":\"Email\",\"groups\":\"Groups\",\"last_sign_in_at\":\"Last sign in\",\"primary_api_token\":\"Primary API token\",\"role\":\"Role\"},\"new\":\"New Admin\",\"send_invitations\":\"Send invitations\",\"title\":\"Administrators\",\"users_section\":\"Users\",\"view_admin\":\"View Admin\"},\"new\":{\"title\":\"New Admin\"},\"show\":{\"admin_tokens\":\"Authorization tokens\",\"copy_to_clipboard\":\"Copy\",\"primary_api_token\":\"Primary token\"},\"update\":{\"success\":\"Admin was successfully updated\"}},\"api_tokens\":{\"api_token\":{\"primary\":\"Primary\"},\"edit\":{\"api_token\":\"API Token %{name}\"},\"form\":{\"placeholders\":{\"domain\":\"www.example.org\",\"name\":\"External apps Token\"},\"update_token\":\"Update Token\"},\"list\":{\"header\":{\"created_at\":\"Created at\",\"domain\":\"Domain\",\"name\":\"Name\",\"token\":\"Token\"},\"new\":\"New\",\"title\":\"API Tokens\"},\"new\":{\"api_token\":\"New API Token\"}},\"census\":{\"imports\":{\"create\":{\"error\":\"There was an error when importing your file. Please try again.\",\"success\":\"%{record_count} records have been imported\"},\"file_format_notes\":{\"instructions\":\"El archivo a cargar debe ser un CSV, sin fila de cabecera, con las columnas de datos que queramos que el usuario deba verficiar. Por ejemplo, si queremos que valide DNI, fecha de nacimiento y c\u00F3digo postal, deberemos preparar un fichero como este:\"},\"form\":{\"disable_with\":\"Loading...\",\"submit\":\"Load census file\"},\"new\":{\"final_notes\":\"se sustituir\u00E1n todos los registros, y si alg\u00FAn DNI de usuario verificado deja de estar presente, el usuario dejar\u00E1 de tener acceso\",\"import_status\":\"La verificaci\u00F3n de los usuarios se realiza contra el archivo de censo actualizado por \u00FAltima vez el %{created_at} por %{admin_name} (%{admin_email}). El archivo tiene %{imported_records} registros.\",\"title\":\"Census configuration\"}}},\"custom_fields_plugins\":{\"budgets\":{\"area\":\"Area\",\"assigned_amount\":\"Assigned\",\"budget_line\":\"Budget line\",\"custom\":\"Custom\",\"economic\":\"Economic\",\"full_amount\":\"Total\",\"functional\":\"Functional\",\"not_available\":\"Not avail.\",\"weight\":\"Weight\",\"year\":\"Year\"},\"common\":{\"custom\":\"Custom\",\"economic\":\"Economic\",\"functional\":\"Functional\"},\"data_grid\":{\"remove_rows\":\"Remove selected rows\",\"select_deselect_all\":\"Select / Deselect All\"},\"progress\":{\"progress\":\"Progress\"},\"table\":{\"remove_rows\":\"Remove selected rows\",\"select_deselect_all\":\"Select / Deselect All\"}},\"custom_sessions\":{\"ldap_strategy\":{\"form\":{\"identifier\":\"Identifier\",\"password\":\"Password\",\"submit\":\"Submit\"}}},\"gobierto_attachments\":{\"file_attachments\":{\"create\":{\"success_html\":\"Attachment created successfully. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eView the document\\\\u003c/a\\\\u003e.\"},\"destroy\":{\"success\":\"Attachment archived successfully\"},\"edit\":{\"title\":\"Edit document\"},\"form\":{\"file_constraints\":\"Attach document\",\"placeholders\":{\"description\":\"Document description\",\"name\":\"File name\",\"slug\":\"file-name\"}},\"index\":{\"add_new_attachment\":\"Add new document\",\"collections\":\"Collections\",\"created_at\":\"Created at\",\"header\":{\"collection\":\"Collection\",\"file_attachments\":\"Documents\"},\"latest_editions\":\"Latests editions\",\"new\":\"New\",\"title\":\"Documents\",\"updated_at\":\"Updated at\",\"view_collection\":\"View collection\"},\"new\":{\"title\":\"New document\"},\"recover\":{\"success\":\"Attachment recovered successfully\"},\"update\":{\"success_html\":\"Attachment updated successfully. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eView the document\\\\u003c/a\\\\u003e.\"}}},\"gobierto_budgets\":{\"feedback\":{\"index\":{\"answer1_0\":\"Yes\",\"answer1_1\":\"No\",\"answer2_0\":\"Few\",\"answer2_1\":\"Good\",\"answer2_2\":\"Too much\",\"budget\":\"Planned\",\"last\":\"Last\",\"total_feedback\":\"Total opinions\",\"understand\":\"Do you understand it?\",\"you_think\":\"You think\"}},\"options\":{\"index\":{\"comparison_compare_municipalities_desc\":\"Shows a table with specific municpalities (with data from presupuestos.gobierto.es - compare them there before including them)\",\"comparison_context_table_enabled_desc\":\"Show a table with context information with province, atuonomies and the state\",\"comparison_show_widget_desc\":\"Enable the acces to the Gobierto budgets comparison tool: presupuestos.gobierto.es\",\"comparison_tool_enabled_desc\":\"Enable comparison tools\",\"confirm_update_annual_data\":\"A background process will start to update files. Continue?\",\"elaboration\":\"Elaboration\",\"elaboration_desc1\":\"Enable budgets elaboration section\",\"elaboration_desc2_html\":\"\\\\u003cstrong\\\\u003eImportant:\\\\u003c/strong\\\\u003e it\\'s necessary to load elaboration data previously. Contact your administrator if necessary.\",\"feedback\":\"Micro-feedback\",\"feedback_desc\":\"Enable the option to allow visitios to give their feedback on budget lines\",\"feedback_emails_desc\":\"The feedback (opinions about budget lines) will be sent to this email\",\"indicators\":\"Indicators\",\"indicators_desc1\":\"Enable the section Indicators\",\"options\":\"Options\",\"providers\":\"Providers and Invoices\",\"providers_desc1\":\"Enable the section Providers and Invoices\",\"receipt\":\"Taxes receipt\",\"receipt_desc1\":\"Enable budgets taxes receipt section\",\"receipt_desc2_html\":\"\\\\u003cstrong\\\\u003eImportant:\\\\u003c/strong\\\\u003e it\\'s necessary to fill the JSON with the data.\",\"update_annual_data\":\"Generate budget lines by year files\"},\"update\":{\"error\":\"Settings couldn\\'t be saved: %{validation_errors}\",\"success\":\"Settings saved successfully\"},\"update_annual_data\":{\"success\":\"Process to generate files of budget lines by year launched\"}},\"shared\":{\"tabs\":{\"budgets\":\"Budgets\",\"feedback\":\"Opinions\",\"options\":\"Options\"}}},\"gobierto_calendars\":{\"calendar_configuration\":{\"edit\":{\"add_rule\":\"Create rule\",\"calendar_integration\":\"Calendar integration\",\"confirm_sync\":\"Are you sure?\",\"filter_events\":\"Filter events\",\"filter_events_desc\":\"When an event is imported...\",\"filter_events_label\":\"If the\",\"google_calendar\":\"Google Calendar\",\"ibm_notes\":\"IBM Notes\",\"labels\":{\"ibm_notes_pwd\":\"Password\",\"ibm_notes_url\":\"Calendar URL\",\"ibm_notes_usr\":\"IBM Notes account\",\"microsoft_exchange_pwd\":\"Password\",\"microsoft_exchange_url\":\"Calendar URL\",\"microsoft_exchange_usr\":\"Microsoft Exchange account\"},\"last_sync\":\"Last sync\",\"manage\":\"Manage calendar configuration\",\"microsoft_exchange\":\"Microsoft Exchange\",\"placeholders\":{\"filter_text\":\"Text to be filtered\",\"ibm_notes_url\":\"ex. https://example.com/mail/abc.nsf/api/calendar/events\",\"microsoft_exchange_url\":\"ex. https://example.com/ews/exchange.asmx\",\"username\":\"ex. someone85\"},\"remove_configuration\":\"Remove calendar configuration\",\"sync\":\"Sync now\",\"without_description\":\"Don\\'t import event description\"},\"gobierto_people_person_navigation\":{\"calendar_configuration\":\"Calendar configuration\"},\"google_calendar_fields\":{\"calendar_configured\":\"Currently this person has the following calendars integrated\",\"share_link\":\"Share this link with the person to allow Gobierto to read her public events from Google Calendar:\"},\"sync_calendars\":{\"success\":\"Synchronization done\"},\"update\":{\"success\":\"Settings updated successfully\"}},\"collections\":{\"index\":{\"add_new_event\":\"Add new event\",\"collections\":\"Calendars\",\"header\":{\"collection\":\"Calendar\",\"events\":\"Events\"},\"latest_editions\":\"Latest updated events\",\"new\":\"New\",\"title\":\"Calendars\",\"view_collection\":\"View collection\"}},\"events\":{\"attendees_form\":{\"header\":{\"charge\":\"Position\",\"name\":\"Name\",\"person\":\"Person\"},\"title\":\"Attendees\",\"view_person\":\"View person\"},\"create\":{\"success_html\":\"Event was successfully created. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eSee the event\\\\u003c/a\\\\u003e.\"},\"destroy\":{\"success\":\"Event was successfully archived\"},\"edit\":{\"title\":\"Edit event\"},\"form\":{\"placeholders\":{\"slug\":\"event\",\"title\":\"Event title\"},\"state\":{\"pending\":\"Pending\",\"published\":\"Published\"}},\"index\":{\"configuration\":\"Configuration\",\"header\":{\"date\":\"Date\",\"event\":\"Event\",\"location\":\"Location\",\"status\":\"Status\"},\"new\":\"New event\",\"past_events\":\"Past events\",\"pending_events\":\"Moderation pending\",\"published_events\":\"Published events\",\"upcoming_events\":\"Upcoming\",\"view_event\":\"View event\",\"visibility_level\":{\"archived\":\"Archived\",\"pending\":\"Draft\",\"published\":\"Published\"}},\"locations_form\":{\"header\":{\"address\":\"Address\",\"place\":\"Place\"},\"title\":\"Place\"},\"new\":{\"title\":\"New event\"},\"person_breadcrumb\":{\"back_to_collections\":\"\\\\u003c Back to agendas\"},\"recover\":{\"success\":\"Event was successfully recovered\"},\"update\":{\"success_html\":\"Event was successfully updated. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eSee the event\\\\u003c/a\\\\u003e.\"}}},\"gobierto_cms\":{\"file_attachments\":{\"index\":{\"title\":\"Attachments\"}},\"pages\":{\"create\":{\"success_html\":\"Page created successfully. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eView the page\\\\u003c/a\\\\u003e.\"},\"destroy\":{\"success\":\"Page archived successfully\"},\"edit\":{\"title\":\"Edit page\"},\"form\":{\"include_in_section\":\"Include in section\",\"new_section\":\"(New section)\",\"placeholders\":{\"slug\":\"about-this-web\",\"title\":\"Page title\"},\"section\":\"Section\",\"visibility_level\":{\"active\":\"Published\",\"draft\":\"Draft\"},\"without_parent\":\"(without parent)\"},\"index\":{\"add_new\":\"Add new\",\"collections\":\"Collections\",\"header\":{\"collection\":\"Collection\",\"pages\":\"Pages\",\"section\":\"Section\"},\"latest_editions\":\"Latests editions\",\"new\":\"New\",\"sections\":\"Sections\",\"title\":\"CMS\",\"view_collection\":\"View collection\",\"view_section\":\"View section\"},\"new\":{\"title\":\"New page\"},\"recover\":{\"success\":\"The page has been successfully recovered\"},\"update\":{\"success_html\":\"Page updated successfully. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eView the page\\\\u003c/a\\\\u003e.\"}},\"sections\":{\"create\":{\"success\":\"Section created successfully.\"},\"edit_modal\":{\"title\":\"Edit section\"},\"form\":{\"placeholders\":{\"slug\":\"about-this-section\",\"title\":\"Section title\"}},\"index\":{\"header\":{\"pages\":\"Sections\",\"title\":\"Section\"},\"new\":\"New\",\"title\":\"Sections\",\"view\":\"View section\"},\"new_modal\":{\"title\":\"New section\"},\"pages_filter\":{\"page_help\":\"Drag and drop on the left side to place this page in the menu\"},\"show\":{\"collapse\":\"Collapse everything\",\"configuration\":\"Configuration\",\"delete_element\":\"Remove item from menu\",\"expand\":\"Expand all\",\"help\":\"Configure the elements in your menu. Drag from the right panel to the menu on the left\",\"last_edited_pages\":\"Last edited pages\",\"placeholders\":{\"search\":\"Enter the title of the page to search\"},\"sections\":\"Sections\",\"select_page\":\"Select page to include in the section\",\"view\":\"View section\"},\"update\":{\"success\":\"Section updated successfully.\"}}},\"gobierto_common\":{\"collections\":{\"check_container_presence\":{\"container_not_found\":\"The resource the collection belongs to couldn\\'t be found\"},\"create\":{\"success\":\"Collection was successfully created.\"},\"edit_modal\":{\"title\":\"Edit collection\"},\"form\":{\"placeholders\":{\"slug\":\"about-this-collection\",\"title\":\"Collection name\"}},\"index\":{\"collections\":\"Collections\",\"header\":{\"collection\":\"Title\",\"pages\":\"Pages\"},\"latest_editions\":\"Latests editions\",\"new\":\"New\",\"title\":\"CMS\",\"view_collection\":\"See collection\"},\"new_modal\":{\"title\":\"New collection\"},\"show\":{\"configuration\":\"Configuration\",\"file_attachments\":{\"created_at\":\"Created at\",\"file_name\":\"Filename\",\"view\":\"View document\"},\"new_attachment\":\"New\",\"new_page\":\"New\",\"pages\":{\"created_at\":\"Created at\",\"public\":\"Public\",\"published_on\":\"Published on\",\"updated_at\":\"Updated at\",\"view\":\"View page\",\"visibility_level\":{\"active\":\"Published\",\"archived\":\"Archived\",\"draft\":\"Draft\"}}},\"update\":{\"success\":\"Collection was successfully updated.\"}},\"content_blocks\":{\"create\":{\"success\":\"Content block was successfully created\"},\"destroy\":{\"success\":\"Content block was successfully deleted\"},\"edit\":{\"title\":\"Edit block\"},\"form\":{\"add_child\":\"Add column\",\"fields\":\"Columns\",\"title\":\"Block name\"},\"new\":{\"title\":\"Add block\"},\"update\":{\"success\":\"Content block was successfully updated\"}},\"custom_fields\":{\"custom_fields\":{\"create\":{\"success\":\"Custom field created correctly\"},\"date_options\":{\"date\":\"Date\",\"datetime\":\"Date and time\",\"type\":\"Type\"},\"destroy\":{\"failed\":\"There was an error that prevented the deletion of the custom field\",\"success\":\"Custom field successfully deleted\"},\"edit\":{\"instance_title\":\"Edit %{field_name} of %{instance_name}\",\"title\":\"Edit %{name}\"},\"form\":{\"confirm\":\"Are you sure?\",\"crop\":\"Crop\",\"multiple\":\"Multiple\",\"type\":\"Content options\"},\"index\":{\"instance_title\":\"Custom fields of %{instance_name}\",\"localized_custom_fields\":\"Translatable fields\",\"new\":\"Add new field\",\"not_localized_custom_fields\":\"Non-translatable fields\",\"title\":\"Custom fields\"},\"new\":{\"instance_title\":\"New field of %{instance_name}\",\"title\":\"New field\"},\"new_option\":{\"cancel_new_option\":\"Cancel\",\"create\":\"Create option\",\"new\":\"New option\"},\"numeric_options\":{\"currency\":\"Currency\",\"generic\":\"Generic\",\"unit_type\":\"Unit type\"},\"options_form\":{\"add_option\":\"Add option\"},\"plugin\":{\"budgets\":\"Budgets\",\"progress\":\"Progress\",\"table\":\"Table\",\"type\":\"Type\"},\"plugin_configuration_form\":{\"configuration\":\"Configuration\"},\"update\":{\"success\":\"Custom field updated correctly\"},\"vocabulary_select\":{\"vocabulary\":\"Options vocabulary\"},\"vocabulary_type_select\":{\"multiple_select\":\"Multiple select\",\"single_select\":\"Single select\",\"tags\":\"Tags\",\"type\":\"Type\"}},\"forms\":{\"new_gallery_image\":{\"add_item\":\"Add image\",\"cancel_new_item\":\"Cancel\"}},\"module_resources\":{\"index\":{\"custom_fields_for_instances_of\":\"Custom fields for instances of %{name}\",\"empty\":\"Currently there is no model with custom fields enabled\"}}},\"dynamic_content\":{\"form\":{\"add_child\":\"Add new record\",\"add_content_block\":\"Add new block\",\"add_record\":\"Add\",\"attachment\":\"Attachment\",\"attachment_file\":\"Attachment file\",\"cancel_record\":\"Cancel\",\"delete_content_block\":\"Delete block\",\"delete_content_block_confirm\":\"Are you sure you want to delete this block?\",\"download_attachment\":\"Download attachment\",\"edit_content_block\":\"Edit\",\"remove_attachment\":\"Remove attachment\",\"save_record\":\"Save\"}},\"ordered_terms\":{\"create\":{\"success\":\"Term created successfully.\"},\"destroy\":{\"destroy_failed\":\"The term couldn\\'t be deleted: %{validation_errors}\",\"success\":\"Term deleted successfully.\"},\"edit_modal\":{\"title\":\"Edit %{term}\"},\"form\":{\"placeholders\":{\"description\":\"Term description\",\"external_id\":\"ID001\",\"name\":\"Term name\",\"slug\":\"term\"}},\"index\":{\"collapse_all\":\"Collapse all\",\"explore\":\"Explora\",\"new\":\"New\",\"open_all\":\"Open all\",\"title\":\"Terms of %{vocabulary}\"},\"new_modal\":{\"title\":\"New term\"},\"terms_tree\":{\"delete_confirm\":\"Are you sure? This operation can not be undone\"},\"update\":{\"success\":\"Term updated successfully.\"}},\"terms\":{\"create\":{\"success\":\"Term created successfully.\"},\"destroy\":{\"destroy_failed\":\"Term couldn\\'t be deleted.\",\"success\":\"Term deleted successfully.\"},\"edit\":{\"edit\":\"Edit %{term}\"},\"form\":{\"placeholders\":{\"description\":\"The horse is a herbivorous mammal\",\"name\":\"Horse\",\"slug\":\"reino-animal-caballo\"}},\"index\":{\"delete_confirm\":\"Are you sure? This operation can not be undone\",\"header\":{\"description\":\"Description\",\"level\":\"Level\",\"name\":\"Name\",\"parent\":\"Parent\"},\"new\":\"New\",\"title\":\"Terms of %{vocabulary}\"},\"new\":{\"new\":\"New term\"},\"update\":{\"success\":\"Term updated successfully.\"}},\"vocabularies\":{\"create\":{\"success\":\"Vocabulary created successfully.\"},\"destroy\":{\"destroy_failed\":\"Vocabulary couldn\\'t be deleted because it\\'s being used\",\"success\":\"Vocabulary deleted successfully.\"},\"edit\":{\"edit\":\"Edit %{vocabulary}\"},\"edit_modal\":{\"title\":\"Edit %{vocabulary}\"},\"form\":{\"placeholders\":{\"name\":\"Animal kingdom\",\"slug\":\"animal_kingdom\"}},\"index\":{\"delete_confirm\":\"Are you sure? This operation can not be undone\",\"header\":{\"name\":\"Subject\",\"terms\":\"Terms\"},\"new\":\"New\",\"title\":\"Vocabularies\",\"view_vocabulary\":\"See terms\"},\"new\":{\"new\":\"New Vocabulary\"},\"new_modal\":{\"title\":\"New Vocabulary\"},\"show\":{\"created_at\":\"Created at\",\"terms\":\"Terms\",\"terms_count\":\"%{count} terms\"},\"update\":{\"success\":\"Vocabulary updated successfully.\"}}},\"gobierto_core\":{\"site_templates\":{\"create\":{\"success\":\"Template was successfully created.\"},\"destroy\":{\"success\":\"Template was successfully deleted.\"},\"update\":{\"success\":\"Template was successfully updated.\"}},\"templates\":{\"edit\":{\"preview\":\"Preview\",\"reset\":\"Reset\",\"reset_title\":\"Discard saved changes, and return to the original template (be careful, you will not be able to recover the template that you have customized)\",\"save\":\"Save\"},\"index\":{\"edit_templates\":\"Edit templates\"}}},\"gobierto_dashboards\":{\"dashboards\":{\"destroy\":{\"success\":\"Dashboard deleted correctly.\"},\"list_modal\":{\"add\":\"Add\",\"new\":\"Do you need to create a new dashboard?\",\"no_dashboards\":\"No dashboards\",\"title\":\"Select the dashboard to include this indicator\"}}},\"gobierto_data\":{\"configuration\":{\"settings\":{\"edit\":{\"api_settings\":\"API settings\",\"db_config_placeholder\":\"{\\\\\"pool\\\\\":5, \\\\\"adapter\\\\\":\\\\\"postgresql\\\\\", \\\\\"database\\\\\":\\\\\"gobierto_test\\\\\", \\\\\"encoding\\\\\":\\\\\"unicode\\\\\", \\\\\"password\\\\\":\\\\\"gobierto\\\\\", \\\\\"username\\\\\":\\\\\"gobierto\\\\\"}\",\"frontend\":\"Front-end\",\"frontend_enabled\":\"Visible\",\"title\":\"Configuration\",\"update\":\"Update\"},\"title\":\"Preferences\",\"update\":{\"success\":\"Configuration stored successfully\"}}},\"datasets\":{\"create\":{\"success\":\"Dataset created correctly.\"},\"destroy\":{\"success\":\"Dataset deleted correctly.\"},\"form\":{\"placeholders\":{\"name\":\"Population\",\"slug\":\"population\"}},\"index\":{\"header\":{\"name\":\"Name\",\"status\":\"Status\",\"table_name\":\"Table name\"},\"new\":\"New\",\"title\":\"Datasets\",\"view_dataset\":\"See dataset\"},\"new\":{\"title\":\"New dataset\"},\"update\":{\"success\":\"Dataset updated correctly.\"}}},\"gobierto_investments\":{\"projects\":{\"create\":{\"success\":\"Project created correctly.\"},\"destroy\":{\"success\":\"Project deleted correctly.\"},\"form\":{\"placeholders\":{\"external_id\":\"ID001\",\"title\":\"Sports center\"}},\"index\":{\"header\":{\"external_id\":\"External ID\",\"title\":\"Title\"},\"new\":\"New\",\"title\":\"Projects\",\"view_project\":\"See project\"},\"new\":{\"title\":\"New project\"},\"update\":{\"success\":\"Project updated correctly.\"}}},\"gobierto_observatory\":{\"configuration\":{\"settings\":{\"edit\":{\"title\":\"Observatory configuration\",\"update\":\"Update\"},\"title\":\"Preferences\",\"update\":{\"error\":\"There was a problem when saving configuration: %{validation_errors}\",\"success\":\"Configuration stored successfully\"}}}},\"gobierto_people\":{\"configuration\":{\"settings\":{\"edit\":{\"agendas\":\"Agendas\",\"blogs\":\"Blogs\",\"departments\":\"Departments\",\"gifts\":\"Gifts\",\"interest_groups\":\"Interest groups\",\"invitations\":\"Invitations\",\"officials\":\"Officials\",\"placeholders\":{\"home_text_ca\":\"Home text Catalan\",\"home_text_en\":\"Home text English\",\"home_text_es\":\"Home text Spanish\"},\"political_groups_vocabulary\":\"Political groups vocabulary\",\"statements\":\"Statements\",\"submodules_enabled\":\"Enabled submodules\",\"trips\":\"Trips\",\"update\":\"Update\"},\"update\":{\"error\":\"An error occured while saving these settings\",\"success\":\"Settings updated successfully\"}},\"title\":\"Configuration\"},\"people\":{\"create\":{\"success_html\":\"Person was successfully created. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eSee the person\\\\u003c/a\\\\u003e.\"},\"edit\":{\"title\":\"Edit person\"},\"form\":{\"avatar_file_constraints\":\"User avatar (500x500 file)\",\"bio_file_constraints\":\"Attach file (PDF)\",\"category\":{\"executive\":\"Executive\",\"politician\":\"Politician\"},\"crop\":\"Crop\",\"party\":{\"government\":\"Government Team\",\"opposition\":\"Opposition\"},\"placeholders\":{\"charge\":\"Alcalde\",\"email\":\"Email\",\"name\":\"Rafael Garc\u00EDa\"}},\"index\":{\"configuration\":\"Configuration\",\"drag_to_sort\":\"Drag to sort\",\"header\":{\"charge\":\"Position\",\"events\":\"Events\",\"person\":\"Person\",\"posts\":\"Posts\",\"statements\":\"Statements\",\"status\":\"Status\"},\"new\":\"New person\",\"no_permissions\":\"You don\\'t have permissions to edit this person. If you need to edit, ask your administrator\",\"title\":\"People\",\"view_person\":\"View person\",\"visibility_level\":{\"active\":\"Published\",\"draft\":\"Draft\"}},\"navigation\":{\"agenda\":\"Agenda\",\"person\":\"Person\",\"posts\":\"Blog\",\"statements\":\"Statements\"},\"new\":{\"title\":\"New person\"},\"person_events\":{\"index\":{\"title\":\"Agenda\"}},\"person_posts\":{\"create\":{\"success_html\":\"Post was successfully created. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eSee the post\\\\u003c/a\\\\u003e.\"},\"edit\":{\"title\":\"Edit post\"},\"form\":{\"placeholders\":{\"tags\":\"personal, about me, my career\",\"title\":\"About me\"}},\"index\":{\"header\":{\"date\":\"Date\",\"status\":\"Status\",\"tags\":\"Tags\",\"title\":\"Title\"},\"new\":\"New post\",\"title\":\"Blog\",\"view_post\":\"View post\",\"visibility_level\":{\"active\":\"Published\",\"draft\":\"Draft\"}},\"new\":{\"title\":\"New post\"},\"update\":{\"success_html\":\"Post was successfully updated. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eSee the post\\\\u003c/a\\\\u003e.\"}},\"person_statements\":{\"create\":{\"success_html\":\"Statement was successfully created. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eSee the statement\\\\u003c/a\\\\u003e.\"},\"edit\":{\"title\":\"Edit statement\"},\"form\":{\"placeholders\":{\"title\":\"Statement of assets and activities\"}},\"index\":{\"header\":{\"date\":\"Date\",\"statement\":\"Statement\",\"status\":\"Estat\"},\"new\":\"New statement\",\"title\":\"Statements\",\"view_statement\":\"View statement\",\"visibility_level\":{\"active\":\"Published\",\"draft\":\"Draft\"}},\"new\":{\"title\":\"New statement\"},\"update\":{\"success_html\":\"Statement was successfully updated. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eSee the statement\\\\u003c/a\\\\u003e.\"}},\"update\":{\"success_html\":\"Person was successfully updated. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eSee the person\\\\u003c/a\\\\u003e.\"}},\"settings\":{\"title\":\"Settings\"}},\"gobierto_plans\":{\"admin_mailer\":{\"project_attributes_changed\":{\"bye\":\"Best regards\",\"edition_change\":\"content\",\"hi\":\"Hello\",\"intro_html\":\"%{author_name} updated %{updates_list} in the project %{project_link} in plan %{plan_title}.\",\"minor_change_notice\":\"The change has been saved as minor so no new version has been created.\",\"moderation_stage_change\":\"moderation status to %{value}\",\"subject\":\"A project in plan %{plan_title} of %{site_name} has been modified\",\"subject_with_changes\":\"A project in plan %{plan_title} of %{site_name} has been modified to %{changes}\",\"visibility_level_change\":\"publication status to %{value}\",\"visibility_levels\":{\"draft\":\"Not published\",\"published\":\"Published\"}},\"project_created\":{\"bye\":\"Best regards\",\"hi\":\"Hello\",\"intro_html\":\"%{author_name} has created a new project %{project_link} in the plan %{plan_title}\",\"subject\":\"A project has been created in the plan %{plan_title} of %{site_name}\"},\"project_deleted\":{\"bye\":\"Best regards\",\"hi\":\"Hello\",\"intro_html\":\"%{author_name} has deleted the project %{project_name} from the plan %{plan_link}\",\"subject\":\"A project has been deleted from the plan %{plan_title} of %{site_name}\"}},\"categories\":{\"calculated_headers\":{\"items\":\"Items\",\"progress\":\"Progress\"},\"create\":{\"success\":\"Category created successfully.\"},\"destroy\":{\"destroy_failed\":\"You can\\'t delete a category while it has associated projects or other elements.\",\"success\":\"Category deleted successfully.\"},\"index\":{\"progress_excluded_nodes_explanation\":\"Some projects have been excluded from the calculation because they have one of the following excluded statuses: %{statuses}\"},\"plan_summary\":{\"global_progress\":\"Global progress\",\"projects\":\"Projects\"},\"update\":{\"success\":\"Category updated successfully.\"}},\"dashboards\":{\"index\":{\"headers\":{\"status\":\"Visibility\",\"title\":\"Title\",\"updated\":\"Updated\"},\"new\":\"New\",\"visibility_level\":{\"active\":\"Public\",\"draft\":\"Private\"}}},\"plan_types\":{\"create\":{\"success\":\"Plan type created successfully.\"},\"destroy\":{\"has_items\":\"You can\\'t archive a type of plan while having associated elements.\",\"success\":\"Plan type archived successfully\"},\"edit\":{\"title\":\"Edit plan type\"},\"form\":{\"placeholders\":{\"name\":\"Plan type name\",\"slug\":\"about-this-type-of-plan\"}},\"index\":{\"delete\":\"Delete\",\"header\":{\"type\":\"Type\"},\"new\":\"New\",\"title\":\"Plan types\"},\"new\":{\"title\":\"New plan type\"},\"update\":{\"success\":\"Plan type updated successfully.\"}},\"plans\":{\"create\":{\"success_html\":\"Plan created successfully. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eView the plan\\\\u003c/a\\\\u003e.\"},\"delete_contents\":{\"success\":\"Plan projects has been successfully deleted\",\"term_deletion_failed_html\":\"The term \\\\\"%{term}\\\\\" of \\\\\"%{vocabulary}\\\\\" vocabulary can\\'t be deleted: %{message}\"},\"destroy\":{\"success\":\"Plan archived successfully.\"},\"edit\":{\"title\":\"Configuration\"},\"form\":{\"delete_contents\":\"Delete projects of this plan\",\"delete_contents_confirm\":\"Confirm you want to delete projects from this plan\",\"export_csv\":\"Export to CSV\",\"import_csv\":\"Import from CSV\",\"indicators\":\"Indicators\",\"placeholders\":{\"configuration_data\":\"{ \\\\\"open_node\\\\\": true }\",\"css\":\".gobierto_planification section.level_0 .cat_1 { background-color: rgba(0, 191, 255, 0.95); }\",\"footer\":\"Plan footer\",\"introduction\":\"Plan introduction\",\"slug\":\"about-this-plan\",\"title\":\"Plan title\",\"year\":2018},\"projects\":\"Projects\",\"publish_last_version_automatically\":\"Publish new versions of projects automatically\"},\"import_csv\":{\"defaults\":{\"category\":{\"one\":\"item of level %{level}\",\"other\":\"items of level %{level}\"},\"project\":{\"one\":\"project\",\"other\":\"projects\"}},\"latest_update\":\"Last updated: %{datetime}\",\"no_data\":\"No data loaded yet\",\"there_are\":\"There are %{info}\",\"title\":\"Import CSV\"},\"import_csv_form\":{\"confirm_import\":\"Are you sure?\",\"custom_fields_table_plugin\":\"Custom fields (table plugin)\",\"disable_with\":\"Loading...\",\"more_info_html\":\"For more information, visit the documentation \\\\u003ca href=\\\\\"%{url}\\\\\" target=\\\\\"_blank\\\\\"\\\\u003eImportar datos de un plan\\\\u003c/a\\\\u003e.\",\"plan_content\":\"Plan content\",\"submit\":\"Import from CSV file\",\"vocabulary_used_by_other_plans\":\"The vocabulary configured for this plan is already configured for someone else. Please create a new vocabulary for this plan or remove it from the configuration of the other plans using it, since their data would be deleted with the import.\",\"warning\":\"\\\\u003cstrong\\\\u003eWarning\\\\u003c/strong\\\\u003e When importing from a CSV file, if the plan is empty, terms will be added to the vocabularies associated with categories and custom fields as they are found, but if the plan already contains data, since it\\'s an update, errors will be produced for the terms not found in the respective vocabularies.\"},\"import_data\":{\"missing_file\":\"Please, choose a file for the import.\",\"success_html\":\"Data imported successfully. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eView the plan\\\\u003c/a\\\\u003e.\"},\"index\":{\"header\":{\"elements\":\"Elements\",\"status\":\"Status\",\"title\":\"Title\",\"type\":\"Type\",\"year\":\"Year\"},\"new\":\"New\",\"title\":\"Plans\",\"types\":\"Types\",\"view_plan\":\"View plan\",\"visibility_level\":{\"draft\":\"Draft\",\"published\":\"Published\"}},\"new\":{\"title\":\"New plan\"},\"recover\":{\"success\":\"Plan has been successfully recovered.\"},\"update\":{\"success_html\":\"Plan updated successfully. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eView the plan\\\\u003c/a\\\\u003e.\"}},\"projects\":{\"create\":{\"success\":\"Project created correctly.\"},\"destroy\":{\"success\":\"Project deleted correctly.\"},\"filter_form\":{\"author\":\"Author\",\"category\":\"Category\",\"clear_filters\":\"Clear filters\",\"filter\":\"Filter\",\"interval\":\"Date interval\",\"progress\":\"Progress\",\"search\":\"Search...\",\"status\":\"Status\",\"submit\":\"Filter\"},\"filters_row\":{\"all\":\"All\",\"moderation_stage\":\"Moderation\",\"moderation_stage_value\":{\"approved\":\"Approved\",\"blank\":\"Without moderation\",\"in_review\":\"Under review\",\"rejected\":\"Rejected\",\"sent\":\"Sent\",\"unsent\":\"Not sent\"},\"total\":\"Total\",\"versions_visibility_level\":\"Publication\",\"versions_visibility_level_value\":{\"draft\":\"Draft\",\"published_up_to_date\":\"Published up to date\",\"published_with_unpublished_changes\":\"Published with unpublished changes\"}},\"find_versioned_project\":{\"unavailable_version\":\"Unavailable version.\"},\"form\":{\"button\":{\"add_dashboard\":\"Add to dashboard\"},\"placeholders\":{\"name\":\"Project title\"}},\"index\":{\"headers\":{\"progress\":\"Progress\",\"project\":\"Project\",\"status\":\"Status\",\"updated\":\"Updated\",\"visibility_level\":\"Publication\"},\"new\":\"New\",\"title\":\"Projecs of %{name}\",\"view\":\"View item\"},\"new\":{\"title\":\"New project\"},\"publish\":{\"confirm\":\"You are going to publish this project, so any user will be able to see it in the front-end.\",\"error\":\"Project couldn\\'t be published.\",\"success\":\"Project published correctly.\"},\"send\":{\"confirm\":\"You are going to send this project to be validated by a moderator.\"},\"unpublish\":{\"error\":\"Project couldn\\'t be unpublished.\",\"success\":\"Project unpublished correctly.\"},\"update\":{\"moderation_reset\":\"Because you have modified the project and do not have moderation permissions, its status has been moved to Not sent.\",\"no_changes\":\"No changes have been made to the project. The current version has been maintained.\",\"success\":\"Project updated correctly.\",\"suggest_unpublish_html\":\"The project is not approved but still published. \\\\u003ca rel=\\\\\"nofollow\\\\\" data-method=\\\\\"post\\\\\" href=\\\\\"%{url}\\\\\"\\\\u003eUnpublish\\\\u003c/a\\\\u003e.\"}},\"shared\":{\"navigation\":{\"configuration_tab\":\"Configuration\",\"dashboards_tab\":\"Dashboards\",\"plan_terms_tab\":\"Plan\",\"projects_tab\":\"Projects\"}}},\"gobierto_visualizations\":{\"configuration\":{\"settings\":{\"edit\":{\"title\":\"Visualizations configuration\",\"update\":\"Update\"},\"title\":\"Preferences\",\"update\":{\"error\":\"There was a problem when saving configuration: %{validation_errors}\",\"success\":\"Configuration stored successfully\"}}}},\"layouts\":{\"application\":{\"admin_dropdown\":{\"account\":\"Account\",\"sign_out\":\"Sign out\"},\"calendars\":\"Calendars\",\"cms\":\"CMS\",\"collapse_menu\":\"Collapse menu\",\"custom_fields\":\"Custom fields\",\"dirty_forms\":{\"message\":\"You have unsaved changes. Are you sure you want to leave this page?\"},\"edit_site\":\"Customize site\",\"file_attachments\":\"Documents\",\"global\":\"General\",\"hey_admin\":\"Hey, %{admin_name}\",\"manage_sites\":\"Manage sites\",\"modules\":{\"budgets\":\"Budgets\",\"data\":\"Data\",\"investments\":\"Investments\",\"observatory\":\"Observatory\",\"people\":\"Officers and Agendas\",\"plans\":\"Plans\",\"visualizations\":\"Visualizations\"},\"notifications\":\"Notifications\",\"site_network\":\"Network\",\"templates\":\"Templates\",\"users\":\"Users\",\"view_documentation\":\"View documentation\",\"view_item\":\"View item\",\"view_site\":\"View site\",\"vocabularies\":\"Vocabularies\"}},\"module_helper\":{\"not_enabled\":\"You are not authorized to perform this action\"},\"session_helper\":{\"already_signed_in\":\"You are already signed in\",\"not_authorized\":\"You are not authorized to perform this action\",\"not_signed_in\":\"We need you to sign in to continue\"},\"sessions\":{\"create\":{\"error\":\"The data you entered doesn\\'t seem to be valid. Please try again.\",\"success\":\"Signed in successfully\"},\"destroy\":{\"success\":\"Signed out successfully\"},\"form\":{\"email\":\"Email\",\"password\":\"Password\",\"submit\":\"Send\"},\"new\":{\"forgot_your_password\":\"Forgot your password?\",\"title\":\"Log in\"}},\"shared\":{\"admin_widget_attachment\":{\"add_new_document\":\"Add new document\",\"attachments\":\"Attachments\",\"copy_to_clipboard\":\"Copy URL\",\"description\":\"Description\",\"document\":\"Document\",\"document_title\":\"Document title\",\"drag_document_here\":\"Drag and drop the document here\",\"edit_document\":\"Edit document\",\"include_file\":\"Include file\",\"include_in_text\":\"Include file in the text\",\"latest_documents\":\"Recent documents\",\"no_docs\":\"There are no files\",\"or\":\"or\",\"save\":\"Save\",\"search\":\"Search\",\"select_file\":\"Chose a file\"},\"archive\":{\"confirm\":\"Are you sure you want to archive this element? It won\\'t show on the front end neither on lists like this. You will be able to recover it\",\"element\":\"Archive this element\",\"elements\":\"Archived elements\"},\"draft\":\"Draft\",\"form_locale_switchers\":{\"define_content_in_locale\":\"Define the content in %{locale_name} version\",\"translate\":\"Translate\"},\"moderation_save_widget\":{\"change_moderation_status\":\"Change moderation status\",\"confirm\":\"Are you sure?\",\"confirm_moderation_blocked_update\":\"Are you sure? If you save changes to this project, the status will be updated to Unsent.\",\"edit_version\":\"Editing version\",\"last_versions\":\"Last versions\",\"minor_change\":\"Minor change (does not save version)\",\"moderation\":\"Moderation\",\"moderation_info\":{\"new\":\"After saving your content, it can be sent to moderation.\",\"publicable\":\"Click on Publish to make this version publicly visible.\",\"publicable_html\":\"Click on Publish to make this version publicly visible.\",\"published\":\"Current version is the published one.\",\"published_html\":\"Current version is the published one. \\\\u003ca rel=\\\\\"nofollow\\\\\" data-method=\\\\\"post\\\\\" href=\\\\\"%{url}\\\\\"\\\\u003eUnpublish\\\\u003c/a\\\\u003e.\",\"rejected\":\"Version rejected.\",\"sent\":\"Your content has been sent for review. You will receive a notification if it is approved or you are asked for changes.\",\"unsent\":\"When your content is ready to be reviewed by a moderator, click on Send.\"},\"moderation_status\":{\"approved\":\"Approved\",\"in_review\":\"Under review\",\"rejected\":\"Rejected\",\"sent\":\"Sent\",\"unsent\":\"Not sent\"},\"new_version\":\"New (not saved)\",\"preview\":\"Preview\",\"previous_versions\":\"Previous versions\",\"publication_status\":{\"approved\":\"Published\",\"not_published\":\"Not published\"},\"publish\":\"Publish\",\"publish_last_version_automatically\":\"Publish this version automatically\",\"publish_status\":\"Status\",\"published_version\":\"Published version\",\"published_version_blank\":\"not published yet\",\"save\":\"Save\",\"see_all\":\"see all\",\"send\":\"Send\",\"unpublish\":\"Unpublish\"},\"module\":\"Module\",\"recover\":{\"confirm\":\"If you recover an element, it will be listed again\",\"element\":\"Recover element\"},\"resource_admin_permissions_button\":{\"permissions\":\"Permissions\"},\"save_widget\":{\"save\":\"Save\",\"visibility_level\":{\"active\":\"Published\",\"draft\":\"Draft\",\"published\":\"Published\"}}},\"sites\":{\"create\":{\"success\":\"Site was successfully created\"},\"destroy\":{\"success\":\"Site was successfully deleted\"},\"edit\":{\"title\":\"Customize site\"},\"form\":{\"admin_authentication_modules\":\"Authentication strategies for admins\",\"authentication_modules\":\"Authentication strategies for users\",\"hints\":{\"domain\":{\"a_record\":\"A record to %{target}\",\"cname_record\":\"CNAME record to %{target}\",\"if_domain\":\"If it is a domain\",\"if_subdomain\":\"If it is a subdomain\",\"instructions\":\"Important: this domain must be created to ensure the site works perfectly.\"},\"organization_id_html\":\"You can search for the code \\\\u003ca href=\\\\\"https://populatetools.github.io/ine-places/places.html\\\\\" target=\\\\\"_blank\\\\\"\\\\u003ein this table\\\\u003c/a\\\\u003e.\"},\"modules_enabled\":\"Modules enabled for this site\",\"password\":\"Password\",\"placeholders\":{\"domain\":\"gobierto.burjassot.es\",\"google_analytics_id\":\"UA-000000-01\",\"name\":\"Ayuntamiento de Burjassot\",\"organization_name\":\"Burjassot\",\"populate_data_api_token\":\"API Token Populate Data\",\"reply_to_email\":\"contact@email.com\",\"title\":\"Transparencia y Participaci\u00F3n\"},\"registration\":\"Users registration\",\"registration_disabled\":\"Disable registration (only hides links to registration/login)\",\"username\":\"Username\",\"visibility_level\":{\"active\":\"Published\",\"draft\":\"Draft\"}},\"index\":{\"configuration\":\"Configuration\",\"header\":{\"created_at\":\"Created\",\"domain\":\"Domain\",\"site\":\"Site\",\"status\":\"Status\"},\"new\":\"New site\",\"title\":\"Sites\",\"view_site\":\"View site\"},\"new\":{\"title\":\"New site\"},\"pages\":\"Pages\",\"sections\":\"Sections\",\"update\":{\"success\":\"Site was successfully updated\"}},\"users\":{\"edit\":{\"title\":\"Edit User\"},\"form\":{\"change_password\":\"Change password\",\"password_block\":\"Password\",\"placeholders\":{\"email\":\"fgonzalez@gmail.com\",\"name\":\"Fernando Gonz\u00E1lez\"},\"resend_welcome_email\":\"Resend welcome email\",\"resend_welcome_email_notes\":\"including a link to set a new password\"},\"index\":{\"admins_section\":\"Administrators\",\"census_configuration\":\"Census configuration\",\"header\":{\"created_at\":\"Created\",\"email\":\"Email\",\"last_sign_in_at\":\"Last sign in\",\"user\":\"User\",\"verified\":\"Verified\"},\"title\":\"Users\",\"users\":{\"one\":\"%{count} user\",\"other\":\"%{count} users\"},\"users_confirmed\":{\"one\":\"%{count}% confirmed\",\"other\":\"%{count}% confirmed\"},\"users_verified\":{\"one\":\"%{count}% verified\",\"other\":\"%{count}% verified\"},\"view_user\":\"View User\"},\"passwords\":{\"create\":{\"error\":\"There was a problem changing your password\",\"success\":\"User password was successfully updated\"},\"form\":{\"submit\":\"Send\"},\"new\":{\"title\":\"Change user password\"}},\"session_information\":{\"created_at\":\"Created\",\"last_sign_in\":\"Last sign in\",\"site\":\"Site\"},\"update\":{\"success\":\"User was successfully updated\"},\"welcome_messages\":{\"create\":{\"error\":\"The welcome message could not be sent. Please try again.\",\"success\":\"The welcome message has been sent\"}}},\"welcome\":{\"index\":{\"title\":\"Home\"}}},\"gobierto_attachments\":{\"events\":{\"gobierto_attachments_attachment_created\":\"Attachment created\",\"gobierto_attachments_attachment_updated\":\"Attachment updated\"}},\"gobierto_budgets\":{\"budget_lines\":{\"explorer\":{\"examples\":\"Examples\",\"expenses\":\"Expenses\",\"explore_the_detail\":\"Explore the detail\",\"income\":\"Income\",\"search\":\"Search\",\"search_budget_line\":\"Search for a specific budget line\"},\"index\":{\"amount\":\"Amount\",\"budget_guide_pitch\":\"Check the Budget Guide\",\"budget_line\":\"Budget line\",\"categories\":\"Categories\",\"custom\":\"Custom\",\"expense_in_what\":\"In what is spent\",\"expense_to_do_what\":\"For what is spent\",\"help\":\"We explain how a municipal budget works\",\"income_from_what\":\"Where does the income come from\",\"per_inhabitant\":\"Per inhabitant\",\"title\":\"Local municipality budgets in %{year}\"},\"show\":{\"about_this_line\":\"About this budget line\",\"avg_province\":\"Avg. %{kind} in the province\",\"avg_province_tooltip\":\"Mean value in the other municipalities of the province\",\"back_to_parent\":\"Back to parent budget line\",\"budget_line_category\":\"Category\",\"budget_line_percentage\":\"Percentage\",\"budget_line_value\":\"Amount\",\"budget_lines_distribution\":\"Expense budget lines distribution\",\"current_amount\":\"Current amount\",\"current_amount_per_inhabitant\":\"Current amount / hab.\",\"evolution\":\"Evolution\",\"give_your_opinion\":\"Give your opinion about this budget line\",\"give_your_opinion_cta\":\"Do you understand this budget line? Do you think it\\'s enough, too much? Give your opinion\",\"initial_estimate\":\"Initial budget\",\"last_year\":\"Last year %{value}\",\"no_description\":\"There\\'s no description for this budget line.\",\"no_distribution\":\"There aren\\'t any related budget lines.\",\"no_more_descendants\":\"There are no more descendants\",\"not_available\":\"Not avail.\",\"percentage\":\"% over the total\",\"percentage_tooltip\":\"Percentage of the total budget this budget line implies\",\"planned\":\"planned\",\"planned_female\":\"planned\",\"planned_per_inhabitant\":\"Initial budget / inh.\",\"planned_per_inhabitant_tooltip\":\"Budgeted amount divided by the inhabitants\",\"planned_tooltip\":\"Budgeted amount\",\"raise_hand\":\"Raise your hand\",\"real_value\":\"Real %{kind} is %{value}\",\"real_vs_planned\":\"% execution\",\"real_vs_planned_tooltip\":\"Percentage executed\",\"sub_budget_lines\":\"In this budget line\",\"twitter_text_expense\":\"In @gobierto: Municipal expense on %{name} in %{budget_line_name} for year %{year}\",\"twitter_text_income\":\"In @gobierto: Municipal income on %{name} in %{budget_line_name} for year %{year}\",\"updated\":\"updated\",\"updated_female\":\"updated\",\"vs_previous_year\":\"vs. previous year\",\"vs_previous_year_tooltip\":\"Comparision with the data of the previous year\"}},\"budgets\":{\"guide\":{\"budget_execution\":\"Budget execution\",\"budget_execution_p1_html\":\"Approving a budget does not mean that it is written in stone. Throughout the year there are unforeseen events that change the amount or purpose of the expenses. These changes are noted in another document: \\\\u003ca href=/presupuestos/ejecucion/%{year}\\\\\"\\\\u003ebudget execution\\\\u003c/a\\\\u003e .\",\"budget_execution_p2\":\"In order to know if our city council has planned the accounts well, we only have to compare the budget and the execution: Have you spent more than budgeted, have you left money or adjusted to what is expected ?.\",\"capital_income\":\"Income from capital\",\"capital_income_p1\":\"They come from the sale of municipal properties such as plots or estates. They can also come from European funds.\",\"classification\":\"Budget classification\",\"classification_p1\":\"Every budget has income and expenses. Income is classified in an economic way, which establishes its origin. Expenses, on the other hand, are functional and economical.\",\"debt\":\"Living Debt: How Much Should Your Township\",\"description\":\"The municipal budget is the document that explains how the public money is managed during a year. Here we explain the most important concepts so that you do not lose in your reading.\",\"economic\":\"Economic spending\",\"economic_p1\":\"Indicates the nature of the expense. For example, \\\\\"Staff costs\\\\\", which includes the salaries of all staff members according to their category. It is similar to the economic classification of income.\",\"economic_p2\":\"In an official budget, the main sections are called chapters. And in turn, each chapter is divided into articles, concepts and subconceptions.\",\"execution\":\"Budget Execution\",\"expense_economic_1_desc\":\"Salaries of civil servants, indemnities, contributions and pension plans for all contracted personnel.\",\"expense_economic_2_desc\":\"Supplies, materials and expenses of services or work done by contracted outsiders.\",\"expense_economic_3_desc\":\"Payment of interest arising from financial operations.\",\"expense_economic_4_desc\":\"Contributions to other entities or administrations (state, autonomous or private companies) to finance current operations.\",\"expense_economic_5_desc\":\"These are funds that cover emergency situations and unforeseen expenses.\",\"expense_economic_6_desc\":\"Creation of new equipment or infrastructures and acquisition of inventories.\",\"expense_economic_7_desc\":\"Payment of credits to finance capital operations, which have financed real investments.\",\"expense_economic_8_desc\":\"Acquisition of financial assets for the construction of deposits and sureties required.\",\"expense_economic_9_desc\":\"Payment of amortization of financial liabilities (such as debt).\",\"expense_functional_0_desc\":\"This item is intended to pay the debt accumulated by the municipality.\",\"expense_functional_1_desc\":\"This item covers the minimum and compulsory needs of a municipality.\",\"expense_functional_2_desc\":\"It is the money that goes to prevention and assistance. For example, the promotion of employment.\",\"expense_functional_3_desc\":\"It affects services that improve the quality of life: health, education, culture and leisure.\",\"expense_functional_4_desc\":\"Herein lies what helps to develop the potential of different economic sectors.\",\"expense_functional_9_desc\":\"Here the expenses of the city council and other public bodies are grouped together.\",\"expenses\":\"Expenses\",\"expenses_how\":\"How does the municipality use the money of all the neighbors? Expenses can be classified in two ways: from the functional point of view (what is spent) and economic (how it is spent).\",\"expenses_per_inhabitant\":\"The spending per capita was ...\",\"expenses_types\":\"Types of expense\",\"expenses_types_p1\":\"How does the municipality use the money of all the neighbors? Everything is detailed here. Expenses can be classified in two ways: from the functional point of view (what is spent) and economic (how it is spent). The amount of money is the same, but we see it from two angles.\",\"financial_income\":\"Financial income\",\"financial_income_p1\":\"They can be frozen bank deposits or loans granted by private entities, such as banks or insurers.\",\"functional\":\"Functional expenditure\",\"functional_p1\":\"It is the most explanatory: it tells us, for example, how much is spent on garbage collection or sports facilities. It is also known as expenditure item classification.\",\"functional_p2\":\"In an official budget is divided into areas, and these in turn in policies, groups and programs. This level of depth allows you to know in detail where the money goes.\",\"how_much_debt\":\"How much does your municipality owe?\",\"how_much_debt_p1\":\"The living debt of a municipality indicates what the council owes to banks and other financial institutions. It should not be confused with the total deficit of the municipality (the difference between income and expenditure).\",\"how_much_debt_p2\":\"Living debt only includes what is owed to financial institutions.\",\"how_much_debt_p3\":\"Some municipalities have greater indebtedness capacity than others. It is possible that one municipality has more debt than another, but if its economy is stronger, it will have more capacity to support and reduce it.\",\"how_to_read\":\"And how do you read?\",\"how_to_read_p1_html\":\"All municipal budgets have the same structure, legally defined in \\\\u003ca href=\\\\\"https://www.boe.es/buscar/doc.php?id=BOE-A-2008-19916\\\\\"\\\\u003eOrder EHA / 3565/2008\\\\u003c/a\\\\u003e . The basic structure is simple: it is divided into income and expenses. That is, answers the questions Where does the money come from? (Income) and what is it spent on? (expenses).\",\"income\":\"Income\",\"income_1_desc\":\"They tax the source of income, the fruits of heritage or an economic activity.\",\"income_2_desc\":\"Some municipalities collect a part of the VAT and other special taxes.\",\"income_3_desc\":\"Public prices and contributions for municipal benefits.\",\"income_4_desc\":\"Money that the city council receives from the State and the Autonomous Community.\",\"income_5_desc\":\"Property income of the municipality. They are the profits on goods that are not destined to public service.\",\"income_6_desc\":\"Sale of plots and rustic farms.\",\"income_7_desc\":\"Income of a non-tax nature intended to finance capital expenditures.\",\"income_8_desc\":\"Return of immobilized deposits or deposits.\",\"income_9_desc\":\"Credits requested from private entities.\",\"income_p1\":\"To begin with, income is divided according to its economic nature, ie where the money comes from and what \\\\\"form\\\\\" it has: If it is a bank credit, a municipal property that has been sold or a tax.\",\"income_p2\":\"In %{year} were entered...\",\"intro_p1\":\"The municipal council - formed by the mayor and those responsible for each area of \u200B\u200Bgovernment - designs the budget, drafts it through the Department of Finance and presents it in plenary, which is the organ of maximum representation municipal politics.\",\"intro_p2\":\"Once there, all councilors study it and suggest modifications. Finally it is put to a vote and approved.\",\"intro_p3\":\"The budget must be approved before December 31 of the previous year. That is, the 2016 budget has to be approved in December 2015, if not, it is automatically extended.\",\"regular_income\":\"Current income\",\"regular_income_p1\":\"Taxes and fees collected by the municipality, or money that the state transfers to each municipality. They are the most common.\",\"sources\":\"Sources\",\"sources_p1_html\":\"To prepare this guide we have taken as reference the official structure of a municipal budget, defined in \\\\u003ca href=\\\\\"https://www.boe.es/buscar/doc.php?id=BOE-A-2008-19916\\\\\"\\\\u003eOrder EHA / 3565/2008\\\\u003c/a\\\\u003e and we have been inspired by other documents such as \\\\u003ca href=\\\\\"http://www.ocmcartagena.org/files/archive/Entendiendo-un-presupuesto-municipal.pdf\\\\\"\\\\u003eUnderstanding a municipal budget\\\\u003c/a\\\\u003e and an \\\\u003ca href=\\\\\"https://docs.google.com/presentation/d/1oysDrJvlFxP0sKlzBalxvrV3lzSE5OCSKY7qd5yYpcA/pub?start=false\\\\u0026loop=false\\\\u0026delayms=3000\\\\u0026slide=id.p\\\\\"\\\\u003eintroduction guide to municipal budgets\\\\u003c/a\\\\u003e .\",\"title\":\"How a municipal budget works\",\"types_income\":\"Types of income\",\"types_income_p1\":\"The income is divided into nine sections and each of them in several subsections. These divisions allow to deepen to know the exact origin of each income.\",\"types_income_p2\":\"For example: within Indirect Taxes are the specific Consumptions. And within the latter, are the taxes of alcohol or tobacco. In an official budget, the main sections are called chapters. And in turn, each chapter is divided into articles, concepts and subconceptions.\",\"types_income_p3\":\"In Gobierto we have simplified it so that you only have to look for the name of each section.\"},\"index\":{\"at_a_glance\":\"At a glance\",\"at_years_end\":\"* at the end of %{year}\",\"budget_guide\":\"Read our Budget Guide\",\"budget_lines_block\":{\"intro\":\"These are your town\\'s most important budget lines.\",\"title\":\"Budget lines\"},\"budget_receipt\":{\"intro\":\"Learn how your contribution is spent\",\"title\":\"Your taxes receipt\"},\"budget_slides\":{\"slide_1\":\"Gasto en asistencia social por habitante\",\"title\":\"A peek into the budget\"},\"budgets_comparision\":{\"button\":\"Compare\",\"text\":\"Compare the %{site} budget with some others councils from\"},\"category_percentage\":\"Percentage\",\"category_value\":\"Amount\",\"context\":\"Context\",\"data_of_year\":\"* as of %{year}\",\"debt\":\"Debt\",\"debt_tooltip\":\"Debt of the local administration %{of_the_organization_name}\",\"description\":\"In this site you can learn about the budget\\'s income and expenses, the status of the execution, the different providers we work with and the evolution of the expense per inhabitant.\",\"executed\":\"Executed\",\"executed_percent\":\"%{percentage}% of the current budget\",\"executed_percent_other_year_html\":\"In %{year} it was a %{link}\",\"executed_tooltip\":\"The execution is the quantity that has been spent from the initial budget.\",\"execution_block\":{\"button\":\"Complete execution data\",\"expense\":\"Expense\",\"income\":\"Income\",\"intro\":\"This is how the budget is being spent.\",\"last_update\":\"Last update: %{date}.\",\"title\":\"Budget execution\"},\"expenses\":\"Expenses\",\"expenses_per_inhabitant\":\"Expenses per inhabitant\",\"expenses_per_inhabitant_tooltip\":\"Starting budget divided by the inhabitants\",\"expenses_per_inhabitant_updated\":\"Budget per inhabitant updated\",\"header\":\"Budgets\",\"in_total\":\"Total\",\"income\":\"Income\",\"income_per_inhabitant\":\"Income per inhabitant\",\"income_per_inhabitant_tooltip\":\"Starting budget divided by the inhabitants\",\"inhabitants\":\"Inhabitants\",\"inhabitants_tooltip\":\"Number of inhabitants\",\"initial_estimate\":\"Initial budget\",\"initial_estimate_per_inhabitant\":\"Initial budget per inhabitant\",\"less\":\"less\",\"level_1_category\":\"Level 1 category\",\"level_2_category\":\"Level 2 category\",\"main_budget_levels_legend_down\":\"Has decreased\",\"main_budget_levels_legend_one\":\"Change since last year\",\"main_budget_levels_legend_two\":\"\",\"main_budget_levels_legend_up\":\"Has increased\",\"main_budget_levels_per_inhabitant\":\"per inhabitant\",\"main_budget_levels_timeline\":\"Compare income and expenses year by year\",\"main_budget_levels_tooltip_article\":\"since\",\"main_budget_levels_tooltip_down\":\"Has gone down\",\"main_budget_levels_tooltip_up\":\"Has risen\",\"main_budget_lines\":\"Main income and expenses %{from_your_organization_name}\",\"main_budget_lines_expense\":\"Expense\",\"main_budget_lines_income\":\"Income\",\"more\":\"more\",\"most_interesting_budget_lines\":\"Most interesting budget lines\",\"most_interesting_budget_lines_description\":\"Some of the budget lines you are most affected in a daily basis as a citizien. You can also check the complete explorer.\",\"not_available_short\":\"Not avail.\",\"note_about_the_data\":\"Note about the data\",\"note_about_the_data_title\":\"The database we use doesn\\'t include 100% of the municipalities, and the avegages are calculated only with the data that exists (which is most of it). More information in our FAQ\",\"per_person\":\"Per person\",\"planned_vs_executed_other_year_html\":\"In %{year} it was %{link}\",\"search_for_a_budget_line\":\"Search a budget line\",\"see_all\":\"view all\",\"stories_header\":\"Explaining the budget\",\"story_1\":{\"lede\":\"Explaining the budget priorities for 2017, and how we built the budget around them.\",\"title\":\"General activities\"},\"story_2\":{\"lede\":\"Explaining the budget priorities for 2017, and how we built the budget around them.\",\"title\":\"Budgets and the environment\"},\"story_3\":{\"lede\":\"Explaining the budget priorities for 2017, and how we built the budget around them.\",\"title\":\"Promoting sports\"},\"title\":\"Local municipality budgets OF %{place} - %{year}\",\"top_expense_category\":\"Category\",\"top_expense_value\":\"Amount\",\"top_income_category\":\"Category\",\"top_income_value\":\"Amount\",\"total_expenses\":\"Total expenses\",\"total_expenses_tooltip\":\"Starting budget\",\"total_expenses_updated\":\"Current budget\",\"visualize\":\"Visualize expenses per inhabitant or the total\"}},\"budgets_elaboration\":{\"index\":{\"at_a_glance\":\"At a glance\",\"auto_funding\":\"Autofunding capability\",\"auto_funding_tooltip\":\"Percentage of fiscal income versus regular income\",\"by_custom_category\":\"per area\",\"by_economic_expense\":\"in what\",\"by_economic_income\":\"in what\",\"by_functional_expense\":\"for what\",\"category_percentage\":\"% of Total\",\"category_value\":\"Amount\",\"context\":\"Context\",\"debt_level\":\"Debt level\",\"debt_level_tooltip\":\"External funding need to pay expenses once used local resources\",\"description\":\"Government team publishes a draft of next year budget to discuss with the opposition and the citiziens. All together we can create the best budget for %{place_name}.\",\"diff_previous\":\"vs. previous\",\"expenses_per_inhabitant\":\"Expense per person\",\"expenses_per_inhabitant_tooltip\":\"Starting budget divided by the amount of inhabitants\",\"explore_the_detail\":\"Explore the details\",\"header\":\"Budgets elaboration\",\"in_total\":\"Total\",\"income_per_inhabitant\":\"Income per inhabitant\",\"income_per_inhabitant_tooltip\":\"Starting budget divided by the inhabitants\",\"main_budget_levels_timeline\":\"Compare income and expenses year by year\",\"main_budget_lines\":\"Main income and expenses %{from_your_organization_name}\",\"main_budget_lines_expense\":\"Expense\",\"main_budget_lines_income\":\"Income\",\"metric_boxes_data\":\"Data\",\"metric_boxes_data_description\":\"This is how it will be the next year\",\"net_savings\":\"Net savings\",\"net_savings_tooltip\":\"Regular income minus regular expenses and fiscal expenses\",\"next_year_proposal\":\"Proposal next %{year}\",\"no_data\":\"There\\'s no data for this classification\",\"note_about_the_data\":\"Note about the data\",\"note_about_the_data_title\":\"The database we use doesn\\'t include 100% of the municipalities, and the avegages are calculated only with the data that exists (which is most of it). More information in our FAQ\",\"per_person\":\"Per inhabitant\",\"proposal\":\"Proposal\",\"total_expenses\":\"Total expenses\",\"total_expenses_tooltip\":\"Starting budget\",\"total_income\":\"Total income\",\"total_income_tooltip\":\"Starting budget\",\"visualize\":\"Visualize expenses per inhabitant\"}},\"budgets_execution\":{\"execution_table\":{\"deviation\":\"Diff\",\"executed\":\"Execution\",\"planned\":\"Plann.\",\"view_less\":\"View less\",\"view_more\":\"View more\"},\"index\":{\"budget_guide\":\"Read our Budget Guide\",\"budget_lines_expense_higher\":\"Expense budget lines higher than planned\",\"budget_lines_expense_lower\":\"Expense budget lines lower than planned\",\"budget_lines_income_higher\":\"Income budget lines higher than planned\",\"budget_lines_income_lower\":\"Income budget lines lower than planned\",\"category\":\"Category\",\"custom_button\":\"Custom\",\"description\":\"The budget execution is the expense over the initial budget. It\\'s normal to find deviations from the budget, as its impossible to predict the expenses with a great precision\",\"economic\":\"economic\",\"economic_button\":\"In what is spent\",\"euros\":\"In euros\",\"execution_disclaimer\":\"It\\'s very common to have deviatiatons, due to the difficulty of foreseeing the expenses.\",\"execution_help\":\"The execution is the amount spent based on the planned budget.\",\"expenses_executed\":\"Executed expenses\",\"expenses_planned\":\"Planned expenses\",\"functional\":\"functional\",\"functional_button\":\"For what is spent\",\"higher_execution\":\"Higher execution\",\"income_executed\":\"Executed income\",\"income_planned\":\"Planned income\",\"initial_estimate\":\"Initial budget\",\"initial_estimate_per_inhabitant\":\"Initial budget per inhabitant\",\"lower_execution\":\"Lower execution\",\"metric\":{\"execution\":{\"expenses_title\":\"Execution of expenses\",\"income_title\":\"Execution of income\",\"previous_execution_message\":\"In %{year} execution reached %{percentage}\"}},\"percentage\":\"Percentage\",\"sort\":\"Sort\",\"title\":\"Budget execution\",\"tooltip_disclaimer\":\"\\\\u003cstrong\\\\u003eThis is approximate\\\\u003c/strong\\\\u003e. \\\\u003cbr /\\\\u003e Throughout the year there are unforeseen events that change the amount or purpose of the expenses or income.\",\"value\":\"Value\",\"vis\":{\"absolute\":\"Execution in \u20AC\",\"empty_lines\":\"There aren\\'t data for this classification and this year. Please, choose another filter.\",\"expenses\":{\"title\":\"Explore the execution of the expenses\"},\"income\":{\"title\":\"Explore the execution of the income\"},\"lines_title\":\"Budget lines\",\"percent\":\"% of progress\",\"percent_log\":\"% of progress (log)\",\"tooltip\":\"It has been executed by a\",\"tooltip_budgeted\":\"Initial budget\",\"tooltip_budgeted_updated\":\"Updated budget\",\"tooltip_executed_amount\":\"Executed amount\"}},\"widget_template_deviation\":{\"expense\":\"Expense\",\"income\":\"Income\",\"planned\":\"planned\",\"real\":\"real\"}},\"common\":{\"budget_line_description_html\":\"This budget line is composed of %{kind_what} in %{description}. If you want to understand more about it, check its parent budget line: %{link}\",\"expense\":\"expense\",\"expenses\":\"expenses\",\"income\":\"income\",\"incomes\":\"incomes\"},\"events\":{\"gobierto_budgets_budgets_updated\":\"Budgets updated\"},\"exports\":{\"budget_lines_description\":\"Compare income and expenses year by year\",\"budget_lines_title\":\"Budget lines\",\"invoices_description\":\"Data per year\",\"invoices_title\":\"Providers and Invoices\"},\"featured_budget_lines\":{\"gobierto_site_template\":{\"how_much_place_in\":\"How much does %{place} expend on...\",\"last_year\":\"Last year we spent\",\"per_person\":\"Per inhabitant\",\"show_me_another\":\"Show me another\",\"title\":\"Some important budget lines\",\"total\":\"Total expenses\"}},\"feedback\":{\"ask_more_information\":{\"ask_for_feedback\":\"Write your email to %{your_organization_name}\",\"send\":\"Send\",\"your_email\":\"Your email\"},\"follow\":{\"follow\":\"Follow\",\"your_email\":\"Your email\"},\"follow_success\":{\"error\":\"Looks like your email is invalid\",\"share\":\"Do you want to share this statistics in\",\"share_text\":\"Check and opinate about the budget in %{place_name}\",\"success\":\"Good! Check your email and click the link\"},\"step1\":{\"answer1_0\":\"Yes\",\"answer1_1\":\"No\",\"understand\":\"Do you understand this budget line?\"},\"step2_no\":{\"answer_html\":\"\\\\u003cstrong\\\\u003e%{datum}\\\\u003c/strong\\\\u003e of the people who voted said that \\\\u003cstrong\\\\u003edon\\'t understand this budget line\\\\u003c/strong\\\\u003e\",\"ask\":\"You can ask for more information\"},\"step2_yes\":{\"option1_html\":\"I think it\\'s \\\\u003cspan\\\\u003eFEW\\\\u003c/span\\\\u003e\",\"option2_html\":\"I think it\\'s \\\\u003cspan\\\\u003eGOOD\\\\u003c/span\\\\u003e\",\"option3_html\":\"I think it\\'s \\\\u003cspan\\\\u003eTOO MUCH\\\\u003c/span\\\\u003e\",\"question\":\"Do you think the amount is appropiate?\"},\"step3\":{\"option1\":\"Few\",\"option2\":\"Good\",\"option3\":\"Too much\",\"thanks\":\"Thanks for your opinion. This is what the rest of the people think:\"}},\"feedback_mailer\":{\"new_feedback_request\":{\"body\":\"You\\'ve received a new information request about the budget line %{budget_line_name} (%{year}) from a person with the email %{person_email}.\",\"body_budgets\":\"You\\'ve received a new information request about your municipality budgets from a person with the email %{person_email}.\",\"subject\":\"You\\'ve received a new information request\"}},\"indicators\":\"Indicators\",\"indicators_intro\":\"Understand the budgets of %{place} through its main figures: gross savings, per capita investment or investment financing.\",\"invoices\":{\"show\":{\"empty\":\"Any filter has data\",\"fromto\":\"From To No. Inv.\",\"invoiced\":\"Budget invoiced\",\"more\":\"More than\",\"table\":{\"fields\":{\"date\":\"Date\",\"paid\":\"Payed\",\"payment_date\":\"Payment date\",\"payment_date_limit\":\"Payment date limit\",\"provider_id\":\"NIF (SSN)\",\"provider_name\":\"Supplier\",\"subject\":\"Reason\",\"value\":\"Charge\"},\"pager\":{\"first\":\"First\",\"format\":\"Pages %{tpl} of %{tpl2}\",\"last\":\"Last\",\"next\":\"Next\",\"prev\":\"Prev\"}}}},\"layouts\":{\"application\":{\"budgets\":\"Budgets\"},\"menu_subsections\":{\"data\":\"Data\",\"elaboration\":\"Elaboration\",\"execution\":\"Execution\",\"guide\":\"Guide\",\"indicators\":\"Indicators\",\"providers\":\"Providers and Invoices\",\"receipt\":\"Receipt\"}},\"providers\":{\"index\":{\"all_invoices\":\"All the invoices\",\"amount_distribution\":\"Amount distribution\",\"and_more_html\":\"and \\\\u003cspan id=\\\\\"providers-number\\\\\"\\\\u003e\\\\u003c/span\\\\u003e providers\",\"are_from\":\"are from\",\"check_detail\":\"Check the detail\",\"corporation_sa\":\"public limited companies\",\"corporation_sl\":\"private limited companies \\\\u0026 others\",\"description\":\"Which providers hires %{the_organization_name}? Which invoices are paid? From this section you\\'ll be able to check a summary and have a context of all the information aggregated, and also check the detail of each payment %{the_organization_name} does.\",\"freelances\":\"freelances\",\"invoices\":\"Invoices\",\"invoices_from_which\":\"From which\",\"invoices_sum\":\"invoices sum a total of\",\"largest_provider_html\":\"The largest provider means \\\\u003cspan id=\\\\\"largestProvider\\\\\"\\\\u003e\\\\u003c/span\\\\u003e of the whole invoicing\",\"last_12_months\":\"Last 12 months\",\"last_3_months\":\"Last 3 months\",\"less_than_1000_html\":\"The \\\\u003cspan id=\\\\\"lessThan1000\\\\\"\\\\u003e\\\\u003c/span\\\\u003e of the invoices are smaller than 1,000 \u20AC\",\"loading\":\"Loading...\",\"main_providers\":\"Main providers\",\"mean_amount\":\"mean amount\",\"mean_and_median\":\"Mean and median\",\"mean_and_median_summary\":\"That is, half of the invoices are from this amount or less\",\"mean_summary\":\"Amount resulting from adding the amounts of all the invoices and dividing it by the number of invoices\",\"median_amount\":\"median amount\",\"months_distribution\":\"Months distribution\",\"percentile_10_html\":\"The \\\\u003cspan id=\\\\\"percentile10\\\\\"\\\\u003e\\\\u003c/span\\\\u003e of the invoices mean the 10 % of the invoicing\",\"percentile_50_html\":\"The \\\\u003cspan id=\\\\\"percentile50\\\\\"\\\\u003e\\\\u003c/span\\\\u003e of the invoices mean the 50 % of the invoicing\",\"previous\":\"Previous\",\"sum_amount\":\"SUMMED AMOUNT\",\"this_year\":\"This year\",\"view_data_from\":\"View data from\"}},\"receipts\":{\"show\":{\"description\":\"Part of your municipality budget is obtained via taxes. Calculate the amount depending on your house, car...\",\"detail\":\"Your contribution detail\",\"explanation\":\"Enter the amounts you have paid for each of the concepts in\",\"pick_to_calculate\":\"Pick to calculate\",\"share\":\"Share it\",\"share_text\":\"Check how much do you contribute to the budget of\",\"title\":\"Which is your contribution to %{site_name} budget?\",\"your_contribution\":\"Your contribution to %{site_name}\"}},\"shared\":{\"data_updated_at\":{\"last_update\":\"Last update\"},\"enough_information\":{\"enough_information\":\"Enough information?\",\"enough_information_cta\":\"Ask %{to_your_organization_name}\",\"enough_information_desc\":\"If you think it\\'s necessary to include more information about this data or about the usage of your taxes ask your municipality\"}},\"visualizations\":{\"G_custom\":\"Expenses per area\",\"G_economic\":\"In what\",\"G_functional\":\"How\",\"I_custom\":\"Income per area\",\"I_economic\":\"How\",\"category_per_inhabitant\":\"%{category} per inhabitant\",\"expenses_per_inhabitant\":\"Expenses per inhabitant\",\"expenses_per_inhabitant_updated\":\"Expenses per inhabitant updated\",\"inhabitant_short\":\"inh\",\"mean_autonomy\":\"Autonomy mean\",\"mean_national\":\"National mean\",\"mean_province\":\"Province mean\",\"previous_year_diff\":\"Previous year diff\",\"total_expenses\":\"Total expenses\"}},\"gobierto_calendars\":{\"calendar_integration\":{\"auth_error\":{\"message\":\"Calendar credentials are not valid\"},\"error\":{\"message\":\"There has been a problem synchronizing the calendar\"},\"timeout_error\":{\"message\":\"The connection time to the calendar server has expired\"}},\"events\":{\"gobierto_calendars_event_published\":\"%{subject_name}\",\"gobierto_calendars_event_updated\":\"%{subject_name}\"},\"fullcalendar\":{\"day\":\"Day\",\"list\":\"List\",\"month\":\"Month\",\"today\":\"Today\",\"week\":\"Week\"}},\"gobierto_cms\":{\"events\":{\"gobierto_cms_page_created\":\"Page created\",\"gobierto_cms_page_published\":\"Page published\",\"gobierto_cms_page_updated\":\"Page updated\",\"gobierto_cms_section_created\":\"Section created\",\"gobierto_cms_section_item_created\":\"Page added to section\",\"gobierto_cms_section_item_deleted\":\"Page deleted from section\",\"gobierto_cms_section_updated\":\"Section updated\"},\"pages\":{\"templates\":{\"page\":{\"documents\":\"Documents\"}}}},\"gobierto_common\":{\"dynamic_content\":{\"table_component\":{\"attachment\":\"Attachment\",\"download\":\"Download\",\"download_attachment\":\"Download attachment\",\"view_content\":\"View content\"}},\"events\":{\"gobierto_common_collection_created\":\"Collection created\",\"gobierto_common_collection_updated\":\"Collection updated\",\"gobierto_common_term_created\":\"Term created\",\"gobierto_common_term_updated\":\"Term updated\"},\"visualizations\":{\"absolute\":\"Execution in \u20AC\",\"adults\":\"Employed population\",\"age\":\"Age\",\"axis\":\"years\",\"between_25_44\":\"Between 25 and 44\",\"cards\":{\"active_pop\":{\"figure_first\":\"of total\",\"figure_second\":\"people\",\"title\":\"Active population\"},\"births\":{\"country\":\"Country average\",\"place\":\"%{place}\",\"province\":\"Province average\",\"title\":\"Birth rate\"},\"budget_by_inhabitant\":{\"title\":\"Budget per inhabitant\"},\"cars\":{\"title\":\"Cars per inhabitant\"},\"cars_tax\":{\"figure_first\":\"%{place}\",\"figure_second\":\"province average\",\"title\":\"Passenger cars tax\"},\"companies\":{\"title\":\"Companies\"},\"construction_tax\":{\"figure_first\":\"%{place}\",\"figure_second\":\"province average\",\"title\":\"Construction tax\"},\"contracts_comparison\":{\"figure_first\":\"short term\",\"figure_second\":\"long term\",\"title\":\"Contracts in the last month\"},\"contracts_sector\":{\"agriculture\":\"Agriculture\",\"construction\":\"Construction\",\"industry\":\"Industry\",\"services\":\"Services\",\"title\":\"Contracts by sector\"},\"deaths\":{\"country\":\"Country average\",\"place\":\"%{place}\",\"province\":\"Province average\",\"title\":\"Death rate\"},\"debt_by_inhabitant\":{\"title\":\"Debt by inhabitant\"},\"debt_level\":{\"title\":\"Debt level\"},\"economic_tax\":{\"title\":\"Economic activity tax\"},\"expenditure_rigidity\":{\"title\":\"Expenditure rigidity\"},\"financial_charge\":{\"title\":\"Financial charge\"},\"financial_risk\":{\"title\":\"Financial risk\"},\"freelancers\":{\"title\":\"Freelancers\"},\"frequency\":\"Updated %{type}\",\"gross_saving\":{\"title\":\"Gross saving\"},\"gross_savings_rate\":{\"title\":\"Gross savings rate\"},\"houses\":{\"figure_first\":\"family houses\",\"figure_second\":\"main houses\",\"title\":\"Houses\"},\"ibi\":{\"first_column\":\"\",\"second_column\":\"City\",\"third_column\":\"Rustic\",\"title\":\"Land value tax\"},\"income\":{\"first_column\":\"\",\"second_column\":\"By inhabitant\",\"third_column\":\"By household\",\"title\":\"Municipality income\"},\"income_overview\":{\"figure_first\":\"%{place}\",\"figure_second\":\"Spain\",\"title\":\"Gross income\"},\"investment_by_inhabitant\":{\"title\":\"Investment by inhabitant\"},\"investment_financing\":{\"title\":\"Investment financing\"},\"liability_cost\":{\"title\":\"Liability cost\"},\"meta\":{\"time\":\" in \",\"where\":\"At \"},\"net_saving\":{\"title\":\"Net saving\"},\"net_savings_rate\":{\"title\":\"Net savings rate\"},\"per_capita_investment\":{\"title\":\"Per capita investment\"},\"per_capita_tax_burden\":{\"title\":\"Per capita tax burden\"},\"population\":{\"title\":\"Inhabitants\"},\"self_financing_capacity\":{\"title\":\"Self financing capacity\"},\"ss_members\":{\"title\":\"Social Security affiliates\"},\"tax_autonomy\":{\"title\":\"Tax autonomy\"},\"unemployed_sector\":{\"agriculture\":\"Agriculture\",\"construction\":\"Construction\",\"industry\":\"Industry\",\"services\":\"Services\",\"title\":\"Unemployed by sector\"},\"updated\":\"Last update\"},\"country\":\"Spain\",\"elderly\":\"Elderly\",\"elderly_info\":\"The %{percent} of the population is elder than %{limit} years\",\"empty_lines\":\"There aren\\'t data for this classification and this year. Please, choose another filter.\",\"frequency\":\"Updated %{type}\",\"gross_income\":\"Gross income\",\"increase\":\"Increase\",\"inhabitant_short\":\"inh\",\"inhabitants\":\"Inhabitants\",\"keep\":\"Keep\",\"label\":\"inhabitants\",\"less_25\":\"Younger than 25\",\"lines_title\":\"Budget lines\",\"main_budget_levels_legend_down\":\"Has decreased\",\"main_budget_levels_legend_one\":\"Change since last year\",\"main_budget_levels_legend_two\":\"\",\"main_budget_levels_legend_up\":\"Has increased\",\"main_budget_levels_per_inhabitant\":\"per inhabitant\",\"main_budget_levels_tooltip_article\":\"since\",\"main_budget_levels_tooltip_article_last\":\"from the previous\",\"main_budget_levels_tooltip_down\":\"Has gone down\",\"main_budget_levels_tooltip_up\":\"Has risen\",\"mean\":\"Average age: %{age} years\",\"mean_autonomy\":\"Autonomy mean\",\"mean_national\":\"National mean\",\"mean_province\":\"Province mean\",\"median\":\"Median age: %{age} years\",\"men\":\"Men\",\"million\":\"million\",\"mode\":\"Most common age: %{age} years\",\"more_44\":\"Older than 44\",\"percent\":\"% of progress\",\"percent_log\":\"% of progress (log)\",\"previous_year_diff\":\"Previous year diff\",\"project\":\"Project\",\"questions\":\"Questions\",\"reduce\":\"Reduce\",\"thousand\":\"thousand\",\"time\":\" in \",\"title\":\"Wealth and population in the province\",\"tooltip\":\"It has been executed by a\",\"tooltip_budgeted\":\"Initial budget\",\"tooltip_budgeted_updated\":\"Updated budget\",\"tooltip_executed_amount\":\"Executed amount\",\"unemployed\":\"Unemployed\",\"where\":\"At \",\"women\":\"Women\",\"youth\":\"Minors\",\"youth_info\":\"The %{percent} of the population is younger than %{limit} years\"},\"vue_components\":{\"block_header\":{\"all\":\"All\",\"none\":\"None\"},\"calendar\":{\"date\":\"Choose date\"},\"filters\":{\"clear\":\"Clear filters\"},\"pagination\":{\"next\":\"Next\",\"previous\":\"Previous\"},\"read_more\":{\"less\":\"See less\",\"more\":\"See more\"},\"table\":{\"customize_columns\":\"Customize columns\",\"no_data\":\"There is no data for this criteria\"}}},\"gobierto_dashboards\":{\"available_cards\":\"Available cards\",\"back\":\"back\",\"changes\":\"Dashboard changed\",\"date\":\"Date: \",\"default_title\":\"Dashboard title\",\"delete\":\"Delete\",\"delete_dialog\":\"Do you wish to delete dashboard?\",\"discard\":\"discard changes\",\"indicators_amount\":\"\u279E %{amount} indicators\",\"instructions\":\"\\\\\"\u21E7 Select a card type and include it in the central area \u279E\\\\n\\\\nThen you can configure it.\\\\\"\\\\n\",\"objective\":\"Goal\",\"percentage\":\"Attainment\",\"percentage_alt\":\"% Attainment\",\"placeholder\":\"Write the title of the indicator or project\",\"public\":\"Public\",\"save\":\"Save\",\"select\":\"Select indicator\",\"type\":\"Type\",\"value\":\"Reached\",\"view_item\":\"See item\",\"widgets\":{\"html\":\"HTML Content\",\"indicator\":\"Indicator\",\"individual\":\"Individual\",\"table\":\"Table\"}},\"gobierto_data\":{\"accessibility\":{\"editor\":\"SQL Editor\"},\"data_type\":{\"boolean\":\"boolean\",\"date\":\"date\",\"datetime\":\"datetime\",\"decimal\":\"decimal\",\"hstore\":\"hstore\",\"integer\":\"integer\",\"jsonb\":\"jsonb\",\"string\":\"string\",\"text\":\"text\",\"time\":\"time\",\"timestamp\":\"time\",\"timestampz\":\"time\"},\"events\":{\"gobierto_data_dataset_dataset_created\":\"Dataset created\",\"gobierto_data_dataset_dataset_data_updated\":\"Dataset data updated\",\"gobierto_data_dataset_dataset_deleted\":\"Dataset deleted\",\"gobierto_data_dataset_dataset_updated\":\"Dataset updated\"},\"layouts\":{\"application\":{\"gobierto_data\":\"Data\"}},\"projects\":{\"all\":\"All\",\"buttonFork\":\"Click to create your own version of this query\",\"buttonQueries\":\"See queries (r)\",\"buttonRecentQueries\":\"See recent queries (r)\",\"buttonRunQuery\":\"Run query (CMD/WIN + Enter)\",\"cancel\":\"Cancel\",\"categories\":\"Categories\",\"createCopy\":\"Create a copy\",\"dashboards\":\"Dashboards\",\"data\":\"Data\",\"dataset\":\"Datasets\",\"datasetUpdated\":\"Last updated datasets\",\"deleteQuery\":\"Are you sure you want to delete this query?\",\"deleteViz\":\"Are you sure you want to delete this visualization?\",\"description\":\"Description\",\"download\":\"Download\",\"downloadData\":\"Download data\",\"edit\":\"Edit\",\"emptyRecentQueries\":\"There\\'s no recent queries\",\"favs\":\"Favorites\",\"frequency\":\"Frequency\",\"guide\":\"Guide to using the SQL editor\",\"license\":\"License\",\"link\":\"Link\",\"map\":\"Map\",\"modifiedQuery\":\"Modified Query\",\"modifiedVisualization\":\"Modified visualization\",\"numberOfRows\":\"Number of rows\",\"preview\":\"Preview\",\"private\":\"Private\",\"queries\":\"Queries\",\"query\":\"Query\",\"queryEmpty\":\"No available queries\",\"queryExecuted\":\"Query executed in\",\"queryName\":\"Query name\",\"recents\":\"Recents\",\"records\":\"Records\",\"resetQuery\":\"Reset query\",\"resetViz\":\"Reset visualization\",\"resources\":\"Resources\",\"revert\":\"Revert\",\"runQuery\":\"Run query\",\"save\":\"Save\",\"savedQuery\":\"Saved query\",\"savedVisualization\":\"Saved visualization\",\"sets\":\"Sets\",\"showAll\":\"Show all\",\"showLess\":\"Show less\",\"sourceDataset\":\"Source\",\"sourceDatasetUrl\":\"Source url\",\"subject\":\"Subject\",\"summary\":\"Summary\",\"updated\":\"Updated\",\"visEmpty\":\"No available visualizations\",\"visName\":\"Visualization name\",\"visPrivate\":\"Your visualizations\",\"visPublic\":\"All\",\"visualizations\":\"Visualizations\",\"visualize\":\"Visualize\",\"yourQueries\":\"Your queries\"}},\"gobierto_exports\":{\"exports\":{\"index\":{\"no_submodules\":\"There aren\\'t any active submodules\",\"subtitle\":\"In this page you can download the site data in a reusable format.\",\"title\":\"Download data\"}}},\"gobierto_indicators\":{\"events\":{\"gobierto_indicators_indicator_updated\":\"Indicator updated\"},\"indicators\":{\"gci\":{\"gci_description\":\"The GCI indicators (Global City Indicators), which reflect The quality of life of the city is defined by the World Bank, association with the purpose of fighting poverty and supporting development. The indicators may vary according to the selected year.\",\"gci_title\":\"GCI Indicators\",\"title\":\"Indicators %{year}\"},\"ip\":{\"ip_description\":\"Infoparticipa \u00E9s un projecte desenvolupat per el LPCCP, des de l\\'any 2012, l\\'objectiu \u00E9s avaluar la informaci\u00F3 que es publica als webs de les administracions p\u00FAbliques per promoure que millori la seva transpar\u00E8ncia i qualitat.\",\"ip_title\":\"Infoparticipa Indicators\",\"title\":\"Indicators %{year}\"},\"ita\":{\"ita_description\":\"The indicators ITA (Index of Transparency of the City councils) They are a tool that the non-governmental organization Transparency The International puts at the disposal of the Spanish councils to measure your level of transparency. They evaluate the management carried out by the town hall of a city through an integrated set of 80 clustered indicators in various areas.\",\"ita_title\":\"ITA indicators\",\"title\":\"Indicators %{year}\"},\"shared\":{\"latest_update_html\":\"\\\\u003cstrong\\\\u003eLatest update:\\\\u003c/strong\\\\u003e %{date}\"},\"template\":{\"calculation\":\"Calculation\",\"false\":\"it\\'s not true\",\"methodology\":\"Methodology\",\"more\":\"More information\",\"source\":\"Source\",\"true\":\"is fulfilled\"}},\"layouts\":{\"application\":{\"indicators\":\"Indicators\"},\"navigation\":{\"sub\":{\"gci\":\"GCI Indicators\",\"ip\":\"Infoparticipa Indicators\",\"ita\":\"ITA Indicators\"}}}},\"gobierto_investments\":{\"events\":{\"gobierto_investments_project_project_created\":\"Investment project created\",\"gobierto_investments_project_project_updated\":\"Investment project updated\"},\"layouts\":{\"application\":{\"investments\":\"Investments\",\"investments_paragraph\":\"Check the projects that the City Council has underway, those that will start soon, and the medium-term plans. Detail on the annual investment plan and mechanisms for monitoring the works in progress.\"}},\"projects\":{\"back\":\"see all\",\"description\":\"Description\",\"detail_title\":\"Project detail\",\"empty\":\"No results\",\"exit\":\"Exit\",\"gallery\":\"Gallery\",\"list\":\"List\",\"loading\":\"Loading data...\",\"map\":\"Map\",\"project\":{\"one\":\"%{count} project\",\"other\":\"%{count} projects\"},\"reset\":\"Clean filters\",\"see\":\"See again\",\"showall\":\"Show all\",\"showless\":\"Show less\",\"summary\":\"Summary by stats\",\"tech_sheet\":\"Technical datasheet\",\"tour\":\"Tour virtual\"}},\"gobierto_observatory\":{\"cards\":{\"active_pop\":{\"figure_first\":\"of total\",\"figure_second\":\"people\",\"title\":\"Active population\"},\"births\":{\"country\":\"Country average\",\"place\":\"%{place}\",\"province\":\"Province average\",\"title\":\"Birth rate\"},\"budget_by_inhabitant\":{\"title\":\"Budget per inhabitant\"},\"cars\":{\"title\":\"Cars per inhabitant\"},\"cars_tax\":{\"figure_first\":\"%{place}\",\"figure_second\":\"province average\",\"title\":\"Passenger cars tax\"},\"companies\":{\"title\":\"Companies\"},\"construction_tax\":{\"figure_first\":\"%{place}\",\"figure_second\":\"province average\",\"title\":\"Construction tax\"},\"contracts_comparison\":{\"figure_first\":\"short term\",\"figure_second\":\"long term\",\"title\":\"Contracts in the last month\"},\"contracts_sector\":{\"agriculture\":\"Agriculture\",\"construction\":\"Construction\",\"industry\":\"Industry\",\"services\":\"Services\",\"title\":\"Contracts by sector\"},\"deaths\":{\"country\":\"Country average\",\"place\":\"%{place}\",\"province\":\"Province average\",\"title\":\"Death rate\"},\"debt_by_inhabitant\":{\"title\":\"Debt by inhabitant\"},\"economic_tax\":{\"title\":\"Economic activity tax\"},\"freelancers\":{\"title\":\"Freelancers\"},\"frequency\":\"Updated %{type}\",\"houses\":{\"figure_first\":\"family houses\",\"figure_second\":\"main houses\",\"title\":\"Houses\"},\"ibi\":{\"first_column\":\"\",\"second_column\":\"City\",\"third_column\":\"Rustic\",\"title\":\"Land value tax\"},\"income\":{\"first_column\":\"\",\"second_column\":\"Gross\",\"third_column\":\"Net\",\"title\":\"Municipality income\"},\"income_overview\":{\"figure_first\":\"%{place}\",\"figure_second\":\"Spain\",\"title\":\"Gross income\"},\"investment_by_inhabitant\":{\"title\":\"Investment by inhabitant\"},\"meta\":{\"time\":\" in \",\"where\":\"At \"},\"population\":{\"title\":\"Inhabitants\"},\"ss_members\":{\"title\":\"Social Security affiliates\"},\"unemployed_sector\":{\"agriculture\":\"Agriculture\",\"construction\":\"Construction\",\"industry\":\"Industry\",\"services\":\"Services\",\"title\":\"Unemployed by sector\"},\"updated\":\"Last update\"},\"graphics\":{\"age_distribution\":{\"axis\":\"years\",\"label\":\"inhabitants\",\"title\":\"Discover the age distribution of your municipality\"},\"population_pyramid\":{\"adults\":\"Employed population\",\"age\":\"Age\",\"country\":\"Spain\",\"elderly\":\"Elderly\",\"elderly_info\":\"The %{percent} of the population is elder than %{limit} years\",\"mean\":\"Average age: %{age} years\",\"median\":\"Median age: %{age} years\",\"men\":\"Men\",\"mode\":\"Most common age: %{age} years\",\"unemployed\":\"Unemployed\",\"women\":\"Women\",\"youth\":\"Minors\",\"youth_info\":\"The %{percent} of the population is younger than %{limit} years\"},\"rent_distribution\":{\"gross_income\":\"Gross income\",\"inhabitants\":\"Inhabitants\",\"million\":\"million\",\"thousand\":\"thousand\",\"title\":\"Wealth and population in the province\"},\"unemployment_age\":{\"between_25_44\":\"Between 25 and 44\",\"less_25\":\"Younger than 25\",\"more_44\":\"Older than 44\",\"title\":\"Unemployment by age\"},\"unemployment_rate\":{\"country\":\"Spain\",\"title\":\"Unemployment rate comparison\"},\"unemployment_sex\":{\"men\":\"Men\",\"title\":\"Unemployment by sex\",\"women\":\"Women\"}},\"inhabitants\":\"inh\",\"intro\":\"Understand %{place} through its main figures: the population, the employment market and the economy.\",\"layouts\":{\"application\":{\"observatory\":\"Observatory\"},\"menu_subsections\":{\"banner_map\":\"A geographic viewer to explore the demographic structure of %{place}\",\"demographic_observatory\":\"Demographic observatory\",\"economia\":\"Employment\",\"empleo\":\"Economy\",\"poblacion\":\"Population\"}}},\"gobierto_people\":{\"departments\":{\"index\":{\"description\":\"Any organization that meets with an official must register as an interest group, and a record of the meetings is created. \\\\u003ca href=\\\\\"https://web.gencat.cat/en/tramits/tramits-temes/registre-grups-interes\\\\\"\\\\u003eLearn more about Interest Groups Policies\\\\u003c/a\\\\u003e. Explore organizations (companies, foundations, associations ...) that meet with officials of Generalitat.\",\"events\":\"registered events\",\"events_by_department\":\"Events by departments\",\"explore_departments\":\"Explore Departments and Officials\",\"explore_people\":\"Explore the agendas of Officials\",\"people_events\":\"Officials with more events\",\"people_with_events\":\"officials with registered events\",\"punchcard_title\":\"Meetings per departments and month\"},\"show\":{\"interest_groups_box_subtitle\":\"with meetings in the period\",\"interest_groups_box_title\":\"Interest groups\",\"interest_groups_box_title_single\":\"Interest group\",\"interest_groups_rowchart_title\":\"Interest groups with most meetings with this department\",\"interest_groups_with_events\":\"interest groups have met with this department\",\"map_title\":\"Where do officials travel?\",\"meetings_box_subtitle\":\"with interest groups\",\"meetings_box_title\":\"Meetings registered\",\"meetings_box_title_single\":\"Meeting registered\",\"people_box_subtitle\":\"with meetings registered\",\"people_box_title\":\"officials in this department\",\"people_box_title_single\":\"official in this department\",\"people_rowchart_title\":\"Officials of this department with most meetings\",\"people_with_events\":\"officials of this department with registered events\",\"punchcard_title\":\"Meetings per official and month\"}},\"events\":{\"gobierto_people_person_post_published\":\"Blog updated: %{subject_name}\",\"gobierto_people_person_post_updated\":\"Post updated: %{subject_name}\",\"gobierto_people_person_published\":\"New person published: %{subject_name}\",\"gobierto_people_person_statement_published\":\"New statement published: %{subject_name}\",\"gobierto_people_person_statement_updated\":\"Statement updated: %{subject_name}\",\"gobierto_people_person_updated\":\"Personal information updated\"},\"exports\":{\"index\":{\"events\":{\"description\":\"Listing of all events (past and future) with title, description, participants, location, etc.\",\"title\":\"Agendas\"},\"people\":{\"description\":\"Listing of officiald with their contact information, biography, CV, etc.\",\"title\":\"Officials\"},\"posts\":{\"description\":\"Latest posts in all blogs.\",\"title\":\"Blogs\"},\"statements\":{\"description\":\"Listing of all statements and it elements.\",\"title\":\"Statements\"}}},\"gifts\":{\"coc\":\"The Code of Conduct regulates what gifts can be received.\",\"description\":\"Officials receive gifts as a courtesy from organizations with which they meet. Here is the inventory of what has been received\",\"last\":\"Last gifts\",\"none\":\"No gifts have been registered in this period\",\"title\":\"Gifts\"},\"interest_groups\":{\"index\":{\"description\":\"Any organization that meets with an official must register as an interest group and a record of the meetings is created. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eLearn more about the Interest Groups Regulations\\\\u003c/a\\\\u003e. Explore organizations (companies, foundations, associations ...) that meet with officials of the Generalitat\",\"interest_groups\":\"registered interest groups\",\"no_data\":\"There is no data for the selected dates\",\"rowchart_title\":\"Interest groups with most meetings\",\"title\":\"Interest Groups\"},\"show\":{\"event\":\"registered event\",\"events\":\"registered events\",\"events_by_department\":\"With which departments does this group meet?\",\"events_by_person\":\"Officials with which this group has met\",\"explore_departments\":\"Explore Departments and Officials\",\"explore_people\":\"Explore the agendas of Officials\",\"people_with_events\":\"the number of Officials with which this group has met\",\"punchcard_title\":\"Meetings per official and month\",\"status\":\"Inscription status in interest groups registry: %{status}\"}},\"invitations\":{\"coc\":\"The Code of Conduct regulates which invitations can be accepted.\",\"description\":\"Officials receive invitations to events, to make visits, give lectures... Here is a list of accepted invitations.\",\"last\":\"Last invitations\",\"none\":\"No invitations have been registered in this period\",\"title\":\"Invitations\"},\"layouts\":{\"application\":{\"title\":\"Officials and Agendas\"},\"departments\":{\"no_departments_within_dates\":\"There are no departments for this date range\"},\"menu_subsections\":{\"agendas\":\"Agendas\",\"blogs\":\"Blogs\",\"departments\":\"Departments\",\"gifts\":\"Gifts\",\"interest_groups\":\"Interest Groups\",\"invitations\":\"Invitations\",\"people\":\"Officials\",\"statements\":\"Statements\",\"trips\":\"Trips\"}},\"people\":{\"contact_methods\":{\"send_email\":\"Send an email\"},\"gifts\":{\"index\":{\"gifts\":\"Gifts\",\"no_gifts\":\"There are no gifts in the given dates\",\"title\":\"Gifts received by %{person_name}\"}},\"google_calendar\":{\"authorization\":{\"new\":{\"success\":\"Configuration stored successfully. One last step, pick which calendas you want to automatically publish in your agenda.\"}},\"calendars\":{\"edit\":{\"explain\":\"Select which calendars you want to automatically publish in your agenda\",\"save\":\"Save\",\"title\":\"Google Calendar integration\"},\"update\":{\"success\":\"Calendars saved successfully.\"}}},\"index\":{\"department_officials\":\"Officials in %{department_name}\",\"no_people_within_range\":\"There are no officials for this date range\",\"subscribable_box\":{\"title\":\"Receive alerts in your inbox\"},\"title\":\"%{site_name}\\'s organization chart\"},\"invitations\":{\"index\":{\"invitations\":\"Invitations\",\"no_invitations\":\"There are no invitations in the given dates\",\"title\":\"Invitations received by %{person_name}\"}},\"latest_activity\":{\"no_activity\":\"This profile has not registered any activity yet.\",\"title\":\"Latest activity\"},\"navigation\":{\"agenda\":\"Agenda\",\"bio\":\"Biography and CV\",\"blog\":\"Blog\",\"gift_received\":\"gift received\",\"gifts\":\"Gifts\",\"gifts_received\":\"gifts received\",\"interest_group\":\"interest group\",\"interest_groups\":\"interest groups\",\"invitation\":\"invitation\",\"invitations\":\"invitations\",\"meeting_with\":\"meeting with\",\"meetings_with\":\"meetings with\",\"statements\":\"Goods and Activities\",\"trip_made\":\"trip made\",\"trips\":\"Trips\",\"trips_made\":\"trips made\"},\"people_filter\":{\"organigram\":\"%{name} organigram\",\"political_groups\":\"%{name} political groups\"},\"person\":{\"picture\":\"Picture of %{name}\"},\"person_bio\":{\"show\":{\"download\":\"Download CV\",\"subtitle\":\"Biography and CV\",\"title\":\"%{person_name}\\'s profile\"}},\"person_events\":{\"index\":{\"agenda\":\"Agenda\",\"no_events\":\"There are no meetings in the given dates\",\"past_events\":\"Past events\",\"title\":\"%{person_name}\\'s agenda\",\"upcoming_events\":\"Agenda\"},\"show\":{\"event_data\":{\"event_attachments\":\"Documents\",\"event_attendees\":\"Attendees\",\"event_locations\":\"Location\"},\"title\":\"%{person_name}\\'s agenda\"}},\"person_messages\":{\"create\":{\"error\":\"Message couldn\\'t be sent\",\"success\":\"Message sent successfully\"},\"new\":{\"placeholders\":{\"body\":\"Write a message\",\"email\":\"Your email\",\"name\":\"Your name\"},\"submit\":\"Send\",\"title\":\"Send a message %{name}\"}},\"person_post_tags\":{\"show\":{\"filtering_by_tag\":\"Filtering by \\\\\"%{tag}\\\\\"\",\"go_back\":\"Back to blog\"}},\"person_posts\":{\"index\":{\"no_posts\":\"There aren\\'t posts published.\",\"title\":\"%{person_name}, %{person_charge}\\'s blog\"},\"show\":{\"title\":\"%{person_name}, %{person_charge}\\'s blog\"}},\"person_statements\":{\"index\":{\"no_statements\":\"There aren\\'t yet statems for this person.\",\"title\":\"%{person_name}\\'s goods and Activities\"},\"show\":{\"download\":\"Download statement (%{file_size})\",\"title\":\"%{person_name}\\'s goods and Activities\",\"view_previous\":\"View previous\"}},\"show\":{\"events_section_title\":\"Last meetings\",\"gifts_section_title\":\"Last gifts\",\"invitations_section_title\":\"Last invitations\",\"no_data\":\"There is no data in the given dates\",\"party\":{\"government\":\"Government\",\"opposition\":\"Oposition\"},\"trips_section_title\":\"Last trips\"},\"subscription_button\":{\"cancel\":\"Cancel\",\"follow\":\"Folloe\"},\"trips\":{\"index\":{\"no_trips\":\"There are no trips in the given dates\",\"title\":\"Trips made by %{person_name}\",\"trips\":\"Trips\"},\"trip\":{\"accomodation_expenses\":\"Accomodation\",\"by\":\"by\",\"company\":\"Trip party\",\"expenses\":\"Expenses\",\"food_expenses\":\"Food\",\"in\":\"in\",\"meeting_name\":{\"one\":\"meeting\",\"other\":\"meetings\"},\"other_expenses\":\"Other expenses\",\"person_name\":{\"one\":\"person\",\"other\":\"people\"},\"total_expenses\":\"Total expenses\",\"transport_expenses\":\"Transport\"}},\"upcoming_events\":{\"no_upcoming_events\":\"Ther eare no upcoming events\",\"title\":\"Agenda\",\"view_all\":\"View all\"}},\"people_filter\":{\"all\":\"All\",\"categories\":{\"executive\":\"Executive\"},\"parties\":{\"government\":\"Government Team\",\"opposition\":\"Opposition\"},\"political_groups\":{\"title\":\"Political groups\"}},\"person_events\":{\"index\":{\"agenda_switcher\":{\"subtitle\":\"Filter by community members\",\"title\":\"Check the agenda of...\"},\"displaying_events_of\":\"Displaying events of %{date}\",\"go_back\":\"Go back\",\"no_events\":\"There are no future or past events.\",\"no_past_events\":\"There are no past events.\",\"no_upcoming_events\":\"There are no future events. Take a look at past ones\",\"past_events\":\"Past events\",\"subscribable_box\":{\"title\":\"Receive a summary of the agendas of your representatives\"},\"title\":\"%{site_name}\\'s member agendas\",\"upcoming_events\":\"Agenda\"},\"person_events_filter\":{\"agenda\":\"%{name} members agenda\"}},\"person_gifts\":{\"index\":{\"error\":\"We have not found the page you were looking for\"}},\"person_mailer\":{\"new_message\":{\"hi\":\"Hi\",\"new_message\":\"You have a new message from %{name} (%{reply_to})\",\"subject\":\"You have received a new message from %{name}\"}},\"person_post_tags\":{\"show\":{\"filtering_by_tag\":\"Filtering by \\\\\"%{tag}\\\\\"\",\"go_back\":\"Go back\"}},\"person_posts\":{\"index\":{\"subscribable_box\":{\"title\":\"Receive alerts in your inbox\"},\"switcher\":{\"subtitle\":\"Filter by community members\",\"title\":\"Check posts from...\"},\"title\":\"Blogs\"},\"person_post_excerpt\":{\"continue\":\"Continue reading\"}},\"person_statements\":{\"index\":{\"subscribable_box\":{\"title\":\"Receive alerts in your inbox\"},\"switcher\":{\"subtitle\":\"Filter by community members\",\"title\":\"Check statements from...\"},\"title\":\"Statements\"}},\"person_trips\":{\"index\":{\"error\":\"We have not found the page you were looking for\"}},\"shared\":{\"app_breadcrumb_title\":\"Public management activity viewer\",\"app_title\":\"Public management activity derived from the Code of Conduct\",\"check_it_out\":\"Check the text of the Code of Conduct\",\"datepicker\":{\"1m\":\"Last month\",\"1y\":\"Last year\",\"3m\":\"Last three months\",\"all\":\"Everything\",\"range\":\"Custom range\",\"today\":\"Today\"},\"datepicker_fixed\":\"Data corresponding to the period\",\"destination\":\"destination\",\"destinations\":\"destinations\",\"displacement\":\"displacement\",\"displacements\":\"displacements\",\"from\":\"from\",\"locales\":{\"locale\":\"Language\",\"page_locale\":\"Page locale\",\"select_locale\":\"Select language\"},\"meetings_punchcard\":{\"tooltip\":\"meetings\",\"tooltip_single\":\"meeting\"},\"meetings_rowchart\":{\"tooltip\":\"meetings\",\"tooltip_single\":\"meeting\"},\"noresults\":\"No results\",\"open_data_footer\":{\"gifts\":\"Gifts\",\"invitations\":\"Invitations\",\"meetings\":\"Meetings\",\"title\":\"Access the data in the Open Data portal\",\"trips\":\"Trips\"},\"table_item\":{\"view_details\":\"View details\"},\"to\":\"to\",\"view_all\":\"View all\",\"view_all_f\":\"View all\",\"view_charges\":\"View all positions\",\"view_details\":\"View details\",\"view_gifts\":\"View all the gifts on the Open Data portal\",\"view_invitations\":\"View all the invitations on the Open Data portal\",\"view_officials\":\"View Officials\"},\"welcome\":{\"index\":{\"departments\":\"Departments\",\"departments_extra\":\"Departments that exist or have existed based on the selected period\",\"departments_rowchart_title\":\"Departments with most meetings\",\"description_1\":\"The viewer shows the meetings of the senior management of the Generalitat administration with the people who have the status of interest group in the time period you select. You will also find the gifts and invitations allowed by the Code of Conduct, which forces senior management to make this information public. Likewise, the viewer allows to consult the trips abroad of the President, advisors and senior positions in the exercise of their functions.\",\"description_2_html\":\"Regarding the information of the senior management, the positions that they occupy or have occupied in the selected period are shown.\",\"events_summary\":{\"no_events\":\"There are no events\",\"no_upcoming_events\":\"There are no future events. Take a look at past ones\",\"past_events\":\"Past events\",\"upcoming_events\":\"Agenda\",\"view_all\":\"View all\"},\"gifts\":\"Gifts\",\"interest_groups_box_subtitle\":\"with meetings in the period\",\"interest_groups_box_title\":\"Interest groups\",\"interest_groups_box_title_single\":\"Interest group\",\"interest_groups_rowchart_title\":\"Interest groups with most meetings\",\"map_title\":\"Where do officials travel?\",\"meetings_box_subtitle\":\"with interest groups\",\"meetings_box_title\":\"Meetings registered\",\"meetings_box_title_single\":\"Meeting registered\",\"people_box_subtitle\":\"with registered activity\",\"people_box_title\":\"Officials\",\"people_box_title_single\":\"Official\",\"people_rowchart_title\":\"Officials with most meetings\",\"people_summary\":{\"no_people\":\"There is no people\",\"title\":\"%{site_name}\\'s organization chart\",\"view_all\":\"View all\"},\"posts_summary\":{\"title\":\"Blogs\",\"view_all\":\"View all\"},\"punchcard_title\":\"Meetings per official and month\",\"search\":\"Search\",\"search_placeholder\":\"Search an official\",\"statements\":\"Salaries and retributions\",\"subscribable_box\":{\"title\":\"Receive updates in your inbox\"},\"title\":\"Agendas\",\"trips\":\"Trips\"}}},\"gobierto_plans\":{\"custom_fields_plugins\":{\"budgets\":{\"detail_text\":\"see detail in Budgets\",\"title\":\"Budget\"}},\"events\":{\"gobierto_plans_plan_created\":\"Plan created\",\"gobierto_plans_plan_data_csv_imported\":\"Plan data imported from CSV file\",\"gobierto_plans_plan_type_created\":\"Plan type created\",\"gobierto_plans_plan_type_updated\":\"Plan type updated\",\"gobierto_plans_plan_updated\":\"Plan updated\",\"gobierto_plans_progresses_updated\":\"Projects progresses updated\",\"gobierto_plans_project_created\":\"Project created\",\"gobierto_plans_project_destroyed\":\"Project deleted from plan\",\"gobierto_plans_project_updated\":\"Project updated\"},\"layouts\":{\"application\":{\"plans\":\"Plans\"}},\"plan_types\":{\"sdg\":{\"header\":{\"sdgs_description\":\"The Sustainable Development Goals are a set of global goals related to the environmental, political, and economic challenges facing our world. Here you can see how the Municipal Action Plan connects with the SDGs.\",\"sdgs_title\":\"Sustainable Development Goals\"},\"projects\":{\"sdg_projects_empty\":\"There are no plan %{projects_term} related to this Goal\",\"sdg_projects_title\":\"Plan %{projects_term} related to this Goal\"}},\"show\":{\"category\":\"Category\",\"customize_columns\":\"Customize columns\",\"dashboards\":\"Dashboards\",\"desc\":\"Description\",\"ends\":\"End\",\"global_execution\":\"State of global execution\",\"latest_update_html\":\"\\\\u003cstrong\\\\u003eLatest update:\\\\u003c/strong\\\\u003e %{date}\",\"loading\":\"Loading...\",\"percent_out_of_total\":\"% out of total\",\"plan\":\"Plan\",\"progress\":\"Progress\",\"read_less\":\"Read more\",\"read_more\":\"Read less\",\"starts\":\"Start\",\"status\":\"Status\",\"view_by\":\"View by\"}}},\"gobierto_visualizations\":{\"layouts\":{\"application\":{\"gobierto_visualizations\":{\"contracts\":\"Contracts and tenders\",\"costs\":\"Costs\",\"debts\":\"Debt\",\"odss\":\"ODS\",\"subsidies\":\"Subsidies\"}}},\"shared\":{\"download_data\":\"Download the full dataset in a reusable format\",\"loading\":\"Loading data...\"},\"visualizations\":{\"categories\":{\"agriculture\":\"Agriculture\",\"architecture\":\"Architecture\",\"audiovisual\":\"Audiovisual\",\"catering\":\"Catering\",\"construction\":\"Construction\",\"culture\":\"Culture\",\"education\":\"Education\",\"electrical\":\"Electrical\",\"energy\":\"Energy\",\"environment\":\"Environment\",\"finance\":\"Finance\",\"furniture\":\"Furniture\",\"health\":\"Health\",\"industry\":\"Industry\",\"it\":\"Information technology\",\"legal\":\"Legal\",\"maintenance\":\"Maintenance\",\"other\":\"Other\",\"print\":\"Print\",\"public_services\":\"Public services\",\"real_estate\":\"Real estate\",\"security\":\"Security\",\"social_services\":\"Social services\",\"software\":\"Software\",\"telecom\":\"Telecom\",\"textile\":\"Textile\",\"transportation\":\"Transportation\"},\"contract_statuses\":{\"abandoned\":\"Abandoned\",\"awarded\":\"Awarded\",\"finally_awarded\":\"Finally awarded\",\"finally_void\":\"Void\",\"formalized\":\"Formalized\",\"highest_rated\":\"Highest rated\",\"provisionally_awarded\":\"Provisionally awarded\",\"provisionally_void\":\"Provisionally void\",\"revoked\":\"Revoked\",\"void\":\"Void\"},\"contract_types\":{\"construction\":\"Construction\",\"other\":\"Others\",\"patrimonial\":\"Patrimonial\",\"private_contract\":\"Private\",\"public_private_collaboration\":\"Collaboration between the public and private sectors\",\"public_services_management\":\"Management of public services\",\"public_works\":\"Concession of public services\",\"services\":\"Services\",\"special_administrative\":\"Special administrative\",\"supplies\":\"Supplies\"},\"contracts\":{\"amount_by_type_of_process\":\"Amount by type of process\",\"amount_distribution\":\"Amount distribution\",\"assignee\":\"Assignee\",\"categories\":\"Categories\",\"contract\":\"Contract\",\"contract_amount\":\"Contract Amount\",\"contract_type\":\"Type of contract\",\"contractor\":\"Contractor\",\"contracts\":\"Contracts\",\"contracts_assigned_to\":\"Contracts assigned to\",\"contracts_show\":{\"assignee_description\":\"Company that has won the contract (Assignee)\",\"assignees_description\":\"Companies that have won the contract (Assignees)\",\"awarding_entity\":\"Awarding entity\",\"batch\":\"Batch\",\"bid_description\":\"Bid base budget without taxes\",\"bidders_description\":\"Number of companies that have submitted to the process (Bidders)\",\"contract_amount\":\"Contract amount\",\"entity\":\"Entity\",\"estimated_value\":\"Estimated value\",\"external_source\":\"Source\",\"formalization\":\"Formalization\",\"process\":\"Procedure\",\"question_description\":\"What % of the budget is this contract?\",\"tender\":\"Tender\",\"type\":\"Type\"},\"date\":\"Date\",\"dates\":\"Dates\",\"description\":\"Visualizations and analisys for the awarded contracts and tenders to %{entity_name}\",\"entities\":\"Entities\",\"final_amount_no_taxes\":\"Amount\",\"formalization_date\":\"Date of formalization\",\"fromto\":\"From To No Contr.\",\"main_assignees\":\"Main assignees\",\"more\":\"More than\",\"nav\":{\"contracts\":\"Contracts\",\"summary\":\"Summary\",\"tenders\":\"Tenders\"},\"process_type\":\"Type of procedure\",\"search_placeholder\":\"Search by assignee or by contract title\",\"status\":\"Status\",\"submission_date\":\"Date\",\"summary\":{\"contracts\":\"Assigned contracts\",\"contracts_for\":\"contracts for a total amount of\",\"mean_amount\":\"Average amount\",\"median_amount\":\"Median amount\",\"tenders\":\"Tenders\",\"tenders_for\":\"tenders for a total amount of\",\"tip_1\":\"The %{strong1} of contracts are less than %{strong2}\",\"tip_2\":\"The largest contract means a %{strong} of all the spending\",\"tip_3\":\"The %{strong} of contracts accumulate the 50% of all the spending\"},\"tender_amount\":\"Tender Amount\",\"tender_date\":\"Date of tender\",\"title\":\"Contracts and tenders\"},\"costs\":{\"activities\":\"Activities\",\"cost_direct\":\"Direct cost\",\"cost_indirect\":\"Indirect cost\",\"cost_inhabitant\":\"Cost / inhabitant\",\"cost_per_inhabitant\":\"Cost per inhabitant\",\"coverage\":\"Cobertura\",\"description\":\"The %{entity_name} provides services to its citizens based on their competencies. This provision of services involves a cost that is covered by the income available to the City Council, which are derived from the service itself to be provided or from general resources of the taxes or subsidies received.\",\"description_2\":\"This section shows the data on the costs of the services and the income needed to provide them.\",\"description_3\":\"The starting point is the municipal budget, but with this analysis the real cost of a service is expanded and specified as we can find related the indirect (support) cost required to provide a service.\",\"detail\":\"Detail\",\"distribution\":\"Distribution of costs by area\",\"home\":\"Home\",\"income\":\"Income\",\"inhabitants\":\"Habitants\",\"item\":{\"competence\":\"Competence\",\"description\":\"Description\",\"equipments\":\"Equipments\",\"external_services\":\"External services\",\"goods_and_services\":\"Goods and services\",\"income_cost\":\"Income - Cost\",\"legal_framework\":\"Legal framework\",\"observation\":\"Observations\",\"personal_cost\":\"Personal cost\",\"public_tax\":\"Public tax or prices\",\"subsidies\":\"Subsidies\",\"total\":\"Total\",\"transference\":\"Transference\",\"types\":\"Types\"},\"per_inhabitant\":\"per inhabitant\",\"see_all\":\"See all\",\"title\":\"Costs\",\"tooltips\":{\"cost_direct\":\"Resources needed to provide a finalist service or activity that is directly related.\",\"cost_indirect\":\"Resources for the provision of non-finalist services and which are necessary support for the performance of finalist services and activities.\",\"cost_per_habitant\":\"Total cost divided by the number of inhabitants.\",\"cost_total\":\"Sum of direct cost and indirect cost.\",\"coverage\":\"State of coverage of income directly related to the total cost of the activity or service.\",\"income\":\"Revenue directly related to the provision of the service, whether derived from the application of a public fee or price or a subsidy.\"},\"tooltips_items\":{\"cost_indirect\":\"An equal part of the cost of non-finalist activities (human resources, financial services).\",\"coverage\":\"Measure (in%) to which the income directly related to the activity is sufficient to cover its cost.\",\"equipments\":\"Proportional cost of using the infrastructure necessary for the provision of the activity or service (consumption and maintenance of buildings, vehicles) depending on the degree of use.\",\"externalServices\":\"Miscellaneous services acquired by the City Council and benefits for legal or natural persons not included in the staff.\",\"goodsServices\":\"Monetary assessment of the consumption of necessary and non-storable consumable material essential for the provision of the business or service (supply, office supplies).\",\"income_cost\":\"Difference between the set of income directly related to the activity and the cost required to provide it. A negative balance indicates the insufficiency of specific resources and the need for financing with general funds from the City Council.\",\"staff_cost\":\"Annual calculation of the part of the salaries and wages of the workers proportional to their dedication to the activity.\",\"subsidies\":\"Income without direct compensation by the beneficiary, intended for a specific activity or project.\",\"taxes\":\"Financial consideration received for the provision of a service or the private use or exclusive use of the public domain.\",\"transferences\":\"Contributions of financial resources from the City Council as a previously granted subsidy.\"},\"total\":\"Total cost\",\"total_cost\":\"Total cost\"},\"debts\":{\"breakdown_debt\":\"Debt breakdown\",\"creditor\":\"Per creditor\",\"date_debt\":\"Debt data as of December 31, 2025.\",\"debtor\":\"Per debtor\",\"description\":\"La deuda financiera y a largo plazo del Ayuntamiento englova la deuda de todos sus entes dependientes (Sociedades Mercantiles, EPE\u2019s, Fundacio\u00F3ns, Consorcios).\",\"evolution_debt\":\"Debt evolution\",\"millions\":\"The unit of the numbers in this chart is millions of euros.\",\"title\":\"Debt\",\"total_debt\":\"Total debt\"},\"odss\":{\"amount\":\"Amount\",\"assigned\":\"Aligned\",\"description_html\":\"\\\\u003cp\\\\u003eSince 2015, the UN has approved the Agenda 2030, incorporating the 17 Sustainable Development Goals (SDGs), and establishing a transformative vision towards economic, social and environmental sustainability, this City Council has collaborated in opening a new path to improve the life of all and everyone, without leaving anyone behind.\\\\u003c/p\\\\u003e \\\\u003cp\\\\u003eIt is for this reason that after presenting the Municipal Strategic Plan 2023-2027 aligned with the SDGs, the alignment of the municipal budget with the Agenda 2030 is being competed.\\\\u003c/p\\\\u003e \\\\u003cp\\\\u003eThe budget viewer allows a better evaluation of the appropriateness of the resources used and the political priorities, and contributes to directing efforts towards the areas where greater focus is needed.\\\\u003c/p\\\\u003e \\\\u003cp\\\\u003eThis tool is designed to offer the public a comprehensive view of the degree of alignment of the municipal expenses of this year with the achievement of the SDGs.\\\\u003c/p\\\\u003e\",\"functional_code\":\"Functional code\",\"label_title_budgets_ods\":\"Distribution of budget lines by ODS\",\"label_title_ods\":\"Distribution of expense by Sustainable Development Goals\",\"name\":\"Name\",\"ods_distribution\":\"ODS distribution\",\"title\":\"Budget aligned with the Sustainable Development Goals (ODS)\",\"unassigned\":\"Unaligned\",\"updated_date\":\"Data updated on March 18, 2025\"},\"process_types\":{\"based_on_agreement\":\"Based on Marco agreement\",\"competitive_dialogue\":\"Competitive dialogue\",\"dynamic_acquisition\":\"Based on dynamic acquisition system\",\"innovation\":\"Association for innovation\",\"innovation_derived\":\"Derived from association for innovation\",\"internal_rules\":\"Internal rules\",\"minor_contract\":\"Minor contract\",\"negotiated\":\"Negotiated\",\"negotiated_with_publicity\":\"Negotiated with publicity\",\"negotiated_without_publicity\":\"Negotiated without publicity\",\"open\":\"Open\",\"open_simplified\":\"Open simplified\",\"others\":\"Others\",\"project_competition\":\"Project competition\",\"restricted\":\"Restricted\"},\"subsidies\":{\"amount\":\"Amount\",\"amount_distribution\":\"Amount distribution\",\"beneficiary\":\"Beneficiary\",\"call\":\"Call\",\"category\":\"Category\",\"date\":\"Date\",\"dates\":\"Dates\",\"description\":\"Visualizations and analisys for the granted subsidies from %{entity_name}\",\"details\":\"In agreement with article 7.8 Real Decreto 130/2019, the information on awards to legal persons will remain published during the four calendar years following the year in which the aid was granted, and in the case of natural persons, publicity is limited to the awarding plus one years.\",\"fromto\":\"From To No Subs.\",\"main_beneficiaries\":\"Main beneficiaries\",\"more\":\"More than\",\"nav\":{\"subsidies\":\"Subsidies\",\"summary\":\"Summary\"},\"person\":\"Individual person\",\"subsidies\":\"Subsidies\",\"subsidies_amount\":\"Imp. Subsidie\",\"subsidies_total\":\"Total Subsidies\",\"summary\":{\"collective_subsidies_for\":\"to collectives for a total amount of\",\"individual_subsidies_for\":\"to individuals for a total amount of\",\"mean_amount\":\"Average amount\",\"median_amount\":\"Median amount\",\"subsidies\":\"Subsidies\",\"subsidies_for\":\"subsidies for a total amount of\",\"tip_1\":\"The %{strong1} of subsidies are less than %{strong2}\",\"tip_2\":\"The largest subsidy means a %{strong} of all the spending\",\"tip_3\":\"The %{strong} of subsidies accumulate the 50% of all the spending\"},\"title\":\"Subsidies\"},\"tender_statuses\":{\"awarded\":\"Awarded\",\"cancelled\":\"Cancelled\",\"evaluation\":\"Evaluation\",\"modified\":\"Modified\",\"partially_awarded\":\"Partially awarded\",\"partially_resolved\":\"Partially resolved\",\"prior_announcement\":\"Prior announcement\",\"prior_evaluation\":\"Prior evaluation\",\"provisionally_resolved\":\"Provisionally resolved\",\"published\":\"Oublished\",\"resolved\":\"Resolved\"},\"visualizations\":{\"title_beeswarm\":\"Contracts by type, volume, size and date\",\"tooltip_beeswarm\":\"Contract Amount\",\"tooltip_treemap\":\"total contracts\"}}},\"grammatical_particles\":{\"from\":\"from\",\"of\":\"of\",\"of_the\":{\"f\":\"de la\",\"m\":\"del\",\"n\":\"of the\"},\"our\":{\"f\":\"nuestra\",\"m\":\"nuestro\",\"n\":\"our\"},\"the\":{\"f\":\"la\",\"m\":\"el\",\"n\":\"the\"},\"to\":\"to\",\"your\":{\"f\":\"tu\",\"m\":\"tu\",\"n\":\"your\"}},\"helpers\":{\"page_entries_info\":{\"entry\":{\"one\":\"entry\",\"other\":\"entries\",\"zero\":\"entries\"},\"more_pages\":{\"display_entries\":\"Displaying %{entry_name} \\\\u003cb\\\\u003e%{first}\\\\u0026nbsp;-\\\\u0026nbsp;%{last}\\\\u003c/b\\\\u003e of \\\\u003cb\\\\u003e%{total}\\\\u003c/b\\\\u003e in total\"},\"one_page\":{\"display_entries\":{\"one\":\"Displaying \\\\u003cb\\\\u003e1\\\\u003c/b\\\\u003e %{entry_name}\",\"other\":\"Displaying \\\\u003cb\\\\u003eall %{count}\\\\u003c/b\\\\u003e %{entry_name}\",\"zero\":\"No %{entry_name} found\"}}},\"select\":{\"prompt\":\"Please select\"},\"submit\":{\"create\":\"Create\",\"submit\":\"Save\",\"update\":\"Update\"}},\"invisible_captcha\":{\"sentence_for_humans\":\"If you are human, ignore this field\",\"timestamp_error_message\":\"Sorry, that was too quick! Please resubmit.\"},\"issue\":{\"events\":{\"issue_description_translations_changed\":\"New theme created\"}},\"issues\":{\"events\":{\"issues_issue_created\":\"Theme created\",\"issues_issue_updated\":\"Theme updated\"}},\"layouts\":{\"accept_privacy_policy_signup\":\"By signing up you agree to the Privacy Policy\",\"application\":{\"disclaimer\":\"This is a demo of Gobierto, transparency and participation software\",\"more_information\":\"More info in gobierto.es\",\"search\":\"Search...\",\"session\":{\"alerts\":\"Your alerts\",\"login\":\"Login or sign up\",\"notifications\":\"Notifications\",\"sign_in\":\"Sign in\",\"sign_out\":\"Sign out\",\"title\":\"Your account\"},\"start\":\"Home\"},\"gobierto_budgets\":{\"application\":{\"about_the_data\":\"About the data\",\"disclaimer\":\"This is a demo of Gobierto, transparency and participation software\",\"is_open_source\":\"is open source created by\",\"more_information\":\"More info in gobierto.es\",\"session\":{\"admin\":\"Administration\",\"alerts\":\"Your alerts\",\"notifications\":\"Notifications\",\"sign_in\":\"Sign in\",\"sign_out\":\"Sign out\",\"title\":\"Your account\"}}},\"mailcheck\":{\"suggestion_message\":\"Did you mean\"},\"sandbox\":{\"application\":{\"about_the_data\":\"About the data\",\"disclaimer\":\"This is a demo of Gobierto, transparency and participation software\",\"is_open_source\":\"is open source created by\",\"more_information\":\"More info in gobierto.es\",\"session\":{\"admin\":\"Administration\",\"alerts\":\"Your alerts\",\"notifications\":\"Notifications\",\"sign_in\":\"Sign in\",\"sign_out\":\"Sign out\",\"title\":\"Your account\"}}},\"search\":{\"budget_line_item_expense\":\"Budget line - Expense\",\"budget_line_item_income\":\"Budget line - Income\",\"dataset_item\":\"Dataset\",\"drag_drop_instructions\":\"Drag and drop on the left side to place this page in the menu\",\"event_item\":\"Event\",\"no_results\":\"The search did not match any page. Try something like using more general terms or checking spelling.\",\"page_item\":\"Page\",\"person_item\":\"Biography\",\"person_post_item\":\"Post\",\"person_statement_item\":\"Statement\",\"plan_project_item\":\"Plan - Project/Action\",\"updated\":\"Updated\"}},\"locales\":{\"ca\":\"Catalan\",\"ca_short\":\"CA\",\"en\":\"English\",\"en_short\":\"EN\",\"es\":\"Spanish\",\"es_short\":\"ES\"},\"number\":{\"currency\":{\"format\":{\"delimiter\":\",\",\"format\":\"%n%u\",\"precision\":2,\"separator\":\".\",\"significant\":false,\"strip_insignificant_zeros\":false,\"unit\":\"\u20AC\"}},\"format\":{\"delimiter\":\",\",\"precision\":3,\"round_mode\":\"default\",\"separator\":\".\",\"significant\":false,\"strip_insignificant_zeros\":false},\"human\":{\"decimal_units\":{\"format\":\"%n %u\",\"units\":{\"billion\":\"Billion\",\"million\":\"Million\",\"quadrillion\":\"Quadrillion\",\"thousand\":\"Thousand\",\"trillion\":\"Trillion\",\"unit\":\"\"}},\"format\":{\"delimiter\":\"\",\"precision\":3,\"significant\":true,\"strip_insignificant_zeros\":true},\"storage_units\":{\"format\":\"%n %u\",\"units\":{\"byte\":{\"one\":\"Byte\",\"other\":\"Bytes\"},\"eb\":\"EB\",\"gb\":\"GB\",\"kb\":\"KB\",\"mb\":\"MB\",\"pb\":\"PB\",\"tb\":\"TB\"}}},\"nth\":{\"ordinalized\":{},\"ordinals\":{}},\"percentage\":{\"format\":{\"delimiter\":\"\",\"format\":\"%n%\"}},\"precision\":{\"format\":{\"delimiter\":\"\"}}},\"routes\":{\"bio\":\"bio\",\"department_people\":\"people/departments/:department_slug\",\"departments\":\"departments\",\"events\":\"agendas\",\"executive_category_events\":\"agendas/managers\",\"executive_category_past_events\":\"agendas/managers/past-events\",\"gifts\":\"gifts\",\"government\":\"government\",\"government_party_events\":\"agendas/government\",\"government_party_past_events\":\"agendas/government/past-events\",\"interest_groups\":\"interest-groups\",\"invitations\":\"invitations\",\"managers\":\"managers\",\"messages\":\"contact\",\"opposition\":\"opposition\",\"opposition_party_events\":\"agendas/opposition\",\"opposition_party_past_events\":\"agendas/opposition/past-events\",\"past_events\":\"agendas/past-events\",\"people\":\"people\",\"people_and_agendas\":\"people-and-agendas\",\"people_government\":\"people/government\",\"people_managers\":\"people/managers\",\"people_opposition\":\"people/opposition\",\"person_events\":\"agendas/:container_slug\",\"person_past_events\":\"agendas/:container_slug/past-events\",\"person_post_tags\":\"blogs/:person_slug/tags\",\"person_posts\":\"blogs/:person_slug\",\"person_statements\":\"statements/:person_slug\",\"political_groups\":\"people/political-groups\",\"post_tags\":\"blogs/tags\",\"posts\":\"blogs/posts\",\"statements\":\"statements\",\"trips\":\"trips\"},\"scopes\":{\"events\":{\"scopes_scope_created\":\"Scope created\",\"scopes_scope_updated\":\"Scope updated\"}},\"shared\":{\"currently\":\"currently\",\"download_open_data\":{\"exports\":\"Download data in a reusable format\"},\"poll_question\":{\"multiple_choice_msg\":\"You can choose several options\"},\"polls\":{\"no_unanswered_polls\":\"There are no polls to answer.\",\"opinion\":\"Opinion\"},\"previous\":\"previous\"},\"sites\":{\"events\":{\"sites_site_created\":\"Site created\",\"sites_site_destroyed\":\"Site deleted\",\"sites_site_modules_updated\":\"Site modules updated\",\"sites_site_updated\":\"Site updated\",\"sites_site_visibility_updated\":\"Site published\"}},\"support\":{\"array\":{\"last_word_connector\":\" and \",\"two_words_connector\":\" and \",\"words_connector\":\", \"}},\"time\":{\"am\":\"am\",\"formats\":{\"default\":\"%a, %d %b %Y %H:%M:%S %z\",\"from_to\":\"From %{starts} to %{ends}\",\"long\":\"%B %d, %Y %H:%M\",\"short\":\"%d %b %H:%M\"},\"pm\":\"pm\"},\"user\":{\"census_verifications\":{\"create\":{\"error\":\"We couldn\\'t verify your identity. Please check your information and try again. If the problem persists, ask to your local adminsitration\",\"notice\":\"Your identity has been verified successfully\"},\"form\":{\"verify\":\"Verify\"},\"messages\":{\"already_verified\":\"Your account is already verified\",\"comments\":{\"not_verified\":\"The contribution in which you want to participate requires to verify your register in %{site_name}. Please, confirm your data to continue (they\\'ll be verified against the register, if you are not registered we won\\'t be abile to verify yourself)\"},\"consultation_responses\":{\"not_verified\":\"The process in which you want to participate requires to verify your register in %{site_name}. Please, confirm your data to continue (they\\'ll be verified against the register, if you are not registered we won\\'t be abile to verify yourself)\"},\"contributions\":{\"not_verified\":\"The contribution in which you want to participate requires to verify your register in %{site_name}. Please, confirm your data to continue (they\\'ll be verified against the register, if you are not registered we won\\'t be abile to verify yourself)\"},\"flags\":{\"not_verified\":\"The contribution in which you want to participate requires to verify your register in %{site_name}. Please, confirm your data to continue (they\\'ll be verified against the register, if you are not registered we won\\'t be abile to verify yourself)\"},\"not_verified\":\"The process in which you want to participate requires to verify your register in %{site_name}. Please, confirm your data to continue (they\\'ll be verified against the register, if you are not registered we won\\'t be abile to verify yourself)\",\"poll_answers\":{\"not_verified\":\"The process in which you want to participate requires to verify your register in %{site_name}. Please, confirm your data to continue (they\\'ll be verified against the register, if you are not registered we won\\'t be abile to verify yourself)\"},\"process_contributions\":{\"not_verified\":\"The contribution in which you want to participate requires to verify your register in %{site_name}. Please, confirm your data to continue (they\\'ll be verified against the register, if you are not registered we won\\'t be abile to verify yourself)\"},\"votes\":{\"not_verified\":\"The contribution in which you want to participate requires to verify your register in %{site_name}. Please, confirm your data to continue (they\\'ll be verified against the register, if you are not registered we won\\'t be abile to verify yourself)\"}},\"new\":{\"title\":\"Confirm your identity\"}},\"confirmations\":{\"create\":{\"error\":\"The data you entered doesn\\'t seem to be valid. Please try again.\",\"success\":\"Signed in successfully\"},\"form\":{\"document_number_notice\":\"Document number\",\"gender\":{\"female\":\"Female\",\"male\":\"Male\"},\"hints\":{\"census_locked\":\"This information has been provided by the census, so it is not editable.\",\"date_of_birth\":\"This information will be considered private at all times.\",\"email\":\"Your email address will be considered private at all times.\",\"gender\":\"This information will be considered private at all times.\"},\"submit\":\"Save\",\"your_gender_is\":\"You are...\"},\"new\":{\"error\":\"This URL doesn\\'t seem to be valid\",\"title\":\"Let\\'s confirm your data:\"}},\"custom_sessions\":{\"create\":{\"invalid_data\":\"Invalid data received. The session could not be created\",\"not_confirmed\":\"Please check your inbox and follow the confirmation link to access the service\",\"success\":\"Signed in successfully\"},\"destroy\":{\"success\":\"Signed out successfully\"},\"null_strategy\":{\"edit_form\":{\"edit\":\"Add some fields to this form\",\"session_title\":\"Please, fill in the missing fields (Null strategy)\",\"submit\":\"Submit\"},\"new_form\":{\"session_title\":\"Sign in (Null strategy)\",\"submit\":\"Submit\"}}},\"layouts\":{\"menu_subsections\":{\"admin\":\"Settings\",\"alerts\":\"Alerts\",\"notifications\":\"Notifications\"}},\"notification_mailer\":{\"notification_digest\":{\"bye\":\"Cheers\",\"hi\":\"Hi\",\"manage_notifications\":\"Remember you can manage your notifications in %{url}\",\"manage_notifications_html\":\"Remember you can manager your notifications in \\\\u003ca href=\\'%{url}\\'\\\\u003eyour notifications page\\\\u003c/a\\\\u003e\",\"new_activity\":\"There\\'s new activity in %{site_name}\",\"subject\":\"Activity summary from %{site_name}\"},\"single_notification\":{\"bye\":\"Cheers\",\"hi\":\"Hi\",\"manage_notifications\":\"Remember you can manage your notifications in %{url}\",\"manage_notifications_html\":\"Remember you can manager your notifications in \\\\u003ca href=\\'%{url}\\'\\\\u003eyour notifications page\\\\u003c/a\\\\u003e\",\"new_activity\":\"There\\'s new activity in %{site_name}\",\"subject\":\"New activity in %{site_name}: %{action_name}\"}},\"notifications\":{\"index\":{\"no_new_notifications\":\"There are no new notifications\",\"title\":\"Recent activity\"}},\"passwords\":{\"create\":{\"error\":\"The email address specified doesn\\'t seem to be valid\",\"success\":\"Please check your inbox to get instructions\"},\"edit\":{\"error\":\"This URL doesn\\'t seem to be valid\",\"title\":\"Set your new password:\"},\"edit_form\":{\"submit\":\"Change\"},\"update\":{\"error\":\"There was a problem changing your password\",\"success\":\"Signed in successfully\"}},\"registrations\":{\"create\":{\"email_taken\":\"That email is already registered. Try login in or recovering your password\",\"error\":\"The data you entered doesn\\'t seem to be valid. Please try again.\",\"success\":\"Please check your inbox to confirm your email address\"}},\"sessions\":{\"create\":{\"error\":\"The data you entered doesn\\'t seem to be valid. Please try again.\",\"success\":\"Signed in successfully\"},\"destroy\":{\"success\":\"Signed out successfully\"},\"new\":{\"password_title\":\"Can\\'t remember your password? We help you out:\",\"registration_title\":\"New here? Create your account:\",\"session_title\":\"Are you already registered? Log in\"},\"new_password_form\":{\"session_section\":\"Just remembered your password? Log in here\",\"submit\":\"Recover\"},\"registration_form\":{\"submit\":\"Let\\'s go\"},\"session_form\":{\"password_section\":\"Password?\",\"submit\":\"Log in\"},\"user_already_authenticated\":\"You are already signed in.\",\"user_not_authorized\":\"You are not authorized.\",\"user_not_signed_in\":\"Register or sign in if you have an account to continue.\"},\"settings\":{\"form\":{\"gender\":{\"female\":\"Female\",\"male\":\"Male\"},\"hints\":{\"census_locked\":\"This information has been provided by the census, so it is not editable.\",\"date_of_birth\":\"This information will be considered private at all times.\",\"email\":\"Your email address will be considered private at all times.\",\"gender\":\"This information will be considered private at all times.\"},\"submit\":\"Save\",\"your_gender_is\":\"You are...\"},\"show\":{\"title\":\"Your account\"},\"update\":{\"error\":\"There was a problem when saving your settings\",\"success\":\"Settings saved successfully\"}},\"subscription_preferences\":{\"update\":{\"error\":\"Preferences couldn\\'t be updated: %{details}\",\"update_success\":\"Preferences updated successfully\"}},\"subscriptions\":{\"create\":{\"create_success\":\"Subscription was successfully created\",\"delete_success\":\"Subscription was successfully canceled\",\"error\":\"There was a problem when subscribing to this resource: %{details}. If you are already registered, sign in \\\\u003ca href=\\\\\"%{sign_in_path}\\\\\"\\\\u003ehere\\\\u003c/a\\\\u003e.\"},\"destroy\":{\"success\":\"Subscription was successfully canceled\"},\"index\":{\"areas\":\"Areas\",\"frequency\":\"Frequency\",\"modules\":{\"gobierto_budgets\":\"Budgets\",\"gobierto_observatory\":\"Observatory\",\"gobierto_people\":\"People\"},\"notification_frequency\":{\"daily\":\"Daily digest\",\"disabled\":\"Disabled\",\"hourly\":\"Hourly digest\",\"immediate\":\"Inmediate\",\"submit\":\"Save\",\"weekly\":\"Weekly digest\"},\"people\":\"People\",\"submit\":\"Save\",\"title\":\"Your alerts\",\"whole_site\":\"Whole site\"},\"subscribable_box\":{\"cancel\":\"Already subscribed. Cancel?\",\"form\":{\"placeholders\":{\"user_email\":\"Your e-mail\"},\"submit\":\"Subscribe\"},\"subscribe\":\"Subscribe\"},\"subscribable_button\":{\"event_followed\":\"Event followed!\",\"follow_event\":\"Follow event\",\"follow_group_process\":\"Follow group\",\"follow_issue\":\"Follow theme\",\"follow_person\":\"Follow person\",\"follow_process\":\"Follow process\",\"follow_scope\":\"Follow scope\",\"group_process_followed\":\"Group followed!\",\"issue_followed\":\"Theme followed!\",\"manage_subscriptions\":\"Manage your alerts\",\"person_followed\":\"Person followed!\",\"process_followed\":\"Process followed!\",\"scope_followed\":\"Scope followed!\"}},\"user_mailer\":{\"confirmation_instructions\":{\"bye\":\"Cheers\",\"click_link\":\"To complete your signup click the following link:\",\"hi\":\"Hi\",\"ignore_link\":\"if you didn\\'t register in %{site_name} you can ignore this message\",\"subject\":\"Complete your registration in %{site_name}\"},\"reset_password_instructions\":{\"bye\":\"Cheers\",\"click_link\":\"You have request to reset your password. Click the following link and follow the instructions:\",\"hi\":\"Hi\",\"subject\":\"Reset your password\"},\"welcome\":{\"alerts\":\"You can manage your notification preferences in this url: %{subscriptions_url}\",\"bye\":\"Cheers\",\"hi\":\"Hi\",\"subject\":\"Welcome\",\"success\":\"Your registration was successfully completed. Now you can interact in %{site_url} as registered user.\"}}},\"users\":{\"events\":{\"users_user_updated\":\"User updated\"}},\"views\":{\"delete\":\"Delete\",\"delete_confirm\":\"Are you sure? This operation can not be undone\",\"edit\":\"Edit\",\"forms\":{\"max_characters\":\"Max. %{length} characters\",\"required\":\"Required\",\"required_and_max_characters\":\"Required and M\u00E0x. %{length} car\u00E0cters\"},\"of\":\"of\",\"pagination\":{\"first\":\"\\\\u0026laquo; First\",\"last\":\"Last \\\\u0026raquo;\",\"next\":\"Next\",\"previous\":\"Prev\",\"truncate\":\"\\\\u0026hellip;\"},\"see\":{\"less\":\"see less\",\"more\":\"see more\"}}}'));\nI18n.translations[\"es\"] = I18n.extend((I18n.translations[\"es\"] || {}), JSON.parse('{\"activemodel\":{\"attributes\":{\"gobierto_admin/admin_confirmation_form\":{\"email\":\"Email\"},\"gobierto_admin/admin_edit_password_form\":{\"password\":\"Contrase\u00F1a\",\"password_confirmation\":\"Confirmaci\u00F3n de contrase\u00F1a\"},\"gobierto_admin/admin_form\":{\"email\":\"Email\",\"name\":\"Nombre\",\"password\":\"Contrase\u00F1a\",\"password_confirmation\":\"Confirmaci\u00F3n de contrase\u00F1a\",\"site_ids\":\"Sitios\",\"site_modules\":\"M\u00F3dulos\"},\"gobierto_admin/admin_group_form\":{\"name\":\"Nombre del grupo\"},\"gobierto_admin/admin_invitation_form\":{\"emails\":\"Emails\",\"site_ids\":\"Sitios\"},\"gobierto_admin/admin_new_password_form\":{\"email\":\"Email\"},\"gobierto_admin/file_attachment_form\":{\"description\":\"Descripci\u00F3n\",\"file_digest\":\"Este archivo\",\"name\":\"Nombre\"},\"gobierto_admin/gobierto_budgets/options_form\":{\"budgets_guide_page\":\"P\u00E1gina gu\u00EDa de presupuestos (si no se selecciona ninguna se mostrar\u00E1 el texto por defecto)\",\"comparison_compare_municipalities\":\"Mostrar municipios espec\u00EDficos\",\"comparison_context_table_enabled\":\"Mostrar tabla de contexto\",\"comparison_show_widget\":\"Mostrar widget comparaci\u00F3n\",\"comparison_tool_enabled\":\"Comparaci\u00F3n\",\"feedback_emails\":\"Correo-e para recibir participaciones\",\"receipt_configuration\":\"Configuraci\u00F3n del recibo\"},\"gobierto_admin/gobierto_calendars/calendar_configuration_form\":{\"ibm_notes_pwd\":\"La constrase\u00F1a\",\"ibm_notes_url\":\"La URL\",\"ibm_notes_usr\":\"Usuario\",\"microsoft_exchange_pwd\":\"La constrase\u00F1a\",\"microsoft_exchange_url\":\"La URL\",\"microsoft_exchange_usr\":\"Usuario\"},\"gobierto_admin/gobierto_calendars/event_form\":{\"attachment_file\":\"Fichero adjunto\",\"description\":\"Descripci\u00F3n\",\"ends_at\":\"Fecha de finalizaci\u00F3n\",\"starts_at\":\"Fecha de comienzo\",\"title\":\"T\u00EDtulo\",\"title_translations\":\"T\u00EDtulo\"},\"gobierto_admin/gobierto_cms/page_form\":{\"body\":\"Contenido\",\"published_on\":\"Fecha de publicaci\u00F3n\",\"slug\":\"URL\",\"title\":\"T\u00EDtulo\"},\"gobierto_admin/gobierto_cms/section_form\":{\"slug\":\"URL\",\"title\":\"T\u00EDtulo\"},\"gobierto_admin/gobierto_common/collection_form\":{\"container_global_id\":\"Contenedor\",\"container_id\":\"Contenedor\",\"item_type\":\"Tipo\",\"slug\":\"URL\",\"title\":\"T\u00EDtulo\"},\"gobierto_admin/gobierto_common/custom_field_form\":{\"date\":\"Fecha\",\"field_type\":\"Tipo de campo\",\"image\":\"Imagen\",\"indicators\":\"Indicadores\",\"localized_paragraph\":\"Texto largo\",\"localized_string\":\"Texto (l\u00EDnea)\",\"multiple_options\":\"Selecci\u00F3n m\u00FAltiple\",\"name\":\"Nombre\",\"numeric\":\"N\u00FAmero\",\"options\":\"Opciones\",\"paragraph\":\"Texto largo sin traducciones\",\"single_option\":\"Selecci\u00F3n \u00FAnica\",\"string\":\"Texto sin traducciones (l\u00EDnea)\",\"uid\":\"Identificador\",\"vocabulary_options\":\"Vocabulario\"},\"gobierto_admin/gobierto_common/term_form\":{\"description\":\"Descripci\u00F3n\",\"external_id\":\"ID externo\",\"name\":\"Nombre\",\"slug\":\"Slug\",\"term_id\":\"T\u00E9rmino Padre\"},\"gobierto_admin/gobierto_common/vocabulary_form\":{\"name\":\"Nombre\"},\"gobierto_admin/gobierto_data/dataset_form\":{\"name\":\"Nombre\",\"slug\":\"Slug\",\"table_name\":\"Nombre de la tabla\"},\"gobierto_admin/gobierto_data/settings_form\":{\"api_settings_max_dataset_size_for_queries\":\"M\u00E1ximo tama\u00F1o de datasets sin limitar la vista previa (MB)\",\"db_config\":\"Configuraci\u00F3n de la conexi\u00F3n a la base de datos\",\"frontend_enabled\":\"Interfaz p\u00FAblica visible\"},\"gobierto_admin/gobierto_investments/project_form\":{\"external_id\":\"ID externo\",\"title\":\"T\u00EDtulo\"},\"gobierto_admin/gobierto_observatory/settings_form\":{\"observatory_config\":\"Configuraci\u00F3n del observatorio\"},\"gobierto_admin/gobierto_people/person_form\":{\"avatar_file\":\"Avatar\",\"avatar_url\":\"Avatar\",\"bio\":\"Biograf\u00EDa\",\"bio_file\":\"Fichero adjunto\",\"bio_url\":\"Fichero adjunto\",\"category\":\"Categor\u00EDa\",\"charge\":\"Cargo\",\"email\":\"Correo-e\",\"name\":\"Nombre\",\"party\":\"Posici\u00F3n\",\"political_group_id\":\"Grupo pol\u00EDtico\"},\"gobierto_admin/gobierto_people/person_post_form\":{\"body\":\"Contenido\",\"tags\":\"Tags\",\"title\":\"T\u00EDtulo\"},\"gobierto_admin/gobierto_people/person_statement_form\":{\"attachment_file\":\"Fichero adjunto\",\"published_on\":\"Fecha de publicaci\u00F3n\",\"title\":\"T\u00EDtulo\",\"title_translations\":\"T\u00EDtulo\"},\"gobierto_admin/gobierto_people/political_group_form\":{\"name\":\"Nombre de la agrupaci\u00F3n\"},\"gobierto_admin/gobierto_plans/node_form\":{\"category_id\":\"Categor\u00EDa\",\"ends_at\":\"Fecha de fin\",\"name\":\"Proyecto\",\"progress\":\"Progreso\",\"starts_at\":\"Fecha de inicio\",\"status_id\":\"Estado\"},\"gobierto_admin/gobierto_plans/plan_form\":{\"configuration_data\":\"Configuraci\u00F3n\",\"css\":\"CSS\",\"csv_file\":\"Fichero CSV\",\"footer\":\"Pie de p\u00E1gina\",\"introduction\":\"Introducci\u00F3n\",\"plan_type_id\":\"Tipo\",\"slug\":\"url\",\"statuses_vocabulary_id\":\"Vocabulario de estados\",\"title\":\"T\u00EDtulo\",\"vocabulary_id\":\"Vocabulario de categor\u00EDas\",\"year\":\"A\u00F1o\"},\"gobierto_admin/gobierto_plans/plan_type_form\":{\"name\":\"Nombre\",\"slug\":\"url\"},\"gobierto_admin/gobierto_visualizations/settings_form\":{\"visualizations_config\":\"Configuraci\u00F3n de las visualizaciones\"},\"gobierto_admin/issue_form\":{\"name\":\"Nombre\",\"slug\":\"URL\"},\"gobierto_admin/scope_form\":{\"name\":\"Nombre\"},\"gobierto_admin/site_form\":{\"admin_custom_code\":\"C\u00F3digo personalizado de admin\",\"available_locales\":\"Idiomas disponibles\",\"default_locale\":\"Idioma por defecto\",\"domain\":\"Dominio\",\"foot_markup\":\"HTML de Pie\",\"google_analytics_id\":\"C\u00F3digo de Google Analytics\",\"head_markup\":\"HTML de Cabecera\",\"home_page\":\"M\u00F3dulo de inicio\",\"home_page_item_id\":\"P\u00E1gina de inicio\",\"links_markup\":\"HTML de Enlaces\",\"logo_file\":\"Logotipo\",\"name\":\"Nombre de la entidad\",\"organization_id\":\"Identificador de la organizaci\u00F3n (c\u00F3digo INE)\",\"organization_name\":\"Organizaci\u00F3n\",\"populate_data_api_token\":\"API token Populate Data\",\"privacy_page_id\":\"P\u00E1gina de privacidad\",\"raw_configuration_variables\":\"Otras variables de configuraci\u00F3n\",\"registration_disabled\":\"Deshabilitar el registro (solo oculta los enlaces al registro/login)\",\"reply_to_email\":\"Direcci\u00F3n de respuesta en correos-e\",\"title\":\"Nombre del sitio\"},\"gobierto_admin/user_form\":{\"email\":\"Email\",\"name\":\"Nombre\"},\"gobierto_admin/user_password_form\":{\"password\":\"Contrase\u00F1a\",\"password_confirmation\":\"Confirmaci\u00F3n de contrase\u00F1a\"},\"gobierto_dashboards/dashboard_form\":{\"title\":\"T\u00EDtulo\"},\"gobierto_people/person_message\":{\"body\":\"Mensaje\",\"email\":\"Tu e-mail\",\"name\":\"Tu nombre\"},\"user/census_verification_form\":{\"date_of_birth\":\"Fecha de nacimiento\",\"document_number\":\"N\u00FAmero de documento\",\"site\":\"Lugar\"},\"user/confirmation_form\":{\"date_of_birth\":\"Fecha de nacimiento\",\"document_number\":\"N\u00FAmero de documento\",\"email\":\"Tu Correo-e\",\"gender\":\"G\u00E9nero\",\"name\":\"Tu nombre\",\"password\":\"Tu contrase\u00F1a\",\"password_confirmation\":\"Tu contrase\u00F1a, otra vez\"},\"user/confirmation_request_form\":{\"email\":\"Tu Correo-e\"},\"user/edit_password_form\":{\"password\":\"Tu contrase\u00F1a\",\"password_confirmation\":\"Tu contrase\u00F1a, otra vez\"},\"user/new_password_form\":{\"email\":\"Tu Correo-e\"},\"user/registration_form\":{\"email\":\"Tu Correo-e\"},\"user/session_form\":{\"email\":\"Tu Correo-e\",\"password\":\"Tu contrase\u00F1a\"},\"user/settings_form\":{\"date_of_birth\":\"Fecha de nacimiento\",\"email\":\"Tu Correo-e\",\"gender\":\"G\u00E9nero\",\"name\":\"Tu nombre\",\"password\":\"Tu contrase\u00F1a\",\"password_confirmation\":\"Tu contrase\u00F1a, otra vez\"},\"user/subscription_form\":{\"subscribable\":\"Recurso\",\"user\":\"Usuario\",\"user_email\":\"Correo-e\"}},\"errors\":{\"models\":{\"gobierto_admin/gobierto_common/vocabulary_terms_import_form\":{\"attributes\":{\"base\":{\"invalid_row\":\"Se ha encontrado una fila inv\u00E1lida: %{row_data}\"}}},\"gobierto_admin/gobierto_data/dataset_form\":{\"attributes\":{\"table_name\":{\"invalid_table\":\"No se puede acceder a la tabla. Mensaje de error: \\\\\"%{error_message}\\\\\"\"}}},\"gobierto_admin/gobierto_data/settings_form\":{\"attributes\":{\"db_config\":{\"invalid_connection\":\"No se puede conectar con los datos de configuraci\u00F3n. Mensaje de error: \\\\\"%{error_message}\\\\\"\",\"invalid_format\":\"La configuraci\u00F3n no tiene un formato JSON v\u00E1lido\"}}},\"gobierto_admin/gobierto_observatory/settings_form\":{\"attributes\":{\"observatory_config\":{\"invalid_format\":\"La configuraci\u00F3n no tiene un formato JSON v\u00E1lido\",\"invalid_values\":\"La configuraci\u00F3n no tiene valores v\u00E1lidos\"}}},\"gobierto_admin/gobierto_plans/plan_data_form\":{\"attributes\":{\"base\":{\"category_not_found\":\"Alguna de las categor\u00EDas no se ha podido encontrar. Contenido de la fila: %{row_data}\",\"external_id_taken\":\"El campo external_id ya est\u00E1 en uso, bien porque otra fila tiene el mismo external_id o porque estaba vac\u00EDa y autom\u00E1ticamente se asign\u00F3 el mismo valor. Contenido de la fila: %{row_data}\",\"file_not_found\":\"Fichero no encontrado\",\"invalid_columns\":\"No est\u00E1n todas las columnas necesarias\",\"invalid_format\":\"Formato de fichero inv\u00E1lido\",\"invalid_row\":\"Se ha encontrado una fila inv\u00E1lida: %{row_data}\",\"status_missing\":\"El estado de la fila no se ha encontrado en el vocabulario de estados correspondiente o existe un estado en la fila pero no hay un vocabulario de estados configurado en el plan. Contenido de la fila: %{row_data}\",\"term_not_found\":\"No ha sido posible encontrar el t\u00E9rmino \\'%{term}\\' en el vocabulario \\'%{vocabulary}\\' usado por la columna \\'Node.%{uid}\\'\",\"used_resource\":\"El vocabulario emplea t\u00E9rminos que se usan en otras partes de la aplicaci\u00F3n\"}}},\"gobierto_admin/gobierto_plans/plan_table_custom_fields_form\":{\"attributes\":{\"base\":{\"file_not_found\":\"Fichero no encontrado\",\"invalid_columns\":\"No est\u00E1n todas las columnas necesarias\",\"invalid_format\":\"Formato de fichero inv\u00E1lido\"}}},\"gobierto_admin/gobierto_plans/projects_form\":{\"attributes\":{\"base\":{\"category_missing\":\"Categor\u00EDa no encontrada en datos del proyecto. Por favor, proporciona un category_id o category_external_id v\u00E1lido. Datos del proyecto: %{json_data}\",\"failed_import\":\"El proyecto con los siguientes datos no ha podido ser importado: %{json_data}\",\"status_missing\":\"Estado no encontrado en datos del proyecto. Por favor, proporciona un status_id o status_external_id v\u00E1lido. Datos del proyecto: %{json_data}\"}}},\"gobierto_admin/gobierto_visualizations/settings_form\":{\"attributes\":{\"visualizations_config\":{\"invalid_format\":\"La configuraci\u00F3n no tiene un formato JSON v\u00E1lido\",\"invalid_values\":\"La configuraci\u00F3n no tiene valores v\u00E1lidos\"}}},\"gobierto_data/dataset_form\":{\"attributes\":{\"data_file\":{\"no_file_included\":\"El archivo no se ha podido cargar. Por favor, revisa la petici\u00F3n y aseg\u00FArate de que el contenido del archivo se haya incluido en ella\"}}}}},\"models\":{\"gobierto_admin/admin_confirmation_form\":\"Confirmaci\u00F3n\",\"gobierto_admin/admin_edit_password_form\":\"Cambio de contrase\u00F1a\",\"gobierto_admin/admin_form\":\"Administrador\",\"gobierto_admin/admin_group_form\":\"Grupo\",\"gobierto_admin/admin_invitation_form\":\"Invitaci\u00F3n\",\"gobierto_admin/admin_new_password_form\":\"Recuperaci\u00F3n de contrase\u00F1a\",\"gobierto_admin/file_attachment_form\":\"Cambio en el documento\",\"gobierto_admin/gobierto_budgets/options_form\":\"Opciones\",\"gobierto_admin/gobierto_calendars/event_form\":\"Evento\",\"gobierto_admin/gobierto_cms/page_form\":\"P\u00E1gina\",\"gobierto_admin/gobierto_cms/section_form\":\"Secci\u00F3n\",\"gobierto_admin/gobierto_common/collection_form\":\"Colecci\u00F3n\",\"gobierto_admin/gobierto_common/content_block_form\":\"Bloque de contenido\",\"gobierto_admin/gobierto_common/term_form\":\"T\u00E9rmino\",\"gobierto_admin/gobierto_common/vocabulary_form\":\"Vocabulario\",\"gobierto_admin/gobierto_people/person_form\":\"Perfil\",\"gobierto_admin/gobierto_people/person_post_form\":\"Post\",\"gobierto_admin/gobierto_people/person_statement_form\":\"Declaraci\u00F3n\",\"gobierto_admin/gobierto_people/political_group_form\":\"Agrupaci\u00F3n pol\u00EDtica\",\"gobierto_admin/issue_form\":\"Tema\",\"gobierto_admin/scope_form\":\"\u00C1mbito\",\"gobierto_admin/site_form\":\"Sitio\",\"gobierto_admin/user_form\":\"Usuario\",\"gobierto_admin/user_password_form\":\"Cambio de contrase\u00F1a\",\"gobierto_admin/user_welcome_message_form\":\"Email de bienvenida\",\"gobierto_people/person_message\":\"Mensaje\",\"user/census_verification_form\":\"Verificaci\u00F3n de la identidad\",\"user/confirmation_form\":\"Confirmaci\u00F3n\",\"user/confirmation_request_form\":\"Solicitud de confirmaci\u00F3n\",\"user/edit_password_form\":\"Cambiar contrase\u00F1a\",\"user/new_password_form\":\"Recuperar contrase\u00F1a\",\"user/registration_form\":\"Registro\",\"user/session_form\":\"Sesi\u00F3n\",\"user/settings_form\":\"Ajustes\",\"user/subscription_form\":\"Suscripci\u00F3n\"}},\"activerecord\":{\"attributes\":{\"gobierto_admin/api_token\":{\"domain\":\"Dominio\",\"name\":\"Nombre\"},\"gobierto_admin/permission/site_option\":{\"resource_types\":{\"admins\":\"Administradores\",\"calendars\":\"Agendas\",\"custom_fields\":\"Campos personalizados\",\"customize\":\"Personalizar sitio\",\"documents\":\"Documentos\",\"templates\":\"Plantillas\",\"vocabularies\":\"Vocabularios\"}},\"gobierto_attachments/attachment\":{\"current_version\":\"Versi\u00F3n actual\",\"description\":\"Descripci\u00F3n\",\"file_digest\":\"Archivo\",\"file_name\":\"Nombre del archivo\",\"file_size\":\"Tama\u00F1o del archivo\",\"name\":\"Nombre\",\"url\":\"URL\"},\"gobierto_calendars/event_attendee\":{\"charge\":\"Cargo\",\"name\":\"Nombre\",\"person\":\"Persona\"},\"gobierto_calendars/event_location\":{\"address\":\"Direcci\u00F3n\",\"name\":\"Nombre\"},\"gobierto_calendars/filtering_rule\":{\"remove_filtering_text\":\"Eliminar texto filtrado\"},\"gobierto_cms/page\":{\"body\":\"Contenido\",\"slug\":\"URL\",\"title\":\"T\u00EDtulo\"},\"gobierto_common/api_token_form\":{\"domain\":\"Dominio\",\"name\":\"Nombre\"},\"gobierto_common/content_block_field\":{\"field_type\":\"Tipo de campo\",\"field_types\":{\"currency\":\"Moneda\",\"date\":\"Fecha\",\"text\":\"Texto\",\"url\":\"URL\"}},\"gobierto_people/trip\":{\"accomodation_expenses\":\"Hoteles y alojamiento\",\"food_expenses\":\"Dietas y manutenci\u00F3n\",\"other_expenses\":\"Otros gastos\",\"total_expenses\":\"Gastos totales\",\"transport_expenses\":\"Transporte\"},\"user/api_token\":{\"domain\":\"Dominio\",\"name\":\"Nombre\"}},\"enums\":{\"gobierto_calendars/filtering_rule\":{\"action\":{\"ignore\":\"Ignorar\",\"import\":\"Importar\",\"import_as_draft\":\"Importar como borrador\"},\"condition\":{\"contains\":\"Contiene\",\"ends_with\":\"Termina por\",\"not_contains\":\"No contiene\",\"not_starts_with\":\"No empieza por\",\"starts_with\":\"Empieza por\"},\"field\":{\"description\":\"Cuerpo\",\"title\":\"T\u00EDtulo\"}}},\"errors\":{\"messages\":{\"record_invalid\":\"La validaci\u00F3n fall\u00F3: %{errors}\"},\"models\":{\"gobierto_admin/api_token\":{\"attributes\":{\"domain\":{\"not_valid_format\":\"Formato inv\u00E1lido\"}}},\"gobierto_common/custom_field_record\":{\"attributes\":{\"item\":{\"wrong_item_class\":\"no est\u00E1 asociado a un item de la clase adecuada\"}}},\"gobierto_common/term\":{\"attributes\":{\"base\":{\"has_dependent_resources_html\":\"Est\u00E1 siendo usado por los siguientes recursos:\\\\u003c/br\\\\u003e %{dependencies_list}\"}}},\"gobierto_data/connection\":{\"missing_configuration\":\"La base de datos no est\u00E1 configurada\"},\"user/api_token\":{\"attributes\":{\"domain\":{\"not_valid_format\":\"Formato inv\u00E1lido\"}}}}},\"messages\":{\"gobierto_attachments/attachment\":{\"file_too_big\":\"El fichero excede el tama\u00F1o m\u00E1ximo\"}},\"models\":{\"gobierto_attachments/attachment\":\"Documento\",\"gobierto_calendars/event\":\"Evento\",\"gobierto_calendars/event_attendee\":\"Asistente\",\"gobierto_calendars/event_location\":\"Localizacion\",\"gobierto_cms/news\":\"Noticia\",\"gobierto_cms/news_plural\":\"Noticias\",\"gobierto_cms/page\":\"P\u00E1gina\",\"gobierto_cms/pages_collection\":\"Colecci\u00F3n de P\u00E1ginas\",\"gobierto_common/content_block_field\":\"Campo\",\"gobierto_data/dataset\":{\"one\":\"Conjunto de datos\",\"other\":\"Conjuntos de datos\"},\"gobierto_investments/project\":{\"one\":\"Proyecto\",\"other\":\"Proyectos\"},\"gobierto_people/person\":\"Cargo\",\"gobierto_people/person_post\":\"Post\",\"gobierto_people/person_statement\":\"Declaracion\",\"gobierto_plans/node\":{\"one\":\"Proyecto\",\"other\":\"Proyectos\"},\"gobierto_plans/plan\":{\"one\":\"Plan\",\"other\":\"Planes\"},\"user\":\"Usuario\"}},\"admin_gobierto_calendars\":{\"events\":{\"admin_gobierto_calendars_calendars_synchronized\":\"Calendarios sincronizados\"}},\"admin_groups\":{\"events\":{\"admin_groups_admin_group_created\":\"Grupo de admin creado\",\"admin_groups_admin_group_updated\":\"Grupo de admin actualizado\"}},\"admins\":{\"events\":{\"admins_admin_authorization_level_updated\":\"Nivel autorizaci\u00F3n admin actualizado\",\"admins_admin_created\":\"Admin creado\",\"admins_admin_group_member_created\":\"Admin a\u00F1adido a grupo de permisos\",\"admins_admin_group_member_deleted\":\"Admin eliminado de grupo de permisos\",\"admins_admin_updated\":\"Admin actualizado\",\"admins_invitation_accepted\":\"Invitaci\u00F3n admin aceptada\",\"admins_invitation_created\":\"Admin invitado\"}},\"based_on\":\"Web basada en\",\"census\":{\"events\":{\"census_census_imported\":\"Censo importado\"}},\"concerns\":{\"gobierto_common\":{\"api_tokens_concern\":{\"create\":{\"success\":\"El Token de la API se ha creado correctamente\"},\"destroy\":{\"failed\":\"El Token de la API no ha podido ser eliminado\",\"success\":\"El Token de la API ha sido eliminado correctamente\"},\"update\":{\"success\":\"El Token de la API se ha actualizado correctamente\"}}}},\"controllers\":{\"gobierto_budgets\":{\"api\":{\"data\":{\"expense\":\"Gasto\",\"income\":\"Ingreso\"}},\"budgets_execution\":{\"index\":{\"alert\":\"No hay datos disponibles en %{year} as\u00ED que te mostramos el primer a\u00F1o con datos\"}}}},\"cookies_eu\":{\"cookies_text\":\"Las cookies nos ayudan a ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso de cookies.\",\"learn_more\":\"M\u00E1s informaci\u00F3n\",\"ok\":\"OK\"},\"countries\":{\"AC\":\"Isla de la Ascensi\u00F3n\",\"AD\":\"Andorra\",\"AE\":\"Emiratos \u00C1rabes Unidos\",\"AF\":\"Afganist\u00E1n\",\"AG\":\"Antigua y Barbuda\",\"AI\":\"Anguila\",\"AL\":\"Albania\",\"AM\":\"Armenia\",\"AN\":\"Antillas Neerlandesas\",\"AO\":\"Angola\",\"AQ\":\"Ant\u00E1rtida\",\"AR\":\"Argentina\",\"AS\":\"Samoa Americana\",\"AT\":\"Austria\",\"AU\":\"Australia\",\"AW\":\"Aruba\",\"AX\":\"Islas \u00C5land\",\"AZ\":\"Azerbaiy\u00E1n\",\"BA\":\"Bosnia-Herzegovina\",\"BB\":\"Barbados\",\"BD\":\"Banglad\u00E9s\",\"BE\":\"B\u00E9lgica\",\"BF\":\"Burkina Faso\",\"BG\":\"Bulgaria\",\"BH\":\"Bar\u00E9in\",\"BI\":\"Burundi\",\"BJ\":\"Ben\u00EDn\",\"BL\":\"San Bartolom\u00E9\",\"BM\":\"Bermudas\",\"BN\":\"Brun\u00E9i\",\"BO\":\"Bolivia\",\"BQ\":\"Caribe neerland\u00E9s\",\"BR\":\"Brasil\",\"BS\":\"Bahamas\",\"BT\":\"But\u00E1n\",\"BV\":\"Isla Bouvet\",\"BW\":\"Botsuana\",\"BY\":\"Bielorrusia\",\"BZ\":\"Belice\",\"CA\":\"Canad\u00E1\",\"CC\":\"Islas Cocos\",\"CD\":\"Rep\u00FAblica Democr\u00E1tica del Congo\",\"CF\":\"Rep\u00FAblica Centroafricana\",\"CG\":\"Rep\u00FAblica del Congo\",\"CH\":\"Suiza\",\"CI\":\"Costa de Marfil\",\"CK\":\"Islas Cook\",\"CL\":\"Chile\",\"CM\":\"Camer\u00FAn\",\"CN\":\"China\",\"CO\":\"Colombia\",\"CP\":\"Isla Clipperton\",\"CR\":\"Costa Rica\",\"CU\":\"Cuba\",\"CV\":\"Cabo Verde\",\"CW\":\"Curazao\",\"CX\":\"Isla Christmas\",\"CY\":\"Chipre\",\"CZ\":\"Rep\u00FAblica Checa\",\"DE\":\"Alemania\",\"DG\":\"Diego Garc\u00EDa\",\"DJ\":\"Yibuti\",\"DK\":\"Dinamarca\",\"DM\":\"Dominica\",\"DO\":\"Rep\u00FAblica Dominicana\",\"DZ\":\"Argelia\",\"EA\":\"Ceuta y Melilla\",\"EC\":\"Ecuador\",\"EE\":\"Estonia\",\"EG\":\"Egipto\",\"EH\":\"S\u00E1hara Occidental\",\"ER\":\"Eritrea\",\"ES\":\"Espa\u00F1a\",\"ET\":\"Etiop\u00EDa\",\"EU\":\"Uni\u00F3n Europea\",\"FI\":\"Finlandia\",\"FJ\":\"Fiyi\",\"FK\":\"Islas Malvinas\",\"FM\":\"Micronesia\",\"FO\":\"Islas Feroe\",\"FR\":\"Francia\",\"GA\":\"Gab\u00F3n\",\"GB\":\"Reino Unido\",\"GD\":\"Granada\",\"GE\":\"Georgia\",\"GF\":\"Guayana Francesa\",\"GG\":\"Guernesey\",\"GH\":\"Ghana\",\"GI\":\"Gibraltar\",\"GL\":\"Groenlandia\",\"GM\":\"Gambia\",\"GN\":\"Guinea\",\"GP\":\"Guadalupe\",\"GQ\":\"Guinea Ecuatorial\",\"GR\":\"Grecia\",\"GS\":\"Islas Georgia del Sur y Sandwich del Sur\",\"GT\":\"Guatemala\",\"GU\":\"Guam\",\"GW\":\"Guinea-Bis\u00E1u\",\"GY\":\"Guyana\",\"HK\":\"RAE de Hong Kong (China)\",\"HM\":\"Islas Heard y McDonald\",\"HN\":\"Honduras\",\"HR\":\"Croacia\",\"HT\":\"Hait\u00ED\",\"HU\":\"Hungr\u00EDa\",\"IC\":\"Islas Canarias\",\"ID\":\"Indonesia\",\"IE\":\"Irlanda\",\"IL\":\"Israel\",\"IM\":\"Isla de Man\",\"IN\":\"India\",\"IO\":\"Territorio Brit\u00E1nico del Oc\u00E9ano \u00CDndico\",\"IQ\":\"Iraq\",\"IR\":\"Ir\u00E1n\",\"IS\":\"Islandia\",\"IT\":\"Italia\",\"JE\":\"Jersey\",\"JM\":\"Jamaica\",\"JO\":\"Jordania\",\"JP\":\"Jap\u00F3n\",\"KE\":\"Kenia\",\"KG\":\"Kirguist\u00E1n\",\"KH\":\"Camboya\",\"KI\":\"Kiribati\",\"KM\":\"Comoras\",\"KN\":\"San Crist\u00F3bal y Nieves\",\"KP\":\"Corea del Norte\",\"KR\":\"Corea del Sur\",\"KW\":\"Kuwait\",\"KY\":\"Islas Caim\u00E1n\",\"KZ\":\"Kazajist\u00E1n\",\"LA\":\"Laos\",\"LB\":\"L\u00EDbano\",\"LC\":\"Santa Luc\u00EDa\",\"LI\":\"Liechtenstein\",\"LK\":\"Sri Lanka\",\"LR\":\"Liberia\",\"LS\":\"Lesoto\",\"LT\":\"Lituania\",\"LU\":\"Luxemburgo\",\"LV\":\"Letonia\",\"LY\":\"Libia\",\"MA\":\"Marruecos\",\"MC\":\"M\u00F3naco\",\"MD\":\"Moldavia\",\"ME\":\"Montenegro\",\"MF\":\"San Mart\u00EDn\",\"MG\":\"Madagascar\",\"MH\":\"Islas Marshall\",\"MK\":\"Macedonia\",\"ML\":\"Mali\",\"MM\":\"Myanmar (Birmania)\",\"MN\":\"Mongolia\",\"MO\":\"RAE de Macao (China)\",\"MP\":\"Islas Marianas del Norte\",\"MQ\":\"Martinica\",\"MR\":\"Mauritania\",\"MS\":\"Montserrat\",\"MT\":\"Malta\",\"MU\":\"Mauricio\",\"MV\":\"Maldivas\",\"MW\":\"Malaui\",\"MX\":\"M\u00E9xico\",\"MY\":\"Malasia\",\"MZ\":\"Mozambique\",\"NA\":\"Namibia\",\"NC\":\"Nueva Caledonia\",\"NE\":\"N\u00EDger\",\"NF\":\"Isla Norfolk\",\"NG\":\"Nigeria\",\"NI\":\"Nicaragua\",\"NL\":\"Pa\u00EDses Bajos\",\"NO\":\"Noruega\",\"NP\":\"Nepal\",\"NR\":\"Nauru\",\"NU\":\"Isla Niue\",\"NZ\":\"Nueva Zelanda\",\"OM\":\"Om\u00E1n\",\"PA\":\"Panam\u00E1\",\"PE\":\"Per\u00FA\",\"PF\":\"Polinesia Francesa\",\"PG\":\"Pap\u00FAa Nueva Guinea\",\"PH\":\"Filipinas\",\"PK\":\"Pakist\u00E1n\",\"PL\":\"Polonia\",\"PM\":\"San Pedro y Miquel\u00F3n\",\"PN\":\"Islas Pitcairn\",\"PR\":\"Puerto Rico\",\"PS\":\"Territorios Palestinos\",\"PT\":\"Portugal\",\"PW\":\"Palau\",\"PY\":\"Paraguay\",\"QA\":\"Catar\",\"QO\":\"Territorios alejados de Ocean\u00EDa\",\"RE\":\"Reuni\u00F3n\",\"RO\":\"Ruman\u00EDa\",\"RS\":\"Serbia\",\"RU\":\"Rusia\",\"RW\":\"Ruanda\",\"SA\":\"Arabia Saud\u00ED\",\"SB\":\"Islas Salom\u00F3n\",\"SC\":\"Seychelles\",\"SD\":\"Sud\u00E1n\",\"SE\":\"Suecia\",\"SG\":\"Singapur\",\"SH\":\"Santa Elena\",\"SI\":\"Eslovenia\",\"SJ\":\"Svalbard y Jan Mayen\",\"SK\":\"Eslovaquia\",\"SL\":\"Sierra Leona\",\"SM\":\"San Marino\",\"SN\":\"Senegal\",\"SO\":\"Somalia\",\"SR\":\"Surinam\",\"SS\":\"Sud\u00E1n del Sur\",\"ST\":\"Santo Tom\u00E9 y Pr\u00EDncipe\",\"SV\":\"El Salvador\",\"SX\":\"Sint Maarten\",\"SY\":\"Siria\",\"SZ\":\"Suazilandia\",\"TA\":\"Trist\u00E1n da Cunha\",\"TC\":\"Islas Turcas y Caicos\",\"TD\":\"Chad\",\"TF\":\"Territorios Australes Franceses\",\"TG\":\"Togo\",\"TH\":\"Tailandia\",\"TJ\":\"Tayikist\u00E1n\",\"TK\":\"Tokelau\",\"TL\":\"Timor Oriental\",\"TM\":\"Turkmenist\u00E1n\",\"TN\":\"T\u00FAnez\",\"TO\":\"Tonga\",\"TR\":\"Turqu\u00EDa\",\"TT\":\"Trinidad y Tobago\",\"TV\":\"Tuvalu\",\"TW\":\"Taiw\u00E1n\",\"TZ\":\"Tanzania\",\"UA\":\"Ucrania\",\"UG\":\"Uganda\",\"UM\":\"Islas menores alejadas de EE. UU.\",\"US\":\"Estados Unidos\",\"UY\":\"Uruguay\",\"UZ\":\"Uzbekist\u00E1n\",\"VA\":\"Ciudad del Vaticano\",\"VC\":\"San Vicente y las Granadinas\",\"VE\":\"Venezuela\",\"VG\":\"Islas V\u00EDrgenes Brit\u00E1nicas\",\"VI\":\"Islas V\u00EDrgenes de EE. UU.\",\"VN\":\"Vietnam\",\"VU\":\"Vanuatu\",\"WF\":\"Wallis y Futuna\",\"WS\":\"Samoa\",\"XK\":\"Kosovo\",\"YE\":\"Yemen\",\"YT\":\"Mayotte\",\"ZA\":\"Sud\u00E1frica\",\"ZM\":\"Zambia\",\"ZW\":\"Zimbabue\"},\"country\":\"Espa\u00F1a\",\"date\":{\"abbr_day_names\":[\"dom\",\"lun\",\"mar\",\"mi\u00E9\",\"jue\",\"vie\",\"s\u00E1b\"],\"abbr_month_names\":[null,\"ene\",\"feb\",\"mar\",\"abr\",\"may\",\"jun\",\"jul\",\"ago\",\"sep\",\"oct\",\"nov\",\"dic\"],\"day_names\":[\"domingo\",\"lunes\",\"martes\",\"mi\u00E9rcoles\",\"jueves\",\"viernes\",\"s\u00E1bado\"],\"formats\":{\"day_month\":\"%d/%m\",\"default\":\"%d/%m/%Y\",\"long\":\"%d de %B de %Y\",\"short\":\"%d %b %Y\",\"shortest\":\"%d %b %y\"},\"month_names\":[null,\"enero\",\"febrero\",\"marzo\",\"abril\",\"mayo\",\"junio\",\"julio\",\"agosto\",\"septiembre\",\"octubre\",\"noviembre\",\"diciembre\"],\"order\":[\"day\",\"month\",\"year\"]},\"datetime\":{\"distance_in_words\":{\"about_x_hours\":{\"one\":\"hace alrededor de 1 hora\",\"other\":\"hace alrededor de %{count} horas\"},\"about_x_months\":{\"one\":\"hace alrededor de 1 mes\",\"other\":\"hace alrededor de %{count} meses\"},\"about_x_years\":{\"one\":\"hace alrededor de 1 a\u00F1o\",\"other\":\"hace alrededor de %{count} a\u00F1os\"},\"almost_x_years\":{\"one\":\"hace casi 1 a\u00F1o\",\"other\":\"hace casi %{count} a\u00F1os\"},\"half_a_minute\":\"hace medio minuto\",\"less_than_x_minutes\":{\"one\":\"hace menos de 1 minuto\",\"other\":\"hace menos de %{count} minutos\"},\"less_than_x_seconds\":{\"one\":\"hace menos de 1 segundo\",\"other\":\"hace menos de %{count} segundos\"},\"over_x_years\":{\"one\":\"hace m\u00E1s de 1 a\u00F1o\",\"other\":\"hace m\u00E1s de %{count} a\u00F1os\"},\"x_days\":{\"one\":\"hace 1 d\u00EDa\",\"other\":\"hace %{count} d\u00EDas\"},\"x_minutes\":{\"one\":\"hace 1 minuto\",\"other\":\"hace %{count} minutos\"},\"x_months\":{\"one\":\"hace 1 mes\",\"other\":\"hace %{count} meses\"},\"x_seconds\":{\"one\":\"hace 1 segundo\",\"other\":\"hace %{count} segundos\"},\"x_years\":{\"one\":\"hace 1 a\u00F1o\",\"other\":\"hace %{count} a\u00F1os\"}},\"prompts\":{\"day\":\"D\u00EDa\",\"hour\":\"Hora\",\"minute\":\"Minutos\",\"month\":\"Mes\",\"second\":\"Segundos\",\"year\":\"A\u00F1o\"}},\"errors\":{\"format\":\"%{attribute} %{message}\",\"messages\":{\"accepted\":\"debe ser aceptado\",\"array_too_short\":{\"one\":\"es demasiado corto (al menos 1 elemento)\",\"other\":\"es demasiado corto (al menos %{count} elementos)\"},\"blank\":\"no puede estar en blanco\",\"blank_for_modules\":\"La organizaci\u00F3n no est\u00E1 bien configurada. El identificador es obligatorio para los m\u00F3dulos que tienes activados.\",\"collection_taken\":\"no puede tener otra colecci\u00F3n de este tipo.\",\"confirmation\":\"no coincide con %{attribute}\",\"custom_fields\":{\"options\":{\"missing_vocabulary\":\"Alguna columna de tipo \\\\\"vocabulary\\\\\" no tiene valor en \\\\\"dataSource\\\\\"\",\"wrong_column_type\":\"Alguna columna no pertenece a un tipo reconocido. Tipos reconocidos: \\\\\"text\\\\\", \\\\\"integer\\\\\", \\\\\"float\\\\\", \\\\\"date\\\\\" y \\\\\"vocabulary\\\\\"\",\"wrong_custom_field_uids\":\"Los uids configurados no existen o pertenecen a campos personalizados que no tienen definido un valor de progreso\"}},\"empty\":\"no puede estar vac\u00EDo\",\"equal_to\":\"debe ser igual a %{count}\",\"even\":\"debe ser par\",\"exclusion\":\"est\u00E1 reservado\",\"greater_than\":\"debe ser mayor que %{count}\",\"greater_than_or_equal_to\":\"debe ser mayor que o igual a %{count}\",\"inclusion\":\"no est\u00E1 incluido en la lista\",\"invalid\":\"no es v\u00E1lido\",\"invalid_consultation_response\":\"No se ha podido guardar la consulta. Por favor, revisa los valores e int\u00E9ntalo de nuevo.\",\"invalid_table_name\":\"Debe comenzar con una letra o un gui\u00F3n bajo; el resto solo puede contener letras, d\u00EDgitos o guiones bajos\",\"less_than\":\"debe ser menor que %{count}\",\"less_than_or_equal_to\":\"debe ser menor que o igual a %{count}\",\"not_a_number\":\"no es un n\u00FAmero\",\"not_an_integer\":\"debe ser un entero\",\"not_found\":\"no se encuentra\",\"odd\":\"debe ser impar\",\"other_than\":\"debe ser distinto de %{count}\",\"page_as_homepage\":\"No se ha podido guardar los cambios en la p\u00E1gina porque no se puede cambiar la visibilidad de una p\u00E1gina que se utiliza como homepage.\",\"present\":\"debe estar en blanco\",\"record_invalid\":\"La validaci\u00F3n fall\u00F3: %{errors}\",\"restrict_dependent_destroy\":{\"one\":\"No se puede eliminar el registro porque existe un %{record} dependiente\",\"other\":\"No se puede eliminar el registro porque existen %{record} dependientes\"},\"taken\":\"ya est\u00E1 en uso\",\"too_long\":{\"one\":\"es demasiado largo (1 car\u00E1cter m\u00E1ximo)\",\"other\":\"es demasiado largo (%{count} caracteres m\u00E1ximo)\"},\"too_short\":{\"one\":\"es demasiado corto (1 car\u00E1cter m\u00EDnimo)\",\"other\":\"es demasiado corto (%{count} caracteres m\u00EDnimo)\"},\"wrong_length\":{\"one\":\"no tiene la longitud correcta (1 car\u00E1cter exacto)\",\"other\":\"no tiene la longitud correcta (%{count} caracteres exactos)\"}},\"template\":{\"body\":\"Se encontraron problemas con los siguientes campos:\",\"header\":{\"one\":\"No se pudo guardar este/a %{model} porque se encontr\u00F3 1 error\",\"other\":\"No se pudo guardar este/a %{model} porque se encontraron %{count} errores\"}}},\"gobierto_admin\":{\"activities\":{\"activities_list\":{\"header\":{\"action\":\"Acci\u00F3n\",\"date\":\"Fecha\",\"ip\":\"IP\",\"recipient\":\"Receptor\",\"subject\":\"Sujeto\",\"user\":\"Usuario\"}},\"index\":{\"title\":\"Log de actividades\"}},\"admin\":{\"invitation_acceptances\":{\"show\":{\"error\":\"Esta URL no parece ser v\u00E1lida\",\"success\":\"Sesi\u00F3n iniciada correctamente\"}},\"invitations\":{\"create\":{\"error\":\"Hubo un problema al enviar las invitaciones\",\"success\":\"Las invitaciones se han enviado correctamente\",\"success_with_errors\":\"Algunas invitaciones no han podido ser enviadas: %{email_addresses}.\"},\"form\":{\"placeholders\":{\"emails\":\"maria@hotmail.com, felipe@gmail.com\"},\"sites\":\"Sites con acceso\",\"submit\":\"Enviar invitaciones\"},\"new\":{\"title\":\"Enviar invitaciones\"}},\"passwords\":{\"create\":{\"error\":\"La direcci\u00F3n de e-mail que has indicado no parece ser v\u00E1lida\",\"success\":\"Por favor, revisa tu email para recibir instrucciones\"},\"edit\":{\"error\":\"Esta URL no parece ser v\u00E1lida\",\"title\":\"Establecer tu nueva contrase\u00F1a\"},\"edit_form\":{\"submit\":\"Cambiar contrase\u00F1a\"},\"new\":{\"title\":\"Recuperar tu contrase\u00F1a\"},\"new_form\":{\"placeholders\":{\"email\":\"fsanchez@gmail.com\"},\"submit\":\"Solicitar recuperaci\u00F3n\"},\"update\":{\"error\":\"Hubo un problema al cambiar tu contrase\u00F1a\",\"success\":\"Sesi\u00F3n iniciada correctamente\"}},\"settings\":{\"edit\":{\"password_block\":\"Contrase\u00F1a\",\"placeholders\":{\"email\":\"Email\",\"name\":\"Nombre\"},\"title\":\"Edita tus datos personales\"},\"update\":{\"error\":\"No se han podido guardar tus datos\",\"success\":\"Datos guardados correctamente\"}}},\"admin_groups\":{\"admins\":{\"modal_index\":{\"add\":\"A\u00F1adir\",\"add_title\":\"A\u00F1adir usuario\",\"created_at\":\"Acceso concedido\",\"delete\":\"Eliminar acceso\",\"email\":\"correo-e\",\"user\":\"Usuario\",\"users_with_access\":\"Usuarios con acceso\"}},\"breadcrumb\":{\"admin_groups\":\"Grupos\"},\"create\":{\"success\":\"El Grupo de Admins se ha creado correctamente\"},\"edit\":{\"title\":\"Permisos del grupo: %{name}\"},\"form\":{\"action_names\":{\"create_projects\":\"Crear proyectos\",\"delete_projects_all\":\"Eliminar proyectos (todos)\",\"delete_projects_assigned\":\"Eliminar proyectos (asignados)\",\"edit\":\"Editar\",\"edit_projects_all\":\"Editar proyectos (todos)\",\"edit_projects_assigned\":\"Editar proyectos (asignados)\",\"edit_projects_permissions_all\":\"Editar permisos de proyectos (todos)\",\"edit_projects_permissions_assigned\":\"Editar permisos de proyectos (asignados)\",\"manage_dashboards\":\"Administrar dashboards\",\"manage_plans\":\"Administrar planes\",\"moderate_projects_all\":\"Moderar proyectos (todos)\",\"moderate_projects_assigned\":\"Moderar proyectos (asignados)\",\"publish_projects_all\":\"Publicar proyectos (todos)\",\"publish_projects_assigned\":\"Publicar proyectos (asignados)\",\"update_projects_as_minor_change_all\":\"Guardar cambios menores en proyectos (todos)\",\"update_projects_as_minor_change_assigned\":\"Guardar cambios menores en proyectos (asignados)\",\"view_dashboards\":\"Ver dashboards\",\"view_projects_all\":\"Ver proyectos (todos)\",\"view_projects_assigned\":\"Ver proyectos (asignados)\"},\"actions\":\"Acciones\",\"all\":\"Todos\",\"members\":{\"one\":\"Hay un administrador con este grupo.\",\"other\":\"Hay %{count} administradores con este grupo.\",\"zero\":\"Este grupo no tiene administradores.\"},\"modules_permissions\":\"M\u00F3dulos\",\"people\":\"Personas\",\"placeholders\":{\"name\":\"Grupo global de administradores\"},\"site_options_permissions\":\"Sitio\"},\"index\":{\"header\":{\"admin_group\":\"Grupo\"},\"new\":\"Nuevo\",\"title\":\"Grupos\"},\"new\":{\"title\":\"Nuevo grupo\"},\"update\":{\"success\":\"El Grupo de Admins se ha actualizado correctamente\"}},\"admin_mailer\":{\"invitation_instructions\":{\"bye\":\"Saludos\",\"click_link\":\"Has sido invitado para colaborar en Gobierto. Pincha en el siguiente enlace para crear tu cuenta\",\"hi\":\"Hola\",\"subject\":\"Has sido invitado a colaborar en Gobierto\"},\"reset_password_instructions\":{\"bye\":\"Saludos\",\"click_link\":\"Pincha en el siguiente enlace para restaurar tu contrase\u00F1a\",\"hi\":\"Hola\",\"subject\":\"Instrucciones para restaurar tu contrase\u00F1a\"}},\"admin_unauthorized\":\"No tienes suficientes permisos para realizar esta acci\u00F3n\",\"admins\":{\"create\":{\"success\":\"El Admin se ha creado correctamente\"},\"edit\":{\"title\":\"Editar Administrador\"},\"form\":{\"activity_block\":\"Log de actividad\",\"admin_groups_block\":\"Grupo\",\"authorization_level\":{\"disabled\":\"Deshabilitado\",\"manager\":\"Manager\",\"regular\":\"Regular\"},\"password_block\":\"Contrase\u00F1a\",\"placeholders\":{\"email\":\"fgonzalez@gmail.com\",\"name\":\"Fernando Gonz\u00E1lez\"},\"sites_block\":\"Sites con acceso\",\"sites_block_description\":\"Este usuario puede acceder a administrar:\"},\"index\":{\"groups_and_permissions\":\"Grupos y permisos\",\"header\":{\"admin\":\"Administrador\",\"created_at\":\"Creado\",\"email\":\"Email\",\"groups\":\"Grupos\",\"last_sign_in_at\":\"\u00DAltimo login\",\"primary_api_token\":\"Token de la API primario\",\"role\":\"Rol\"},\"new\":\"Nuevo Administrador\",\"send_invitations\":\"Enviar invitaciones\",\"title\":\"Administradores\",\"users_section\":\"Usuarios\",\"view_admin\":\"Ver Administrador\"},\"new\":{\"title\":\"Nuevo Administrador\"},\"show\":{\"admin_tokens\":\"Tokens de autorizaci\u00F3n\",\"copy_to_clipboard\":\"Copiar\",\"primary_api_token\":\"Token primario\"},\"update\":{\"success\":\"El Admin se ha actualizado correctamente\"}},\"api_tokens\":{\"api_token\":{\"primary\":\"Primario\"},\"edit\":{\"api_token\":\"Token de la API %{name}\"},\"form\":{\"placeholders\":{\"domain\":\"www.example.org\",\"name\":\"Token para aplicaciones externas\"},\"update_token\":\"Actualizar Token\"},\"list\":{\"header\":{\"created_at\":\"Creado\",\"domain\":\"Dominio\",\"name\":\"Nombre\",\"token\":\"Token\"},\"new\":\"Nuevo\",\"title\":\"Tokens de la API\"},\"new\":{\"api_token\":\"Nuevo Token de la API\"}},\"census\":{\"imports\":{\"create\":{\"error\":\"Hubo un error al importar tu archivo. Por favor, int\u00E9ntalo de nuevo.\",\"success\":\"Se han importado %{record_count} registros\"},\"file_format_notes\":{\"instructions\":\"El archivo a cargar debe ser un CSV, sin fila de cabecera, con las columnas de datos que queramos que el usuario deba verficiar. Por ejemplo, si queremos que valide DNI, fecha de nacimiento y c\u00F3digo postal, deberemos preparar un fichero como este:\"},\"form\":{\"disable_with\":\"Cargando...\",\"submit\":\"Cargar archivo de censo\"},\"new\":{\"final_notes\":\"se sustituir\u00E1n todos los registros, y si alg\u00FAn DNI de usuario verificado deja de estar presente, el usuario dejar\u00E1 de tener acceso\",\"import_status\":\"El censo ha sido cargado por \u00FAltima vez el %{created_at} por %{admin_name} (%{admin_email}). El archivo tiene %{imported_records} registros.\",\"title\":\"Configuraci\u00F3n de censo\"}}},\"custom_fields_plugins\":{\"budgets\":{\"area\":\"\u00C1rea\",\"assigned_amount\":\"Asignado\",\"budget_line\":\"Partida presupuestaria\",\"custom\":\"Personalizada\",\"economic\":\"Econ\u00F3mica\",\"full_amount\":\"Total\",\"functional\":\"Funcional\",\"not_available\":\"No disp.\",\"weight\":\"Peso\",\"year\":\"A\u00F1o\"},\"common\":{\"custom\":\"Personalizada\",\"economic\":\"Econ\u00F3mica\",\"functional\":\"Funcional\"},\"data_grid\":{\"remove_rows\":\"Eliminar filas seleccionadas\",\"select_deselect_all\":\"Seleccionar / Deseleccionar todas\"},\"progress\":{\"progress\":\"Progreso\"},\"table\":{\"remove_rows\":\"Eliminar filas seleccionadas\",\"select_deselect_all\":\"Seleccionar / Deseleccionar todas\"}},\"custom_sessions\":{\"ldap_strategy\":{\"form\":{\"identifier\":\"Identificador\",\"password\":\"Contrase\u00F1a\",\"submit\":\"Enviar\"}}},\"gobierto_attachments\":{\"file_attachments\":{\"create\":{\"success_html\":\"El documento ha sido creado correctamente. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVer el documento\\\\u003c/a\\\\u003e.\"},\"destroy\":{\"success\":\"El documento se ha archivado correctamente\"},\"edit\":{\"title\":\"Editar documento\"},\"form\":{\"file_constraints\":\"Adjuntar documento\",\"placeholders\":{\"description\":\"Descripci\u00F3n del documento\",\"name\":\"Nombre del documento\",\"slug\":\"nombre-del-documento\"}},\"index\":{\"add_new_attachment\":\"A\u00F1adir nuevo documento\",\"collections\":\"Colecciones\",\"created_at\":\"Creado\",\"header\":{\"collection\":\"Colecci\u00F3n\",\"file_attachments\":\"Documentos\"},\"latest_editions\":\"\u00DAltimas ediciones\",\"new\":\"Nueva\",\"title\":\"Documentos\",\"updated_at\":\"Actualizado\",\"view_collection\":\"Ver colecci\u00F3n\"},\"new\":{\"title\":\"Nuevo documento\"},\"recover\":{\"success\":\"El documento se ha recuperado correctamente\"},\"update\":{\"success_html\":\"El documento ha sido actualizado correctamente. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVer el documento\\\\u003c/a\\\\u003e.\"}}},\"gobierto_budgets\":{\"feedback\":{\"index\":{\"answer1_0\":\"S\u00ED\",\"answer1_1\":\"No\",\"answer2_0\":\"Poco\",\"answer2_1\":\"Apropiado\",\"answer2_2\":\"Mucho\",\"budget\":\"Presupuesto\",\"last\":\"\u00DAltima\",\"total_feedback\":\"Total opiniones\",\"understand\":\"\u00BFLo entiendes?\",\"you_think\":\"Te parece...\"}},\"options\":{\"index\":{\"comparison_compare_municipalities_desc\":\"Muestra una tabla con municipios espec\u00EDficos (y cuyos datos est\u00E9n disponibles en presupuestos.gobierto.es - haz la comprobaci\u00F3n all\u00ED antes de incluirlos)\",\"comparison_context_table_enabled_desc\":\"Muestra la tabla que ofrece contexto con medias provinciales, auton\u00F3micas o estatales\",\"comparison_show_widget_desc\":\"Facilita el acceso a la herramienta de comparaci\u00F3n de presupuestos de Gobierto: presupuestos.gobierto.es\",\"comparison_tool_enabled_desc\":\"Habilita herramientas de comparaci\u00F3n\",\"confirm_update_annual_data\":\"Comenzar\u00E1 un proceso en segundo plano para actualizar los ficheros. \u00BFContinuar?\",\"elaboration\":\"Elaboraci\u00F3n\",\"elaboration_desc1\":\"Habilita la secci\u00F3n de Elaboraci\u00F3n del presupuesto.\",\"elaboration_desc2_html\":\"\\\\u003cstrong\\\\u003eImportante:\\\\u003c/strong\\\\u003e es necesario que se hayan cargado datos de elaboraci\u00F3n. Contacta con tu administrador si tienes dudas.\",\"feedback\":\"Micro-participaciones\",\"feedback_desc\":\"Habilita la opci\u00F3n para que los visitantes opinen sobre las partidas del presupuesto\",\"feedback_emails_desc\":\"Las participaciones (opini\u00F3n sobre partidas y petici\u00F3n de m\u00E1s informaci\u00F3n) se enviar\u00E1n a esta direcci\u00F3n\",\"indicators\":\"Indicadores\",\"indicators_desc1\":\"Habilita la secci\u00F3n Indicadores\",\"options\":\"Opciones\",\"providers\":\"Proveedores y Facturas\",\"providers_desc1\":\"Habilita la secci\u00F3n Proveedores y Facturas\",\"receipt\":\"Recibo de tus impuestos\",\"receipt_desc1\":\"Habilita la secci\u00F3n El recibo de tus impuestos\",\"receipt_desc2_html\":\"\\\\u003cstrong\\\\u003eImportante:\\\\u003c/strong\\\\u003e debes de rellenar el JSON con los datos.\",\"update_annual_data\":\"Generar ficheros de partidas presupuestarias por a\u00F1o\"},\"update\":{\"error\":\"No se han podido guardar las opciones: %{validation_errors}\",\"success\":\"Opciones guardadas correctamente\"},\"update_annual_data\":{\"success\":\"Se ha lanzado un proceso para generar los ficheros de partidas presupuestarias por a\u00F1o\"}},\"shared\":{\"tabs\":{\"budgets\":\"Presupuestos\",\"feedback\":\"Opiniones\",\"options\":\"Opciones\"}}},\"gobierto_calendars\":{\"calendar_configuration\":{\"edit\":{\"add_rule\":\"Crear regla\",\"calendar_integration\":\"Integraci\u00F3n de calendario\",\"confirm_sync\":\"\u00BFEst\u00E1s seguro?\",\"filter_events\":\"Filtrado de eventos\",\"filter_events_desc\":\"Cuando se importa un evento...\",\"filter_events_label\":\"Si el\",\"google_calendar\":\"Google Calendar\",\"ibm_notes\":\"IBM Notes\",\"labels\":{\"ibm_notes_pwd\":\"Contrase\u00F1a\",\"ibm_notes_url\":\"URL del calendario de IBM Notes\",\"ibm_notes_usr\":\"Cuenta de IBM Notes\",\"microsoft_exchange_pwd\":\"Contrase\u00F1a\",\"microsoft_exchange_url\":\"URL del calendario\",\"microsoft_exchange_usr\":\"Cuenta de Microsoft Exchange\"},\"last_sync\":\"\u00DAltima sincronizaci\u00F3n\",\"manage\":\"Administrar la configuraci\u00F3n del calendario\",\"microsoft_exchange\":\"Microsoft Exchange\",\"placeholders\":{\"filter_text\":\"Texto por el que filtrar\",\"ibm_notes_url\":\"ej. https://ejemplo.com/mail/abc.nsf/api/calendar/events\",\"microsoft_exchange_url\":\"ej. https://ejemplo.com/ews/exchange.asmx\",\"username\":\"ej. perico85\"},\"remove_configuration\":\"Eliminar configuraci\u00F3n de calendario\",\"sync\":\"Sincronizar ahora\",\"without_description\":\"No importar la descripci\u00F3n del evento\"},\"gobierto_people_person_navigation\":{\"calendar_configuration\":\"Configuraci\u00F3n de calendario\"},\"google_calendar_fields\":{\"calendar_configured\":\"Actualmente esta persona tiene configurados estos calendarios\",\"share_link\":\"Comparte este enlace con el Alto Cargo para que permita a Gobierto leer sus eventos de Google Calendar:\"},\"sync_calendars\":{\"success\":\"Sincronizaci\u00F3n realizada\"},\"update\":{\"success\":\"Preferencias actualizadas correctamente\"}},\"collections\":{\"index\":{\"add_new_event\":\"A\u00F1adir nuevo evento\",\"collections\":\"Calendarios\",\"header\":{\"collection\":\"Calendario\",\"events\":\"Eventos\"},\"latest_editions\":\"\u00DAltimos eventos editados\",\"new\":\"Nuevo\",\"title\":\"Agendas\",\"view_collection\":\"Ver colecci\u00F3n\"}},\"events\":{\"attendees_form\":{\"header\":{\"charge\":\"Cargo\",\"name\":\"Nombre\",\"person\":\"Persona\"},\"title\":\"Asistentes\",\"view_person\":\"Ver persona\"},\"create\":{\"success_html\":\"El evento ha sido creado correctamente. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVer el evento\\\\u003c/a\\\\u003e.\"},\"destroy\":{\"success\":\"El evento se ha archivado correctamente\"},\"edit\":{\"title\":\"Editar evento\"},\"form\":{\"placeholders\":{\"slug\":\"acerca-de-esta-web\",\"title\":\"T\u00EDtulo del evento\"},\"state\":{\"pending\":\"Pendiente\",\"published\":\"Publicado\"}},\"index\":{\"configuration\":\"Configuraci\u00F3n\",\"header\":{\"date\":\"Fecha\",\"event\":\"Evento\",\"location\":\"Localizaci\u00F3n\",\"status\":\"Estado\"},\"new\":\"Nuevo evento\",\"past_events\":\"Eventos pasados\",\"pending_events\":\"Pendientes de moderar\",\"published_events\":\"Eventos publicados\",\"upcoming_events\":\"Pr\u00F3ximos\",\"view_event\":\"Ver evento\",\"visibility_level\":{\"archived\":\"Archivado\",\"pending\":\"Borrador\",\"published\":\"Publicado\"}},\"locations_form\":{\"header\":{\"address\":\"Direcci\u00F3n\",\"place\":\"Lugar\"},\"title\":\"Lugar\"},\"new\":{\"title\":\"Nuevo evento\"},\"person_breadcrumb\":{\"back_to_collections\":\"\\\\u003c Volver a agendas\"},\"recover\":{\"success\":\"El evento se ha recuperado correctamente\"},\"update\":{\"success_html\":\"El evento ha sido actualizado. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVer el evento\\\\u003c/a\\\\u003e.\"}}},\"gobierto_cms\":{\"file_attachments\":{\"index\":{\"title\":\"Documentos\"}},\"pages\":{\"create\":{\"success_html\":\"La p\u00E1gina ha sido creada correctamente. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVer la p\u00E1gina\\\\u003c/a\\\\u003e.\"},\"destroy\":{\"success\":\"La p\u00E1gina ha sido eliminada correctamente\"},\"edit\":{\"title\":\"Editar p\u00E1gina\"},\"form\":{\"include_in_section\":\"Incluir en secci\u00F3n\",\"new_section\":\"(Nueva secci\u00F3n)\",\"placeholders\":{\"slug\":\"acerca-de-esta-web\",\"title\":\"T\u00EDtulo de la p\u00E1gina\"},\"section\":\"Secci\u00F3n\",\"visibility_level\":{\"active\":\"Publicada\",\"draft\":\"Borrador\"},\"without_parent\":\"(sin padre)\"},\"index\":{\"add_new\":\"A\u00F1adir nueva\",\"collections\":\"Colecciones\",\"header\":{\"collection\":\"Colecci\u00F3n\",\"pages\":\"P\u00E1ginas\",\"section\":\"Secci\u00F3n\"},\"latest_editions\":\"\u00DAltimas ediciones\",\"new\":\"Nueva\",\"sections\":\"Secciones\",\"title\":\"CMS\",\"view_collection\":\"Ver colecci\u00F3n\",\"view_section\":\"Ver secci\u00F3n\"},\"new\":{\"title\":\"Nueva p\u00E1gina\"},\"recover\":{\"success\":\"La p\u00E1gina ha sido recuperada correctamente\"},\"update\":{\"success_html\":\"La p\u00E1gina ha sido actualizada correctamente. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVer la p\u00E1gina\\\\u003c/a\\\\u003e.\"}},\"sections\":{\"create\":{\"success\":\"La secci\u00F3n ha sido creada correctamente.\"},\"edit_modal\":{\"title\":\"Editar secci\u00F3n\"},\"form\":{\"placeholders\":{\"slug\":\"acerca-de-esta-seccion\",\"title\":\"T\u00EDtulo de la secci\u00F3n\"}},\"index\":{\"header\":{\"pages\":\"P\u00E1ginas\",\"title\":\"Secci\u00F3n\"},\"new\":\"Nueva\",\"title\":\"Secciones\",\"view\":\"Ver secci\u00F3n\"},\"new_modal\":{\"title\":\"Nueva secci\u00F3n\"},\"pages_filter\":{\"page_help\":\"Arrastra y suelta en la parte izquierda para colocar esta p\u00E1gina en el men\u00FA\"},\"show\":{\"collapse\":\"Colapsar todo\",\"configuration\":\"Configuraci\u00F3n\",\"delete_element\":\"Eliminar elemento del men\u00FA\",\"expand\":\"Expandir todo\",\"help\":\"Configura los elementos de tu men\u00FA. Arrastra del panel derecho al men\u00FA en la izquierda\",\"last_edited_pages\":\"\u00DAltimas p\u00E1ginas editadas\",\"placeholders\":{\"search\":\"Escribe el t\u00EDtulo de la p\u00E1gina para buscar\"},\"sections\":\"Secciones\",\"select_page\":\"Selecciona p\u00E1gina para incluir en la secci\u00F3n\",\"view\":\"Ver secci\u00F3n\"},\"update\":{\"success\":\"La secci\u00F3n ha sido actualizada correctamente.\"}}},\"gobierto_common\":{\"collections\":{\"check_container_presence\":{\"container_not_found\":\"El recurso al que pertenece la colecci\u00F3n no se encuentra\"},\"create\":{\"success\":\"La colecci\u00F3n se ha creado correctamente.\"},\"edit_modal\":{\"title\":\"Editar colecci\u00F3n\"},\"form\":{\"placeholders\":{\"slug\":\"acerca-de-esta-coleccion\",\"title\":\"Nombre de la colecci\u00F3n\"}},\"index\":{\"collections\":\"Colecciones\",\"header\":{\"collection\":\"T\u00EDtulo\",\"pages\":\"P\u00E1ginas\"},\"latest_editions\":\"\u00DAltimas ediciones\",\"new\":\"Nueva\",\"title\":\"CMS\",\"view_collection\":\"Ver colecci\u00F3n\"},\"new_modal\":{\"title\":\"Nueva colecci\u00F3n\"},\"show\":{\"configuration\":\"Configuraci\u00F3n\",\"file_attachments\":{\"created_at\":\"Creado\",\"file_name\":\"Nombre del documento\",\"view\":\"Ver documento\"},\"new_attachment\":\"Nuevo\",\"new_page\":\"Nueva\",\"pages\":{\"created_at\":\"Creada\",\"public\":\"Estado\",\"published_on\":\"Publicada\",\"updated_at\":\"Actualizada\",\"view\":\"Ver p\u00E1gina\",\"visibility_level\":{\"active\":\"Publicada\",\"archived\":\"Archivada\",\"draft\":\"Borrador\"}}},\"update\":{\"success\":\"La colecci\u00F3n se ha actualizado correctamente.\"}},\"content_blocks\":{\"create\":{\"success\":\"El bloque de contenido se ha creado correctamente\"},\"destroy\":{\"success\":\"El bloque de contenido se ha eliminado correctamente\"},\"edit\":{\"title\":\"Editar bloque\"},\"form\":{\"add_child\":\"A\u00F1adir columna\",\"fields\":\"Columnas\",\"title\":\"Nombre del bloque\"},\"new\":{\"title\":\"Agregar bloque\"},\"update\":{\"success\":\"El bloque de contenido se ha actualizado correctamente\"}},\"custom_fields\":{\"custom_fields\":{\"create\":{\"success\":\"Campo personalizado creado correctamente\"},\"date_options\":{\"date\":\"Fecha\",\"datetime\":\"Fecha y hora\",\"type\":\"Tipo\"},\"destroy\":{\"failed\":\"Ha habido un error que ha impedido eliminar el campo personalizado\",\"success\":\"Campo personalizado eliminado correctamente\"},\"edit\":{\"instance_title\":\"Editar %{field_name} de %{instance_name}\",\"title\":\"Editar %{name}\"},\"form\":{\"confirm\":\"\u00BFEst\u00E1s seguro?\",\"crop\":\"Recortar\",\"multiple\":\"M\u00FAltiple\",\"type\":\"Opciones de contenido\"},\"index\":{\"instance_title\":\"Campos personalizados de %{instance_name}\",\"localized_custom_fields\":\"Campos traducibles\",\"new\":\"A\u00F1adir nuevo campo\",\"not_localized_custom_fields\":\"Campos no traducibles\",\"title\":\"Campos personalizados\"},\"new\":{\"instance_title\":\"Nuevo campo de %{instance_name}\",\"title\":\"Nuevo campo\"},\"new_option\":{\"cancel_new_option\":\"Cancelar\",\"create\":\"Crear opci\u00F3n\",\"new\":\"Nueva opci\u00F3n\"},\"numeric_options\":{\"currency\":\"Monetaria\",\"generic\":\"Gen\u00E9rica\",\"unit_type\":\"Tipo de unidad\"},\"options_form\":{\"add_option\":\"A\u00F1adir opci\u00F3n\"},\"plugin\":{\"budgets\":\"Presupuestos\",\"progress\":\"Progreso\",\"table\":\"Tabla\",\"type\":\"Tipo\"},\"plugin_configuration_form\":{\"configuration\":\"Configuraci\u00F3n\"},\"update\":{\"success\":\"Campo personalizado actualizado correctamente\"},\"vocabulary_select\":{\"vocabulary\":\"Vocabulario de opciones\"},\"vocabulary_type_select\":{\"multiple_select\":\"Selecci\u00F3n m\u00FAltiple\",\"single_select\":\"Selecci\u00F3n \u00FAnica\",\"tags\":\"Tags\",\"type\":\"Tipo\"}},\"forms\":{\"new_gallery_image\":{\"add_item\":\"A\u00F1adir imagen\",\"cancel_new_item\":\"Cancelar\"}},\"module_resources\":{\"index\":{\"custom_fields_for_instances_of\":\"Campos personalizados para instancias de %{name}\",\"empty\":\"De momento no hay ning\u00FAn modelo con campos personalizados habilitados\"}}},\"dynamic_content\":{\"form\":{\"add_child\":\"A\u00F1adir nuevo registro\",\"add_content_block\":\"A\u00F1adir nuevo bloque\",\"add_record\":\"A\u00F1adir\",\"attachment\":\"Adjunto\",\"attachment_file\":\"Archivo adjunto\",\"cancel_record\":\"Cancelar\",\"delete_content_block\":\"Eliminar bloque\",\"delete_content_block_confirm\":\"\u00BFEst\u00E1s seguro de querer eliminar este bloque?\",\"download_attachment\":\"Descargar adjunto\",\"edit_content_block\":\"Editar\",\"remove_attachment\":\"Eliminar adjunto\",\"save_record\":\"Guardar\"}},\"ordered_terms\":{\"create\":{\"success\":\"El t\u00E9rmino se ha creado correctamente.\"},\"destroy\":{\"destroy_failed\":\"El t\u00E9rmino no ha podido ser eliminado: %{validation_errors}\",\"success\":\"El t\u00E9rmino ha sido eliminado correctamente.\"},\"edit_modal\":{\"title\":\"Editar %{term}\"},\"form\":{\"placeholders\":{\"description\":\"Descripci\u00F3n del t\u00E9rmino\",\"external_id\":\"ID001\",\"name\":\"Nombre del t\u00E9rmino\",\"slug\":\"termino\"}},\"index\":{\"collapse_all\":\"Plegar todo\",\"explore\":\"Explora\",\"new\":\"Nuevo\",\"open_all\":\"Desplegar todo\",\"title\":\"T\u00E9rminos de %{vocabulary}\"},\"new_modal\":{\"title\":\"Nuevo t\u00E9rmino\"},\"terms_tree\":{\"delete_confirm\":\"\u00BFEst\u00E1s seguro? Esta operaci\u00F3n no es reversible\"},\"update\":{\"success\":\"El t\u00E9rmino se ha actualizado correctamente.\"}},\"terms\":{\"create\":{\"success\":\"El t\u00E9rmino se ha creado correctamente.\"},\"destroy\":{\"destroy_failed\":\"No puedes borrar un t\u00E9rmino mientras tenga elementos asociados.\",\"success\":\"El t\u00E9rmino ha sido eliminado correctamente.\"},\"edit\":{\"edit\":\"Editar %{term}\"},\"form\":{\"placeholders\":{\"description\":\"El caballo es un mam\u00EDfero herb\u00EDvoro\",\"name\":\"Caballo\",\"slug\":\"reino-animal-caballo\"}},\"index\":{\"delete_confirm\":\"\u00BFEst\u00E1s seguro? Esta operaci\u00F3n no es reversible\",\"header\":{\"description\":\"Descripci\u00F3n\",\"level\":\"Nivel\",\"name\":\"Nombre\",\"parent\":\"Padre\"},\"new\":\"Nuevo\",\"title\":\"T\u00E9rminos de %{vocabulary}\"},\"new\":{\"new\":\"Nuevo T\u00E9rmino\"},\"update\":{\"success\":\"El t\u00E9rmino se ha actualizado correctamente.\"}},\"vocabularies\":{\"create\":{\"success\":\"El vocabulario se ha creado correctamente.\"},\"destroy\":{\"destroy_failed\":\"El vocabulario no ha podido ser eliminado porque est\u00E1 siendo utilizado por alguna entidad\",\"success\":\"El vocabulario ha sido eliminado correctamente.\"},\"edit\":{\"edit\":\"Editar %{vocabulary}\"},\"edit_modal\":{\"title\":\"Editar %{vocabulary}\"},\"form\":{\"placeholders\":{\"name\":\"Reino animal\",\"slug\":\"reino_animal\"}},\"index\":{\"delete_confirm\":\"Seguro? Esta operaci\u00F3n no tiene marcha atr\u00E1s.\",\"header\":{\"name\":\"Tema\",\"terms\":\"T\u00E9rminos\"},\"new\":\"Nuevo\",\"title\":\"Vocabularios\",\"view_vocabulary\":\"Ver t\u00E9rminos\"},\"new\":{\"new\":\"Nuevo Vocabulario\"},\"new_modal\":{\"title\":\"Nuevo Vocabulario\"},\"show\":{\"created_at\":\"Creaci\u00F3n\",\"terms\":\"T\u00E9rminos\",\"terms_count\":\"%{count} t\u00E9rminos\"},\"update\":{\"success\":\"El vocabulario se ha actualizado correctamente.\"}}},\"gobierto_core\":{\"site_templates\":{\"create\":{\"success\":\"La plantilla se ha editado correctamente.\"},\"destroy\":{\"success\":\"La plantilla se ha borrado correctamente.\"},\"update\":{\"success\":\"La plantilla se ha actualizado correctamente.\"}},\"templates\":{\"edit\":{\"preview\":\"Previsualizar\",\"reset\":\"Resetear\",\"reset_title\":\"Descartar cambios guardados, y volver a la plantilla original (ojo, no podr\u00E1s recuperar la plantilla que hayas personalizado)\",\"save\":\"Guardar\"},\"index\":{\"edit_templates\":\"Editar plantillas\"}}},\"gobierto_dashboards\":{\"dashboards\":{\"destroy\":{\"success\":\"El dashboard ha sido eliminado correctamente.\"},\"list_modal\":{\"add\":\"A\u00F1adir\",\"new\":\"\u00BFNecesitas crear un nuevo dashboard?\",\"no_dashboards\":\"No hay dashboards\",\"title\":\"Selecciona el dashboard donde incluir este indicador\"}}},\"gobierto_data\":{\"configuration\":{\"settings\":{\"edit\":{\"api_settings\":\"Configuraci\u00F3n de la API\",\"db_config_placeholder\":\"{\\\\\"pool\\\\\":5, \\\\\"adapter\\\\\":\\\\\"postgresql\\\\\", \\\\\"database\\\\\":\\\\\"gobierto_test\\\\\", \\\\\"encoding\\\\\":\\\\\"unicode\\\\\", \\\\\"password\\\\\":\\\\\"gobierto\\\\\", \\\\\"username\\\\\":\\\\\"gobierto\\\\\"}\",\"frontend\":\"Interfaz p\u00FAblica\",\"frontend_enabled\":\"Visible\",\"title\":\"Configuraci\u00F3n\",\"update\":\"Actualizar\"},\"title\":\"Preferencias\",\"update\":{\"success\":\"Configuraci\u00F3n guardada correctamente\"}}},\"datasets\":{\"create\":{\"success\":\"El conjunto de datos ha sido creado correctamente.\"},\"destroy\":{\"success\":\"El conjunto de datos ha sido eliminado correctamente.\"},\"form\":{\"placeholders\":{\"name\":\"Habitantes\",\"slug\":\"habitantes\"}},\"index\":{\"header\":{\"name\":\"Nombre\",\"status\":\"Estado\",\"table_name\":\"Nombre de la tabla\"},\"new\":\"Nuevo\",\"title\":\"Conjuntos de datos\",\"view_dataset\":\"Ver conjunto de datos\"},\"new\":{\"title\":\"Nuevo conjunto de datos\"},\"update\":{\"success\":\"El conjunto de datos ha sido actualizado correctamente.\"}}},\"gobierto_investments\":{\"projects\":{\"create\":{\"success\":\"El proyecto ha sido creado correctamente.\"},\"destroy\":{\"success\":\"El proyecto ha sido eliminado correctamente.\"},\"form\":{\"placeholders\":{\"external_id\":\"ID001\",\"title\":\"Centro deportivo\"}},\"index\":{\"header\":{\"external_id\":\"ID externo\",\"title\":\"T\u00EDtulo\"},\"new\":\"Nuevo\",\"title\":\"Proyectos\",\"view_project\":\"Ver proyecto\"},\"new\":{\"title\":\"Nuevo proyecto\"},\"update\":{\"success\":\"El proyecto ha sido actualizado correctamente.\"}}},\"gobierto_observatory\":{\"configuration\":{\"settings\":{\"edit\":{\"title\":\"Configuraci\u00F3n del Observatorio\",\"update\":\"Actualizar\"},\"title\":\"Preferencias\",\"update\":{\"error\":\"Se ha producido un error al actualizar la configuraci\u00F3n: %{validation_errors}\",\"success\":\"Configuraci\u00F3n guardada correctamente\"}}}},\"gobierto_people\":{\"configuration\":{\"settings\":{\"edit\":{\"agendas\":\"Agendas\",\"blogs\":\"Blogs\",\"departments\":\"Departamentos\",\"gifts\":\"Obsequios\",\"interest_groups\":\"Grupos de inter\u00E9s\",\"invitations\":\"Invitaciones\",\"officials\":\"Personas\",\"placeholders\":{\"home_text_ca\":\"Texto home catal\u00E1n\",\"home_text_en\":\"Texto home ingl\u00E9s\",\"home_text_es\":\"Texto home espa\u00F1ol\"},\"political_groups_vocabulary\":\"Vocabulario de grupos pol\u00EDticos\",\"statements\":\"Declaraciones\",\"submodules_enabled\":\"Subm\u00F3dulos habilitados\",\"trips\":\"Viajes\",\"update\":\"Actualizar\"},\"update\":{\"error\":\"Ha ocurrido un error guardando las preferencias\",\"success\":\"Preferencias actualizadas correctamente\"}},\"title\":\"Configuraci\u00F3n\"},\"people\":{\"create\":{\"success_html\":\"El perfil ha sido creado correctamente. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVer la persona\\\\u003c/a\\\\u003e.\"},\"edit\":{\"title\":\"Editar persona\"},\"form\":{\"avatar_file_constraints\":\"Avatar de usuario (fichero de 500x500)\",\"bio_file_constraints\":\"Adjuntar fichero (PDF)\",\"category\":{\"executive\":\"Directivo\",\"politician\":\"Pol\u00EDtico\"},\"crop\":\"Recortar\",\"party\":{\"government\":\"Equipo de Gobierno\",\"opposition\":\"Oposici\u00F3n\"},\"placeholders\":{\"charge\":\"Alcalde\",\"email\":\"Correo-e\",\"name\":\"Rafael Garc\u00EDa\"}},\"index\":{\"configuration\":\"Configuraci\u00F3n\",\"drag_to_sort\":\"Arrastra para ordenar\",\"header\":{\"charge\":\"Position\",\"events\":\"Eventos\",\"person\":\"Persona\",\"posts\":\"Posts\",\"statements\":\"Declaraciones\",\"status\":\"Estado\"},\"new\":\"Nueva persona\",\"no_permissions\":\"No tienes permisos para editar esta persona. Si la necesitas editar, habla con tu administrador\",\"title\":\"Personas\",\"view_person\":\"Ver persona\",\"visibility_level\":{\"active\":\"Publicada\",\"draft\":\"Borrador\"}},\"navigation\":{\"agenda\":\"Agenda\",\"person\":\"Persona\",\"posts\":\"Blog\",\"statements\":\"Declaraciones\"},\"new\":{\"title\":\"Nueva persona\"},\"person_events\":{\"index\":{\"title\":\"Agenda\"}},\"person_posts\":{\"create\":{\"success_html\":\"El post ha sido creado correctamente. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVer el post\\\\u003c/a\\\\u003e.\"},\"edit\":{\"title\":\"Editar post\"},\"form\":{\"placeholders\":{\"tags\":\"personal, sobre mi, mi carrera\",\"title\":\"Sobre m\u00ED\"}},\"index\":{\"header\":{\"date\":\"Fecha\",\"status\":\"Estado\",\"tags\":\"Tags\",\"title\":\"T\u00EDtulo\"},\"new\":\"Nuevo post\",\"title\":\"Blog\",\"view_post\":\"Ver post\",\"visibility_level\":{\"active\":\"Publicado\",\"draft\":\"Borrador\"}},\"new\":{\"title\":\"Nuevo post\"},\"update\":{\"success_html\":\"El post ha sido actualizado. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVer el post\\\\u003c/a\\\\u003e.\"}},\"person_statements\":{\"create\":{\"success_html\":\"La declaraci\u00F3n ha sido creada correctamente. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVer la declaraci\u00F3n\\\\u003c/a\\\\u003e.\"},\"edit\":{\"title\":\"Editar declaraci\u00F3n\"},\"form\":{\"placeholders\":{\"title\":\"Declaraci\u00F3n de Bienes y Actividades\"}},\"index\":{\"header\":{\"date\":\"Fecha\",\"statement\":\"Declaraci\u00F3n\",\"status\":\"Estado\"},\"new\":\"Nueva declaraci\u00F3n\",\"title\":\"Declaraciones\",\"view_statement\":\"Ver declaraci\u00F3n\",\"visibility_level\":{\"active\":\"Publicada\",\"draft\":\"Borrador\"}},\"new\":{\"title\":\"Nueva declaraci\u00F3n\"},\"update\":{\"success_html\":\"La declaraci\u00F3n ha sido actualizada. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVer la declaraci\u00F3n\\\\u003c/a\\\\u003e.\"}},\"update\":{\"success_html\":\"El perfil ha sido actualizado. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVer la persona\\\\u003c/a\\\\u003e.\"}},\"settings\":{\"title\":\"Preferencias\"}},\"gobierto_plans\":{\"admin_mailer\":{\"project_attributes_changed\":{\"bye\":\"Saludos\",\"edition_change\":\"el contenido\",\"hi\":\"Hola\",\"intro_html\":\"%{author_name} ha actualizado %{updates_list} en el proyecto %{project_link} del plan %{plan_title}.\",\"minor_change_notice\":\"El cambio se ha guardado como menor con lo que no se ha creado una nueva versi\u00F3n.\",\"moderation_stage_change\":\"el estado de moderaci\u00F3n a %{value}\",\"subject\":\"Se ha modificado un proyecto en el plan %{plan_title} de %{site_name}\",\"subject_with_changes\":\"Se ha modificado un proyecto en el plan %{plan_title} de %{site_name} a %{changes}\",\"visibility_level_change\":\"el estado de publicaci\u00F3n a %{value}\",\"visibility_levels\":{\"draft\":\"No publicado\",\"published\":\"Publicado\"}},\"project_created\":{\"bye\":\"Saludos\",\"hi\":\"Hola\",\"intro_html\":\"%{author_name} ha creado un nuevo proyecto %{project_link} en el plan %{plan_title}\",\"subject\":\"Se ha creado un proyecto en el plan %{plan_title} de %{site_name}\"},\"project_deleted\":{\"bye\":\"Saludos\",\"hi\":\"Hola\",\"intro_html\":\"%{author_name} ha eliminado el proyecto %{project_name} del plan %{plan_link}\",\"subject\":\"Se ha eliminado un proyecto del plan %{plan_title} de %{site_name}\"}},\"categories\":{\"calculated_headers\":{\"items\":\"\u00CDtems\",\"progress\":\"Progreso\"},\"create\":{\"success\":\"La categor\u00EDa se ha creado correctamente.\"},\"destroy\":{\"destroy_failed\":\"La categor\u00EDa no ha podido ser eliminada porque tiene proyectos u otros recursos asociados.\",\"success\":\"La categor\u00EDa ha sido eliminada correctamente.\"},\"index\":{\"progress_excluded_nodes_explanation\":\"Se han descartado algunos proyectos del c\u00E1lculo por tener alguno de los siguientes estados excluidos: %{statuses}\"},\"plan_summary\":{\"global_progress\":\"Progreso global\",\"projects\":\"Proyectos\"},\"update\":{\"success\":\"La categor\u00EDa se ha actualizado correctamente.\"}},\"dashboards\":{\"index\":{\"headers\":{\"status\":\"Visibilidad\",\"title\":\"T\u00EDtulo\",\"updated\":\"Actualizado\"},\"new\":\"Nuevo\",\"visibility_level\":{\"active\":\"P\u00FAblico\",\"draft\":\"Privado\"}}},\"plan_types\":{\"create\":{\"success\":\"El tipo de plan ha sido creado correctamente.\"},\"destroy\":{\"has_items\":\"No puedes archivar un tipo de plan mientras tenga elementos asociados.\",\"success\":\"El tipo de plan ha sido eliminado correctamente\"},\"edit\":{\"title\":\"Editar tipo de plan\"},\"form\":{\"placeholders\":{\"name\":\"Nombre del tipo de plan\",\"slug\":\"acerca-de-este-tipo-de-plan\"}},\"index\":{\"delete\":\"Borrar\",\"header\":{\"type\":\"Tipo\"},\"new\":\"Nuevo\",\"title\":\"Tipos de planes\"},\"new\":{\"title\":\"Nuevo tipo de plan\"},\"update\":{\"success\":\"El tipo de plan ha sido actualizado correctamente.\"}},\"plans\":{\"create\":{\"success_html\":\"El plan ha sido creado correctamente. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVer el plan\\\\u003c/a\\\\u003e.\"},\"delete_contents\":{\"success\":\"Los proyectos del plan han sido correctamente eliminados\",\"term_deletion_failed_html\":\"El t\u00E9rmino \\\\\"%{term}\\\\\" del vocabulario \\\\\"%{vocabulary}\\\\\" no puede ser borrado: %{message}\"},\"destroy\":{\"success\":\"El plan ha sido eliminado correctamente.\"},\"edit\":{\"title\":\"Configuraci\u00F3n\"},\"form\":{\"delete_contents\":\"Borrar proyectos de este plan\",\"delete_contents_confirm\":\"Confirma que quieres borrar los proyectos de este plan\",\"export_csv\":\"Exportar a CSV\",\"import_csv\":\"Importar desde CSV\",\"indicators\":\"Indicadores\",\"placeholders\":{\"configuration_data\":\"{ \\\\\"open_node\\\\\": true }\",\"css\":\".gobierto_planification section.level_0 .cat_1 { background-color: rgba(0, 191, 255, 0.95); }\",\"footer\":\"Pie de p\u00E1gina del plan\",\"introduction\":\"Introducci\u00F3n del plan\",\"slug\":\"acerca-de-este-plan\",\"title\":\"T\u00EDtulo del plan\",\"year\":2018},\"projects\":\"Proyectos\",\"publish_last_version_automatically\":\"Publicar las versiones nuevas de los proyectos autom\u00E1ticamente\"},\"import_csv\":{\"defaults\":{\"category\":{\"one\":\"elemento de nivel %{level}\",\"other\":\"elementos de nivel %{level}\"},\"project\":{\"one\":\"proyecto\",\"other\":\"proyectos\"}},\"latest_update\":\"\u00DAltima actualizaci\u00F3n: %{datetime}\",\"no_data\":\"Ning\u00FAn dato cargado todav\u00EDa\",\"there_are\":\"Hay %{info}\",\"title\":\"Importar CSV\"},\"import_csv_form\":{\"confirm_import\":\"\u00BFEst\u00E1s seguro?\",\"custom_fields_table_plugin\":\"Campos personalizados (plugin de tabla)\",\"disable_with\":\"Cargando...\",\"more_info_html\":\"Para obtener m\u00E1s informaci\u00F3n visita la documentaci\u00F3n de c\u00F3mo \\\\u003ca href=\\\\\"%{url}\\\\\" target=\\\\\"_blank\\\\\"\\\\u003eImportar datos de un plan\\\\u003c/a\\\\u003e.\",\"plan_content\":\"Contenido del plan\",\"submit\":\"Importar desde fichero CSV\",\"vocabulary_used_by_other_plans\":\"El vocabulario configurado para este plan ya est\u00E1 configurado para alg\u00FAn otro. Por favor, crea un vocabulario nuevo para este plan o elim\u00EDnalo de la configuraci\u00F3n de los otros planes que lo est\u00E9n usando, dado que se borrar\u00EDan sus datos con la importaci\u00F3n.\",\"warning\":\"\\\\u003cstrong\\\\u003eAviso\\\\u003c/strong\\\\u003e Al importar desde un archivo CSV, si el plan est\u00E1 vac\u00EDo se a\u00F1adir\u00E1n t\u00E9rminos a los vocabularios asociados con categor\u00EDas y campos personalizados a medida que se encuentren, pero si el plan ya contiene datos, al tratarse de una actualizaci\u00F3n, se producir\u00E1n errores para los t\u00E9rminos que no se encuentren en los respectivos vocabularios.\"},\"import_data\":{\"missing_file\":\"Es necesario seleccionar un fichero para la importaci\u00F3n.\",\"success_html\":\"Datos importados correctamente. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVer el plan\\\\u003c/a\\\\u003e.\"},\"index\":{\"header\":{\"elements\":\"Elementos\",\"status\":\"Estado\",\"title\":\"T\u00EDtulo\",\"type\":\"Tipo\",\"year\":\"A\u00F1o\"},\"new\":\"Nuevo\",\"title\":\"Planes\",\"types\":\"Tipos\",\"view_plan\":\"Ver plan\",\"visibility_level\":{\"draft\":\"Borrador\",\"published\":\"Publicado\"}},\"new\":{\"title\":\"Nuevo plan\"},\"recover\":{\"success\":\"El plan ha sido recuperado correctamente.\"},\"update\":{\"success_html\":\"El plan ha sido actualizado correctamente. \\\\u003ca href=\\\\\"%{link}\\\\\"\\\\u003eVer el plan\\\\u003c/a\\\\u003e.\"}},\"projects\":{\"create\":{\"success\":\"El proyecto ha sido creado correctamente.\"},\"destroy\":{\"success\":\"El proyecto ha sido eliminado correctamente.\"},\"filter_form\":{\"author\":\"Autor\",\"category\":\"Categor\u00EDa\",\"clear_filters\":\"Limpiar filtros\",\"filter\":\"Filtrar\",\"interval\":\"Rango de fechas\",\"progress\":\"Progreso\",\"search\":\"Busca...\",\"status\":\"Estado\",\"submit\":\"Filtrar\"},\"filters_row\":{\"all\":\"Todos\",\"moderation_stage\":\"Moderaci\u00F3n\",\"moderation_stage_value\":{\"approved\":\"Aprobados\",\"blank\":\"Sin moderaci\u00F3n\",\"in_review\":\"En revisi\u00F3n\",\"rejected\":\"Rechazados\",\"sent\":\"Enviados\",\"unsent\":\"No enviados\"},\"total\":\"Total\",\"versions_visibility_level\":\"Publicaci\u00F3n\",\"versions_visibility_level_value\":{\"draft\":\"Borrador\",\"published_up_to_date\":\"Publicado actualizado\",\"published_with_unpublished_changes\":\"Publicado con cambios sin publicar\"}},\"find_versioned_project\":{\"unavailable_version\":\"Versi\u00F3n no disponible.\"},\"form\":{\"button\":{\"add_dashboard\":\"A\u00F1adir a un dashboard\"},\"placeholders\":{\"name\":\"T\u00EDtulo del proyecto\"}},\"index\":{\"headers\":{\"progress\":\"Progreso\",\"project\":\"Proyecto\",\"status\":\"Estado\",\"updated\":\"Actualizado\",\"visibility_level\":\"Publicaci\u00F3n\"},\"new\":\"Nuevo\",\"title\":\"Proyectos de %{name}\",\"view\":\"Ver item\"},\"new\":{\"title\":\"Nuevo proyecto\"},\"publish\":{\"confirm\":\"Vas a publicar este proyecto, por lo que cualquier usuario podr\u00E1 verlo.\",\"error\":\"El proyecto no se ha podido publicar.\",\"success\":\"El proyecto ha sido publicado correctamente.\"},\"send\":{\"confirm\":\"Vas a enviar este proyecto a un moderador para su validaci\u00F3n.\"},\"unpublish\":{\"error\":\"El proyecto no se ha podido despublicar.\",\"success\":\"El proyecto ha sido despublicado correctamente.\"},\"update\":{\"moderation_reset\":\"Debido a que has modificado el proyecto y no tienes permisos de moderaci\u00F3n su estado ha sido movido a No enviado.\",\"no_changes\":\"No se han producido cambios en el proyecto. Manteniendo la versi\u00F3n actual.\",\"success\":\"El proyecto ha sido actualizado correctamente.\",\"suggest_unpublish_html\":\"El proyecto est\u00E1 sin aprobar pero publicado. \\\\u003ca rel=\\\\\"nofollow\\\\\" data-method=\\\\\"post\\\\\" href=\\\\\"%{url}\\\\\"\\\\u003eDespublicar\\\\u003c/a\\\\u003e.\"}},\"shared\":{\"navigation\":{\"configuration_tab\":\"Configuraci\u00F3n\",\"dashboards_tab\":\"Dashboards\",\"plan_terms_tab\":\"Plan\",\"projects_tab\":\"Proyectos\"}}},\"gobierto_visualizations\":{\"configuration\":{\"settings\":{\"edit\":{\"title\":\"Configuraci\u00F3n de las Visualizaciones\",\"update\":\"Actualizar\"},\"title\":\"Preferencias\",\"update\":{\"error\":\"Se ha producido un error al actualizar la configuraci\u00F3n: %{validation_errors}\",\"success\":\"Configuraci\u00F3n guardada correctamente\"}}}},\"layouts\":{\"application\":{\"admin_dropdown\":{\"account\":\"Tu cuenta\",\"sign_out\":\"Cerrar sesi\u00F3n\"},\"calendars\":\"Agendas\",\"cms\":\"CMS\",\"collapse_menu\":\"Colapsar men\u00FA\",\"custom_fields\":\"Campos personalizados\",\"dirty_forms\":{\"message\":\"Hay cambios sin guardar. \u00BFEst\u00E1s seguro de querer continuar?\"},\"edit_site\":\"Personalizar sitio\",\"file_attachments\":\"Documentos\",\"global\":\"General\",\"hey_admin\":\"Hola, %{admin_name}\",\"manage_sites\":\"Gestionar sites\",\"modules\":{\"budgets\":\"Presupuestos\",\"data\":\"Datos\",\"investments\":\"Inversiones\",\"observatory\":\"Observatorio\",\"people\":\"Altos cargos y Agendas\",\"plans\":\"Planes\",\"visualizations\":\"Visualizaciones\"},\"notifications\":\"Notificaciones\",\"site_network\":\"Red\",\"templates\":\"Plantillas\",\"users\":\"Usuarios\",\"view_documentation\":\"Ver documentaci\u00F3n\",\"view_item\":\"Ver \u00EDtem\",\"view_site\":\"Ver site\",\"vocabularies\":\"Vocabularios\"}},\"module_helper\":{\"not_enabled\":\"No est\u00E1s autorizado a realizar esta acci\u00F3n\"},\"session_helper\":{\"already_signed_in\":\"Ya est\u00E1s identificado\",\"not_authorized\":\"No est\u00E1s autorizado a realizar esta acci\u00F3n\",\"not_signed_in\":\"Necesitas estar identificado para continuar\"},\"sessions\":{\"create\":{\"error\":\"Los datos que has introducido no parecen ser v\u00E1lidos. Por favor, int\u00E9ntalo de nuevo.\",\"success\":\"Sesi\u00F3n iniciada correctamente\"},\"destroy\":{\"success\":\"Sesi\u00F3n cerrada correctamente\"},\"form\":{\"email\":\"Email\",\"password\":\"Contrase\u00F1a\",\"submit\":\"Enviar\"},\"new\":{\"forgot_your_password\":\"\u00BFOlvidaste tu contrase\u00F1a?\",\"title\":\"Iniciar sesi\u00F3n\"}},\"shared\":{\"admin_widget_attachment\":{\"add_new_document\":\"A\u00F1ade nuevo documento\",\"attachments\":\"Documentos\",\"copy_to_clipboard\":\"Copiar URL\",\"description\":\"Descripci\u00F3n\",\"document\":\"Documento\",\"document_title\":\"T\u00EDtulo del documento\",\"drag_document_here\":\"Arrastra y suelta el documento aqu\u00ED\",\"edit_document\":\"Editar documento\",\"include_file\":\"Incluir archivo\",\"include_in_text\":\"Incluir archivo en el texto\",\"latest_documents\":\"\u00DAltimos documentos a\u00F1adidos\",\"no_docs\":\"No hay documentos\",\"or\":\"o\",\"save\":\"Guardar\",\"search\":\"Buscar\",\"select_file\":\"Selecciona un archivo del disco duro\"},\"archive\":{\"confirm\":\"\u00BFSeguro que quieres archivar este elemento? No se mostrar\u00E1 en el front ni en listas como esta. Usted podr\u00E1 recuperarlo.\",\"element\":\"Archivar este elemento\",\"elements\":\"Elementos archivados\"},\"draft\":\"Borrador\",\"form_locale_switchers\":{\"define_content_in_locale\":\"Define el contenido en su versi\u00F3n %{locale_name}\",\"translate\":\"Traducir\"},\"moderation_save_widget\":{\"change_moderation_status\":\"Cambiar estado de moderaci\u00F3n\",\"confirm\":\"\u00BFEst\u00E1s seguro?\",\"confirm_moderation_blocked_update\":\"\u00BFEst\u00E1s seguro? Si guardas modificaciones en este proyecto el estado se actualizar\u00E1 a No enviado.\",\"edit_version\":\"Editando versi\u00F3n\",\"last_versions\":\"\u00DAltimas versiones\",\"minor_change\":\"Cambio menor (no guarda versi\u00F3n)\",\"moderation\":\"Moderaci\u00F3n\",\"moderation_info\":{\"new\":\"Una vez guardes tu contenido, podr\u00E1s enviarlo a moderaci\u00F3n.\",\"publicable\":\"Haz click en Publicar para que esta versi\u00F3n sea visible publicamente.\",\"publicable_html\":\"Haz click en Publicar para que esta versi\u00F3n sea visible publicamente.\",\"published\":\"La versi\u00F3n actual es la que est\u00E1 publicada.\",\"published_html\":\"La versi\u00F3n actual es la que est\u00E1 publicada. \\\\u003ca rel=\\\\\"nofollow\\\\\" data-method=\\\\\"post\\\\\" href=\\\\\"%{url}\\\\\"\\\\u003eDespublicar\\\\u003c/a\\\\u003e.\",\"rejected\":\"La versi\u00F3n est\u00E1 rechazada.\",\"sent\":\"Tu contenido ha sido enviado para revisi\u00F3n. Recibir\u00E1s una notificaci\u00F3n cuando se apruebe o te soliciten cambios.\",\"unsent\":\"Cuando tu contenido est\u00E9 listo para ser revisado por un moderador, haz click en Enviar.\"},\"moderation_status\":{\"approved\":\"Aprobado\",\"in_review\":\"En revisi\u00F3n\",\"rejected\":\"Rechazado\",\"sent\":\"Enviado\",\"unsent\":\"No enviado\"},\"new_version\":\"Nueva (no guardada)\",\"preview\":\"Previsualizar\",\"previous_versions\":\"Versiones anteriores\",\"publication_status\":{\"approved\":\"Publicada\",\"not_published\":\"No publicada\"},\"publish\":\"Publicar\",\"publish_last_version_automatically\":\"Publica autom\u00E1ticamente esta versi\u00F3n\",\"publish_status\":\"Estado\",\"published_version\":\"Versi\u00F3n publicada\",\"published_version_blank\":\"sin publicar todav\u00EDa\",\"save\":\"Guardar\",\"see_all\":\"ver todas\",\"send\":\"Enviar\",\"unpublish\":\"Despublicar\"},\"module\":\"M\u00F3dulo\",\"recover\":{\"confirm\":\"Si recuperas un elemento, se volver\u00E1 a listar de nuevo.\",\"element\":\"Recuperar elemento\"},\"resource_admin_permissions_button\":{\"permissions\":\"Permisos\"},\"save_widget\":{\"save\":\"Guardar\",\"visibility_level\":{\"active\":\"P\u00FAblico\",\"draft\":\"Borrador\",\"published\":\"P\u00FAblico\"}}},\"sites\":{\"create\":{\"success\":\"El sitio se ha creado correctamente\"},\"destroy\":{\"success\":\"El sitio se ha eliminado correctamente\"},\"edit\":{\"title\":\"Personalizar sitio\"},\"form\":{\"admin_authentication_modules\":\"Estrategias de autenticaci\u00F3n para admins\",\"authentication_modules\":\"Estrategias de autenticaci\u00F3n para usuarios\",\"hints\":{\"domain\":{\"a_record\":\"Entrada A a %{target}\",\"cname_record\":\"Entrada CNAME a %{target}\",\"if_domain\":\"Si es un dominio\",\"if_subdomain\":\"Si es un subdominio\",\"instructions\":\"Importante: este dominio deber\u00E1 estar creado previamente para que el sitio funcione correctamente.\"},\"organization_id_html\":\"Puedes buscar el c\u00F3digo \\\\u003ca href=\\\\\"https://populatetools.github.io/ine-places/places.html\\\\\" target=\\\\\"_blank\\\\\"\\\\u003een esta tabla\\\\u003c/a\\\\u003e.\"},\"modules_enabled\":\"M\u00F3dulos activados para este sitio\",\"password\":\"Contrase\u00F1a\",\"placeholders\":{\"domain\":\"gobierto.burjassot.es\",\"google_analytics_id\":\"UA-000000-01\",\"name\":\"Ayuntamiento de Burjassot\",\"organization_name\":\"Burjassot\",\"populate_data_api_token\":\"Token de API de Populate Data\",\"reply_to_email\":\"contacto@correo.es\",\"title\":\"Transparencia y Participaci\u00F3n\"},\"registration\":\"Registro de usuarios\",\"registration_disabled\":\"Deshabilitar el registro (solo oculta los enlaces al registro/login)\",\"username\":\"Nombre de usuario\",\"visibility_level\":{\"active\":\"Publicado\",\"draft\":\"Borrador\"}},\"index\":{\"configuration\":\"Configuraci\u00F3n\",\"header\":{\"created_at\":\"Creado\",\"domain\":\"Dominio\",\"site\":\"Sitio\",\"status\":\"Estado\"},\"new\":\"Crear sitio\",\"title\":\"Sites\",\"view_site\":\"Ver sitio\"},\"new\":{\"title\":\"Crear sitio\"},\"pages\":\"P\u00E1ginas\",\"sections\":\"Secciones\",\"update\":{\"success\":\"El sitio se ha actualizado correctamente\"}},\"users\":{\"edit\":{\"title\":\"Editar Usuario\"},\"form\":{\"change_password\":\"Cambiar contrase\u00F1a\",\"password_block\":\"Contrase\u00F1a\",\"placeholders\":{\"email\":\"fgonzalez@gmail.com\",\"name\":\"Fernando Gonz\u00E1lez\"},\"resend_welcome_email\":\"Reenviar Email de bienvenida\",\"resend_welcome_email_notes\":\"con enlace para cambiar la contrase\u00F1a\"},\"index\":{\"admins_section\":\"Administradores\",\"census_configuration\":\"Censo\",\"header\":{\"created_at\":\"Creado\",\"email\":\"Email\",\"last_sign_in_at\":\"\u00DAltimo login\",\"user\":\"Usuario\",\"verified\":\"Verificado\"},\"title\":\"Usuarios\",\"users\":{\"one\":\"%{count} usuario\",\"other\":\"%{count} usuarios\"},\"users_confirmed\":{\"one\":\"%{count}% confirmado\",\"other\":\"%{count}% confirmados\"},\"users_verified\":{\"one\":\"%{count}% verificado\",\"other\":\"%{count}% verificados\"},\"view_user\":\"Ver Usuario\"},\"passwords\":{\"create\":{\"error\":\"Hubo un problema al cambiar la contrase\u00F1a del usuario\",\"success\":\"La contrase\u00F1a del usuario fue cambiada con \u00E9xito\"},\"form\":{\"submit\":\"Enviar\"},\"new\":{\"title\":\"Cambiar contrase\u00F1a de usuario\"}},\"session_information\":{\"created_at\":\"Creado\",\"last_sign_in\":\"\u00DAltimo login\",\"site\":\"Sitio\"},\"update\":{\"success\":\"El Usuario ha sido actualizado correctamente\"},\"welcome_messages\":{\"create\":{\"error\":\"El mensaje de bienvenida no pudo ser enviado. Por favor, int\u00E9ntalo de nuevo.\",\"success\":\"El mensaje de bienvenida se ha enviado\"}}},\"welcome\":{\"index\":{\"title\":\"Inicio\"}}},\"gobierto_attachments\":{\"events\":{\"gobierto_attachments_attachment_created\":\"Documento creado\",\"gobierto_attachments_attachment_updated\":\"Documento actualizado\"}},\"gobierto_budgets\":{\"budget_lines\":{\"explorer\":{\"examples\":\"Ejemplos\",\"expenses\":\"Gastos\",\"explore_the_detail\":\"Explora el detalle\",\"income\":\"Ingresos\",\"search\":\"Busca\",\"search_budget_line\":\"Busca una partida espec\u00EDfica\"},\"index\":{\"amount\":\"Cantidad\",\"budget_guide_pitch\":\"Consulta la Gu\u00EDa del Presupuesto\",\"budget_line\":\"Partida\",\"categories\":\"Categor\u00EDas presupuestarias\",\"custom\":\"Personalizada\",\"expense_in_what\":\"En qu\u00E9 se gasta\",\"expense_to_do_what\":\"Para qu\u00E9 se gasta\",\"help\":\"Te explicamos como funciona un presupuesto municipal\",\"income_from_what\":\"En qu\u00E9 se ingresa\",\"per_inhabitant\":\"Por habitante\",\"title\":\"Presupuestos municipales en %{year}\"},\"show\":{\"about_this_line\":\"Acerca de esta partida\",\"avg_province\":\"Media %{kind} provincial\",\"avg_province_tooltip\":\"Media de esta partida en los municipios de la provincia\",\"back_to_parent\":\"Volver a la partida padre\",\"budget_line_category\":\"Categor\u00EDa\",\"budget_line_percentage\":\"Porcentaje\",\"budget_line_value\":\"Cantidad\",\"budget_lines_distribution\":\"Distribuci\u00F3n de los gastos de esta partida\",\"current_amount\":\"Presupuesto actual\",\"current_amount_per_inhabitant\":\"Presupuesto actual / hab.\",\"evolution\":\"Evoluci\u00F3n\",\"give_your_opinion\":\"Opina sobre esta partida\",\"give_your_opinion_cta\":\"\u00BFEntiendes de qu\u00E9 va esta partida? \u00BFTe parece mucho, poco? Opina\",\"initial_estimate\":\"Presupuesto inicial\",\"last_year\":\"El a\u00F1o pasado %{value}\",\"no_description\":\"No hay una descripci\u00F3n asociada a esta partida.\",\"no_distribution\":\"No hay distribuci\u00F3n asociada a esta partida.\",\"no_more_descendants\":\"No hay m\u00E1s subpartidas\",\"not_available\":\"No disp.\",\"percentage\":\"% sobre el total del pres.\",\"percentage_tooltip\":\"Porcentaje del presupuesto total que supone esta partida\",\"planned\":\"presupuestado\",\"planned_female\":\"presupuestada\",\"planned_per_inhabitant\":\"Presupuesto inicial / hab.\",\"planned_per_inhabitant_tooltip\":\"Cantidad presupuestada dividida por el n\u00FAmero de habitantes\",\"planned_tooltip\":\"Cantidad presupuestada\",\"raise_hand\":\"Levanta la mano\",\"real_value\":\"El %{kind} real son %{value}\",\"real_vs_planned\":\"% ejecuci\u00F3n\",\"real_vs_planned_tooltip\":\"Porcentaje de la partida que se ha ejecutado\",\"sub_budget_lines\":\"Dentro de esta partida\",\"twitter_text_expense\":\"En @gobierto: Gasto municipal de %{name} en %{budget_line_name} para el %{year}\",\"twitter_text_income\":\"En @gobierto: Ingreso municipal de %{name} en %{budget_line_name} para el %{year}\",\"updated\":\"actualizado\",\"updated_female\":\"actualizada\",\"vs_previous_year\":\"vs. ejercicio anterior\",\"vs_previous_year_tooltip\":\"Comparaci\u00F3n con los datos del ejercicio anterior\"}},\"budgets\":{\"guide\":{\"budget_execution\":\"La ejecuci\u00F3n presupuestaria\",\"budget_execution_p1_html\":\"Aprobar un presupuesto no significa que se quede escrito en piedra. A lo largo del a\u00F1o surgen imprevistos que cambian la cantidad o la finalidad de los gastos. Estos cambios se anotan en otro documento: la \\\\u003ca href=/presupuestos/ejecucion/%{year}\\\\\"\\\\u003eejecuci\u00F3n presupuestaria\\\\u003c/a\\\\u003e.\",\"budget_execution_p2\":\"Para saber si nuestro ayuntamiento ha planificado bien las cuentas s\u00F3lo tenemos que comparar el presupuesto y la ejecuci\u00F3n: \u00BFHa gastado m\u00E1s de lo presupuestado, le ha sobrado dinero o se ha ajustado a lo previsto?.\",\"capital_income\":\"Ingresos de capital\",\"capital_income_p1\":\"Proceden de la venta de propiedades municipales como solares o fincas. Tambi\u00E9n pueden proceder de fondos europeos.\",\"classification\":\"Clasificaci\u00F3n presupuestaria\",\"classification_p1\":\"Todo presupuesto tiene ingresos y los gastos. Los ingresos est\u00E1n clasificados de una manera econ\u00F3mica, que establece su origen. Los gastos, por otra parte, son funcionales y econ\u00F3micos.\",\"debt\":\"Deuda viva: Cu\u00E1nto debe tu municipio\",\"description\":\"El presupuesto municipal es el documento que explica c\u00F3mo se gestiona el dinero p\u00FAblico durante un a\u00F1o. Aqu\u00ED te explicamos los conceptos m\u00E1s importantes para que no te pierdas en su lectura.\",\"economic\":\"Gasto econ\u00F3mico\",\"economic_p1\":\"Indica la naturaleza del gasto. Por ejemplo, \u201CGastos de personal\u201D, que engloba los sueldos de todos los funcionarios seg\u00FAn su categor\u00EDa. Es similar a la clasificaci\u00F3n econ\u00F3mica de los ingresos.\",\"economic_p2\":\"En un presupuesto oficial, los apartados principales se llaman cap\u00EDtulos. Y a su vez, cada cap\u00EDtulo se divide en art\u00EDculos, conceptos y subconceptos.\",\"execution\":\"Ejecuci\u00F3n presupuestaria\",\"expense_economic_1_desc\":\"Sueldos de funcionarios, indemnizaciones, cotizaciones y planes de pensiones para todo el personal contratado.\",\"expense_economic_2_desc\":\"Suministros, materiales y gastos de servicios o trabajos realizados por empresas ajenas contratadas.\",\"expense_economic_3_desc\":\"Pago de intereses derivados de operaciones financieras.\",\"expense_economic_4_desc\":\"Aportaciones a otras entidades o administraciones (estatales, auton\u00F3micas o empresas privadas) para financiar operaciones corrientes.\",\"expense_economic_5_desc\":\"Son fondos que cubren situaciones de emergencia y gastos no previstos.\",\"expense_economic_6_desc\":\"Creaci\u00F3n de nuevos equipamientos o infraestructuras y adquisici\u00F3n de bienes inventariables.\",\"expense_economic_7_desc\":\"Pago de cr\u00E9ditos para financiar operaciones de capital, que hayan financiado inversiones reales.\",\"expense_economic_8_desc\":\"Adquisici\u00F3n de activos financieros para la construcci\u00F3n de dep\u00F3sitos y fianzas exigidos.\",\"expense_economic_9_desc\":\"Pago de amortizaci\u00F3n de pasivos financieros (como por ejemplo, la deuda).\",\"expense_functional_0_desc\":\"Esta partida se destina a pagar la deuda acumulada por el ayuntamiento.\",\"expense_functional_1_desc\":\"Esta partida cubre las necesidades m\u00EDnimas y obligatorias de un municipio.\",\"expense_functional_2_desc\":\"Es el dinero que se destina a la prevenci\u00F3n y la asistencia. Por ejemplo, el fomento del empleo.\",\"expense_functional_3_desc\":\"Afecta a los servicios que mejoran la calidad de vida: sanidad, educaci\u00F3n, cultura y ocio.\",\"expense_functional_4_desc\":\"Aqu\u00ED entra lo que ayuda a desarrollar el potencial de los distintos sectores econ\u00F3micos.\",\"expense_functional_9_desc\":\"Aqu\u00ED se agrupan los gastos del propio ayuntamiento y dem\u00E1s organismos p\u00FAblicos.\",\"expenses\":\"Gastos\",\"expenses_how\":\"\u00BFC\u00F3mo usa el ayuntamiento el dinero de todos los vecinos? Los gastos se pueden clasificar de dos formas: desde el punto de vista funcional (en qu\u00E9 se gasta) y econ\u00F3mico (c\u00F3mo se gasta).\",\"expenses_per_inhabitant\":\"El gasto por habitante fue de...\",\"expenses_types\":\"Tipos de gasto\",\"expenses_types_p1\":\"\u00BFC\u00F3mo usa el ayuntamiento el dinero de todos los vecinos? Aqu\u00ED se detalla todo. Los gastos se pueden clasificar de dos formas: desde el punto de vista funcional (en qu\u00E9 se gasta) y econ\u00F3mico (c\u00F3mo se gasta). La cantidad de dinero es la misma, pero la vemos desde dos \u00E1ngulos.\",\"financial_income\":\"Ingresos financieros\",\"financial_income_p1\":\"Pueden ser dep\u00F3sitos bancarios inmovilizados o cr\u00E9ditos concedidos por entidades privadas, como bancos o aseguradoras.\",\"functional\":\"Gasto funcional\",\"functional_p1\":\"Es la m\u00E1s explicativa: nos dice, por ejemplo, cu\u00E1nto se gasta en la recogida de basura o en instalaciones deportivas. Tambi\u00E9n se la conoce como clasificaci\u00F3n por partidas de gasto.\",\"functional_p2\":\"En un presupuesto oficial se divide en \u00E1reas, y \u00E9stas a su vez en pol\u00EDticas, grupos y programas. Este nivel de profundidad permite saber con detalle a d\u00F3nde va el dinero.\",\"how_much_debt\":\"\u00BFCu\u00E1nto debe tu municipio?\",\"how_much_debt_p1\":\"La deuda viva de un municipio indica lo que debe el ayuntamiento a los bancos y otras entidades financieras. No hay que confundirla con el total del d\u00E9ficit del municipio (la diferencia entre los ingresos y los gastos).\",\"how_much_debt_p2\":\"La deuda viva s\u00F3lo incluye lo que se debe a las entidades financieras.\",\"how_much_debt_p3\":\"Unos municipios tienen mayor capacidad de endeudamiento que otros. Es posible que un municipio tenga m\u00E1s deuda que otro, pero si su econom\u00EDa es m\u00E1s fuerte, tendr\u00E1 m\u00E1s capacidad para soportarla y reducirla.\",\"how_to_read\":\"\u00BFY c\u00F3mo se lee?\",\"how_to_read_p1_html\":\"Todos los presupuestos municipales tienen la misma estructura, definida legalmente en la \\\\u003ca href=\\\\\"https://www.boe.es/buscar/doc.php?id=BOE-A-2008-19916\\\\\"\\\\u003eOrden EHA/3565/2008\\\\u003c/a\\\\u003e. La estructura b\u00E1sica es sencilla: se divide en ingresos y gastos. Es decir, responde a las preguntas \u00BFDe d\u00F3nde sale el dinero? (ingresos) y \u00BFen qu\u00E9 se gasta? (gastos).\",\"income\":\"Ingresos\",\"income_1_desc\":\"Gravan la fuente de la renta, los frutos del patrimonio o de una actividad econ\u00F3mica.\",\"income_2_desc\":\"Algunos municipios recaudan una parte del IVA y otros impuestos especiales.\",\"income_3_desc\":\"Precios p\u00FAblicos y contribuciones por contraprestaciones municipales.\",\"income_4_desc\":\"Dinero que el ayuntamiento recibe del Estado y de la Comunidad Aut\u00F3noma.\",\"income_5_desc\":\"Rentas de patrimonio del municipio. Son los beneficios sobre bienes que no se destinan a servicio p\u00FAblico.\",\"income_6_desc\":\"Venta de solares y fincas r\u00FAsticas.\",\"income_7_desc\":\"Ingresos de naturaleza no tributaria destinados a financiar gastos de capital.\",\"income_8_desc\":\"Devoluci\u00F3n de fianzas o dep\u00F3sitos inmovilizados.\",\"income_9_desc\":\"Cr\u00E9ditos solicitados a entidades privadas.\",\"income_p1\":\"Para empezar, los ingresos se dividen seg\u00FAn su naturaleza econ\u00F3mica, es decir, de d\u00F3nde viene el dinero y qu\u00E9 \u201Cforma\u201D tiene: Si es un cr\u00E9dito bancario, una propiedad municipal que se ha vendido o un impuesto.\",\"income_p2\":\"En %{year} se ingresaron...\",\"intro_p1\":\"La Junta municipal \u2013formada por el alcalde y los responsables de cada \u00E1rea de gobierno\u2013 dise\u00F1a el presupuesto, lo redacta a trav\u00E9s de la concejal\u00EDa de Hacienda y lo presenta en el pleno, que es el \u00F3rgano de m\u00E1xima representaci\u00F3n pol\u00EDtica municipal.\",\"intro_p2\":\"Una vez all\u00ED, todos los concejales lo estudian y sugieren modificaciones. Finalmente se somete a votaci\u00F3n y se aprueba.\",\"intro_p3\":\"El presupuesto tiene que quedar aprobado antes del 31 de diciembre del a\u00F1o anterior. Es decir, el presupuesto de 2016 tiene que estar aprobado en diciembre de 2015, si no, se prorroga autom\u00E1ticamente.\",\"regular_income\":\"Ingresos corrientes\",\"regular_income_p1\":\"Impuestos y tasas que recauda el ayuntamiento, o dinero que el Estado transfiere a cada municipio. Son los m\u00E1s habituales.\",\"sources\":\"Fuentes\",\"sources_p1_html\":\"Para elaborar esta gu\u00EDa hemos tomado como referencia la estructura oficial de un presupuesto municipal, definida en la \\\\u003ca href=\\\\\"https://www.boe.es/buscar/doc.php?id=BOE-A-2008-19916\\\\\"\\\\u003eOrden EHA/3565/2008\\\\u003c/a\\\\u003e y nos hemos inspirado en otros documentos como \\\\u003ca href=\\\\\"http://www.ocmcartagena.org/files/archive/Entendiendo-un-presupuesto-municipal.pdf\\\\\"\\\\u003eEntendiendo un presupuesto municipal\\\\u003c/a\\\\u003e y \\\\u003ca href=\\\\\"https://docs.google.com/presentation/d/1oysDrJvlFxP0sKlzBalxvrV3lzSE5OCSKY7qd5yYpcA/pub?start=false\\\\u0026loop=false\\\\u0026delayms=3000\\\\u0026slide=id.p\\\\\"\\\\u003eGu\u00EDa de introducci\u00F3n a los presupuestos municipales\\\\u003c/a\\\\u003e.\",\"title\":\"C\u00F3mo funciona un presupuesto municipal\",\"types_income\":\"Tipos de ingreso\",\"types_income_p1\":\"Los ingresos se dividen en nueve apartados y cada uno de ellos en varios subapartados. Estas divisiones permiten profundizar para conocer la procedencia exacta de cada ingreso.\",\"types_income_p2\":\"Por ejemplo: dentro de Impuestos indirectos se encuentran los Consumos espec\u00EDficos. Y dentro de este \u00FAltimo, est\u00E1n los Impuestos del alcohol o el tabaco. En un presupuesto oficial, los apartados principales se llaman cap\u00EDtulos. Y a su vez, cada cap\u00EDtulo se divide en art\u00EDculos, conceptos y subconceptos.\",\"types_income_p3\":\"En Gobierto lo hemos simplificado para que s\u00F3lo tengas que buscar el nombre de cada apartado.\"},\"index\":{\"at_a_glance\":\"Evoluci\u00F3n del gasto y comparaci\u00F3n\",\"at_years_end\":\"* a cierre del %{year}\",\"budget_guide\":\"Consulta la Gu\u00EDa del Presupuesto\",\"budget_lines_block\":{\"intro\":\"Estas son las partidas presupuestarias m\u00E1s importantes en tu municipio\",\"title\":\"Partidas presupuestarias\"},\"budget_receipt\":{\"intro\":\"Comprueba a qu\u00E9 se dedican tus aportaciones\",\"title\":\"El recibo de tus impuestos\"},\"budget_slides\":{\"slide_1\":\"Gasto en asistencia social por habitante\",\"title\":\"Los presupuestos de un vistazo\"},\"budgets_comparision\":{\"button\":\"Comparar\",\"text\":\"Compara el presupuesto del %{site} con el de otros municipios desde\"},\"category_percentage\":\"Porcentaje\",\"category_value\":\"Cantidad\",\"context\":\"Contexto\",\"data_of_year\":\"* datos del %{year}\",\"debt\":\"Deuda\",\"debt_tooltip\":\"Deuda del sector de las administraciones p\u00FAblicas %{of_the_organization_name}\",\"description\":\"En esta p\u00E1gina te contamos c\u00FAal es la distribuci\u00F3n de los presupuestos, cu\u00E1l es el estado de ejecuci\u00F3n de cada partida, qui\u00E9nes son los proveedores con los que trabajamos, y c\u00F3mo ha evolucionado el gasto por habitante.\",\"executed\":\"Ejecuci\u00F3n del pres. actual\",\"executed_percent\":\"%{percentage}% del presupuesto actual\",\"executed_percent_other_year_html\":\"En %{year} fue un %{link}\",\"executed_tooltip\":\"Cantidad ejecutada respecto al presupuesto actual (presupuesto inicial m\u00E1s modificaciones)\",\"execution_block\":{\"button\":\"Consulta la ejecuci\u00F3n completa\",\"expense\":\"Gastos\",\"income\":\"Ingresos\",\"intro\":\"As\u00ED va la ejecuci\u00F3n del presupuesto municipal.\",\"last_update\":\"\u00DAltima actualizaci\u00F3n: %{date}.\",\"title\":\"Ejecuci\u00F3n\"},\"expenses\":\"Ingresos\",\"expenses_per_inhabitant\":\"Gasto por habitante\",\"expenses_per_inhabitant_tooltip\":\"Presupuesto inicial dividido por el n\u00FAmero de habitantes\",\"expenses_per_inhabitant_updated\":\"Pres. por hab. actual\",\"header\":\"Presupuestos\",\"in_total\":\"En total\",\"income\":\"Ingresos\",\"income_per_inhabitant\":\"Ingreso por habitante\",\"income_per_inhabitant_tooltip\":\"Presupuesto inicial dividido por el n\u00FAmero de habitantes\",\"inhabitants\":\"Habitantes\",\"inhabitants_tooltip\":\"N\u00FAmero de habitantes\",\"initial_estimate\":\"sobre el pres. inicial\",\"initial_estimate_per_inhabitant\":\"sobre el pres. inicial por hab.\",\"less\":\"menos\",\"level_1_category\":\"Categor\u00EDa nivel 1\",\"level_2_category\":\"Categor\u00EDa nivel 2\",\"main_budget_levels_legend_down\":\"Han bajado\",\"main_budget_levels_legend_one\":\"Cambio entre este a\u00F1o\",\"main_budget_levels_legend_two\":\"y el pasado\",\"main_budget_levels_legend_up\":\"Han subido\",\"main_budget_levels_per_inhabitant\":\"por habitante\",\"main_budget_levels_timeline\":\"Compara gastos e ingresos a\u00F1o por a\u00F1o\",\"main_budget_levels_tooltip_article\":\"desde\",\"main_budget_levels_tooltip_down\":\"Ha bajado un\",\"main_budget_levels_tooltip_up\":\"Ha subido un\",\"main_budget_lines\":\"Los principales ingresos y gastos %{from_your_organization_name}\",\"main_budget_lines_expense\":\"Gastos\",\"main_budget_lines_income\":\"Ingresos\",\"more\":\"m\u00E1s\",\"most_interesting_budget_lines\":\"Gastos que m\u00E1s te interesan\",\"most_interesting_budget_lines_description\":\"Te mostramos algunas de las partidas que m\u00E1s nos afectan directamente en nuestro d\u00EDa a d\u00EDa como ciudadanos. Tambi\u00E9n puedes consultar el explorador completo.\",\"not_available_short\":\"No disp.\",\"note_about_the_data\":\"Nota sobre los datos\",\"note_about_the_data_title\":\"La base de datos que utilizamos no incluye datos para el 100% de los municipios, por lo que las medias est\u00E1n calculadas solo con los datos que existen (que son la gran mayor\u00EDa). M\u00E1s informaci\u00F3n en nuestras preguntas frecuentes\",\"per_person\":\"Por habitante\",\"planned_vs_executed_other_year_html\":\"En %{year} fue %{link}\",\"search_for_a_budget_line\":\"Busca una partida\",\"see_all\":\"ver todos\",\"stories_header\":\"Te explicamos el presupuesto\",\"story_1\":{\"lede\":\"Te contamos cuales son las prioridades presupuestarias para el 2017 en torno a las que hemos articulado el plan econ\u00F3mico.\",\"title\":\"Actuaciones de car\u00E1cter general\"},\"story_2\":{\"lede\":\"Te contamos cuales son las prioridades presupuestarias para el 2017 en torno a las que hemos articulado el plan econ\u00F3mico.\",\"title\":\"Presupuestos y medio ambiente\"},\"story_3\":{\"lede\":\"Te contamos cuales son las prioridades presupuestarias para el 2017 en torno a las que hemos articulado el plan econ\u00F3mico.\",\"title\":\"Potenciando el deporte\"},\"title\":\"Presupuestos municipales de %{place} - %{year}\",\"top_expense_category\":\"Categor\u00EDa\",\"top_expense_value\":\"Cantidad\",\"top_income_category\":\"Categor\u00EDa\",\"top_income_value\":\"Cantidad\",\"total_expenses\":\"Gasto total\",\"total_expenses_tooltip\":\"Presupuesto inicial\",\"total_expenses_updated\":\"Presupuesto actual\",\"visualize\":\"Visualiza los gastos por habitante o el total\"}},\"budgets_elaboration\":{\"index\":{\"at_a_glance\":\"Evoluci\u00F3n del gasto y comparaci\u00F3n\",\"auto_funding\":\"Capacidad autofinanciaci\u00F3n\",\"auto_funding_tooltip\":\"Porcentaje que suponen los ingresos fiscales respecto de los ingresos corrientes\",\"by_custom_category\":\"por \u00E1rea\",\"by_economic_expense\":\"en qu\u00E9 se gasta\",\"by_economic_income\":\"en qu\u00E9 se ingresa\",\"by_functional_expense\":\"para qu\u00E9\",\"category_percentage\":\"% s/ Total\",\"category_value\":\"Importe\",\"context\":\"Contexto\",\"debt_level\":\"Nivel de endeudamiento\",\"debt_level_tooltip\":\"Necesidad de financiacio\u0301n externa para poder hacer frente a sus gastos, una vez utilizados los recursos tributarios y las subvenciones y transferencias\",\"description\":\"El equipo de gobierno publica el borrador del presupuesto del pr\u00F3ximo ejercicio para debatir en abierto con oposici\u00F3n y vecinos. Entre todos podemos elaborar el presupuesto que m\u00E1s conviene a %{place_name}.\",\"diff_previous\":\"vs. anterior\",\"expenses_per_inhabitant\":\"Gasto por habitante\",\"expenses_per_inhabitant_tooltip\":\"Presupuesto inicial dividido por el n\u00FAmero de habitantes\",\"explore_the_detail\":\"Explora el detalle\",\"header\":\"Tramitaci\u00F3n del presupuesto %{year}\",\"in_total\":\"En total\",\"income_per_inhabitant\":\"Ingreso por habitante\",\"income_per_inhabitant_tooltip\":\"Presupuesto inicial dividido por el n\u00FAmero de habitantes\",\"main_budget_levels_timeline\":\"Compara gastos e ingresos a\u00F1o por a\u00F1o\",\"main_budget_lines\":\"Los principales ingresos y gastos %{from_your_organization_name}\",\"main_budget_lines_expense\":\"Gastos\",\"main_budget_lines_income\":\"Ingresos\",\"metric_boxes_data\":\"Los datos\",\"metric_boxes_data_description\":\"As\u00ED cambiar\u00E1 el presupuesto de cara al pr\u00F3ximo ejercicio\",\"net_savings\":\"Ahorro neto\",\"net_savings_tooltip\":\"Capacidad que tiene la entidad de hacer frente\",\"next_year_proposal\":\"Propuesta para el %{year}\",\"no_data\":\"No hay datos para esta clasificaci\u00F3n\",\"note_about_the_data\":\"Nota sobre los datos\",\"note_about_the_data_title\":\"La base de datos que utilizamos no incluye datos para el 100% de los municipios, por lo que las medias est\u00E1n calculadas solo con los datos que existen (que son la gran mayor\u00EDa). M\u00E1s informaci\u00F3n en nuestras preguntas frecuentes\",\"per_person\":\"Por habitante\",\"proposal\":\"Propuesta\",\"total_expenses\":\"Gasto total\",\"total_expenses_tooltip\":\"Presupuesto inicial\",\"total_income\":\"Ingreso total\",\"total_income_tooltip\":\"Presupuesto inicial\",\"visualize\":\"Visualiza los gastos por habitante o el total\"}},\"budgets_execution\":{\"execution_table\":{\"deviation\":\"Desviaci\u00F3n\",\"executed\":\"Ejecutado\",\"planned\":\"Pres.\",\"view_less\":\"Ver menos\",\"view_more\":\"Ver m\u00E1s\"},\"index\":{\"budget_guide\":\"Consulta nuestra Gu\u00EDa del presupuesto\",\"budget_lines_expense_higher\":\"Partidas de gastos muy superiores al presupuesto\",\"budget_lines_expense_lower\":\"Partidas de gastos muy inferiores al presupuesto\",\"budget_lines_income_higher\":\"Partidas de ingresos muy superiores al presupuesto\",\"budget_lines_income_lower\":\"Partidas de ingresos muy inferiores al presupuesto\",\"category\":\"Categor\u00EDa\",\"custom_button\":\"Personalizada\",\"description\":\"La ejecuci\u00F3n es la cantidad que finalmente se ha gastado sobre el presupuesto inicial modificado. Es normal que haya desviaciones ya que es imposible preveer todos los gastos con precisi\u00F3n absoluta\",\"economic\":\"Econ\u00F3mica\",\"economic_button\":\"En qu\u00E9 se gasta\",\"euros\":\"En euros\",\"execution_disclaimer\":\"Es normal que haya desviaciones ya que es imposible preveer todos los gastos con precisi\u00F3n absoluta.\",\"execution_help\":\"La ejecuci\u00F3n es la cantidad que finalmente se ha gastado sobre el presupuesto inicial actualizado.\",\"expenses_executed\":\"Gastos ejecutados\",\"expenses_planned\":\"Gastos presupuestados\",\"functional\":\"Functional\",\"functional_button\":\"Para qu\u00E9 se gasta\",\"higher_execution\":\"Mayor ejecuci\u00F3n\",\"income_executed\":\"Ingresos ejecutados\",\"income_planned\":\"Ingresos presupuestados\",\"initial_estimate\":\"Presupuesto inicial\",\"initial_estimate_per_inhabitant\":\"Presupuesto inicial por habitante\",\"lower_execution\":\"Menor ejecuci\u00F3n\",\"metric\":{\"execution\":{\"expenses_title\":\"Ejecuci\u00F3n de gastos\",\"income_title\":\"Ejecuci\u00F3n de ingresos\",\"previous_execution_message\":\"En el %{year} la ejecuci\u00F3n fue del %{percentage}\"}},\"percentage\":\"Porcentaje\",\"sort\":\"Ordenar\",\"title\":\"Ejecuci\u00F3n presupuestaria\",\"tooltip_disclaimer\":\"\\\\u003cstrong\\\\u003eEsta es una aproximaci\u00F3n\\\\u003c/strong\\\\u003e. \\\\u003cbr /\\\\u003e A lo largo del a\u00F1o surgen imprevistos que cambian la cantidad o la finalidad de los gastos o ingresos.\",\"value\":\"Valor\",\"vis\":{\"absolute\":\"Ejecuci\u00F3n en \u20AC\",\"empty_lines\":\"No hay datos disponibles para esta clasificaci\u00F3n en este a\u00F1o. Por favor, selecciona otro filtro.\",\"expenses\":{\"title\":\"As\u00ED va la ejecuci\u00F3n de los gastos\"},\"income\":{\"title\":\"As\u00ED va la ejecuci\u00F3n de los ingresos\"},\"lines_title\":\"Partidas presupuestarias\",\"percent\":\"% de progreso\",\"percent_log\":\"% de progreso (log)\",\"tooltip\":\"Se ha ejecutado un\",\"tooltip_budgeted\":\"Presupuestado inicial\",\"tooltip_budgeted_updated\":\"Presupuestado actualizado\",\"tooltip_executed_amount\":\"Importe ejecutado\"}},\"widget_template_deviation\":{\"expense\":\"Gastos\",\"income\":\"Ingresos\",\"planned\":\"presupuestados\",\"real\":\"reales\"}},\"common\":{\"budget_line_description_html\":\"Esta partida comprende los %{kind_what} en %{description}. Si quieres saber m\u00E1s sobre esta partida puedes consultar la partida padre: %{link}\",\"expense\":\"gasto\",\"expenses\":\"gastos\",\"income\":\"ingreso\",\"incomes\":\"ingresos\"},\"events\":{\"gobierto_budgets_budgets_updated\":\"Presupuestos actualizados\"},\"exports\":{\"budget_lines_description\":\"Compara gastos e ingresos a\u00F1o por a\u00F1o\",\"budget_lines_title\":\"Partidas presupuestarias\",\"invoices_description\":\"Datos por a\u00F1o\",\"invoices_title\":\"Proveedores y Facturas\"},\"featured_budget_lines\":{\"gobierto_site_template\":{\"how_much_place_in\":\"\u00BFCu\u00E1nto se gasta %{place} en...\",\"last_year\":\"El a\u00F1o pasado gastamos\",\"per_person\":\"Por habitante\",\"show_me_another\":\"Mu\u00E9strame otra\",\"title\":\"Algunos gastos destacados\",\"total\":\"Gasto total\"}},\"feedback\":{\"ask_more_information\":{\"ask_for_feedback\":\"Escribe tu correo para que %{your_organization_name} te pueda contestar\",\"send\":\"Enviar\",\"your_email\":\"Tu correo-e\"},\"follow\":{\"follow\":\"Seguir\",\"your_email\":\"Tu correo-e\"},\"follow_success\":{\"error\":\"Parece que el email introducido no es v\u00E1lido. Por favor rev\u00EDsalo\",\"share\":\"\u00BFQuieres compartir estos datos en\",\"share_text\":\"Informate y opina sobre el presupuesto de %{place_name}\",\"success\":\"\u00A1Genial! Comprueba tu correo y pincha en el enlace que te enviamos\"},\"step1\":{\"answer1_0\":\"S\u00ED\",\"answer1_1\":\"No\",\"understand\":\"\u00BFEntiendes de qu\u00E9 va esta partida?\"},\"step2_no\":{\"answer_html\":\"El \\\\u003cstrong\\\\u003e%{datum}\\\\u003c/strong\\\\u003e de personas han respondido que \\\\u003cstrong\\\\u003eNo entiende de qu\u00E9 va esta partida\\\\u003c/strong\\\\u003e\",\"ask\":\"Puedes solicitar a tu alcalde que amplie la informaci\u00F3n sobre esta y otras partidas\"},\"step2_yes\":{\"option1_html\":\"Me parece \\\\u003cspan\\\\u003ePOCO\\\\u003c/span\\\\u003e\",\"option2_html\":\"Me parece \\\\u003cspan\\\\u003eAPROPIADO\\\\u003c/span\\\\u003e\",\"option3_html\":\"Me parece \\\\u003cspan\\\\u003eMUCHO\\\\u003c/span\\\\u003e\",\"question\":\"\u00BFCrees que la cantidad de gasto es apropiada?\"},\"step3\":{\"option1\":\"Poco\",\"option2\":\"Apropiado\",\"option3\":\"Mucho\",\"thanks\":\"Gracias por tu opini\u00F3n. Esto es lo que piensa el resto de la gente que ha opinado:\"}},\"feedback_mailer\":{\"new_feedback_request\":{\"body\":\"Has recibido una nueva petici\u00F3n de informaci\u00F3n para la partida %{budget_line_name} (%{year}) de una persona con el email %{person_email}.\",\"body_budgets\":\"Has recibido una nueva petici\u00F3n de informaci\u00F3n para los presupuestos de tu municipio de una persona con el email %{person_email}.\",\"subject\":\"Has recibido una nueva petici\u00F3n de informaci\u00F3n\"}},\"indicators\":\"Indicadores\",\"indicators_intro\":\"Conoce los presupuestos de %{place} a trav\u00E9s de sus principales cifras: ahorro bruto, inversi\u00F3n por habitante o financiaci\u00F3n de inversiones.\",\"invoices\":{\"show\":{\"empty\":\"Ning\u00FAn filtro tiene datos\",\"fromto\":\"De A N\u00BA Fact.\",\"invoiced\":\"Importe facturado\",\"more\":\"M\u00E1s de\",\"table\":{\"fields\":{\"date\":\"Fecha\",\"paid\":\"Pagado\",\"payment_date\":\"Fecha de pago\",\"payment_date_limit\":\"Fecha prevista de pago\",\"provider_id\":\"NIF\",\"provider_name\":\"Proveedor\",\"subject\":\"Concepto\",\"value\":\"Cantidad\"},\"pager\":{\"first\":\"Primero\",\"format\":\"P\u00E1ginas %{tpl} de %{tpl2}\",\"last\":\"\u00DAltimo\",\"next\":\"Siguiente\",\"prev\":\"Anterior\"}}}},\"layouts\":{\"application\":{\"budgets\":\"Presupuestos\"},\"menu_subsections\":{\"data\":\"Datos\",\"elaboration\":\"Elaboraci\u00F3n\",\"execution\":\"Ejecuci\u00F3n\",\"guide\":\"Gu\u00EDa\",\"indicators\":\"Indicadores\",\"providers\":\"Proveedores y Facturas\",\"receipt\":\"Recibo\"}},\"providers\":{\"index\":{\"all_invoices\":\"Todas las facturas\",\"amount_distribution\":\"Distribuci\u00F3n por importes\",\"and_more_html\":\"y \\\\u003cspan id=\\\\\"providers-number\\\\\"\\\\u003en\\\\u003c/span\\\\u003e proveedores m\u00E1s\",\"are_from\":\"son de\",\"check_detail\":\"Consulta el detalle\",\"corporation_sa\":\"sociedades an\u00F3nimas\",\"corporation_sl\":\"sociedades limitadas y otras\",\"description\":\"\u00BFA qu\u00E9 proveedores contrata %{the_organization_name}? \u00BFQu\u00E9 facturas paga? Desde esta secci\u00F3n podr\u00E1s consultar y revisar el detalle de cada uno de los pagos que realiza %{the_organization_name}.\",\"freelances\":\"aut\u00F3nomos\",\"invoices\":\"Facturas\",\"invoices_from_which\":\"De los cuales\",\"invoices_sum\":\"facturas suman un total de\",\"largest_provider_html\":\"El mayor proveedor supone un \\\\u003cspan id=\\\\\"largestProvider\\\\\"\\\\u003e\\\\u003c/span\\\\u003e de toda la facturaci\u00F3n\",\"last_12_months\":\"\u00DAltimos 12 meses\",\"last_3_months\":\"\u00DAltimos 3 meses\",\"less_than_1000_html\":\"El \\\\u003cspan id=\\\\\"lessThan1000\\\\\"\\\\u003e\\\\u003c/span\\\\u003e de las facturas son menores de 1.000 \u20AC\",\"loading\":\"Cargando...\",\"main_providers\":\"Principales proveedores\",\"mean_amount\":\"importe medio\",\"mean_and_median\":\"Media y mediana\",\"mean_and_median_summary\":\"Es decir, la mitad de las facturas son de este importe o inferior\",\"mean_summary\":\"Importe resultante de sumar los importes de todas las facturas y dividirlo por el n\u00FAmero de facturas\",\"median_amount\":\"importe mediano\",\"months_distribution\":\"Distribuci\u00F3n por meses\",\"percentile_10_html\":\"El \\\\u003cspan id=\\\\\"percentile10\\\\\"\\\\u003e\\\\u003c/span\\\\u003e de las facturas concentran el 10 % de la facturaci\u00F3n\",\"percentile_50_html\":\"El \\\\u003cspan id=\\\\\"percentile50\\\\\"\\\\u003e\\\\u003c/span\\\\u003e de las facturas concentran el 50 % de la facturaci\u00F3n\",\"previous\":\"Anteriores\",\"sum_amount\":\"IMPORTE ACUMULADO\",\"this_year\":\"Este a\u00F1o\",\"view_data_from\":\"Ver datos de\"}},\"receipts\":{\"show\":{\"description\":\"Parte del presupuesto de tu municipio se financia directamente de impuestos y tasas locales. Calcula cu\u00E1nto aportas t\u00FA al presupuesto de acuerdo a tu vivienda, veh\u00EDculos...\",\"detail\":\"Detalle de tu contribuci\u00F3n\",\"explanation\":\"Introduce las cantidades que has pagado para cada uno de los conceptos en\",\"pick_to_calculate\":\"Selecciona para calcular\",\"share\":\"Comp\u00E1rtelo\",\"share_text\":\"Comprueba cual es tu aportaci\u00F3n al presupuesto de\",\"title\":\"\u00BFCu\u00E1l es tu contribuci\u00F3n al presupuesto de %{site_name}?\",\"your_contribution\":\"Tu contribuci\u00F3n a los presupuestos de %{site_name}\"}},\"shared\":{\"data_updated_at\":{\"last_update\":\"Datos actualizados\"},\"enough_information\":{\"enough_information\":\"\u00BFSuficiente informaci\u00F3n?\",\"enough_information_cta\":\"Pide m\u00E1s informaci\u00F3n\",\"enough_information_desc\":\"Si considera que se tienen que incluir m\u00E1s informaci\u00F3n de estos datos para tener una visi\u00F3n m\u00E1s completa de la misma o sobre el uso de tus impuestos, comunic\u00E1noslo y te contestaremos\"}},\"visualizations\":{\"G_custom\":\"Gastos por \u00E1rea\",\"G_economic\":\"En qu\u00E9 se gasta\",\"G_functional\":\"Para qu\u00E9 se gasta\",\"I_custom\":\"Ingresos por \u00E1rea\",\"I_economic\":\"En qu\u00E9 se ingresa\",\"category_per_inhabitant\":\"%{category} por habitante\",\"expenses_per_inhabitant\":\"Gasto por habitante\",\"expenses_per_inhabitant_updated\":\"Gasto por habitante actual\",\"inhabitant_short\":\"hab\",\"mean_autonomy\":\"Media auton\u00F3mica\",\"mean_national\":\"Media estatal\",\"mean_province\":\"Media provincial\",\"previous_year_diff\":\"Cambio a\u00F1o anterior\",\"total_expenses\":\"Gasto total\"}},\"gobierto_calendars\":{\"calendar_integration\":{\"auth_error\":{\"message\":\"Las credenciales del calendario no son v\u00E1lidas.\"},\"error\":{\"message\":\"Ha habido un problema sincronizando el calendario.\"},\"timeout_error\":{\"message\":\"El tiempo de conexi\u00F3n al servidor de calendarios ha expirado.\"}},\"events\":{\"gobierto_calendars_event_published\":\"%{subject_name}\",\"gobierto_calendars_event_updated\":\"%{subject_name}\"},\"fullcalendar\":{\"day\":\"D\u00EDa\",\"list\":\"Lista\",\"month\":\"Mes\",\"today\":\"Hoy\",\"week\":\"Semana\"}},\"gobierto_cms\":{\"events\":{\"gobierto_cms_page_created\":\"P\u00E1gina creada\",\"gobierto_cms_page_published\":\"P\u00E1gina publicada\",\"gobierto_cms_page_updated\":\"P\u00E1gina actualizada\",\"gobierto_cms_section_created\":\"Secci\u00F3n creada\",\"gobierto_cms_section_item_created\":\"P\u00E1gina a\u00F1adida a secci\u00F3n\",\"gobierto_cms_section_item_deleted\":\"P\u00E1gina borrada de secci\u00F3n\",\"gobierto_cms_section_updated\":\"Secci\u00F3n actualizada\"},\"pages\":{\"templates\":{\"page\":{\"documents\":\"Documentos\"}}}},\"gobierto_common\":{\"dynamic_content\":{\"table_component\":{\"attachment\":\"Documento\",\"download\":\"Descargar\",\"download_attachment\":\"Descargar documento\",\"view_content\":\"Ver contenido\"}},\"events\":{\"gobierto_common_collection_created\":\"Colecci\u00F3n creada\",\"gobierto_common_collection_updated\":\"Colecci\u00F3n actualizada\",\"gobierto_common_term_created\":\"T\u00E9rmino creado\",\"gobierto_common_term_updated\":\"T\u00E9rmino actualizado\"},\"visualizations\":{\"absolute\":\"Ejecuci\u00F3n en \u20AC\",\"adults\":\"Poblaci\u00F3n activa\",\"age\":\"Edad\",\"axis\":\"a\u00F1os\",\"between_25_44\":\"Entre 25 y 44\",\"cards\":{\"active_pop\":{\"figure_first\":\"del total\",\"figure_second\":\"personas\",\"title\":\"Poblaci\u00F3n activa\"},\"births\":{\"country\":\"Media estatal\",\"place\":\"%{place}\",\"province\":\"Media provincial\",\"title\":\"Tasa de nacimientos\"},\"budget_by_inhabitant\":{\"title\":\"Presupuesto por habitante\"},\"cars\":{\"title\":\"Coches por habitante\"},\"cars_tax\":{\"figure_first\":\"%{place}\",\"figure_second\":\"media provincial\",\"title\":\"Impuesto a los turismos\"},\"companies\":{\"title\":\"Empresas\"},\"construction_tax\":{\"figure_first\":\"%{place}\",\"figure_second\":\"media provincial\",\"title\":\"Impuesto a las construcciones\"},\"contracts_comparison\":{\"figure_first\":\"temporales\",\"figure_second\":\"indefinidos\",\"title\":\"Contratos en el mes pasado\"},\"contracts_sector\":{\"agriculture\":\"Agricultura\",\"construction\":\"Construcci\u00F3n\",\"industry\":\"Industria\",\"services\":\"Servicios\",\"title\":\"Contratos por sector\"},\"deaths\":{\"country\":\"Media estatal\",\"place\":\"%{place}\",\"province\":\"Media provincial\",\"title\":\"Tasa de defunciones\"},\"debt_by_inhabitant\":{\"title\":\"Deuda por habitante\"},\"debt_level\":{\"title\":\"Nivel de endeudamiento\"},\"economic_tax\":{\"title\":\"Impuesto a las actividades econ\u00F3micas\"},\"expenditure_rigidity\":{\"title\":\"Rigidez de gasto\"},\"financial_charge\":{\"title\":\"Carga financiera\"},\"financial_risk\":{\"title\":\"Riesgo financiero\"},\"freelancers\":{\"title\":\"Aut\u00F3nomos\"},\"frequency\":\"Actualizaci\u00F3n %{type}\",\"gross_saving\":{\"title\":\"Ahorro bruto\"},\"gross_savings_rate\":{\"title\":\"\u00CDndice de ahorro bruto\"},\"houses\":{\"figure_first\":\"familiares\",\"figure_second\":\"principales\",\"title\":\"Viviendas\"},\"ibi\":{\"first_column\":\"\",\"second_column\":\"Urbano\",\"third_column\":\"R\u00FAstico\",\"title\":\"Impuesto sobre bienes inmuebles\"},\"income\":{\"first_column\":\"\",\"second_column\":\"Por habitante\",\"third_column\":\"Por hogar\",\"title\":\"Renta municipal\"},\"income_overview\":{\"figure_first\":\"%{place}\",\"figure_second\":\"Espa\u00F1a\",\"title\":\"Renta bruta\"},\"investment_by_inhabitant\":{\"title\":\"Inversi\u00F3n por habitante\"},\"investment_financing\":{\"title\":\"Financiaci\u00F3n inversiones\"},\"liability_cost\":{\"title\":\"Coste deuda\"},\"meta\":{\"time\":\" en \",\"where\":\"En \"},\"net_saving\":{\"title\":\"Ahorro neto\"},\"net_savings_rate\":{\"title\":\"\u00CDndice de ahorro neto\"},\"per_capita_investment\":{\"title\":\"Inversi\u00F3n por habitante\"},\"per_capita_tax_burden\":{\"title\":\"Presi\u00F3n fiscal por habitante\"},\"population\":{\"title\":\"Habitantes\"},\"self_financing_capacity\":{\"title\":\"Capacidad de autofinanciaci\u00F3n\"},\"ss_members\":{\"title\":\"Afiliados a la Seguridad Social\"},\"tax_autonomy\":{\"title\":\"Autonom\u00EDa fiscal\"},\"unemployed_sector\":{\"agriculture\":\"Agricultura\",\"construction\":\"Construcci\u00F3n\",\"industry\":\"Industria\",\"services\":\"Servicios\",\"title\":\"Desempleados por sector\"},\"updated\":\"\u00DAltima actualizaci\u00F3n\"},\"country\":\"Espa\u00F1a\",\"elderly\":\"Mayores\",\"elderly_info\":\"El %{percent} de la poblaci\u00F3n tiene m\u00E1s de %{limit} a\u00F1os\",\"empty_lines\":\"No hay datos disponibles para esta clasificaci\u00F3n en este a\u00F1o. Por favor, selecciona otro filtro.\",\"frequency\":\"Actualizaci\u00F3n %{type}\",\"gross_income\":\"Renta bruta\",\"increase\":\"Aumentar\",\"inhabitant_short\":\"hab\",\"inhabitants\":\"Habitantes\",\"keep\":\"Mantener\",\"label\":\"habitantes\",\"less_25\":\"Menores de 25\",\"lines_title\":\"Partidas presupuestarias\",\"main_budget_levels_legend_down\":\"Han bajado\",\"main_budget_levels_legend_one\":\"Cambio entre este a\u00F1o\",\"main_budget_levels_legend_two\":\"y el pasado\",\"main_budget_levels_legend_up\":\"Han subido\",\"main_budget_levels_per_inhabitant\":\"por habitante\",\"main_budget_levels_tooltip_article\":\"desde\",\"main_budget_levels_tooltip_article_last\":\"desde el anterior\",\"main_budget_levels_tooltip_down\":\"Ha bajado un\",\"main_budget_levels_tooltip_up\":\"Ha subido un\",\"mean\":\"Edad media: %{age} a\u00F1os\",\"mean_autonomy\":\"Media auton\u00F3mica\",\"mean_national\":\"Media estatal\",\"mean_province\":\"Media provincial\",\"median\":\"Edad mediana: %{age} a\u00F1os\",\"men\":\"Hombres\",\"million\":\"mill\u00F3n\",\"mode\":\"Edad m\u00E1s com\u00FAn: %{age} a\u00F1os\",\"more_44\":\"Mayores de 44\",\"percent\":\"% de progreso\",\"percent_log\":\"% de progreso (log)\",\"previous_year_diff\":\"Cambio a\u00F1o anterior\",\"project\":\"Proyecto\",\"questions\":\"Preguntas\",\"reduce\":\"Reducir\",\"thousand\":\"mil\",\"time\":\" en \",\"title\":\"Riqueza y poblaci\u00F3n en la provincia\",\"tooltip\":\"Se ha ejecutado un\",\"tooltip_budgeted\":\"Presupuestado inicial\",\"tooltip_budgeted_updated\":\"Presupuestado actualizado\",\"tooltip_executed_amount\":\"Importe ejecutado\",\"unemployed\":\"Desempleada\",\"where\":\"En \",\"women\":\"Mujeres\",\"youth\":\"Menores\",\"youth_info\":\"El %{percent} de la poblaci\u00F3n tiene menos de %{limit} a\u00F1os\"},\"vue_components\":{\"block_header\":{\"all\":\"Todas\",\"none\":\"Ninguna\"},\"calendar\":{\"date\":\"Seleccione fecha\"},\"filters\":{\"clear\":\"Limpiar filtros\"},\"pagination\":{\"next\":\"Siguiente\",\"previous\":\"Anterior\"},\"read_more\":{\"less\":\"Ver menos\",\"more\":\"Ver m\u00E1s\"},\"table\":{\"customize_columns\":\"Personalizar columnas\",\"no_data\":\"No hay datos para este criterio\"}}},\"gobierto_dashboards\":{\"available_cards\":\"Tarjetas disponibles\",\"back\":\"atr\u00E1s\",\"changes\":\"Dashboard modificado\",\"date\":\"Fecha: \",\"default_title\":\"T\u00EDtulo del dashboard\",\"delete\":\"Eliminar\",\"delete_dialog\":\"Desea borrar el dashboard?\",\"discard\":\"cerrar sin guardar\",\"indicators_amount\":\"\u279E %{amount} indicadores\",\"instructions\":\"\\\\\"\u21E7 Selecciona un tipo de tarjeta e incluyela en el \u00E1rea central \u279E\\\\n\\\\nLuego podr\u00E1s configurarla.\\\\\"\\\\n\",\"objective\":\"Objetivo\",\"percentage\":\"Consecuci\u00F3n\",\"percentage_alt\":\"% consecuci\u00F3n\",\"placeholder\":\"Escribe el t\u00EDtulo del indicador o proyecto\",\"public\":\"P\u00FAblico\",\"save\":\"Guardar\",\"select\":\"Selecciona el indicador\",\"type\":\"Tipo\",\"value\":\"Alcanzado\",\"view_item\":\"Ver \u00EDtem\",\"widgets\":{\"html\":\"Contenido HTML\",\"indicator\":\"Indicador\",\"individual\":\"Individual\",\"table\":\"Tabla\"}},\"gobierto_data\":{\"accessibility\":{\"editor\":\"Editor SQL\"},\"data_type\":{\"boolean\":\"boolean\",\"date\":\"fecha\",\"datetime\":\"fecha y hora\",\"decimal\":\"decimal\",\"hstore\":\"hstore\",\"integer\":\"entero\",\"jsonb\":\"jsonb\",\"string\":\"cadena\",\"text\":\"texto\",\"time\":\"tiempo\",\"timestamp\":\"fecha y hora\",\"timestampz\":\"fecha y hora\"},\"events\":{\"gobierto_data_dataset_dataset_created\":\"Conjunto de datos creado\",\"gobierto_data_dataset_dataset_data_updated\":\"Datos de conjunto de datos actualizados\",\"gobierto_data_dataset_dataset_deleted\":\"Conjunto de datos eliminado\",\"gobierto_data_dataset_dataset_updated\":\"Conjunto de datos actualizado\"},\"layouts\":{\"application\":{\"gobierto_data\":\"Datos\"}},\"projects\":{\"all\":\"Todas\",\"buttonFork\":\"Haz click para crear una versi\u00F3n de esta consulta\",\"buttonQueries\":\"Ver consultas (c)\",\"buttonRecentQueries\":\"Ver consultas recientes (r)\",\"buttonRunQuery\":\"Ejecutar consulta (CMD/WIN + Enter)\",\"cancel\":\"Cancelar\",\"categories\":\"Categor\u00EDas\",\"createCopy\":\"Crear una copia\",\"dashboards\":\"Dashboards\",\"data\":\"Datos\",\"dataset\":\"Conjuntos de datos\",\"datasetUpdated\":\"\u00DAltimos datasets actualizados\",\"deleteQuery\":\"\u00BFEst\u00E1s seguro de que deseas eliminar esta consulta?\",\"deleteViz\":\"\u00BFEst\u00E1s seguro de que deseas eliminar esta visualizaci\u00F3n?\",\"description\":\"Descripci\u00F3n\",\"download\":\"Descargar\",\"downloadData\":\"Descargar datos\",\"edit\":\"Editar\",\"emptyRecentQueries\":\"No hay consultas recientes\",\"favs\":\"Favoritas\",\"frequency\":\"Frecuencia\",\"guide\":\"Gu\u00EDa para usar el editor SQL\",\"license\":\"Licencia\",\"link\":\"Enlace\",\"map\":\"Mapa\",\"modifiedQuery\":\"Consulta modificada\",\"modifiedVisualization\":\"Visualizaci\u00F3n modificada\",\"numberOfRows\":\"N\u00FAmero de registros\",\"preview\":\"Previsualizar\",\"private\":\"Privada\",\"queries\":\"Consultas\",\"query\":\"Consulta\",\"queryEmpty\":\"No hay consultas disponibles\",\"queryExecuted\":\"Consulta ejecutada en\",\"queryName\":\"Nombre consulta\",\"recents\":\"Recientes\",\"records\":\"Registros\",\"resetQuery\":\"Restablecer consulta\",\"resetViz\":\"Restablecer Visualizaci\u00F3n\",\"resources\":\"Recursos\",\"revert\":\"Revertir\",\"runQuery\":\"Ejecutar consulta\",\"save\":\"Guardar\",\"savedQuery\":\"Consulta guardada\",\"savedVisualization\":\"Visualizaci\u00F3n guardada\",\"sets\":\"Conjuntos\",\"showAll\":\"Ver todo\",\"showLess\":\"Ver menos\",\"sourceDataset\":\"Fuente\",\"sourceDatasetUrl\":\"Fuente url\",\"subject\":\"Tema\",\"summary\":\"Resumen\",\"updated\":\"Actualizado\",\"visEmpty\":\"No hay visualizaciones disponibles\",\"visName\":\"Nombre visualizaci\u00F3n\",\"visPrivate\":\"Tus visualizaciones\",\"visPublic\":\"Todas\",\"visualizations\":\"Visualizaciones\",\"visualize\":\"Visualizar\",\"yourQueries\":\"Tus consultas\"}},\"gobierto_exports\":{\"exports\":{\"index\":{\"no_submodules\":\"No hay ning\u00FAn subm\u00F3dulo activo\",\"subtitle\":\"Desde esta p\u00E1gina puedes descargar en formato reutilizable el contenido de este sitio.\",\"title\":\"Descarga datos\"}}},\"gobierto_indicators\":{\"events\":{\"gobierto_indicators_indicator_updated\":\"Indicador actualizado\"},\"indicators\":{\"gci\":{\"gci_description\":\"Los indicadores GCI (Global City Indicators), que reflejan la calidad de vida de la ciudad, los define el Banco Mundial, asociaci\u00F3n con el prop\u00F3sito de combatir la pobreza y apoyar el desarrollo. Los indicadores pueden variar seg\u00FAn el a\u00F1o seleccionado.\",\"gci_title\":\"Indicadores GCI\",\"title\":\"Indicadores %{year}\"},\"ip\":{\"ip_description\":\"Infoparticipa es un proyecto desarrollado por el LPCCP, desde el a\u00F1o 2012, cuyo objetivo es evaluar la informaci\u00F3n que se publica en las webs de las administraciones p\u00FAblicas para promover que mejore su transparencia y calidad.\",\"ip_title\":\"Indicadores Infoparticipa\",\"title\":\"Indicadores %{year}\"},\"ita\":{\"ita_description\":\"Los indicadores ITA (\u00CDndice de Transparencia de los Ayuntamientos) son una herramienta que la organizaci\u00F3n no gubernamental Transparencia Internacional pone a disposici\u00F3n de los ayuntamientos espa\u00F1oles para medir su nivel de transparencia. Eval\u00FAan la gesti\u00F3n realizada por el ayuntamiento de una ciudad a trav\u00E9s de un conjunto integrado de 80 indicadores agrupados en diversas \u00E1reas.\",\"ita_title\":\"Indicadores ITA\",\"title\":\"Indicadores %{year}\"},\"shared\":{\"latest_update_html\":\"\\\\u003cstrong\\\\u003e\u00DAltima actualizaci\u00F3n:\\\\u003c/strong\\\\u003e %{date}\"},\"template\":{\"calculation\":\"C\u00E1lculo\",\"false\":\"no se cumple\",\"methodology\":\"Metodolog\u00EDa\",\"more\":\"M\u00E1s informaci\u00F3n\",\"source\":\"Fuente\",\"true\":\"se cumple\"}},\"layouts\":{\"application\":{\"indicators\":\"Indicadores\"},\"navigation\":{\"sub\":{\"gci\":\"Indicadores GCI\",\"ip\":\"Indicadores Infoparticipa\",\"ita\":\"Indicadores ITA\"}}}},\"gobierto_investments\":{\"events\":{\"gobierto_investments_project_project_created\":\"Proyecto de inversi\u00F3n creado\",\"gobierto_investments_project_project_updated\":\"Proyecto de inversi\u00F3n actualizado\"},\"layouts\":{\"application\":{\"investments\":\"Inversiones\",\"investments_paragraph\":\"Consulta los proyectos que tiene en marcha el Ayuntamiento, los que empezar\u00E1n proximamente, y los planes a medio plazo. Detalle sobre el plan anual de inversiones y mecanismos de seguimiento de las obras en marcha.\"}},\"projects\":{\"back\":\"ver todo\",\"description\":\"Descripci\u00F3n\",\"detail_title\":\"Detalle del proyecto\",\"empty\":\"Sin resultados\",\"exit\":\"Salir\",\"gallery\":\"Galer\u00EDa\",\"list\":\"Lista\",\"loading\":\"Cargando datos...\",\"map\":\"Mapa\",\"project\":{\"one\":\"%{count} proyecto\",\"other\":\"%{count} proyectos\"},\"reset\":\"Limpiar filtros\",\"see\":\"Ver de nuevo\",\"showall\":\"Ver todo\",\"showless\":\"Ver menos\",\"summary\":\"Resumen por estados\",\"tech_sheet\":\"Ficha t\u00E9cnica\",\"tour\":\"Tour virtual\"}},\"gobierto_observatory\":{\"cards\":{\"active_pop\":{\"figure_first\":\"del total\",\"figure_second\":\"personas\",\"title\":\"Poblaci\u00F3n activa\"},\"births\":{\"country\":\"Media estatal\",\"place\":\"%{place}\",\"province\":\"Media provincial\",\"title\":\"Tasa de nacimientos\"},\"budget_by_inhabitant\":{\"title\":\"Presupuesto por habitante\"},\"cars\":{\"title\":\"Coches por habitante\"},\"cars_tax\":{\"figure_first\":\"%{place}\",\"figure_second\":\"media provincial\",\"title\":\"Impuesto a los turismos\"},\"companies\":{\"title\":\"Empresas\"},\"construction_tax\":{\"figure_first\":\"%{place}\",\"figure_second\":\"media provincial\",\"title\":\"Impuesto a las construcciones\"},\"contracts_comparison\":{\"figure_first\":\"temporales\",\"figure_second\":\"indefinidos\",\"title\":\"Contratos en el mes pasado\"},\"contracts_sector\":{\"agriculture\":\"Agricultura\",\"construction\":\"Construcci\u00F3n\",\"industry\":\"Industria\",\"services\":\"Servicios\",\"title\":\"Contratos por sector\"},\"deaths\":{\"country\":\"Media estatal\",\"place\":\"%{place}\",\"province\":\"Media provincial\",\"title\":\"Tasa de defunciones\"},\"debt_by_inhabitant\":{\"title\":\"Deuda por habitante\"},\"economic_tax\":{\"title\":\"Impuesto a las actividades econ\u00F3micas\"},\"freelancers\":{\"title\":\"Aut\u00F3nomos\"},\"frequency\":\"Actualizaci\u00F3n %{type}\",\"houses\":{\"figure_first\":\"familiares\",\"figure_second\":\"principales\",\"title\":\"Viviendas\"},\"ibi\":{\"first_column\":\"\",\"second_column\":\"Urbano\",\"third_column\":\"R\u00FAstico\",\"title\":\"Impuesto sobre bienes inmuebles\"},\"income\":{\"first_column\":\"\",\"second_column\":\"Bruta\",\"third_column\":\"Disponible\",\"title\":\"Renta municipal\"},\"income_overview\":{\"figure_first\":\"%{place}\",\"figure_second\":\"Espa\u00F1a\",\"title\":\"Renta bruta\"},\"investment_by_inhabitant\":{\"title\":\"Inversi\u00F3n por habitante\"},\"meta\":{\"time\":\" en \",\"where\":\"En \"},\"population\":{\"title\":\"Habitantes\"},\"ss_members\":{\"title\":\"Afiliados a la Seguridad Social\"},\"unemployed_sector\":{\"agriculture\":\"Agricultura\",\"construction\":\"Construcci\u00F3n\",\"industry\":\"Industria\",\"services\":\"Servicios\",\"title\":\"Desempleados por sector\"},\"updated\":\"\u00DAltima actualizaci\u00F3n\"},\"graphics\":{\"age_distribution\":{\"axis\":\"a\u00F1os\",\"label\":\"habitantes\",\"title\":\"Comprueba la distribuci\u00F3n por edades de tu municipio\"},\"population_pyramid\":{\"adults\":\"Poblaci\u00F3n activa\",\"age\":\"Edad\",\"country\":\"Espa\u00F1a\",\"elderly\":\"Mayores\",\"elderly_info\":\"El %{percent} de la poblaci\u00F3n tiene m\u00E1s de %{limit} a\u00F1os\",\"mean\":\"Edad media: %{age} a\u00F1os\",\"median\":\"Edad mediana: %{age} a\u00F1os\",\"men\":\"Hombres\",\"mode\":\"Edad m\u00E1s com\u00FAn: %{age} a\u00F1os\",\"unemployed\":\"Desempleada\",\"women\":\"Mujeres\",\"youth\":\"Menores\",\"youth_info\":\"El %{percent} de la poblaci\u00F3n tiene menos de %{limit} a\u00F1os\"},\"rent_distribution\":{\"gross_income\":\"Renta bruta\",\"inhabitants\":\"Habitantes\",\"million\":\"mill\u00F3n\",\"thousand\":\"mil\",\"title\":\"Riqueza y poblaci\u00F3n en la provincia\"},\"unemployment_age\":{\"between_25_44\":\"Entre 25 y 44\",\"less_25\":\"Menores de 25\",\"more_44\":\"Mayores de 44\",\"title\":\"Desempleo seg\u00FAn la edad\"},\"unemployment_rate\":{\"country\":\"Espa\u00F1a\",\"title\":\"Comparaci\u00F3n de la tasa de paro\"},\"unemployment_sex\":{\"men\":\"Hombres\",\"title\":\"Desempleo seg\u00FAn el sexo\",\"women\":\"Mujeres\"}},\"inhabitants\":\"hab\",\"intro\":\"Conoce %{place} a trav\u00E9s de sus principales cifras: la poblaci\u00F3n, el empleo, la econom\u00EDa y los presupuestos.\",\"layouts\":{\"application\":{\"observatory\":\"Observatorio\"},\"menu_subsections\":{\"banner_map\":\"Un visor geogr\u00E1fico para explorar la estructura demogr\u00E1fica de %{place}\",\"demographic_observatory\":\"Observatorio demogr\u00E1fico\",\"economia\":\"Econom\u00EDa\",\"empleo\":\"Empleo\",\"poblacion\":\"Poblaci\u00F3n\"}}},\"gobierto_people\":{\"departments\":{\"index\":{\"description\":\"Cualquier organizaci\u00F3n que se re\u00FAne con un alto cargo debe registrarse como grupo de inter\u00E9s, y se crea un registro de los encuentros. \\\\u003ca href=\\\\\"https://web.gencat.cat/es/tramits/tramits-temes/registre-grups-interes\\\\\"\\\\u003eM\u00E1s informaci\u00F3n sobre la normativa de grupos de inter\u00E9s\\\\u003c/a\\\\u003e. Explore las organizaciones (empresas, fundaciones, asociaciones\u2026) que se re\u00FAnen con cargos de la Generalidad.\",\"events\":\"Reuniones registradas\",\"events_by_department\":\"Reuniones por departamentos\",\"explore_departments\":\"Explore los departamentos y sus altos cargos\",\"explore_people\":\"Consulte las agendas de los altos cargos\",\"people_events\":\"Altos cargos con m\u00E1s reuniones en departamentos\",\"people_with_events\":\"Altos cargos con reuniones registradas\",\"punchcard_title\":\"Reuniones por departamento y mes\"},\"show\":{\"interest_groups_box_subtitle\":\"con reuniones en el periodo\",\"interest_groups_box_title\":\"Grupos de inter\u00E9s\",\"interest_groups_box_title_single\":\"Grupo de inter\u00E9s\",\"interest_groups_rowchart_title\":\"Grupos de inter\u00E9s con m\u00E1s reuniones con este departamento\",\"interest_groups_with_events\":\"Grupos de inter\u00E9s que se han reunido con este departamento\",\"map_title\":\"\u00BFA d\u00F3nde viajan los altos cargos?\",\"meetings_box_subtitle\":\"con grupos de inter\u00E9s\",\"meetings_box_title\":\"Reuniones registradas\",\"meetings_box_title_single\":\"Reuni\u00F3n registrada\",\"people_box_subtitle\":\"con reuniones registradas\",\"people_box_title\":\"Altos cargos de este departamento\",\"people_box_title_single\":\"Alto cargo de este departamento\",\"people_rowchart_title\":\"Altos cargos de este departamento con m\u00E1s reuniones\",\"people_with_events\":\"Altos cargos de este departamento con reuniones registradas\",\"punchcard_title\":\"Reuniones por alto cargo y mes\"}},\"events\":{\"gobierto_people_person_post_published\":\"Actualizaci\u00F3n del blog: %{subject_name}\",\"gobierto_people_person_post_updated\":\"Actualizaci\u00F3n del post: %{subject_name}\",\"gobierto_people_person_published\":\"Creada nueva persona: %{subject_name}\",\"gobierto_people_person_statement_published\":\"Publicada la declaraci\u00F3n: %{subject_name}\",\"gobierto_people_person_statement_updated\":\"Actualizada la declaraci\u00F3n: %{subject_name}\",\"gobierto_people_person_updated\":\"Actualizaci\u00F3n de la informaci\u00F3n personal\"},\"exports\":{\"index\":{\"events\":{\"description\":\"Listado de los eventos (pasados y futuros) con t\u00EDtulo y descripci\u00F3n, asistentes, ubicaci\u00F3n...\",\"title\":\"Agendas\"},\"people\":{\"description\":\"Listado de los cargos, con sus datos de contacto, biograf\u00EDa, titulaciones, etc.\",\"title\":\"Cargos\"},\"posts\":{\"description\":\"\u00DAltimas entradas del conjunto de los blogs\",\"title\":\"Blogs\"},\"statements\":{\"description\":\"Listado de las declaraciones de bienes y actividades y todos sus elementos\",\"title\":\"Declaraciones de bienes y actividades\"}}},\"gifts\":{\"coc\":\"El C\u00F3digo de conducta regula qu\u00E9 obsequios se pueden recibir.\",\"description\":\"Los altos cargos deben abstenerse de aceptar regalos y donaciones de particulares y de entidades p\u00FAblicas o privadas a excepci\u00F3n hecha de las muestras no venales de cortes\u00EDa y objetos conmemorativos, oficiales o protocolarios que le puedan ser entregados por raz\u00F3n de su cargo.\",\"last\":\"\u00DAltimos obsequios\",\"none\":\"No se han registrado obsequios en este periodo\",\"title\":\"Obsequios\"},\"interest_groups\":{\"index\":{\"description\":\"Cualquier organizaci\u00F3n que se re\u00FAne con un alto cargo debe registrarse como grupo de inter\u00E9s, y se crea un registro de los encuentros. \\\\u003ca href=\\\\\"https://web.gencat.cat/es/tramits/tramits-temes/registre-grups-interes\\\\\"\\\\u003eM\u00E1s informaci\u00F3n sobre la normativa de grupos de inter\u00E9s\\\\u003c/a\\\\u003e. Explore las organizaciones (empresas, fundaciones, asociaciones\u2026) que se re\u00FAnen con cargos de la Generalidad.\",\"interest_groups\":\"Grupos de inter\u00E9s inscritos\",\"no_data\":\"No hay datos para las fechas seleccionadas\",\"rowchart_title\":\"Grupos de inter\u00E9s con m\u00E1s reuniones\",\"title\":\"Grupos de inter\u00E9s\"},\"show\":{\"event\":\"Reuni\u00F3n registradas\",\"events\":\"Reuniones registradas\",\"events_by_department\":\"Con qu\u00E9 departamentos se re\u00FAne este grupo\",\"events_by_person\":\"Altos cargos con los que se ha reunido este grupo\",\"explore_departments\":\"Explore los departamentos y sus altos cargos\",\"explore_people\":\"Consulte las agendas de los altos cargos\",\"people_with_events\":\"El n\u00FAmero de altos cargos con los que se ha reunido este grupo\",\"punchcard_title\":\"Reuniones por alto cargo y mes\",\"status\":\"Situaci\u00F3n de inscripci\u00F3n en el registro de grupos de inter\u00E9s: %{status}\"}},\"invitations\":{\"coc\":\"El C\u00F3digo de conducta regula qu\u00E9 invitaciones se pueden aceptar.\",\"description\":\"Los altos cargos deben aceptar s\u00F3lo el pago de viajes, desplazamientos y alojamientos por parte de otras administraciones p\u00FAblicas o de entidades p\u00FAblicas dependientes de \u00E9stas, universidades o entidades sin \u00E1nimo de lucro, cuando tenga que asistir invitado oficialmente por raz\u00F3n del cargo a una actividad relacionada con sus responsabilidades.\",\"last\":\"\u00DAltimas invitaciones\",\"none\":\"No se han registrado invitaciones en este periodo\",\"title\":\"Invitaciones\"},\"layouts\":{\"application\":{\"title\":\"Altos cargos y Agendas\"},\"departments\":{\"no_departments_within_dates\":\"Altos cargos y agendas\"},\"menu_subsections\":{\"agendas\":\"Agendas\",\"blogs\":\"Blogs\",\"departments\":\"Departamentos\",\"gifts\":\"Obsequios\",\"interest_groups\":\"Grupos de inter\u00E9s\",\"invitations\":\"Invitaciones\",\"people\":\"Cargos\",\"statements\":\"Declaraciones\",\"trips\":\"Viajes\"}},\"people\":{\"contact_methods\":{\"send_email\":\"Env\u00EDa un correo-e\"},\"gifts\":{\"index\":{\"gifts\":\"Obsequios\",\"no_gifts\":\"No hay obsequios en las fechas seleccionadas\",\"title\":\"Obsequios recibidos por %{person_name}\"}},\"google_calendar\":{\"authorization\":{\"new\":{\"success\":\"Configuraci\u00F3n guardada correctamente. Un \u00FAltimo paso, selecciona qu\u00E9 calendarios quieres publicar autom\u00E1ticamente en tu agenda.\"}},\"calendars\":{\"edit\":{\"explain\":\"Selecciona qu\u00E9 calendarios quieres publicar autom\u00E1ticamente en tu agenda\",\"save\":\"Guardar\",\"title\":\"Integraci\u00F3n con Google Calendar\"},\"update\":{\"success\":\"Calendarios guardados correctamente.\"}}},\"index\":{\"department_officials\":\"Altos cargos en %{department_name}\",\"no_people_within_range\":\"No hay ning\u00FAn alto cargo para este rango de fechas\",\"subscribable_box\":{\"title\":\"Reciba alertas en su correo-e\"},\"title\":\"Organigrama de %{site_name}\"},\"invitations\":{\"index\":{\"invitations\":\"Invitaciones\",\"no_invitations\":\"No hay invitaciones en las fechas seleccionadas\",\"title\":\"Invitaciones recibidas por %{person_name}\"}},\"latest_activity\":{\"no_activity\":\"Este perfil a\u00FAn no ha registrado ninguna actividad.\",\"title\":\"\u00DAltima actividad\"},\"navigation\":{\"agenda\":\"Agenda\",\"bio\":\"Biograf\u00EDa y CV\",\"blog\":\"Blog\",\"gift_received\":\"obsequio recibido\",\"gifts\":\"Obsequios y regalos\",\"gifts_received\":\"obsequios recibidos\",\"interest_group\":\"grupo de inter\u00E9s\",\"interest_groups\":\"grupos de inter\u00E9s\",\"invitation\":\"invitaci\u00F3n\",\"invitations\":\"invitaciones\",\"meeting_with\":\"reuni\u00F3n con\",\"meetings_with\":\"reuniones con\",\"statements\":\"Bienes y actividades\",\"trip_made\":\"viaje realizado\",\"trips\":\"Viajes\",\"trips_made\":\"viajes realizados\"},\"people_filter\":{\"organigram\":\"Organigrama de %{name}\",\"political_groups\":\"Grupos pol\u00EDticos de %{name}\"},\"person\":{\"picture\":\"Foto de %{name}\"},\"person_bio\":{\"show\":{\"download\":\"Descargar CV\",\"subtitle\":\"Biograf\u00EDa y CV\",\"title\":\"Perfil de %{person_name}\"}},\"person_events\":{\"index\":{\"agenda\":\"Agenda\",\"no_events\":\"No hay reuniones en las fechas seleccionadas\",\"past_events\":\"Eventos pasados\",\"title\":\"Agenda de %{person_name}\",\"upcoming_events\":\"Pr\u00F3ximos eventos\"},\"show\":{\"event_data\":{\"event_attachments\":\"Documentos\",\"event_attendees\":\"Asistentes\",\"event_locations\":\"Lugar\"},\"title\":\"Agenda de %{person_name}\"}},\"person_messages\":{\"create\":{\"error\":\"No se ha podido enviar el mensaje\",\"success\":\"Mensaje enviado correctamente\"},\"new\":{\"placeholders\":{\"body\":\"Escribe un mensaje\",\"email\":\"Tu correo-e\",\"name\":\"Tu nombre\"},\"submit\":\"Enviar\",\"title\":\"Env\u00EDa un mensaje a %{name}\"}},\"person_post_tags\":{\"show\":{\"filtering_by_tag\":\"Filtrando por \\\\\"%{tag}\\\\\"\",\"go_back\":\"Volver al blog\"}},\"person_posts\":{\"index\":{\"no_posts\":\"Todav\u00EDa no se ha publicado ning\u00FAn post.\",\"title\":\"El blog de %{person_name}, %{person_charge}\"},\"show\":{\"title\":\"El blog de %{person_name}, %{person_charge}\"}},\"person_statements\":{\"index\":{\"no_statements\":\"Todav\u00EDa no se ha publicado ninguna declaraci\u00F3n para esta persona.\",\"title\":\"Bienes y actividades de %{person_name}\"},\"show\":{\"download\":\"Descargar declaraci\u00F3n (%{file_size})\",\"title\":\"Bienes y actividades de %{person_name}\",\"view_previous\":\"Ver anteriores\"}},\"show\":{\"events_section_title\":\"\u00DAltimas reuniones\",\"gifts_section_title\":\"\u00DAltimos obsequios\",\"invitations_section_title\":\"\u00DAltimas invitaciones\",\"no_data\":\"No hay datos en las fechas seleccionadas\",\"party\":{\"government\":\"Equipo de gobierno\",\"opposition\":\"Oposici\u00F3n\"},\"trips_section_title\":\"\u00DAltimos viajes\"},\"subscription_button\":{\"cancel\":\"Cancelar\",\"follow\":\"Seguir\"},\"trips\":{\"index\":{\"no_trips\":\"No hay viajes en las fechas seleccionadas\",\"title\":\"Viajes realizados por %{person_name}\",\"trips\":\"Viajes\"},\"trip\":{\"accomodation_expenses\":\"Hoteles y alojamiento\",\"by\":\"por\",\"company\":\"Comitiva\",\"expenses\":\"Gastos\",\"food_expenses\":\"Dietas y manutenci\u00F3n\",\"in\":\"en\",\"meeting_name\":{\"one\":\"reuni\u00F3n\",\"other\":\"reuniones\"},\"other_expenses\":\"Otros gastos\",\"person_name\":{\"one\":\"persona\",\"other\":\"personas\"},\"total_expenses\":\"Gastos totales\",\"transport_expenses\":\"Transporte\"}},\"upcoming_events\":{\"no_upcoming_events\":\"No hay eventos pr\u00F3ximos en esta agenda.\",\"title\":\"Agenda\",\"view_all\":\"Ver todos\"}},\"people_filter\":{\"all\":\"Todos\",\"categories\":{\"executive\":\"Directivos\"},\"parties\":{\"government\":\"Equipo de Gobierno\",\"opposition\":\"Oposici\u00F3n\"},\"political_groups\":{\"title\":\"Grupos pol\u00EDticos\"}},\"person_events\":{\"index\":{\"agenda_switcher\":{\"subtitle\":\"Filtrar por miembros de la comunidad\",\"title\":\"Consulte la agenda de...\"},\"displaying_events_of\":\"Mostrando eventos del %{date}\",\"go_back\":\"Volver\",\"no_events\":\"No hay eventos futuros ni pasados.\",\"no_past_events\":\"No hay eventos pasados.\",\"no_upcoming_events\":\"No hay eventos futuros. \u00C9chele un vistazo a los pasados.\",\"past_events\":\"Eventos pasados\",\"subscribable_box\":{\"title\":\"Reciba un resumen de las agendas de sus representantes\"},\"title\":\"Agendas de los miembros de %{site_name}\",\"upcoming_events\":\"Agenda\"},\"person_events_filter\":{\"agenda\":\"Agenda de los miembros del %{name}\"}},\"person_gifts\":{\"index\":{\"error\":\"No hemos encontrado la p\u00E1gina que busca\"}},\"person_mailer\":{\"new_message\":{\"hi\":\"Hola\",\"new_message\":\"Has recibido un nuevo mensaje de %{name} (%{reply_to})\",\"subject\":\"Has recibido un nuevo mensaje desde %{name}\"}},\"person_post_tags\":{\"show\":{\"filtering_by_tag\":\"Filtrando por \\\\\"%{tag}\\\\\"\",\"go_back\":\"Volver\"}},\"person_posts\":{\"index\":{\"subscribable_box\":{\"title\":\"Reciba alertas en su correo-e\"},\"switcher\":{\"subtitle\":\"Filtrar por miembros de la comunidad\",\"title\":\"Consulte los blogs de...\"},\"title\":\"Blogs\"},\"person_post_excerpt\":{\"continue\":\"Seguir leyendo\"}},\"person_statements\":{\"index\":{\"subscribable_box\":{\"title\":\"Reciba alertas en su correo-e\"},\"switcher\":{\"subtitle\":\"Filtrar por miembros de la comunidad\",\"title\":\"Consulte las declaraciones de...\"},\"title\":\"Declaraciones\"}},\"person_trips\":{\"index\":{\"error\":\"No hemos encontrado la p\u00E1gina que busca\"}},\"shared\":{\"app_breadcrumb_title\":\"Visor de la actividad directiva\",\"app_title\":\"Actividad directiva p\u00FAblica derivada del C\u00F3digo de conducta\",\"check_it_out\":\"Consultad el texto del C\u00F3digo de conducta\",\"datepicker\":{\"1m\":\"\u00DAltimo mes\",\"1y\":\"\u00DAltimo a\u00F1o\",\"3m\":\"\u00DAltimos tres meses\",\"all\":\"Todo\",\"range\":\"Rango personalizado\",\"today\":\"Hoy\"},\"datepicker_fixed\":\"Datos correspondientes al periodo\",\"destination\":\"destino\",\"destinations\":\"destinos\",\"displacement\":\"desplazamiento\",\"displacements\":\"desplazamientos\",\"from\":\"de\",\"locales\":{\"locale\":\"Idioma\",\"page_locale\":\"Idioma de la p\u00E1gina\",\"select_locale\":\"Selecciona idioma\"},\"meetings_punchcard\":{\"tooltip\":\"reuniones\",\"tooltip_single\":\"reuni\u00F3n\"},\"meetings_rowchart\":{\"tooltip\":\"reuniones\",\"tooltip_single\":\"reuni\u00F3n\"},\"noresults\":\"Sin resultados\",\"open_data_footer\":{\"gifts\":\"Obsequios\",\"invitations\":\"Invitaciones\",\"meetings\":\"Reuniones\",\"title\":\"Acceder a los datos en el Portal de datos abiertos\",\"trips\":\"Viajes\"},\"table_item\":{\"view_details\":\"Ver detalles\"},\"to\":\"para\",\"view_all\":\"Ver todos\",\"view_all_f\":\"Ver todas\",\"view_charges\":\"Ver todos los cargos\",\"view_details\":\"Ver detalles\",\"view_gifts\":\"Ver todos los obsequios en el Portal de datos abiertos\",\"view_invitations\":\"Ver todas las invitaciones en el Portal de datos abiertos\",\"view_officials\":\"Ver altos cargos\"},\"welcome\":{\"index\":{\"departments\":\"Departamentos\",\"departments_extra\":\"se muestran los departamentos que existen o han existido en funci\u00F3n del periodo seleccionado\",\"departments_rowchart_title\":\"Departamentos con m\u00E1s reuniones\",\"description_1\":\"El visor muestra las reuniones de los altos cargos de la administraci\u00F3n de la Generalitat con los grupos de inter\u00E9s en el periodo temporal que seleccione. Tambi\u00E9n encontrar\u00E1 los regalos e invitaciones permitidos por el C\u00F3digo de conducta, que obliga a los altos cargos a hacer p\u00FAblica esta informaci\u00F3n. Asimismo, el visor permite consultar los viajes al extranjero del presidente, consejeros, asesores y altos cargos en el ejercicio de sus funciones.\",\"description_2_html\":\"Respecto de la informaci\u00F3n de los altos cargos, se muestran los cargos que ocupan o han ocupado en el periodo temporal seleccionado.\",\"events_summary\":{\"no_events\":\"No hay eventos\",\"no_upcoming_events\":\"No hay eventos futuros. \u00C9chele un vistazo a los pasados.\",\"past_events\":\"Eventos pasados\",\"upcoming_events\":\"Pr\u00F3ximos eventos\",\"view_all\":\"Ver todos\"},\"gifts\":\"Obsequios y regalos\",\"interest_groups_box_subtitle\":\"con reuniones en el periodo\",\"interest_groups_box_title\":\"Grupos de inter\u00E9s\",\"interest_groups_box_title_single\":\"Grupo de inter\u00E9s\",\"interest_groups_rowchart_title\":\"Grupos de inter\u00E9s con m\u00E1s reuniones\",\"map_title\":\"\u00BFA d\u00F3nde viajan los altos cargos?\",\"meetings_box_subtitle\":\"con grupos de inter\u00E9s\",\"meetings_box_title\":\"Reuniones registradas\",\"meetings_box_title_single\":\"Reuni\u00F3n registrada\",\"people_box_subtitle\":\"con actividad registrada\",\"people_box_title\":\"Altos cargos\",\"people_box_title_single\":\"Alto cargo\",\"people_rowchart_title\":\"Altos cargos con m\u00E1s reuniones\",\"people_summary\":{\"no_people\":\"No hay personas\",\"title\":\"Organigrama de %{site_name}\",\"view_all\":\"Ver todos\"},\"posts_summary\":{\"title\":\"Blogs\",\"view_all\":\"Ver todos\"},\"punchcard_title\":\"Reuniones por alto cargo y mes\",\"search\":\"Buscar\",\"search_placeholder\":\"Busca un cargo\",\"statements\":\"Declaraciones de bienes y actividades\",\"subscribable_box\":{\"title\":\"Reciba un resumen semanal de las agendas de sus representantes\"},\"title\":\"Agendas\",\"trips\":\"Viajes y desplazamientos\"}}},\"gobierto_plans\":{\"custom_fields_plugins\":{\"budgets\":{\"detail_text\":\"ver detalle en Presupuestos\",\"title\":\"Presupuesto\"}},\"events\":{\"gobierto_plans_plan_created\":\"Plan creado\",\"gobierto_plans_plan_data_csv_imported\":\"Datos de plan importados desde fichero CSV\",\"gobierto_plans_plan_type_created\":\"Tipo de plan creado\",\"gobierto_plans_plan_type_updated\":\"Tipo de plan actualizado\",\"gobierto_plans_plan_updated\":\"Plan actualizado\",\"gobierto_plans_progresses_updated\":\"Progresos de proyectos actualizados\",\"gobierto_plans_project_created\":\"Proyecto creado\",\"gobierto_plans_project_destroyed\":\"Proyecto eliminado del plan\",\"gobierto_plans_project_updated\":\"Proyecto actualizado\"},\"layouts\":{\"application\":{\"plans\":\"Planes\"}},\"plan_types\":{\"sdg\":{\"header\":{\"sdgs_description\":\"Los Objetivos de Desarrollo Sostenible son un conjunto de objetivos mundiales relacionados con los desaf\u00EDos ambientales, pol\u00EDticos y econ\u00F3micos con que se enfrenta nuestro mundo. Aqu\u00ED puedes ver como el Plan de Actuaci\u00F3n Municipal conecta con los ODS.\",\"sdgs_title\":\"Objetivos de Desarrollo Sostenible\"},\"projects\":{\"sdg_projects_empty\":\"No hay %{projects_term} del plan relacionados con este ODS\",\"sdg_projects_title\":\"%{projects_term} del plan relacionados con este ODS\"}},\"show\":{\"category\":\"Categor\u00EDa\",\"customize_columns\":\"Personalizar columnas\",\"dashboards\":\"Dashboards\",\"desc\":\"Descripci\u00F3n\",\"ends\":\"Fin\",\"global_execution\":\"Estado de ejecuci\u00F3n global\",\"latest_update_html\":\"\\\\u003cstrong\\\\u003e\u00DAltima actualizaci\u00F3n:\\\\u003c/strong\\\\u003e %{date}\",\"loading\":\"Cargando...\",\"percent_out_of_total\":\"% sobre total\",\"plan\":\"Plan\",\"progress\":\"Progreso\",\"read_less\":\"Leer menos\",\"read_more\":\"Leer m\u00E1s\",\"starts\":\"Inicio\",\"status\":\"Estado\",\"view_by\":\"Ver por\"}}},\"gobierto_visualizations\":{\"layouts\":{\"application\":{\"gobierto_visualizations\":{\"contracts\":\"Contratos y licitaciones\",\"costs\":\"Costes\",\"debts\":\"Deuda\",\"odss\":\"ODS\",\"subsidies\":\"Subvenciones\"}}},\"shared\":{\"download_data\":\"Descarga los datos completos en formatos reutilizables\",\"loading\":\"Cargando datos...\"},\"visualizations\":{\"categories\":{\"agriculture\":\"Servicios agr\u00EDcolas y forestales\",\"architecture\":\"Arquitectura e ingenier\u00EDa\",\"audiovisual\":\"Audiovisual\",\"catering\":\"Hosteler\u00EDa y restauraci\u00F3n\",\"construction\":\"Construcci\u00F3n y mantenimiento\",\"culture\":\"Cultura y deporte\",\"education\":\"Ense\u00F1anza y formaci\u00F3n\",\"electrical\":\"Equipos el\u00E9ctricos y de iluminaci\u00F3n\",\"energy\":\"Energ\u00EDa\",\"environment\":\"Medio ambiente\",\"finance\":\"Servicios financieros y seguros\",\"furniture\":\"Mobiliario\",\"health\":\"Salud\",\"industry\":\"Industria y maquinaria\",\"it\":\"Tecnolog\u00EDa de la informaci\u00F3n\",\"legal\":\"Jur\u00EDdico, contabilidad, mercadotecnia...\",\"maintenance\":\"Reparaci\u00F3n y mantenimiento\",\"other\":\"Otros\",\"print\":\"Impresi\u00F3n y material de oficina\",\"public_services\":\"Servicios p\u00FAblicos\",\"real_estate\":\"Inmobiliario\",\"security\":\"Seguridad\",\"social_services\":\"Servicios sociales\",\"software\":\"Consultor\u00EDa y desarrollo de software, equipos y licencias\",\"telecom\":\"Telecomunicaciones y correos\",\"textile\":\"Textil\",\"transportation\":\"Transporte\"},\"contract_statuses\":{\"abandoned\":\"Desistimiento\",\"awarded\":\"Adjudicado\",\"finally_awarded\":\"Finalmente adjudicado\",\"finally_void\":\"Desierto\",\"formalized\":\"Formalizado\",\"highest_rated\":\"Mejor valorado\",\"provisionally_awarded\":\"Provisionalmente adjudicado\",\"provisionally_void\":\"Provisionalmente desierto\",\"revoked\":\"Revocado\",\"void\":\"Desierto\"},\"contract_types\":{\"construction\":\"Obras\",\"other\":\"Otros\",\"patrimonial\":\"Patrimonial\",\"private_contract\":\"Privado\",\"public_private_collaboration\":\"Colaboraci\u00F3n entre el sector p\u00FAblico y sector privado\",\"public_services_management\":\"Gesti\u00F3n de Servicios P\u00FAblicos\",\"public_works\":\"Concesi\u00F3n de Obras p\u00FAblicas\",\"services\":\"Servicios\",\"special_administrative\":\"Administrativo especial\",\"supplies\":\"Suministros\"},\"contracts\":{\"amount_by_type_of_process\":\"Importe por tipo de procedimiento\",\"amount_distribution\":\"Distribuci\u00F3n por importes\",\"assignee\":\"Adjudicatario\",\"categories\":\"Categor\u00EDas\",\"contract\":\"Contrato\",\"contract_amount\":\"Imp. adjudicaci\u00F3n\",\"contract_type\":\"Tipo de contrato\",\"contractor\":\"Contrato\",\"contracts\":\"Contratos\",\"contracts_assigned_to\":\"Contratos adjudicados a\",\"contracts_show\":{\"assignee_description\":\"Empresa que ha ganado el contrato (Adjudicatario)\",\"assignees_description\":\"Empresas que han ganado el contrato (Adjudicatarios)\",\"awarding_entity\":\"Entidad adjudicadora\",\"batch\":\"Lote\",\"bid_description\":\"Presupuesto base de licitaci\u00F3n sin impuestos\",\"bidders_description\":\"N\u00FAmero de empresas que se han presentado al proceso (Licitadores)\",\"contract_amount\":\"Importe de adjudicaci\u00F3n\",\"entity\":\"Entidad\",\"estimated_value\":\"Valor estimado\",\"external_source\":\"Fuente\",\"formalization\":\"Formalizaci\u00F3n\",\"process\":\"Procedimiento\",\"question_description\":\"\u00BFQu\u00E9 % del presupuesto supone este contrato?\",\"tender\":\"Licitaci\u00F3n\",\"type\":\"Tipo\"},\"date\":\"Fecha\",\"dates\":\"Fechas\",\"description\":\"Visualizaci\u00F3n y an\u00E1lisis de los contratos adjudicados y las licitaciones del %{entity_name}\",\"entities\":\"Entidades\",\"final_amount_no_taxes\":\"Importe\",\"formalization_date\":\"Fecha de formalizaci\u00F3n\",\"fromto\":\"Desde A N\u00BA. Contr.\",\"main_assignees\":\"Principales adjudicatarios\",\"more\":\"M\u00E1s de\",\"nav\":{\"contracts\":\"Contratos\",\"summary\":\"Resumen\",\"tenders\":\"Licitaciones\"},\"process_type\":\"Tipo de procedimiento\",\"search_placeholder\":\"Busca por adjudicatario o por t\u00EDtulo del contrato\",\"status\":\"Estado\",\"submission_date\":\"Fecha\",\"summary\":{\"contracts\":\"Contratos adjudicados\",\"contracts_for\":\"contratos por importe de\",\"mean_amount\":\"Importe medio\",\"median_amount\":\"Importe mediano\",\"tenders\":\"Licitaciones\",\"tenders_for\":\"licitaciones por importe de\",\"tip_1\":\"El %{strong1} de los contratos son menores de %{strong2}\",\"tip_2\":\"El mayor contrato supone un %{strong} de todo el gasto en contratos\",\"tip_3\":\"El %{strong} de contratos concentran el 50% de todo el gasto\"},\"tender_amount\":\"Imp. licitaci\u00F3n\",\"tender_date\":\"Fecha de licitaci\u00F3n\",\"title\":\"Contratos y licitaciones\"},\"costs\":{\"activities\":\"Actividades\",\"cost_direct\":\"Coste directo\",\"cost_indirect\":\"Coste indirecto\",\"cost_inhabitant\":\"Coste/habitante\",\"cost_per_inhabitant\":\"Coste por habitante\",\"coverage\":\"Cobertura\",\"description\":\"El %{entity_name} presta servicios a sus ciudadanos a partir de sus competencias. Esta prestaci\u00F3n de servicios supone un coste que se cubre con los ingresos que dispone el Ayuntamiento, que son los derivados del propio servicio a prestar o bien de recursos generales de los impuestos o subvenciones recibidas.\",\"description_2\":\"En este apartado se muestran los datos sobre los costes de los servicios y los ingresos necesarios para prestarlos.\",\"description_3\":\"El punto de partida es el presupuesto municipal, pero con este an\u00E1lisis se ampl\u00EDa y se concreta el coste real de un servicio ya que podemos encontrar relacionado el coste indirecto (de apoyo) necesario para la prestaci\u00F3n de un servicio.\",\"detail\":\"Detalle\",\"distribution\":\"Distribuci\u00F3n de costes por \u00E1rea\",\"home\":\"Inicio\",\"income\":\"Ingresos\",\"inhabitants\":\"Habitantes\",\"item\":{\"competence\":\"Competencia\",\"description\":\"Descripci\u00F3n\",\"equipments\":\"Equipamientos\",\"external_services\":\"Servicios externos\",\"goods_and_services\":\"Bienes y servicios\",\"income_cost\":\"Ingresos - Costes\",\"legal_framework\":\"Marco legal\",\"observation\":\"Observaciones\",\"personal_cost\":\"Coste personal\",\"public_tax\":\"Tasa o precios p\u00FAblicos\",\"subsidies\":\"Subvenciones\",\"total\":\"Total\",\"transference\":\"Transferencias\",\"types\":\"Tipos\"},\"per_inhabitant\":\"por habitante\",\"see_all\":\"Ver todos\",\"title\":\"Costes\",\"tooltips\":{\"cost_direct\":\"Recursos necesarios para la prestaci\u00F3n de un servicio o actividad finalista y que se relacionan directamente.\",\"cost_indirect\":\"Recursos para la prestaci\u00F3n de servicios no finalistas y que son de apoyo necesario para la realizaci\u00F3n de servicios y actividades finalistas.\",\"cost_per_habitant\":\"Coste total dividido por el n\u00FAmero de habitantes.\",\"cost_total\":\"Suma del coste directo y coste indirecto.\",\"coverage\":\"Grado de cobertura de los ingresos directamente relacionados con el coste total de la actividad o servicio.\",\"income\":\"Ingresos directamente relacionados con la prestaci\u00F3n del servicio, ya sean derivados de la aplicaci\u00F3n de una tasa o precio p\u00FAblico o bien de una subvenci\u00F3n.\"},\"tooltips_items\":{\"cost_indirect\":\"Parte proporcional del coste de las actividades no finalistas (recursos humanos, servicios econ\u00F3micos).\",\"coverage\":\"Medida (en%) en el que los ingresos directamente relacionados con la actividad son suficientes para cubrir su coste.\",\"equipments\":\"Coste proporcional del uso de la Infrastucturas necesaria para la prestaci\u00F3n de la actividad o servicio (consumos y mantenimientos de los edificios, veh\u00EDculos) en funci\u00F3n de su grado de utilizaci\u00F3n.\",\"externalServices\":\"Servicios diversos adquiridos por el Ayuntamiento y prestaciones de personas jur\u00EDdicas o f\u00EDsicas no integradas en la plantilla.\",\"goodsServices\":\"Valoraci\u00F3n monetaria del consumo de material fungible necesario y no almacenable necesario para la prestaci\u00F3n de la actividad o servicio (suministro, material de oficina)\",\"income_cost\":\"Diferencia entre conjunto de ingresos directamente relacionados con la actividad y el coste necesario para su prestaci\u00F3n. Un saldo negativo indica la insuficiencia de recursos espec\u00EDficos y la necesidad de financiaci\u00F3n con recursos generales del Ayuntamiento.\",\"staff_cost\":\"C\u00F3mputo anual de la parte de los sueldos y salarios de las trabajadoras y trabajadores proporcional a su dedicaci\u00F3n a la actividad.\",\"subsidies\":\"Ingresos sin contraprestaci\u00F3n directa por parte del beneficiario, destinados a una actividad o un proyecto espec\u00EDfico.\",\"taxes\":\"Contraprestaciones econ\u00F3micas recibidas por la prestaci\u00F3n de un servicio o por la utilizaci\u00F3n privativa o aprovechamiento especial del dominio p\u00FAblico.\",\"transferences\":\"Aportaciones de recursos financieros por parte del Ayuntamiento en concepto de subvenci\u00F3n previamente concedida.\"},\"total\":\"Total\",\"total_cost\":\"Coste total\"},\"debts\":{\"breakdown_debt\":\"Desglose de la deuda\",\"creditor\":\"Por acreedor\",\"date_debt\":\"Datos de deuda a 31 de diciembre de 2025.\",\"debtor\":\"Por deudor\",\"description\":\"La deuda financiera y a largo plazo del Ayuntamiento englova la deuda de todos sus entes dependientes (Sociedades Mercantiles, EPE\u2019s, Fundacio\u00F3ns, Consorcios).\",\"evolution_debt\":\"Evoluci\u00F3n de la deuda\",\"millions\":\"La unidad de las cifras de este gr\u00E1fico es millones de euros.\",\"title\":\"Deuda\",\"total_debt\":\"Deuda total\"},\"odss\":{\"amount\":\"Importe\",\"assigned\":\"Alineado\",\"description_html\":\"\\\\u003cp\\\\u003eDesde el a\u00F1o 2015, la ONU ha aprobado la Agenda 2030, incorporando los 17 Objetivos de Desarrollo Sostenible (ODS), y establecido una visi\u00F3n transformadora hacia la sostenibilidad econ\u00F3mica, social y ambiental, este Ayuntamiento ha colaborado en abrir un nuevo camino para mejorar la vida de todas y todos, sin dejar a nadie atr\u00E1s.\\\\u003c/p\\\\u003e \\\\u003cp\\\\u003eEs por ello, que despu\u00E9s de presentar el Plan Estrat\u00E9gico Municipal 2023-2027 alineado con los ODS, se compite la alineaci\u00F3n del presupuesto municipal con la Agenda 2030.\\\\u003c/p\\\\u003e \\\\u003cp\\\\u003eEl visor del presupuesto permite una mejor evaluaci\u00F3n de la adecuaci\u00F3n de los recursos utilizados y las prioridades pol\u00EDticas, y contribuye a dirigir los esfuerzos hacia las \u00E1reas donde se necesita un mayor enfoque.\\\\u003c/p\\\\u003e \\\\u003cp\\\\u003eEsta herramienta se plantea con el objetivo de ofrecer a la ciudadan\u00EDa una visi\u00F3n integral del grado de alineamiento de las gastos municipales de este a\u00F1o con la consecuci\u00F3n de los ODS.\\\\u003c/p\\\\u003e\",\"functional_code\":\"C\u00F3digo programa\",\"label_title_budgets_ods\":\"Distribuci\u00F3n de partidas por ODS\",\"label_title_ods\":\"Distribuci\u00F3n de gastos por Objetivos de Desarrollo Sostenible\",\"name\":\"Nombre\",\"ods_distribution\":\"Distribuci\u00F3n ODS\",\"title\":\"Presupuesto vigente alineado con los Objetivos de Desarrollo Sostenible (ODS)\",\"unassigned\":\"Sin alinear\",\"updated_date\":\"Datos actualizados el 18 de marzo de 2025\"},\"process_types\":{\"based_on_agreement\":\"Basat en Acord Marc\",\"competitive_dialogue\":\"Di\u00E1logo competitivo\",\"dynamic_acquisition\":\"Basado en sistema din\u00E1mico de adquisici\u00F3n\",\"innovation\":\"Asociaci\u00F3n para la innovaci\u00F3n\",\"innovation_derived\":\"Derivado de asociaci\u00F3n para la innovaci\u00F3n\",\"internal_rules\":\"Normas Internas\",\"minor_contract\":\"Contrato menor\",\"negotiated\":\"Licitaci\u00F3n con negociaci\u00F3n\",\"negotiated_with_publicity\":\"Negociado con publicidad\",\"negotiated_without_publicity\":\"Negociado sin publicidad\",\"open\":\"Abierto\",\"open_simplified\":\"Abierto simplificado\",\"others\":\"Otros\",\"project_competition\":\"Concurso de proyectos\",\"restricted\":\"Restringido\"},\"subsidies\":{\"amount\":\"Importe\",\"amount_distribution\":\"Distribuci\u00F3n por importes\",\"beneficiary\":\"Beneficiario\",\"call\":\"Convocatoria\",\"category\":\"Categor\u00EDa\",\"date\":\"Fecha\",\"dates\":\"Fechas\",\"description\":\"Visualizaci\u00F3n y an\u00E1lisis de las subvenciones concedidas por %{entity_name}\",\"details\":\"De acuerdo con lo previsto en el art\u00EDculo 7.8 del Real Decreto 130/2019, la informaci\u00F3n sobre concesiones permanecer\u00E1 publicada durante los cuatro a\u00F1os naturales siguientes al a\u00F1o en que se concedi\u00F3 la subvenci\u00F3n en el caso de personas jur\u00EDdicas, y en el caso de personas f\u00EDsicas la publicidad se reduce al a\u00F1o de concesi\u00F3n y al a\u00F1o siguiente.\",\"fromto\":\"Desde A N\u00BA. Subv.\",\"main_beneficiaries\":\"Principales beneficiarios\",\"more\":\"M\u00E1s de\",\"nav\":{\"subsidies\":\"Subvenciones\",\"summary\":\"Resumen\"},\"person\":\"Persona individual\",\"subsidies\":\"Subvenciones\",\"subsidies_amount\":\"Imp. Subvenci\u00F3n\",\"subsidies_total\":\"Total Subvenciones\",\"summary\":{\"collective_subsidies_for\":\"a colectivos por importe de\",\"individual_subsidies_for\":\"a particulares por importe de\",\"mean_amount\":\"Importe medio\",\"median_amount\":\"Importe mediano\",\"subsidies\":\"Subvenciones\",\"subsidies_for\":\"subvenciones por importe de\",\"tip_1\":\"El %{strong1} de las subvenciones son menores de %{strong2}\",\"tip_2\":\"La mayor subvenci\u00F3n supone un %{strong} de todo el gasto en subvenciones\",\"tip_3\":\"El %{strong} de subvenciones concentran el 50% de todo el gasto\"},\"title\":\"Subvenciones\"},\"tender_statuses\":{\"awarded\":\"Adjudicada\",\"cancelled\":\"Desistida\",\"evaluation\":\"Evaluaci\u00F3n\",\"modified\":\"Anulada\",\"partially_awarded\":\"Parcialmente adjudicada\",\"partially_resolved\":\"Parcialmente resuelta\",\"prior_announcement\":\"Anuncio previo\",\"prior_evaluation\":\"Evaluaci\u00F3n previa\",\"provisionally_resolved\":\"Adjudicaci\u00F3n provisional\",\"published\":\"Publicada\",\"resolved\":\"Resuelta\"},\"visualizations\":{\"title_beeswarm\":\"Contratos por tipo, volumen, tama\u00F1o y fecha\",\"tooltip_beeswarm\":\"Importe de adjudicaci\u00F3n\",\"tooltip_treemap\":\"Total contratos\"}}},\"grammatical_particles\":{\"from\":\"de\",\"of\":\"de\",\"of_the\":{\"f\":\"de la\",\"m\":\"del\",\"n\":\"del\"},\"our\":{\"f\":\"nuestra\",\"m\":\"nuestro\",\"n\":\"nuestro\"},\"the\":{\"f\":\"la\",\"m\":\"el\",\"n\":\"el\"},\"to\":\"a\",\"your\":{\"f\":\"tu\",\"m\":\"tu\",\"n\":\"tu\"}},\"helpers\":{\"page_entries_info\":{\"more_pages\":{\"display_entries\":\"Mostrando %{entry_name} \\\\u003cb\\\\u003e%{first}\\\\u0026nbsp;-\\\\u0026nbsp;%{last}\\\\u003c/b\\\\u003e de \\\\u003cb\\\\u003e%{total}\\\\u003c/b\\\\u003e en total\"},\"one_page\":{\"display_entries\":{\"one\":\"Mostrando \\\\u003cb\\\\u003e1\\\\u003c/b\\\\u003e %{entry_name}\",\"other\":\"Mostrando \\\\u003cb\\\\u003e%{count}\\\\u003c/b\\\\u003e %{entry_name}\",\"zero\":\"No hay %{entry_name}\"}}},\"select\":{\"prompt\":\"-- selecciona --\"},\"submit\":{\"create\":\"Crear\",\"submit\":\"Guardar\",\"update\":\"Actualizar\"}},\"invisible_captcha\":{\"sentence_for_humans\":\"Si es humano, por favor, ignore este campo.\",\"timestamp_error_message\":\"Perd\u00F3n, eso ha sido muy r\u00E1pido. Por favor, vuelva a enviar el formulario.\"},\"issue\":{\"events\":{\"issue_description_translations_changed\":\"Nuevo tema creado\"}},\"issues\":{\"events\":{\"issues_issue_created\":\"Tema creado\",\"issues_issue_updated\":\"Tema actualizado\"}},\"layouts\":{\"accept_privacy_policy_signup\":\"Al registrarse est\u00E1 aceptando la pol\u00EDtica de privacidad.\",\"application\":{\"disclaimer\":\"Esta web es una demostraci\u00F3n de Gobierto, software de transparencia y participaci\u00F3n.\",\"more_information\":\"M\u00E1s informaci\u00F3n en gobierto.es\",\"search\":\"Busca...\",\"session\":{\"alerts\":\"Sus alertas\",\"login\":\"Haga login o reg\u00EDstrese\",\"notifications\":\"Notificaciones\",\"sign_in\":\"Iniciar sesi\u00F3n\",\"sign_out\":\"Cerrar sesi\u00F3n\",\"title\":\"Tu cuenta\"},\"start\":\"Inicio\"},\"gobierto_budgets\":{\"application\":{\"about_the_data\":\"Sobre los datos\",\"disclaimer\":\"Esta web es una demostraci\u00F3n de Gobierto, software de transparencia y participaci\u00F3n\",\"is_open_source\":\"es software libre creado por\",\"more_information\":\"M\u00E1s informaci\u00F3n en gobierto.es\",\"session\":{\"admin\":\"Administraci\u00F3n\",\"alerts\":\"Tus alertas\",\"notifications\":\"Notificaciones\",\"sign_in\":\"Iniciar sesi\u00F3n\",\"sign_out\":\"Cerrar sesi\u00F3n\",\"title\":\"Tu cuenta\"}}},\"mailcheck\":{\"suggestion_message\":\"\u00BFQuieres decir\"},\"sandbox\":{\"application\":{\"about_the_data\":\"Sobre los datos\",\"disclaimer\":\"Esta web es una demostraci\u00F3n de Gobierto, software de transparencia y participaci\u00F3n\",\"is_open_source\":\"es software libre creado por\",\"more_information\":\"M\u00E1s informaci\u00F3n en gobierto.es\",\"session\":{\"admin\":\"Administraci\u00F3n\",\"alerts\":\"Tus alertas\",\"notifications\":\"Notificaciones\",\"sign_in\":\"Iniciar sesi\u00F3n\",\"sign_out\":\"Cerrar sesi\u00F3n\",\"title\":\"Tu cuenta\"}}},\"search\":{\"budget_line_item_expense\":\"Partida presupuestaria - Gasto\",\"budget_line_item_income\":\"Partida presupuestaria - Ingreso\",\"dataset_item\":\"Datos\",\"drag_drop_instructions\":\"Arrastre y suelte en la parte izquierda para colocar esta p\u00E1gina en el men\u00FA\",\"event_item\":\"Evento\",\"no_results\":\"La b\u00FAsqueda no ha coincidido con ninguna p\u00E1gina. Pruebe algo como usando t\u00E9rminos m\u00E1s generales o verificando la ortograf\u00EDa.\",\"page_item\":\"P\u00E1gina\",\"person_item\":\"Biograf\u00EDa\",\"person_post_item\":\"Post\",\"person_statement_item\":\"Declaraci\u00F3n\",\"plan_project_item\":\"Plan - Actuaci\u00F3n\",\"updated\":\"Actualizado\"}},\"locales\":{\"ca\":\"Catal\u00E1n\",\"ca_short\":\"CA\",\"en\":\"Ingl\u00E9s\",\"en_short\":\"EN\",\"es\":\"Castellano\",\"es_short\":\"ES\"},\"number\":{\"currency\":{\"format\":{\"delimiter\":\".\",\"format\":\"%n %u\",\"precision\":2,\"separator\":\",\",\"significant\":false,\"strip_insignificant_zeros\":false,\"unit\":\"\u20AC\"}},\"format\":{\"delimiter\":\".\",\"precision\":3,\"separator\":\",\",\"significant\":false,\"strip_insignificant_zeros\":false},\"human\":{\"decimal_units\":{\"format\":\"%n %u\",\"units\":{\"billion\":\"mil millones\",\"million\":\"mill\u00F3n\",\"quadrillion\":\"mil billones\",\"thousand\":\"mil\",\"trillion\":\"bill\u00F3n\",\"unit\":\"\"}},\"format\":{\"delimiter\":\"\",\"precision\":1,\"significant\":true,\"strip_insignificant_zeros\":true},\"storage_units\":{\"format\":\"%n %u\",\"units\":{\"byte\":{\"one\":\"Byte\",\"other\":\"Bytes\"},\"gb\":\"GB\",\"kb\":\"KB\",\"mb\":\"MB\",\"tb\":\"TB\"}}},\"percentage\":{\"format\":{\"delimiter\":\"\",\"format\":\"%n%\"}},\"precision\":{\"format\":{\"delimiter\":\"\"}}},\"routes\":{\"bio\":\"biografia\",\"department_people\":\"personas/departamentos/:department_slug\",\"departments\":\"departamentos\",\"events\":\"agendas\",\"executive_category_events\":\"agendas/directivos\",\"executive_category_past_events\":\"agendas/directivos/eventos-pasados\",\"gifts\":\"obsequios-y-regalos\",\"government\":\"gobierno\",\"government_party_events\":\"agendas/gobierno\",\"government_party_past_events\":\"agendas/gobierno/eventos-pasados\",\"interest_groups\":\"grupos-de-interes\",\"invitations\":\"invitaciones\",\"managers\":\"directivos\",\"messages\":\"contacto\",\"opposition\":\"oposicion\",\"opposition_party_events\":\"agendas/oposicion\",\"opposition_party_past_events\":\"agendas/oposicion/eventos-pasados\",\"past_events\":\"agendas/eventos-pasados\",\"people\":\"personas\",\"people_and_agendas\":\"cargos-y-agendas\",\"people_government\":\"personas/gobierno\",\"people_managers\":\"personas/directivos\",\"people_opposition\":\"personas/oposicion\",\"person_events\":\"agendas/:container_slug\",\"person_past_events\":\"agendas/:container_slug/eventos-pasados\",\"person_post_tags\":\"blogs/:person_slug/tags\",\"person_posts\":\"blogs/:person_slug\",\"person_statements\":\"declaraciones/:person_slug\",\"political_groups\":\"personas/grupos-politicos\",\"post_tags\":\"blogs/tags\",\"posts\":\"blogs/posts\",\"statements\":\"declaraciones\",\"trips\":\"viajes-y-desplazamientos\"},\"scopes\":{\"events\":{\"scopes_scope_created\":\"\u00C1mbito creado\",\"scopes_scope_updated\":\"\u00C1mbito actualizado\"}},\"shared\":{\"currently\":\"actualmente\",\"download_open_data\":{\"exports\":\"Descargue los datos en formato reutilizable\"},\"poll_question\":{\"multiple_choice_msg\":\"Puede elegir varias opciones\"},\"polls\":{\"no_unanswered_polls\":\"No hay encuestas pendientes de contestar.\",\"opinion\":\"Opine\"},\"previous\":\"anterior\"},\"sites\":{\"events\":{\"sites_site_created\":\"Sitio creado\",\"sites_site_destroyed\":\"Sitio eliminado\",\"sites_site_modules_updated\":\"M\u00F3dulos del sitio actualizados\",\"sites_site_updated\":\"Sitio actualizado\",\"sites_site_visibility_updated\":\"Sitio publicado\"}},\"support\":{\"array\":{\"last_word_connector\":\" y \",\"two_words_connector\":\" y \",\"words_connector\":\", \"}},\"time\":{\"am\":\"am\",\"formats\":{\"default\":\"%A, %d de %B de %Y %H:%M:%S %z\",\"from_to\":\"Del %{starts} al %{ends}\",\"long\":\"%d de %B de %Y %H:%M\",\"short\":\"%d de %b %H:%M\"},\"pm\":\"pm\"},\"user\":{\"census_verifications\":{\"create\":{\"error\":\"No se ha podido verificar tu identidad. Por favor verifica tus datos y vuelve a intentarlo. Si el problema persiste, ponte en contacto con tu administraci\u00F3n local.\",\"notice\":\"Tu identidad se ha verificado correctamente\"},\"form\":{\"verify\":\"Verificar\"},\"messages\":{\"already_verified\":\"Tu cuenta ya est\u00E1 verificada\",\"comments\":{\"not_verified\":\"La contribuci\u00F3n en la que deseas participar exige que verifiques que est\u00E1s empadronado/a en %{site_name}. Confirma tus datos para continuar (ser\u00E1n verificados contra el padr\u00F3n, si no est\u00E1s empadronado/a, no te podremos verificar)\"},\"consultation_responses\":{\"not_verified\":\"El proceso en el que deseas participar exige que verifiques que est\u00E1s empadronado/a en %{site_name}. Confirma tus datos para continuar (ser\u00E1n verificados contra el padr\u00F3n, si no est\u00E1s empadronado/a, no te podremos verificar)\"},\"contributions\":{\"not_verified\":\"La contribuci\u00F3n en la que deseas participar exige que verifiques que est\u00E1s empadronado/a en %{site_name}. Confirma tus datos para continuar (ser\u00E1n verificados contra el padr\u00F3n, si no est\u00E1s empadronado/a, no te podremos verificar)\"},\"flags\":{\"not_verified\":\"La contribuci\u00F3n en la que deseas participar exige que verifiques que est\u00E1s empadronado/a en %{site_name}. Confirma tus datos para continuar (ser\u00E1n verificados contra el padr\u00F3n, si no est\u00E1s empadronado/a, no te podremos verificar)\"},\"not_verified\":\"El proceso en el que deseas participar exige que verifiques que est\u00E1s empadronado/a en %{site_name}. Confirma tus datos para continuar (ser\u00E1n verificados contra el padr\u00F3n, si no est\u00E1s empadronado/a, no te podremos verificar)\",\"poll_answers\":{\"not_verified\":\"El proceso en el que deseas participar exige que verifiques que est\u00E1s empadronado/a en %{site_name}. Confirma tus datos para continuar (ser\u00E1n verificados contra el padr\u00F3n, si no est\u00E1s empadronado/a, no te podremos verificar)\"},\"process_contributions\":{\"not_verified\":\"La contribuci\u00F3n en la que deseas participar exige que verifiques que est\u00E1s empadronado/a en %{site_name}. Confirma tus datos para continuar (ser\u00E1n verificados contra el padr\u00F3n, si no est\u00E1s empadronado/a, no te podremos verificar)\"},\"votes\":{\"not_verified\":\"La contribuci\u00F3n en la que deseas participar exige que verifiques que est\u00E1s empadronado/a en %{site_name}. Confirma tus datos para continuar (ser\u00E1n verificados contra el padr\u00F3n, si no est\u00E1s empadronado/a, no te podremos verificar)\"}},\"new\":{\"title\":\"Verifica tu identidad\"}},\"confirmations\":{\"create\":{\"error\":\"Los datos que has introducido no parecen ser correctos. Por favor, int\u00E9ntalo de nuevo.\",\"success\":\"Sesi\u00F3n iniciada correctamente\"},\"form\":{\"document_number_notice\":\"N\u00FAmero de documento\",\"gender\":{\"female\":\"Mujer\",\"male\":\"Hombre\"},\"hints\":{\"census_locked\":\"Esta informaci\u00F3n proviene del censo, por lo que no es editable.\",\"date_of_birth\":\"Esta informaci\u00F3n ser\u00E1 privada, y nunca se identificar\u00E1 con tu perfil. El dato ser\u00E1 anonimizado, y te lo pedimos para poder obtener informaci\u00F3n segmentada para entender mejor las opiniones y preferencias de los ciudadanos.\",\"email\":\"Tu direcci\u00F3n de correo-e ser\u00E1 privada en todo momento. Solo lo utilizaremos para enviarte comunicaciones.\",\"gender\":\"Esta informaci\u00F3n ser\u00E1 privada, y nunca se identificar\u00E1 con tu perfil. El dato ser\u00E1 anonimizado, y te lo pedimos para poder obtener informaci\u00F3n segmentada para entender mejor las opiniones y preferencias de los ciudadanos.\"},\"submit\":\"Guardar\",\"your_gender_is\":\"Eres...\"},\"new\":{\"error\":\"La URL no parece ser correcta\",\"title\":\"Ya casi estamos: completa los siguientes datos para poder personalizar tus alertas y participar en el site. Podr\u00E1s completar tu perfil m\u00E1s adelante.\"}},\"custom_sessions\":{\"create\":{\"invalid_data\":\"Los datos recibidos no son v\u00E1lidos, no se ha podido crear la sesi\u00F3n\",\"not_confirmed\":\"Revisa tu correo-e y haz click en el enlace de confirmaci\u00F3n para poder acceder al servicio\",\"success\":\"Sesi\u00F3n iniciada correctamente\"},\"destroy\":{\"success\":\"Sesi\u00F3n terminada correctamente\"},\"null_strategy\":{\"edit_form\":{\"edit\":\"A\u00F1ada alg\u00FAn campo a este formulario\",\"session_title\":\"Por favor, rellene los campos que faltan (Null strategy)\",\"submit\":\"Enviar\"},\"new_form\":{\"session_title\":\"Iniciar sesi\u00F3n (Null strategy)\",\"submit\":\"Enviar\"}}},\"layouts\":{\"menu_subsections\":{\"admin\":\"Ajustes\",\"alerts\":\"Alertas\",\"notifications\":\"Notificaciones\"}},\"notification_mailer\":{\"notification_digest\":{\"bye\":\"Saludos\",\"hi\":\"Hola\",\"manage_notifications\":\"Recuerda que puedes administrar tus notificaciones en %{url}\",\"manage_notifications_html\":\"Recuerda que puedes administrar tus notificaciones en \\\\u003ca href=\\'%{url}\\'\\\\u003etu p\u00E1gina de preferencias\\\\u003c/a\\\\u003e\",\"new_activity\":\"Hay nueva actividad en %{site_name}\",\"subject\":\"Resumen de actividad en %{site_name}\"},\"single_notification\":{\"bye\":\"Saludos\",\"hi\":\"Hola\",\"manage_notifications\":\"Recuerda que puedes administrar tus notificaciones en %{url}\",\"manage_notifications_html\":\"Recuerda que puedes administrar tus notificaciones en \\\\u003ca href=\\'%{url}\\'\\\\u003etu p\u00E1gina de preferencias\\\\u003c/a\\\\u003e\",\"new_activity\":\"Hay una nueva actividad en %{site_name}\",\"subject\":\"Nueva actividad en %{site_name}: %{action_name}\"}},\"notifications\":{\"index\":{\"no_new_notifications\":\"No hay notificaciones nuevas\",\"title\":\"Actividad reciente\"}},\"passwords\":{\"create\":{\"error\":\"La direcci\u00F3n de email que has indicado no parece ser v\u00E1lida\",\"success\":\"Por favor, comprueba tu email para recibir las instrucciones\"},\"edit\":{\"error\":\"Esta URL no parece ser v\u00E1lida\",\"title\":\"Establece tu nueva contrase\u00F1a:\"},\"edit_form\":{\"submit\":\"Cambiar\"},\"update\":{\"error\":\"Ha habido un problema al cambiar tu contrase\u00F1a\",\"success\":\"Sesi\u00F3n iniciada correctamente\"}},\"registrations\":{\"create\":{\"email_taken\":\"El email ya est\u00E1 en uso. Prueba a hacer login o a recuperar la contrase\u00F1a\",\"error\":\"Los datos que has introducido no parecen ser v\u00E1lidos. Por favor, int\u00E9ntalo de nuevo.\",\"success\":\"Genial. Revisa tu correo-e y haz click en el enlace de confirmaci\u00F3n para poder continuar con el proceso de registro.\"}},\"sessions\":{\"create\":{\"error\":\"Los datos que has introducido no parecen ser v\u00E1lidos. Por favor, int\u00E9ntalo de nuevo.\",\"success\":\"Sesi\u00F3n iniciada correctamente\"},\"destroy\":{\"success\":\"Sesi\u00F3n terminada correctamente\"},\"new\":{\"password_title\":\"\u00BFNo recuerdas tu contrase\u00F1a? Te ayudamos:\",\"registration_title\":\"\u00BFNuevo por aqu\u00ED? Create una cuenta:\",\"session_title\":\"\u00BFYa tienes cuenta? Haz login\"},\"new_password_form\":{\"session_section\":\"\u00BFTe acuerdas de la contrase\u00F1a? Haz login\",\"submit\":\"Recuperar\"},\"registration_form\":{\"submit\":\"Vamos\"},\"session_form\":{\"password_section\":\"\u00BFContrase\u00F1a?\",\"submit\":\"Conectarse\"},\"user_already_authenticated\":\"Ya est\u00E1s autenticado.\",\"user_not_authorized\":\"No est\u00E1s autorizado.\",\"user_not_signed_in\":\"Reg\u00EDstrate o haz login si ya tienes cuenta para poder continuar.\"},\"settings\":{\"form\":{\"gender\":{\"female\":\"Mujer\",\"male\":\"Hombre\"},\"hints\":{\"census_locked\":\"Esta informaci\u00F3n proviene del censo, por lo que no es editable.\",\"date_of_birth\":\"Esta informaci\u00F3n ser\u00E1 privada, y nunca se identificar\u00E1 con tu perfil. El dato ser\u00E1 anonimizado, y te lo pedimos para poder obtener informaci\u00F3n segmentada para entender mejor las opiniones y preferencias de los ciudadanos.\",\"email\":\"Tu direcci\u00F3n de correo-e ser\u00E1 privada en todo momento. Solo lo utilizaremos para enviarte comunicaciones.\",\"gender\":\"Esta informaci\u00F3n ser\u00E1 privada, y nunca se identificar\u00E1 con tu perfil. El dato ser\u00E1 anonimizado, y te lo pedimos para poder obtener informaci\u00F3n segmentada para entender mejor las opiniones y preferencias de los ciudadanos.\"},\"submit\":\"Guardar\",\"your_gender_is\":\"Eres...\"},\"show\":{\"title\":\"Tu cuenta\"},\"update\":{\"error\":\"Ha habido un error al guardar tus ajustes\",\"success\":\"Ajustes guardados con \u00E9xito\"}},\"subscription_preferences\":{\"update\":{\"error\":\"Ha habido un problema al guardar los datos: %{details}\",\"update_success\":\"Se han actualizado las preferencias correctamente\"}},\"subscriptions\":{\"create\":{\"create_success\":\"Se ha realizado la suscripci\u00F3n\",\"delete_success\":\"Se ha cancelado esta suscripci\u00F3n\",\"error\":\"Ha ocurrido un problema al suscribirte: %{details}. Si ya est\u00E1s registrado, identif\u00EDcate \\\\u003ca href=\\\\\"%{sign_in_path}\\\\\"\\\\u003eaqu\u00ED\\\\u003c/a\\\\u003e.\"},\"destroy\":{\"success\":\"Se ha cancelado esta suscripci\u00F3n\"},\"index\":{\"areas\":\"\u00C1reas\",\"frequency\":\"Cada cu\u00E1nto\",\"modules\":{\"gobierto_budgets\":\"Presupuestos\",\"gobierto_observatory\":\"Observatorio\",\"gobierto_people\":\"Personas\"},\"notification_frequency\":{\"daily\":\"Resumen diario\",\"disabled\":\"Deshabilitadas\",\"hourly\":\"Resumen cada hora\",\"immediate\":\"Inmediatas\",\"submit\":\"Guardar\",\"weekly\":\"Resumen semanal\"},\"people\":\"Personas\",\"submit\":\"Guardar\",\"title\":\"Tus alertas\",\"whole_site\":\"Todo el site\"},\"subscribable_box\":{\"cancel\":\"Ya est\u00E1s suscrito. \u00BFCancelar?\",\"form\":{\"placeholders\":{\"user_email\":\"Tu correo-e\"},\"submit\":\"Suscribirme\"},\"subscribe\":\"Suscribirme\"},\"subscribable_button\":{\"event_followed\":\"\u00A1Evento seguido!\",\"follow_event\":\"Seguir evento\",\"follow_group_process\":\"Seguir grupo\",\"follow_issue\":\"Seguir tema\",\"follow_person\":\"Seguir persona\",\"follow_process\":\"Seguir proceso\",\"follow_scope\":\"Seguir \u00E1mbito\",\"group_process_followed\":\"\u00A1Grupo seguido!\",\"issue_followed\":\"\u00A1Tema seguido!\",\"manage_subscriptions\":\"Gestionar tus alertas\",\"person_followed\":\"\u00A1Persona seguida!\",\"process_followed\":\"\u00A1Proceso seguido!\",\"scope_followed\":\"\u00A1\u00C1mbito seguido!\"}},\"user_mailer\":{\"confirmation_instructions\":{\"bye\":\"Saludos\",\"click_link\":\"Para confirmar tu registro haz click en el siguiente enlace:\",\"hi\":\"Hola\",\"ignore_link\":\"si no te estabas suscribiendo en %{site_name}, puedes ignorar este mensaje\",\"subject\":\"Completa tu registro en %{site_name}\"},\"reset_password_instructions\":{\"bye\":\"Saludos\",\"click_link\":\"Has solicitado restaurar tu contrase\u00F1a. Pulsa en el siguiente enlace y sigue las instrucciones:\",\"hi\":\"Hola\",\"subject\":\"Restaura tu contrase\u00F1a\"},\"welcome\":{\"alerts\":\"Puedes gestionar tus alertas desde tu cuenta: %{subscriptions_url}\",\"bye\":\"Saludos\",\"hi\":\"Hola\",\"subject\":\"Bienvenido\",\"success\":\"Tu registro se ha completado con \u00E9xito. Ahora puedes interactuar en %{site_url} como usuario registrado.\"}}},\"users\":{\"events\":{\"users_user_updated\":\"Usuario actualizado\"}},\"views\":{\"delete\":\"Eliminar\",\"delete_confirm\":\"\u00BFSeguro? Esta operaci\u00F3n no tiene marcha atr\u00E1s.\",\"edit\":\"Edita\",\"forms\":{\"max_characters\":\"M\u00E1x. %{length} caracteres\",\"required\":\"Obligatorio\",\"required_and_max_characters\":\"Obligatorio y m\u00E1x. %{length} caracteres\"},\"of\":\"de\",\"pagination\":{\"next\":\"Siguiente\",\"previous\":\"Anterior\",\"truncate\":\"\\\\u0026hellip;\"},\"see\":{\"less\":\"ver menos\",\"more\":\"ver m\u00E1s\"}}}'));\n", "import '../../assets/stylesheets/data.scss'\nimport { GobiertoDataController } from './modules/gobierto_data_controller.js';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n  const appNode = document.getElementById(\"gobierto-datos-app\");\n\n  if (appNode) {\n    const { siteName, logoUrl, homeUrl, registrationDisabled } = appNode.dataset\n    new GobiertoDataController({ siteName, logoUrl, homeUrl, registrationDisabled });\n  }\n});\n", "import Vue from 'vue';\nimport { router } from '../lib/router';\nimport 'codemirror/lib/codemirror.css';\nimport { checkAndReportAccessibility } from '../../lib/vue/accessibility';\n\nif (Vue.config.devtools) {\n  Vue.use(checkAndReportAccessibility)\n}\nVue.config.productionTip = false;\n\nexport class GobiertoDataController {\n  constructor(options) {\n    const selector = \"gobierto-datos-app\";\n\n    // Mount Vue application\n    const entryPoint = document.getElementById(selector);\n    if (entryPoint) {\n      const htmlRouterBlock = `\n      <keep-alive>\n        <router-view></router-view>\n      </keep-alive>\n      `;\n\n      entryPoint.innerHTML = htmlRouterBlock;\n\n      new Vue({\n        router,\n        data: options,\n      }).$mount(entryPoint);\n    }\n  }\n}\n", "/*!\n * Vue.js v2.7.16\n * (c) 2014-2023 Evan You\n * Released under the MIT License.\n */\nvar emptyObject = Object.freeze({});\nvar isArray = Array.isArray;\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef(v) {\n    return v === undefined || v === null;\n}\nfunction isDef(v) {\n    return v !== undefined && v !== null;\n}\nfunction isTrue(v) {\n    return v === true;\n}\nfunction isFalse(v) {\n    return v === false;\n}\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive(value) {\n    return (typeof value === 'string' ||\n        typeof value === 'number' ||\n        // $flow-disable-line\n        typeof value === 'symbol' ||\n        typeof value === 'boolean');\n}\nfunction isFunction(value) {\n    return typeof value === 'function';\n}\n/**\n * Quick object check - this is primarily used to tell\n * objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject(obj) {\n    return obj !== null && typeof obj === 'object';\n}\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\nfunction toRawType(value) {\n    return _toString.call(value).slice(8, -1);\n}\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject(obj) {\n    return _toString.call(obj) === '[object Object]';\n}\nfunction isRegExp(v) {\n    return _toString.call(v) === '[object RegExp]';\n}\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex(val) {\n    var n = parseFloat(String(val));\n    return n >= 0 && Math.floor(n) === n && isFinite(val);\n}\nfunction isPromise(val) {\n    return (isDef(val) &&\n        typeof val.then === 'function' &&\n        typeof val.catch === 'function');\n}\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString(val) {\n    return val == null\n        ? ''\n        : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n            ? JSON.stringify(val, replacer, 2)\n            : String(val);\n}\nfunction replacer(_key, val) {\n    // avoid circular deps from v3\n    if (val && val.__v_isRef) {\n        return val.value;\n    }\n    return val;\n}\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber(val) {\n    var n = parseFloat(val);\n    return isNaN(n) ? val : n;\n}\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap(str, expectsLowerCase) {\n    var map = Object.create(null);\n    var list = str.split(',');\n    for (var i = 0; i < list.length; i++) {\n        map[list[i]] = true;\n    }\n    return expectsLowerCase ? function (val) { return map[val.toLowerCase()]; } : function (val) { return map[val]; };\n}\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n/**\n * Remove an item from an array.\n */\nfunction remove$2(arr, item) {\n    var len = arr.length;\n    if (len) {\n        // fast path for the only / last item\n        if (item === arr[len - 1]) {\n            arr.length = len - 1;\n            return;\n        }\n        var index = arr.indexOf(item);\n        if (index > -1) {\n            return arr.splice(index, 1);\n        }\n    }\n}\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn(obj, key) {\n    return hasOwnProperty.call(obj, key);\n}\n/**\n * Create a cached version of a pure function.\n */\nfunction cached(fn) {\n    var cache = Object.create(null);\n    return function cachedFn(str) {\n        var hit = cache[str];\n        return hit || (cache[str] = fn(str));\n    };\n}\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n    return str.replace(camelizeRE, function (_, c) { return (c ? c.toUpperCase() : ''); });\n});\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n    return str.charAt(0).toUpperCase() + str.slice(1);\n});\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n    return str.replace(hyphenateRE, '-$1').toLowerCase();\n});\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n/* istanbul ignore next */\nfunction polyfillBind(fn, ctx) {\n    function boundFn(a) {\n        var l = arguments.length;\n        return l\n            ? l > 1\n                ? fn.apply(ctx, arguments)\n                : fn.call(ctx, a)\n            : fn.call(ctx);\n    }\n    boundFn._length = fn.length;\n    return boundFn;\n}\nfunction nativeBind(fn, ctx) {\n    return fn.bind(ctx);\n}\n// @ts-expect-error bind cannot be `undefined`\nvar bind$1 = Function.prototype.bind ? nativeBind : polyfillBind;\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray(list, start) {\n    start = start || 0;\n    var i = list.length - start;\n    var ret = new Array(i);\n    while (i--) {\n        ret[i] = list[i + start];\n    }\n    return ret;\n}\n/**\n * Mix properties into target object.\n */\nfunction extend(to, _from) {\n    for (var key in _from) {\n        to[key] = _from[key];\n    }\n    return to;\n}\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject(arr) {\n    var res = {};\n    for (var i = 0; i < arr.length; i++) {\n        if (arr[i]) {\n            extend(res, arr[i]);\n        }\n    }\n    return res;\n}\n/* eslint-disable no-unused-vars */\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop(a, b, c) { }\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n/* eslint-enable no-unused-vars */\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n/**\n * Generate a string containing static keys from compiler modules.\n */\nfunction genStaticKeys$1(modules) {\n    return modules\n        .reduce(function (keys, m) { return keys.concat(m.staticKeys || []); }, [])\n        .join(',');\n}\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual(a, b) {\n    if (a === b)\n        return true;\n    var isObjectA = isObject(a);\n    var isObjectB = isObject(b);\n    if (isObjectA && isObjectB) {\n        try {\n            var isArrayA = Array.isArray(a);\n            var isArrayB = Array.isArray(b);\n            if (isArrayA && isArrayB) {\n                return (a.length === b.length &&\n                    a.every(function (e, i) {\n                        return looseEqual(e, b[i]);\n                    }));\n            }\n            else if (a instanceof Date && b instanceof Date) {\n                return a.getTime() === b.getTime();\n            }\n            else if (!isArrayA && !isArrayB) {\n                var keysA = Object.keys(a);\n                var keysB = Object.keys(b);\n                return (keysA.length === keysB.length &&\n                    keysA.every(function (key) {\n                        return looseEqual(a[key], b[key]);\n                    }));\n            }\n            else {\n                /* istanbul ignore next */\n                return false;\n            }\n        }\n        catch (e) {\n            /* istanbul ignore next */\n            return false;\n        }\n    }\n    else if (!isObjectA && !isObjectB) {\n        return String(a) === String(b);\n    }\n    else {\n        return false;\n    }\n}\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf(arr, val) {\n    for (var i = 0; i < arr.length; i++) {\n        if (looseEqual(arr[i], val))\n            return i;\n    }\n    return -1;\n}\n/**\n * Ensure a function is called only once.\n */\nfunction once(fn) {\n    var called = false;\n    return function () {\n        if (!called) {\n            called = true;\n            fn.apply(this, arguments);\n        }\n    };\n}\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is#polyfill\nfunction hasChanged(x, y) {\n    if (x === y) {\n        return x === 0 && 1 / x !== 1 / y;\n    }\n    else {\n        return x === x || y === y;\n    }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\nvar ASSET_TYPES = ['component', 'directive', 'filter'];\nvar LIFECYCLE_HOOKS = [\n    'beforeCreate',\n    'created',\n    'beforeMount',\n    'mounted',\n    'beforeUpdate',\n    'updated',\n    'beforeDestroy',\n    'destroyed',\n    'activated',\n    'deactivated',\n    'errorCaptured',\n    'serverPrefetch',\n    'renderTracked',\n    'renderTriggered'\n];\n\nvar config = {\n    /**\n     * Option merge strategies (used in core/util/options)\n     */\n    // $flow-disable-line\n    optionMergeStrategies: Object.create(null),\n    /**\n     * Whether to suppress warnings.\n     */\n    silent: false,\n    /**\n     * Show production mode tip message on boot?\n     */\n    productionTip: process.env.NODE_ENV !== 'production',\n    /**\n     * Whether to enable devtools\n     */\n    devtools: process.env.NODE_ENV !== 'production',\n    /**\n     * Whether to record perf\n     */\n    performance: false,\n    /**\n     * Error handler for watcher errors\n     */\n    errorHandler: null,\n    /**\n     * Warn handler for watcher warns\n     */\n    warnHandler: null,\n    /**\n     * Ignore certain custom elements\n     */\n    ignoredElements: [],\n    /**\n     * Custom user key aliases for v-on\n     */\n    // $flow-disable-line\n    keyCodes: Object.create(null),\n    /**\n     * Check if a tag is reserved so that it cannot be registered as a\n     * component. This is platform-dependent and may be overwritten.\n     */\n    isReservedTag: no,\n    /**\n     * Check if an attribute is reserved so that it cannot be used as a component\n     * prop. This is platform-dependent and may be overwritten.\n     */\n    isReservedAttr: no,\n    /**\n     * Check if a tag is an unknown element.\n     * Platform-dependent.\n     */\n    isUnknownElement: no,\n    /**\n     * Get the namespace of an element\n     */\n    getTagNamespace: noop,\n    /**\n     * Parse the real tag name for the specific platform.\n     */\n    parsePlatformTagName: identity,\n    /**\n     * Check if an attribute must be bound using property, e.g. value\n     * Platform-dependent.\n     */\n    mustUseProp: no,\n    /**\n     * Perform updates asynchronously. Intended to be used by Vue Test Utils\n     * This will significantly reduce performance if set to false.\n     */\n    async: true,\n    /**\n     * Exposed for legacy reasons\n     */\n    _lifecycleHooks: LIFECYCLE_HOOKS\n};\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved(str) {\n    var c = (str + '').charCodeAt(0);\n    return c === 0x24 || c === 0x5f;\n}\n/**\n * Define a property.\n */\nfunction def(obj, key, val, enumerable) {\n    Object.defineProperty(obj, key, {\n        value: val,\n        enumerable: !!enumerable,\n        writable: true,\n        configurable: true\n    });\n}\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp(\"[^\".concat(unicodeRegExp.source, \".$_\\\\d]\"));\nfunction parsePath(path) {\n    if (bailRE.test(path)) {\n        return;\n    }\n    var segments = path.split('.');\n    return function (obj) {\n        for (var i = 0; i < segments.length; i++) {\n            if (!obj)\n                return;\n            obj = obj[segments[i]];\n        }\n        return obj;\n    };\n}\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nUA && UA.indexOf('android') > 0;\nvar isIOS = UA && /iphone|ipad|ipod|ios/.test(UA);\nUA && /chrome\\/\\d+/.test(UA) && !isEdge;\nUA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n// Firefox has a \"watch\" function on Object.prototype...\n// @ts-expect-error firebox support\nvar nativeWatch = {}.watch;\nvar supportsPassive = false;\nif (inBrowser) {\n    try {\n        var opts = {};\n        Object.defineProperty(opts, 'passive', {\n            get: function () {\n                /* istanbul ignore next */\n                supportsPassive = true;\n            }\n        }); // https://github.com/facebook/flow/issues/285\n        window.addEventListener('test-passive', null, opts);\n    }\n    catch (e) { }\n}\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n    if (_isServer === undefined) {\n        /* istanbul ignore if */\n        if (!inBrowser && typeof global !== 'undefined') {\n            // detect presence of vue-server-renderer and avoid\n            // Webpack shimming the process\n            _isServer =\n                global['process'] && global['process'].env.VUE_ENV === 'server';\n        }\n        else {\n            _isServer = false;\n        }\n    }\n    return _isServer;\n};\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n/* istanbul ignore next */\nfunction isNative(Ctor) {\n    return typeof Ctor === 'function' && /native code/.test(Ctor.toString());\n}\nvar hasSymbol = typeof Symbol !== 'undefined' &&\n    isNative(Symbol) &&\n    typeof Reflect !== 'undefined' &&\n    isNative(Reflect.ownKeys);\nvar _Set; // $flow-disable-line\n/* istanbul ignore if */ if (typeof Set !== 'undefined' && isNative(Set)) {\n    // use native Set when available.\n    _Set = Set;\n}\nelse {\n    // a non-standard Set polyfill that only works with primitive keys.\n    _Set = /** @class */ (function () {\n        function Set() {\n            this.set = Object.create(null);\n        }\n        Set.prototype.has = function (key) {\n            return this.set[key] === true;\n        };\n        Set.prototype.add = function (key) {\n            this.set[key] = true;\n        };\n        Set.prototype.clear = function () {\n            this.set = Object.create(null);\n        };\n        return Set;\n    }());\n}\n\nvar currentInstance = null;\n/**\n * This is exposed for compatibility with v3 (e.g. some functions in VueUse\n * relies on it). Do not use this internally, just use `currentInstance`.\n *\n * @internal this function needs manual type declaration because it relies\n * on previously manually authored types from Vue 2\n */\nfunction getCurrentInstance() {\n    return currentInstance && { proxy: currentInstance };\n}\n/**\n * @internal\n */\nfunction setCurrentInstance(vm) {\n    if (vm === void 0) { vm = null; }\n    if (!vm)\n        currentInstance && currentInstance._scope.off();\n    currentInstance = vm;\n    vm && vm._scope.on();\n}\n\n/**\n * @internal\n */\nvar VNode = /** @class */ (function () {\n    function VNode(tag, data, children, text, elm, context, componentOptions, asyncFactory) {\n        this.tag = tag;\n        this.data = data;\n        this.children = children;\n        this.text = text;\n        this.elm = elm;\n        this.ns = undefined;\n        this.context = context;\n        this.fnContext = undefined;\n        this.fnOptions = undefined;\n        this.fnScopeId = undefined;\n        this.key = data && data.key;\n        this.componentOptions = componentOptions;\n        this.componentInstance = undefined;\n        this.parent = undefined;\n        this.raw = false;\n        this.isStatic = false;\n        this.isRootInsert = true;\n        this.isComment = false;\n        this.isCloned = false;\n        this.isOnce = false;\n        this.asyncFactory = asyncFactory;\n        this.asyncMeta = undefined;\n        this.isAsyncPlaceholder = false;\n    }\n    Object.defineProperty(VNode.prototype, \"child\", {\n        // DEPRECATED: alias for componentInstance for backwards compat.\n        /* istanbul ignore next */\n        get: function () {\n            return this.componentInstance;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    return VNode;\n}());\nvar createEmptyVNode = function (text) {\n    if (text === void 0) { text = ''; }\n    var node = new VNode();\n    node.text = text;\n    node.isComment = true;\n    return node;\n};\nfunction createTextVNode(val) {\n    return new VNode(undefined, undefined, undefined, String(val));\n}\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode(vnode) {\n    var cloned = new VNode(vnode.tag, vnode.data, \n    // #7975\n    // clone children array to avoid mutating original in case of cloning\n    // a child.\n    vnode.children && vnode.children.slice(), vnode.text, vnode.elm, vnode.context, vnode.componentOptions, vnode.asyncFactory);\n    cloned.ns = vnode.ns;\n    cloned.isStatic = vnode.isStatic;\n    cloned.key = vnode.key;\n    cloned.isComment = vnode.isComment;\n    cloned.fnContext = vnode.fnContext;\n    cloned.fnOptions = vnode.fnOptions;\n    cloned.fnScopeId = vnode.fnScopeId;\n    cloned.asyncMeta = vnode.asyncMeta;\n    cloned.isCloned = true;\n    return cloned;\n}\n\n/* not type checking this file because flow doesn't play well with Proxy */\nvar initProxy;\nif (process.env.NODE_ENV !== 'production') {\n    var allowedGlobals_1 = makeMap('Infinity,undefined,NaN,isFinite,isNaN,' +\n        'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n        'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,' +\n        'require' // for Webpack/Browserify\n    );\n    var warnNonPresent_1 = function (target, key) {\n        warn$2(\"Property or method \\\"\".concat(key, \"\\\" is not defined on the instance but \") +\n            'referenced during render. Make sure that this property is reactive, ' +\n            'either in the data option, or for class-based components, by ' +\n            'initializing the property. ' +\n            'See: https://v2.vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.', target);\n    };\n    var warnReservedPrefix_1 = function (target, key) {\n        warn$2(\"Property \\\"\".concat(key, \"\\\" must be accessed with \\\"$data.\").concat(key, \"\\\" because \") +\n            'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n            'prevent conflicts with Vue internals. ' +\n            'See: https://v2.vuejs.org/v2/api/#data', target);\n    };\n    var hasProxy_1 = typeof Proxy !== 'undefined' && isNative(Proxy);\n    if (hasProxy_1) {\n        var isBuiltInModifier_1 = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n        config.keyCodes = new Proxy(config.keyCodes, {\n            set: function (target, key, value) {\n                if (isBuiltInModifier_1(key)) {\n                    warn$2(\"Avoid overwriting built-in modifier in config.keyCodes: .\".concat(key));\n                    return false;\n                }\n                else {\n                    target[key] = value;\n                    return true;\n                }\n            }\n        });\n    }\n    var hasHandler_1 = {\n        has: function (target, key) {\n            var has = key in target;\n            var isAllowed = allowedGlobals_1(key) ||\n                (typeof key === 'string' &&\n                    key.charAt(0) === '_' &&\n                    !(key in target.$data));\n            if (!has && !isAllowed) {\n                if (key in target.$data)\n                    warnReservedPrefix_1(target, key);\n                else\n                    warnNonPresent_1(target, key);\n            }\n            return has || !isAllowed;\n        }\n    };\n    var getHandler_1 = {\n        get: function (target, key) {\n            if (typeof key === 'string' && !(key in target)) {\n                if (key in target.$data)\n                    warnReservedPrefix_1(target, key);\n                else\n                    warnNonPresent_1(target, key);\n            }\n            return target[key];\n        }\n    };\n    initProxy = function initProxy(vm) {\n        if (hasProxy_1) {\n            // determine which proxy handler to use\n            var options = vm.$options;\n            var handlers = options.render && options.render._withStripped ? getHandler_1 : hasHandler_1;\n            vm._renderProxy = new Proxy(vm, handlers);\n        }\n        else {\n            vm._renderProxy = vm;\n        }\n    };\n}\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    };\r\n    return __assign.apply(this, arguments);\r\n};\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n    var e = new Error(message);\r\n    return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nvar uid$2 = 0;\nvar pendingCleanupDeps = [];\nvar cleanupDeps = function () {\n    for (var i = 0; i < pendingCleanupDeps.length; i++) {\n        var dep = pendingCleanupDeps[i];\n        dep.subs = dep.subs.filter(function (s) { return s; });\n        dep._pending = false;\n    }\n    pendingCleanupDeps.length = 0;\n};\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n * @internal\n */\nvar Dep = /** @class */ (function () {\n    function Dep() {\n        // pending subs cleanup\n        this._pending = false;\n        this.id = uid$2++;\n        this.subs = [];\n    }\n    Dep.prototype.addSub = function (sub) {\n        this.subs.push(sub);\n    };\n    Dep.prototype.removeSub = function (sub) {\n        // #12696 deps with massive amount of subscribers are extremely slow to\n        // clean up in Chromium\n        // to workaround this, we unset the sub for now, and clear them on\n        // next scheduler flush.\n        this.subs[this.subs.indexOf(sub)] = null;\n        if (!this._pending) {\n            this._pending = true;\n            pendingCleanupDeps.push(this);\n        }\n    };\n    Dep.prototype.depend = function (info) {\n        if (Dep.target) {\n            Dep.target.addDep(this);\n            if (process.env.NODE_ENV !== 'production' && info && Dep.target.onTrack) {\n                Dep.target.onTrack(__assign({ effect: Dep.target }, info));\n            }\n        }\n    };\n    Dep.prototype.notify = function (info) {\n        // stabilize the subscriber list first\n        var subs = this.subs.filter(function (s) { return s; });\n        if (process.env.NODE_ENV !== 'production' && !config.async) {\n            // subs aren't sorted in scheduler if not running async\n            // we need to sort them now to make sure they fire in correct\n            // order\n            subs.sort(function (a, b) { return a.id - b.id; });\n        }\n        for (var i = 0, l = subs.length; i < l; i++) {\n            var sub = subs[i];\n            if (process.env.NODE_ENV !== 'production' && info) {\n                sub.onTrigger &&\n                    sub.onTrigger(__assign({ effect: subs[i] }, info));\n            }\n            sub.update();\n        }\n    };\n    return Dep;\n}());\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\nfunction pushTarget(target) {\n    targetStack.push(target);\n    Dep.target = target;\n}\nfunction popTarget() {\n    targetStack.pop();\n    Dep.target = targetStack[targetStack.length - 1];\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\nvar methodsToPatch = [\n    'push',\n    'pop',\n    'shift',\n    'unshift',\n    'splice',\n    'sort',\n    'reverse'\n];\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n    // cache original method\n    var original = arrayProto[method];\n    def(arrayMethods, method, function mutator() {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var result = original.apply(this, args);\n        var ob = this.__ob__;\n        var inserted;\n        switch (method) {\n            case 'push':\n            case 'unshift':\n                inserted = args;\n                break;\n            case 'splice':\n                inserted = args.slice(2);\n                break;\n        }\n        if (inserted)\n            ob.observeArray(inserted);\n        // notify change\n        if (process.env.NODE_ENV !== 'production') {\n            ob.dep.notify({\n                type: \"array mutation\" /* TriggerOpTypes.ARRAY_MUTATION */,\n                target: this,\n                key: method\n            });\n        }\n        else {\n            ob.dep.notify();\n        }\n        return result;\n    });\n});\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\nvar NO_INITIAL_VALUE = {};\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\nfunction toggleObserving(value) {\n    shouldObserve = value;\n}\n// ssr mock dep\nvar mockDep = {\n    notify: noop,\n    depend: noop,\n    addSub: noop,\n    removeSub: noop\n};\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = /** @class */ (function () {\n    function Observer(value, shallow, mock) {\n        if (shallow === void 0) { shallow = false; }\n        if (mock === void 0) { mock = false; }\n        this.value = value;\n        this.shallow = shallow;\n        this.mock = mock;\n        // this.value = value\n        this.dep = mock ? mockDep : new Dep();\n        this.vmCount = 0;\n        def(value, '__ob__', this);\n        if (isArray(value)) {\n            if (!mock) {\n                if (hasProto) {\n                    value.__proto__ = arrayMethods;\n                    /* eslint-enable no-proto */\n                }\n                else {\n                    for (var i = 0, l = arrayKeys.length; i < l; i++) {\n                        var key = arrayKeys[i];\n                        def(value, key, arrayMethods[key]);\n                    }\n                }\n            }\n            if (!shallow) {\n                this.observeArray(value);\n            }\n        }\n        else {\n            /**\n             * Walk through all properties and convert them into\n             * getter/setters. This method should only be called when\n             * value type is Object.\n             */\n            var keys = Object.keys(value);\n            for (var i = 0; i < keys.length; i++) {\n                var key = keys[i];\n                defineReactive(value, key, NO_INITIAL_VALUE, undefined, shallow, mock);\n            }\n        }\n    }\n    /**\n     * Observe a list of Array items.\n     */\n    Observer.prototype.observeArray = function (value) {\n        for (var i = 0, l = value.length; i < l; i++) {\n            observe(value[i], false, this.mock);\n        }\n    };\n    return Observer;\n}());\n// helpers\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe(value, shallow, ssrMockReactivity) {\n    if (value && hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n        return value.__ob__;\n    }\n    if (shouldObserve &&\n        (ssrMockReactivity || !isServerRendering()) &&\n        (isArray(value) || isPlainObject(value)) &&\n        Object.isExtensible(value) &&\n        !value.__v_skip /* ReactiveFlags.SKIP */ &&\n        !isRef(value) &&\n        !(value instanceof VNode)) {\n        return new Observer(value, shallow, ssrMockReactivity);\n    }\n}\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive(obj, key, val, customSetter, shallow, mock, observeEvenIfShallow) {\n    if (observeEvenIfShallow === void 0) { observeEvenIfShallow = false; }\n    var dep = new Dep();\n    var property = Object.getOwnPropertyDescriptor(obj, key);\n    if (property && property.configurable === false) {\n        return;\n    }\n    // cater for pre-defined getter/setters\n    var getter = property && property.get;\n    var setter = property && property.set;\n    if ((!getter || setter) &&\n        (val === NO_INITIAL_VALUE || arguments.length === 2)) {\n        val = obj[key];\n    }\n    var childOb = shallow ? val && val.__ob__ : observe(val, false, mock);\n    Object.defineProperty(obj, key, {\n        enumerable: true,\n        configurable: true,\n        get: function reactiveGetter() {\n            var value = getter ? getter.call(obj) : val;\n            if (Dep.target) {\n                if (process.env.NODE_ENV !== 'production') {\n                    dep.depend({\n                        target: obj,\n                        type: \"get\" /* TrackOpTypes.GET */,\n                        key: key\n                    });\n                }\n                else {\n                    dep.depend();\n                }\n                if (childOb) {\n                    childOb.dep.depend();\n                    if (isArray(value)) {\n                        dependArray(value);\n                    }\n                }\n            }\n            return isRef(value) && !shallow ? value.value : value;\n        },\n        set: function reactiveSetter(newVal) {\n            var value = getter ? getter.call(obj) : val;\n            if (!hasChanged(value, newVal)) {\n                return;\n            }\n            if (process.env.NODE_ENV !== 'production' && customSetter) {\n                customSetter();\n            }\n            if (setter) {\n                setter.call(obj, newVal);\n            }\n            else if (getter) {\n                // #7981: for accessor properties without setter\n                return;\n            }\n            else if (!shallow && isRef(value) && !isRef(newVal)) {\n                value.value = newVal;\n                return;\n            }\n            else {\n                val = newVal;\n            }\n            childOb = shallow ? newVal && newVal.__ob__ : observe(newVal, false, mock);\n            if (process.env.NODE_ENV !== 'production') {\n                dep.notify({\n                    type: \"set\" /* TriggerOpTypes.SET */,\n                    target: obj,\n                    key: key,\n                    newValue: newVal,\n                    oldValue: value\n                });\n            }\n            else {\n                dep.notify();\n            }\n        }\n    });\n    return dep;\n}\nfunction set(target, key, val) {\n    if (process.env.NODE_ENV !== 'production' && (isUndef(target) || isPrimitive(target))) {\n        warn$2(\"Cannot set reactive property on undefined, null, or primitive value: \".concat(target));\n    }\n    if (isReadonly(target)) {\n        process.env.NODE_ENV !== 'production' && warn$2(\"Set operation on key \\\"\".concat(key, \"\\\" failed: target is readonly.\"));\n        return;\n    }\n    var ob = target.__ob__;\n    if (isArray(target) && isValidArrayIndex(key)) {\n        target.length = Math.max(target.length, key);\n        target.splice(key, 1, val);\n        // when mocking for SSR, array methods are not hijacked\n        if (ob && !ob.shallow && ob.mock) {\n            observe(val, false, true);\n        }\n        return val;\n    }\n    if (key in target && !(key in Object.prototype)) {\n        target[key] = val;\n        return val;\n    }\n    if (target._isVue || (ob && ob.vmCount)) {\n        process.env.NODE_ENV !== 'production' &&\n            warn$2('Avoid adding reactive properties to a Vue instance or its root $data ' +\n                'at runtime - declare it upfront in the data option.');\n        return val;\n    }\n    if (!ob) {\n        target[key] = val;\n        return val;\n    }\n    defineReactive(ob.value, key, val, undefined, ob.shallow, ob.mock);\n    if (process.env.NODE_ENV !== 'production') {\n        ob.dep.notify({\n            type: \"add\" /* TriggerOpTypes.ADD */,\n            target: target,\n            key: key,\n            newValue: val,\n            oldValue: undefined\n        });\n    }\n    else {\n        ob.dep.notify();\n    }\n    return val;\n}\nfunction del(target, key) {\n    if (process.env.NODE_ENV !== 'production' && (isUndef(target) || isPrimitive(target))) {\n        warn$2(\"Cannot delete reactive property on undefined, null, or primitive value: \".concat(target));\n    }\n    if (isArray(target) && isValidArrayIndex(key)) {\n        target.splice(key, 1);\n        return;\n    }\n    var ob = target.__ob__;\n    if (target._isVue || (ob && ob.vmCount)) {\n        process.env.NODE_ENV !== 'production' &&\n            warn$2('Avoid deleting properties on a Vue instance or its root $data ' +\n                '- just set it to null.');\n        return;\n    }\n    if (isReadonly(target)) {\n        process.env.NODE_ENV !== 'production' &&\n            warn$2(\"Delete operation on key \\\"\".concat(key, \"\\\" failed: target is readonly.\"));\n        return;\n    }\n    if (!hasOwn(target, key)) {\n        return;\n    }\n    delete target[key];\n    if (!ob) {\n        return;\n    }\n    if (process.env.NODE_ENV !== 'production') {\n        ob.dep.notify({\n            type: \"delete\" /* TriggerOpTypes.DELETE */,\n            target: target,\n            key: key\n        });\n    }\n    else {\n        ob.dep.notify();\n    }\n}\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray(value) {\n    for (var e = void 0, i = 0, l = value.length; i < l; i++) {\n        e = value[i];\n        if (e && e.__ob__) {\n            e.__ob__.dep.depend();\n        }\n        if (isArray(e)) {\n            dependArray(e);\n        }\n    }\n}\n\nfunction reactive(target) {\n    makeReactive(target, false);\n    return target;\n}\n/**\n * Return a shallowly-reactive copy of the original object, where only the root\n * level properties are reactive. It also does not auto-unwrap refs (even at the\n * root level).\n */\nfunction shallowReactive(target) {\n    makeReactive(target, true);\n    def(target, \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */, true);\n    return target;\n}\nfunction makeReactive(target, shallow) {\n    // if trying to observe a readonly proxy, return the readonly version.\n    if (!isReadonly(target)) {\n        if (process.env.NODE_ENV !== 'production') {\n            if (isArray(target)) {\n                warn$2(\"Avoid using Array as root value for \".concat(shallow ? \"shallowReactive()\" : \"reactive()\", \" as it cannot be tracked in watch() or watchEffect(). Use \").concat(shallow ? \"shallowRef()\" : \"ref()\", \" instead. This is a Vue-2-only limitation.\"));\n            }\n            var existingOb = target && target.__ob__;\n            if (existingOb && existingOb.shallow !== shallow) {\n                warn$2(\"Target is already a \".concat(existingOb.shallow ? \"\" : \"non-\", \"shallow reactive object, and cannot be converted to \").concat(shallow ? \"\" : \"non-\", \"shallow.\"));\n            }\n        }\n        var ob = observe(target, shallow, isServerRendering() /* ssr mock reactivity */);\n        if (process.env.NODE_ENV !== 'production' && !ob) {\n            if (target == null || isPrimitive(target)) {\n                warn$2(\"value cannot be made reactive: \".concat(String(target)));\n            }\n            if (isCollectionType(target)) {\n                warn$2(\"Vue 2 does not support reactive collection types such as Map or Set.\");\n            }\n        }\n    }\n}\nfunction isReactive(value) {\n    if (isReadonly(value)) {\n        return isReactive(value[\"__v_raw\" /* ReactiveFlags.RAW */]);\n    }\n    return !!(value && value.__ob__);\n}\nfunction isShallow(value) {\n    return !!(value && value.__v_isShallow);\n}\nfunction isReadonly(value) {\n    return !!(value && value.__v_isReadonly);\n}\nfunction isProxy(value) {\n    return isReactive(value) || isReadonly(value);\n}\nfunction toRaw(observed) {\n    var raw = observed && observed[\"__v_raw\" /* ReactiveFlags.RAW */];\n    return raw ? toRaw(raw) : observed;\n}\nfunction markRaw(value) {\n    // non-extensible objects won't be observed anyway\n    if (Object.isExtensible(value)) {\n        def(value, \"__v_skip\" /* ReactiveFlags.SKIP */, true);\n    }\n    return value;\n}\n/**\n * @internal\n */\nfunction isCollectionType(value) {\n    var type = toRawType(value);\n    return (type === 'Map' || type === 'WeakMap' || type === 'Set' || type === 'WeakSet');\n}\n\n/**\n * @internal\n */\nvar RefFlag = \"__v_isRef\";\nfunction isRef(r) {\n    return !!(r && r.__v_isRef === true);\n}\nfunction ref$1(value) {\n    return createRef(value, false);\n}\nfunction shallowRef(value) {\n    return createRef(value, true);\n}\nfunction createRef(rawValue, shallow) {\n    if (isRef(rawValue)) {\n        return rawValue;\n    }\n    var ref = {};\n    def(ref, RefFlag, true);\n    def(ref, \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */, shallow);\n    def(ref, 'dep', defineReactive(ref, 'value', rawValue, null, shallow, isServerRendering()));\n    return ref;\n}\nfunction triggerRef(ref) {\n    if (process.env.NODE_ENV !== 'production' && !ref.dep) {\n        warn$2(\"received object is not a triggerable ref.\");\n    }\n    if (process.env.NODE_ENV !== 'production') {\n        ref.dep &&\n            ref.dep.notify({\n                type: \"set\" /* TriggerOpTypes.SET */,\n                target: ref,\n                key: 'value'\n            });\n    }\n    else {\n        ref.dep && ref.dep.notify();\n    }\n}\nfunction unref(ref) {\n    return isRef(ref) ? ref.value : ref;\n}\nfunction proxyRefs(objectWithRefs) {\n    if (isReactive(objectWithRefs)) {\n        return objectWithRefs;\n    }\n    var proxy = {};\n    var keys = Object.keys(objectWithRefs);\n    for (var i = 0; i < keys.length; i++) {\n        proxyWithRefUnwrap(proxy, objectWithRefs, keys[i]);\n    }\n    return proxy;\n}\nfunction proxyWithRefUnwrap(target, source, key) {\n    Object.defineProperty(target, key, {\n        enumerable: true,\n        configurable: true,\n        get: function () {\n            var val = source[key];\n            if (isRef(val)) {\n                return val.value;\n            }\n            else {\n                var ob = val && val.__ob__;\n                if (ob)\n                    ob.dep.depend();\n                return val;\n            }\n        },\n        set: function (value) {\n            var oldValue = source[key];\n            if (isRef(oldValue) && !isRef(value)) {\n                oldValue.value = value;\n            }\n            else {\n                source[key] = value;\n            }\n        }\n    });\n}\nfunction customRef(factory) {\n    var dep = new Dep();\n    var _a = factory(function () {\n        if (process.env.NODE_ENV !== 'production') {\n            dep.depend({\n                target: ref,\n                type: \"get\" /* TrackOpTypes.GET */,\n                key: 'value'\n            });\n        }\n        else {\n            dep.depend();\n        }\n    }, function () {\n        if (process.env.NODE_ENV !== 'production') {\n            dep.notify({\n                target: ref,\n                type: \"set\" /* TriggerOpTypes.SET */,\n                key: 'value'\n            });\n        }\n        else {\n            dep.notify();\n        }\n    }), get = _a.get, set = _a.set;\n    var ref = {\n        get value() {\n            return get();\n        },\n        set value(newVal) {\n            set(newVal);\n        }\n    };\n    def(ref, RefFlag, true);\n    return ref;\n}\nfunction toRefs(object) {\n    if (process.env.NODE_ENV !== 'production' && !isReactive(object)) {\n        warn$2(\"toRefs() expects a reactive object but received a plain one.\");\n    }\n    var ret = isArray(object) ? new Array(object.length) : {};\n    for (var key in object) {\n        ret[key] = toRef(object, key);\n    }\n    return ret;\n}\nfunction toRef(object, key, defaultValue) {\n    var val = object[key];\n    if (isRef(val)) {\n        return val;\n    }\n    var ref = {\n        get value() {\n            var val = object[key];\n            return val === undefined ? defaultValue : val;\n        },\n        set value(newVal) {\n            object[key] = newVal;\n        }\n    };\n    def(ref, RefFlag, true);\n    return ref;\n}\n\nvar rawToReadonlyFlag = \"__v_rawToReadonly\";\nvar rawToShallowReadonlyFlag = \"__v_rawToShallowReadonly\";\nfunction readonly(target) {\n    return createReadonly(target, false);\n}\nfunction createReadonly(target, shallow) {\n    if (!isPlainObject(target)) {\n        if (process.env.NODE_ENV !== 'production') {\n            if (isArray(target)) {\n                warn$2(\"Vue 2 does not support readonly arrays.\");\n            }\n            else if (isCollectionType(target)) {\n                warn$2(\"Vue 2 does not support readonly collection types such as Map or Set.\");\n            }\n            else {\n                warn$2(\"value cannot be made readonly: \".concat(typeof target));\n            }\n        }\n        return target;\n    }\n    if (process.env.NODE_ENV !== 'production' && !Object.isExtensible(target)) {\n        warn$2(\"Vue 2 does not support creating readonly proxy for non-extensible object.\");\n    }\n    // already a readonly object\n    if (isReadonly(target)) {\n        return target;\n    }\n    // already has a readonly proxy\n    var existingFlag = shallow ? rawToShallowReadonlyFlag : rawToReadonlyFlag;\n    var existingProxy = target[existingFlag];\n    if (existingProxy) {\n        return existingProxy;\n    }\n    var proxy = Object.create(Object.getPrototypeOf(target));\n    def(target, existingFlag, proxy);\n    def(proxy, \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */, true);\n    def(proxy, \"__v_raw\" /* ReactiveFlags.RAW */, target);\n    if (isRef(target)) {\n        def(proxy, RefFlag, true);\n    }\n    if (shallow || isShallow(target)) {\n        def(proxy, \"__v_isShallow\" /* ReactiveFlags.IS_SHALLOW */, true);\n    }\n    var keys = Object.keys(target);\n    for (var i = 0; i < keys.length; i++) {\n        defineReadonlyProperty(proxy, target, keys[i], shallow);\n    }\n    return proxy;\n}\nfunction defineReadonlyProperty(proxy, target, key, shallow) {\n    Object.defineProperty(proxy, key, {\n        enumerable: true,\n        configurable: true,\n        get: function () {\n            var val = target[key];\n            return shallow || !isPlainObject(val) ? val : readonly(val);\n        },\n        set: function () {\n            process.env.NODE_ENV !== 'production' &&\n                warn$2(\"Set operation on key \\\"\".concat(key, \"\\\" failed: target is readonly.\"));\n        }\n    });\n}\n/**\n * Returns a reactive-copy of the original object, where only the root level\n * properties are readonly, and does NOT unwrap refs nor recursively convert\n * returned properties.\n * This is used for creating the props proxy object for stateful components.\n */\nfunction shallowReadonly(target) {\n    return createReadonly(target, true);\n}\n\nfunction computed(getterOrOptions, debugOptions) {\n    var getter;\n    var setter;\n    var onlyGetter = isFunction(getterOrOptions);\n    if (onlyGetter) {\n        getter = getterOrOptions;\n        setter = process.env.NODE_ENV !== 'production'\n            ? function () {\n                warn$2('Write operation failed: computed value is readonly');\n            }\n            : noop;\n    }\n    else {\n        getter = getterOrOptions.get;\n        setter = getterOrOptions.set;\n    }\n    var watcher = isServerRendering()\n        ? null\n        : new Watcher(currentInstance, getter, noop, { lazy: true });\n    if (process.env.NODE_ENV !== 'production' && watcher && debugOptions) {\n        watcher.onTrack = debugOptions.onTrack;\n        watcher.onTrigger = debugOptions.onTrigger;\n    }\n    var ref = {\n        // some libs rely on the presence effect for checking computed refs\n        // from normal refs, but the implementation doesn't matter\n        effect: watcher,\n        get value() {\n            if (watcher) {\n                if (watcher.dirty) {\n                    watcher.evaluate();\n                }\n                if (Dep.target) {\n                    if (process.env.NODE_ENV !== 'production' && Dep.target.onTrack) {\n                        Dep.target.onTrack({\n                            effect: Dep.target,\n                            target: ref,\n                            type: \"get\" /* TrackOpTypes.GET */,\n                            key: 'value'\n                        });\n                    }\n                    watcher.depend();\n                }\n                return watcher.value;\n            }\n            else {\n                return getter();\n            }\n        },\n        set value(newVal) {\n            setter(newVal);\n        }\n    };\n    def(ref, RefFlag, true);\n    def(ref, \"__v_isReadonly\" /* ReactiveFlags.IS_READONLY */, onlyGetter);\n    return ref;\n}\n\nvar mark;\nvar measure;\nif (process.env.NODE_ENV !== 'production') {\n    var perf_1 = inBrowser && window.performance;\n    /* istanbul ignore if */\n    if (perf_1 &&\n        // @ts-ignore\n        perf_1.mark &&\n        // @ts-ignore\n        perf_1.measure &&\n        // @ts-ignore\n        perf_1.clearMarks &&\n        // @ts-ignore\n        perf_1.clearMeasures) {\n        mark = function (tag) { return perf_1.mark(tag); };\n        measure = function (name, startTag, endTag) {\n            perf_1.measure(name, startTag, endTag);\n            perf_1.clearMarks(startTag);\n            perf_1.clearMarks(endTag);\n            // perf.clearMeasures(name)\n        };\n    }\n}\n\nvar normalizeEvent = cached(function (name) {\n    var passive = name.charAt(0) === '&';\n    name = passive ? name.slice(1) : name;\n    var once = name.charAt(0) === '~'; // Prefixed last, checked first\n    name = once ? name.slice(1) : name;\n    var capture = name.charAt(0) === '!';\n    name = capture ? name.slice(1) : name;\n    return {\n        name: name,\n        once: once,\n        capture: capture,\n        passive: passive\n    };\n});\nfunction createFnInvoker(fns, vm) {\n    function invoker() {\n        var fns = invoker.fns;\n        if (isArray(fns)) {\n            var cloned = fns.slice();\n            for (var i = 0; i < cloned.length; i++) {\n                invokeWithErrorHandling(cloned[i], null, arguments, vm, \"v-on handler\");\n            }\n        }\n        else {\n            // return handler return value for single handlers\n            return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\");\n        }\n    }\n    invoker.fns = fns;\n    return invoker;\n}\nfunction updateListeners(on, oldOn, add, remove, createOnceHandler, vm) {\n    var name, cur, old, event;\n    for (name in on) {\n        cur = on[name];\n        old = oldOn[name];\n        event = normalizeEvent(name);\n        if (isUndef(cur)) {\n            process.env.NODE_ENV !== 'production' &&\n                warn$2(\"Invalid handler for event \\\"\".concat(event.name, \"\\\": got \") + String(cur), vm);\n        }\n        else if (isUndef(old)) {\n            if (isUndef(cur.fns)) {\n                cur = on[name] = createFnInvoker(cur, vm);\n            }\n            if (isTrue(event.once)) {\n                cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n            }\n            add(event.name, cur, event.capture, event.passive, event.params);\n        }\n        else if (cur !== old) {\n            old.fns = cur;\n            on[name] = old;\n        }\n    }\n    for (name in oldOn) {\n        if (isUndef(on[name])) {\n            event = normalizeEvent(name);\n            remove(event.name, oldOn[name], event.capture);\n        }\n    }\n}\n\nfunction mergeVNodeHook(def, hookKey, hook) {\n    if (def instanceof VNode) {\n        def = def.data.hook || (def.data.hook = {});\n    }\n    var invoker;\n    var oldHook = def[hookKey];\n    function wrappedHook() {\n        hook.apply(this, arguments);\n        // important: remove merged hook to ensure it's called only once\n        // and prevent memory leak\n        remove$2(invoker.fns, wrappedHook);\n    }\n    if (isUndef(oldHook)) {\n        // no existing hook\n        invoker = createFnInvoker([wrappedHook]);\n    }\n    else {\n        /* istanbul ignore if */\n        if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n            // already a merged invoker\n            invoker = oldHook;\n            invoker.fns.push(wrappedHook);\n        }\n        else {\n            // existing plain hook\n            invoker = createFnInvoker([oldHook, wrappedHook]);\n        }\n    }\n    invoker.merged = true;\n    def[hookKey] = invoker;\n}\n\nfunction extractPropsFromVNodeData(data, Ctor, tag) {\n    // we are only extracting raw values here.\n    // validation and default values are handled in the child\n    // component itself.\n    var propOptions = Ctor.options.props;\n    if (isUndef(propOptions)) {\n        return;\n    }\n    var res = {};\n    var attrs = data.attrs, props = data.props;\n    if (isDef(attrs) || isDef(props)) {\n        for (var key in propOptions) {\n            var altKey = hyphenate(key);\n            if (process.env.NODE_ENV !== 'production') {\n                var keyInLowerCase = key.toLowerCase();\n                if (key !== keyInLowerCase && attrs && hasOwn(attrs, keyInLowerCase)) {\n                    tip(\"Prop \\\"\".concat(keyInLowerCase, \"\\\" is passed to component \") +\n                        \"\".concat(formatComponentName(\n                        // @ts-expect-error tag is string\n                        tag || Ctor), \", but the declared prop name is\") +\n                        \" \\\"\".concat(key, \"\\\". \") +\n                        \"Note that HTML attributes are case-insensitive and camelCased \" +\n                        \"props need to use their kebab-case equivalents when using in-DOM \" +\n                        \"templates. You should probably use \\\"\".concat(altKey, \"\\\" instead of \\\"\").concat(key, \"\\\".\"));\n                }\n            }\n            checkProp(res, props, key, altKey, true) ||\n                checkProp(res, attrs, key, altKey, false);\n        }\n    }\n    return res;\n}\nfunction checkProp(res, hash, key, altKey, preserve) {\n    if (isDef(hash)) {\n        if (hasOwn(hash, key)) {\n            res[key] = hash[key];\n            if (!preserve) {\n                delete hash[key];\n            }\n            return true;\n        }\n        else if (hasOwn(hash, altKey)) {\n            res[key] = hash[altKey];\n            if (!preserve) {\n                delete hash[altKey];\n            }\n            return true;\n        }\n    }\n    return false;\n}\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren(children) {\n    for (var i = 0; i < children.length; i++) {\n        if (isArray(children[i])) {\n            return Array.prototype.concat.apply([], children);\n        }\n    }\n    return children;\n}\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren(children) {\n    return isPrimitive(children)\n        ? [createTextVNode(children)]\n        : isArray(children)\n            ? normalizeArrayChildren(children)\n            : undefined;\n}\nfunction isTextNode(node) {\n    return isDef(node) && isDef(node.text) && isFalse(node.isComment);\n}\nfunction normalizeArrayChildren(children, nestedIndex) {\n    var res = [];\n    var i, c, lastIndex, last;\n    for (i = 0; i < children.length; i++) {\n        c = children[i];\n        if (isUndef(c) || typeof c === 'boolean')\n            continue;\n        lastIndex = res.length - 1;\n        last = res[lastIndex];\n        //  nested\n        if (isArray(c)) {\n            if (c.length > 0) {\n                c = normalizeArrayChildren(c, \"\".concat(nestedIndex || '', \"_\").concat(i));\n                // merge adjacent text nodes\n                if (isTextNode(c[0]) && isTextNode(last)) {\n                    res[lastIndex] = createTextVNode(last.text + c[0].text);\n                    c.shift();\n                }\n                res.push.apply(res, c);\n            }\n        }\n        else if (isPrimitive(c)) {\n            if (isTextNode(last)) {\n                // merge adjacent text nodes\n                // this is necessary for SSR hydration because text nodes are\n                // essentially merged when rendered to HTML strings\n                res[lastIndex] = createTextVNode(last.text + c);\n            }\n            else if (c !== '') {\n                // convert primitive to vnode\n                res.push(createTextVNode(c));\n            }\n        }\n        else {\n            if (isTextNode(c) && isTextNode(last)) {\n                // merge adjacent text nodes\n                res[lastIndex] = createTextVNode(last.text + c.text);\n            }\n            else {\n                // default key for nested array children (likely generated by v-for)\n                if (isTrue(children._isVList) &&\n                    isDef(c.tag) &&\n                    isUndef(c.key) &&\n                    isDef(nestedIndex)) {\n                    c.key = \"__vlist\".concat(nestedIndex, \"_\").concat(i, \"__\");\n                }\n                res.push(c);\n            }\n        }\n    }\n    return res;\n}\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement$1(context, tag, data, children, normalizationType, alwaysNormalize) {\n    if (isArray(data) || isPrimitive(data)) {\n        normalizationType = children;\n        children = data;\n        data = undefined;\n    }\n    if (isTrue(alwaysNormalize)) {\n        normalizationType = ALWAYS_NORMALIZE;\n    }\n    return _createElement(context, tag, data, children, normalizationType);\n}\nfunction _createElement(context, tag, data, children, normalizationType) {\n    if (isDef(data) && isDef(data.__ob__)) {\n        process.env.NODE_ENV !== 'production' &&\n            warn$2(\"Avoid using observed data object as vnode data: \".concat(JSON.stringify(data), \"\\n\") + 'Always create fresh vnode data objects in each render!', context);\n        return createEmptyVNode();\n    }\n    // object syntax in v-bind\n    if (isDef(data) && isDef(data.is)) {\n        tag = data.is;\n    }\n    if (!tag) {\n        // in case of component :is set to falsy value\n        return createEmptyVNode();\n    }\n    // warn against non-primitive key\n    if (process.env.NODE_ENV !== 'production' && isDef(data) && isDef(data.key) && !isPrimitive(data.key)) {\n        warn$2('Avoid using non-primitive value as key, ' +\n            'use string/number value instead.', context);\n    }\n    // support single function children as default scoped slot\n    if (isArray(children) && isFunction(children[0])) {\n        data = data || {};\n        data.scopedSlots = { default: children[0] };\n        children.length = 0;\n    }\n    if (normalizationType === ALWAYS_NORMALIZE) {\n        children = normalizeChildren(children);\n    }\n    else if (normalizationType === SIMPLE_NORMALIZE) {\n        children = simpleNormalizeChildren(children);\n    }\n    var vnode, ns;\n    if (typeof tag === 'string') {\n        var Ctor = void 0;\n        ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\n        if (config.isReservedTag(tag)) {\n            // platform built-in elements\n            if (process.env.NODE_ENV !== 'production' &&\n                isDef(data) &&\n                isDef(data.nativeOn) &&\n                data.tag !== 'component') {\n                warn$2(\"The .native modifier for v-on is only valid on components but it was used on <\".concat(tag, \">.\"), context);\n            }\n            vnode = new VNode(config.parsePlatformTagName(tag), data, children, undefined, undefined, context);\n        }\n        else if ((!data || !data.pre) &&\n            isDef((Ctor = resolveAsset(context.$options, 'components', tag)))) {\n            // component\n            vnode = createComponent(Ctor, data, context, children, tag);\n        }\n        else {\n            // unknown or unlisted namespaced elements\n            // check at runtime because it may get assigned a namespace when its\n            // parent normalizes children\n            vnode = new VNode(tag, data, children, undefined, undefined, context);\n        }\n    }\n    else {\n        // direct component options / constructor\n        vnode = createComponent(tag, data, context, children);\n    }\n    if (isArray(vnode)) {\n        return vnode;\n    }\n    else if (isDef(vnode)) {\n        if (isDef(ns))\n            applyNS(vnode, ns);\n        if (isDef(data))\n            registerDeepBindings(data);\n        return vnode;\n    }\n    else {\n        return createEmptyVNode();\n    }\n}\nfunction applyNS(vnode, ns, force) {\n    vnode.ns = ns;\n    if (vnode.tag === 'foreignObject') {\n        // use default namespace inside foreignObject\n        ns = undefined;\n        force = true;\n    }\n    if (isDef(vnode.children)) {\n        for (var i = 0, l = vnode.children.length; i < l; i++) {\n            var child = vnode.children[i];\n            if (isDef(child.tag) &&\n                (isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {\n                applyNS(child, ns, force);\n            }\n        }\n    }\n}\n// ref #5318\n// necessary to ensure parent re-render when deep bindings like :style and\n// :class are used on slot nodes\nfunction registerDeepBindings(data) {\n    if (isObject(data.style)) {\n        traverse(data.style);\n    }\n    if (isObject(data.class)) {\n        traverse(data.class);\n    }\n}\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList(val, render) {\n    var ret = null, i, l, keys, key;\n    if (isArray(val) || typeof val === 'string') {\n        ret = new Array(val.length);\n        for (i = 0, l = val.length; i < l; i++) {\n            ret[i] = render(val[i], i);\n        }\n    }\n    else if (typeof val === 'number') {\n        ret = new Array(val);\n        for (i = 0; i < val; i++) {\n            ret[i] = render(i + 1, i);\n        }\n    }\n    else if (isObject(val)) {\n        if (hasSymbol && val[Symbol.iterator]) {\n            ret = [];\n            var iterator = val[Symbol.iterator]();\n            var result = iterator.next();\n            while (!result.done) {\n                ret.push(render(result.value, ret.length));\n                result = iterator.next();\n            }\n        }\n        else {\n            keys = Object.keys(val);\n            ret = new Array(keys.length);\n            for (i = 0, l = keys.length; i < l; i++) {\n                key = keys[i];\n                ret[i] = render(val[key], key, i);\n            }\n        }\n    }\n    if (!isDef(ret)) {\n        ret = [];\n    }\n    ret._isVList = true;\n    return ret;\n}\n\n/**\n * Runtime helper for rendering <slot>\n */\nfunction renderSlot(name, fallbackRender, props, bindObject) {\n    var scopedSlotFn = this.$scopedSlots[name];\n    var nodes;\n    if (scopedSlotFn) {\n        // scoped slot\n        props = props || {};\n        if (bindObject) {\n            if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\n                warn$2('slot v-bind without argument expects an Object', this);\n            }\n            props = extend(extend({}, bindObject), props);\n        }\n        nodes =\n            scopedSlotFn(props) ||\n                (isFunction(fallbackRender) ? fallbackRender() : fallbackRender);\n    }\n    else {\n        nodes =\n            this.$slots[name] ||\n                (isFunction(fallbackRender) ? fallbackRender() : fallbackRender);\n    }\n    var target = props && props.slot;\n    if (target) {\n        return this.$createElement('template', { slot: target }, nodes);\n    }\n    else {\n        return nodes;\n    }\n}\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter(id) {\n    return resolveAsset(this.$options, 'filters', id, true) || identity;\n}\n\nfunction isKeyNotMatch(expect, actual) {\n    if (isArray(expect)) {\n        return expect.indexOf(actual) === -1;\n    }\n    else {\n        return expect !== actual;\n    }\n}\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\nfunction checkKeyCodes(eventKeyCode, key, builtInKeyCode, eventKeyName, builtInKeyName) {\n    var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\n    if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\n        return isKeyNotMatch(builtInKeyName, eventKeyName);\n    }\n    else if (mappedKeyCode) {\n        return isKeyNotMatch(mappedKeyCode, eventKeyCode);\n    }\n    else if (eventKeyName) {\n        return hyphenate(eventKeyName) !== key;\n    }\n    return eventKeyCode === undefined;\n}\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps(data, tag, value, asProp, isSync) {\n    if (value) {\n        if (!isObject(value)) {\n            process.env.NODE_ENV !== 'production' &&\n                warn$2('v-bind without argument expects an Object or Array value', this);\n        }\n        else {\n            if (isArray(value)) {\n                value = toObject(value);\n            }\n            var hash = void 0;\n            var _loop_1 = function (key) {\n                if (key === 'class' || key === 'style' || isReservedAttribute(key)) {\n                    hash = data;\n                }\n                else {\n                    var type = data.attrs && data.attrs.type;\n                    hash =\n                        asProp || config.mustUseProp(tag, type, key)\n                            ? data.domProps || (data.domProps = {})\n                            : data.attrs || (data.attrs = {});\n                }\n                var camelizedKey = camelize(key);\n                var hyphenatedKey = hyphenate(key);\n                if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {\n                    hash[key] = value[key];\n                    if (isSync) {\n                        var on = data.on || (data.on = {});\n                        on[\"update:\".concat(key)] = function ($event) {\n                            value[key] = $event;\n                        };\n                    }\n                }\n            };\n            for (var key in value) {\n                _loop_1(key);\n            }\n        }\n    }\n    return data;\n}\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic(index, isInFor) {\n    var cached = this._staticTrees || (this._staticTrees = []);\n    var tree = cached[index];\n    // if has already-rendered static tree and not inside v-for,\n    // we can reuse the same tree.\n    if (tree && !isInFor) {\n        return tree;\n    }\n    // otherwise, render a fresh tree.\n    tree = cached[index] = this.$options.staticRenderFns[index].call(this._renderProxy, this._c, this // for render fns generated for functional component templates\n    );\n    markStatic$1(tree, \"__static__\".concat(index), false);\n    return tree;\n}\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce(tree, index, key) {\n    markStatic$1(tree, \"__once__\".concat(index).concat(key ? \"_\".concat(key) : \"\"), true);\n    return tree;\n}\nfunction markStatic$1(tree, key, isOnce) {\n    if (isArray(tree)) {\n        for (var i = 0; i < tree.length; i++) {\n            if (tree[i] && typeof tree[i] !== 'string') {\n                markStaticNode(tree[i], \"\".concat(key, \"_\").concat(i), isOnce);\n            }\n        }\n    }\n    else {\n        markStaticNode(tree, key, isOnce);\n    }\n}\nfunction markStaticNode(node, key, isOnce) {\n    node.isStatic = true;\n    node.key = key;\n    node.isOnce = isOnce;\n}\n\nfunction bindObjectListeners(data, value) {\n    if (value) {\n        if (!isPlainObject(value)) {\n            process.env.NODE_ENV !== 'production' && warn$2('v-on without argument expects an Object value', this);\n        }\n        else {\n            var on = (data.on = data.on ? extend({}, data.on) : {});\n            for (var key in value) {\n                var existing = on[key];\n                var ours = value[key];\n                on[key] = existing ? [].concat(existing, ours) : ours;\n            }\n        }\n    }\n    return data;\n}\n\nfunction resolveScopedSlots(fns, res, \n// the following are added in 2.6\nhasDynamicKeys, contentHashKey) {\n    res = res || { $stable: !hasDynamicKeys };\n    for (var i = 0; i < fns.length; i++) {\n        var slot = fns[i];\n        if (isArray(slot)) {\n            resolveScopedSlots(slot, res, hasDynamicKeys);\n        }\n        else if (slot) {\n            // marker for reverse proxying v-slot without scope on this.$slots\n            // @ts-expect-error\n            if (slot.proxy) {\n                // @ts-expect-error\n                slot.fn.proxy = true;\n            }\n            res[slot.key] = slot.fn;\n        }\n    }\n    if (contentHashKey) {\n        res.$key = contentHashKey;\n    }\n    return res;\n}\n\n// helper to process dynamic keys for dynamic arguments in v-bind and v-on.\nfunction bindDynamicKeys(baseObj, values) {\n    for (var i = 0; i < values.length; i += 2) {\n        var key = values[i];\n        if (typeof key === 'string' && key) {\n            baseObj[values[i]] = values[i + 1];\n        }\n        else if (process.env.NODE_ENV !== 'production' && key !== '' && key !== null) {\n            // null is a special value for explicitly removing a binding\n            warn$2(\"Invalid value for dynamic directive argument (expected string or null): \".concat(key), this);\n        }\n    }\n    return baseObj;\n}\n// helper to dynamically append modifier runtime markers to event names.\n// ensure only append when value is already string, otherwise it will be cast\n// to string and cause the type check to miss.\nfunction prependModifier(value, symbol) {\n    return typeof value === 'string' ? symbol + value : value;\n}\n\nfunction installRenderHelpers(target) {\n    target._o = markOnce;\n    target._n = toNumber;\n    target._s = toString;\n    target._l = renderList;\n    target._t = renderSlot;\n    target._q = looseEqual;\n    target._i = looseIndexOf;\n    target._m = renderStatic;\n    target._f = resolveFilter;\n    target._k = checkKeyCodes;\n    target._b = bindObjectProps;\n    target._v = createTextVNode;\n    target._e = createEmptyVNode;\n    target._u = resolveScopedSlots;\n    target._g = bindObjectListeners;\n    target._d = bindDynamicKeys;\n    target._p = prependModifier;\n}\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots(children, context) {\n    if (!children || !children.length) {\n        return {};\n    }\n    var slots = {};\n    for (var i = 0, l = children.length; i < l; i++) {\n        var child = children[i];\n        var data = child.data;\n        // remove slot attribute if the node is resolved as a Vue slot node\n        if (data && data.attrs && data.attrs.slot) {\n            delete data.attrs.slot;\n        }\n        // named slots should only be respected if the vnode was rendered in the\n        // same context.\n        if ((child.context === context || child.fnContext === context) &&\n            data &&\n            data.slot != null) {\n            var name_1 = data.slot;\n            var slot = slots[name_1] || (slots[name_1] = []);\n            if (child.tag === 'template') {\n                slot.push.apply(slot, child.children || []);\n            }\n            else {\n                slot.push(child);\n            }\n        }\n        else {\n            (slots.default || (slots.default = [])).push(child);\n        }\n    }\n    // ignore slots that contains only whitespace\n    for (var name_2 in slots) {\n        if (slots[name_2].every(isWhitespace)) {\n            delete slots[name_2];\n        }\n    }\n    return slots;\n}\nfunction isWhitespace(node) {\n    return (node.isComment && !node.asyncFactory) || node.text === ' ';\n}\n\nfunction isAsyncPlaceholder(node) {\n    // @ts-expect-error not really boolean type\n    return node.isComment && node.asyncFactory;\n}\n\nfunction normalizeScopedSlots(ownerVm, scopedSlots, normalSlots, prevScopedSlots) {\n    var res;\n    var hasNormalSlots = Object.keys(normalSlots).length > 0;\n    var isStable = scopedSlots ? !!scopedSlots.$stable : !hasNormalSlots;\n    var key = scopedSlots && scopedSlots.$key;\n    if (!scopedSlots) {\n        res = {};\n    }\n    else if (scopedSlots._normalized) {\n        // fast path 1: child component re-render only, parent did not change\n        return scopedSlots._normalized;\n    }\n    else if (isStable &&\n        prevScopedSlots &&\n        prevScopedSlots !== emptyObject &&\n        key === prevScopedSlots.$key &&\n        !hasNormalSlots &&\n        !prevScopedSlots.$hasNormal) {\n        // fast path 2: stable scoped slots w/ no normal slots to proxy,\n        // only need to normalize once\n        return prevScopedSlots;\n    }\n    else {\n        res = {};\n        for (var key_1 in scopedSlots) {\n            if (scopedSlots[key_1] && key_1[0] !== '$') {\n                res[key_1] = normalizeScopedSlot(ownerVm, normalSlots, key_1, scopedSlots[key_1]);\n            }\n        }\n    }\n    // expose normal slots on scopedSlots\n    for (var key_2 in normalSlots) {\n        if (!(key_2 in res)) {\n            res[key_2] = proxyNormalSlot(normalSlots, key_2);\n        }\n    }\n    // avoriaz seems to mock a non-extensible $scopedSlots object\n    // and when that is passed down this would cause an error\n    if (scopedSlots && Object.isExtensible(scopedSlots)) {\n        scopedSlots._normalized = res;\n    }\n    def(res, '$stable', isStable);\n    def(res, '$key', key);\n    def(res, '$hasNormal', hasNormalSlots);\n    return res;\n}\nfunction normalizeScopedSlot(vm, normalSlots, key, fn) {\n    var normalized = function () {\n        var cur = currentInstance;\n        setCurrentInstance(vm);\n        var res = arguments.length ? fn.apply(null, arguments) : fn({});\n        res =\n            res && typeof res === 'object' && !isArray(res)\n                ? [res] // single vnode\n                : normalizeChildren(res);\n        var vnode = res && res[0];\n        setCurrentInstance(cur);\n        return res &&\n            (!vnode ||\n                (res.length === 1 && vnode.isComment && !isAsyncPlaceholder(vnode))) // #9658, #10391\n            ? undefined\n            : res;\n    };\n    // this is a slot using the new v-slot syntax without scope. although it is\n    // compiled as a scoped slot, render fn users would expect it to be present\n    // on this.$slots because the usage is semantically a normal slot.\n    if (fn.proxy) {\n        Object.defineProperty(normalSlots, key, {\n            get: normalized,\n            enumerable: true,\n            configurable: true\n        });\n    }\n    return normalized;\n}\nfunction proxyNormalSlot(slots, key) {\n    return function () { return slots[key]; };\n}\n\nfunction initSetup(vm) {\n    var options = vm.$options;\n    var setup = options.setup;\n    if (setup) {\n        var ctx = (vm._setupContext = createSetupContext(vm));\n        setCurrentInstance(vm);\n        pushTarget();\n        var setupResult = invokeWithErrorHandling(setup, null, [vm._props || shallowReactive({}), ctx], vm, \"setup\");\n        popTarget();\n        setCurrentInstance();\n        if (isFunction(setupResult)) {\n            // render function\n            // @ts-ignore\n            options.render = setupResult;\n        }\n        else if (isObject(setupResult)) {\n            // bindings\n            if (process.env.NODE_ENV !== 'production' && setupResult instanceof VNode) {\n                warn$2(\"setup() should not return VNodes directly - \" +\n                    \"return a render function instead.\");\n            }\n            vm._setupState = setupResult;\n            // __sfc indicates compiled bindings from <script setup>\n            if (!setupResult.__sfc) {\n                for (var key in setupResult) {\n                    if (!isReserved(key)) {\n                        proxyWithRefUnwrap(vm, setupResult, key);\n                    }\n                    else if (process.env.NODE_ENV !== 'production') {\n                        warn$2(\"Avoid using variables that start with _ or $ in setup().\");\n                    }\n                }\n            }\n            else {\n                // exposed for compiled render fn\n                var proxy = (vm._setupProxy = {});\n                for (var key in setupResult) {\n                    if (key !== '__sfc') {\n                        proxyWithRefUnwrap(proxy, setupResult, key);\n                    }\n                }\n            }\n        }\n        else if (process.env.NODE_ENV !== 'production' && setupResult !== undefined) {\n            warn$2(\"setup() should return an object. Received: \".concat(setupResult === null ? 'null' : typeof setupResult));\n        }\n    }\n}\nfunction createSetupContext(vm) {\n    var exposeCalled = false;\n    return {\n        get attrs() {\n            if (!vm._attrsProxy) {\n                var proxy = (vm._attrsProxy = {});\n                def(proxy, '_v_attr_proxy', true);\n                syncSetupProxy(proxy, vm.$attrs, emptyObject, vm, '$attrs');\n            }\n            return vm._attrsProxy;\n        },\n        get listeners() {\n            if (!vm._listenersProxy) {\n                var proxy = (vm._listenersProxy = {});\n                syncSetupProxy(proxy, vm.$listeners, emptyObject, vm, '$listeners');\n            }\n            return vm._listenersProxy;\n        },\n        get slots() {\n            return initSlotsProxy(vm);\n        },\n        emit: bind$1(vm.$emit, vm),\n        expose: function (exposed) {\n            if (process.env.NODE_ENV !== 'production') {\n                if (exposeCalled) {\n                    warn$2(\"expose() should be called only once per setup().\", vm);\n                }\n                exposeCalled = true;\n            }\n            if (exposed) {\n                Object.keys(exposed).forEach(function (key) {\n                    return proxyWithRefUnwrap(vm, exposed, key);\n                });\n            }\n        }\n    };\n}\nfunction syncSetupProxy(to, from, prev, instance, type) {\n    var changed = false;\n    for (var key in from) {\n        if (!(key in to)) {\n            changed = true;\n            defineProxyAttr(to, key, instance, type);\n        }\n        else if (from[key] !== prev[key]) {\n            changed = true;\n        }\n    }\n    for (var key in to) {\n        if (!(key in from)) {\n            changed = true;\n            delete to[key];\n        }\n    }\n    return changed;\n}\nfunction defineProxyAttr(proxy, key, instance, type) {\n    Object.defineProperty(proxy, key, {\n        enumerable: true,\n        configurable: true,\n        get: function () {\n            return instance[type][key];\n        }\n    });\n}\nfunction initSlotsProxy(vm) {\n    if (!vm._slotsProxy) {\n        syncSetupSlots((vm._slotsProxy = {}), vm.$scopedSlots);\n    }\n    return vm._slotsProxy;\n}\nfunction syncSetupSlots(to, from) {\n    for (var key in from) {\n        to[key] = from[key];\n    }\n    for (var key in to) {\n        if (!(key in from)) {\n            delete to[key];\n        }\n    }\n}\n/**\n * @internal use manual type def because public setup context type relies on\n * legacy VNode types\n */\nfunction useSlots() {\n    return getContext().slots;\n}\n/**\n * @internal use manual type def because public setup context type relies on\n * legacy VNode types\n */\nfunction useAttrs() {\n    return getContext().attrs;\n}\n/**\n * Vue 2 only\n * @internal use manual type def because public setup context type relies on\n * legacy VNode types\n */\nfunction useListeners() {\n    return getContext().listeners;\n}\nfunction getContext() {\n    if (process.env.NODE_ENV !== 'production' && !currentInstance) {\n        warn$2(\"useContext() called without active instance.\");\n    }\n    var vm = currentInstance;\n    return vm._setupContext || (vm._setupContext = createSetupContext(vm));\n}\n/**\n * Runtime helper for merging default declarations. Imported by compiled code\n * only.\n * @internal\n */\nfunction mergeDefaults(raw, defaults) {\n    var props = isArray(raw)\n        ? raw.reduce(function (normalized, p) { return ((normalized[p] = {}), normalized); }, {})\n        : raw;\n    for (var key in defaults) {\n        var opt = props[key];\n        if (opt) {\n            if (isArray(opt) || isFunction(opt)) {\n                props[key] = { type: opt, default: defaults[key] };\n            }\n            else {\n                opt.default = defaults[key];\n            }\n        }\n        else if (opt === null) {\n            props[key] = { default: defaults[key] };\n        }\n        else if (process.env.NODE_ENV !== 'production') {\n            warn$2(\"props default key \\\"\".concat(key, \"\\\" has no corresponding declaration.\"));\n        }\n    }\n    return props;\n}\n\nfunction initRender(vm) {\n    vm._vnode = null; // the root of the child tree\n    vm._staticTrees = null; // v-once cached trees\n    var options = vm.$options;\n    var parentVnode = (vm.$vnode = options._parentVnode); // the placeholder node in parent tree\n    var renderContext = parentVnode && parentVnode.context;\n    vm.$slots = resolveSlots(options._renderChildren, renderContext);\n    vm.$scopedSlots = parentVnode\n        ? normalizeScopedSlots(vm.$parent, parentVnode.data.scopedSlots, vm.$slots)\n        : emptyObject;\n    // bind the createElement fn to this instance\n    // so that we get proper render context inside it.\n    // args order: tag, data, children, normalizationType, alwaysNormalize\n    // internal version is used by render functions compiled from templates\n    // @ts-expect-error\n    vm._c = function (a, b, c, d) { return createElement$1(vm, a, b, c, d, false); };\n    // normalization is always applied for the public version, used in\n    // user-written render functions.\n    // @ts-expect-error\n    vm.$createElement = function (a, b, c, d) { return createElement$1(vm, a, b, c, d, true); };\n    // $attrs & $listeners are exposed for easier HOC creation.\n    // they need to be reactive so that HOCs using them are always updated\n    var parentData = parentVnode && parentVnode.data;\n    /* istanbul ignore else */\n    if (process.env.NODE_ENV !== 'production') {\n        defineReactive(vm, '$attrs', (parentData && parentData.attrs) || emptyObject, function () {\n            !isUpdatingChildComponent && warn$2(\"$attrs is readonly.\", vm);\n        }, true);\n        defineReactive(vm, '$listeners', options._parentListeners || emptyObject, function () {\n            !isUpdatingChildComponent && warn$2(\"$listeners is readonly.\", vm);\n        }, true);\n    }\n    else {\n        defineReactive(vm, '$attrs', (parentData && parentData.attrs) || emptyObject, null, true);\n        defineReactive(vm, '$listeners', options._parentListeners || emptyObject, null, true);\n    }\n}\nvar currentRenderingInstance = null;\nfunction renderMixin(Vue) {\n    // install runtime convenience helpers\n    installRenderHelpers(Vue.prototype);\n    Vue.prototype.$nextTick = function (fn) {\n        return nextTick(fn, this);\n    };\n    Vue.prototype._render = function () {\n        var vm = this;\n        var _a = vm.$options, render = _a.render, _parentVnode = _a._parentVnode;\n        if (_parentVnode && vm._isMounted) {\n            vm.$scopedSlots = normalizeScopedSlots(vm.$parent, _parentVnode.data.scopedSlots, vm.$slots, vm.$scopedSlots);\n            if (vm._slotsProxy) {\n                syncSetupSlots(vm._slotsProxy, vm.$scopedSlots);\n            }\n        }\n        // set parent vnode. this allows render functions to have access\n        // to the data on the placeholder node.\n        vm.$vnode = _parentVnode;\n        // render self\n        var prevInst = currentInstance;\n        var prevRenderInst = currentRenderingInstance;\n        var vnode;\n        try {\n            setCurrentInstance(vm);\n            currentRenderingInstance = vm;\n            vnode = render.call(vm._renderProxy, vm.$createElement);\n        }\n        catch (e) {\n            handleError(e, vm, \"render\");\n            // return error render result,\n            // or previous vnode to prevent render error causing blank component\n            /* istanbul ignore else */\n            if (process.env.NODE_ENV !== 'production' && vm.$options.renderError) {\n                try {\n                    vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n                }\n                catch (e) {\n                    handleError(e, vm, \"renderError\");\n                    vnode = vm._vnode;\n                }\n            }\n            else {\n                vnode = vm._vnode;\n            }\n        }\n        finally {\n            currentRenderingInstance = prevRenderInst;\n            setCurrentInstance(prevInst);\n        }\n        // if the returned array contains only a single node, allow it\n        if (isArray(vnode) && vnode.length === 1) {\n            vnode = vnode[0];\n        }\n        // return empty vnode in case the render function errored out\n        if (!(vnode instanceof VNode)) {\n            if (process.env.NODE_ENV !== 'production' && isArray(vnode)) {\n                warn$2('Multiple root nodes returned from render function. Render function ' +\n                    'should return a single root node.', vm);\n            }\n            vnode = createEmptyVNode();\n        }\n        // set parent\n        vnode.parent = _parentVnode;\n        return vnode;\n    };\n}\n\nfunction ensureCtor(comp, base) {\n    if (comp.__esModule || (hasSymbol && comp[Symbol.toStringTag] === 'Module')) {\n        comp = comp.default;\n    }\n    return isObject(comp) ? base.extend(comp) : comp;\n}\nfunction createAsyncPlaceholder(factory, data, context, children, tag) {\n    var node = createEmptyVNode();\n    node.asyncFactory = factory;\n    node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n    return node;\n}\nfunction resolveAsyncComponent(factory, baseCtor) {\n    if (isTrue(factory.error) && isDef(factory.errorComp)) {\n        return factory.errorComp;\n    }\n    if (isDef(factory.resolved)) {\n        return factory.resolved;\n    }\n    var owner = currentRenderingInstance;\n    if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {\n        // already pending\n        factory.owners.push(owner);\n    }\n    if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n        return factory.loadingComp;\n    }\n    if (owner && !isDef(factory.owners)) {\n        var owners_1 = (factory.owners = [owner]);\n        var sync_1 = true;\n        var timerLoading_1 = null;\n        var timerTimeout_1 = null;\n        owner.$on('hook:destroyed', function () { return remove$2(owners_1, owner); });\n        var forceRender_1 = function (renderCompleted) {\n            for (var i = 0, l = owners_1.length; i < l; i++) {\n                owners_1[i].$forceUpdate();\n            }\n            if (renderCompleted) {\n                owners_1.length = 0;\n                if (timerLoading_1 !== null) {\n                    clearTimeout(timerLoading_1);\n                    timerLoading_1 = null;\n                }\n                if (timerTimeout_1 !== null) {\n                    clearTimeout(timerTimeout_1);\n                    timerTimeout_1 = null;\n                }\n            }\n        };\n        var resolve = once(function (res) {\n            // cache resolved\n            factory.resolved = ensureCtor(res, baseCtor);\n            // invoke callbacks only if this is not a synchronous resolve\n            // (async resolves are shimmed as synchronous during SSR)\n            if (!sync_1) {\n                forceRender_1(true);\n            }\n            else {\n                owners_1.length = 0;\n            }\n        });\n        var reject_1 = once(function (reason) {\n            process.env.NODE_ENV !== 'production' &&\n                warn$2(\"Failed to resolve async component: \".concat(String(factory)) +\n                    (reason ? \"\\nReason: \".concat(reason) : ''));\n            if (isDef(factory.errorComp)) {\n                factory.error = true;\n                forceRender_1(true);\n            }\n        });\n        var res_1 = factory(resolve, reject_1);\n        if (isObject(res_1)) {\n            if (isPromise(res_1)) {\n                // () => Promise\n                if (isUndef(factory.resolved)) {\n                    res_1.then(resolve, reject_1);\n                }\n            }\n            else if (isPromise(res_1.component)) {\n                res_1.component.then(resolve, reject_1);\n                if (isDef(res_1.error)) {\n                    factory.errorComp = ensureCtor(res_1.error, baseCtor);\n                }\n                if (isDef(res_1.loading)) {\n                    factory.loadingComp = ensureCtor(res_1.loading, baseCtor);\n                    if (res_1.delay === 0) {\n                        factory.loading = true;\n                    }\n                    else {\n                        // @ts-expect-error NodeJS timeout type\n                        timerLoading_1 = setTimeout(function () {\n                            timerLoading_1 = null;\n                            if (isUndef(factory.resolved) && isUndef(factory.error)) {\n                                factory.loading = true;\n                                forceRender_1(false);\n                            }\n                        }, res_1.delay || 200);\n                    }\n                }\n                if (isDef(res_1.timeout)) {\n                    // @ts-expect-error NodeJS timeout type\n                    timerTimeout_1 = setTimeout(function () {\n                        timerTimeout_1 = null;\n                        if (isUndef(factory.resolved)) {\n                            reject_1(process.env.NODE_ENV !== 'production' ? \"timeout (\".concat(res_1.timeout, \"ms)\") : null);\n                        }\n                    }, res_1.timeout);\n                }\n            }\n        }\n        sync_1 = false;\n        // return in case resolved synchronously\n        return factory.loading ? factory.loadingComp : factory.resolved;\n    }\n}\n\nfunction getFirstComponentChild(children) {\n    if (isArray(children)) {\n        for (var i = 0; i < children.length; i++) {\n            var c = children[i];\n            if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n                return c;\n            }\n        }\n    }\n}\n\nfunction initEvents(vm) {\n    vm._events = Object.create(null);\n    vm._hasHookEvent = false;\n    // init parent attached events\n    var listeners = vm.$options._parentListeners;\n    if (listeners) {\n        updateComponentListeners(vm, listeners);\n    }\n}\nvar target$1;\nfunction add$1(event, fn) {\n    target$1.$on(event, fn);\n}\nfunction remove$1(event, fn) {\n    target$1.$off(event, fn);\n}\nfunction createOnceHandler$1(event, fn) {\n    var _target = target$1;\n    return function onceHandler() {\n        var res = fn.apply(null, arguments);\n        if (res !== null) {\n            _target.$off(event, onceHandler);\n        }\n    };\n}\nfunction updateComponentListeners(vm, listeners, oldListeners) {\n    target$1 = vm;\n    updateListeners(listeners, oldListeners || {}, add$1, remove$1, createOnceHandler$1, vm);\n    target$1 = undefined;\n}\nfunction eventsMixin(Vue) {\n    var hookRE = /^hook:/;\n    Vue.prototype.$on = function (event, fn) {\n        var vm = this;\n        if (isArray(event)) {\n            for (var i = 0, l = event.length; i < l; i++) {\n                vm.$on(event[i], fn);\n            }\n        }\n        else {\n            (vm._events[event] || (vm._events[event] = [])).push(fn);\n            // optimize hook:event cost by using a boolean flag marked at registration\n            // instead of a hash lookup\n            if (hookRE.test(event)) {\n                vm._hasHookEvent = true;\n            }\n        }\n        return vm;\n    };\n    Vue.prototype.$once = function (event, fn) {\n        var vm = this;\n        function on() {\n            vm.$off(event, on);\n            fn.apply(vm, arguments);\n        }\n        on.fn = fn;\n        vm.$on(event, on);\n        return vm;\n    };\n    Vue.prototype.$off = function (event, fn) {\n        var vm = this;\n        // all\n        if (!arguments.length) {\n            vm._events = Object.create(null);\n            return vm;\n        }\n        // array of events\n        if (isArray(event)) {\n            for (var i_1 = 0, l = event.length; i_1 < l; i_1++) {\n                vm.$off(event[i_1], fn);\n            }\n            return vm;\n        }\n        // specific event\n        var cbs = vm._events[event];\n        if (!cbs) {\n            return vm;\n        }\n        if (!fn) {\n            vm._events[event] = null;\n            return vm;\n        }\n        // specific handler\n        var cb;\n        var i = cbs.length;\n        while (i--) {\n            cb = cbs[i];\n            if (cb === fn || cb.fn === fn) {\n                cbs.splice(i, 1);\n                break;\n            }\n        }\n        return vm;\n    };\n    Vue.prototype.$emit = function (event) {\n        var vm = this;\n        if (process.env.NODE_ENV !== 'production') {\n            var lowerCaseEvent = event.toLowerCase();\n            if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n                tip(\"Event \\\"\".concat(lowerCaseEvent, \"\\\" is emitted in component \") +\n                    \"\".concat(formatComponentName(vm), \" but the handler is registered for \\\"\").concat(event, \"\\\". \") +\n                    \"Note that HTML attributes are case-insensitive and you cannot use \" +\n                    \"v-on to listen to camelCase events when using in-DOM templates. \" +\n                    \"You should probably use \\\"\".concat(hyphenate(event), \"\\\" instead of \\\"\").concat(event, \"\\\".\"));\n            }\n        }\n        var cbs = vm._events[event];\n        if (cbs) {\n            cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n            var args = toArray(arguments, 1);\n            var info = \"event handler for \\\"\".concat(event, \"\\\"\");\n            for (var i = 0, l = cbs.length; i < l; i++) {\n                invokeWithErrorHandling(cbs[i], vm, args, vm, info);\n            }\n        }\n        return vm;\n    };\n}\n\nvar activeEffectScope;\nvar EffectScope = /** @class */ (function () {\n    function EffectScope(detached) {\n        if (detached === void 0) { detached = false; }\n        this.detached = detached;\n        /**\n         * @internal\n         */\n        this.active = true;\n        /**\n         * @internal\n         */\n        this.effects = [];\n        /**\n         * @internal\n         */\n        this.cleanups = [];\n        this.parent = activeEffectScope;\n        if (!detached && activeEffectScope) {\n            this.index =\n                (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1;\n        }\n    }\n    EffectScope.prototype.run = function (fn) {\n        if (this.active) {\n            var currentEffectScope = activeEffectScope;\n            try {\n                activeEffectScope = this;\n                return fn();\n            }\n            finally {\n                activeEffectScope = currentEffectScope;\n            }\n        }\n        else if (process.env.NODE_ENV !== 'production') {\n            warn$2(\"cannot run an inactive effect scope.\");\n        }\n    };\n    /**\n     * This should only be called on non-detached scopes\n     * @internal\n     */\n    EffectScope.prototype.on = function () {\n        activeEffectScope = this;\n    };\n    /**\n     * This should only be called on non-detached scopes\n     * @internal\n     */\n    EffectScope.prototype.off = function () {\n        activeEffectScope = this.parent;\n    };\n    EffectScope.prototype.stop = function (fromParent) {\n        if (this.active) {\n            var i = void 0, l = void 0;\n            for (i = 0, l = this.effects.length; i < l; i++) {\n                this.effects[i].teardown();\n            }\n            for (i = 0, l = this.cleanups.length; i < l; i++) {\n                this.cleanups[i]();\n            }\n            if (this.scopes) {\n                for (i = 0, l = this.scopes.length; i < l; i++) {\n                    this.scopes[i].stop(true);\n                }\n            }\n            // nested scope, dereference from parent to avoid memory leaks\n            if (!this.detached && this.parent && !fromParent) {\n                // optimized O(1) removal\n                var last = this.parent.scopes.pop();\n                if (last && last !== this) {\n                    this.parent.scopes[this.index] = last;\n                    last.index = this.index;\n                }\n            }\n            this.parent = undefined;\n            this.active = false;\n        }\n    };\n    return EffectScope;\n}());\nfunction effectScope(detached) {\n    return new EffectScope(detached);\n}\n/**\n * @internal\n */\nfunction recordEffectScope(effect, scope) {\n    if (scope === void 0) { scope = activeEffectScope; }\n    if (scope && scope.active) {\n        scope.effects.push(effect);\n    }\n}\nfunction getCurrentScope() {\n    return activeEffectScope;\n}\nfunction onScopeDispose(fn) {\n    if (activeEffectScope) {\n        activeEffectScope.cleanups.push(fn);\n    }\n    else if (process.env.NODE_ENV !== 'production') {\n        warn$2(\"onScopeDispose() is called when there is no active effect scope\" +\n            \" to be associated with.\");\n    }\n}\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\nfunction setActiveInstance(vm) {\n    var prevActiveInstance = activeInstance;\n    activeInstance = vm;\n    return function () {\n        activeInstance = prevActiveInstance;\n    };\n}\nfunction initLifecycle(vm) {\n    var options = vm.$options;\n    // locate first non-abstract parent\n    var parent = options.parent;\n    if (parent && !options.abstract) {\n        while (parent.$options.abstract && parent.$parent) {\n            parent = parent.$parent;\n        }\n        parent.$children.push(vm);\n    }\n    vm.$parent = parent;\n    vm.$root = parent ? parent.$root : vm;\n    vm.$children = [];\n    vm.$refs = {};\n    vm._provided = parent ? parent._provided : Object.create(null);\n    vm._watcher = null;\n    vm._inactive = null;\n    vm._directInactive = false;\n    vm._isMounted = false;\n    vm._isDestroyed = false;\n    vm._isBeingDestroyed = false;\n}\nfunction lifecycleMixin(Vue) {\n    Vue.prototype._update = function (vnode, hydrating) {\n        var vm = this;\n        var prevEl = vm.$el;\n        var prevVnode = vm._vnode;\n        var restoreActiveInstance = setActiveInstance(vm);\n        vm._vnode = vnode;\n        // Vue.prototype.__patch__ is injected in entry points\n        // based on the rendering backend used.\n        if (!prevVnode) {\n            // initial render\n            vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);\n        }\n        else {\n            // updates\n            vm.$el = vm.__patch__(prevVnode, vnode);\n        }\n        restoreActiveInstance();\n        // update __vue__ reference\n        if (prevEl) {\n            prevEl.__vue__ = null;\n        }\n        if (vm.$el) {\n            vm.$el.__vue__ = vm;\n        }\n        // if parent is an HOC, update its $el as well\n        var wrapper = vm;\n        while (wrapper &&\n            wrapper.$vnode &&\n            wrapper.$parent &&\n            wrapper.$vnode === wrapper.$parent._vnode) {\n            wrapper.$parent.$el = wrapper.$el;\n            wrapper = wrapper.$parent;\n        }\n        // updated hook is called by the scheduler to ensure that children are\n        // updated in a parent's updated hook.\n    };\n    Vue.prototype.$forceUpdate = function () {\n        var vm = this;\n        if (vm._watcher) {\n            vm._watcher.update();\n        }\n    };\n    Vue.prototype.$destroy = function () {\n        var vm = this;\n        if (vm._isBeingDestroyed) {\n            return;\n        }\n        callHook$1(vm, 'beforeDestroy');\n        vm._isBeingDestroyed = true;\n        // remove self from parent\n        var parent = vm.$parent;\n        if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n            remove$2(parent.$children, vm);\n        }\n        // teardown scope. this includes both the render watcher and other\n        // watchers created\n        vm._scope.stop();\n        // remove reference from data ob\n        // frozen object may not have observer.\n        if (vm._data.__ob__) {\n            vm._data.__ob__.vmCount--;\n        }\n        // call the last hook...\n        vm._isDestroyed = true;\n        // invoke destroy hooks on current rendered tree\n        vm.__patch__(vm._vnode, null);\n        // fire destroyed hook\n        callHook$1(vm, 'destroyed');\n        // turn off all instance listeners.\n        vm.$off();\n        // remove __vue__ reference\n        if (vm.$el) {\n            vm.$el.__vue__ = null;\n        }\n        // release circular reference (#6759)\n        if (vm.$vnode) {\n            vm.$vnode.parent = null;\n        }\n    };\n}\nfunction mountComponent(vm, el, hydrating) {\n    vm.$el = el;\n    if (!vm.$options.render) {\n        // @ts-expect-error invalid type\n        vm.$options.render = createEmptyVNode;\n        if (process.env.NODE_ENV !== 'production') {\n            /* istanbul ignore if */\n            if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n                vm.$options.el ||\n                el) {\n                warn$2('You are using the runtime-only build of Vue where the template ' +\n                    'compiler is not available. Either pre-compile the templates into ' +\n                    'render functions, or use the compiler-included build.', vm);\n            }\n            else {\n                warn$2('Failed to mount component: template or render function not defined.', vm);\n            }\n        }\n    }\n    callHook$1(vm, 'beforeMount');\n    var updateComponent;\n    /* istanbul ignore if */\n    if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n        updateComponent = function () {\n            var name = vm._name;\n            var id = vm._uid;\n            var startTag = \"vue-perf-start:\".concat(id);\n            var endTag = \"vue-perf-end:\".concat(id);\n            mark(startTag);\n            var vnode = vm._render();\n            mark(endTag);\n            measure(\"vue \".concat(name, \" render\"), startTag, endTag);\n            mark(startTag);\n            vm._update(vnode, hydrating);\n            mark(endTag);\n            measure(\"vue \".concat(name, \" patch\"), startTag, endTag);\n        };\n    }\n    else {\n        updateComponent = function () {\n            vm._update(vm._render(), hydrating);\n        };\n    }\n    var watcherOptions = {\n        before: function () {\n            if (vm._isMounted && !vm._isDestroyed) {\n                callHook$1(vm, 'beforeUpdate');\n            }\n        }\n    };\n    if (process.env.NODE_ENV !== 'production') {\n        watcherOptions.onTrack = function (e) { return callHook$1(vm, 'renderTracked', [e]); };\n        watcherOptions.onTrigger = function (e) { return callHook$1(vm, 'renderTriggered', [e]); };\n    }\n    // we set this to vm._watcher inside the watcher's constructor\n    // since the watcher's initial patch may call $forceUpdate (e.g. inside child\n    // component's mounted hook), which relies on vm._watcher being already defined\n    new Watcher(vm, updateComponent, noop, watcherOptions, true /* isRenderWatcher */);\n    hydrating = false;\n    // flush buffer for flush: \"pre\" watchers queued in setup()\n    var preWatchers = vm._preWatchers;\n    if (preWatchers) {\n        for (var i = 0; i < preWatchers.length; i++) {\n            preWatchers[i].run();\n        }\n    }\n    // manually mounted instance, call mounted on self\n    // mounted is called for render-created child components in its inserted hook\n    if (vm.$vnode == null) {\n        vm._isMounted = true;\n        callHook$1(vm, 'mounted');\n    }\n    return vm;\n}\nfunction updateChildComponent(vm, propsData, listeners, parentVnode, renderChildren) {\n    if (process.env.NODE_ENV !== 'production') {\n        isUpdatingChildComponent = true;\n    }\n    // determine whether component has slot children\n    // we need to do this before overwriting $options._renderChildren.\n    // check if there are dynamic scopedSlots (hand-written or compiled but with\n    // dynamic slot names). Static scoped slots compiled from template has the\n    // \"$stable\" marker.\n    var newScopedSlots = parentVnode.data.scopedSlots;\n    var oldScopedSlots = vm.$scopedSlots;\n    var hasDynamicScopedSlot = !!((newScopedSlots && !newScopedSlots.$stable) ||\n        (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||\n        (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key) ||\n        (!newScopedSlots && vm.$scopedSlots.$key));\n    // Any static slot children from the parent may have changed during parent's\n    // update. Dynamic scoped slots may also have changed. In such cases, a forced\n    // update is necessary to ensure correctness.\n    var needsForceUpdate = !!(renderChildren || // has new static slots\n        vm.$options._renderChildren || // has old static slots\n        hasDynamicScopedSlot);\n    var prevVNode = vm.$vnode;\n    vm.$options._parentVnode = parentVnode;\n    vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n    if (vm._vnode) {\n        // update child tree's parent\n        vm._vnode.parent = parentVnode;\n    }\n    vm.$options._renderChildren = renderChildren;\n    // update $attrs and $listeners hash\n    // these are also reactive so they may trigger child update if the child\n    // used them during render\n    var attrs = parentVnode.data.attrs || emptyObject;\n    if (vm._attrsProxy) {\n        // force update if attrs are accessed and has changed since it may be\n        // passed to a child component.\n        if (syncSetupProxy(vm._attrsProxy, attrs, (prevVNode.data && prevVNode.data.attrs) || emptyObject, vm, '$attrs')) {\n            needsForceUpdate = true;\n        }\n    }\n    vm.$attrs = attrs;\n    // update listeners\n    listeners = listeners || emptyObject;\n    var prevListeners = vm.$options._parentListeners;\n    if (vm._listenersProxy) {\n        syncSetupProxy(vm._listenersProxy, listeners, prevListeners || emptyObject, vm, '$listeners');\n    }\n    vm.$listeners = vm.$options._parentListeners = listeners;\n    updateComponentListeners(vm, listeners, prevListeners);\n    // update props\n    if (propsData && vm.$options.props) {\n        toggleObserving(false);\n        var props = vm._props;\n        var propKeys = vm.$options._propKeys || [];\n        for (var i = 0; i < propKeys.length; i++) {\n            var key = propKeys[i];\n            var propOptions = vm.$options.props; // wtf flow?\n            props[key] = validateProp(key, propOptions, propsData, vm);\n        }\n        toggleObserving(true);\n        // keep a copy of raw propsData\n        vm.$options.propsData = propsData;\n    }\n    // resolve slots + force update if has children\n    if (needsForceUpdate) {\n        vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n        vm.$forceUpdate();\n    }\n    if (process.env.NODE_ENV !== 'production') {\n        isUpdatingChildComponent = false;\n    }\n}\nfunction isInInactiveTree(vm) {\n    while (vm && (vm = vm.$parent)) {\n        if (vm._inactive)\n            return true;\n    }\n    return false;\n}\nfunction activateChildComponent(vm, direct) {\n    if (direct) {\n        vm._directInactive = false;\n        if (isInInactiveTree(vm)) {\n            return;\n        }\n    }\n    else if (vm._directInactive) {\n        return;\n    }\n    if (vm._inactive || vm._inactive === null) {\n        vm._inactive = false;\n        for (var i = 0; i < vm.$children.length; i++) {\n            activateChildComponent(vm.$children[i]);\n        }\n        callHook$1(vm, 'activated');\n    }\n}\nfunction deactivateChildComponent(vm, direct) {\n    if (direct) {\n        vm._directInactive = true;\n        if (isInInactiveTree(vm)) {\n            return;\n        }\n    }\n    if (!vm._inactive) {\n        vm._inactive = true;\n        for (var i = 0; i < vm.$children.length; i++) {\n            deactivateChildComponent(vm.$children[i]);\n        }\n        callHook$1(vm, 'deactivated');\n    }\n}\nfunction callHook$1(vm, hook, args, setContext) {\n    if (setContext === void 0) { setContext = true; }\n    // #7573 disable dep collection when invoking lifecycle hooks\n    pushTarget();\n    var prevInst = currentInstance;\n    var prevScope = getCurrentScope();\n    setContext && setCurrentInstance(vm);\n    var handlers = vm.$options[hook];\n    var info = \"\".concat(hook, \" hook\");\n    if (handlers) {\n        for (var i = 0, j = handlers.length; i < j; i++) {\n            invokeWithErrorHandling(handlers[i], vm, args || null, vm, info);\n        }\n    }\n    if (vm._hasHookEvent) {\n        vm.$emit('hook:' + hook);\n    }\n    if (setContext) {\n        setCurrentInstance(prevInst);\n        prevScope && prevScope.on();\n    }\n    popTarget();\n}\n\nvar MAX_UPDATE_COUNT = 100;\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index$1 = 0;\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState() {\n    index$1 = queue.length = activatedChildren.length = 0;\n    has = {};\n    if (process.env.NODE_ENV !== 'production') {\n        circular = {};\n    }\n    waiting = flushing = false;\n}\n// Async edge case #6566 requires saving the timestamp when event listeners are\n// attached. However, calling performance.now() has a perf overhead especially\n// if the page has thousands of event listeners. Instead, we take a timestamp\n// every time the scheduler flushes and use that for all event listeners\n// attached during that flush.\nvar currentFlushTimestamp = 0;\n// Async edge case fix requires storing an event listener's attach timestamp.\nvar getNow = Date.now;\n// Determine what event timestamp the browser is using. Annoyingly, the\n// timestamp can either be hi-res (relative to page load) or low-res\n// (relative to UNIX epoch), so in order to compare time we have to use the\n// same timestamp type when saving the flush timestamp.\n// All IE versions use low-res event timestamps, and have problematic clock\n// implementations (#9632)\nif (inBrowser && !isIE) {\n    var performance_1 = window.performance;\n    if (performance_1 &&\n        typeof performance_1.now === 'function' &&\n        getNow() > document.createEvent('Event').timeStamp) {\n        // if the event timestamp, although evaluated AFTER the Date.now(), is\n        // smaller than it, it means the event is using a hi-res timestamp,\n        // and we need to use the hi-res version for event listener timestamps as\n        // well.\n        getNow = function () { return performance_1.now(); };\n    }\n}\nvar sortCompareFn = function (a, b) {\n    if (a.post) {\n        if (!b.post)\n            return 1;\n    }\n    else if (b.post) {\n        return -1;\n    }\n    return a.id - b.id;\n};\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue() {\n    currentFlushTimestamp = getNow();\n    flushing = true;\n    var watcher, id;\n    // Sort queue before flush.\n    // This ensures that:\n    // 1. Components are updated from parent to child. (because parent is always\n    //    created before the child)\n    // 2. A component's user watchers are run before its render watcher (because\n    //    user watchers are created before the render watcher)\n    // 3. If a component is destroyed during a parent component's watcher run,\n    //    its watchers can be skipped.\n    queue.sort(sortCompareFn);\n    // do not cache length because more watchers might be pushed\n    // as we run existing watchers\n    for (index$1 = 0; index$1 < queue.length; index$1++) {\n        watcher = queue[index$1];\n        if (watcher.before) {\n            watcher.before();\n        }\n        id = watcher.id;\n        has[id] = null;\n        watcher.run();\n        // in dev build, check and stop circular updates.\n        if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n            circular[id] = (circular[id] || 0) + 1;\n            if (circular[id] > MAX_UPDATE_COUNT) {\n                warn$2('You may have an infinite update loop ' +\n                    (watcher.user\n                        ? \"in watcher with expression \\\"\".concat(watcher.expression, \"\\\"\")\n                        : \"in a component render function.\"), watcher.vm);\n                break;\n            }\n        }\n    }\n    // keep copies of post queues before resetting state\n    var activatedQueue = activatedChildren.slice();\n    var updatedQueue = queue.slice();\n    resetSchedulerState();\n    // call component updated and activated hooks\n    callActivatedHooks(activatedQueue);\n    callUpdatedHooks(updatedQueue);\n    cleanupDeps();\n    // devtool hook\n    /* istanbul ignore if */\n    if (devtools && config.devtools) {\n        devtools.emit('flush');\n    }\n}\nfunction callUpdatedHooks(queue) {\n    var i = queue.length;\n    while (i--) {\n        var watcher = queue[i];\n        var vm = watcher.vm;\n        if (vm && vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {\n            callHook$1(vm, 'updated');\n        }\n    }\n}\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent(vm) {\n    // setting _inactive to false here so that a render function can\n    // rely on checking whether it's in an inactive tree (e.g. router-view)\n    vm._inactive = false;\n    activatedChildren.push(vm);\n}\nfunction callActivatedHooks(queue) {\n    for (var i = 0; i < queue.length; i++) {\n        queue[i]._inactive = true;\n        activateChildComponent(queue[i], true /* true */);\n    }\n}\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher(watcher) {\n    var id = watcher.id;\n    if (has[id] != null) {\n        return;\n    }\n    if (watcher === Dep.target && watcher.noRecurse) {\n        return;\n    }\n    has[id] = true;\n    if (!flushing) {\n        queue.push(watcher);\n    }\n    else {\n        // if already flushing, splice the watcher based on its id\n        // if already past its id, it will be run next immediately.\n        var i = queue.length - 1;\n        while (i > index$1 && queue[i].id > watcher.id) {\n            i--;\n        }\n        queue.splice(i + 1, 0, watcher);\n    }\n    // queue the flush\n    if (!waiting) {\n        waiting = true;\n        if (process.env.NODE_ENV !== 'production' && !config.async) {\n            flushSchedulerQueue();\n            return;\n        }\n        nextTick(flushSchedulerQueue);\n    }\n}\n\nvar WATCHER = \"watcher\";\nvar WATCHER_CB = \"\".concat(WATCHER, \" callback\");\nvar WATCHER_GETTER = \"\".concat(WATCHER, \" getter\");\nvar WATCHER_CLEANUP = \"\".concat(WATCHER, \" cleanup\");\n// Simple effect.\nfunction watchEffect(effect, options) {\n    return doWatch(effect, null, options);\n}\nfunction watchPostEffect(effect, options) {\n    return doWatch(effect, null, (process.env.NODE_ENV !== 'production'\n        ? __assign(__assign({}, options), { flush: 'post' }) : { flush: 'post' }));\n}\nfunction watchSyncEffect(effect, options) {\n    return doWatch(effect, null, (process.env.NODE_ENV !== 'production'\n        ? __assign(__assign({}, options), { flush: 'sync' }) : { flush: 'sync' }));\n}\n// initial value for watchers to trigger on undefined initial values\nvar INITIAL_WATCHER_VALUE = {};\n// implementation\nfunction watch(source, cb, options) {\n    if (process.env.NODE_ENV !== 'production' && typeof cb !== 'function') {\n        warn$2(\"`watch(fn, options?)` signature has been moved to a separate API. \" +\n            \"Use `watchEffect(fn, options?)` instead. `watch` now only \" +\n            \"supports `watch(source, cb, options?) signature.\");\n    }\n    return doWatch(source, cb, options);\n}\nfunction doWatch(source, cb, _a) {\n    var _b = _a === void 0 ? emptyObject : _a, immediate = _b.immediate, deep = _b.deep, _c = _b.flush, flush = _c === void 0 ? 'pre' : _c, onTrack = _b.onTrack, onTrigger = _b.onTrigger;\n    if (process.env.NODE_ENV !== 'production' && !cb) {\n        if (immediate !== undefined) {\n            warn$2(\"watch() \\\"immediate\\\" option is only respected when using the \" +\n                \"watch(source, callback, options?) signature.\");\n        }\n        if (deep !== undefined) {\n            warn$2(\"watch() \\\"deep\\\" option is only respected when using the \" +\n                \"watch(source, callback, options?) signature.\");\n        }\n    }\n    var warnInvalidSource = function (s) {\n        warn$2(\"Invalid watch source: \".concat(s, \". A watch source can only be a getter/effect \") +\n            \"function, a ref, a reactive object, or an array of these types.\");\n    };\n    var instance = currentInstance;\n    var call = function (fn, type, args) {\n        if (args === void 0) { args = null; }\n        var res = invokeWithErrorHandling(fn, null, args, instance, type);\n        if (deep && res && res.__ob__)\n            res.__ob__.dep.depend();\n        return res;\n    };\n    var getter;\n    var forceTrigger = false;\n    var isMultiSource = false;\n    if (isRef(source)) {\n        getter = function () { return source.value; };\n        forceTrigger = isShallow(source);\n    }\n    else if (isReactive(source)) {\n        getter = function () {\n            source.__ob__.dep.depend();\n            return source;\n        };\n        deep = true;\n    }\n    else if (isArray(source)) {\n        isMultiSource = true;\n        forceTrigger = source.some(function (s) { return isReactive(s) || isShallow(s); });\n        getter = function () {\n            return source.map(function (s) {\n                if (isRef(s)) {\n                    return s.value;\n                }\n                else if (isReactive(s)) {\n                    s.__ob__.dep.depend();\n                    return traverse(s);\n                }\n                else if (isFunction(s)) {\n                    return call(s, WATCHER_GETTER);\n                }\n                else {\n                    process.env.NODE_ENV !== 'production' && warnInvalidSource(s);\n                }\n            });\n        };\n    }\n    else if (isFunction(source)) {\n        if (cb) {\n            // getter with cb\n            getter = function () { return call(source, WATCHER_GETTER); };\n        }\n        else {\n            // no cb -> simple effect\n            getter = function () {\n                if (instance && instance._isDestroyed) {\n                    return;\n                }\n                if (cleanup) {\n                    cleanup();\n                }\n                return call(source, WATCHER, [onCleanup]);\n            };\n        }\n    }\n    else {\n        getter = noop;\n        process.env.NODE_ENV !== 'production' && warnInvalidSource(source);\n    }\n    if (cb && deep) {\n        var baseGetter_1 = getter;\n        getter = function () { return traverse(baseGetter_1()); };\n    }\n    var cleanup;\n    var onCleanup = function (fn) {\n        cleanup = watcher.onStop = function () {\n            call(fn, WATCHER_CLEANUP);\n        };\n    };\n    // in SSR there is no need to setup an actual effect, and it should be noop\n    // unless it's eager\n    if (isServerRendering()) {\n        // we will also not call the invalidate callback (+ runner is not set up)\n        onCleanup = noop;\n        if (!cb) {\n            getter();\n        }\n        else if (immediate) {\n            call(cb, WATCHER_CB, [\n                getter(),\n                isMultiSource ? [] : undefined,\n                onCleanup\n            ]);\n        }\n        return noop;\n    }\n    var watcher = new Watcher(currentInstance, getter, noop, {\n        lazy: true\n    });\n    watcher.noRecurse = !cb;\n    var oldValue = isMultiSource ? [] : INITIAL_WATCHER_VALUE;\n    // overwrite default run\n    watcher.run = function () {\n        if (!watcher.active) {\n            return;\n        }\n        if (cb) {\n            // watch(source, cb)\n            var newValue = watcher.get();\n            if (deep ||\n                forceTrigger ||\n                (isMultiSource\n                    ? newValue.some(function (v, i) {\n                        return hasChanged(v, oldValue[i]);\n                    })\n                    : hasChanged(newValue, oldValue))) {\n                // cleanup before running cb again\n                if (cleanup) {\n                    cleanup();\n                }\n                call(cb, WATCHER_CB, [\n                    newValue,\n                    // pass undefined as the old value when it's changed for the first time\n                    oldValue === INITIAL_WATCHER_VALUE ? undefined : oldValue,\n                    onCleanup\n                ]);\n                oldValue = newValue;\n            }\n        }\n        else {\n            // watchEffect\n            watcher.get();\n        }\n    };\n    if (flush === 'sync') {\n        watcher.update = watcher.run;\n    }\n    else if (flush === 'post') {\n        watcher.post = true;\n        watcher.update = function () { return queueWatcher(watcher); };\n    }\n    else {\n        // pre\n        watcher.update = function () {\n            if (instance && instance === currentInstance && !instance._isMounted) {\n                // pre-watcher triggered before\n                var buffer = instance._preWatchers || (instance._preWatchers = []);\n                if (buffer.indexOf(watcher) < 0)\n                    buffer.push(watcher);\n            }\n            else {\n                queueWatcher(watcher);\n            }\n        };\n    }\n    if (process.env.NODE_ENV !== 'production') {\n        watcher.onTrack = onTrack;\n        watcher.onTrigger = onTrigger;\n    }\n    // initial run\n    if (cb) {\n        if (immediate) {\n            watcher.run();\n        }\n        else {\n            oldValue = watcher.get();\n        }\n    }\n    else if (flush === 'post' && instance) {\n        instance.$once('hook:mounted', function () { return watcher.get(); });\n    }\n    else {\n        watcher.get();\n    }\n    return function () {\n        watcher.teardown();\n    };\n}\n\nfunction provide(key, value) {\n    if (!currentInstance) {\n        if (process.env.NODE_ENV !== 'production') {\n            warn$2(\"provide() can only be used inside setup().\");\n        }\n    }\n    else {\n        // TS doesn't allow symbol as index type\n        resolveProvided(currentInstance)[key] = value;\n    }\n}\nfunction resolveProvided(vm) {\n    // by default an instance inherits its parent's provides object\n    // but when it needs to provide values of its own, it creates its\n    // own provides object using parent provides object as prototype.\n    // this way in `inject` we can simply look up injections from direct\n    // parent and let the prototype chain do the work.\n    var existing = vm._provided;\n    var parentProvides = vm.$parent && vm.$parent._provided;\n    if (parentProvides === existing) {\n        return (vm._provided = Object.create(parentProvides));\n    }\n    else {\n        return existing;\n    }\n}\nfunction inject(key, defaultValue, treatDefaultAsFactory) {\n    if (treatDefaultAsFactory === void 0) { treatDefaultAsFactory = false; }\n    // fallback to `currentRenderingInstance` so that this can be called in\n    // a functional component\n    var instance = currentInstance;\n    if (instance) {\n        // #2400\n        // to support `app.use` plugins,\n        // fallback to appContext's `provides` if the instance is at root\n        var provides = instance.$parent && instance.$parent._provided;\n        if (provides && key in provides) {\n            // TS doesn't allow symbol as index type\n            return provides[key];\n        }\n        else if (arguments.length > 1) {\n            return treatDefaultAsFactory && isFunction(defaultValue)\n                ? defaultValue.call(instance)\n                : defaultValue;\n        }\n        else if (process.env.NODE_ENV !== 'production') {\n            warn$2(\"injection \\\"\".concat(String(key), \"\\\" not found.\"));\n        }\n    }\n    else if (process.env.NODE_ENV !== 'production') {\n        warn$2(\"inject() can only be used inside setup() or functional components.\");\n    }\n}\n\n/**\n * @internal this function needs manual public type declaration because it relies\n * on previously manually authored types from Vue 2\n */\nfunction h(type, props, children) {\n    if (!currentInstance) {\n        process.env.NODE_ENV !== 'production' &&\n            warn$2(\"globally imported h() can only be invoked when there is an active \" +\n                \"component instance, e.g. synchronously in a component's render or setup function.\");\n    }\n    return createElement$1(currentInstance, type, props, children, 2, true);\n}\n\nfunction handleError(err, vm, info) {\n    // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n    // See: https://github.com/vuejs/vuex/issues/1505\n    pushTarget();\n    try {\n        if (vm) {\n            var cur = vm;\n            while ((cur = cur.$parent)) {\n                var hooks = cur.$options.errorCaptured;\n                if (hooks) {\n                    for (var i = 0; i < hooks.length; i++) {\n                        try {\n                            var capture = hooks[i].call(cur, err, vm, info) === false;\n                            if (capture)\n                                return;\n                        }\n                        catch (e) {\n                            globalHandleError(e, cur, 'errorCaptured hook');\n                        }\n                    }\n                }\n            }\n        }\n        globalHandleError(err, vm, info);\n    }\n    finally {\n        popTarget();\n    }\n}\nfunction invokeWithErrorHandling(handler, context, args, vm, info) {\n    var res;\n    try {\n        res = args ? handler.apply(context, args) : handler.call(context);\n        if (res && !res._isVue && isPromise(res) && !res._handled) {\n            res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n            res._handled = true;\n        }\n    }\n    catch (e) {\n        handleError(e, vm, info);\n    }\n    return res;\n}\nfunction globalHandleError(err, vm, info) {\n    if (config.errorHandler) {\n        try {\n            return config.errorHandler.call(null, err, vm, info);\n        }\n        catch (e) {\n            // if the user intentionally throws the original error in the handler,\n            // do not log it twice\n            if (e !== err) {\n                logError(e, null, 'config.errorHandler');\n            }\n        }\n    }\n    logError(err, vm, info);\n}\nfunction logError(err, vm, info) {\n    if (process.env.NODE_ENV !== 'production') {\n        warn$2(\"Error in \".concat(info, \": \\\"\").concat(err.toString(), \"\\\"\"), vm);\n    }\n    /* istanbul ignore else */\n    if (inBrowser && typeof console !== 'undefined') {\n        console.error(err);\n    }\n    else {\n        throw err;\n    }\n}\n\n/* globals MutationObserver */\nvar isUsingMicroTask = false;\nvar callbacks = [];\nvar pending = false;\nfunction flushCallbacks() {\n    pending = false;\n    var copies = callbacks.slice(0);\n    callbacks.length = 0;\n    for (var i = 0; i < copies.length; i++) {\n        copies[i]();\n    }\n}\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n    var p_1 = Promise.resolve();\n    timerFunc = function () {\n        p_1.then(flushCallbacks);\n        // In problematic UIWebViews, Promise.then doesn't completely break, but\n        // it can get stuck in a weird state where callbacks are pushed into the\n        // microtask queue but the queue isn't being flushed, until the browser\n        // needs to do some other work, e.g. handle a timer. Therefore we can\n        // \"force\" the microtask queue to be flushed by adding an empty timer.\n        if (isIOS)\n            setTimeout(noop);\n    };\n    isUsingMicroTask = true;\n}\nelse if (!isIE &&\n    typeof MutationObserver !== 'undefined' &&\n    (isNative(MutationObserver) ||\n        // PhantomJS and iOS 7.x\n        MutationObserver.toString() === '[object MutationObserverConstructor]')) {\n    // Use MutationObserver where native Promise is not available,\n    // e.g. PhantomJS, iOS7, Android 4.4\n    // (#6466 MutationObserver is unreliable in IE11)\n    var counter_1 = 1;\n    var observer = new MutationObserver(flushCallbacks);\n    var textNode_1 = document.createTextNode(String(counter_1));\n    observer.observe(textNode_1, {\n        characterData: true\n    });\n    timerFunc = function () {\n        counter_1 = (counter_1 + 1) % 2;\n        textNode_1.data = String(counter_1);\n    };\n    isUsingMicroTask = true;\n}\nelse if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n    // Fallback to setImmediate.\n    // Technically it leverages the (macro) task queue,\n    // but it is still a better choice than setTimeout.\n    timerFunc = function () {\n        setImmediate(flushCallbacks);\n    };\n}\nelse {\n    // Fallback to setTimeout.\n    timerFunc = function () {\n        setTimeout(flushCallbacks, 0);\n    };\n}\n/**\n * @internal\n */\nfunction nextTick(cb, ctx) {\n    var _resolve;\n    callbacks.push(function () {\n        if (cb) {\n            try {\n                cb.call(ctx);\n            }\n            catch (e) {\n                handleError(e, ctx, 'nextTick');\n            }\n        }\n        else if (_resolve) {\n            _resolve(ctx);\n        }\n    });\n    if (!pending) {\n        pending = true;\n        timerFunc();\n    }\n    // $flow-disable-line\n    if (!cb && typeof Promise !== 'undefined') {\n        return new Promise(function (resolve) {\n            _resolve = resolve;\n        });\n    }\n}\n\nfunction useCssModule(name) {\n    if (name === void 0) { name = '$style'; }\n    /* istanbul ignore else */\n    {\n        if (!currentInstance) {\n            process.env.NODE_ENV !== 'production' && warn$2(\"useCssModule must be called inside setup()\");\n            return emptyObject;\n        }\n        var mod = currentInstance[name];\n        if (!mod) {\n            process.env.NODE_ENV !== 'production' &&\n                warn$2(\"Current instance does not have CSS module named \\\"\".concat(name, \"\\\".\"));\n            return emptyObject;\n        }\n        return mod;\n    }\n}\n\n/**\n * Runtime helper for SFC's CSS variable injection feature.\n * @private\n */\nfunction useCssVars(getter) {\n    if (!inBrowser && !false)\n        return;\n    var instance = currentInstance;\n    if (!instance) {\n        process.env.NODE_ENV !== 'production' &&\n            warn$2(\"useCssVars is called without current active component instance.\");\n        return;\n    }\n    watchPostEffect(function () {\n        var el = instance.$el;\n        var vars = getter(instance, instance._setupProxy);\n        if (el && el.nodeType === 1) {\n            var style = el.style;\n            for (var key in vars) {\n                style.setProperty(\"--\".concat(key), vars[key]);\n            }\n        }\n    });\n}\n\n/**\n * v3-compatible async component API.\n * @internal the type is manually declared in <root>/types/v3-define-async-component.d.ts\n * because it relies on existing manual types\n */\nfunction defineAsyncComponent(source) {\n    if (isFunction(source)) {\n        source = { loader: source };\n    }\n    var loader = source.loader, loadingComponent = source.loadingComponent, errorComponent = source.errorComponent, _a = source.delay, delay = _a === void 0 ? 200 : _a, timeout = source.timeout, // undefined = never times out\n    _b = source.suspensible, // undefined = never times out\n    suspensible = _b === void 0 ? false : _b, // in Vue 3 default is true\n    userOnError = source.onError;\n    if (process.env.NODE_ENV !== 'production' && suspensible) {\n        warn$2(\"The suspensible option for async components is not supported in Vue2. It is ignored.\");\n    }\n    var pendingRequest = null;\n    var retries = 0;\n    var retry = function () {\n        retries++;\n        pendingRequest = null;\n        return load();\n    };\n    var load = function () {\n        var thisRequest;\n        return (pendingRequest ||\n            (thisRequest = pendingRequest =\n                loader()\n                    .catch(function (err) {\n                    err = err instanceof Error ? err : new Error(String(err));\n                    if (userOnError) {\n                        return new Promise(function (resolve, reject) {\n                            var userRetry = function () { return resolve(retry()); };\n                            var userFail = function () { return reject(err); };\n                            userOnError(err, userRetry, userFail, retries + 1);\n                        });\n                    }\n                    else {\n                        throw err;\n                    }\n                })\n                    .then(function (comp) {\n                    if (thisRequest !== pendingRequest && pendingRequest) {\n                        return pendingRequest;\n                    }\n                    if (process.env.NODE_ENV !== 'production' && !comp) {\n                        warn$2(\"Async component loader resolved to undefined. \" +\n                            \"If you are using retry(), make sure to return its return value.\");\n                    }\n                    // interop module default\n                    if (comp &&\n                        (comp.__esModule || comp[Symbol.toStringTag] === 'Module')) {\n                        comp = comp.default;\n                    }\n                    if (process.env.NODE_ENV !== 'production' && comp && !isObject(comp) && !isFunction(comp)) {\n                        throw new Error(\"Invalid async component load result: \".concat(comp));\n                    }\n                    return comp;\n                })));\n    };\n    return function () {\n        var component = load();\n        return {\n            component: component,\n            delay: delay,\n            timeout: timeout,\n            error: errorComponent,\n            loading: loadingComponent\n        };\n    };\n}\n\nfunction createLifeCycle(hookName) {\n    return function (fn, target) {\n        if (target === void 0) { target = currentInstance; }\n        if (!target) {\n            process.env.NODE_ENV !== 'production' &&\n                warn$2(\"\".concat(formatName(hookName), \" is called when there is no active component instance to be \") +\n                    \"associated with. \" +\n                    \"Lifecycle injection APIs can only be used during execution of setup().\");\n            return;\n        }\n        return injectHook(target, hookName, fn);\n    };\n}\nfunction formatName(name) {\n    if (name === 'beforeDestroy') {\n        name = 'beforeUnmount';\n    }\n    else if (name === 'destroyed') {\n        name = 'unmounted';\n    }\n    return \"on\".concat(name[0].toUpperCase() + name.slice(1));\n}\nfunction injectHook(instance, hookName, fn) {\n    var options = instance.$options;\n    options[hookName] = mergeLifecycleHook(options[hookName], fn);\n}\nvar onBeforeMount = createLifeCycle('beforeMount');\nvar onMounted = createLifeCycle('mounted');\nvar onBeforeUpdate = createLifeCycle('beforeUpdate');\nvar onUpdated = createLifeCycle('updated');\nvar onBeforeUnmount = createLifeCycle('beforeDestroy');\nvar onUnmounted = createLifeCycle('destroyed');\nvar onActivated = createLifeCycle('activated');\nvar onDeactivated = createLifeCycle('deactivated');\nvar onServerPrefetch = createLifeCycle('serverPrefetch');\nvar onRenderTracked = createLifeCycle('renderTracked');\nvar onRenderTriggered = createLifeCycle('renderTriggered');\nvar injectErrorCapturedHook = createLifeCycle('errorCaptured');\nfunction onErrorCaptured(hook, target) {\n    if (target === void 0) { target = currentInstance; }\n    injectErrorCapturedHook(hook, target);\n}\n\n/**\n * Note: also update dist/vue.runtime.mjs when adding new exports to this file.\n */\nvar version = '2.7.16';\n/**\n * @internal type is manually declared in <root>/types/v3-define-component.d.ts\n */\nfunction defineComponent(options) {\n    return options;\n}\n\nvar seenObjects = new _Set();\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse(val) {\n    _traverse(val, seenObjects);\n    seenObjects.clear();\n    return val;\n}\nfunction _traverse(val, seen) {\n    var i, keys;\n    var isA = isArray(val);\n    if ((!isA && !isObject(val)) ||\n        val.__v_skip /* ReactiveFlags.SKIP */ ||\n        Object.isFrozen(val) ||\n        val instanceof VNode) {\n        return;\n    }\n    if (val.__ob__) {\n        var depId = val.__ob__.dep.id;\n        if (seen.has(depId)) {\n            return;\n        }\n        seen.add(depId);\n    }\n    if (isA) {\n        i = val.length;\n        while (i--)\n            _traverse(val[i], seen);\n    }\n    else if (isRef(val)) {\n        _traverse(val.value, seen);\n    }\n    else {\n        keys = Object.keys(val);\n        i = keys.length;\n        while (i--)\n            _traverse(val[keys[i]], seen);\n    }\n}\n\nvar uid$1 = 0;\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n * @internal\n */\nvar Watcher = /** @class */ (function () {\n    function Watcher(vm, expOrFn, cb, options, isRenderWatcher) {\n        recordEffectScope(this, \n        // if the active effect scope is manually created (not a component scope),\n        // prioritize it\n        activeEffectScope && !activeEffectScope._vm\n            ? activeEffectScope\n            : vm\n                ? vm._scope\n                : undefined);\n        if ((this.vm = vm) && isRenderWatcher) {\n            vm._watcher = this;\n        }\n        // options\n        if (options) {\n            this.deep = !!options.deep;\n            this.user = !!options.user;\n            this.lazy = !!options.lazy;\n            this.sync = !!options.sync;\n            this.before = options.before;\n            if (process.env.NODE_ENV !== 'production') {\n                this.onTrack = options.onTrack;\n                this.onTrigger = options.onTrigger;\n            }\n        }\n        else {\n            this.deep = this.user = this.lazy = this.sync = false;\n        }\n        this.cb = cb;\n        this.id = ++uid$1; // uid for batching\n        this.active = true;\n        this.post = false;\n        this.dirty = this.lazy; // for lazy watchers\n        this.deps = [];\n        this.newDeps = [];\n        this.depIds = new _Set();\n        this.newDepIds = new _Set();\n        this.expression = process.env.NODE_ENV !== 'production' ? expOrFn.toString() : '';\n        // parse expression for getter\n        if (isFunction(expOrFn)) {\n            this.getter = expOrFn;\n        }\n        else {\n            this.getter = parsePath(expOrFn);\n            if (!this.getter) {\n                this.getter = noop;\n                process.env.NODE_ENV !== 'production' &&\n                    warn$2(\"Failed watching path: \\\"\".concat(expOrFn, \"\\\" \") +\n                        'Watcher only accepts simple dot-delimited paths. ' +\n                        'For full control, use a function instead.', vm);\n            }\n        }\n        this.value = this.lazy ? undefined : this.get();\n    }\n    /**\n     * Evaluate the getter, and re-collect dependencies.\n     */\n    Watcher.prototype.get = function () {\n        pushTarget(this);\n        var value;\n        var vm = this.vm;\n        try {\n            value = this.getter.call(vm, vm);\n        }\n        catch (e) {\n            if (this.user) {\n                handleError(e, vm, \"getter for watcher \\\"\".concat(this.expression, \"\\\"\"));\n            }\n            else {\n                throw e;\n            }\n        }\n        finally {\n            // \"touch\" every property so they are all tracked as\n            // dependencies for deep watching\n            if (this.deep) {\n                traverse(value);\n            }\n            popTarget();\n            this.cleanupDeps();\n        }\n        return value;\n    };\n    /**\n     * Add a dependency to this directive.\n     */\n    Watcher.prototype.addDep = function (dep) {\n        var id = dep.id;\n        if (!this.newDepIds.has(id)) {\n            this.newDepIds.add(id);\n            this.newDeps.push(dep);\n            if (!this.depIds.has(id)) {\n                dep.addSub(this);\n            }\n        }\n    };\n    /**\n     * Clean up for dependency collection.\n     */\n    Watcher.prototype.cleanupDeps = function () {\n        var i = this.deps.length;\n        while (i--) {\n            var dep = this.deps[i];\n            if (!this.newDepIds.has(dep.id)) {\n                dep.removeSub(this);\n            }\n        }\n        var tmp = this.depIds;\n        this.depIds = this.newDepIds;\n        this.newDepIds = tmp;\n        this.newDepIds.clear();\n        tmp = this.deps;\n        this.deps = this.newDeps;\n        this.newDeps = tmp;\n        this.newDeps.length = 0;\n    };\n    /**\n     * Subscriber interface.\n     * Will be called when a dependency changes.\n     */\n    Watcher.prototype.update = function () {\n        /* istanbul ignore else */\n        if (this.lazy) {\n            this.dirty = true;\n        }\n        else if (this.sync) {\n            this.run();\n        }\n        else {\n            queueWatcher(this);\n        }\n    };\n    /**\n     * Scheduler job interface.\n     * Will be called by the scheduler.\n     */\n    Watcher.prototype.run = function () {\n        if (this.active) {\n            var value = this.get();\n            if (value !== this.value ||\n                // Deep watchers and watchers on Object/Arrays should fire even\n                // when the value is the same, because the value may\n                // have mutated.\n                isObject(value) ||\n                this.deep) {\n                // set new value\n                var oldValue = this.value;\n                this.value = value;\n                if (this.user) {\n                    var info = \"callback for watcher \\\"\".concat(this.expression, \"\\\"\");\n                    invokeWithErrorHandling(this.cb, this.vm, [value, oldValue], this.vm, info);\n                }\n                else {\n                    this.cb.call(this.vm, value, oldValue);\n                }\n            }\n        }\n    };\n    /**\n     * Evaluate the value of the watcher.\n     * This only gets called for lazy watchers.\n     */\n    Watcher.prototype.evaluate = function () {\n        this.value = this.get();\n        this.dirty = false;\n    };\n    /**\n     * Depend on all deps collected by this watcher.\n     */\n    Watcher.prototype.depend = function () {\n        var i = this.deps.length;\n        while (i--) {\n            this.deps[i].depend();\n        }\n    };\n    /**\n     * Remove self from all dependencies' subscriber list.\n     */\n    Watcher.prototype.teardown = function () {\n        if (this.vm && !this.vm._isBeingDestroyed) {\n            remove$2(this.vm._scope.effects, this);\n        }\n        if (this.active) {\n            var i = this.deps.length;\n            while (i--) {\n                this.deps[i].removeSub(this);\n            }\n            this.active = false;\n            if (this.onStop) {\n                this.onStop();\n            }\n        }\n    };\n    return Watcher;\n}());\n\nvar sharedPropertyDefinition = {\n    enumerable: true,\n    configurable: true,\n    get: noop,\n    set: noop\n};\nfunction proxy(target, sourceKey, key) {\n    sharedPropertyDefinition.get = function proxyGetter() {\n        return this[sourceKey][key];\n    };\n    sharedPropertyDefinition.set = function proxySetter(val) {\n        this[sourceKey][key] = val;\n    };\n    Object.defineProperty(target, key, sharedPropertyDefinition);\n}\nfunction initState(vm) {\n    var opts = vm.$options;\n    if (opts.props)\n        initProps$1(vm, opts.props);\n    // Composition API\n    initSetup(vm);\n    if (opts.methods)\n        initMethods(vm, opts.methods);\n    if (opts.data) {\n        initData(vm);\n    }\n    else {\n        var ob = observe((vm._data = {}));\n        ob && ob.vmCount++;\n    }\n    if (opts.computed)\n        initComputed$1(vm, opts.computed);\n    if (opts.watch && opts.watch !== nativeWatch) {\n        initWatch(vm, opts.watch);\n    }\n}\nfunction initProps$1(vm, propsOptions) {\n    var propsData = vm.$options.propsData || {};\n    var props = (vm._props = shallowReactive({}));\n    // cache prop keys so that future props updates can iterate using Array\n    // instead of dynamic object key enumeration.\n    var keys = (vm.$options._propKeys = []);\n    var isRoot = !vm.$parent;\n    // root instance props should be converted\n    if (!isRoot) {\n        toggleObserving(false);\n    }\n    var _loop_1 = function (key) {\n        keys.push(key);\n        var value = validateProp(key, propsOptions, propsData, vm);\n        /* istanbul ignore else */\n        if (process.env.NODE_ENV !== 'production') {\n            var hyphenatedKey = hyphenate(key);\n            if (isReservedAttribute(hyphenatedKey) ||\n                config.isReservedAttr(hyphenatedKey)) {\n                warn$2(\"\\\"\".concat(hyphenatedKey, \"\\\" is a reserved attribute and cannot be used as component prop.\"), vm);\n            }\n            defineReactive(props, key, value, function () {\n                if (!isRoot && !isUpdatingChildComponent) {\n                    warn$2(\"Avoid mutating a prop directly since the value will be \" +\n                        \"overwritten whenever the parent component re-renders. \" +\n                        \"Instead, use a data or computed property based on the prop's \" +\n                        \"value. Prop being mutated: \\\"\".concat(key, \"\\\"\"), vm);\n                }\n            }, true /* shallow */);\n        }\n        else {\n            defineReactive(props, key, value, undefined, true /* shallow */);\n        }\n        // static props are already proxied on the component's prototype\n        // during Vue.extend(). We only need to proxy props defined at\n        // instantiation here.\n        if (!(key in vm)) {\n            proxy(vm, \"_props\", key);\n        }\n    };\n    for (var key in propsOptions) {\n        _loop_1(key);\n    }\n    toggleObserving(true);\n}\nfunction initData(vm) {\n    var data = vm.$options.data;\n    data = vm._data = isFunction(data) ? getData(data, vm) : data || {};\n    if (!isPlainObject(data)) {\n        data = {};\n        process.env.NODE_ENV !== 'production' &&\n            warn$2('data functions should return an object:\\n' +\n                'https://v2.vuejs.org/v2/guide/components.html#data-Must-Be-a-Function', vm);\n    }\n    // proxy data on instance\n    var keys = Object.keys(data);\n    var props = vm.$options.props;\n    var methods = vm.$options.methods;\n    var i = keys.length;\n    while (i--) {\n        var key = keys[i];\n        if (process.env.NODE_ENV !== 'production') {\n            if (methods && hasOwn(methods, key)) {\n                warn$2(\"Method \\\"\".concat(key, \"\\\" has already been defined as a data property.\"), vm);\n            }\n        }\n        if (props && hasOwn(props, key)) {\n            process.env.NODE_ENV !== 'production' &&\n                warn$2(\"The data property \\\"\".concat(key, \"\\\" is already declared as a prop. \") +\n                    \"Use prop default value instead.\", vm);\n        }\n        else if (!isReserved(key)) {\n            proxy(vm, \"_data\", key);\n        }\n    }\n    // observe data\n    var ob = observe(data);\n    ob && ob.vmCount++;\n}\nfunction getData(data, vm) {\n    // #7573 disable dep collection when invoking data getters\n    pushTarget();\n    try {\n        return data.call(vm, vm);\n    }\n    catch (e) {\n        handleError(e, vm, \"data()\");\n        return {};\n    }\n    finally {\n        popTarget();\n    }\n}\nvar computedWatcherOptions = { lazy: true };\nfunction initComputed$1(vm, computed) {\n    // $flow-disable-line\n    var watchers = (vm._computedWatchers = Object.create(null));\n    // computed properties are just getters during SSR\n    var isSSR = isServerRendering();\n    for (var key in computed) {\n        var userDef = computed[key];\n        var getter = isFunction(userDef) ? userDef : userDef.get;\n        if (process.env.NODE_ENV !== 'production' && getter == null) {\n            warn$2(\"Getter is missing for computed property \\\"\".concat(key, \"\\\".\"), vm);\n        }\n        if (!isSSR) {\n            // create internal watcher for the computed property.\n            watchers[key] = new Watcher(vm, getter || noop, noop, computedWatcherOptions);\n        }\n        // component-defined computed properties are already defined on the\n        // component prototype. We only need to define computed properties defined\n        // at instantiation here.\n        if (!(key in vm)) {\n            defineComputed(vm, key, userDef);\n        }\n        else if (process.env.NODE_ENV !== 'production') {\n            if (key in vm.$data) {\n                warn$2(\"The computed property \\\"\".concat(key, \"\\\" is already defined in data.\"), vm);\n            }\n            else if (vm.$options.props && key in vm.$options.props) {\n                warn$2(\"The computed property \\\"\".concat(key, \"\\\" is already defined as a prop.\"), vm);\n            }\n            else if (vm.$options.methods && key in vm.$options.methods) {\n                warn$2(\"The computed property \\\"\".concat(key, \"\\\" is already defined as a method.\"), vm);\n            }\n        }\n    }\n}\nfunction defineComputed(target, key, userDef) {\n    var shouldCache = !isServerRendering();\n    if (isFunction(userDef)) {\n        sharedPropertyDefinition.get = shouldCache\n            ? createComputedGetter(key)\n            : createGetterInvoker(userDef);\n        sharedPropertyDefinition.set = noop;\n    }\n    else {\n        sharedPropertyDefinition.get = userDef.get\n            ? shouldCache && userDef.cache !== false\n                ? createComputedGetter(key)\n                : createGetterInvoker(userDef.get)\n            : noop;\n        sharedPropertyDefinition.set = userDef.set || noop;\n    }\n    if (process.env.NODE_ENV !== 'production' && sharedPropertyDefinition.set === noop) {\n        sharedPropertyDefinition.set = function () {\n            warn$2(\"Computed property \\\"\".concat(key, \"\\\" was assigned to but it has no setter.\"), this);\n        };\n    }\n    Object.defineProperty(target, key, sharedPropertyDefinition);\n}\nfunction createComputedGetter(key) {\n    return function computedGetter() {\n        var watcher = this._computedWatchers && this._computedWatchers[key];\n        if (watcher) {\n            if (watcher.dirty) {\n                watcher.evaluate();\n            }\n            if (Dep.target) {\n                if (process.env.NODE_ENV !== 'production' && Dep.target.onTrack) {\n                    Dep.target.onTrack({\n                        effect: Dep.target,\n                        target: this,\n                        type: \"get\" /* TrackOpTypes.GET */,\n                        key: key\n                    });\n                }\n                watcher.depend();\n            }\n            return watcher.value;\n        }\n    };\n}\nfunction createGetterInvoker(fn) {\n    return function computedGetter() {\n        return fn.call(this, this);\n    };\n}\nfunction initMethods(vm, methods) {\n    var props = vm.$options.props;\n    for (var key in methods) {\n        if (process.env.NODE_ENV !== 'production') {\n            if (typeof methods[key] !== 'function') {\n                warn$2(\"Method \\\"\".concat(key, \"\\\" has type \\\"\").concat(typeof methods[key], \"\\\" in the component definition. \") +\n                    \"Did you reference the function correctly?\", vm);\n            }\n            if (props && hasOwn(props, key)) {\n                warn$2(\"Method \\\"\".concat(key, \"\\\" has already been defined as a prop.\"), vm);\n            }\n            if (key in vm && isReserved(key)) {\n                warn$2(\"Method \\\"\".concat(key, \"\\\" conflicts with an existing Vue instance method. \") +\n                    \"Avoid defining component methods that start with _ or $.\");\n            }\n        }\n        vm[key] = typeof methods[key] !== 'function' ? noop : bind$1(methods[key], vm);\n    }\n}\nfunction initWatch(vm, watch) {\n    for (var key in watch) {\n        var handler = watch[key];\n        if (isArray(handler)) {\n            for (var i = 0; i < handler.length; i++) {\n                createWatcher(vm, key, handler[i]);\n            }\n        }\n        else {\n            createWatcher(vm, key, handler);\n        }\n    }\n}\nfunction createWatcher(vm, expOrFn, handler, options) {\n    if (isPlainObject(handler)) {\n        options = handler;\n        handler = handler.handler;\n    }\n    if (typeof handler === 'string') {\n        handler = vm[handler];\n    }\n    return vm.$watch(expOrFn, handler, options);\n}\nfunction stateMixin(Vue) {\n    // flow somehow has problems with directly declared definition object\n    // when using Object.defineProperty, so we have to procedurally build up\n    // the object here.\n    var dataDef = {};\n    dataDef.get = function () {\n        return this._data;\n    };\n    var propsDef = {};\n    propsDef.get = function () {\n        return this._props;\n    };\n    if (process.env.NODE_ENV !== 'production') {\n        dataDef.set = function () {\n            warn$2('Avoid replacing instance root $data. ' +\n                'Use nested data properties instead.', this);\n        };\n        propsDef.set = function () {\n            warn$2(\"$props is readonly.\", this);\n        };\n    }\n    Object.defineProperty(Vue.prototype, '$data', dataDef);\n    Object.defineProperty(Vue.prototype, '$props', propsDef);\n    Vue.prototype.$set = set;\n    Vue.prototype.$delete = del;\n    Vue.prototype.$watch = function (expOrFn, cb, options) {\n        var vm = this;\n        if (isPlainObject(cb)) {\n            return createWatcher(vm, expOrFn, cb, options);\n        }\n        options = options || {};\n        options.user = true;\n        var watcher = new Watcher(vm, expOrFn, cb, options);\n        if (options.immediate) {\n            var info = \"callback for immediate watcher \\\"\".concat(watcher.expression, \"\\\"\");\n            pushTarget();\n            invokeWithErrorHandling(cb, vm, [watcher.value], vm, info);\n            popTarget();\n        }\n        return function unwatchFn() {\n            watcher.teardown();\n        };\n    };\n}\n\nfunction initProvide(vm) {\n    var provideOption = vm.$options.provide;\n    if (provideOption) {\n        var provided = isFunction(provideOption)\n            ? provideOption.call(vm)\n            : provideOption;\n        if (!isObject(provided)) {\n            return;\n        }\n        var source = resolveProvided(vm);\n        // IE9 doesn't support Object.getOwnPropertyDescriptors so we have to\n        // iterate the keys ourselves.\n        var keys = hasSymbol ? Reflect.ownKeys(provided) : Object.keys(provided);\n        for (var i = 0; i < keys.length; i++) {\n            var key = keys[i];\n            Object.defineProperty(source, key, Object.getOwnPropertyDescriptor(provided, key));\n        }\n    }\n}\nfunction initInjections(vm) {\n    var result = resolveInject(vm.$options.inject, vm);\n    if (result) {\n        toggleObserving(false);\n        Object.keys(result).forEach(function (key) {\n            /* istanbul ignore else */\n            if (process.env.NODE_ENV !== 'production') {\n                defineReactive(vm, key, result[key], function () {\n                    warn$2(\"Avoid mutating an injected value directly since the changes will be \" +\n                        \"overwritten whenever the provided component re-renders. \" +\n                        \"injection being mutated: \\\"\".concat(key, \"\\\"\"), vm);\n                });\n            }\n            else {\n                defineReactive(vm, key, result[key]);\n            }\n        });\n        toggleObserving(true);\n    }\n}\nfunction resolveInject(inject, vm) {\n    if (inject) {\n        // inject is :any because flow is not smart enough to figure out cached\n        var result = Object.create(null);\n        var keys = hasSymbol ? Reflect.ownKeys(inject) : Object.keys(inject);\n        for (var i = 0; i < keys.length; i++) {\n            var key = keys[i];\n            // #6574 in case the inject object is observed...\n            if (key === '__ob__')\n                continue;\n            var provideKey = inject[key].from;\n            if (provideKey in vm._provided) {\n                result[key] = vm._provided[provideKey];\n            }\n            else if ('default' in inject[key]) {\n                var provideDefault = inject[key].default;\n                result[key] = isFunction(provideDefault)\n                    ? provideDefault.call(vm)\n                    : provideDefault;\n            }\n            else if (process.env.NODE_ENV !== 'production') {\n                warn$2(\"Injection \\\"\".concat(key, \"\\\" not found\"), vm);\n            }\n        }\n        return result;\n    }\n}\n\nvar uid = 0;\nfunction initMixin$1(Vue) {\n    Vue.prototype._init = function (options) {\n        var vm = this;\n        // a uid\n        vm._uid = uid++;\n        var startTag, endTag;\n        /* istanbul ignore if */\n        if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n            startTag = \"vue-perf-start:\".concat(vm._uid);\n            endTag = \"vue-perf-end:\".concat(vm._uid);\n            mark(startTag);\n        }\n        // a flag to mark this as a Vue instance without having to do instanceof\n        // check\n        vm._isVue = true;\n        // avoid instances from being observed\n        vm.__v_skip = true;\n        // effect scope\n        vm._scope = new EffectScope(true /* detached */);\n        // #13134 edge case where a child component is manually created during the\n        // render of a parent component\n        vm._scope.parent = undefined;\n        vm._scope._vm = true;\n        // merge options\n        if (options && options._isComponent) {\n            // optimize internal component instantiation\n            // since dynamic options merging is pretty slow, and none of the\n            // internal component options needs special treatment.\n            initInternalComponent(vm, options);\n        }\n        else {\n            vm.$options = mergeOptions(resolveConstructorOptions(vm.constructor), options || {}, vm);\n        }\n        /* istanbul ignore else */\n        if (process.env.NODE_ENV !== 'production') {\n            initProxy(vm);\n        }\n        else {\n            vm._renderProxy = vm;\n        }\n        // expose real self\n        vm._self = vm;\n        initLifecycle(vm);\n        initEvents(vm);\n        initRender(vm);\n        callHook$1(vm, 'beforeCreate', undefined, false /* setContext */);\n        initInjections(vm); // resolve injections before data/props\n        initState(vm);\n        initProvide(vm); // resolve provide after data/props\n        callHook$1(vm, 'created');\n        /* istanbul ignore if */\n        if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n            vm._name = formatComponentName(vm, false);\n            mark(endTag);\n            measure(\"vue \".concat(vm._name, \" init\"), startTag, endTag);\n        }\n        if (vm.$options.el) {\n            vm.$mount(vm.$options.el);\n        }\n    };\n}\nfunction initInternalComponent(vm, options) {\n    var opts = (vm.$options = Object.create(vm.constructor.options));\n    // doing this because it's faster than dynamic enumeration.\n    var parentVnode = options._parentVnode;\n    opts.parent = options.parent;\n    opts._parentVnode = parentVnode;\n    var vnodeComponentOptions = parentVnode.componentOptions;\n    opts.propsData = vnodeComponentOptions.propsData;\n    opts._parentListeners = vnodeComponentOptions.listeners;\n    opts._renderChildren = vnodeComponentOptions.children;\n    opts._componentTag = vnodeComponentOptions.tag;\n    if (options.render) {\n        opts.render = options.render;\n        opts.staticRenderFns = options.staticRenderFns;\n    }\n}\nfunction resolveConstructorOptions(Ctor) {\n    var options = Ctor.options;\n    if (Ctor.super) {\n        var superOptions = resolveConstructorOptions(Ctor.super);\n        var cachedSuperOptions = Ctor.superOptions;\n        if (superOptions !== cachedSuperOptions) {\n            // super option changed,\n            // need to resolve new options.\n            Ctor.superOptions = superOptions;\n            // check if there are any late-modified/attached options (#4976)\n            var modifiedOptions = resolveModifiedOptions(Ctor);\n            // update base extend options\n            if (modifiedOptions) {\n                extend(Ctor.extendOptions, modifiedOptions);\n            }\n            options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n            if (options.name) {\n                options.components[options.name] = Ctor;\n            }\n        }\n    }\n    return options;\n}\nfunction resolveModifiedOptions(Ctor) {\n    var modified;\n    var latest = Ctor.options;\n    var sealed = Ctor.sealedOptions;\n    for (var key in latest) {\n        if (latest[key] !== sealed[key]) {\n            if (!modified)\n                modified = {};\n            modified[key] = latest[key];\n        }\n    }\n    return modified;\n}\n\nfunction FunctionalRenderContext(data, props, children, parent, Ctor) {\n    var _this = this;\n    var options = Ctor.options;\n    // ensure the createElement function in functional components\n    // gets a unique context - this is necessary for correct named slot check\n    var contextVm;\n    if (hasOwn(parent, '_uid')) {\n        contextVm = Object.create(parent);\n        contextVm._original = parent;\n    }\n    else {\n        // the context vm passed in is a functional context as well.\n        // in this case we want to make sure we are able to get a hold to the\n        // real context instance.\n        contextVm = parent;\n        // @ts-ignore\n        parent = parent._original;\n    }\n    var isCompiled = isTrue(options._compiled);\n    var needNormalization = !isCompiled;\n    this.data = data;\n    this.props = props;\n    this.children = children;\n    this.parent = parent;\n    this.listeners = data.on || emptyObject;\n    this.injections = resolveInject(options.inject, parent);\n    this.slots = function () {\n        if (!_this.$slots) {\n            normalizeScopedSlots(parent, data.scopedSlots, (_this.$slots = resolveSlots(children, parent)));\n        }\n        return _this.$slots;\n    };\n    Object.defineProperty(this, 'scopedSlots', {\n        enumerable: true,\n        get: function () {\n            return normalizeScopedSlots(parent, data.scopedSlots, this.slots());\n        }\n    });\n    // support for compiled functional template\n    if (isCompiled) {\n        // exposing $options for renderStatic()\n        this.$options = options;\n        // pre-resolve slots for renderSlot()\n        this.$slots = this.slots();\n        this.$scopedSlots = normalizeScopedSlots(parent, data.scopedSlots, this.$slots);\n    }\n    if (options._scopeId) {\n        this._c = function (a, b, c, d) {\n            var vnode = createElement$1(contextVm, a, b, c, d, needNormalization);\n            if (vnode && !isArray(vnode)) {\n                vnode.fnScopeId = options._scopeId;\n                vnode.fnContext = parent;\n            }\n            return vnode;\n        };\n    }\n    else {\n        this._c = function (a, b, c, d) {\n            return createElement$1(contextVm, a, b, c, d, needNormalization);\n        };\n    }\n}\ninstallRenderHelpers(FunctionalRenderContext.prototype);\nfunction createFunctionalComponent(Ctor, propsData, data, contextVm, children) {\n    var options = Ctor.options;\n    var props = {};\n    var propOptions = options.props;\n    if (isDef(propOptions)) {\n        for (var key in propOptions) {\n            props[key] = validateProp(key, propOptions, propsData || emptyObject);\n        }\n    }\n    else {\n        if (isDef(data.attrs))\n            mergeProps(props, data.attrs);\n        if (isDef(data.props))\n            mergeProps(props, data.props);\n    }\n    var renderContext = new FunctionalRenderContext(data, props, children, contextVm, Ctor);\n    var vnode = options.render.call(null, renderContext._c, renderContext);\n    if (vnode instanceof VNode) {\n        return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext);\n    }\n    else if (isArray(vnode)) {\n        var vnodes = normalizeChildren(vnode) || [];\n        var res = new Array(vnodes.length);\n        for (var i = 0; i < vnodes.length; i++) {\n            res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);\n        }\n        return res;\n    }\n}\nfunction cloneAndMarkFunctionalResult(vnode, data, contextVm, options, renderContext) {\n    // #7817 clone node before setting fnContext, otherwise if the node is reused\n    // (e.g. it was from a cached normal slot) the fnContext causes named slots\n    // that should not be matched to match.\n    var clone = cloneVNode(vnode);\n    clone.fnContext = contextVm;\n    clone.fnOptions = options;\n    if (process.env.NODE_ENV !== 'production') {\n        (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext =\n            renderContext;\n    }\n    if (data.slot) {\n        (clone.data || (clone.data = {})).slot = data.slot;\n    }\n    return clone;\n}\nfunction mergeProps(to, from) {\n    for (var key in from) {\n        to[camelize(key)] = from[key];\n    }\n}\n\nfunction getComponentName(options) {\n    return options.name || options.__name || options._componentTag;\n}\n// inline hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n    init: function (vnode, hydrating) {\n        if (vnode.componentInstance &&\n            !vnode.componentInstance._isDestroyed &&\n            vnode.data.keepAlive) {\n            // kept-alive components, treat as a patch\n            var mountedNode = vnode; // work around flow\n            componentVNodeHooks.prepatch(mountedNode, mountedNode);\n        }\n        else {\n            var child = (vnode.componentInstance = createComponentInstanceForVnode(vnode, activeInstance));\n            child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n        }\n    },\n    prepatch: function (oldVnode, vnode) {\n        var options = vnode.componentOptions;\n        var child = (vnode.componentInstance = oldVnode.componentInstance);\n        updateChildComponent(child, options.propsData, // updated props\n        options.listeners, // updated listeners\n        vnode, // new parent vnode\n        options.children // new children\n        );\n    },\n    insert: function (vnode) {\n        var context = vnode.context, componentInstance = vnode.componentInstance;\n        if (!componentInstance._isMounted) {\n            componentInstance._isMounted = true;\n            callHook$1(componentInstance, 'mounted');\n        }\n        if (vnode.data.keepAlive) {\n            if (context._isMounted) {\n                // vue-router#1212\n                // During updates, a kept-alive component's child components may\n                // change, so directly walking the tree here may call activated hooks\n                // on incorrect children. Instead we push them into a queue which will\n                // be processed after the whole patch process ended.\n                queueActivatedComponent(componentInstance);\n            }\n            else {\n                activateChildComponent(componentInstance, true /* direct */);\n            }\n        }\n    },\n    destroy: function (vnode) {\n        var componentInstance = vnode.componentInstance;\n        if (!componentInstance._isDestroyed) {\n            if (!vnode.data.keepAlive) {\n                componentInstance.$destroy();\n            }\n            else {\n                deactivateChildComponent(componentInstance, true /* direct */);\n            }\n        }\n    }\n};\nvar hooksToMerge = Object.keys(componentVNodeHooks);\nfunction createComponent(Ctor, data, context, children, tag) {\n    if (isUndef(Ctor)) {\n        return;\n    }\n    var baseCtor = context.$options._base;\n    // plain options object: turn it into a constructor\n    if (isObject(Ctor)) {\n        Ctor = baseCtor.extend(Ctor);\n    }\n    // if at this stage it's not a constructor or an async component factory,\n    // reject.\n    if (typeof Ctor !== 'function') {\n        if (process.env.NODE_ENV !== 'production') {\n            warn$2(\"Invalid Component definition: \".concat(String(Ctor)), context);\n        }\n        return;\n    }\n    // async component\n    var asyncFactory;\n    // @ts-expect-error\n    if (isUndef(Ctor.cid)) {\n        asyncFactory = Ctor;\n        Ctor = resolveAsyncComponent(asyncFactory, baseCtor);\n        if (Ctor === undefined) {\n            // return a placeholder node for async component, which is rendered\n            // as a comment node but preserves all the raw information for the node.\n            // the information will be used for async server-rendering and hydration.\n            return createAsyncPlaceholder(asyncFactory, data, context, children, tag);\n        }\n    }\n    data = data || {};\n    // resolve constructor options in case global mixins are applied after\n    // component constructor creation\n    resolveConstructorOptions(Ctor);\n    // transform component v-model data into props & events\n    if (isDef(data.model)) {\n        // @ts-expect-error\n        transformModel(Ctor.options, data);\n    }\n    // extract props\n    // @ts-expect-error\n    var propsData = extractPropsFromVNodeData(data, Ctor, tag);\n    // functional component\n    // @ts-expect-error\n    if (isTrue(Ctor.options.functional)) {\n        return createFunctionalComponent(Ctor, propsData, data, context, children);\n    }\n    // extract listeners, since these needs to be treated as\n    // child component listeners instead of DOM listeners\n    var listeners = data.on;\n    // replace with listeners with .native modifier\n    // so it gets processed during parent component patch.\n    data.on = data.nativeOn;\n    // @ts-expect-error\n    if (isTrue(Ctor.options.abstract)) {\n        // abstract components do not keep anything\n        // other than props & listeners & slot\n        // work around flow\n        var slot = data.slot;\n        data = {};\n        if (slot) {\n            data.slot = slot;\n        }\n    }\n    // install component management hooks onto the placeholder node\n    installComponentHooks(data);\n    // return a placeholder vnode\n    // @ts-expect-error\n    var name = getComponentName(Ctor.options) || tag;\n    var vnode = new VNode(\n    // @ts-expect-error\n    \"vue-component-\".concat(Ctor.cid).concat(name ? \"-\".concat(name) : ''), data, undefined, undefined, undefined, context, \n    // @ts-expect-error\n    { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children }, asyncFactory);\n    return vnode;\n}\nfunction createComponentInstanceForVnode(\n// we know it's MountedComponentVNode but flow doesn't\nvnode, \n// activeInstance in lifecycle state\nparent) {\n    var options = {\n        _isComponent: true,\n        _parentVnode: vnode,\n        parent: parent\n    };\n    // check inline-template render functions\n    var inlineTemplate = vnode.data.inlineTemplate;\n    if (isDef(inlineTemplate)) {\n        options.render = inlineTemplate.render;\n        options.staticRenderFns = inlineTemplate.staticRenderFns;\n    }\n    return new vnode.componentOptions.Ctor(options);\n}\nfunction installComponentHooks(data) {\n    var hooks = data.hook || (data.hook = {});\n    for (var i = 0; i < hooksToMerge.length; i++) {\n        var key = hooksToMerge[i];\n        var existing = hooks[key];\n        var toMerge = componentVNodeHooks[key];\n        // @ts-expect-error\n        if (existing !== toMerge && !(existing && existing._merged)) {\n            hooks[key] = existing ? mergeHook(toMerge, existing) : toMerge;\n        }\n    }\n}\nfunction mergeHook(f1, f2) {\n    var merged = function (a, b) {\n        // flow complains about extra args which is why we use any\n        f1(a, b);\n        f2(a, b);\n    };\n    merged._merged = true;\n    return merged;\n}\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel(options, data) {\n    var prop = (options.model && options.model.prop) || 'value';\n    var event = (options.model && options.model.event) || 'input';\n    (data.attrs || (data.attrs = {}))[prop] = data.model.value;\n    var on = data.on || (data.on = {});\n    var existing = on[event];\n    var callback = data.model.callback;\n    if (isDef(existing)) {\n        if (isArray(existing)\n            ? existing.indexOf(callback) === -1\n            : existing !== callback) {\n            on[event] = [callback].concat(existing);\n        }\n    }\n    else {\n        on[event] = callback;\n    }\n}\n\nvar warn$2 = noop;\nvar tip = noop;\nvar generateComponentTrace; // work around flow check\nvar formatComponentName;\nif (process.env.NODE_ENV !== 'production') {\n    var hasConsole_1 = typeof console !== 'undefined';\n    var classifyRE_1 = /(?:^|[-_])(\\w)/g;\n    var classify_1 = function (str) {\n        return str.replace(classifyRE_1, function (c) { return c.toUpperCase(); }).replace(/[-_]/g, '');\n    };\n    warn$2 = function (msg, vm) {\n        if (vm === void 0) { vm = currentInstance; }\n        var trace = vm ? generateComponentTrace(vm) : '';\n        if (config.warnHandler) {\n            config.warnHandler.call(null, msg, vm, trace);\n        }\n        else if (hasConsole_1 && !config.silent) {\n            console.error(\"[Vue warn]: \".concat(msg).concat(trace));\n        }\n    };\n    tip = function (msg, vm) {\n        if (hasConsole_1 && !config.silent) {\n            console.warn(\"[Vue tip]: \".concat(msg) + (vm ? generateComponentTrace(vm) : ''));\n        }\n    };\n    formatComponentName = function (vm, includeFile) {\n        if (vm.$root === vm) {\n            return '<Root>';\n        }\n        var options = isFunction(vm) && vm.cid != null\n            ? vm.options\n            : vm._isVue\n                ? vm.$options || vm.constructor.options\n                : vm;\n        var name = getComponentName(options);\n        var file = options.__file;\n        if (!name && file) {\n            var match = file.match(/([^/\\\\]+)\\.vue$/);\n            name = match && match[1];\n        }\n        return ((name ? \"<\".concat(classify_1(name), \">\") : \"<Anonymous>\") +\n            (file && includeFile !== false ? \" at \".concat(file) : ''));\n    };\n    var repeat_1 = function (str, n) {\n        var res = '';\n        while (n) {\n            if (n % 2 === 1)\n                res += str;\n            if (n > 1)\n                str += str;\n            n >>= 1;\n        }\n        return res;\n    };\n    generateComponentTrace = function (vm) {\n        if (vm._isVue && vm.$parent) {\n            var tree = [];\n            var currentRecursiveSequence = 0;\n            while (vm) {\n                if (tree.length > 0) {\n                    var last = tree[tree.length - 1];\n                    if (last.constructor === vm.constructor) {\n                        currentRecursiveSequence++;\n                        vm = vm.$parent;\n                        continue;\n                    }\n                    else if (currentRecursiveSequence > 0) {\n                        tree[tree.length - 1] = [last, currentRecursiveSequence];\n                        currentRecursiveSequence = 0;\n                    }\n                }\n                tree.push(vm);\n                vm = vm.$parent;\n            }\n            return ('\\n\\nfound in\\n\\n' +\n                tree\n                    .map(function (vm, i) {\n                    return \"\".concat(i === 0 ? '---> ' : repeat_1(' ', 5 + i * 2)).concat(isArray(vm)\n                        ? \"\".concat(formatComponentName(vm[0]), \"... (\").concat(vm[1], \" recursive calls)\")\n                        : formatComponentName(vm));\n                })\n                    .join('\\n'));\n        }\n        else {\n            return \"\\n\\n(found in \".concat(formatComponentName(vm), \")\");\n        }\n    };\n}\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n    strats.el = strats.propsData = function (parent, child, vm, key) {\n        if (!vm) {\n            warn$2(\"option \\\"\".concat(key, \"\\\" can only be used during instance \") +\n                'creation with the `new` keyword.');\n        }\n        return defaultStrat(parent, child);\n    };\n}\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData(to, from, recursive) {\n    if (recursive === void 0) { recursive = true; }\n    if (!from)\n        return to;\n    var key, toVal, fromVal;\n    var keys = hasSymbol\n        ? Reflect.ownKeys(from)\n        : Object.keys(from);\n    for (var i = 0; i < keys.length; i++) {\n        key = keys[i];\n        // in case the object is already observed...\n        if (key === '__ob__')\n            continue;\n        toVal = to[key];\n        fromVal = from[key];\n        if (!recursive || !hasOwn(to, key)) {\n            set(to, key, fromVal);\n        }\n        else if (toVal !== fromVal &&\n            isPlainObject(toVal) &&\n            isPlainObject(fromVal)) {\n            mergeData(toVal, fromVal);\n        }\n    }\n    return to;\n}\n/**\n * Data\n */\nfunction mergeDataOrFn(parentVal, childVal, vm) {\n    if (!vm) {\n        // in a Vue.extend merge, both should be functions\n        if (!childVal) {\n            return parentVal;\n        }\n        if (!parentVal) {\n            return childVal;\n        }\n        // when parentVal & childVal are both present,\n        // we need to return a function that returns the\n        // merged result of both functions... no need to\n        // check if parentVal is a function here because\n        // it has to be a function to pass previous merges.\n        return function mergedDataFn() {\n            return mergeData(isFunction(childVal) ? childVal.call(this, this) : childVal, isFunction(parentVal) ? parentVal.call(this, this) : parentVal);\n        };\n    }\n    else {\n        return function mergedInstanceDataFn() {\n            // instance merge\n            var instanceData = isFunction(childVal)\n                ? childVal.call(vm, vm)\n                : childVal;\n            var defaultData = isFunction(parentVal)\n                ? parentVal.call(vm, vm)\n                : parentVal;\n            if (instanceData) {\n                return mergeData(instanceData, defaultData);\n            }\n            else {\n                return defaultData;\n            }\n        };\n    }\n}\nstrats.data = function (parentVal, childVal, vm) {\n    if (!vm) {\n        if (childVal && typeof childVal !== 'function') {\n            process.env.NODE_ENV !== 'production' &&\n                warn$2('The \"data\" option should be a function ' +\n                    'that returns a per-instance value in component ' +\n                    'definitions.', vm);\n            return parentVal;\n        }\n        return mergeDataOrFn(parentVal, childVal);\n    }\n    return mergeDataOrFn(parentVal, childVal, vm);\n};\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeLifecycleHook(parentVal, childVal) {\n    var res = childVal\n        ? parentVal\n            ? parentVal.concat(childVal)\n            : isArray(childVal)\n                ? childVal\n                : [childVal]\n        : parentVal;\n    return res ? dedupeHooks(res) : res;\n}\nfunction dedupeHooks(hooks) {\n    var res = [];\n    for (var i = 0; i < hooks.length; i++) {\n        if (res.indexOf(hooks[i]) === -1) {\n            res.push(hooks[i]);\n        }\n    }\n    return res;\n}\nLIFECYCLE_HOOKS.forEach(function (hook) {\n    strats[hook] = mergeLifecycleHook;\n});\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets(parentVal, childVal, vm, key) {\n    var res = Object.create(parentVal || null);\n    if (childVal) {\n        process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n        return extend(res, childVal);\n    }\n    else {\n        return res;\n    }\n}\nASSET_TYPES.forEach(function (type) {\n    strats[type + 's'] = mergeAssets;\n});\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (parentVal, childVal, vm, key) {\n    // work around Firefox's Object.prototype.watch...\n    //@ts-expect-error work around\n    if (parentVal === nativeWatch)\n        parentVal = undefined;\n    //@ts-expect-error work around\n    if (childVal === nativeWatch)\n        childVal = undefined;\n    /* istanbul ignore if */\n    if (!childVal)\n        return Object.create(parentVal || null);\n    if (process.env.NODE_ENV !== 'production') {\n        assertObjectType(key, childVal, vm);\n    }\n    if (!parentVal)\n        return childVal;\n    var ret = {};\n    extend(ret, parentVal);\n    for (var key_1 in childVal) {\n        var parent_1 = ret[key_1];\n        var child = childVal[key_1];\n        if (parent_1 && !isArray(parent_1)) {\n            parent_1 = [parent_1];\n        }\n        ret[key_1] = parent_1 ? parent_1.concat(child) : isArray(child) ? child : [child];\n    }\n    return ret;\n};\n/**\n * Other object hashes.\n */\nstrats.props =\n    strats.methods =\n        strats.inject =\n            strats.computed =\n                function (parentVal, childVal, vm, key) {\n                    if (childVal && process.env.NODE_ENV !== 'production') {\n                        assertObjectType(key, childVal, vm);\n                    }\n                    if (!parentVal)\n                        return childVal;\n                    var ret = Object.create(null);\n                    extend(ret, parentVal);\n                    if (childVal)\n                        extend(ret, childVal);\n                    return ret;\n                };\nstrats.provide = function (parentVal, childVal) {\n    if (!parentVal)\n        return childVal;\n    return function () {\n        var ret = Object.create(null);\n        mergeData(ret, isFunction(parentVal) ? parentVal.call(this) : parentVal);\n        if (childVal) {\n            mergeData(ret, isFunction(childVal) ? childVal.call(this) : childVal, false // non-recursive\n            );\n        }\n        return ret;\n    };\n};\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n    return childVal === undefined ? parentVal : childVal;\n};\n/**\n * Validate component names\n */\nfunction checkComponents(options) {\n    for (var key in options.components) {\n        validateComponentName(key);\n    }\n}\nfunction validateComponentName(name) {\n    if (!new RegExp(\"^[a-zA-Z][\\\\-\\\\.0-9_\".concat(unicodeRegExp.source, \"]*$\")).test(name)) {\n        warn$2('Invalid component name: \"' +\n            name +\n            '\". Component names ' +\n            'should conform to valid custom element name in html5 specification.');\n    }\n    if (isBuiltInTag(name) || config.isReservedTag(name)) {\n        warn$2('Do not use built-in or reserved HTML elements as component ' +\n            'id: ' +\n            name);\n    }\n}\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps(options, vm) {\n    var props = options.props;\n    if (!props)\n        return;\n    var res = {};\n    var i, val, name;\n    if (isArray(props)) {\n        i = props.length;\n        while (i--) {\n            val = props[i];\n            if (typeof val === 'string') {\n                name = camelize(val);\n                res[name] = { type: null };\n            }\n            else if (process.env.NODE_ENV !== 'production') {\n                warn$2('props must be strings when using array syntax.');\n            }\n        }\n    }\n    else if (isPlainObject(props)) {\n        for (var key in props) {\n            val = props[key];\n            name = camelize(key);\n            res[name] = isPlainObject(val) ? val : { type: val };\n        }\n    }\n    else if (process.env.NODE_ENV !== 'production') {\n        warn$2(\"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n            \"but got \".concat(toRawType(props), \".\"), vm);\n    }\n    options.props = res;\n}\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject(options, vm) {\n    var inject = options.inject;\n    if (!inject)\n        return;\n    var normalized = (options.inject = {});\n    if (isArray(inject)) {\n        for (var i = 0; i < inject.length; i++) {\n            normalized[inject[i]] = { from: inject[i] };\n        }\n    }\n    else if (isPlainObject(inject)) {\n        for (var key in inject) {\n            var val = inject[key];\n            normalized[key] = isPlainObject(val)\n                ? extend({ from: key }, val)\n                : { from: val };\n        }\n    }\n    else if (process.env.NODE_ENV !== 'production') {\n        warn$2(\"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n            \"but got \".concat(toRawType(inject), \".\"), vm);\n    }\n}\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives$1(options) {\n    var dirs = options.directives;\n    if (dirs) {\n        for (var key in dirs) {\n            var def = dirs[key];\n            if (isFunction(def)) {\n                dirs[key] = { bind: def, update: def };\n            }\n        }\n    }\n}\nfunction assertObjectType(name, value, vm) {\n    if (!isPlainObject(value)) {\n        warn$2(\"Invalid value for option \\\"\".concat(name, \"\\\": expected an Object, \") +\n            \"but got \".concat(toRawType(value), \".\"), vm);\n    }\n}\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions(parent, child, vm) {\n    if (process.env.NODE_ENV !== 'production') {\n        checkComponents(child);\n    }\n    if (isFunction(child)) {\n        // @ts-expect-error\n        child = child.options;\n    }\n    normalizeProps(child, vm);\n    normalizeInject(child, vm);\n    normalizeDirectives$1(child);\n    // Apply extends and mixins on the child options,\n    // but only if it is a raw options object that isn't\n    // the result of another mergeOptions call.\n    // Only merged options has the _base property.\n    if (!child._base) {\n        if (child.extends) {\n            parent = mergeOptions(parent, child.extends, vm);\n        }\n        if (child.mixins) {\n            for (var i = 0, l = child.mixins.length; i < l; i++) {\n                parent = mergeOptions(parent, child.mixins[i], vm);\n            }\n        }\n    }\n    var options = {};\n    var key;\n    for (key in parent) {\n        mergeField(key);\n    }\n    for (key in child) {\n        if (!hasOwn(parent, key)) {\n            mergeField(key);\n        }\n    }\n    function mergeField(key) {\n        var strat = strats[key] || defaultStrat;\n        options[key] = strat(parent[key], child[key], vm, key);\n    }\n    return options;\n}\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset(options, type, id, warnMissing) {\n    /* istanbul ignore if */\n    if (typeof id !== 'string') {\n        return;\n    }\n    var assets = options[type];\n    // check local registration variations first\n    if (hasOwn(assets, id))\n        return assets[id];\n    var camelizedId = camelize(id);\n    if (hasOwn(assets, camelizedId))\n        return assets[camelizedId];\n    var PascalCaseId = capitalize(camelizedId);\n    if (hasOwn(assets, PascalCaseId))\n        return assets[PascalCaseId];\n    // fallback to prototype chain\n    var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n    if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n        warn$2('Failed to resolve ' + type.slice(0, -1) + ': ' + id);\n    }\n    return res;\n}\n\nfunction validateProp(key, propOptions, propsData, vm) {\n    var prop = propOptions[key];\n    var absent = !hasOwn(propsData, key);\n    var value = propsData[key];\n    // boolean casting\n    var booleanIndex = getTypeIndex(Boolean, prop.type);\n    if (booleanIndex > -1) {\n        if (absent && !hasOwn(prop, 'default')) {\n            value = false;\n        }\n        else if (value === '' || value === hyphenate(key)) {\n            // only cast empty string / same name to boolean if\n            // boolean has higher priority\n            var stringIndex = getTypeIndex(String, prop.type);\n            if (stringIndex < 0 || booleanIndex < stringIndex) {\n                value = true;\n            }\n        }\n    }\n    // check default value\n    if (value === undefined) {\n        value = getPropDefaultValue(vm, prop, key);\n        // since the default value is a fresh copy,\n        // make sure to observe it.\n        var prevShouldObserve = shouldObserve;\n        toggleObserving(true);\n        observe(value);\n        toggleObserving(prevShouldObserve);\n    }\n    if (process.env.NODE_ENV !== 'production') {\n        assertProp(prop, key, value, vm, absent);\n    }\n    return value;\n}\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue(vm, prop, key) {\n    // no default, return undefined\n    if (!hasOwn(prop, 'default')) {\n        return undefined;\n    }\n    var def = prop.default;\n    // warn against non-factory defaults for Object & Array\n    if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n        warn$2('Invalid default value for prop \"' +\n            key +\n            '\": ' +\n            'Props with type Object/Array must use a factory function ' +\n            'to return the default value.', vm);\n    }\n    // the raw prop value was also undefined from previous render,\n    // return previous default value to avoid unnecessary watcher trigger\n    if (vm &&\n        vm.$options.propsData &&\n        vm.$options.propsData[key] === undefined &&\n        vm._props[key] !== undefined) {\n        return vm._props[key];\n    }\n    // call factory function for non-Function types\n    // a value is Function if its prototype is function even across different execution context\n    return isFunction(def) && getType(prop.type) !== 'Function'\n        ? def.call(vm)\n        : def;\n}\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp(prop, name, value, vm, absent) {\n    if (prop.required && absent) {\n        warn$2('Missing required prop: \"' + name + '\"', vm);\n        return;\n    }\n    if (value == null && !prop.required) {\n        return;\n    }\n    var type = prop.type;\n    var valid = !type || type === true;\n    var expectedTypes = [];\n    if (type) {\n        if (!isArray(type)) {\n            type = [type];\n        }\n        for (var i = 0; i < type.length && !valid; i++) {\n            var assertedType = assertType(value, type[i], vm);\n            expectedTypes.push(assertedType.expectedType || '');\n            valid = assertedType.valid;\n        }\n    }\n    var haveExpectedTypes = expectedTypes.some(function (t) { return t; });\n    if (!valid && haveExpectedTypes) {\n        warn$2(getInvalidTypeMessage(name, value, expectedTypes), vm);\n        return;\n    }\n    var validator = prop.validator;\n    if (validator) {\n        if (!validator(value)) {\n            warn$2('Invalid prop: custom validator check failed for prop \"' + name + '\".', vm);\n        }\n    }\n}\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol|BigInt)$/;\nfunction assertType(value, type, vm) {\n    var valid;\n    var expectedType = getType(type);\n    if (simpleCheckRE.test(expectedType)) {\n        var t = typeof value;\n        valid = t === expectedType.toLowerCase();\n        // for primitive wrapper objects\n        if (!valid && t === 'object') {\n            valid = value instanceof type;\n        }\n    }\n    else if (expectedType === 'Object') {\n        valid = isPlainObject(value);\n    }\n    else if (expectedType === 'Array') {\n        valid = isArray(value);\n    }\n    else {\n        try {\n            valid = value instanceof type;\n        }\n        catch (e) {\n            warn$2('Invalid prop type: \"' + String(type) + '\" is not a constructor', vm);\n            valid = false;\n        }\n    }\n    return {\n        valid: valid,\n        expectedType: expectedType\n    };\n}\nvar functionTypeCheckRE = /^\\s*function (\\w+)/;\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType(fn) {\n    var match = fn && fn.toString().match(functionTypeCheckRE);\n    return match ? match[1] : '';\n}\nfunction isSameType(a, b) {\n    return getType(a) === getType(b);\n}\nfunction getTypeIndex(type, expectedTypes) {\n    if (!isArray(expectedTypes)) {\n        return isSameType(expectedTypes, type) ? 0 : -1;\n    }\n    for (var i = 0, len = expectedTypes.length; i < len; i++) {\n        if (isSameType(expectedTypes[i], type)) {\n            return i;\n        }\n    }\n    return -1;\n}\nfunction getInvalidTypeMessage(name, value, expectedTypes) {\n    var message = \"Invalid prop: type check failed for prop \\\"\".concat(name, \"\\\".\") +\n        \" Expected \".concat(expectedTypes.map(capitalize).join(', '));\n    var expectedType = expectedTypes[0];\n    var receivedType = toRawType(value);\n    // check if we need to specify expected value\n    if (expectedTypes.length === 1 &&\n        isExplicable(expectedType) &&\n        isExplicable(typeof value) &&\n        !isBoolean(expectedType, receivedType)) {\n        message += \" with value \".concat(styleValue(value, expectedType));\n    }\n    message += \", got \".concat(receivedType, \" \");\n    // check if we need to specify received value\n    if (isExplicable(receivedType)) {\n        message += \"with value \".concat(styleValue(value, receivedType), \".\");\n    }\n    return message;\n}\nfunction styleValue(value, type) {\n    if (type === 'String') {\n        return \"\\\"\".concat(value, \"\\\"\");\n    }\n    else if (type === 'Number') {\n        return \"\".concat(Number(value));\n    }\n    else {\n        return \"\".concat(value);\n    }\n}\nvar EXPLICABLE_TYPES = ['string', 'number', 'boolean'];\nfunction isExplicable(value) {\n    return EXPLICABLE_TYPES.some(function (elem) { return value.toLowerCase() === elem; });\n}\nfunction isBoolean() {\n    var args = [];\n    for (var _i = 0; _i < arguments.length; _i++) {\n        args[_i] = arguments[_i];\n    }\n    return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; });\n}\n\nfunction Vue(options) {\n    if (process.env.NODE_ENV !== 'production' && !(this instanceof Vue)) {\n        warn$2('Vue is a constructor and should be called with the `new` keyword');\n    }\n    this._init(options);\n}\n//@ts-expect-error Vue has function type\ninitMixin$1(Vue);\n//@ts-expect-error Vue has function type\nstateMixin(Vue);\n//@ts-expect-error Vue has function type\neventsMixin(Vue);\n//@ts-expect-error Vue has function type\nlifecycleMixin(Vue);\n//@ts-expect-error Vue has function type\nrenderMixin(Vue);\n\nfunction initUse(Vue) {\n    Vue.use = function (plugin) {\n        var installedPlugins = this._installedPlugins || (this._installedPlugins = []);\n        if (installedPlugins.indexOf(plugin) > -1) {\n            return this;\n        }\n        // additional parameters\n        var args = toArray(arguments, 1);\n        args.unshift(this);\n        if (isFunction(plugin.install)) {\n            plugin.install.apply(plugin, args);\n        }\n        else if (isFunction(plugin)) {\n            plugin.apply(null, args);\n        }\n        installedPlugins.push(plugin);\n        return this;\n    };\n}\n\nfunction initMixin(Vue) {\n    Vue.mixin = function (mixin) {\n        this.options = mergeOptions(this.options, mixin);\n        return this;\n    };\n}\n\nfunction initExtend(Vue) {\n    /**\n     * Each instance constructor, including Vue, has a unique\n     * cid. This enables us to create wrapped \"child\n     * constructors\" for prototypal inheritance and cache them.\n     */\n    Vue.cid = 0;\n    var cid = 1;\n    /**\n     * Class inheritance\n     */\n    Vue.extend = function (extendOptions) {\n        extendOptions = extendOptions || {};\n        var Super = this;\n        var SuperId = Super.cid;\n        var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n        if (cachedCtors[SuperId]) {\n            return cachedCtors[SuperId];\n        }\n        var name = getComponentName(extendOptions) || getComponentName(Super.options);\n        if (process.env.NODE_ENV !== 'production' && name) {\n            validateComponentName(name);\n        }\n        var Sub = function VueComponent(options) {\n            this._init(options);\n        };\n        Sub.prototype = Object.create(Super.prototype);\n        Sub.prototype.constructor = Sub;\n        Sub.cid = cid++;\n        Sub.options = mergeOptions(Super.options, extendOptions);\n        Sub['super'] = Super;\n        // For props and computed properties, we define the proxy getters on\n        // the Vue instances at extension time, on the extended prototype. This\n        // avoids Object.defineProperty calls for each instance created.\n        if (Sub.options.props) {\n            initProps(Sub);\n        }\n        if (Sub.options.computed) {\n            initComputed(Sub);\n        }\n        // allow further extension/mixin/plugin usage\n        Sub.extend = Super.extend;\n        Sub.mixin = Super.mixin;\n        Sub.use = Super.use;\n        // create asset registers, so extended classes\n        // can have their private assets too.\n        ASSET_TYPES.forEach(function (type) {\n            Sub[type] = Super[type];\n        });\n        // enable recursive self-lookup\n        if (name) {\n            Sub.options.components[name] = Sub;\n        }\n        // keep a reference to the super options at extension time.\n        // later at instantiation we can check if Super's options have\n        // been updated.\n        Sub.superOptions = Super.options;\n        Sub.extendOptions = extendOptions;\n        Sub.sealedOptions = extend({}, Sub.options);\n        // cache constructor\n        cachedCtors[SuperId] = Sub;\n        return Sub;\n    };\n}\nfunction initProps(Comp) {\n    var props = Comp.options.props;\n    for (var key in props) {\n        proxy(Comp.prototype, \"_props\", key);\n    }\n}\nfunction initComputed(Comp) {\n    var computed = Comp.options.computed;\n    for (var key in computed) {\n        defineComputed(Comp.prototype, key, computed[key]);\n    }\n}\n\nfunction initAssetRegisters(Vue) {\n    /**\n     * Create asset registration methods.\n     */\n    ASSET_TYPES.forEach(function (type) {\n        // @ts-expect-error function is not exact same type\n        Vue[type] = function (id, definition) {\n            if (!definition) {\n                return this.options[type + 's'][id];\n            }\n            else {\n                /* istanbul ignore if */\n                if (process.env.NODE_ENV !== 'production' && type === 'component') {\n                    validateComponentName(id);\n                }\n                if (type === 'component' && isPlainObject(definition)) {\n                    // @ts-expect-error\n                    definition.name = definition.name || id;\n                    definition = this.options._base.extend(definition);\n                }\n                if (type === 'directive' && isFunction(definition)) {\n                    definition = { bind: definition, update: definition };\n                }\n                this.options[type + 's'][id] = definition;\n                return definition;\n            }\n        };\n    });\n}\n\nfunction _getComponentName(opts) {\n    return opts && (getComponentName(opts.Ctor.options) || opts.tag);\n}\nfunction matches(pattern, name) {\n    if (isArray(pattern)) {\n        return pattern.indexOf(name) > -1;\n    }\n    else if (typeof pattern === 'string') {\n        return pattern.split(',').indexOf(name) > -1;\n    }\n    else if (isRegExp(pattern)) {\n        return pattern.test(name);\n    }\n    /* istanbul ignore next */\n    return false;\n}\nfunction pruneCache(keepAliveInstance, filter) {\n    var cache = keepAliveInstance.cache, keys = keepAliveInstance.keys, _vnode = keepAliveInstance._vnode, $vnode = keepAliveInstance.$vnode;\n    for (var key in cache) {\n        var entry = cache[key];\n        if (entry) {\n            var name_1 = entry.name;\n            if (name_1 && !filter(name_1)) {\n                pruneCacheEntry(cache, key, keys, _vnode);\n            }\n        }\n    }\n    $vnode.componentOptions.children = undefined;\n}\nfunction pruneCacheEntry(cache, key, keys, current) {\n    var entry = cache[key];\n    if (entry && (!current || entry.tag !== current.tag)) {\n        // @ts-expect-error can be undefined\n        entry.componentInstance.$destroy();\n    }\n    cache[key] = null;\n    remove$2(keys, key);\n}\nvar patternTypes = [String, RegExp, Array];\n// TODO defineComponent\nvar KeepAlive = {\n    name: 'keep-alive',\n    abstract: true,\n    props: {\n        include: patternTypes,\n        exclude: patternTypes,\n        max: [String, Number]\n    },\n    methods: {\n        cacheVNode: function () {\n            var _a = this, cache = _a.cache, keys = _a.keys, vnodeToCache = _a.vnodeToCache, keyToCache = _a.keyToCache;\n            if (vnodeToCache) {\n                var tag = vnodeToCache.tag, componentInstance = vnodeToCache.componentInstance, componentOptions = vnodeToCache.componentOptions;\n                cache[keyToCache] = {\n                    name: _getComponentName(componentOptions),\n                    tag: tag,\n                    componentInstance: componentInstance\n                };\n                keys.push(keyToCache);\n                // prune oldest entry\n                if (this.max && keys.length > parseInt(this.max)) {\n                    pruneCacheEntry(cache, keys[0], keys, this._vnode);\n                }\n                this.vnodeToCache = null;\n            }\n        }\n    },\n    created: function () {\n        this.cache = Object.create(null);\n        this.keys = [];\n    },\n    destroyed: function () {\n        for (var key in this.cache) {\n            pruneCacheEntry(this.cache, key, this.keys);\n        }\n    },\n    mounted: function () {\n        var _this = this;\n        this.cacheVNode();\n        this.$watch('include', function (val) {\n            pruneCache(_this, function (name) { return matches(val, name); });\n        });\n        this.$watch('exclude', function (val) {\n            pruneCache(_this, function (name) { return !matches(val, name); });\n        });\n    },\n    updated: function () {\n        this.cacheVNode();\n    },\n    render: function () {\n        var slot = this.$slots.default;\n        var vnode = getFirstComponentChild(slot);\n        var componentOptions = vnode && vnode.componentOptions;\n        if (componentOptions) {\n            // check pattern\n            var name_2 = _getComponentName(componentOptions);\n            var _a = this, include = _a.include, exclude = _a.exclude;\n            if (\n            // not included\n            (include && (!name_2 || !matches(include, name_2))) ||\n                // excluded\n                (exclude && name_2 && matches(exclude, name_2))) {\n                return vnode;\n            }\n            var _b = this, cache = _b.cache, keys = _b.keys;\n            var key = vnode.key == null\n                ? // same constructor may get registered as different local components\n                    // so cid alone is not enough (#3269)\n                    componentOptions.Ctor.cid +\n                        (componentOptions.tag ? \"::\".concat(componentOptions.tag) : '')\n                : vnode.key;\n            if (cache[key]) {\n                vnode.componentInstance = cache[key].componentInstance;\n                // make current key freshest\n                remove$2(keys, key);\n                keys.push(key);\n            }\n            else {\n                // delay setting the cache until update\n                this.vnodeToCache = vnode;\n                this.keyToCache = key;\n            }\n            // @ts-expect-error can vnode.data can be undefined\n            vnode.data.keepAlive = true;\n        }\n        return vnode || (slot && slot[0]);\n    }\n};\n\nvar builtInComponents = {\n    KeepAlive: KeepAlive\n};\n\nfunction initGlobalAPI(Vue) {\n    // config\n    var configDef = {};\n    configDef.get = function () { return config; };\n    if (process.env.NODE_ENV !== 'production') {\n        configDef.set = function () {\n            warn$2('Do not replace the Vue.config object, set individual fields instead.');\n        };\n    }\n    Object.defineProperty(Vue, 'config', configDef);\n    // exposed util methods.\n    // NOTE: these are not considered part of the public API - avoid relying on\n    // them unless you are aware of the risk.\n    Vue.util = {\n        warn: warn$2,\n        extend: extend,\n        mergeOptions: mergeOptions,\n        defineReactive: defineReactive\n    };\n    Vue.set = set;\n    Vue.delete = del;\n    Vue.nextTick = nextTick;\n    // 2.6 explicit observable API\n    Vue.observable = function (obj) {\n        observe(obj);\n        return obj;\n    };\n    Vue.options = Object.create(null);\n    ASSET_TYPES.forEach(function (type) {\n        Vue.options[type + 's'] = Object.create(null);\n    });\n    // this is used to identify the \"base\" constructor to extend all plain-object\n    // components with in Weex's multi-instance scenarios.\n    Vue.options._base = Vue;\n    extend(Vue.options.components, builtInComponents);\n    initUse(Vue);\n    initMixin(Vue);\n    initExtend(Vue);\n    initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue);\nObject.defineProperty(Vue.prototype, '$isServer', {\n    get: isServerRendering\n});\nObject.defineProperty(Vue.prototype, '$ssrContext', {\n    get: function () {\n        /* istanbul ignore next */\n        return this.$vnode && this.$vnode.ssrContext;\n    }\n});\n// expose FunctionalRenderContext for ssr runtime helper installation\nObject.defineProperty(Vue, 'FunctionalRenderContext', {\n    value: FunctionalRenderContext\n});\nVue.version = version;\n\n// these are reserved for web because they are directly compiled away\n// during template compilation\nvar isReservedAttr = makeMap('style,class');\n// attributes that should be using props for binding\nvar acceptValue = makeMap('input,textarea,option,select,progress');\nvar mustUseProp = function (tag, type, attr) {\n    return ((attr === 'value' && acceptValue(tag) && type !== 'button') ||\n        (attr === 'selected' && tag === 'option') ||\n        (attr === 'checked' && tag === 'input') ||\n        (attr === 'muted' && tag === 'video'));\n};\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\nvar isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only');\nvar convertEnumeratedValue = function (key, value) {\n    return isFalsyAttrValue(value) || value === 'false'\n        ? 'false'\n        : // allow arbitrary string value for contenteditable\n            key === 'contenteditable' && isValidContentEditableValue(value)\n                ? value\n                : 'true';\n};\nvar isBooleanAttr = makeMap('allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\n    'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\n    'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\n    'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\n    'required,reversed,scoped,seamless,selected,sortable,' +\n    'truespeed,typemustmatch,visible');\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\nvar isXlink = function (name) {\n    return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink';\n};\nvar getXlinkProp = function (name) {\n    return isXlink(name) ? name.slice(6, name.length) : '';\n};\nvar isFalsyAttrValue = function (val) {\n    return val == null || val === false;\n};\n\nfunction genClassForVnode(vnode) {\n    var data = vnode.data;\n    var parentNode = vnode;\n    var childNode = vnode;\n    while (isDef(childNode.componentInstance)) {\n        childNode = childNode.componentInstance._vnode;\n        if (childNode && childNode.data) {\n            data = mergeClassData(childNode.data, data);\n        }\n    }\n    // @ts-expect-error parentNode.parent not VNodeWithData\n    while (isDef((parentNode = parentNode.parent))) {\n        if (parentNode && parentNode.data) {\n            data = mergeClassData(data, parentNode.data);\n        }\n    }\n    return renderClass(data.staticClass, data.class);\n}\nfunction mergeClassData(child, parent) {\n    return {\n        staticClass: concat(child.staticClass, parent.staticClass),\n        class: isDef(child.class) ? [child.class, parent.class] : parent.class\n    };\n}\nfunction renderClass(staticClass, dynamicClass) {\n    if (isDef(staticClass) || isDef(dynamicClass)) {\n        return concat(staticClass, stringifyClass(dynamicClass));\n    }\n    /* istanbul ignore next */\n    return '';\n}\nfunction concat(a, b) {\n    return a ? (b ? a + ' ' + b : a) : b || '';\n}\nfunction stringifyClass(value) {\n    if (Array.isArray(value)) {\n        return stringifyArray(value);\n    }\n    if (isObject(value)) {\n        return stringifyObject(value);\n    }\n    if (typeof value === 'string') {\n        return value;\n    }\n    /* istanbul ignore next */\n    return '';\n}\nfunction stringifyArray(value) {\n    var res = '';\n    var stringified;\n    for (var i = 0, l = value.length; i < l; i++) {\n        if (isDef((stringified = stringifyClass(value[i]))) && stringified !== '') {\n            if (res)\n                res += ' ';\n            res += stringified;\n        }\n    }\n    return res;\n}\nfunction stringifyObject(value) {\n    var res = '';\n    for (var key in value) {\n        if (value[key]) {\n            if (res)\n                res += ' ';\n            res += key;\n        }\n    }\n    return res;\n}\n\nvar namespaceMap = {\n    svg: 'http://www.w3.org/2000/svg',\n    math: 'http://www.w3.org/1998/Math/MathML'\n};\nvar isHTMLTag = makeMap('html,body,base,head,link,meta,style,title,' +\n    'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\n    'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +\n    'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\n    's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\n    'embed,object,param,source,canvas,script,noscript,del,ins,' +\n    'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\n    'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\n    'output,progress,select,textarea,' +\n    'details,dialog,menu,menuitem,summary,' +\n    'content,element,shadow,template,blockquote,iframe,tfoot');\n// this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\nvar isSVG = makeMap('svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\n    'foreignobject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\n    'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view', true);\nvar isPreTag = function (tag) { return tag === 'pre'; };\nvar isReservedTag = function (tag) {\n    return isHTMLTag(tag) || isSVG(tag);\n};\nfunction getTagNamespace(tag) {\n    if (isSVG(tag)) {\n        return 'svg';\n    }\n    // basic support for MathML\n    // note it doesn't support other MathML elements being component roots\n    if (tag === 'math') {\n        return 'math';\n    }\n}\nvar unknownElementCache = Object.create(null);\nfunction isUnknownElement(tag) {\n    /* istanbul ignore if */\n    if (!inBrowser) {\n        return true;\n    }\n    if (isReservedTag(tag)) {\n        return false;\n    }\n    tag = tag.toLowerCase();\n    /* istanbul ignore if */\n    if (unknownElementCache[tag] != null) {\n        return unknownElementCache[tag];\n    }\n    var el = document.createElement(tag);\n    if (tag.indexOf('-') > -1) {\n        // https://stackoverflow.com/a/28210364/1070244\n        return (unknownElementCache[tag] =\n            el.constructor === window.HTMLUnknownElement ||\n                el.constructor === window.HTMLElement);\n    }\n    else {\n        return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()));\n    }\n}\nvar isTextInputType = makeMap('text,number,password,search,email,tel,url');\n\n/**\n * Query an element selector if it's not an element already.\n */\nfunction query(el) {\n    if (typeof el === 'string') {\n        var selected = document.querySelector(el);\n        if (!selected) {\n            process.env.NODE_ENV !== 'production' && warn$2('Cannot find element: ' + el);\n            return document.createElement('div');\n        }\n        return selected;\n    }\n    else {\n        return el;\n    }\n}\n\nfunction createElement(tagName, vnode) {\n    var elm = document.createElement(tagName);\n    if (tagName !== 'select') {\n        return elm;\n    }\n    // false or null will remove the attribute but undefined will not\n    if (vnode.data &&\n        vnode.data.attrs &&\n        vnode.data.attrs.multiple !== undefined) {\n        elm.setAttribute('multiple', 'multiple');\n    }\n    return elm;\n}\nfunction createElementNS(namespace, tagName) {\n    return document.createElementNS(namespaceMap[namespace], tagName);\n}\nfunction createTextNode(text) {\n    return document.createTextNode(text);\n}\nfunction createComment(text) {\n    return document.createComment(text);\n}\nfunction insertBefore(parentNode, newNode, referenceNode) {\n    parentNode.insertBefore(newNode, referenceNode);\n}\nfunction removeChild(node, child) {\n    node.removeChild(child);\n}\nfunction appendChild(node, child) {\n    node.appendChild(child);\n}\nfunction parentNode(node) {\n    return node.parentNode;\n}\nfunction nextSibling(node) {\n    return node.nextSibling;\n}\nfunction tagName(node) {\n    return node.tagName;\n}\nfunction setTextContent(node, text) {\n    node.textContent = text;\n}\nfunction setStyleScope(node, scopeId) {\n    node.setAttribute(scopeId, '');\n}\n\nvar nodeOps = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  createElement: createElement,\n  createElementNS: createElementNS,\n  createTextNode: createTextNode,\n  createComment: createComment,\n  insertBefore: insertBefore,\n  removeChild: removeChild,\n  appendChild: appendChild,\n  parentNode: parentNode,\n  nextSibling: nextSibling,\n  tagName: tagName,\n  setTextContent: setTextContent,\n  setStyleScope: setStyleScope\n});\n\nvar ref = {\n    create: function (_, vnode) {\n        registerRef(vnode);\n    },\n    update: function (oldVnode, vnode) {\n        if (oldVnode.data.ref !== vnode.data.ref) {\n            registerRef(oldVnode, true);\n            registerRef(vnode);\n        }\n    },\n    destroy: function (vnode) {\n        registerRef(vnode, true);\n    }\n};\nfunction registerRef(vnode, isRemoval) {\n    var ref = vnode.data.ref;\n    if (!isDef(ref))\n        return;\n    var vm = vnode.context;\n    var refValue = vnode.componentInstance || vnode.elm;\n    var value = isRemoval ? null : refValue;\n    var $refsValue = isRemoval ? undefined : refValue;\n    if (isFunction(ref)) {\n        invokeWithErrorHandling(ref, vm, [value], vm, \"template ref function\");\n        return;\n    }\n    var isFor = vnode.data.refInFor;\n    var _isString = typeof ref === 'string' || typeof ref === 'number';\n    var _isRef = isRef(ref);\n    var refs = vm.$refs;\n    if (_isString || _isRef) {\n        if (isFor) {\n            var existing = _isString ? refs[ref] : ref.value;\n            if (isRemoval) {\n                isArray(existing) && remove$2(existing, refValue);\n            }\n            else {\n                if (!isArray(existing)) {\n                    if (_isString) {\n                        refs[ref] = [refValue];\n                        setSetupRef(vm, ref, refs[ref]);\n                    }\n                    else {\n                        ref.value = [refValue];\n                    }\n                }\n                else if (!existing.includes(refValue)) {\n                    existing.push(refValue);\n                }\n            }\n        }\n        else if (_isString) {\n            if (isRemoval && refs[ref] !== refValue) {\n                return;\n            }\n            refs[ref] = $refsValue;\n            setSetupRef(vm, ref, value);\n        }\n        else if (_isRef) {\n            if (isRemoval && ref.value !== refValue) {\n                return;\n            }\n            ref.value = value;\n        }\n        else if (process.env.NODE_ENV !== 'production') {\n            warn$2(\"Invalid template ref type: \".concat(typeof ref));\n        }\n    }\n}\nfunction setSetupRef(_a, key, val) {\n    var _setupState = _a._setupState;\n    if (_setupState && hasOwn(_setupState, key)) {\n        if (isRef(_setupState[key])) {\n            _setupState[key].value = val;\n        }\n        else {\n            _setupState[key] = val;\n        }\n    }\n}\n\n/**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\nvar emptyNode = new VNode('', {}, []);\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\nfunction sameVnode(a, b) {\n    return (a.key === b.key &&\n        a.asyncFactory === b.asyncFactory &&\n        ((a.tag === b.tag &&\n            a.isComment === b.isComment &&\n            isDef(a.data) === isDef(b.data) &&\n            sameInputType(a, b)) ||\n            (isTrue(a.isAsyncPlaceholder) && isUndef(b.asyncFactory.error))));\n}\nfunction sameInputType(a, b) {\n    if (a.tag !== 'input')\n        return true;\n    var i;\n    var typeA = isDef((i = a.data)) && isDef((i = i.attrs)) && i.type;\n    var typeB = isDef((i = b.data)) && isDef((i = i.attrs)) && i.type;\n    return typeA === typeB || (isTextInputType(typeA) && isTextInputType(typeB));\n}\nfunction createKeyToOldIdx(children, beginIdx, endIdx) {\n    var i, key;\n    var map = {};\n    for (i = beginIdx; i <= endIdx; ++i) {\n        key = children[i].key;\n        if (isDef(key))\n            map[key] = i;\n    }\n    return map;\n}\nfunction createPatchFunction(backend) {\n    var i, j;\n    var cbs = {};\n    var modules = backend.modules, nodeOps = backend.nodeOps;\n    for (i = 0; i < hooks.length; ++i) {\n        cbs[hooks[i]] = [];\n        for (j = 0; j < modules.length; ++j) {\n            if (isDef(modules[j][hooks[i]])) {\n                cbs[hooks[i]].push(modules[j][hooks[i]]);\n            }\n        }\n    }\n    function emptyNodeAt(elm) {\n        return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm);\n    }\n    function createRmCb(childElm, listeners) {\n        function remove() {\n            if (--remove.listeners === 0) {\n                removeNode(childElm);\n            }\n        }\n        remove.listeners = listeners;\n        return remove;\n    }\n    function removeNode(el) {\n        var parent = nodeOps.parentNode(el);\n        // element may have already been removed due to v-html / v-text\n        if (isDef(parent)) {\n            nodeOps.removeChild(parent, el);\n        }\n    }\n    function isUnknownElement(vnode, inVPre) {\n        return (!inVPre &&\n            !vnode.ns &&\n            !(config.ignoredElements.length &&\n                config.ignoredElements.some(function (ignore) {\n                    return isRegExp(ignore)\n                        ? ignore.test(vnode.tag)\n                        : ignore === vnode.tag;\n                })) &&\n            config.isUnknownElement(vnode.tag));\n    }\n    var creatingElmInVPre = 0;\n    function createElm(vnode, insertedVnodeQueue, parentElm, refElm, nested, ownerArray, index) {\n        if (isDef(vnode.elm) && isDef(ownerArray)) {\n            // This vnode was used in a previous render!\n            // now it's used as a new node, overwriting its elm would cause\n            // potential patch errors down the road when it's used as an insertion\n            // reference node. Instead, we clone the node on-demand before creating\n            // associated DOM element for it.\n            vnode = ownerArray[index] = cloneVNode(vnode);\n        }\n        vnode.isRootInsert = !nested; // for transition enter check\n        if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n            return;\n        }\n        var data = vnode.data;\n        var children = vnode.children;\n        var tag = vnode.tag;\n        if (isDef(tag)) {\n            if (process.env.NODE_ENV !== 'production') {\n                if (data && data.pre) {\n                    creatingElmInVPre++;\n                }\n                if (isUnknownElement(vnode, creatingElmInVPre)) {\n                    warn$2('Unknown custom element: <' +\n                        tag +\n                        '> - did you ' +\n                        'register the component correctly? For recursive components, ' +\n                        'make sure to provide the \"name\" option.', vnode.context);\n                }\n            }\n            vnode.elm = vnode.ns\n                ? nodeOps.createElementNS(vnode.ns, tag)\n                : nodeOps.createElement(tag, vnode);\n            setScope(vnode);\n            createChildren(vnode, children, insertedVnodeQueue);\n            if (isDef(data)) {\n                invokeCreateHooks(vnode, insertedVnodeQueue);\n            }\n            insert(parentElm, vnode.elm, refElm);\n            if (process.env.NODE_ENV !== 'production' && data && data.pre) {\n                creatingElmInVPre--;\n            }\n        }\n        else if (isTrue(vnode.isComment)) {\n            vnode.elm = nodeOps.createComment(vnode.text);\n            insert(parentElm, vnode.elm, refElm);\n        }\n        else {\n            vnode.elm = nodeOps.createTextNode(vnode.text);\n            insert(parentElm, vnode.elm, refElm);\n        }\n    }\n    function createComponent(vnode, insertedVnodeQueue, parentElm, refElm) {\n        var i = vnode.data;\n        if (isDef(i)) {\n            var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n            if (isDef((i = i.hook)) && isDef((i = i.init))) {\n                i(vnode, false /* hydrating */);\n            }\n            // after calling the init hook, if the vnode is a child component\n            // it should've created a child instance and mounted it. the child\n            // component also has set the placeholder vnode's elm.\n            // in that case we can just return the element and be done.\n            if (isDef(vnode.componentInstance)) {\n                initComponent(vnode, insertedVnodeQueue);\n                insert(parentElm, vnode.elm, refElm);\n                if (isTrue(isReactivated)) {\n                    reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n                }\n                return true;\n            }\n        }\n    }\n    function initComponent(vnode, insertedVnodeQueue) {\n        if (isDef(vnode.data.pendingInsert)) {\n            insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n            vnode.data.pendingInsert = null;\n        }\n        vnode.elm = vnode.componentInstance.$el;\n        if (isPatchable(vnode)) {\n            invokeCreateHooks(vnode, insertedVnodeQueue);\n            setScope(vnode);\n        }\n        else {\n            // empty component root.\n            // skip all element-related modules except for ref (#3455)\n            registerRef(vnode);\n            // make sure to invoke the insert hook\n            insertedVnodeQueue.push(vnode);\n        }\n    }\n    function reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm) {\n        var i;\n        // hack for #4339: a reactivated component with inner transition\n        // does not trigger because the inner node's created hooks are not called\n        // again. It's not ideal to involve module-specific logic in here but\n        // there doesn't seem to be a better way to do it.\n        var innerNode = vnode;\n        while (innerNode.componentInstance) {\n            innerNode = innerNode.componentInstance._vnode;\n            if (isDef((i = innerNode.data)) && isDef((i = i.transition))) {\n                for (i = 0; i < cbs.activate.length; ++i) {\n                    cbs.activate[i](emptyNode, innerNode);\n                }\n                insertedVnodeQueue.push(innerNode);\n                break;\n            }\n        }\n        // unlike a newly created component,\n        // a reactivated keep-alive component doesn't insert itself\n        insert(parentElm, vnode.elm, refElm);\n    }\n    function insert(parent, elm, ref) {\n        if (isDef(parent)) {\n            if (isDef(ref)) {\n                if (nodeOps.parentNode(ref) === parent) {\n                    nodeOps.insertBefore(parent, elm, ref);\n                }\n            }\n            else {\n                nodeOps.appendChild(parent, elm);\n            }\n        }\n    }\n    function createChildren(vnode, children, insertedVnodeQueue) {\n        if (isArray(children)) {\n            if (process.env.NODE_ENV !== 'production') {\n                checkDuplicateKeys(children);\n            }\n            for (var i_1 = 0; i_1 < children.length; ++i_1) {\n                createElm(children[i_1], insertedVnodeQueue, vnode.elm, null, true, children, i_1);\n            }\n        }\n        else if (isPrimitive(vnode.text)) {\n            nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));\n        }\n    }\n    function isPatchable(vnode) {\n        while (vnode.componentInstance) {\n            vnode = vnode.componentInstance._vnode;\n        }\n        return isDef(vnode.tag);\n    }\n    function invokeCreateHooks(vnode, insertedVnodeQueue) {\n        for (var i_2 = 0; i_2 < cbs.create.length; ++i_2) {\n            cbs.create[i_2](emptyNode, vnode);\n        }\n        i = vnode.data.hook; // Reuse variable\n        if (isDef(i)) {\n            if (isDef(i.create))\n                i.create(emptyNode, vnode);\n            if (isDef(i.insert))\n                insertedVnodeQueue.push(vnode);\n        }\n    }\n    // set scope id attribute for scoped CSS.\n    // this is implemented as a special case to avoid the overhead\n    // of going through the normal attribute patching process.\n    function setScope(vnode) {\n        var i;\n        if (isDef((i = vnode.fnScopeId))) {\n            nodeOps.setStyleScope(vnode.elm, i);\n        }\n        else {\n            var ancestor = vnode;\n            while (ancestor) {\n                if (isDef((i = ancestor.context)) && isDef((i = i.$options._scopeId))) {\n                    nodeOps.setStyleScope(vnode.elm, i);\n                }\n                ancestor = ancestor.parent;\n            }\n        }\n        // for slot content they should also get the scopeId from the host instance.\n        if (isDef((i = activeInstance)) &&\n            i !== vnode.context &&\n            i !== vnode.fnContext &&\n            isDef((i = i.$options._scopeId))) {\n            nodeOps.setStyleScope(vnode.elm, i);\n        }\n    }\n    function addVnodes(parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n        for (; startIdx <= endIdx; ++startIdx) {\n            createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);\n        }\n    }\n    function invokeDestroyHook(vnode) {\n        var i, j;\n        var data = vnode.data;\n        if (isDef(data)) {\n            if (isDef((i = data.hook)) && isDef((i = i.destroy)))\n                i(vnode);\n            for (i = 0; i < cbs.destroy.length; ++i)\n                cbs.destroy[i](vnode);\n        }\n        if (isDef((i = vnode.children))) {\n            for (j = 0; j < vnode.children.length; ++j) {\n                invokeDestroyHook(vnode.children[j]);\n            }\n        }\n    }\n    function removeVnodes(vnodes, startIdx, endIdx) {\n        for (; startIdx <= endIdx; ++startIdx) {\n            var ch = vnodes[startIdx];\n            if (isDef(ch)) {\n                if (isDef(ch.tag)) {\n                    removeAndInvokeRemoveHook(ch);\n                    invokeDestroyHook(ch);\n                }\n                else {\n                    // Text node\n                    removeNode(ch.elm);\n                }\n            }\n        }\n    }\n    function removeAndInvokeRemoveHook(vnode, rm) {\n        if (isDef(rm) || isDef(vnode.data)) {\n            var i_3;\n            var listeners = cbs.remove.length + 1;\n            if (isDef(rm)) {\n                // we have a recursively passed down rm callback\n                // increase the listeners count\n                rm.listeners += listeners;\n            }\n            else {\n                // directly removing\n                rm = createRmCb(vnode.elm, listeners);\n            }\n            // recursively invoke hooks on child component root node\n            if (isDef((i_3 = vnode.componentInstance)) &&\n                isDef((i_3 = i_3._vnode)) &&\n                isDef(i_3.data)) {\n                removeAndInvokeRemoveHook(i_3, rm);\n            }\n            for (i_3 = 0; i_3 < cbs.remove.length; ++i_3) {\n                cbs.remove[i_3](vnode, rm);\n            }\n            if (isDef((i_3 = vnode.data.hook)) && isDef((i_3 = i_3.remove))) {\n                i_3(vnode, rm);\n            }\n            else {\n                rm();\n            }\n        }\n        else {\n            removeNode(vnode.elm);\n        }\n    }\n    function updateChildren(parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n        var oldStartIdx = 0;\n        var newStartIdx = 0;\n        var oldEndIdx = oldCh.length - 1;\n        var oldStartVnode = oldCh[0];\n        var oldEndVnode = oldCh[oldEndIdx];\n        var newEndIdx = newCh.length - 1;\n        var newStartVnode = newCh[0];\n        var newEndVnode = newCh[newEndIdx];\n        var oldKeyToIdx, idxInOld, vnodeToMove, refElm;\n        // removeOnly is a special flag used only by <transition-group>\n        // to ensure removed elements stay in correct relative positions\n        // during leaving transitions\n        var canMove = !removeOnly;\n        if (process.env.NODE_ENV !== 'production') {\n            checkDuplicateKeys(newCh);\n        }\n        while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n            if (isUndef(oldStartVnode)) {\n                oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n            }\n            else if (isUndef(oldEndVnode)) {\n                oldEndVnode = oldCh[--oldEndIdx];\n            }\n            else if (sameVnode(oldStartVnode, newStartVnode)) {\n                patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n                oldStartVnode = oldCh[++oldStartIdx];\n                newStartVnode = newCh[++newStartIdx];\n            }\n            else if (sameVnode(oldEndVnode, newEndVnode)) {\n                patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n                oldEndVnode = oldCh[--oldEndIdx];\n                newEndVnode = newCh[--newEndIdx];\n            }\n            else if (sameVnode(oldStartVnode, newEndVnode)) {\n                // Vnode moved right\n                patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n                canMove &&\n                    nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n                oldStartVnode = oldCh[++oldStartIdx];\n                newEndVnode = newCh[--newEndIdx];\n            }\n            else if (sameVnode(oldEndVnode, newStartVnode)) {\n                // Vnode moved left\n                patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n                canMove &&\n                    nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n                oldEndVnode = oldCh[--oldEndIdx];\n                newStartVnode = newCh[++newStartIdx];\n            }\n            else {\n                if (isUndef(oldKeyToIdx))\n                    oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx);\n                idxInOld = isDef(newStartVnode.key)\n                    ? oldKeyToIdx[newStartVnode.key]\n                    : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);\n                if (isUndef(idxInOld)) {\n                    // New element\n                    createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n                }\n                else {\n                    vnodeToMove = oldCh[idxInOld];\n                    if (sameVnode(vnodeToMove, newStartVnode)) {\n                        patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n                        oldCh[idxInOld] = undefined;\n                        canMove &&\n                            nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);\n                    }\n                    else {\n                        // same key but different element. treat as new element\n                        createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n                    }\n                }\n                newStartVnode = newCh[++newStartIdx];\n            }\n        }\n        if (oldStartIdx > oldEndIdx) {\n            refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n            addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n        }\n        else if (newStartIdx > newEndIdx) {\n            removeVnodes(oldCh, oldStartIdx, oldEndIdx);\n        }\n    }\n    function checkDuplicateKeys(children) {\n        var seenKeys = {};\n        for (var i_4 = 0; i_4 < children.length; i_4++) {\n            var vnode = children[i_4];\n            var key = vnode.key;\n            if (isDef(key)) {\n                if (seenKeys[key]) {\n                    warn$2(\"Duplicate keys detected: '\".concat(key, \"'. This may cause an update error.\"), vnode.context);\n                }\n                else {\n                    seenKeys[key] = true;\n                }\n            }\n        }\n    }\n    function findIdxInOld(node, oldCh, start, end) {\n        for (var i_5 = start; i_5 < end; i_5++) {\n            var c = oldCh[i_5];\n            if (isDef(c) && sameVnode(node, c))\n                return i_5;\n        }\n    }\n    function patchVnode(oldVnode, vnode, insertedVnodeQueue, ownerArray, index, removeOnly) {\n        if (oldVnode === vnode) {\n            return;\n        }\n        if (isDef(vnode.elm) && isDef(ownerArray)) {\n            // clone reused vnode\n            vnode = ownerArray[index] = cloneVNode(vnode);\n        }\n        var elm = (vnode.elm = oldVnode.elm);\n        if (isTrue(oldVnode.isAsyncPlaceholder)) {\n            if (isDef(vnode.asyncFactory.resolved)) {\n                hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\n            }\n            else {\n                vnode.isAsyncPlaceholder = true;\n            }\n            return;\n        }\n        // reuse element for static trees.\n        // note we only do this if the vnode is cloned -\n        // if the new node is not cloned it means the render functions have been\n        // reset by the hot-reload-api and we need to do a proper re-render.\n        if (isTrue(vnode.isStatic) &&\n            isTrue(oldVnode.isStatic) &&\n            vnode.key === oldVnode.key &&\n            (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))) {\n            vnode.componentInstance = oldVnode.componentInstance;\n            return;\n        }\n        var i;\n        var data = vnode.data;\n        if (isDef(data) && isDef((i = data.hook)) && isDef((i = i.prepatch))) {\n            i(oldVnode, vnode);\n        }\n        var oldCh = oldVnode.children;\n        var ch = vnode.children;\n        if (isDef(data) && isPatchable(vnode)) {\n            for (i = 0; i < cbs.update.length; ++i)\n                cbs.update[i](oldVnode, vnode);\n            if (isDef((i = data.hook)) && isDef((i = i.update)))\n                i(oldVnode, vnode);\n        }\n        if (isUndef(vnode.text)) {\n            if (isDef(oldCh) && isDef(ch)) {\n                if (oldCh !== ch)\n                    updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly);\n            }\n            else if (isDef(ch)) {\n                if (process.env.NODE_ENV !== 'production') {\n                    checkDuplicateKeys(ch);\n                }\n                if (isDef(oldVnode.text))\n                    nodeOps.setTextContent(elm, '');\n                addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n            }\n            else if (isDef(oldCh)) {\n                removeVnodes(oldCh, 0, oldCh.length - 1);\n            }\n            else if (isDef(oldVnode.text)) {\n                nodeOps.setTextContent(elm, '');\n            }\n        }\n        else if (oldVnode.text !== vnode.text) {\n            nodeOps.setTextContent(elm, vnode.text);\n        }\n        if (isDef(data)) {\n            if (isDef((i = data.hook)) && isDef((i = i.postpatch)))\n                i(oldVnode, vnode);\n        }\n    }\n    function invokeInsertHook(vnode, queue, initial) {\n        // delay insert hooks for component root nodes, invoke them after the\n        // element is really inserted\n        if (isTrue(initial) && isDef(vnode.parent)) {\n            vnode.parent.data.pendingInsert = queue;\n        }\n        else {\n            for (var i_6 = 0; i_6 < queue.length; ++i_6) {\n                queue[i_6].data.hook.insert(queue[i_6]);\n            }\n        }\n    }\n    var hydrationBailed = false;\n    // list of modules that can skip create hook during hydration because they\n    // are already rendered on the client or has no need for initialization\n    // Note: style is excluded because it relies on initial clone for future\n    // deep updates (#7063).\n    var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');\n    // Note: this is a browser-only function so we can assume elms are DOM nodes.\n    function hydrate(elm, vnode, insertedVnodeQueue, inVPre) {\n        var i;\n        var tag = vnode.tag, data = vnode.data, children = vnode.children;\n        inVPre = inVPre || (data && data.pre);\n        vnode.elm = elm;\n        if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\n            vnode.isAsyncPlaceholder = true;\n            return true;\n        }\n        // assert node match\n        if (process.env.NODE_ENV !== 'production') {\n            if (!assertNodeMatch(elm, vnode, inVPre)) {\n                return false;\n            }\n        }\n        if (isDef(data)) {\n            if (isDef((i = data.hook)) && isDef((i = i.init)))\n                i(vnode, true /* hydrating */);\n            if (isDef((i = vnode.componentInstance))) {\n                // child component. it should have hydrated its own tree.\n                initComponent(vnode, insertedVnodeQueue);\n                return true;\n            }\n        }\n        if (isDef(tag)) {\n            if (isDef(children)) {\n                // empty element, allow client to pick up and populate children\n                if (!elm.hasChildNodes()) {\n                    createChildren(vnode, children, insertedVnodeQueue);\n                }\n                else {\n                    // v-html and domProps: innerHTML\n                    if (isDef((i = data)) &&\n                        isDef((i = i.domProps)) &&\n                        isDef((i = i.innerHTML))) {\n                        if (i !== elm.innerHTML) {\n                            /* istanbul ignore if */\n                            if (process.env.NODE_ENV !== 'production' &&\n                                typeof console !== 'undefined' &&\n                                !hydrationBailed) {\n                                hydrationBailed = true;\n                                console.warn('Parent: ', elm);\n                                console.warn('server innerHTML: ', i);\n                                console.warn('client innerHTML: ', elm.innerHTML);\n                            }\n                            return false;\n                        }\n                    }\n                    else {\n                        // iterate and compare children lists\n                        var childrenMatch = true;\n                        var childNode = elm.firstChild;\n                        for (var i_7 = 0; i_7 < children.length; i_7++) {\n                            if (!childNode ||\n                                !hydrate(childNode, children[i_7], insertedVnodeQueue, inVPre)) {\n                                childrenMatch = false;\n                                break;\n                            }\n                            childNode = childNode.nextSibling;\n                        }\n                        // if childNode is not null, it means the actual childNodes list is\n                        // longer than the virtual children list.\n                        if (!childrenMatch || childNode) {\n                            /* istanbul ignore if */\n                            if (process.env.NODE_ENV !== 'production' &&\n                                typeof console !== 'undefined' &&\n                                !hydrationBailed) {\n                                hydrationBailed = true;\n                                console.warn('Parent: ', elm);\n                                console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n                            }\n                            return false;\n                        }\n                    }\n                }\n            }\n            if (isDef(data)) {\n                var fullInvoke = false;\n                for (var key in data) {\n                    if (!isRenderedModule(key)) {\n                        fullInvoke = true;\n                        invokeCreateHooks(vnode, insertedVnodeQueue);\n                        break;\n                    }\n                }\n                if (!fullInvoke && data['class']) {\n                    // ensure collecting deps for deep class bindings for future updates\n                    traverse(data['class']);\n                }\n            }\n        }\n        else if (elm.data !== vnode.text) {\n            elm.data = vnode.text;\n        }\n        return true;\n    }\n    function assertNodeMatch(node, vnode, inVPre) {\n        if (isDef(vnode.tag)) {\n            return (vnode.tag.indexOf('vue-component') === 0 ||\n                (!isUnknownElement(vnode, inVPre) &&\n                    vnode.tag.toLowerCase() ===\n                        (node.tagName && node.tagName.toLowerCase())));\n        }\n        else {\n            return node.nodeType === (vnode.isComment ? 8 : 3);\n        }\n    }\n    return function patch(oldVnode, vnode, hydrating, removeOnly) {\n        if (isUndef(vnode)) {\n            if (isDef(oldVnode))\n                invokeDestroyHook(oldVnode);\n            return;\n        }\n        var isInitialPatch = false;\n        var insertedVnodeQueue = [];\n        if (isUndef(oldVnode)) {\n            // empty mount (likely as component), create new root element\n            isInitialPatch = true;\n            createElm(vnode, insertedVnodeQueue);\n        }\n        else {\n            var isRealElement = isDef(oldVnode.nodeType);\n            if (!isRealElement && sameVnode(oldVnode, vnode)) {\n                // patch existing root node\n                patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly);\n            }\n            else {\n                if (isRealElement) {\n                    // mounting to a real element\n                    // check if this is server-rendered content and if we can perform\n                    // a successful hydration.\n                    if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n                        oldVnode.removeAttribute(SSR_ATTR);\n                        hydrating = true;\n                    }\n                    if (isTrue(hydrating)) {\n                        if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n                            invokeInsertHook(vnode, insertedVnodeQueue, true);\n                            return oldVnode;\n                        }\n                        else if (process.env.NODE_ENV !== 'production') {\n                            warn$2('The client-side rendered virtual DOM tree is not matching ' +\n                                'server-rendered content. This is likely caused by incorrect ' +\n                                'HTML markup, for example nesting block-level elements inside ' +\n                                '<p>, or missing <tbody>. Bailing hydration and performing ' +\n                                'full client-side render.');\n                        }\n                    }\n                    // either not server-rendered, or hydration failed.\n                    // create an empty node and replace it\n                    oldVnode = emptyNodeAt(oldVnode);\n                }\n                // replacing existing element\n                var oldElm = oldVnode.elm;\n                var parentElm = nodeOps.parentNode(oldElm);\n                // create new node\n                createElm(vnode, insertedVnodeQueue, \n                // extremely rare edge case: do not insert if old element is in a\n                // leaving transition. Only happens when combining transition +\n                // keep-alive + HOCs. (#4590)\n                oldElm._leaveCb ? null : parentElm, nodeOps.nextSibling(oldElm));\n                // update parent placeholder node element, recursively\n                if (isDef(vnode.parent)) {\n                    var ancestor = vnode.parent;\n                    var patchable = isPatchable(vnode);\n                    while (ancestor) {\n                        for (var i_8 = 0; i_8 < cbs.destroy.length; ++i_8) {\n                            cbs.destroy[i_8](ancestor);\n                        }\n                        ancestor.elm = vnode.elm;\n                        if (patchable) {\n                            for (var i_9 = 0; i_9 < cbs.create.length; ++i_9) {\n                                cbs.create[i_9](emptyNode, ancestor);\n                            }\n                            // #6513\n                            // invoke insert hooks that may have been merged by create hooks.\n                            // e.g. for directives that uses the \"inserted\" hook.\n                            var insert_1 = ancestor.data.hook.insert;\n                            if (insert_1.merged) {\n                                // start at index 1 to avoid re-invoking component mounted hook\n                                // clone insert hooks to avoid being mutated during iteration.\n                                // e.g. for customed directives under transition group.\n                                var cloned = insert_1.fns.slice(1);\n                                for (var i_10 = 0; i_10 < cloned.length; i_10++) {\n                                    cloned[i_10]();\n                                }\n                            }\n                        }\n                        else {\n                            registerRef(ancestor);\n                        }\n                        ancestor = ancestor.parent;\n                    }\n                }\n                // destroy old node\n                if (isDef(parentElm)) {\n                    removeVnodes([oldVnode], 0, 0);\n                }\n                else if (isDef(oldVnode.tag)) {\n                    invokeDestroyHook(oldVnode);\n                }\n            }\n        }\n        invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n        return vnode.elm;\n    };\n}\n\nvar directives$1 = {\n    create: updateDirectives,\n    update: updateDirectives,\n    destroy: function unbindDirectives(vnode) {\n        // @ts-expect-error emptyNode is not VNodeWithData\n        updateDirectives(vnode, emptyNode);\n    }\n};\nfunction updateDirectives(oldVnode, vnode) {\n    if (oldVnode.data.directives || vnode.data.directives) {\n        _update(oldVnode, vnode);\n    }\n}\nfunction _update(oldVnode, vnode) {\n    var isCreate = oldVnode === emptyNode;\n    var isDestroy = vnode === emptyNode;\n    var oldDirs = normalizeDirectives(oldVnode.data.directives, oldVnode.context);\n    var newDirs = normalizeDirectives(vnode.data.directives, vnode.context);\n    var dirsWithInsert = [];\n    var dirsWithPostpatch = [];\n    var key, oldDir, dir;\n    for (key in newDirs) {\n        oldDir = oldDirs[key];\n        dir = newDirs[key];\n        if (!oldDir) {\n            // new directive, bind\n            callHook(dir, 'bind', vnode, oldVnode);\n            if (dir.def && dir.def.inserted) {\n                dirsWithInsert.push(dir);\n            }\n        }\n        else {\n            // existing directive, update\n            dir.oldValue = oldDir.value;\n            dir.oldArg = oldDir.arg;\n            callHook(dir, 'update', vnode, oldVnode);\n            if (dir.def && dir.def.componentUpdated) {\n                dirsWithPostpatch.push(dir);\n            }\n        }\n    }\n    if (dirsWithInsert.length) {\n        var callInsert = function () {\n            for (var i = 0; i < dirsWithInsert.length; i++) {\n                callHook(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n            }\n        };\n        if (isCreate) {\n            mergeVNodeHook(vnode, 'insert', callInsert);\n        }\n        else {\n            callInsert();\n        }\n    }\n    if (dirsWithPostpatch.length) {\n        mergeVNodeHook(vnode, 'postpatch', function () {\n            for (var i = 0; i < dirsWithPostpatch.length; i++) {\n                callHook(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n            }\n        });\n    }\n    if (!isCreate) {\n        for (key in oldDirs) {\n            if (!newDirs[key]) {\n                // no longer present, unbind\n                callHook(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n            }\n        }\n    }\n}\nvar emptyModifiers = Object.create(null);\nfunction normalizeDirectives(dirs, vm) {\n    var res = Object.create(null);\n    if (!dirs) {\n        // $flow-disable-line\n        return res;\n    }\n    var i, dir;\n    for (i = 0; i < dirs.length; i++) {\n        dir = dirs[i];\n        if (!dir.modifiers) {\n            // $flow-disable-line\n            dir.modifiers = emptyModifiers;\n        }\n        res[getRawDirName(dir)] = dir;\n        if (vm._setupState && vm._setupState.__sfc) {\n            var setupDef = dir.def || resolveAsset(vm, '_setupState', 'v-' + dir.name);\n            if (typeof setupDef === 'function') {\n                dir.def = {\n                    bind: setupDef,\n                    update: setupDef,\n                };\n            }\n            else {\n                dir.def = setupDef;\n            }\n        }\n        dir.def = dir.def || resolveAsset(vm.$options, 'directives', dir.name, true);\n    }\n    // $flow-disable-line\n    return res;\n}\nfunction getRawDirName(dir) {\n    return (dir.rawName || \"\".concat(dir.name, \".\").concat(Object.keys(dir.modifiers || {}).join('.')));\n}\nfunction callHook(dir, hook, vnode, oldVnode, isDestroy) {\n    var fn = dir.def && dir.def[hook];\n    if (fn) {\n        try {\n            fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n        }\n        catch (e) {\n            handleError(e, vnode.context, \"directive \".concat(dir.name, \" \").concat(hook, \" hook\"));\n        }\n    }\n}\n\nvar baseModules = [ref, directives$1];\n\nfunction updateAttrs(oldVnode, vnode) {\n    var opts = vnode.componentOptions;\n    if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n        return;\n    }\n    if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n        return;\n    }\n    var key, cur, old;\n    var elm = vnode.elm;\n    var oldAttrs = oldVnode.data.attrs || {};\n    var attrs = vnode.data.attrs || {};\n    // clone observed objects, as the user probably wants to mutate it\n    if (isDef(attrs.__ob__) || isTrue(attrs._v_attr_proxy)) {\n        attrs = vnode.data.attrs = extend({}, attrs);\n    }\n    for (key in attrs) {\n        cur = attrs[key];\n        old = oldAttrs[key];\n        if (old !== cur) {\n            setAttr(elm, key, cur, vnode.data.pre);\n        }\n    }\n    // #4391: in IE9, setting type can reset value for input[type=radio]\n    // #6666: IE/Edge forces progress value down to 1 before setting a max\n    /* istanbul ignore if */\n    if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {\n        setAttr(elm, 'value', attrs.value);\n    }\n    for (key in oldAttrs) {\n        if (isUndef(attrs[key])) {\n            if (isXlink(key)) {\n                elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n            }\n            else if (!isEnumeratedAttr(key)) {\n                elm.removeAttribute(key);\n            }\n        }\n    }\n}\nfunction setAttr(el, key, value, isInPre) {\n    if (isInPre || el.tagName.indexOf('-') > -1) {\n        baseSetAttr(el, key, value);\n    }\n    else if (isBooleanAttr(key)) {\n        // set attribute for blank value\n        // e.g. <option disabled>Select one</option>\n        if (isFalsyAttrValue(value)) {\n            el.removeAttribute(key);\n        }\n        else {\n            // technically allowfullscreen is a boolean attribute for <iframe>,\n            // but Flash expects a value of \"true\" when used on <embed> tag\n            value = key === 'allowfullscreen' && el.tagName === 'EMBED' ? 'true' : key;\n            el.setAttribute(key, value);\n        }\n    }\n    else if (isEnumeratedAttr(key)) {\n        el.setAttribute(key, convertEnumeratedValue(key, value));\n    }\n    else if (isXlink(key)) {\n        if (isFalsyAttrValue(value)) {\n            el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n        }\n        else {\n            el.setAttributeNS(xlinkNS, key, value);\n        }\n    }\n    else {\n        baseSetAttr(el, key, value);\n    }\n}\nfunction baseSetAttr(el, key, value) {\n    if (isFalsyAttrValue(value)) {\n        el.removeAttribute(key);\n    }\n    else {\n        // #7138: IE10 & 11 fires input event when setting placeholder on\n        // <textarea>... block the first input event and remove the blocker\n        // immediately.\n        /* istanbul ignore if */\n        if (isIE &&\n            !isIE9 &&\n            el.tagName === 'TEXTAREA' &&\n            key === 'placeholder' &&\n            value !== '' &&\n            !el.__ieph) {\n            var blocker_1 = function (e) {\n                e.stopImmediatePropagation();\n                el.removeEventListener('input', blocker_1);\n            };\n            el.addEventListener('input', blocker_1);\n            // $flow-disable-line\n            el.__ieph = true; /* IE placeholder patched */\n        }\n        el.setAttribute(key, value);\n    }\n}\nvar attrs = {\n    create: updateAttrs,\n    update: updateAttrs\n};\n\nfunction updateClass(oldVnode, vnode) {\n    var el = vnode.elm;\n    var data = vnode.data;\n    var oldData = oldVnode.data;\n    if (isUndef(data.staticClass) &&\n        isUndef(data.class) &&\n        (isUndef(oldData) ||\n            (isUndef(oldData.staticClass) && isUndef(oldData.class)))) {\n        return;\n    }\n    var cls = genClassForVnode(vnode);\n    // handle transition classes\n    var transitionClass = el._transitionClasses;\n    if (isDef(transitionClass)) {\n        cls = concat(cls, stringifyClass(transitionClass));\n    }\n    // set the class\n    if (cls !== el._prevClass) {\n        el.setAttribute('class', cls);\n        el._prevClass = cls;\n    }\n}\nvar klass$1 = {\n    create: updateClass,\n    update: updateClass\n};\n\nvar validDivisionCharRE = /[\\w).+\\-_$\\]]/;\nfunction parseFilters(exp) {\n    var inSingle = false;\n    var inDouble = false;\n    var inTemplateString = false;\n    var inRegex = false;\n    var curly = 0;\n    var square = 0;\n    var paren = 0;\n    var lastFilterIndex = 0;\n    var c, prev, i, expression, filters;\n    for (i = 0; i < exp.length; i++) {\n        prev = c;\n        c = exp.charCodeAt(i);\n        if (inSingle) {\n            if (c === 0x27 && prev !== 0x5c)\n                inSingle = false;\n        }\n        else if (inDouble) {\n            if (c === 0x22 && prev !== 0x5c)\n                inDouble = false;\n        }\n        else if (inTemplateString) {\n            if (c === 0x60 && prev !== 0x5c)\n                inTemplateString = false;\n        }\n        else if (inRegex) {\n            if (c === 0x2f && prev !== 0x5c)\n                inRegex = false;\n        }\n        else if (c === 0x7c && // pipe\n            exp.charCodeAt(i + 1) !== 0x7c &&\n            exp.charCodeAt(i - 1) !== 0x7c &&\n            !curly &&\n            !square &&\n            !paren) {\n            if (expression === undefined) {\n                // first filter, end of expression\n                lastFilterIndex = i + 1;\n                expression = exp.slice(0, i).trim();\n            }\n            else {\n                pushFilter();\n            }\n        }\n        else {\n            switch (c) {\n                case 0x22:\n                    inDouble = true;\n                    break; // \"\n                case 0x27:\n                    inSingle = true;\n                    break; // '\n                case 0x60:\n                    inTemplateString = true;\n                    break; // `\n                case 0x28:\n                    paren++;\n                    break; // (\n                case 0x29:\n                    paren--;\n                    break; // )\n                case 0x5b:\n                    square++;\n                    break; // [\n                case 0x5d:\n                    square--;\n                    break; // ]\n                case 0x7b:\n                    curly++;\n                    break; // {\n                case 0x7d:\n                    curly--;\n                    break; // }\n            }\n            if (c === 0x2f) {\n                // /\n                var j = i - 1;\n                var p \n                // find first non-whitespace prev char\n                = void 0;\n                // find first non-whitespace prev char\n                for (; j >= 0; j--) {\n                    p = exp.charAt(j);\n                    if (p !== ' ')\n                        break;\n                }\n                if (!p || !validDivisionCharRE.test(p)) {\n                    inRegex = true;\n                }\n            }\n        }\n    }\n    if (expression === undefined) {\n        expression = exp.slice(0, i).trim();\n    }\n    else if (lastFilterIndex !== 0) {\n        pushFilter();\n    }\n    function pushFilter() {\n        (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim());\n        lastFilterIndex = i + 1;\n    }\n    if (filters) {\n        for (i = 0; i < filters.length; i++) {\n            expression = wrapFilter(expression, filters[i]);\n        }\n    }\n    return expression;\n}\nfunction wrapFilter(exp, filter) {\n    var i = filter.indexOf('(');\n    if (i < 0) {\n        // _f: resolveFilter\n        return \"_f(\\\"\".concat(filter, \"\\\")(\").concat(exp, \")\");\n    }\n    else {\n        var name_1 = filter.slice(0, i);\n        var args = filter.slice(i + 1);\n        return \"_f(\\\"\".concat(name_1, \"\\\")(\").concat(exp).concat(args !== ')' ? ',' + args : args);\n    }\n}\n\n/* eslint-disable no-unused-vars */\nfunction baseWarn(msg, range) {\n    console.error(\"[Vue compiler]: \".concat(msg));\n}\n/* eslint-enable no-unused-vars */\nfunction pluckModuleFunction(modules, key) {\n    return modules ? modules.map(function (m) { return m[key]; }).filter(function (_) { return _; }) : [];\n}\nfunction addProp(el, name, value, range, dynamic) {\n    (el.props || (el.props = [])).push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range));\n    el.plain = false;\n}\nfunction addAttr(el, name, value, range, dynamic) {\n    var attrs = dynamic\n        ? el.dynamicAttrs || (el.dynamicAttrs = [])\n        : el.attrs || (el.attrs = []);\n    attrs.push(rangeSetItem({ name: name, value: value, dynamic: dynamic }, range));\n    el.plain = false;\n}\n// add a raw attr (use this in preTransforms)\nfunction addRawAttr(el, name, value, range) {\n    el.attrsMap[name] = value;\n    el.attrsList.push(rangeSetItem({ name: name, value: value }, range));\n}\nfunction addDirective(el, name, rawName, value, arg, isDynamicArg, modifiers, range) {\n    (el.directives || (el.directives = [])).push(rangeSetItem({\n        name: name,\n        rawName: rawName,\n        value: value,\n        arg: arg,\n        isDynamicArg: isDynamicArg,\n        modifiers: modifiers\n    }, range));\n    el.plain = false;\n}\nfunction prependModifierMarker(symbol, name, dynamic) {\n    return dynamic ? \"_p(\".concat(name, \",\\\"\").concat(symbol, \"\\\")\") : symbol + name; // mark the event as captured\n}\nfunction addHandler(el, name, value, modifiers, important, warn, range, dynamic) {\n    modifiers = modifiers || emptyObject;\n    // warn prevent and passive modifier\n    /* istanbul ignore if */\n    if (process.env.NODE_ENV !== 'production' && warn && modifiers.prevent && modifiers.passive) {\n        warn(\"passive and prevent can't be used together. \" +\n            \"Passive handler can't prevent default event.\", range);\n    }\n    // normalize click.right and click.middle since they don't actually fire\n    // this is technically browser-specific, but at least for now browsers are\n    // the only target envs that have right/middle clicks.\n    if (modifiers.right) {\n        if (dynamic) {\n            name = \"(\".concat(name, \")==='click'?'contextmenu':(\").concat(name, \")\");\n        }\n        else if (name === 'click') {\n            name = 'contextmenu';\n            delete modifiers.right;\n        }\n    }\n    else if (modifiers.middle) {\n        if (dynamic) {\n            name = \"(\".concat(name, \")==='click'?'mouseup':(\").concat(name, \")\");\n        }\n        else if (name === 'click') {\n            name = 'mouseup';\n        }\n    }\n    // check capture modifier\n    if (modifiers.capture) {\n        delete modifiers.capture;\n        name = prependModifierMarker('!', name, dynamic);\n    }\n    if (modifiers.once) {\n        delete modifiers.once;\n        name = prependModifierMarker('~', name, dynamic);\n    }\n    /* istanbul ignore if */\n    if (modifiers.passive) {\n        delete modifiers.passive;\n        name = prependModifierMarker('&', name, dynamic);\n    }\n    var events;\n    if (modifiers.native) {\n        delete modifiers.native;\n        events = el.nativeEvents || (el.nativeEvents = {});\n    }\n    else {\n        events = el.events || (el.events = {});\n    }\n    var newHandler = rangeSetItem({ value: value.trim(), dynamic: dynamic }, range);\n    if (modifiers !== emptyObject) {\n        newHandler.modifiers = modifiers;\n    }\n    var handlers = events[name];\n    /* istanbul ignore if */\n    if (Array.isArray(handlers)) {\n        important ? handlers.unshift(newHandler) : handlers.push(newHandler);\n    }\n    else if (handlers) {\n        events[name] = important ? [newHandler, handlers] : [handlers, newHandler];\n    }\n    else {\n        events[name] = newHandler;\n    }\n    el.plain = false;\n}\nfunction getRawBindingAttr(el, name) {\n    return (el.rawAttrsMap[':' + name] ||\n        el.rawAttrsMap['v-bind:' + name] ||\n        el.rawAttrsMap[name]);\n}\nfunction getBindingAttr(el, name, getStatic) {\n    var dynamicValue = getAndRemoveAttr(el, ':' + name) || getAndRemoveAttr(el, 'v-bind:' + name);\n    if (dynamicValue != null) {\n        return parseFilters(dynamicValue);\n    }\n    else if (getStatic !== false) {\n        var staticValue = getAndRemoveAttr(el, name);\n        if (staticValue != null) {\n            return JSON.stringify(staticValue);\n        }\n    }\n}\n// note: this only removes the attr from the Array (attrsList) so that it\n// doesn't get processed by processAttrs.\n// By default it does NOT remove it from the map (attrsMap) because the map is\n// needed during codegen.\nfunction getAndRemoveAttr(el, name, removeFromMap) {\n    var val;\n    if ((val = el.attrsMap[name]) != null) {\n        var list = el.attrsList;\n        for (var i = 0, l = list.length; i < l; i++) {\n            if (list[i].name === name) {\n                list.splice(i, 1);\n                break;\n            }\n        }\n    }\n    if (removeFromMap) {\n        delete el.attrsMap[name];\n    }\n    return val;\n}\nfunction getAndRemoveAttrByRegex(el, name) {\n    var list = el.attrsList;\n    for (var i = 0, l = list.length; i < l; i++) {\n        var attr = list[i];\n        if (name.test(attr.name)) {\n            list.splice(i, 1);\n            return attr;\n        }\n    }\n}\nfunction rangeSetItem(item, range) {\n    if (range) {\n        if (range.start != null) {\n            item.start = range.start;\n        }\n        if (range.end != null) {\n            item.end = range.end;\n        }\n    }\n    return item;\n}\n\n/**\n * Cross-platform code generation for component v-model\n */\nfunction genComponentModel(el, value, modifiers) {\n    var _a = modifiers || {}, number = _a.number, trim = _a.trim;\n    var baseValueExpression = '$$v';\n    var valueExpression = baseValueExpression;\n    if (trim) {\n        valueExpression =\n            \"(typeof \".concat(baseValueExpression, \" === 'string'\") +\n                \"? \".concat(baseValueExpression, \".trim()\") +\n                \": \".concat(baseValueExpression, \")\");\n    }\n    if (number) {\n        valueExpression = \"_n(\".concat(valueExpression, \")\");\n    }\n    var assignment = genAssignmentCode(value, valueExpression);\n    el.model = {\n        value: \"(\".concat(value, \")\"),\n        expression: JSON.stringify(value),\n        callback: \"function (\".concat(baseValueExpression, \") {\").concat(assignment, \"}\")\n    };\n}\n/**\n * Cross-platform codegen helper for generating v-model value assignment code.\n */\nfunction genAssignmentCode(value, assignment) {\n    var res = parseModel(value);\n    if (res.key === null) {\n        return \"\".concat(value, \"=\").concat(assignment);\n    }\n    else {\n        return \"$set(\".concat(res.exp, \", \").concat(res.key, \", \").concat(assignment, \")\");\n    }\n}\n/**\n * Parse a v-model expression into a base path and a final key segment.\n * Handles both dot-path and possible square brackets.\n *\n * Possible cases:\n *\n * - test\n * - test[key]\n * - test[test1[key]]\n * - test[\"a\"][key]\n * - xxx.test[a[a].test1[key]]\n * - test.xxx.a[\"asa\"][test1[key]]\n *\n */\nvar len, str, chr, index, expressionPos, expressionEndPos;\nfunction parseModel(val) {\n    // Fix https://github.com/vuejs/vue/pull/7730\n    // allow v-model=\"obj.val \" (trailing whitespace)\n    val = val.trim();\n    len = val.length;\n    if (val.indexOf('[') < 0 || val.lastIndexOf(']') < len - 1) {\n        index = val.lastIndexOf('.');\n        if (index > -1) {\n            return {\n                exp: val.slice(0, index),\n                key: '\"' + val.slice(index + 1) + '\"'\n            };\n        }\n        else {\n            return {\n                exp: val,\n                key: null\n            };\n        }\n    }\n    str = val;\n    index = expressionPos = expressionEndPos = 0;\n    while (!eof()) {\n        chr = next();\n        /* istanbul ignore if */\n        if (isStringStart(chr)) {\n            parseString(chr);\n        }\n        else if (chr === 0x5b) {\n            parseBracket(chr);\n        }\n    }\n    return {\n        exp: val.slice(0, expressionPos),\n        key: val.slice(expressionPos + 1, expressionEndPos)\n    };\n}\nfunction next() {\n    return str.charCodeAt(++index);\n}\nfunction eof() {\n    return index >= len;\n}\nfunction isStringStart(chr) {\n    return chr === 0x22 || chr === 0x27;\n}\nfunction parseBracket(chr) {\n    var inBracket = 1;\n    expressionPos = index;\n    while (!eof()) {\n        chr = next();\n        if (isStringStart(chr)) {\n            parseString(chr);\n            continue;\n        }\n        if (chr === 0x5b)\n            inBracket++;\n        if (chr === 0x5d)\n            inBracket--;\n        if (inBracket === 0) {\n            expressionEndPos = index;\n            break;\n        }\n    }\n}\nfunction parseString(chr) {\n    var stringQuote = chr;\n    while (!eof()) {\n        chr = next();\n        if (chr === stringQuote) {\n            break;\n        }\n    }\n}\n\nvar warn$1;\n// in some cases, the event used has to be determined at runtime\n// so we used some reserved tokens during compile.\nvar RANGE_TOKEN = '__r';\nvar CHECKBOX_RADIO_TOKEN = '__c';\nfunction model$1(el, dir, _warn) {\n    warn$1 = _warn;\n    var value = dir.value;\n    var modifiers = dir.modifiers;\n    var tag = el.tag;\n    var type = el.attrsMap.type;\n    if (process.env.NODE_ENV !== 'production') {\n        // inputs with type=\"file\" are read only and setting the input's\n        // value will throw an error.\n        if (tag === 'input' && type === 'file') {\n            warn$1(\"<\".concat(el.tag, \" v-model=\\\"\").concat(value, \"\\\" type=\\\"file\\\">:\\n\") +\n                \"File inputs are read only. Use a v-on:change listener instead.\", el.rawAttrsMap['v-model']);\n        }\n    }\n    if (el.component) {\n        genComponentModel(el, value, modifiers);\n        // component v-model doesn't need extra runtime\n        return false;\n    }\n    else if (tag === 'select') {\n        genSelect(el, value, modifiers);\n    }\n    else if (tag === 'input' && type === 'checkbox') {\n        genCheckboxModel(el, value, modifiers);\n    }\n    else if (tag === 'input' && type === 'radio') {\n        genRadioModel(el, value, modifiers);\n    }\n    else if (tag === 'input' || tag === 'textarea') {\n        genDefaultModel(el, value, modifiers);\n    }\n    else if (!config.isReservedTag(tag)) {\n        genComponentModel(el, value, modifiers);\n        // component v-model doesn't need extra runtime\n        return false;\n    }\n    else if (process.env.NODE_ENV !== 'production') {\n        warn$1(\"<\".concat(el.tag, \" v-model=\\\"\").concat(value, \"\\\">: \") +\n            \"v-model is not supported on this element type. \" +\n            \"If you are working with contenteditable, it's recommended to \" +\n            'wrap a library dedicated for that purpose inside a custom component.', el.rawAttrsMap['v-model']);\n    }\n    // ensure runtime directive metadata\n    return true;\n}\nfunction genCheckboxModel(el, value, modifiers) {\n    var number = modifiers && modifiers.number;\n    var valueBinding = getBindingAttr(el, 'value') || 'null';\n    var trueValueBinding = getBindingAttr(el, 'true-value') || 'true';\n    var falseValueBinding = getBindingAttr(el, 'false-value') || 'false';\n    addProp(el, 'checked', \"Array.isArray(\".concat(value, \")\") +\n        \"?_i(\".concat(value, \",\").concat(valueBinding, \")>-1\") +\n        (trueValueBinding === 'true'\n            ? \":(\".concat(value, \")\")\n            : \":_q(\".concat(value, \",\").concat(trueValueBinding, \")\")));\n    addHandler(el, 'change', \"var $$a=\".concat(value, \",\") +\n        '$$el=$event.target,' +\n        \"$$c=$$el.checked?(\".concat(trueValueBinding, \"):(\").concat(falseValueBinding, \");\") +\n        'if(Array.isArray($$a)){' +\n        \"var $$v=\".concat(number ? '_n(' + valueBinding + ')' : valueBinding, \",\") +\n        '$$i=_i($$a,$$v);' +\n        \"if($$el.checked){$$i<0&&(\".concat(genAssignmentCode(value, '$$a.concat([$$v])'), \")}\") +\n        \"else{$$i>-1&&(\".concat(genAssignmentCode(value, '$$a.slice(0,$$i).concat($$a.slice($$i+1))'), \")}\") +\n        \"}else{\".concat(genAssignmentCode(value, '$$c'), \"}\"), null, true);\n}\nfunction genRadioModel(el, value, modifiers) {\n    var number = modifiers && modifiers.number;\n    var valueBinding = getBindingAttr(el, 'value') || 'null';\n    valueBinding = number ? \"_n(\".concat(valueBinding, \")\") : valueBinding;\n    addProp(el, 'checked', \"_q(\".concat(value, \",\").concat(valueBinding, \")\"));\n    addHandler(el, 'change', genAssignmentCode(value, valueBinding), null, true);\n}\nfunction genSelect(el, value, modifiers) {\n    var number = modifiers && modifiers.number;\n    var selectedVal = \"Array.prototype.filter\" +\n        \".call($event.target.options,function(o){return o.selected})\" +\n        \".map(function(o){var val = \\\"_value\\\" in o ? o._value : o.value;\" +\n        \"return \".concat(number ? '_n(val)' : 'val', \"})\");\n    var assignment = '$event.target.multiple ? $$selectedVal : $$selectedVal[0]';\n    var code = \"var $$selectedVal = \".concat(selectedVal, \";\");\n    code = \"\".concat(code, \" \").concat(genAssignmentCode(value, assignment));\n    addHandler(el, 'change', code, null, true);\n}\nfunction genDefaultModel(el, value, modifiers) {\n    var type = el.attrsMap.type;\n    // warn if v-bind:value conflicts with v-model\n    // except for inputs with v-bind:type\n    if (process.env.NODE_ENV !== 'production') {\n        var value_1 = el.attrsMap['v-bind:value'] || el.attrsMap[':value'];\n        var typeBinding = el.attrsMap['v-bind:type'] || el.attrsMap[':type'];\n        if (value_1 && !typeBinding) {\n            var binding = el.attrsMap['v-bind:value'] ? 'v-bind:value' : ':value';\n            warn$1(\"\".concat(binding, \"=\\\"\").concat(value_1, \"\\\" conflicts with v-model on the same element \") +\n                'because the latter already expands to a value binding internally', el.rawAttrsMap[binding]);\n        }\n    }\n    var _a = modifiers || {}, lazy = _a.lazy, number = _a.number, trim = _a.trim;\n    var needCompositionGuard = !lazy && type !== 'range';\n    var event = lazy ? 'change' : type === 'range' ? RANGE_TOKEN : 'input';\n    var valueExpression = '$event.target.value';\n    if (trim) {\n        valueExpression = \"$event.target.value.trim()\";\n    }\n    if (number) {\n        valueExpression = \"_n(\".concat(valueExpression, \")\");\n    }\n    var code = genAssignmentCode(value, valueExpression);\n    if (needCompositionGuard) {\n        code = \"if($event.target.composing)return;\".concat(code);\n    }\n    addProp(el, 'value', \"(\".concat(value, \")\"));\n    addHandler(el, event, code, null, true);\n    if (trim || number) {\n        addHandler(el, 'blur', '$forceUpdate()');\n    }\n}\n\n// normalize v-model event tokens that can only be determined at runtime.\n// it's important to place the event as the first in the array because\n// the whole point is ensuring the v-model callback gets called before\n// user-attached handlers.\nfunction normalizeEvents(on) {\n    /* istanbul ignore if */\n    if (isDef(on[RANGE_TOKEN])) {\n        // IE input[type=range] only supports `change` event\n        var event_1 = isIE ? 'change' : 'input';\n        on[event_1] = [].concat(on[RANGE_TOKEN], on[event_1] || []);\n        delete on[RANGE_TOKEN];\n    }\n    // This was originally intended to fix #4521 but no longer necessary\n    // after 2.5. Keeping it for backwards compat with generated code from < 2.4\n    /* istanbul ignore if */\n    if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n        on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);\n        delete on[CHECKBOX_RADIO_TOKEN];\n    }\n}\nvar target;\nfunction createOnceHandler(event, handler, capture) {\n    var _target = target; // save current target element in closure\n    return function onceHandler() {\n        var res = handler.apply(null, arguments);\n        if (res !== null) {\n            remove(event, onceHandler, capture, _target);\n        }\n    };\n}\n// #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp\n// implementation and does not fire microtasks in between event propagation, so\n// safe to exclude.\nvar useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53);\nfunction add(name, handler, capture, passive) {\n    // async edge case #6566: inner click event triggers patch, event handler\n    // attached to outer element during patch, and triggered again. This\n    // happens because browsers fire microtask ticks between event propagation.\n    // the solution is simple: we save the timestamp when a handler is attached,\n    // and the handler would only fire if the event passed to it was fired\n    // AFTER it was attached.\n    if (useMicrotaskFix) {\n        var attachedTimestamp_1 = currentFlushTimestamp;\n        var original_1 = handler;\n        //@ts-expect-error\n        handler = original_1._wrapper = function (e) {\n            if (\n            // no bubbling, should always fire.\n            // this is just a safety net in case event.timeStamp is unreliable in\n            // certain weird environments...\n            e.target === e.currentTarget ||\n                // event is fired after handler attachment\n                e.timeStamp >= attachedTimestamp_1 ||\n                // bail for environments that have buggy event.timeStamp implementations\n                // #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState\n                // #9681 QtWebEngine event.timeStamp is negative value\n                e.timeStamp <= 0 ||\n                // #9448 bail if event is fired in another document in a multi-page\n                // electron/nw.js app, since event.timeStamp will be using a different\n                // starting reference\n                e.target.ownerDocument !== document) {\n                return original_1.apply(this, arguments);\n            }\n        };\n    }\n    target.addEventListener(name, handler, supportsPassive ? { capture: capture, passive: passive } : capture);\n}\nfunction remove(name, handler, capture, _target) {\n    (_target || target).removeEventListener(name, \n    //@ts-expect-error\n    handler._wrapper || handler, capture);\n}\nfunction updateDOMListeners(oldVnode, vnode) {\n    if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n        return;\n    }\n    var on = vnode.data.on || {};\n    var oldOn = oldVnode.data.on || {};\n    // vnode is empty when removing all listeners,\n    // and use old vnode dom element\n    target = vnode.elm || oldVnode.elm;\n    normalizeEvents(on);\n    updateListeners(on, oldOn, add, remove, createOnceHandler, vnode.context);\n    target = undefined;\n}\nvar events = {\n    create: updateDOMListeners,\n    update: updateDOMListeners,\n    // @ts-expect-error emptyNode has actually data\n    destroy: function (vnode) { return updateDOMListeners(vnode, emptyNode); }\n};\n\nvar svgContainer;\nfunction updateDOMProps(oldVnode, vnode) {\n    if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n        return;\n    }\n    var key, cur;\n    var elm = vnode.elm;\n    var oldProps = oldVnode.data.domProps || {};\n    var props = vnode.data.domProps || {};\n    // clone observed objects, as the user probably wants to mutate it\n    if (isDef(props.__ob__) || isTrue(props._v_attr_proxy)) {\n        props = vnode.data.domProps = extend({}, props);\n    }\n    for (key in oldProps) {\n        if (!(key in props)) {\n            elm[key] = '';\n        }\n    }\n    for (key in props) {\n        cur = props[key];\n        // ignore children if the node has textContent or innerHTML,\n        // as these will throw away existing DOM nodes and cause removal errors\n        // on subsequent patches (#3360)\n        if (key === 'textContent' || key === 'innerHTML') {\n            if (vnode.children)\n                vnode.children.length = 0;\n            if (cur === oldProps[key])\n                continue;\n            // #6601 work around Chrome version <= 55 bug where single textNode\n            // replaced by innerHTML/textContent retains its parentNode property\n            if (elm.childNodes.length === 1) {\n                elm.removeChild(elm.childNodes[0]);\n            }\n        }\n        if (key === 'value' && elm.tagName !== 'PROGRESS') {\n            // store value as _value as well since\n            // non-string values will be stringified\n            elm._value = cur;\n            // avoid resetting cursor position when value is the same\n            var strCur = isUndef(cur) ? '' : String(cur);\n            if (shouldUpdateValue(elm, strCur)) {\n                elm.value = strCur;\n            }\n        }\n        else if (key === 'innerHTML' &&\n            isSVG(elm.tagName) &&\n            isUndef(elm.innerHTML)) {\n            // IE doesn't support innerHTML for SVG elements\n            svgContainer = svgContainer || document.createElement('div');\n            svgContainer.innerHTML = \"<svg>\".concat(cur, \"</svg>\");\n            var svg = svgContainer.firstChild;\n            while (elm.firstChild) {\n                elm.removeChild(elm.firstChild);\n            }\n            while (svg.firstChild) {\n                elm.appendChild(svg.firstChild);\n            }\n        }\n        else if (\n        // skip the update if old and new VDOM state is the same.\n        // `value` is handled separately because the DOM value may be temporarily\n        // out of sync with VDOM state due to focus, composition and modifiers.\n        // This  #4521 by skipping the unnecessary `checked` update.\n        cur !== oldProps[key]) {\n            // some property updates can throw\n            // e.g. `value` on <progress> w/ non-finite value\n            try {\n                elm[key] = cur;\n            }\n            catch (e) { }\n        }\n    }\n}\nfunction shouldUpdateValue(elm, checkVal) {\n    return (\n    //@ts-expect-error\n    !elm.composing &&\n        (elm.tagName === 'OPTION' ||\n            isNotInFocusAndDirty(elm, checkVal) ||\n            isDirtyWithModifiers(elm, checkVal)));\n}\nfunction isNotInFocusAndDirty(elm, checkVal) {\n    // return true when textbox (.number and .trim) loses focus and its value is\n    // not equal to the updated value\n    var notInFocus = true;\n    // #6157\n    // work around IE bug when accessing document.activeElement in an iframe\n    try {\n        notInFocus = document.activeElement !== elm;\n    }\n    catch (e) { }\n    return notInFocus && elm.value !== checkVal;\n}\nfunction isDirtyWithModifiers(elm, newVal) {\n    var value = elm.value;\n    var modifiers = elm._vModifiers; // injected by v-model runtime\n    if (isDef(modifiers)) {\n        if (modifiers.number) {\n            return toNumber(value) !== toNumber(newVal);\n        }\n        if (modifiers.trim) {\n            return value.trim() !== newVal.trim();\n        }\n    }\n    return value !== newVal;\n}\nvar domProps = {\n    create: updateDOMProps,\n    update: updateDOMProps\n};\n\nvar parseStyleText = cached(function (cssText) {\n    var res = {};\n    var listDelimiter = /;(?![^(]*\\))/g;\n    var propertyDelimiter = /:(.+)/;\n    cssText.split(listDelimiter).forEach(function (item) {\n        if (item) {\n            var tmp = item.split(propertyDelimiter);\n            tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n        }\n    });\n    return res;\n});\n// merge static and dynamic style data on the same vnode\nfunction normalizeStyleData(data) {\n    var style = normalizeStyleBinding(data.style);\n    // static style is pre-processed into an object during compilation\n    // and is always a fresh object, so it's safe to merge into it\n    return data.staticStyle ? extend(data.staticStyle, style) : style;\n}\n// normalize possible array / string values into Object\nfunction normalizeStyleBinding(bindingStyle) {\n    if (Array.isArray(bindingStyle)) {\n        return toObject(bindingStyle);\n    }\n    if (typeof bindingStyle === 'string') {\n        return parseStyleText(bindingStyle);\n    }\n    return bindingStyle;\n}\n/**\n * parent component style should be after child's\n * so that parent component's style could override it\n */\nfunction getStyle(vnode, checkChild) {\n    var res = {};\n    var styleData;\n    if (checkChild) {\n        var childNode = vnode;\n        while (childNode.componentInstance) {\n            childNode = childNode.componentInstance._vnode;\n            if (childNode &&\n                childNode.data &&\n                (styleData = normalizeStyleData(childNode.data))) {\n                extend(res, styleData);\n            }\n        }\n    }\n    if ((styleData = normalizeStyleData(vnode.data))) {\n        extend(res, styleData);\n    }\n    var parentNode = vnode;\n    // @ts-expect-error parentNode.parent not VNodeWithData\n    while ((parentNode = parentNode.parent)) {\n        if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n            extend(res, styleData);\n        }\n    }\n    return res;\n}\n\nvar cssVarRE = /^--/;\nvar importantRE = /\\s*!important$/;\nvar setProp = function (el, name, val) {\n    /* istanbul ignore if */\n    if (cssVarRE.test(name)) {\n        el.style.setProperty(name, val);\n    }\n    else if (importantRE.test(val)) {\n        el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important');\n    }\n    else {\n        var normalizedName = normalize(name);\n        if (Array.isArray(val)) {\n            // Support values array created by autoprefixer, e.g.\n            // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n            // Set them one by one, and the browser will only set those it can recognize\n            for (var i = 0, len = val.length; i < len; i++) {\n                el.style[normalizedName] = val[i];\n            }\n        }\n        else {\n            el.style[normalizedName] = val;\n        }\n    }\n};\nvar vendorNames = ['Webkit', 'Moz', 'ms'];\nvar emptyStyle;\nvar normalize = cached(function (prop) {\n    emptyStyle = emptyStyle || document.createElement('div').style;\n    prop = camelize(prop);\n    if (prop !== 'filter' && prop in emptyStyle) {\n        return prop;\n    }\n    var capName = prop.charAt(0).toUpperCase() + prop.slice(1);\n    for (var i = 0; i < vendorNames.length; i++) {\n        var name_1 = vendorNames[i] + capName;\n        if (name_1 in emptyStyle) {\n            return name_1;\n        }\n    }\n});\nfunction updateStyle(oldVnode, vnode) {\n    var data = vnode.data;\n    var oldData = oldVnode.data;\n    if (isUndef(data.staticStyle) &&\n        isUndef(data.style) &&\n        isUndef(oldData.staticStyle) &&\n        isUndef(oldData.style)) {\n        return;\n    }\n    var cur, name;\n    var el = vnode.elm;\n    var oldStaticStyle = oldData.staticStyle;\n    var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};\n    // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n    var oldStyle = oldStaticStyle || oldStyleBinding;\n    var style = normalizeStyleBinding(vnode.data.style) || {};\n    // store normalized style under a different key for next diff\n    // make sure to clone it if it's reactive, since the user likely wants\n    // to mutate it.\n    vnode.data.normalizedStyle = isDef(style.__ob__) ? extend({}, style) : style;\n    var newStyle = getStyle(vnode, true);\n    for (name in oldStyle) {\n        if (isUndef(newStyle[name])) {\n            setProp(el, name, '');\n        }\n    }\n    for (name in newStyle) {\n        cur = newStyle[name];\n        // ie9 setting to null has no effect, must use empty string\n        setProp(el, name, cur == null ? '' : cur);\n    }\n}\nvar style$1 = {\n    create: updateStyle,\n    update: updateStyle\n};\n\nvar whitespaceRE$1 = /\\s+/;\n/**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction addClass(el, cls) {\n    /* istanbul ignore if */\n    if (!cls || !(cls = cls.trim())) {\n        return;\n    }\n    /* istanbul ignore else */\n    if (el.classList) {\n        if (cls.indexOf(' ') > -1) {\n            cls.split(whitespaceRE$1).forEach(function (c) { return el.classList.add(c); });\n        }\n        else {\n            el.classList.add(cls);\n        }\n    }\n    else {\n        var cur = \" \".concat(el.getAttribute('class') || '', \" \");\n        if (cur.indexOf(' ' + cls + ' ') < 0) {\n            el.setAttribute('class', (cur + cls).trim());\n        }\n    }\n}\n/**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction removeClass(el, cls) {\n    /* istanbul ignore if */\n    if (!cls || !(cls = cls.trim())) {\n        return;\n    }\n    /* istanbul ignore else */\n    if (el.classList) {\n        if (cls.indexOf(' ') > -1) {\n            cls.split(whitespaceRE$1).forEach(function (c) { return el.classList.remove(c); });\n        }\n        else {\n            el.classList.remove(cls);\n        }\n        if (!el.classList.length) {\n            el.removeAttribute('class');\n        }\n    }\n    else {\n        var cur = \" \".concat(el.getAttribute('class') || '', \" \");\n        var tar = ' ' + cls + ' ';\n        while (cur.indexOf(tar) >= 0) {\n            cur = cur.replace(tar, ' ');\n        }\n        cur = cur.trim();\n        if (cur) {\n            el.setAttribute('class', cur);\n        }\n        else {\n            el.removeAttribute('class');\n        }\n    }\n}\n\nfunction resolveTransition(def) {\n    if (!def) {\n        return;\n    }\n    /* istanbul ignore else */\n    if (typeof def === 'object') {\n        var res = {};\n        if (def.css !== false) {\n            extend(res, autoCssTransition(def.name || 'v'));\n        }\n        extend(res, def);\n        return res;\n    }\n    else if (typeof def === 'string') {\n        return autoCssTransition(def);\n    }\n}\nvar autoCssTransition = cached(function (name) {\n    return {\n        enterClass: \"\".concat(name, \"-enter\"),\n        enterToClass: \"\".concat(name, \"-enter-to\"),\n        enterActiveClass: \"\".concat(name, \"-enter-active\"),\n        leaveClass: \"\".concat(name, \"-leave\"),\n        leaveToClass: \"\".concat(name, \"-leave-to\"),\n        leaveActiveClass: \"\".concat(name, \"-leave-active\")\n    };\n});\nvar hasTransition = inBrowser && !isIE9;\nvar TRANSITION = 'transition';\nvar ANIMATION = 'animation';\n// Transition property/event sniffing\nvar transitionProp = 'transition';\nvar transitionEndEvent = 'transitionend';\nvar animationProp = 'animation';\nvar animationEndEvent = 'animationend';\nif (hasTransition) {\n    /* istanbul ignore if */\n    if (window.ontransitionend === undefined &&\n        window.onwebkittransitionend !== undefined) {\n        transitionProp = 'WebkitTransition';\n        transitionEndEvent = 'webkitTransitionEnd';\n    }\n    if (window.onanimationend === undefined &&\n        window.onwebkitanimationend !== undefined) {\n        animationProp = 'WebkitAnimation';\n        animationEndEvent = 'webkitAnimationEnd';\n    }\n}\n// binding to window is necessary to make hot reload work in IE in strict mode\nvar raf = inBrowser\n    ? window.requestAnimationFrame\n        ? window.requestAnimationFrame.bind(window)\n        : setTimeout\n    : /* istanbul ignore next */ function (/* istanbul ignore next */ fn) { return fn(); };\nfunction nextFrame(fn) {\n    raf(function () {\n        // @ts-expect-error\n        raf(fn);\n    });\n}\nfunction addTransitionClass(el, cls) {\n    var transitionClasses = el._transitionClasses || (el._transitionClasses = []);\n    if (transitionClasses.indexOf(cls) < 0) {\n        transitionClasses.push(cls);\n        addClass(el, cls);\n    }\n}\nfunction removeTransitionClass(el, cls) {\n    if (el._transitionClasses) {\n        remove$2(el._transitionClasses, cls);\n    }\n    removeClass(el, cls);\n}\nfunction whenTransitionEnds(el, expectedType, cb) {\n    var _a = getTransitionInfo(el, expectedType), type = _a.type, timeout = _a.timeout, propCount = _a.propCount;\n    if (!type)\n        return cb();\n    var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n    var ended = 0;\n    var end = function () {\n        el.removeEventListener(event, onEnd);\n        cb();\n    };\n    var onEnd = function (e) {\n        if (e.target === el) {\n            if (++ended >= propCount) {\n                end();\n            }\n        }\n    };\n    setTimeout(function () {\n        if (ended < propCount) {\n            end();\n        }\n    }, timeout + 1);\n    el.addEventListener(event, onEnd);\n}\nvar transformRE = /\\b(transform|all)(,|$)/;\nfunction getTransitionInfo(el, expectedType) {\n    var styles = window.getComputedStyle(el);\n    // JSDOM may return undefined for transition properties\n    var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', ');\n    var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', ');\n    var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n    var animationDelays = (styles[animationProp + 'Delay'] || '').split(', ');\n    var animationDurations = (styles[animationProp + 'Duration'] || '').split(', ');\n    var animationTimeout = getTimeout(animationDelays, animationDurations);\n    var type;\n    var timeout = 0;\n    var propCount = 0;\n    /* istanbul ignore if */\n    if (expectedType === TRANSITION) {\n        if (transitionTimeout > 0) {\n            type = TRANSITION;\n            timeout = transitionTimeout;\n            propCount = transitionDurations.length;\n        }\n    }\n    else if (expectedType === ANIMATION) {\n        if (animationTimeout > 0) {\n            type = ANIMATION;\n            timeout = animationTimeout;\n            propCount = animationDurations.length;\n        }\n    }\n    else {\n        timeout = Math.max(transitionTimeout, animationTimeout);\n        type =\n            timeout > 0\n                ? transitionTimeout > animationTimeout\n                    ? TRANSITION\n                    : ANIMATION\n                : null;\n        propCount = type\n            ? type === TRANSITION\n                ? transitionDurations.length\n                : animationDurations.length\n            : 0;\n    }\n    var hasTransform = type === TRANSITION && transformRE.test(styles[transitionProp + 'Property']);\n    return {\n        type: type,\n        timeout: timeout,\n        propCount: propCount,\n        hasTransform: hasTransform\n    };\n}\nfunction getTimeout(delays, durations) {\n    /* istanbul ignore next */\n    while (delays.length < durations.length) {\n        delays = delays.concat(delays);\n    }\n    return Math.max.apply(null, durations.map(function (d, i) {\n        return toMs(d) + toMs(delays[i]);\n    }));\n}\n// Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers\n// in a locale-dependent way, using a comma instead of a dot.\n// If comma is not replaced with a dot, the input will be rounded down (i.e. acting\n// as a floor function) causing unexpected behaviors\nfunction toMs(s) {\n    return Number(s.slice(0, -1).replace(',', '.')) * 1000;\n}\n\nfunction enter(vnode, toggleDisplay) {\n    var el = vnode.elm;\n    // call leave callback now\n    if (isDef(el._leaveCb)) {\n        el._leaveCb.cancelled = true;\n        el._leaveCb();\n    }\n    var data = resolveTransition(vnode.data.transition);\n    if (isUndef(data)) {\n        return;\n    }\n    /* istanbul ignore if */\n    if (isDef(el._enterCb) || el.nodeType !== 1) {\n        return;\n    }\n    var css = data.css, type = data.type, enterClass = data.enterClass, enterToClass = data.enterToClass, enterActiveClass = data.enterActiveClass, appearClass = data.appearClass, appearToClass = data.appearToClass, appearActiveClass = data.appearActiveClass, beforeEnter = data.beforeEnter, enter = data.enter, afterEnter = data.afterEnter, enterCancelled = data.enterCancelled, beforeAppear = data.beforeAppear, appear = data.appear, afterAppear = data.afterAppear, appearCancelled = data.appearCancelled, duration = data.duration;\n    // activeInstance will always be the <transition> component managing this\n    // transition. One edge case to check is when the <transition> is placed\n    // as the root node of a child component. In that case we need to check\n    // <transition>'s parent for appear check.\n    var context = activeInstance;\n    var transitionNode = activeInstance.$vnode;\n    while (transitionNode && transitionNode.parent) {\n        context = transitionNode.context;\n        transitionNode = transitionNode.parent;\n    }\n    var isAppear = !context._isMounted || !vnode.isRootInsert;\n    if (isAppear && !appear && appear !== '') {\n        return;\n    }\n    var startClass = isAppear && appearClass ? appearClass : enterClass;\n    var activeClass = isAppear && appearActiveClass ? appearActiveClass : enterActiveClass;\n    var toClass = isAppear && appearToClass ? appearToClass : enterToClass;\n    var beforeEnterHook = isAppear ? beforeAppear || beforeEnter : beforeEnter;\n    var enterHook = isAppear ? (isFunction(appear) ? appear : enter) : enter;\n    var afterEnterHook = isAppear ? afterAppear || afterEnter : afterEnter;\n    var enterCancelledHook = isAppear\n        ? appearCancelled || enterCancelled\n        : enterCancelled;\n    var explicitEnterDuration = toNumber(isObject(duration) ? duration.enter : duration);\n    if (process.env.NODE_ENV !== 'production' && explicitEnterDuration != null) {\n        checkDuration(explicitEnterDuration, 'enter', vnode);\n    }\n    var expectsCSS = css !== false && !isIE9;\n    var userWantsControl = getHookArgumentsLength(enterHook);\n    var cb = (el._enterCb = once(function () {\n        if (expectsCSS) {\n            removeTransitionClass(el, toClass);\n            removeTransitionClass(el, activeClass);\n        }\n        // @ts-expect-error\n        if (cb.cancelled) {\n            if (expectsCSS) {\n                removeTransitionClass(el, startClass);\n            }\n            enterCancelledHook && enterCancelledHook(el);\n        }\n        else {\n            afterEnterHook && afterEnterHook(el);\n        }\n        el._enterCb = null;\n    }));\n    if (!vnode.data.show) {\n        // remove pending leave element on enter by injecting an insert hook\n        mergeVNodeHook(vnode, 'insert', function () {\n            var parent = el.parentNode;\n            var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n            if (pendingNode &&\n                pendingNode.tag === vnode.tag &&\n                pendingNode.elm._leaveCb) {\n                pendingNode.elm._leaveCb();\n            }\n            enterHook && enterHook(el, cb);\n        });\n    }\n    // start enter transition\n    beforeEnterHook && beforeEnterHook(el);\n    if (expectsCSS) {\n        addTransitionClass(el, startClass);\n        addTransitionClass(el, activeClass);\n        nextFrame(function () {\n            removeTransitionClass(el, startClass);\n            // @ts-expect-error\n            if (!cb.cancelled) {\n                addTransitionClass(el, toClass);\n                if (!userWantsControl) {\n                    if (isValidDuration(explicitEnterDuration)) {\n                        setTimeout(cb, explicitEnterDuration);\n                    }\n                    else {\n                        whenTransitionEnds(el, type, cb);\n                    }\n                }\n            }\n        });\n    }\n    if (vnode.data.show) {\n        toggleDisplay && toggleDisplay();\n        enterHook && enterHook(el, cb);\n    }\n    if (!expectsCSS && !userWantsControl) {\n        cb();\n    }\n}\nfunction leave(vnode, rm) {\n    var el = vnode.elm;\n    // call enter callback now\n    if (isDef(el._enterCb)) {\n        el._enterCb.cancelled = true;\n        el._enterCb();\n    }\n    var data = resolveTransition(vnode.data.transition);\n    if (isUndef(data) || el.nodeType !== 1) {\n        return rm();\n    }\n    /* istanbul ignore if */\n    if (isDef(el._leaveCb)) {\n        return;\n    }\n    var css = data.css, type = data.type, leaveClass = data.leaveClass, leaveToClass = data.leaveToClass, leaveActiveClass = data.leaveActiveClass, beforeLeave = data.beforeLeave, leave = data.leave, afterLeave = data.afterLeave, leaveCancelled = data.leaveCancelled, delayLeave = data.delayLeave, duration = data.duration;\n    var expectsCSS = css !== false && !isIE9;\n    var userWantsControl = getHookArgumentsLength(leave);\n    var explicitLeaveDuration = toNumber(isObject(duration) ? duration.leave : duration);\n    if (process.env.NODE_ENV !== 'production' && isDef(explicitLeaveDuration)) {\n        checkDuration(explicitLeaveDuration, 'leave', vnode);\n    }\n    var cb = (el._leaveCb = once(function () {\n        if (el.parentNode && el.parentNode._pending) {\n            el.parentNode._pending[vnode.key] = null;\n        }\n        if (expectsCSS) {\n            removeTransitionClass(el, leaveToClass);\n            removeTransitionClass(el, leaveActiveClass);\n        }\n        // @ts-expect-error\n        if (cb.cancelled) {\n            if (expectsCSS) {\n                removeTransitionClass(el, leaveClass);\n            }\n            leaveCancelled && leaveCancelled(el);\n        }\n        else {\n            rm();\n            afterLeave && afterLeave(el);\n        }\n        el._leaveCb = null;\n    }));\n    if (delayLeave) {\n        delayLeave(performLeave);\n    }\n    else {\n        performLeave();\n    }\n    function performLeave() {\n        // the delayed leave may have already been cancelled\n        // @ts-expect-error\n        if (cb.cancelled) {\n            return;\n        }\n        // record leaving element\n        if (!vnode.data.show && el.parentNode) {\n            (el.parentNode._pending || (el.parentNode._pending = {}))[vnode.key] =\n                vnode;\n        }\n        beforeLeave && beforeLeave(el);\n        if (expectsCSS) {\n            addTransitionClass(el, leaveClass);\n            addTransitionClass(el, leaveActiveClass);\n            nextFrame(function () {\n                removeTransitionClass(el, leaveClass);\n                // @ts-expect-error\n                if (!cb.cancelled) {\n                    addTransitionClass(el, leaveToClass);\n                    if (!userWantsControl) {\n                        if (isValidDuration(explicitLeaveDuration)) {\n                            setTimeout(cb, explicitLeaveDuration);\n                        }\n                        else {\n                            whenTransitionEnds(el, type, cb);\n                        }\n                    }\n                }\n            });\n        }\n        leave && leave(el, cb);\n        if (!expectsCSS && !userWantsControl) {\n            cb();\n        }\n    }\n}\n// only used in dev mode\nfunction checkDuration(val, name, vnode) {\n    if (typeof val !== 'number') {\n        warn$2(\"<transition> explicit \".concat(name, \" duration is not a valid number - \") +\n            \"got \".concat(JSON.stringify(val), \".\"), vnode.context);\n    }\n    else if (isNaN(val)) {\n        warn$2(\"<transition> explicit \".concat(name, \" duration is NaN - \") +\n            'the duration expression might be incorrect.', vnode.context);\n    }\n}\nfunction isValidDuration(val) {\n    return typeof val === 'number' && !isNaN(val);\n}\n/**\n * Normalize a transition hook's argument length. The hook may be:\n * - a merged hook (invoker) with the original in .fns\n * - a wrapped component method (check ._length)\n * - a plain function (.length)\n */\nfunction getHookArgumentsLength(fn) {\n    if (isUndef(fn)) {\n        return false;\n    }\n    // @ts-expect-error\n    var invokerFns = fn.fns;\n    if (isDef(invokerFns)) {\n        // invoker\n        return getHookArgumentsLength(Array.isArray(invokerFns) ? invokerFns[0] : invokerFns);\n    }\n    else {\n        // @ts-expect-error\n        return (fn._length || fn.length) > 1;\n    }\n}\nfunction _enter(_, vnode) {\n    if (vnode.data.show !== true) {\n        enter(vnode);\n    }\n}\nvar transition = inBrowser\n    ? {\n        create: _enter,\n        activate: _enter,\n        remove: function (vnode, rm) {\n            /* istanbul ignore else */\n            if (vnode.data.show !== true) {\n                // @ts-expect-error\n                leave(vnode, rm);\n            }\n            else {\n                rm();\n            }\n        }\n    }\n    : {};\n\nvar platformModules = [attrs, klass$1, events, domProps, style$1, transition];\n\n// the directive module should be applied last, after all\n// built-in modules have been applied.\nvar modules$1 = platformModules.concat(baseModules);\nvar patch = createPatchFunction({ nodeOps: nodeOps, modules: modules$1 });\n\n/**\n * Not type checking this file because flow doesn't like attaching\n * properties to Elements.\n */\n/* istanbul ignore if */\nif (isIE9) {\n    // http://www.matts411.com/post/internet-explorer-9-oninput/\n    document.addEventListener('selectionchange', function () {\n        var el = document.activeElement;\n        // @ts-expect-error\n        if (el && el.vmodel) {\n            trigger(el, 'input');\n        }\n    });\n}\nvar directive = {\n    inserted: function (el, binding, vnode, oldVnode) {\n        if (vnode.tag === 'select') {\n            // #6903\n            if (oldVnode.elm && !oldVnode.elm._vOptions) {\n                mergeVNodeHook(vnode, 'postpatch', function () {\n                    directive.componentUpdated(el, binding, vnode);\n                });\n            }\n            else {\n                setSelected(el, binding, vnode.context);\n            }\n            el._vOptions = [].map.call(el.options, getValue);\n        }\n        else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {\n            el._vModifiers = binding.modifiers;\n            if (!binding.modifiers.lazy) {\n                el.addEventListener('compositionstart', onCompositionStart);\n                el.addEventListener('compositionend', onCompositionEnd);\n                // Safari < 10.2 & UIWebView doesn't fire compositionend when\n                // switching focus before confirming composition choice\n                // this also fixes the issue where some browsers e.g. iOS Chrome\n                // fires \"change\" instead of \"input\" on autocomplete.\n                el.addEventListener('change', onCompositionEnd);\n                /* istanbul ignore if */\n                if (isIE9) {\n                    el.vmodel = true;\n                }\n            }\n        }\n    },\n    componentUpdated: function (el, binding, vnode) {\n        if (vnode.tag === 'select') {\n            setSelected(el, binding, vnode.context);\n            // in case the options rendered by v-for have changed,\n            // it's possible that the value is out-of-sync with the rendered options.\n            // detect such cases and filter out values that no longer has a matching\n            // option in the DOM.\n            var prevOptions_1 = el._vOptions;\n            var curOptions_1 = (el._vOptions = [].map.call(el.options, getValue));\n            if (curOptions_1.some(function (o, i) { return !looseEqual(o, prevOptions_1[i]); })) {\n                // trigger change event if\n                // no matching option found for at least one value\n                var needReset = el.multiple\n                    ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions_1); })\n                    : binding.value !== binding.oldValue &&\n                        hasNoMatchingOption(binding.value, curOptions_1);\n                if (needReset) {\n                    trigger(el, 'change');\n                }\n            }\n        }\n    }\n};\nfunction setSelected(el, binding, vm) {\n    actuallySetSelected(el, binding, vm);\n    /* istanbul ignore if */\n    if (isIE || isEdge) {\n        setTimeout(function () {\n            actuallySetSelected(el, binding, vm);\n        }, 0);\n    }\n}\nfunction actuallySetSelected(el, binding, vm) {\n    var value = binding.value;\n    var isMultiple = el.multiple;\n    if (isMultiple && !Array.isArray(value)) {\n        process.env.NODE_ENV !== 'production' &&\n            warn$2(\"<select multiple v-model=\\\"\".concat(binding.expression, \"\\\"> \") +\n                \"expects an Array value for its binding, but got \".concat(Object.prototype.toString\n                    .call(value)\n                    .slice(8, -1)), vm);\n        return;\n    }\n    var selected, option;\n    for (var i = 0, l = el.options.length; i < l; i++) {\n        option = el.options[i];\n        if (isMultiple) {\n            selected = looseIndexOf(value, getValue(option)) > -1;\n            if (option.selected !== selected) {\n                option.selected = selected;\n            }\n        }\n        else {\n            if (looseEqual(getValue(option), value)) {\n                if (el.selectedIndex !== i) {\n                    el.selectedIndex = i;\n                }\n                return;\n            }\n        }\n    }\n    if (!isMultiple) {\n        el.selectedIndex = -1;\n    }\n}\nfunction hasNoMatchingOption(value, options) {\n    return options.every(function (o) { return !looseEqual(o, value); });\n}\nfunction getValue(option) {\n    return '_value' in option ? option._value : option.value;\n}\nfunction onCompositionStart(e) {\n    e.target.composing = true;\n}\nfunction onCompositionEnd(e) {\n    // prevent triggering an input event for no reason\n    if (!e.target.composing)\n        return;\n    e.target.composing = false;\n    trigger(e.target, 'input');\n}\nfunction trigger(el, type) {\n    var e = document.createEvent('HTMLEvents');\n    e.initEvent(type, true, true);\n    el.dispatchEvent(e);\n}\n\n// recursively search for possible transition defined inside the component root\nfunction locateNode(vnode) {\n    // @ts-expect-error\n    return vnode.componentInstance && (!vnode.data || !vnode.data.transition)\n        ? locateNode(vnode.componentInstance._vnode)\n        : vnode;\n}\nvar show = {\n    bind: function (el, _a, vnode) {\n        var value = _a.value;\n        vnode = locateNode(vnode);\n        var transition = vnode.data && vnode.data.transition;\n        var originalDisplay = (el.__vOriginalDisplay =\n            el.style.display === 'none' ? '' : el.style.display);\n        if (value && transition) {\n            vnode.data.show = true;\n            enter(vnode, function () {\n                el.style.display = originalDisplay;\n            });\n        }\n        else {\n            el.style.display = value ? originalDisplay : 'none';\n        }\n    },\n    update: function (el, _a, vnode) {\n        var value = _a.value, oldValue = _a.oldValue;\n        /* istanbul ignore if */\n        if (!value === !oldValue)\n            return;\n        vnode = locateNode(vnode);\n        var transition = vnode.data && vnode.data.transition;\n        if (transition) {\n            vnode.data.show = true;\n            if (value) {\n                enter(vnode, function () {\n                    el.style.display = el.__vOriginalDisplay;\n                });\n            }\n            else {\n                leave(vnode, function () {\n                    el.style.display = 'none';\n                });\n            }\n        }\n        else {\n            el.style.display = value ? el.__vOriginalDisplay : 'none';\n        }\n    },\n    unbind: function (el, binding, vnode, oldVnode, isDestroy) {\n        if (!isDestroy) {\n            el.style.display = el.__vOriginalDisplay;\n        }\n    }\n};\n\nvar platformDirectives = {\n    model: directive,\n    show: show\n};\n\n// Provides transition support for a single element/component.\nvar transitionProps = {\n    name: String,\n    appear: Boolean,\n    css: Boolean,\n    mode: String,\n    type: String,\n    enterClass: String,\n    leaveClass: String,\n    enterToClass: String,\n    leaveToClass: String,\n    enterActiveClass: String,\n    leaveActiveClass: String,\n    appearClass: String,\n    appearActiveClass: String,\n    appearToClass: String,\n    duration: [Number, String, Object]\n};\n// in case the child is also an abstract component, e.g. <keep-alive>\n// we want to recursively retrieve the real component to be rendered\nfunction getRealChild(vnode) {\n    var compOptions = vnode && vnode.componentOptions;\n    if (compOptions && compOptions.Ctor.options.abstract) {\n        return getRealChild(getFirstComponentChild(compOptions.children));\n    }\n    else {\n        return vnode;\n    }\n}\nfunction extractTransitionData(comp) {\n    var data = {};\n    var options = comp.$options;\n    // props\n    for (var key in options.propsData) {\n        data[key] = comp[key];\n    }\n    // events.\n    // extract listeners and pass them directly to the transition methods\n    var listeners = options._parentListeners;\n    for (var key in listeners) {\n        data[camelize(key)] = listeners[key];\n    }\n    return data;\n}\nfunction placeholder(h, rawChild) {\n    // @ts-expect-error\n    if (/\\d-keep-alive$/.test(rawChild.tag)) {\n        return h('keep-alive', {\n            props: rawChild.componentOptions.propsData\n        });\n    }\n}\nfunction hasParentTransition(vnode) {\n    while ((vnode = vnode.parent)) {\n        if (vnode.data.transition) {\n            return true;\n        }\n    }\n}\nfunction isSameChild(child, oldChild) {\n    return oldChild.key === child.key && oldChild.tag === child.tag;\n}\nvar isNotTextNode = function (c) { return c.tag || isAsyncPlaceholder(c); };\nvar isVShowDirective = function (d) { return d.name === 'show'; };\nvar Transition = {\n    name: 'transition',\n    props: transitionProps,\n    abstract: true,\n    render: function (h) {\n        var _this = this;\n        var children = this.$slots.default;\n        if (!children) {\n            return;\n        }\n        // filter out text nodes (possible whitespaces)\n        children = children.filter(isNotTextNode);\n        /* istanbul ignore if */\n        if (!children.length) {\n            return;\n        }\n        // warn multiple elements\n        if (process.env.NODE_ENV !== 'production' && children.length > 1) {\n            warn$2('<transition> can only be used on a single element. Use ' +\n                '<transition-group> for lists.', this.$parent);\n        }\n        var mode = this.mode;\n        // warn invalid mode\n        if (process.env.NODE_ENV !== 'production' && mode && mode !== 'in-out' && mode !== 'out-in') {\n            warn$2('invalid <transition> mode: ' + mode, this.$parent);\n        }\n        var rawChild = children[0];\n        // if this is a component root node and the component's\n        // parent container node also has transition, skip.\n        if (hasParentTransition(this.$vnode)) {\n            return rawChild;\n        }\n        // apply transition data to child\n        // use getRealChild() to ignore abstract components e.g. keep-alive\n        var child = getRealChild(rawChild);\n        /* istanbul ignore if */\n        if (!child) {\n            return rawChild;\n        }\n        if (this._leaving) {\n            return placeholder(h, rawChild);\n        }\n        // ensure a key that is unique to the vnode type and to this transition\n        // component instance. This key will be used to remove pending leaving nodes\n        // during entering.\n        var id = \"__transition-\".concat(this._uid, \"-\");\n        child.key =\n            child.key == null\n                ? child.isComment\n                    ? id + 'comment'\n                    : id + child.tag\n                : isPrimitive(child.key)\n                    ? String(child.key).indexOf(id) === 0\n                        ? child.key\n                        : id + child.key\n                    : child.key;\n        var data = ((child.data || (child.data = {})).transition =\n            extractTransitionData(this));\n        var oldRawChild = this._vnode;\n        var oldChild = getRealChild(oldRawChild);\n        // mark v-show\n        // so that the transition module can hand over the control to the directive\n        if (child.data.directives && child.data.directives.some(isVShowDirective)) {\n            child.data.show = true;\n        }\n        if (oldChild &&\n            oldChild.data &&\n            !isSameChild(child, oldChild) &&\n            !isAsyncPlaceholder(oldChild) &&\n            // #6687 component root is a comment node\n            !(oldChild.componentInstance &&\n                oldChild.componentInstance._vnode.isComment)) {\n            // replace old child transition data with fresh one\n            // important for dynamic transitions!\n            var oldData = (oldChild.data.transition = extend({}, data));\n            // handle transition mode\n            if (mode === 'out-in') {\n                // return placeholder node and queue update when leave finishes\n                this._leaving = true;\n                mergeVNodeHook(oldData, 'afterLeave', function () {\n                    _this._leaving = false;\n                    _this.$forceUpdate();\n                });\n                return placeholder(h, rawChild);\n            }\n            else if (mode === 'in-out') {\n                if (isAsyncPlaceholder(child)) {\n                    return oldRawChild;\n                }\n                var delayedLeave_1;\n                var performLeave = function () {\n                    delayedLeave_1();\n                };\n                mergeVNodeHook(data, 'afterEnter', performLeave);\n                mergeVNodeHook(data, 'enterCancelled', performLeave);\n                mergeVNodeHook(oldData, 'delayLeave', function (leave) {\n                    delayedLeave_1 = leave;\n                });\n            }\n        }\n        return rawChild;\n    }\n};\n\n// Provides transition support for list items.\nvar props = extend({\n    tag: String,\n    moveClass: String\n}, transitionProps);\ndelete props.mode;\nvar TransitionGroup = {\n    props: props,\n    beforeMount: function () {\n        var _this = this;\n        var update = this._update;\n        this._update = function (vnode, hydrating) {\n            var restoreActiveInstance = setActiveInstance(_this);\n            // force removing pass\n            _this.__patch__(_this._vnode, _this.kept, false, // hydrating\n            true // removeOnly (!important, avoids unnecessary moves)\n            );\n            _this._vnode = _this.kept;\n            restoreActiveInstance();\n            update.call(_this, vnode, hydrating);\n        };\n    },\n    render: function (h) {\n        var tag = this.tag || this.$vnode.data.tag || 'span';\n        var map = Object.create(null);\n        var prevChildren = (this.prevChildren = this.children);\n        var rawChildren = this.$slots.default || [];\n        var children = (this.children = []);\n        var transitionData = extractTransitionData(this);\n        for (var i = 0; i < rawChildren.length; i++) {\n            var c = rawChildren[i];\n            if (c.tag) {\n                if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n                    children.push(c);\n                    map[c.key] = c;\n                    (c.data || (c.data = {})).transition = transitionData;\n                }\n                else if (process.env.NODE_ENV !== 'production') {\n                    var opts = c.componentOptions;\n                    var name_1 = opts\n                        ? getComponentName(opts.Ctor.options) || opts.tag || ''\n                        : c.tag;\n                    warn$2(\"<transition-group> children must be keyed: <\".concat(name_1, \">\"));\n                }\n            }\n        }\n        if (prevChildren) {\n            var kept = [];\n            var removed = [];\n            for (var i = 0; i < prevChildren.length; i++) {\n                var c = prevChildren[i];\n                c.data.transition = transitionData;\n                // @ts-expect-error .getBoundingClientRect is not typed in Node\n                c.data.pos = c.elm.getBoundingClientRect();\n                if (map[c.key]) {\n                    kept.push(c);\n                }\n                else {\n                    removed.push(c);\n                }\n            }\n            this.kept = h(tag, null, kept);\n            this.removed = removed;\n        }\n        return h(tag, null, children);\n    },\n    updated: function () {\n        var children = this.prevChildren;\n        var moveClass = this.moveClass || (this.name || 'v') + '-move';\n        if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n            return;\n        }\n        // we divide the work into three loops to avoid mixing DOM reads and writes\n        // in each iteration - which helps prevent layout thrashing.\n        children.forEach(callPendingCbs);\n        children.forEach(recordPosition);\n        children.forEach(applyTranslation);\n        // force reflow to put everything in position\n        // assign to this to avoid being removed in tree-shaking\n        // $flow-disable-line\n        this._reflow = document.body.offsetHeight;\n        children.forEach(function (c) {\n            if (c.data.moved) {\n                var el_1 = c.elm;\n                var s = el_1.style;\n                addTransitionClass(el_1, moveClass);\n                s.transform = s.WebkitTransform = s.transitionDuration = '';\n                el_1.addEventListener(transitionEndEvent, (el_1._moveCb = function cb(e) {\n                    if (e && e.target !== el_1) {\n                        return;\n                    }\n                    if (!e || /transform$/.test(e.propertyName)) {\n                        el_1.removeEventListener(transitionEndEvent, cb);\n                        el_1._moveCb = null;\n                        removeTransitionClass(el_1, moveClass);\n                    }\n                }));\n            }\n        });\n    },\n    methods: {\n        hasMove: function (el, moveClass) {\n            /* istanbul ignore if */\n            if (!hasTransition) {\n                return false;\n            }\n            /* istanbul ignore if */\n            if (this._hasMove) {\n                return this._hasMove;\n            }\n            // Detect whether an element with the move class applied has\n            // CSS transitions. Since the element may be inside an entering\n            // transition at this very moment, we make a clone of it and remove\n            // all other transition classes applied to ensure only the move class\n            // is applied.\n            var clone = el.cloneNode();\n            if (el._transitionClasses) {\n                el._transitionClasses.forEach(function (cls) {\n                    removeClass(clone, cls);\n                });\n            }\n            addClass(clone, moveClass);\n            clone.style.display = 'none';\n            this.$el.appendChild(clone);\n            var info = getTransitionInfo(clone);\n            this.$el.removeChild(clone);\n            return (this._hasMove = info.hasTransform);\n        }\n    }\n};\nfunction callPendingCbs(c) {\n    /* istanbul ignore if */\n    if (c.elm._moveCb) {\n        c.elm._moveCb();\n    }\n    /* istanbul ignore if */\n    if (c.elm._enterCb) {\n        c.elm._enterCb();\n    }\n}\nfunction recordPosition(c) {\n    c.data.newPos = c.elm.getBoundingClientRect();\n}\nfunction applyTranslation(c) {\n    var oldPos = c.data.pos;\n    var newPos = c.data.newPos;\n    var dx = oldPos.left - newPos.left;\n    var dy = oldPos.top - newPos.top;\n    if (dx || dy) {\n        c.data.moved = true;\n        var s = c.elm.style;\n        s.transform = s.WebkitTransform = \"translate(\".concat(dx, \"px,\").concat(dy, \"px)\");\n        s.transitionDuration = '0s';\n    }\n}\n\nvar platformComponents = {\n    Transition: Transition,\n    TransitionGroup: TransitionGroup\n};\n\n// install platform specific utils\nVue.config.mustUseProp = mustUseProp;\nVue.config.isReservedTag = isReservedTag;\nVue.config.isReservedAttr = isReservedAttr;\nVue.config.getTagNamespace = getTagNamespace;\nVue.config.isUnknownElement = isUnknownElement;\n// install platform runtime directives & components\nextend(Vue.options.directives, platformDirectives);\nextend(Vue.options.components, platformComponents);\n// install platform patch function\nVue.prototype.__patch__ = inBrowser ? patch : noop;\n// public mount method\nVue.prototype.$mount = function (el, hydrating) {\n    el = el && inBrowser ? query(el) : undefined;\n    return mountComponent(this, el, hydrating);\n};\n// devtools global hook\n/* istanbul ignore next */\nif (inBrowser) {\n    setTimeout(function () {\n        if (config.devtools) {\n            if (devtools) {\n                devtools.emit('init', Vue);\n            }\n            else if (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test') {\n                // @ts-expect-error\n                console[console.info ? 'info' : 'log']('Download the Vue Devtools extension for a better development experience:\\n' +\n                    'https://github.com/vuejs/vue-devtools');\n            }\n        }\n        if (process.env.NODE_ENV !== 'production' &&\n            process.env.NODE_ENV !== 'test' &&\n            config.productionTip !== false &&\n            typeof console !== 'undefined') {\n            // @ts-expect-error\n            console[console.info ? 'info' : 'log'](\"You are running Vue in development mode.\\n\" +\n                \"Make sure to turn on production mode when deploying for production.\\n\" +\n                \"See more tips at https://vuejs.org/guide/deployment.html\");\n        }\n    }, 0);\n}\n\nvar defaultTagRE = /\\{\\{((?:.|\\r?\\n)+?)\\}\\}/g;\nvar regexEscapeRE = /[-.*+?^${}()|[\\]\\/\\\\]/g;\nvar buildRegex = cached(function (delimiters) {\n    var open = delimiters[0].replace(regexEscapeRE, '\\\\$&');\n    var close = delimiters[1].replace(regexEscapeRE, '\\\\$&');\n    return new RegExp(open + '((?:.|\\\\n)+?)' + close, 'g');\n});\nfunction parseText(text, delimiters) {\n    //@ts-expect-error\n    var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE;\n    if (!tagRE.test(text)) {\n        return;\n    }\n    var tokens = [];\n    var rawTokens = [];\n    var lastIndex = (tagRE.lastIndex = 0);\n    var match, index, tokenValue;\n    while ((match = tagRE.exec(text))) {\n        index = match.index;\n        // push text token\n        if (index > lastIndex) {\n            rawTokens.push((tokenValue = text.slice(lastIndex, index)));\n            tokens.push(JSON.stringify(tokenValue));\n        }\n        // tag token\n        var exp = parseFilters(match[1].trim());\n        tokens.push(\"_s(\".concat(exp, \")\"));\n        rawTokens.push({ '@binding': exp });\n        lastIndex = index + match[0].length;\n    }\n    if (lastIndex < text.length) {\n        rawTokens.push((tokenValue = text.slice(lastIndex)));\n        tokens.push(JSON.stringify(tokenValue));\n    }\n    return {\n        expression: tokens.join('+'),\n        tokens: rawTokens\n    };\n}\n\nfunction transformNode$1(el, options) {\n    var warn = options.warn || baseWarn;\n    var staticClass = getAndRemoveAttr(el, 'class');\n    if (process.env.NODE_ENV !== 'production' && staticClass) {\n        var res = parseText(staticClass, options.delimiters);\n        if (res) {\n            warn(\"class=\\\"\".concat(staticClass, \"\\\": \") +\n                'Interpolation inside attributes has been removed. ' +\n                'Use v-bind or the colon shorthand instead. For example, ' +\n                'instead of <div class=\"{{ val }}\">, use <div :class=\"val\">.', el.rawAttrsMap['class']);\n        }\n    }\n    if (staticClass) {\n        el.staticClass = JSON.stringify(staticClass.replace(/\\s+/g, ' ').trim());\n    }\n    var classBinding = getBindingAttr(el, 'class', false /* getStatic */);\n    if (classBinding) {\n        el.classBinding = classBinding;\n    }\n}\nfunction genData$2(el) {\n    var data = '';\n    if (el.staticClass) {\n        data += \"staticClass:\".concat(el.staticClass, \",\");\n    }\n    if (el.classBinding) {\n        data += \"class:\".concat(el.classBinding, \",\");\n    }\n    return data;\n}\nvar klass = {\n    staticKeys: ['staticClass'],\n    transformNode: transformNode$1,\n    genData: genData$2\n};\n\nfunction transformNode(el, options) {\n    var warn = options.warn || baseWarn;\n    var staticStyle = getAndRemoveAttr(el, 'style');\n    if (staticStyle) {\n        /* istanbul ignore if */\n        if (process.env.NODE_ENV !== 'production') {\n            var res = parseText(staticStyle, options.delimiters);\n            if (res) {\n                warn(\"style=\\\"\".concat(staticStyle, \"\\\": \") +\n                    'Interpolation inside attributes has been removed. ' +\n                    'Use v-bind or the colon shorthand instead. For example, ' +\n                    'instead of <div style=\"{{ val }}\">, use <div :style=\"val\">.', el.rawAttrsMap['style']);\n            }\n        }\n        el.staticStyle = JSON.stringify(parseStyleText(staticStyle));\n    }\n    var styleBinding = getBindingAttr(el, 'style', false /* getStatic */);\n    if (styleBinding) {\n        el.styleBinding = styleBinding;\n    }\n}\nfunction genData$1(el) {\n    var data = '';\n    if (el.staticStyle) {\n        data += \"staticStyle:\".concat(el.staticStyle, \",\");\n    }\n    if (el.styleBinding) {\n        data += \"style:(\".concat(el.styleBinding, \"),\");\n    }\n    return data;\n}\nvar style = {\n    staticKeys: ['staticStyle'],\n    transformNode: transformNode,\n    genData: genData$1\n};\n\nvar decoder;\nvar he = {\n    decode: function (html) {\n        decoder = decoder || document.createElement('div');\n        decoder.innerHTML = html;\n        return decoder.textContent;\n    }\n};\n\nvar isUnaryTag = makeMap('area,base,br,col,embed,frame,hr,img,input,isindex,keygen,' +\n    'link,meta,param,source,track,wbr');\n// Elements that you can, intentionally, leave open\n// (and which close themselves)\nvar canBeLeftOpenTag = makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source');\n// HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3\n// Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content\nvar isNonPhrasingTag = makeMap('address,article,aside,base,blockquote,body,caption,col,colgroup,dd,' +\n    'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,' +\n    'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,' +\n    'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,' +\n    'title,tr,track');\n\n/**\n * Not type-checking this file because it's mostly vendor code.\n */\n// Regular Expressions for parsing tags and attributes\nvar attribute = /^\\s*([^\\s\"'<>\\/=]+)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/;\nvar dynamicArgAttribute = /^\\s*((?:v-[\\w-]+:|@|:|#)\\[[^=]+?\\][^\\s\"'<>\\/=]*)(?:\\s*(=)\\s*(?:\"([^\"]*)\"+|'([^']*)'+|([^\\s\"'=<>`]+)))?/;\nvar ncname = \"[a-zA-Z_][\\\\-\\\\.0-9_a-zA-Z\".concat(unicodeRegExp.source, \"]*\");\nvar qnameCapture = \"((?:\".concat(ncname, \"\\\\:)?\").concat(ncname, \")\");\nvar startTagOpen = new RegExp(\"^<\".concat(qnameCapture));\nvar startTagClose = /^\\s*(\\/?)>/;\nvar endTag = new RegExp(\"^<\\\\/\".concat(qnameCapture, \"[^>]*>\"));\nvar doctype = /^<!DOCTYPE [^>]+>/i;\n// #7298: escape - to avoid being passed as HTML comment when inlined in page\nvar comment = /^<!\\--/;\nvar conditionalComment = /^<!\\[/;\n// Special Elements (can contain anything)\nvar isPlainTextElement = makeMap('script,style,textarea', true);\nvar reCache = {};\nvar decodingMap = {\n    '&lt;': '<',\n    '&gt;': '>',\n    '&quot;': '\"',\n    '&amp;': '&',\n    '&#10;': '\\n',\n    '&#9;': '\\t',\n    '&#39;': \"'\"\n};\nvar encodedAttr = /&(?:lt|gt|quot|amp|#39);/g;\nvar encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#39|#10|#9);/g;\n// #5992\nvar isIgnoreNewlineTag = makeMap('pre,textarea', true);\nvar shouldIgnoreFirstNewline = function (tag, html) {\n    return tag && isIgnoreNewlineTag(tag) && html[0] === '\\n';\n};\nfunction decodeAttr(value, shouldDecodeNewlines) {\n    var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr;\n    return value.replace(re, function (match) { return decodingMap[match]; });\n}\nfunction parseHTML(html, options) {\n    var stack = [];\n    var expectHTML = options.expectHTML;\n    var isUnaryTag = options.isUnaryTag || no;\n    var canBeLeftOpenTag = options.canBeLeftOpenTag || no;\n    var index = 0;\n    var last, lastTag;\n    var _loop_1 = function () {\n        last = html;\n        // Make sure we're not in a plaintext content element like script/style\n        if (!lastTag || !isPlainTextElement(lastTag)) {\n            var textEnd = html.indexOf('<');\n            if (textEnd === 0) {\n                // Comment:\n                if (comment.test(html)) {\n                    var commentEnd = html.indexOf('-->');\n                    if (commentEnd >= 0) {\n                        if (options.shouldKeepComment && options.comment) {\n                            options.comment(html.substring(4, commentEnd), index, index + commentEnd + 3);\n                        }\n                        advance(commentEnd + 3);\n                        return \"continue\";\n                    }\n                }\n                // https://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment\n                if (conditionalComment.test(html)) {\n                    var conditionalEnd = html.indexOf(']>');\n                    if (conditionalEnd >= 0) {\n                        advance(conditionalEnd + 2);\n                        return \"continue\";\n                    }\n                }\n                // Doctype:\n                var doctypeMatch = html.match(doctype);\n                if (doctypeMatch) {\n                    advance(doctypeMatch[0].length);\n                    return \"continue\";\n                }\n                // End tag:\n                var endTagMatch = html.match(endTag);\n                if (endTagMatch) {\n                    var curIndex = index;\n                    advance(endTagMatch[0].length);\n                    parseEndTag(endTagMatch[1], curIndex, index);\n                    return \"continue\";\n                }\n                // Start tag:\n                var startTagMatch = parseStartTag();\n                if (startTagMatch) {\n                    handleStartTag(startTagMatch);\n                    if (shouldIgnoreFirstNewline(startTagMatch.tagName, html)) {\n                        advance(1);\n                    }\n                    return \"continue\";\n                }\n            }\n            var text = void 0, rest = void 0, next = void 0;\n            if (textEnd >= 0) {\n                rest = html.slice(textEnd);\n                while (!endTag.test(rest) &&\n                    !startTagOpen.test(rest) &&\n                    !comment.test(rest) &&\n                    !conditionalComment.test(rest)) {\n                    // < in plain text, be forgiving and treat it as text\n                    next = rest.indexOf('<', 1);\n                    if (next < 0)\n                        break;\n                    textEnd += next;\n                    rest = html.slice(textEnd);\n                }\n                text = html.substring(0, textEnd);\n            }\n            if (textEnd < 0) {\n                text = html;\n            }\n            if (text) {\n                advance(text.length);\n            }\n            if (options.chars && text) {\n                options.chars(text, index - text.length, index);\n            }\n        }\n        else {\n            var endTagLength_1 = 0;\n            var stackedTag_1 = lastTag.toLowerCase();\n            var reStackedTag = reCache[stackedTag_1] ||\n                (reCache[stackedTag_1] = new RegExp('([\\\\s\\\\S]*?)(</' + stackedTag_1 + '[^>]*>)', 'i'));\n            var rest = html.replace(reStackedTag, function (all, text, endTag) {\n                endTagLength_1 = endTag.length;\n                if (!isPlainTextElement(stackedTag_1) && stackedTag_1 !== 'noscript') {\n                    text = text\n                        .replace(/<!\\--([\\s\\S]*?)-->/g, '$1') // #7298\n                        .replace(/<!\\[CDATA\\[([\\s\\S]*?)]]>/g, '$1');\n                }\n                if (shouldIgnoreFirstNewline(stackedTag_1, text)) {\n                    text = text.slice(1);\n                }\n                if (options.chars) {\n                    options.chars(text);\n                }\n                return '';\n            });\n            index += html.length - rest.length;\n            html = rest;\n            parseEndTag(stackedTag_1, index - endTagLength_1, index);\n        }\n        if (html === last) {\n            options.chars && options.chars(html);\n            if (process.env.NODE_ENV !== 'production' && !stack.length && options.warn) {\n                options.warn(\"Mal-formatted tag at end of template: \\\"\".concat(html, \"\\\"\"), {\n                    start: index + html.length\n                });\n            }\n            return \"break\";\n        }\n    };\n    while (html) {\n        var state_1 = _loop_1();\n        if (state_1 === \"break\")\n            break;\n    }\n    // Clean up any remaining tags\n    parseEndTag();\n    function advance(n) {\n        index += n;\n        html = html.substring(n);\n    }\n    function parseStartTag() {\n        var start = html.match(startTagOpen);\n        if (start) {\n            var match = {\n                tagName: start[1],\n                attrs: [],\n                start: index\n            };\n            advance(start[0].length);\n            var end = void 0, attr = void 0;\n            while (!(end = html.match(startTagClose)) &&\n                (attr = html.match(dynamicArgAttribute) || html.match(attribute))) {\n                attr.start = index;\n                advance(attr[0].length);\n                attr.end = index;\n                match.attrs.push(attr);\n            }\n            if (end) {\n                match.unarySlash = end[1];\n                advance(end[0].length);\n                match.end = index;\n                return match;\n            }\n        }\n    }\n    function handleStartTag(match) {\n        var tagName = match.tagName;\n        var unarySlash = match.unarySlash;\n        if (expectHTML) {\n            if (lastTag === 'p' && isNonPhrasingTag(tagName)) {\n                parseEndTag(lastTag);\n            }\n            if (canBeLeftOpenTag(tagName) && lastTag === tagName) {\n                parseEndTag(tagName);\n            }\n        }\n        var unary = isUnaryTag(tagName) || !!unarySlash;\n        var l = match.attrs.length;\n        var attrs = new Array(l);\n        for (var i = 0; i < l; i++) {\n            var args = match.attrs[i];\n            var value = args[3] || args[4] || args[5] || '';\n            var shouldDecodeNewlines = tagName === 'a' && args[1] === 'href'\n                ? options.shouldDecodeNewlinesForHref\n                : options.shouldDecodeNewlines;\n            attrs[i] = {\n                name: args[1],\n                value: decodeAttr(value, shouldDecodeNewlines)\n            };\n            if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n                attrs[i].start = args.start + args[0].match(/^\\s*/).length;\n                attrs[i].end = args.end;\n            }\n        }\n        if (!unary) {\n            stack.push({\n                tag: tagName,\n                lowerCasedTag: tagName.toLowerCase(),\n                attrs: attrs,\n                start: match.start,\n                end: match.end\n            });\n            lastTag = tagName;\n        }\n        if (options.start) {\n            options.start(tagName, attrs, unary, match.start, match.end);\n        }\n    }\n    function parseEndTag(tagName, start, end) {\n        var pos, lowerCasedTagName;\n        if (start == null)\n            start = index;\n        if (end == null)\n            end = index;\n        // Find the closest opened tag of the same type\n        if (tagName) {\n            lowerCasedTagName = tagName.toLowerCase();\n            for (pos = stack.length - 1; pos >= 0; pos--) {\n                if (stack[pos].lowerCasedTag === lowerCasedTagName) {\n                    break;\n                }\n            }\n        }\n        else {\n            // If no tag name is provided, clean shop\n            pos = 0;\n        }\n        if (pos >= 0) {\n            // Close all the open elements, up the stack\n            for (var i = stack.length - 1; i >= pos; i--) {\n                if (process.env.NODE_ENV !== 'production' && (i > pos || !tagName) && options.warn) {\n                    options.warn(\"tag <\".concat(stack[i].tag, \"> has no matching end tag.\"), {\n                        start: stack[i].start,\n                        end: stack[i].end\n                    });\n                }\n                if (options.end) {\n                    options.end(stack[i].tag, start, end);\n                }\n            }\n            // Remove the open elements from the stack\n            stack.length = pos;\n            lastTag = pos && stack[pos - 1].tag;\n        }\n        else if (lowerCasedTagName === 'br') {\n            if (options.start) {\n                options.start(tagName, [], true, start, end);\n            }\n        }\n        else if (lowerCasedTagName === 'p') {\n            if (options.start) {\n                options.start(tagName, [], false, start, end);\n            }\n            if (options.end) {\n                options.end(tagName, start, end);\n            }\n        }\n    }\n}\n\nvar onRE = /^@|^v-on:/;\nvar dirRE = /^v-|^@|^:|^#/;\nvar forAliasRE = /([\\s\\S]*?)\\s+(?:in|of)\\s+([\\s\\S]*)/;\nvar forIteratorRE = /,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/;\nvar stripParensRE = /^\\(|\\)$/g;\nvar dynamicArgRE = /^\\[.*\\]$/;\nvar argRE = /:(.*)$/;\nvar bindRE = /^:|^\\.|^v-bind:/;\nvar modifierRE = /\\.[^.\\]]+(?=[^\\]]*$)/g;\nvar slotRE = /^v-slot(:|$)|^#/;\nvar lineBreakRE = /[\\r\\n]/;\nvar whitespaceRE = /[ \\f\\t\\r\\n]+/g;\nvar invalidAttributeRE = /[\\s\"'<>\\/=]/;\nvar decodeHTMLCached = cached(he.decode);\nvar emptySlotScopeToken = \"_empty_\";\n// configurable state\nvar warn;\nvar delimiters;\nvar transforms;\nvar preTransforms;\nvar postTransforms;\nvar platformIsPreTag;\nvar platformMustUseProp;\nvar platformGetTagNamespace;\nvar maybeComponent;\nfunction createASTElement(tag, attrs, parent) {\n    return {\n        type: 1,\n        tag: tag,\n        attrsList: attrs,\n        attrsMap: makeAttrsMap(attrs),\n        rawAttrsMap: {},\n        parent: parent,\n        children: []\n    };\n}\n/**\n * Convert HTML string to AST.\n */\nfunction parse(template, options) {\n    warn = options.warn || baseWarn;\n    platformIsPreTag = options.isPreTag || no;\n    platformMustUseProp = options.mustUseProp || no;\n    platformGetTagNamespace = options.getTagNamespace || no;\n    var isReservedTag = options.isReservedTag || no;\n    maybeComponent = function (el) {\n        return !!(el.component ||\n            el.attrsMap[':is'] ||\n            el.attrsMap['v-bind:is'] ||\n            !(el.attrsMap.is ? isReservedTag(el.attrsMap.is) : isReservedTag(el.tag)));\n    };\n    transforms = pluckModuleFunction(options.modules, 'transformNode');\n    preTransforms = pluckModuleFunction(options.modules, 'preTransformNode');\n    postTransforms = pluckModuleFunction(options.modules, 'postTransformNode');\n    delimiters = options.delimiters;\n    var stack = [];\n    var preserveWhitespace = options.preserveWhitespace !== false;\n    var whitespaceOption = options.whitespace;\n    var root;\n    var currentParent;\n    var inVPre = false;\n    var inPre = false;\n    var warned = false;\n    function warnOnce(msg, range) {\n        if (!warned) {\n            warned = true;\n            warn(msg, range);\n        }\n    }\n    function closeElement(element) {\n        trimEndingWhitespace(element);\n        if (!inVPre && !element.processed) {\n            element = processElement(element, options);\n        }\n        // tree management\n        if (!stack.length && element !== root) {\n            // allow root elements with v-if, v-else-if and v-else\n            if (root.if && (element.elseif || element.else)) {\n                if (process.env.NODE_ENV !== 'production') {\n                    checkRootConstraints(element);\n                }\n                addIfCondition(root, {\n                    exp: element.elseif,\n                    block: element\n                });\n            }\n            else if (process.env.NODE_ENV !== 'production') {\n                warnOnce(\"Component template should contain exactly one root element. \" +\n                    \"If you are using v-if on multiple elements, \" +\n                    \"use v-else-if to chain them instead.\", { start: element.start });\n            }\n        }\n        if (currentParent && !element.forbidden) {\n            if (element.elseif || element.else) {\n                processIfConditions(element, currentParent);\n            }\n            else {\n                if (element.slotScope) {\n                    // scoped slot\n                    // keep it in the children list so that v-else(-if) conditions can\n                    // find it as the prev node.\n                    var name_1 = element.slotTarget || '\"default\"';\n                    (currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name_1] = element;\n                }\n                currentParent.children.push(element);\n                element.parent = currentParent;\n            }\n        }\n        // final children cleanup\n        // filter out scoped slots\n        element.children = element.children.filter(function (c) { return !c.slotScope; });\n        // remove trailing whitespace node again\n        trimEndingWhitespace(element);\n        // check pre state\n        if (element.pre) {\n            inVPre = false;\n        }\n        if (platformIsPreTag(element.tag)) {\n            inPre = false;\n        }\n        // apply post-transforms\n        for (var i = 0; i < postTransforms.length; i++) {\n            postTransforms[i](element, options);\n        }\n    }\n    function trimEndingWhitespace(el) {\n        // remove trailing whitespace node\n        if (!inPre) {\n            var lastNode = void 0;\n            while ((lastNode = el.children[el.children.length - 1]) &&\n                lastNode.type === 3 &&\n                lastNode.text === ' ') {\n                el.children.pop();\n            }\n        }\n    }\n    function checkRootConstraints(el) {\n        if (el.tag === 'slot' || el.tag === 'template') {\n            warnOnce(\"Cannot use <\".concat(el.tag, \"> as component root element because it may \") +\n                'contain multiple nodes.', { start: el.start });\n        }\n        if (el.attrsMap.hasOwnProperty('v-for')) {\n            warnOnce('Cannot use v-for on stateful component root element because ' +\n                'it renders multiple elements.', el.rawAttrsMap['v-for']);\n        }\n    }\n    parseHTML(template, {\n        warn: warn,\n        expectHTML: options.expectHTML,\n        isUnaryTag: options.isUnaryTag,\n        canBeLeftOpenTag: options.canBeLeftOpenTag,\n        shouldDecodeNewlines: options.shouldDecodeNewlines,\n        shouldDecodeNewlinesForHref: options.shouldDecodeNewlinesForHref,\n        shouldKeepComment: options.comments,\n        outputSourceRange: options.outputSourceRange,\n        start: function (tag, attrs, unary, start, end) {\n            // check namespace.\n            // inherit parent ns if there is one\n            var ns = (currentParent && currentParent.ns) || platformGetTagNamespace(tag);\n            // handle IE svg bug\n            /* istanbul ignore if */\n            if (isIE && ns === 'svg') {\n                attrs = guardIESVGBug(attrs);\n            }\n            var element = createASTElement(tag, attrs, currentParent);\n            if (ns) {\n                element.ns = ns;\n            }\n            if (process.env.NODE_ENV !== 'production') {\n                if (options.outputSourceRange) {\n                    element.start = start;\n                    element.end = end;\n                    element.rawAttrsMap = element.attrsList.reduce(function (cumulated, attr) {\n                        cumulated[attr.name] = attr;\n                        return cumulated;\n                    }, {});\n                }\n                attrs.forEach(function (attr) {\n                    if (invalidAttributeRE.test(attr.name)) {\n                        warn(\"Invalid dynamic argument expression: attribute names cannot contain \" +\n                            \"spaces, quotes, <, >, / or =.\", options.outputSourceRange\n                            ? {\n                                start: attr.start + attr.name.indexOf(\"[\"),\n                                end: attr.start + attr.name.length\n                            }\n                            : undefined);\n                    }\n                });\n            }\n            if (isForbiddenTag(element) && !isServerRendering()) {\n                element.forbidden = true;\n                process.env.NODE_ENV !== 'production' &&\n                    warn('Templates should only be responsible for mapping the state to the ' +\n                        'UI. Avoid placing tags with side-effects in your templates, such as ' +\n                        \"<\".concat(tag, \">\") +\n                        ', as they will not be parsed.', { start: element.start });\n            }\n            // apply pre-transforms\n            for (var i = 0; i < preTransforms.length; i++) {\n                element = preTransforms[i](element, options) || element;\n            }\n            if (!inVPre) {\n                processPre(element);\n                if (element.pre) {\n                    inVPre = true;\n                }\n            }\n            if (platformIsPreTag(element.tag)) {\n                inPre = true;\n            }\n            if (inVPre) {\n                processRawAttrs(element);\n            }\n            else if (!element.processed) {\n                // structural directives\n                processFor(element);\n                processIf(element);\n                processOnce(element);\n            }\n            if (!root) {\n                root = element;\n                if (process.env.NODE_ENV !== 'production') {\n                    checkRootConstraints(root);\n                }\n            }\n            if (!unary) {\n                currentParent = element;\n                stack.push(element);\n            }\n            else {\n                closeElement(element);\n            }\n        },\n        end: function (tag, start, end) {\n            var element = stack[stack.length - 1];\n            // pop stack\n            stack.length -= 1;\n            currentParent = stack[stack.length - 1];\n            if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n                element.end = end;\n            }\n            closeElement(element);\n        },\n        chars: function (text, start, end) {\n            if (!currentParent) {\n                if (process.env.NODE_ENV !== 'production') {\n                    if (text === template) {\n                        warnOnce('Component template requires a root element, rather than just text.', { start: start });\n                    }\n                    else if ((text = text.trim())) {\n                        warnOnce(\"text \\\"\".concat(text, \"\\\" outside root element will be ignored.\"), {\n                            start: start\n                        });\n                    }\n                }\n                return;\n            }\n            // IE textarea placeholder bug\n            /* istanbul ignore if */\n            if (isIE &&\n                currentParent.tag === 'textarea' &&\n                currentParent.attrsMap.placeholder === text) {\n                return;\n            }\n            var children = currentParent.children;\n            if (inPre || text.trim()) {\n                text = isTextTag(currentParent)\n                    ? text\n                    : decodeHTMLCached(text);\n            }\n            else if (!children.length) {\n                // remove the whitespace-only node right after an opening tag\n                text = '';\n            }\n            else if (whitespaceOption) {\n                if (whitespaceOption === 'condense') {\n                    // in condense mode, remove the whitespace node if it contains\n                    // line break, otherwise condense to a single space\n                    text = lineBreakRE.test(text) ? '' : ' ';\n                }\n                else {\n                    text = ' ';\n                }\n            }\n            else {\n                text = preserveWhitespace ? ' ' : '';\n            }\n            if (text) {\n                if (!inPre && whitespaceOption === 'condense') {\n                    // condense consecutive whitespaces into single space\n                    text = text.replace(whitespaceRE, ' ');\n                }\n                var res = void 0;\n                var child = void 0;\n                if (!inVPre && text !== ' ' && (res = parseText(text, delimiters))) {\n                    child = {\n                        type: 2,\n                        expression: res.expression,\n                        tokens: res.tokens,\n                        text: text\n                    };\n                }\n                else if (text !== ' ' ||\n                    !children.length ||\n                    children[children.length - 1].text !== ' ') {\n                    child = {\n                        type: 3,\n                        text: text\n                    };\n                }\n                if (child) {\n                    if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n                        child.start = start;\n                        child.end = end;\n                    }\n                    children.push(child);\n                }\n            }\n        },\n        comment: function (text, start, end) {\n            // adding anything as a sibling to the root node is forbidden\n            // comments should still be allowed, but ignored\n            if (currentParent) {\n                var child = {\n                    type: 3,\n                    text: text,\n                    isComment: true\n                };\n                if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n                    child.start = start;\n                    child.end = end;\n                }\n                currentParent.children.push(child);\n            }\n        }\n    });\n    return root;\n}\nfunction processPre(el) {\n    if (getAndRemoveAttr(el, 'v-pre') != null) {\n        el.pre = true;\n    }\n}\nfunction processRawAttrs(el) {\n    var list = el.attrsList;\n    var len = list.length;\n    if (len) {\n        var attrs = (el.attrs = new Array(len));\n        for (var i = 0; i < len; i++) {\n            attrs[i] = {\n                name: list[i].name,\n                value: JSON.stringify(list[i].value)\n            };\n            if (list[i].start != null) {\n                attrs[i].start = list[i].start;\n                attrs[i].end = list[i].end;\n            }\n        }\n    }\n    else if (!el.pre) {\n        // non root node in pre blocks with no attributes\n        el.plain = true;\n    }\n}\nfunction processElement(element, options) {\n    processKey(element);\n    // determine whether this is a plain element after\n    // removing structural attributes\n    element.plain =\n        !element.key && !element.scopedSlots && !element.attrsList.length;\n    processRef(element);\n    processSlotContent(element);\n    processSlotOutlet(element);\n    processComponent(element);\n    for (var i = 0; i < transforms.length; i++) {\n        element = transforms[i](element, options) || element;\n    }\n    processAttrs(element);\n    return element;\n}\nfunction processKey(el) {\n    var exp = getBindingAttr(el, 'key');\n    if (exp) {\n        if (process.env.NODE_ENV !== 'production') {\n            if (el.tag === 'template') {\n                warn(\"<template> cannot be keyed. Place the key on real elements instead.\", getRawBindingAttr(el, 'key'));\n            }\n            if (el.for) {\n                var iterator = el.iterator2 || el.iterator1;\n                var parent_1 = el.parent;\n                if (iterator &&\n                    iterator === exp &&\n                    parent_1 &&\n                    parent_1.tag === 'transition-group') {\n                    warn(\"Do not use v-for index as key on <transition-group> children, \" +\n                        \"this is the same as not using keys.\", getRawBindingAttr(el, 'key'), true /* tip */);\n                }\n            }\n        }\n        el.key = exp;\n    }\n}\nfunction processRef(el) {\n    var ref = getBindingAttr(el, 'ref');\n    if (ref) {\n        el.ref = ref;\n        el.refInFor = checkInFor(el);\n    }\n}\nfunction processFor(el) {\n    var exp;\n    if ((exp = getAndRemoveAttr(el, 'v-for'))) {\n        var res = parseFor(exp);\n        if (res) {\n            extend(el, res);\n        }\n        else if (process.env.NODE_ENV !== 'production') {\n            warn(\"Invalid v-for expression: \".concat(exp), el.rawAttrsMap['v-for']);\n        }\n    }\n}\nfunction parseFor(exp) {\n    var inMatch = exp.match(forAliasRE);\n    if (!inMatch)\n        return;\n    var res = {};\n    res.for = inMatch[2].trim();\n    var alias = inMatch[1].trim().replace(stripParensRE, '');\n    var iteratorMatch = alias.match(forIteratorRE);\n    if (iteratorMatch) {\n        res.alias = alias.replace(forIteratorRE, '').trim();\n        res.iterator1 = iteratorMatch[1].trim();\n        if (iteratorMatch[2]) {\n            res.iterator2 = iteratorMatch[2].trim();\n        }\n    }\n    else {\n        res.alias = alias;\n    }\n    return res;\n}\nfunction processIf(el) {\n    var exp = getAndRemoveAttr(el, 'v-if');\n    if (exp) {\n        el.if = exp;\n        addIfCondition(el, {\n            exp: exp,\n            block: el\n        });\n    }\n    else {\n        if (getAndRemoveAttr(el, 'v-else') != null) {\n            el.else = true;\n        }\n        var elseif = getAndRemoveAttr(el, 'v-else-if');\n        if (elseif) {\n            el.elseif = elseif;\n        }\n    }\n}\nfunction processIfConditions(el, parent) {\n    var prev = findPrevElement(parent.children);\n    if (prev && prev.if) {\n        addIfCondition(prev, {\n            exp: el.elseif,\n            block: el\n        });\n    }\n    else if (process.env.NODE_ENV !== 'production') {\n        warn(\"v-\".concat(el.elseif ? 'else-if=\"' + el.elseif + '\"' : 'else', \" \") +\n            \"used on element <\".concat(el.tag, \"> without corresponding v-if.\"), el.rawAttrsMap[el.elseif ? 'v-else-if' : 'v-else']);\n    }\n}\nfunction findPrevElement(children) {\n    var i = children.length;\n    while (i--) {\n        if (children[i].type === 1) {\n            return children[i];\n        }\n        else {\n            if (process.env.NODE_ENV !== 'production' && children[i].text !== ' ') {\n                warn(\"text \\\"\".concat(children[i].text.trim(), \"\\\" between v-if and v-else(-if) \") +\n                    \"will be ignored.\", children[i]);\n            }\n            children.pop();\n        }\n    }\n}\nfunction addIfCondition(el, condition) {\n    if (!el.ifConditions) {\n        el.ifConditions = [];\n    }\n    el.ifConditions.push(condition);\n}\nfunction processOnce(el) {\n    var once = getAndRemoveAttr(el, 'v-once');\n    if (once != null) {\n        el.once = true;\n    }\n}\n// handle content being passed to a component as slot,\n// e.g. <template slot=\"xxx\">, <div slot-scope=\"xxx\">\nfunction processSlotContent(el) {\n    var slotScope;\n    if (el.tag === 'template') {\n        slotScope = getAndRemoveAttr(el, 'scope');\n        /* istanbul ignore if */\n        if (process.env.NODE_ENV !== 'production' && slotScope) {\n            warn(\"the \\\"scope\\\" attribute for scoped slots have been deprecated and \" +\n                \"replaced by \\\"slot-scope\\\" since 2.5. The new \\\"slot-scope\\\" attribute \" +\n                \"can also be used on plain elements in addition to <template> to \" +\n                \"denote scoped slots.\", el.rawAttrsMap['scope'], true);\n        }\n        el.slotScope = slotScope || getAndRemoveAttr(el, 'slot-scope');\n    }\n    else if ((slotScope = getAndRemoveAttr(el, 'slot-scope'))) {\n        /* istanbul ignore if */\n        if (process.env.NODE_ENV !== 'production' && el.attrsMap['v-for']) {\n            warn(\"Ambiguous combined usage of slot-scope and v-for on <\".concat(el.tag, \"> \") +\n                \"(v-for takes higher priority). Use a wrapper <template> for the \" +\n                \"scoped slot to make it clearer.\", el.rawAttrsMap['slot-scope'], true);\n        }\n        el.slotScope = slotScope;\n    }\n    // slot=\"xxx\"\n    var slotTarget = getBindingAttr(el, 'slot');\n    if (slotTarget) {\n        el.slotTarget = slotTarget === '\"\"' ? '\"default\"' : slotTarget;\n        el.slotTargetDynamic = !!(el.attrsMap[':slot'] || el.attrsMap['v-bind:slot']);\n        // preserve slot as an attribute for native shadow DOM compat\n        // only for non-scoped slots.\n        if (el.tag !== 'template' && !el.slotScope) {\n            addAttr(el, 'slot', slotTarget, getRawBindingAttr(el, 'slot'));\n        }\n    }\n    // 2.6 v-slot syntax\n    {\n        if (el.tag === 'template') {\n            // v-slot on <template>\n            var slotBinding = getAndRemoveAttrByRegex(el, slotRE);\n            if (slotBinding) {\n                if (process.env.NODE_ENV !== 'production') {\n                    if (el.slotTarget || el.slotScope) {\n                        warn(\"Unexpected mixed usage of different slot syntaxes.\", el);\n                    }\n                    if (el.parent && !maybeComponent(el.parent)) {\n                        warn(\"<template v-slot> can only appear at the root level inside \" +\n                            \"the receiving component\", el);\n                    }\n                }\n                var _a = getSlotName(slotBinding), name_2 = _a.name, dynamic = _a.dynamic;\n                el.slotTarget = name_2;\n                el.slotTargetDynamic = dynamic;\n                el.slotScope = slotBinding.value || emptySlotScopeToken; // force it into a scoped slot for perf\n            }\n        }\n        else {\n            // v-slot on component, denotes default slot\n            var slotBinding = getAndRemoveAttrByRegex(el, slotRE);\n            if (slotBinding) {\n                if (process.env.NODE_ENV !== 'production') {\n                    if (!maybeComponent(el)) {\n                        warn(\"v-slot can only be used on components or <template>.\", slotBinding);\n                    }\n                    if (el.slotScope || el.slotTarget) {\n                        warn(\"Unexpected mixed usage of different slot syntaxes.\", el);\n                    }\n                    if (el.scopedSlots) {\n                        warn(\"To avoid scope ambiguity, the default slot should also use \" +\n                            \"<template> syntax when there are other named slots.\", slotBinding);\n                    }\n                }\n                // add the component's children to its default slot\n                var slots = el.scopedSlots || (el.scopedSlots = {});\n                var _b = getSlotName(slotBinding), name_3 = _b.name, dynamic = _b.dynamic;\n                var slotContainer_1 = (slots[name_3] = createASTElement('template', [], el));\n                slotContainer_1.slotTarget = name_3;\n                slotContainer_1.slotTargetDynamic = dynamic;\n                slotContainer_1.children = el.children.filter(function (c) {\n                    if (!c.slotScope) {\n                        c.parent = slotContainer_1;\n                        return true;\n                    }\n                });\n                slotContainer_1.slotScope = slotBinding.value || emptySlotScopeToken;\n                // remove children as they are returned from scopedSlots now\n                el.children = [];\n                // mark el non-plain so data gets generated\n                el.plain = false;\n            }\n        }\n    }\n}\nfunction getSlotName(binding) {\n    var name = binding.name.replace(slotRE, '');\n    if (!name) {\n        if (binding.name[0] !== '#') {\n            name = 'default';\n        }\n        else if (process.env.NODE_ENV !== 'production') {\n            warn(\"v-slot shorthand syntax requires a slot name.\", binding);\n        }\n    }\n    return dynamicArgRE.test(name)\n        ? // dynamic [name]\n            { name: name.slice(1, -1), dynamic: true }\n        : // static name\n            { name: \"\\\"\".concat(name, \"\\\"\"), dynamic: false };\n}\n// handle <slot/> outlets\nfunction processSlotOutlet(el) {\n    if (el.tag === 'slot') {\n        el.slotName = getBindingAttr(el, 'name');\n        if (process.env.NODE_ENV !== 'production' && el.key) {\n            warn(\"`key` does not work on <slot> because slots are abstract outlets \" +\n                \"and can possibly expand into multiple elements. \" +\n                \"Use the key on a wrapping element instead.\", getRawBindingAttr(el, 'key'));\n        }\n    }\n}\nfunction processComponent(el) {\n    var binding;\n    if ((binding = getBindingAttr(el, 'is'))) {\n        el.component = binding;\n    }\n    if (getAndRemoveAttr(el, 'inline-template') != null) {\n        el.inlineTemplate = true;\n    }\n}\nfunction processAttrs(el) {\n    var list = el.attrsList;\n    var i, l, name, rawName, value, modifiers, syncGen, isDynamic;\n    for (i = 0, l = list.length; i < l; i++) {\n        name = rawName = list[i].name;\n        value = list[i].value;\n        if (dirRE.test(name)) {\n            // mark element as dynamic\n            el.hasBindings = true;\n            // modifiers\n            modifiers = parseModifiers(name.replace(dirRE, ''));\n            // support .foo shorthand syntax for the .prop modifier\n            if (modifiers) {\n                name = name.replace(modifierRE, '');\n            }\n            if (bindRE.test(name)) {\n                // v-bind\n                name = name.replace(bindRE, '');\n                value = parseFilters(value);\n                isDynamic = dynamicArgRE.test(name);\n                if (isDynamic) {\n                    name = name.slice(1, -1);\n                }\n                if (process.env.NODE_ENV !== 'production' && value.trim().length === 0) {\n                    warn(\"The value for a v-bind expression cannot be empty. Found in \\\"v-bind:\".concat(name, \"\\\"\"));\n                }\n                if (modifiers) {\n                    if (modifiers.prop && !isDynamic) {\n                        name = camelize(name);\n                        if (name === 'innerHtml')\n                            name = 'innerHTML';\n                    }\n                    if (modifiers.camel && !isDynamic) {\n                        name = camelize(name);\n                    }\n                    if (modifiers.sync) {\n                        syncGen = genAssignmentCode(value, \"$event\");\n                        if (!isDynamic) {\n                            addHandler(el, \"update:\".concat(camelize(name)), syncGen, null, false, warn, list[i]);\n                            if (hyphenate(name) !== camelize(name)) {\n                                addHandler(el, \"update:\".concat(hyphenate(name)), syncGen, null, false, warn, list[i]);\n                            }\n                        }\n                        else {\n                            // handler w/ dynamic event name\n                            addHandler(el, \"\\\"update:\\\"+(\".concat(name, \")\"), syncGen, null, false, warn, list[i], true // dynamic\n                            );\n                        }\n                    }\n                }\n                if ((modifiers && modifiers.prop) ||\n                    (!el.component && platformMustUseProp(el.tag, el.attrsMap.type, name))) {\n                    addProp(el, name, value, list[i], isDynamic);\n                }\n                else {\n                    addAttr(el, name, value, list[i], isDynamic);\n                }\n            }\n            else if (onRE.test(name)) {\n                // v-on\n                name = name.replace(onRE, '');\n                isDynamic = dynamicArgRE.test(name);\n                if (isDynamic) {\n                    name = name.slice(1, -1);\n                }\n                addHandler(el, name, value, modifiers, false, warn, list[i], isDynamic);\n            }\n            else {\n                // normal directives\n                name = name.replace(dirRE, '');\n                // parse arg\n                var argMatch = name.match(argRE);\n                var arg = argMatch && argMatch[1];\n                isDynamic = false;\n                if (arg) {\n                    name = name.slice(0, -(arg.length + 1));\n                    if (dynamicArgRE.test(arg)) {\n                        arg = arg.slice(1, -1);\n                        isDynamic = true;\n                    }\n                }\n                addDirective(el, name, rawName, value, arg, isDynamic, modifiers, list[i]);\n                if (process.env.NODE_ENV !== 'production' && name === 'model') {\n                    checkForAliasModel(el, value);\n                }\n            }\n        }\n        else {\n            // literal attribute\n            if (process.env.NODE_ENV !== 'production') {\n                var res = parseText(value, delimiters);\n                if (res) {\n                    warn(\"\".concat(name, \"=\\\"\").concat(value, \"\\\": \") +\n                        'Interpolation inside attributes has been removed. ' +\n                        'Use v-bind or the colon shorthand instead. For example, ' +\n                        'instead of <div id=\"{{ val }}\">, use <div :id=\"val\">.', list[i]);\n                }\n            }\n            addAttr(el, name, JSON.stringify(value), list[i]);\n            // #6887 firefox doesn't update muted state if set via attribute\n            // even immediately after element creation\n            if (!el.component &&\n                name === 'muted' &&\n                platformMustUseProp(el.tag, el.attrsMap.type, name)) {\n                addProp(el, name, 'true', list[i]);\n            }\n        }\n    }\n}\nfunction checkInFor(el) {\n    var parent = el;\n    while (parent) {\n        if (parent.for !== undefined) {\n            return true;\n        }\n        parent = parent.parent;\n    }\n    return false;\n}\nfunction parseModifiers(name) {\n    var match = name.match(modifierRE);\n    if (match) {\n        var ret_1 = {};\n        match.forEach(function (m) {\n            ret_1[m.slice(1)] = true;\n        });\n        return ret_1;\n    }\n}\nfunction makeAttrsMap(attrs) {\n    var map = {};\n    for (var i = 0, l = attrs.length; i < l; i++) {\n        if (process.env.NODE_ENV !== 'production' && map[attrs[i].name] && !isIE && !isEdge) {\n            warn('duplicate attribute: ' + attrs[i].name, attrs[i]);\n        }\n        map[attrs[i].name] = attrs[i].value;\n    }\n    return map;\n}\n// for script (e.g. type=\"x/template\") or style, do not decode content\nfunction isTextTag(el) {\n    return el.tag === 'script' || el.tag === 'style';\n}\nfunction isForbiddenTag(el) {\n    return (el.tag === 'style' ||\n        (el.tag === 'script' &&\n            (!el.attrsMap.type || el.attrsMap.type === 'text/javascript')));\n}\nvar ieNSBug = /^xmlns:NS\\d+/;\nvar ieNSPrefix = /^NS\\d+:/;\n/* istanbul ignore next */\nfunction guardIESVGBug(attrs) {\n    var res = [];\n    for (var i = 0; i < attrs.length; i++) {\n        var attr = attrs[i];\n        if (!ieNSBug.test(attr.name)) {\n            attr.name = attr.name.replace(ieNSPrefix, '');\n            res.push(attr);\n        }\n    }\n    return res;\n}\nfunction checkForAliasModel(el, value) {\n    var _el = el;\n    while (_el) {\n        if (_el.for && _el.alias === value) {\n            warn(\"<\".concat(el.tag, \" v-model=\\\"\").concat(value, \"\\\">: \") +\n                \"You are binding v-model directly to a v-for iteration alias. \" +\n                \"This will not be able to modify the v-for source array because \" +\n                \"writing to the alias is like modifying a function local variable. \" +\n                \"Consider using an array of objects and use v-model on an object property instead.\", el.rawAttrsMap['v-model']);\n        }\n        _el = _el.parent;\n    }\n}\n\n/**\n * Expand input[v-model] with dynamic type bindings into v-if-else chains\n * Turn this:\n *   <input v-model=\"data[type]\" :type=\"type\">\n * into this:\n *   <input v-if=\"type === 'checkbox'\" type=\"checkbox\" v-model=\"data[type]\">\n *   <input v-else-if=\"type === 'radio'\" type=\"radio\" v-model=\"data[type]\">\n *   <input v-else :type=\"type\" v-model=\"data[type]\">\n */\nfunction preTransformNode(el, options) {\n    if (el.tag === 'input') {\n        var map = el.attrsMap;\n        if (!map['v-model']) {\n            return;\n        }\n        var typeBinding = void 0;\n        if (map[':type'] || map['v-bind:type']) {\n            typeBinding = getBindingAttr(el, 'type');\n        }\n        if (!map.type && !typeBinding && map['v-bind']) {\n            typeBinding = \"(\".concat(map['v-bind'], \").type\");\n        }\n        if (typeBinding) {\n            var ifCondition = getAndRemoveAttr(el, 'v-if', true);\n            var ifConditionExtra = ifCondition ? \"&&(\".concat(ifCondition, \")\") : \"\";\n            var hasElse = getAndRemoveAttr(el, 'v-else', true) != null;\n            var elseIfCondition = getAndRemoveAttr(el, 'v-else-if', true);\n            // 1. checkbox\n            var branch0 = cloneASTElement(el);\n            // process for on the main node\n            processFor(branch0);\n            addRawAttr(branch0, 'type', 'checkbox');\n            processElement(branch0, options);\n            branch0.processed = true; // prevent it from double-processed\n            branch0.if = \"(\".concat(typeBinding, \")==='checkbox'\") + ifConditionExtra;\n            addIfCondition(branch0, {\n                exp: branch0.if,\n                block: branch0\n            });\n            // 2. add radio else-if condition\n            var branch1 = cloneASTElement(el);\n            getAndRemoveAttr(branch1, 'v-for', true);\n            addRawAttr(branch1, 'type', 'radio');\n            processElement(branch1, options);\n            addIfCondition(branch0, {\n                exp: \"(\".concat(typeBinding, \")==='radio'\") + ifConditionExtra,\n                block: branch1\n            });\n            // 3. other\n            var branch2 = cloneASTElement(el);\n            getAndRemoveAttr(branch2, 'v-for', true);\n            addRawAttr(branch2, ':type', typeBinding);\n            processElement(branch2, options);\n            addIfCondition(branch0, {\n                exp: ifCondition,\n                block: branch2\n            });\n            if (hasElse) {\n                branch0.else = true;\n            }\n            else if (elseIfCondition) {\n                branch0.elseif = elseIfCondition;\n            }\n            return branch0;\n        }\n    }\n}\nfunction cloneASTElement(el) {\n    return createASTElement(el.tag, el.attrsList.slice(), el.parent);\n}\nvar model = {\n    preTransformNode: preTransformNode\n};\n\nvar modules = [klass, style, model];\n\nfunction text(el, dir) {\n    if (dir.value) {\n        addProp(el, 'textContent', \"_s(\".concat(dir.value, \")\"), dir);\n    }\n}\n\nfunction html(el, dir) {\n    if (dir.value) {\n        addProp(el, 'innerHTML', \"_s(\".concat(dir.value, \")\"), dir);\n    }\n}\n\nvar directives = {\n    model: model$1,\n    text: text,\n    html: html\n};\n\nvar baseOptions = {\n    expectHTML: true,\n    modules: modules,\n    directives: directives,\n    isPreTag: isPreTag,\n    isUnaryTag: isUnaryTag,\n    mustUseProp: mustUseProp,\n    canBeLeftOpenTag: canBeLeftOpenTag,\n    isReservedTag: isReservedTag,\n    getTagNamespace: getTagNamespace,\n    staticKeys: genStaticKeys$1(modules)\n};\n\nvar isStaticKey;\nvar isPlatformReservedTag;\nvar genStaticKeysCached = cached(genStaticKeys);\n/**\n * Goal of the optimizer: walk the generated template AST tree\n * and detect sub-trees that are purely static, i.e. parts of\n * the DOM that never needs to change.\n *\n * Once we detect these sub-trees, we can:\n *\n * 1. Hoist them into constants, so that we no longer need to\n *    create fresh nodes for them on each re-render;\n * 2. Completely skip them in the patching process.\n */\nfunction optimize(root, options) {\n    if (!root)\n        return;\n    isStaticKey = genStaticKeysCached(options.staticKeys || '');\n    isPlatformReservedTag = options.isReservedTag || no;\n    // first pass: mark all non-static nodes.\n    markStatic(root);\n    // second pass: mark static roots.\n    markStaticRoots(root, false);\n}\nfunction genStaticKeys(keys) {\n    return makeMap('type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap' +\n        (keys ? ',' + keys : ''));\n}\nfunction markStatic(node) {\n    node.static = isStatic(node);\n    if (node.type === 1) {\n        // do not make component slot content static. this avoids\n        // 1. components not able to mutate slot nodes\n        // 2. static slot content fails for hot-reloading\n        if (!isPlatformReservedTag(node.tag) &&\n            node.tag !== 'slot' &&\n            node.attrsMap['inline-template'] == null) {\n            return;\n        }\n        for (var i = 0, l = node.children.length; i < l; i++) {\n            var child = node.children[i];\n            markStatic(child);\n            if (!child.static) {\n                node.static = false;\n            }\n        }\n        if (node.ifConditions) {\n            for (var i = 1, l = node.ifConditions.length; i < l; i++) {\n                var block = node.ifConditions[i].block;\n                markStatic(block);\n                if (!block.static) {\n                    node.static = false;\n                }\n            }\n        }\n    }\n}\nfunction markStaticRoots(node, isInFor) {\n    if (node.type === 1) {\n        if (node.static || node.once) {\n            node.staticInFor = isInFor;\n        }\n        // For a node to qualify as a static root, it should have children that\n        // are not just static text. Otherwise the cost of hoisting out will\n        // outweigh the benefits and it's better off to just always render it fresh.\n        if (node.static &&\n            node.children.length &&\n            !(node.children.length === 1 && node.children[0].type === 3)) {\n            node.staticRoot = true;\n            return;\n        }\n        else {\n            node.staticRoot = false;\n        }\n        if (node.children) {\n            for (var i = 0, l = node.children.length; i < l; i++) {\n                markStaticRoots(node.children[i], isInFor || !!node.for);\n            }\n        }\n        if (node.ifConditions) {\n            for (var i = 1, l = node.ifConditions.length; i < l; i++) {\n                markStaticRoots(node.ifConditions[i].block, isInFor);\n            }\n        }\n    }\n}\nfunction isStatic(node) {\n    if (node.type === 2) {\n        // expression\n        return false;\n    }\n    if (node.type === 3) {\n        // text\n        return true;\n    }\n    return !!(node.pre ||\n        (!node.hasBindings && // no dynamic bindings\n            !node.if &&\n            !node.for && // not v-if or v-for or v-else\n            !isBuiltInTag(node.tag) && // not a built-in\n            isPlatformReservedTag(node.tag) && // not a component\n            !isDirectChildOfTemplateFor(node) &&\n            Object.keys(node).every(isStaticKey)));\n}\nfunction isDirectChildOfTemplateFor(node) {\n    while (node.parent) {\n        node = node.parent;\n        if (node.tag !== 'template') {\n            return false;\n        }\n        if (node.for) {\n            return true;\n        }\n    }\n    return false;\n}\n\nvar fnExpRE = /^([\\w$_]+|\\([^)]*?\\))\\s*=>|^function(?:\\s+[\\w$]+)?\\s*\\(/;\nvar fnInvokeRE = /\\([^)]*?\\);*$/;\nvar simplePathRE = /^[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['[^']*?']|\\[\"[^\"]*?\"]|\\[\\d+]|\\[[A-Za-z_$][\\w$]*])*$/;\n// KeyboardEvent.keyCode aliases\nvar keyCodes = {\n    esc: 27,\n    tab: 9,\n    enter: 13,\n    space: 32,\n    up: 38,\n    left: 37,\n    right: 39,\n    down: 40,\n    delete: [8, 46]\n};\n// KeyboardEvent.key aliases\nvar keyNames = {\n    // #7880: IE11 and Edge use `Esc` for Escape key name.\n    esc: ['Esc', 'Escape'],\n    tab: 'Tab',\n    enter: 'Enter',\n    // #9112: IE11 uses `Spacebar` for Space key name.\n    space: [' ', 'Spacebar'],\n    // #7806: IE11 uses key names without `Arrow` prefix for arrow keys.\n    up: ['Up', 'ArrowUp'],\n    left: ['Left', 'ArrowLeft'],\n    right: ['Right', 'ArrowRight'],\n    down: ['Down', 'ArrowDown'],\n    // #9112: IE11 uses `Del` for Delete key name.\n    delete: ['Backspace', 'Delete', 'Del']\n};\n// #4868: modifiers that prevent the execution of the listener\n// need to explicitly return null so that we can determine whether to remove\n// the listener for .once\nvar genGuard = function (condition) { return \"if(\".concat(condition, \")return null;\"); };\nvar modifierCode = {\n    stop: '$event.stopPropagation();',\n    prevent: '$event.preventDefault();',\n    self: genGuard(\"$event.target !== $event.currentTarget\"),\n    ctrl: genGuard(\"!$event.ctrlKey\"),\n    shift: genGuard(\"!$event.shiftKey\"),\n    alt: genGuard(\"!$event.altKey\"),\n    meta: genGuard(\"!$event.metaKey\"),\n    left: genGuard(\"'button' in $event && $event.button !== 0\"),\n    middle: genGuard(\"'button' in $event && $event.button !== 1\"),\n    right: genGuard(\"'button' in $event && $event.button !== 2\")\n};\nfunction genHandlers(events, isNative) {\n    var prefix = isNative ? 'nativeOn:' : 'on:';\n    var staticHandlers = \"\";\n    var dynamicHandlers = \"\";\n    for (var name_1 in events) {\n        var handlerCode = genHandler(events[name_1]);\n        //@ts-expect-error\n        if (events[name_1] && events[name_1].dynamic) {\n            dynamicHandlers += \"\".concat(name_1, \",\").concat(handlerCode, \",\");\n        }\n        else {\n            staticHandlers += \"\\\"\".concat(name_1, \"\\\":\").concat(handlerCode, \",\");\n        }\n    }\n    staticHandlers = \"{\".concat(staticHandlers.slice(0, -1), \"}\");\n    if (dynamicHandlers) {\n        return prefix + \"_d(\".concat(staticHandlers, \",[\").concat(dynamicHandlers.slice(0, -1), \"])\");\n    }\n    else {\n        return prefix + staticHandlers;\n    }\n}\nfunction genHandler(handler) {\n    if (!handler) {\n        return 'function(){}';\n    }\n    if (Array.isArray(handler)) {\n        return \"[\".concat(handler.map(function (handler) { return genHandler(handler); }).join(','), \"]\");\n    }\n    var isMethodPath = simplePathRE.test(handler.value);\n    var isFunctionExpression = fnExpRE.test(handler.value);\n    var isFunctionInvocation = simplePathRE.test(handler.value.replace(fnInvokeRE, ''));\n    if (!handler.modifiers) {\n        if (isMethodPath || isFunctionExpression) {\n            return handler.value;\n        }\n        return \"function($event){\".concat(isFunctionInvocation ? \"return \".concat(handler.value) : handler.value, \"}\"); // inline statement\n    }\n    else {\n        var code = '';\n        var genModifierCode = '';\n        var keys = [];\n        var _loop_1 = function (key) {\n            if (modifierCode[key]) {\n                genModifierCode += modifierCode[key];\n                // left/right\n                if (keyCodes[key]) {\n                    keys.push(key);\n                }\n            }\n            else if (key === 'exact') {\n                var modifiers_1 = handler.modifiers;\n                genModifierCode += genGuard(['ctrl', 'shift', 'alt', 'meta']\n                    .filter(function (keyModifier) { return !modifiers_1[keyModifier]; })\n                    .map(function (keyModifier) { return \"$event.\".concat(keyModifier, \"Key\"); })\n                    .join('||'));\n            }\n            else {\n                keys.push(key);\n            }\n        };\n        for (var key in handler.modifiers) {\n            _loop_1(key);\n        }\n        if (keys.length) {\n            code += genKeyFilter(keys);\n        }\n        // Make sure modifiers like prevent and stop get executed after key filtering\n        if (genModifierCode) {\n            code += genModifierCode;\n        }\n        var handlerCode = isMethodPath\n            ? \"return \".concat(handler.value, \".apply(null, arguments)\")\n            : isFunctionExpression\n                ? \"return (\".concat(handler.value, \").apply(null, arguments)\")\n                : isFunctionInvocation\n                    ? \"return \".concat(handler.value)\n                    : handler.value;\n        return \"function($event){\".concat(code).concat(handlerCode, \"}\");\n    }\n}\nfunction genKeyFilter(keys) {\n    return (\n    // make sure the key filters only apply to KeyboardEvents\n    // #9441: can't use 'keyCode' in $event because Chrome autofill fires fake\n    // key events that do not have keyCode property...\n    \"if(!$event.type.indexOf('key')&&\" +\n        \"\".concat(keys.map(genFilterCode).join('&&'), \")return null;\"));\n}\nfunction genFilterCode(key) {\n    var keyVal = parseInt(key, 10);\n    if (keyVal) {\n        return \"$event.keyCode!==\".concat(keyVal);\n    }\n    var keyCode = keyCodes[key];\n    var keyName = keyNames[key];\n    return (\"_k($event.keyCode,\" +\n        \"\".concat(JSON.stringify(key), \",\") +\n        \"\".concat(JSON.stringify(keyCode), \",\") +\n        \"$event.key,\" +\n        \"\".concat(JSON.stringify(keyName)) +\n        \")\");\n}\n\nfunction on(el, dir) {\n    if (process.env.NODE_ENV !== 'production' && dir.modifiers) {\n        warn$2(\"v-on without argument does not support modifiers.\");\n    }\n    el.wrapListeners = function (code) { return \"_g(\".concat(code, \",\").concat(dir.value, \")\"); };\n}\n\nfunction bind(el, dir) {\n    el.wrapData = function (code) {\n        return \"_b(\".concat(code, \",'\").concat(el.tag, \"',\").concat(dir.value, \",\").concat(dir.modifiers && dir.modifiers.prop ? 'true' : 'false').concat(dir.modifiers && dir.modifiers.sync ? ',true' : '', \")\");\n    };\n}\n\nvar baseDirectives = {\n    on: on,\n    bind: bind,\n    cloak: noop\n};\n\nvar CodegenState = /** @class */ (function () {\n    function CodegenState(options) {\n        this.options = options;\n        this.warn = options.warn || baseWarn;\n        this.transforms = pluckModuleFunction(options.modules, 'transformCode');\n        this.dataGenFns = pluckModuleFunction(options.modules, 'genData');\n        this.directives = extend(extend({}, baseDirectives), options.directives);\n        var isReservedTag = options.isReservedTag || no;\n        this.maybeComponent = function (el) {\n            return !!el.component || !isReservedTag(el.tag);\n        };\n        this.onceId = 0;\n        this.staticRenderFns = [];\n        this.pre = false;\n    }\n    return CodegenState;\n}());\nfunction generate(ast, options) {\n    var state = new CodegenState(options);\n    // fix #11483, Root level <script> tags should not be rendered.\n    var code = ast\n        ? ast.tag === 'script'\n            ? 'null'\n            : genElement(ast, state)\n        : '_c(\"div\")';\n    return {\n        render: \"with(this){return \".concat(code, \"}\"),\n        staticRenderFns: state.staticRenderFns\n    };\n}\nfunction genElement(el, state) {\n    if (el.parent) {\n        el.pre = el.pre || el.parent.pre;\n    }\n    if (el.staticRoot && !el.staticProcessed) {\n        return genStatic(el, state);\n    }\n    else if (el.once && !el.onceProcessed) {\n        return genOnce(el, state);\n    }\n    else if (el.for && !el.forProcessed) {\n        return genFor(el, state);\n    }\n    else if (el.if && !el.ifProcessed) {\n        return genIf(el, state);\n    }\n    else if (el.tag === 'template' && !el.slotTarget && !state.pre) {\n        return genChildren(el, state) || 'void 0';\n    }\n    else if (el.tag === 'slot') {\n        return genSlot(el, state);\n    }\n    else {\n        // component or element\n        var code = void 0;\n        if (el.component) {\n            code = genComponent(el.component, el, state);\n        }\n        else {\n            var data = void 0;\n            var maybeComponent = state.maybeComponent(el);\n            if (!el.plain || (el.pre && maybeComponent)) {\n                data = genData(el, state);\n            }\n            var tag \n            // check if this is a component in <script setup>\n            = void 0;\n            // check if this is a component in <script setup>\n            var bindings = state.options.bindings;\n            if (maybeComponent && bindings && bindings.__isScriptSetup !== false) {\n                tag = checkBindingType(bindings, el.tag);\n            }\n            if (!tag)\n                tag = \"'\".concat(el.tag, \"'\");\n            var children = el.inlineTemplate ? null : genChildren(el, state, true);\n            code = \"_c(\".concat(tag).concat(data ? \",\".concat(data) : '' // data\n            ).concat(children ? \",\".concat(children) : '' // children\n            , \")\");\n        }\n        // module transforms\n        for (var i = 0; i < state.transforms.length; i++) {\n            code = state.transforms[i](el, code);\n        }\n        return code;\n    }\n}\nfunction checkBindingType(bindings, key) {\n    var camelName = camelize(key);\n    var PascalName = capitalize(camelName);\n    var checkType = function (type) {\n        if (bindings[key] === type) {\n            return key;\n        }\n        if (bindings[camelName] === type) {\n            return camelName;\n        }\n        if (bindings[PascalName] === type) {\n            return PascalName;\n        }\n    };\n    var fromConst = checkType(\"setup-const\" /* BindingTypes.SETUP_CONST */) ||\n        checkType(\"setup-reactive-const\" /* BindingTypes.SETUP_REACTIVE_CONST */);\n    if (fromConst) {\n        return fromConst;\n    }\n    var fromMaybeRef = checkType(\"setup-let\" /* BindingTypes.SETUP_LET */) ||\n        checkType(\"setup-ref\" /* BindingTypes.SETUP_REF */) ||\n        checkType(\"setup-maybe-ref\" /* BindingTypes.SETUP_MAYBE_REF */);\n    if (fromMaybeRef) {\n        return fromMaybeRef;\n    }\n}\n// hoist static sub-trees out\nfunction genStatic(el, state) {\n    el.staticProcessed = true;\n    // Some elements (templates) need to behave differently inside of a v-pre\n    // node.  All pre nodes are static roots, so we can use this as a location to\n    // wrap a state change and reset it upon exiting the pre node.\n    var originalPreState = state.pre;\n    if (el.pre) {\n        state.pre = el.pre;\n    }\n    state.staticRenderFns.push(\"with(this){return \".concat(genElement(el, state), \"}\"));\n    state.pre = originalPreState;\n    return \"_m(\".concat(state.staticRenderFns.length - 1).concat(el.staticInFor ? ',true' : '', \")\");\n}\n// v-once\nfunction genOnce(el, state) {\n    el.onceProcessed = true;\n    if (el.if && !el.ifProcessed) {\n        return genIf(el, state);\n    }\n    else if (el.staticInFor) {\n        var key = '';\n        var parent_1 = el.parent;\n        while (parent_1) {\n            if (parent_1.for) {\n                key = parent_1.key;\n                break;\n            }\n            parent_1 = parent_1.parent;\n        }\n        if (!key) {\n            process.env.NODE_ENV !== 'production' &&\n                state.warn(\"v-once can only be used inside v-for that is keyed. \", el.rawAttrsMap['v-once']);\n            return genElement(el, state);\n        }\n        return \"_o(\".concat(genElement(el, state), \",\").concat(state.onceId++, \",\").concat(key, \")\");\n    }\n    else {\n        return genStatic(el, state);\n    }\n}\nfunction genIf(el, state, altGen, altEmpty) {\n    el.ifProcessed = true; // avoid recursion\n    return genIfConditions(el.ifConditions.slice(), state, altGen, altEmpty);\n}\nfunction genIfConditions(conditions, state, altGen, altEmpty) {\n    if (!conditions.length) {\n        return altEmpty || '_e()';\n    }\n    var condition = conditions.shift();\n    if (condition.exp) {\n        return \"(\".concat(condition.exp, \")?\").concat(genTernaryExp(condition.block), \":\").concat(genIfConditions(conditions, state, altGen, altEmpty));\n    }\n    else {\n        return \"\".concat(genTernaryExp(condition.block));\n    }\n    // v-if with v-once should generate code like (a)?_m(0):_m(1)\n    function genTernaryExp(el) {\n        return altGen\n            ? altGen(el, state)\n            : el.once\n                ? genOnce(el, state)\n                : genElement(el, state);\n    }\n}\nfunction genFor(el, state, altGen, altHelper) {\n    var exp = el.for;\n    var alias = el.alias;\n    var iterator1 = el.iterator1 ? \",\".concat(el.iterator1) : '';\n    var iterator2 = el.iterator2 ? \",\".concat(el.iterator2) : '';\n    if (process.env.NODE_ENV !== 'production' &&\n        state.maybeComponent(el) &&\n        el.tag !== 'slot' &&\n        el.tag !== 'template' &&\n        !el.key) {\n        state.warn(\"<\".concat(el.tag, \" v-for=\\\"\").concat(alias, \" in \").concat(exp, \"\\\">: component lists rendered with \") +\n            \"v-for should have explicit keys. \" +\n            \"See https://v2.vuejs.org/v2/guide/list.html#key for more info.\", el.rawAttrsMap['v-for'], true /* tip */);\n    }\n    el.forProcessed = true; // avoid recursion\n    return (\"\".concat(altHelper || '_l', \"((\").concat(exp, \"),\") +\n        \"function(\".concat(alias).concat(iterator1).concat(iterator2, \"){\") +\n        \"return \".concat((altGen || genElement)(el, state)) +\n        '})');\n}\nfunction genData(el, state) {\n    var data = '{';\n    // directives first.\n    // directives may mutate the el's other properties before they are generated.\n    var dirs = genDirectives(el, state);\n    if (dirs)\n        data += dirs + ',';\n    // key\n    if (el.key) {\n        data += \"key:\".concat(el.key, \",\");\n    }\n    // ref\n    if (el.ref) {\n        data += \"ref:\".concat(el.ref, \",\");\n    }\n    if (el.refInFor) {\n        data += \"refInFor:true,\";\n    }\n    // pre\n    if (el.pre) {\n        data += \"pre:true,\";\n    }\n    // record original tag name for components using \"is\" attribute\n    if (el.component) {\n        data += \"tag:\\\"\".concat(el.tag, \"\\\",\");\n    }\n    // module data generation functions\n    for (var i = 0; i < state.dataGenFns.length; i++) {\n        data += state.dataGenFns[i](el);\n    }\n    // attributes\n    if (el.attrs) {\n        data += \"attrs:\".concat(genProps(el.attrs), \",\");\n    }\n    // DOM props\n    if (el.props) {\n        data += \"domProps:\".concat(genProps(el.props), \",\");\n    }\n    // event handlers\n    if (el.events) {\n        data += \"\".concat(genHandlers(el.events, false), \",\");\n    }\n    if (el.nativeEvents) {\n        data += \"\".concat(genHandlers(el.nativeEvents, true), \",\");\n    }\n    // slot target\n    // only for non-scoped slots\n    if (el.slotTarget && !el.slotScope) {\n        data += \"slot:\".concat(el.slotTarget, \",\");\n    }\n    // scoped slots\n    if (el.scopedSlots) {\n        data += \"\".concat(genScopedSlots(el, el.scopedSlots, state), \",\");\n    }\n    // component v-model\n    if (el.model) {\n        data += \"model:{value:\".concat(el.model.value, \",callback:\").concat(el.model.callback, \",expression:\").concat(el.model.expression, \"},\");\n    }\n    // inline-template\n    if (el.inlineTemplate) {\n        var inlineTemplate = genInlineTemplate(el, state);\n        if (inlineTemplate) {\n            data += \"\".concat(inlineTemplate, \",\");\n        }\n    }\n    data = data.replace(/,$/, '') + '}';\n    // v-bind dynamic argument wrap\n    // v-bind with dynamic arguments must be applied using the same v-bind object\n    // merge helper so that class/style/mustUseProp attrs are handled correctly.\n    if (el.dynamicAttrs) {\n        data = \"_b(\".concat(data, \",\\\"\").concat(el.tag, \"\\\",\").concat(genProps(el.dynamicAttrs), \")\");\n    }\n    // v-bind data wrap\n    if (el.wrapData) {\n        data = el.wrapData(data);\n    }\n    // v-on data wrap\n    if (el.wrapListeners) {\n        data = el.wrapListeners(data);\n    }\n    return data;\n}\nfunction genDirectives(el, state) {\n    var dirs = el.directives;\n    if (!dirs)\n        return;\n    var res = 'directives:[';\n    var hasRuntime = false;\n    var i, l, dir, needRuntime;\n    for (i = 0, l = dirs.length; i < l; i++) {\n        dir = dirs[i];\n        needRuntime = true;\n        var gen = state.directives[dir.name];\n        if (gen) {\n            // compile-time directive that manipulates AST.\n            // returns true if it also needs a runtime counterpart.\n            needRuntime = !!gen(el, dir, state.warn);\n        }\n        if (needRuntime) {\n            hasRuntime = true;\n            res += \"{name:\\\"\".concat(dir.name, \"\\\",rawName:\\\"\").concat(dir.rawName, \"\\\"\").concat(dir.value\n                ? \",value:(\".concat(dir.value, \"),expression:\").concat(JSON.stringify(dir.value))\n                : '').concat(dir.arg ? \",arg:\".concat(dir.isDynamicArg ? dir.arg : \"\\\"\".concat(dir.arg, \"\\\"\")) : '').concat(dir.modifiers ? \",modifiers:\".concat(JSON.stringify(dir.modifiers)) : '', \"},\");\n        }\n    }\n    if (hasRuntime) {\n        return res.slice(0, -1) + ']';\n    }\n}\nfunction genInlineTemplate(el, state) {\n    var ast = el.children[0];\n    if (process.env.NODE_ENV !== 'production' && (el.children.length !== 1 || ast.type !== 1)) {\n        state.warn('Inline-template components must have exactly one child element.', { start: el.start });\n    }\n    if (ast && ast.type === 1) {\n        var inlineRenderFns = generate(ast, state.options);\n        return \"inlineTemplate:{render:function(){\".concat(inlineRenderFns.render, \"},staticRenderFns:[\").concat(inlineRenderFns.staticRenderFns\n            .map(function (code) { return \"function(){\".concat(code, \"}\"); })\n            .join(','), \"]}\");\n    }\n}\nfunction genScopedSlots(el, slots, state) {\n    // by default scoped slots are considered \"stable\", this allows child\n    // components with only scoped slots to skip forced updates from parent.\n    // but in some cases we have to bail-out of this optimization\n    // for example if the slot contains dynamic names, has v-if or v-for on them...\n    var needsForceUpdate = el.for ||\n        Object.keys(slots).some(function (key) {\n            var slot = slots[key];\n            return (slot.slotTargetDynamic || slot.if || slot.for || containsSlotChild(slot) // is passing down slot from parent which may be dynamic\n            );\n        });\n    // #9534: if a component with scoped slots is inside a conditional branch,\n    // it's possible for the same component to be reused but with different\n    // compiled slot content. To avoid that, we generate a unique key based on\n    // the generated code of all the slot contents.\n    var needsKey = !!el.if;\n    // OR when it is inside another scoped slot or v-for (the reactivity may be\n    // disconnected due to the intermediate scope variable)\n    // #9438, #9506\n    // TODO: this can be further optimized by properly analyzing in-scope bindings\n    // and skip force updating ones that do not actually use scope variables.\n    if (!needsForceUpdate) {\n        var parent_2 = el.parent;\n        while (parent_2) {\n            if ((parent_2.slotScope && parent_2.slotScope !== emptySlotScopeToken) ||\n                parent_2.for) {\n                needsForceUpdate = true;\n                break;\n            }\n            if (parent_2.if) {\n                needsKey = true;\n            }\n            parent_2 = parent_2.parent;\n        }\n    }\n    var generatedSlots = Object.keys(slots)\n        .map(function (key) { return genScopedSlot(slots[key], state); })\n        .join(',');\n    return \"scopedSlots:_u([\".concat(generatedSlots, \"]\").concat(needsForceUpdate ? \",null,true\" : \"\").concat(!needsForceUpdate && needsKey ? \",null,false,\".concat(hash(generatedSlots)) : \"\", \")\");\n}\nfunction hash(str) {\n    var hash = 5381;\n    var i = str.length;\n    while (i) {\n        hash = (hash * 33) ^ str.charCodeAt(--i);\n    }\n    return hash >>> 0;\n}\nfunction containsSlotChild(el) {\n    if (el.type === 1) {\n        if (el.tag === 'slot') {\n            return true;\n        }\n        return el.children.some(containsSlotChild);\n    }\n    return false;\n}\nfunction genScopedSlot(el, state) {\n    var isLegacySyntax = el.attrsMap['slot-scope'];\n    if (el.if && !el.ifProcessed && !isLegacySyntax) {\n        return genIf(el, state, genScopedSlot, \"null\");\n    }\n    if (el.for && !el.forProcessed) {\n        return genFor(el, state, genScopedSlot);\n    }\n    var slotScope = el.slotScope === emptySlotScopeToken ? \"\" : String(el.slotScope);\n    var fn = \"function(\".concat(slotScope, \"){\") +\n        \"return \".concat(el.tag === 'template'\n            ? el.if && isLegacySyntax\n                ? \"(\".concat(el.if, \")?\").concat(genChildren(el, state) || 'undefined', \":undefined\")\n                : genChildren(el, state) || 'undefined'\n            : genElement(el, state), \"}\");\n    // reverse proxy v-slot without scope on this.$slots\n    var reverseProxy = slotScope ? \"\" : \",proxy:true\";\n    return \"{key:\".concat(el.slotTarget || \"\\\"default\\\"\", \",fn:\").concat(fn).concat(reverseProxy, \"}\");\n}\nfunction genChildren(el, state, checkSkip, altGenElement, altGenNode) {\n    var children = el.children;\n    if (children.length) {\n        var el_1 = children[0];\n        // optimize single v-for\n        if (children.length === 1 &&\n            el_1.for &&\n            el_1.tag !== 'template' &&\n            el_1.tag !== 'slot') {\n            var normalizationType_1 = checkSkip\n                ? state.maybeComponent(el_1)\n                    ? \",1\"\n                    : \",0\"\n                : \"\";\n            return \"\".concat((altGenElement || genElement)(el_1, state)).concat(normalizationType_1);\n        }\n        var normalizationType = checkSkip\n            ? getNormalizationType(children, state.maybeComponent)\n            : 0;\n        var gen_1 = altGenNode || genNode;\n        return \"[\".concat(children.map(function (c) { return gen_1(c, state); }).join(','), \"]\").concat(normalizationType ? \",\".concat(normalizationType) : '');\n    }\n}\n// determine the normalization needed for the children array.\n// 0: no normalization needed\n// 1: simple normalization needed (possible 1-level deep nested array)\n// 2: full normalization needed\nfunction getNormalizationType(children, maybeComponent) {\n    var res = 0;\n    for (var i = 0; i < children.length; i++) {\n        var el = children[i];\n        if (el.type !== 1) {\n            continue;\n        }\n        if (needsNormalization(el) ||\n            (el.ifConditions &&\n                el.ifConditions.some(function (c) { return needsNormalization(c.block); }))) {\n            res = 2;\n            break;\n        }\n        if (maybeComponent(el) ||\n            (el.ifConditions && el.ifConditions.some(function (c) { return maybeComponent(c.block); }))) {\n            res = 1;\n        }\n    }\n    return res;\n}\nfunction needsNormalization(el) {\n    return el.for !== undefined || el.tag === 'template' || el.tag === 'slot';\n}\nfunction genNode(node, state) {\n    if (node.type === 1) {\n        return genElement(node, state);\n    }\n    else if (node.type === 3 && node.isComment) {\n        return genComment(node);\n    }\n    else {\n        return genText(node);\n    }\n}\nfunction genText(text) {\n    return \"_v(\".concat(text.type === 2\n        ? text.expression // no need for () because already wrapped in _s()\n        : transformSpecialNewlines(JSON.stringify(text.text)), \")\");\n}\nfunction genComment(comment) {\n    return \"_e(\".concat(JSON.stringify(comment.text), \")\");\n}\nfunction genSlot(el, state) {\n    var slotName = el.slotName || '\"default\"';\n    var children = genChildren(el, state);\n    var res = \"_t(\".concat(slotName).concat(children ? \",function(){return \".concat(children, \"}\") : '');\n    var attrs = el.attrs || el.dynamicAttrs\n        ? genProps((el.attrs || []).concat(el.dynamicAttrs || []).map(function (attr) { return ({\n            // slot props are camelized\n            name: camelize(attr.name),\n            value: attr.value,\n            dynamic: attr.dynamic\n        }); }))\n        : null;\n    var bind = el.attrsMap['v-bind'];\n    if ((attrs || bind) && !children) {\n        res += \",null\";\n    }\n    if (attrs) {\n        res += \",\".concat(attrs);\n    }\n    if (bind) {\n        res += \"\".concat(attrs ? '' : ',null', \",\").concat(bind);\n    }\n    return res + ')';\n}\n// componentName is el.component, take it as argument to shun flow's pessimistic refinement\nfunction genComponent(componentName, el, state) {\n    var children = el.inlineTemplate ? null : genChildren(el, state, true);\n    return \"_c(\".concat(componentName, \",\").concat(genData(el, state)).concat(children ? \",\".concat(children) : '', \")\");\n}\nfunction genProps(props) {\n    var staticProps = \"\";\n    var dynamicProps = \"\";\n    for (var i = 0; i < props.length; i++) {\n        var prop = props[i];\n        var value = transformSpecialNewlines(prop.value);\n        if (prop.dynamic) {\n            dynamicProps += \"\".concat(prop.name, \",\").concat(value, \",\");\n        }\n        else {\n            staticProps += \"\\\"\".concat(prop.name, \"\\\":\").concat(value, \",\");\n        }\n    }\n    staticProps = \"{\".concat(staticProps.slice(0, -1), \"}\");\n    if (dynamicProps) {\n        return \"_d(\".concat(staticProps, \",[\").concat(dynamicProps.slice(0, -1), \"])\");\n    }\n    else {\n        return staticProps;\n    }\n}\n// #3895, #4268\nfunction transformSpecialNewlines(text) {\n    return text.replace(/\\u2028/g, '\\\\u2028').replace(/\\u2029/g, '\\\\u2029');\n}\n\n// these keywords should not appear inside expressions, but operators like\n// typeof, instanceof and in are allowed\nvar prohibitedKeywordRE = new RegExp('\\\\b' +\n    ('do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,' +\n        'super,throw,while,yield,delete,export,import,return,switch,default,' +\n        'extends,finally,continue,debugger,function,arguments')\n        .split(',')\n        .join('\\\\b|\\\\b') +\n    '\\\\b');\n// these unary operators should not be used as property/method names\nvar unaryOperatorsRE = new RegExp('\\\\b' +\n    'delete,typeof,void'.split(',').join('\\\\s*\\\\([^\\\\)]*\\\\)|\\\\b') +\n    '\\\\s*\\\\([^\\\\)]*\\\\)');\n// strip strings in expressions\nvar stripStringRE = /'(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"|`(?:[^`\\\\]|\\\\.)*\\$\\{|\\}(?:[^`\\\\]|\\\\.)*`|`(?:[^`\\\\]|\\\\.)*`/g;\n// detect problematic expressions in a template\nfunction detectErrors(ast, warn) {\n    if (ast) {\n        checkNode(ast, warn);\n    }\n}\nfunction checkNode(node, warn) {\n    if (node.type === 1) {\n        for (var name_1 in node.attrsMap) {\n            if (dirRE.test(name_1)) {\n                var value = node.attrsMap[name_1];\n                if (value) {\n                    var range = node.rawAttrsMap[name_1];\n                    if (name_1 === 'v-for') {\n                        checkFor(node, \"v-for=\\\"\".concat(value, \"\\\"\"), warn, range);\n                    }\n                    else if (name_1 === 'v-slot' || name_1[0] === '#') {\n                        checkFunctionParameterExpression(value, \"\".concat(name_1, \"=\\\"\").concat(value, \"\\\"\"), warn, range);\n                    }\n                    else if (onRE.test(name_1)) {\n                        checkEvent(value, \"\".concat(name_1, \"=\\\"\").concat(value, \"\\\"\"), warn, range);\n                    }\n                    else {\n                        checkExpression(value, \"\".concat(name_1, \"=\\\"\").concat(value, \"\\\"\"), warn, range);\n                    }\n                }\n            }\n        }\n        if (node.children) {\n            for (var i = 0; i < node.children.length; i++) {\n                checkNode(node.children[i], warn);\n            }\n        }\n    }\n    else if (node.type === 2) {\n        checkExpression(node.expression, node.text, warn, node);\n    }\n}\nfunction checkEvent(exp, text, warn, range) {\n    var stripped = exp.replace(stripStringRE, '');\n    var keywordMatch = stripped.match(unaryOperatorsRE);\n    if (keywordMatch && stripped.charAt(keywordMatch.index - 1) !== '$') {\n        warn(\"avoid using JavaScript unary operator as property name: \" +\n            \"\\\"\".concat(keywordMatch[0], \"\\\" in expression \").concat(text.trim()), range);\n    }\n    checkExpression(exp, text, warn, range);\n}\nfunction checkFor(node, text, warn, range) {\n    checkExpression(node.for || '', text, warn, range);\n    checkIdentifier(node.alias, 'v-for alias', text, warn, range);\n    checkIdentifier(node.iterator1, 'v-for iterator', text, warn, range);\n    checkIdentifier(node.iterator2, 'v-for iterator', text, warn, range);\n}\nfunction checkIdentifier(ident, type, text, warn, range) {\n    if (typeof ident === 'string') {\n        try {\n            new Function(\"var \".concat(ident, \"=_\"));\n        }\n        catch (e) {\n            warn(\"invalid \".concat(type, \" \\\"\").concat(ident, \"\\\" in expression: \").concat(text.trim()), range);\n        }\n    }\n}\nfunction checkExpression(exp, text, warn, range) {\n    try {\n        new Function(\"return \".concat(exp));\n    }\n    catch (e) {\n        var keywordMatch = exp\n            .replace(stripStringRE, '')\n            .match(prohibitedKeywordRE);\n        if (keywordMatch) {\n            warn(\"avoid using JavaScript keyword as property name: \" +\n                \"\\\"\".concat(keywordMatch[0], \"\\\"\\n  Raw expression: \").concat(text.trim()), range);\n        }\n        else {\n            warn(\"invalid expression: \".concat(e.message, \" in\\n\\n\") +\n                \"    \".concat(exp, \"\\n\\n\") +\n                \"  Raw expression: \".concat(text.trim(), \"\\n\"), range);\n        }\n    }\n}\nfunction checkFunctionParameterExpression(exp, text, warn, range) {\n    try {\n        new Function(exp, '');\n    }\n    catch (e) {\n        warn(\"invalid function parameter expression: \".concat(e.message, \" in\\n\\n\") +\n            \"    \".concat(exp, \"\\n\\n\") +\n            \"  Raw expression: \".concat(text.trim(), \"\\n\"), range);\n    }\n}\n\nvar range = 2;\nfunction generateCodeFrame(source, start, end) {\n    if (start === void 0) { start = 0; }\n    if (end === void 0) { end = source.length; }\n    var lines = source.split(/\\r?\\n/);\n    var count = 0;\n    var res = [];\n    for (var i = 0; i < lines.length; i++) {\n        count += lines[i].length + 1;\n        if (count >= start) {\n            for (var j = i - range; j <= i + range || end > count; j++) {\n                if (j < 0 || j >= lines.length)\n                    continue;\n                res.push(\"\".concat(j + 1).concat(repeat(\" \", 3 - String(j + 1).length), \"|  \").concat(lines[j]));\n                var lineLength = lines[j].length;\n                if (j === i) {\n                    // push underline\n                    var pad = start - (count - lineLength) + 1;\n                    var length_1 = end > count ? lineLength - pad : end - start;\n                    res.push(\"   |  \" + repeat(\" \", pad) + repeat(\"^\", length_1));\n                }\n                else if (j > i) {\n                    if (end > count) {\n                        var length_2 = Math.min(end - count, lineLength);\n                        res.push(\"   |  \" + repeat(\"^\", length_2));\n                    }\n                    count += lineLength + 1;\n                }\n            }\n            break;\n        }\n    }\n    return res.join('\\n');\n}\nfunction repeat(str, n) {\n    var result = '';\n    if (n > 0) {\n        // eslint-disable-next-line no-constant-condition\n        while (true) {\n            // eslint-disable-line\n            if (n & 1)\n                result += str;\n            n >>>= 1;\n            if (n <= 0)\n                break;\n            str += str;\n        }\n    }\n    return result;\n}\n\nfunction createFunction(code, errors) {\n    try {\n        return new Function(code);\n    }\n    catch (err) {\n        errors.push({ err: err, code: code });\n        return noop;\n    }\n}\nfunction createCompileToFunctionFn(compile) {\n    var cache = Object.create(null);\n    return function compileToFunctions(template, options, vm) {\n        options = extend({}, options);\n        var warn = options.warn || warn$2;\n        delete options.warn;\n        /* istanbul ignore if */\n        if (process.env.NODE_ENV !== 'production') {\n            // detect possible CSP restriction\n            try {\n                new Function('return 1');\n            }\n            catch (e) {\n                if (e.toString().match(/unsafe-eval|CSP/)) {\n                    warn('It seems you are using the standalone build of Vue.js in an ' +\n                        'environment with Content Security Policy that prohibits unsafe-eval. ' +\n                        'The template compiler cannot work in this environment. Consider ' +\n                        'relaxing the policy to allow unsafe-eval or pre-compiling your ' +\n                        'templates into render functions.');\n                }\n            }\n        }\n        // check cache\n        var key = options.delimiters\n            ? String(options.delimiters) + template\n            : template;\n        if (cache[key]) {\n            return cache[key];\n        }\n        // compile\n        var compiled = compile(template, options);\n        // check compilation errors/tips\n        if (process.env.NODE_ENV !== 'production') {\n            if (compiled.errors && compiled.errors.length) {\n                if (options.outputSourceRange) {\n                    compiled.errors.forEach(function (e) {\n                        warn(\"Error compiling template:\\n\\n\".concat(e.msg, \"\\n\\n\") +\n                            generateCodeFrame(template, e.start, e.end), vm);\n                    });\n                }\n                else {\n                    warn(\"Error compiling template:\\n\\n\".concat(template, \"\\n\\n\") +\n                        compiled.errors.map(function (e) { return \"- \".concat(e); }).join('\\n') +\n                        '\\n', vm);\n                }\n            }\n            if (compiled.tips && compiled.tips.length) {\n                if (options.outputSourceRange) {\n                    compiled.tips.forEach(function (e) { return tip(e.msg, vm); });\n                }\n                else {\n                    compiled.tips.forEach(function (msg) { return tip(msg, vm); });\n                }\n            }\n        }\n        // turn code into functions\n        var res = {};\n        var fnGenErrors = [];\n        res.render = createFunction(compiled.render, fnGenErrors);\n        res.staticRenderFns = compiled.staticRenderFns.map(function (code) {\n            return createFunction(code, fnGenErrors);\n        });\n        // check function generation errors.\n        // this should only happen if there is a bug in the compiler itself.\n        // mostly for codegen development use\n        /* istanbul ignore if */\n        if (process.env.NODE_ENV !== 'production') {\n            if ((!compiled.errors || !compiled.errors.length) && fnGenErrors.length) {\n                warn(\"Failed to generate render function:\\n\\n\" +\n                    fnGenErrors\n                        .map(function (_a) {\n                        var err = _a.err, code = _a.code;\n                        return \"\".concat(err.toString(), \" in\\n\\n\").concat(code, \"\\n\");\n                    })\n                        .join('\\n'), vm);\n            }\n        }\n        return (cache[key] = res);\n    };\n}\n\nfunction createCompilerCreator(baseCompile) {\n    return function createCompiler(baseOptions) {\n        function compile(template, options) {\n            var finalOptions = Object.create(baseOptions);\n            var errors = [];\n            var tips = [];\n            var warn = function (msg, range, tip) {\n                (tip ? tips : errors).push(msg);\n            };\n            if (options) {\n                if (process.env.NODE_ENV !== 'production' && options.outputSourceRange) {\n                    // $flow-disable-line\n                    var leadingSpaceLength_1 = template.match(/^\\s*/)[0].length;\n                    warn = function (msg, range, tip) {\n                        var data = typeof msg === 'string' ? { msg: msg } : msg;\n                        if (range) {\n                            if (range.start != null) {\n                                data.start = range.start + leadingSpaceLength_1;\n                            }\n                            if (range.end != null) {\n                                data.end = range.end + leadingSpaceLength_1;\n                            }\n                        }\n                        (tip ? tips : errors).push(data);\n                    };\n                }\n                // merge custom modules\n                if (options.modules) {\n                    finalOptions.modules = (baseOptions.modules || []).concat(options.modules);\n                }\n                // merge custom directives\n                if (options.directives) {\n                    finalOptions.directives = extend(Object.create(baseOptions.directives || null), options.directives);\n                }\n                // copy other options\n                for (var key in options) {\n                    if (key !== 'modules' && key !== 'directives') {\n                        finalOptions[key] = options[key];\n                    }\n                }\n            }\n            finalOptions.warn = warn;\n            var compiled = baseCompile(template.trim(), finalOptions);\n            if (process.env.NODE_ENV !== 'production') {\n                detectErrors(compiled.ast, warn);\n            }\n            compiled.errors = errors;\n            compiled.tips = tips;\n            return compiled;\n        }\n        return {\n            compile: compile,\n            compileToFunctions: createCompileToFunctionFn(compile)\n        };\n    };\n}\n\n// `createCompilerCreator` allows creating compilers that use alternative\n// parser/optimizer/codegen, e.g the SSR optimizing compiler.\n// Here we just export a default compiler using the default parts.\nvar createCompiler = createCompilerCreator(function baseCompile(template, options) {\n    var ast = parse(template.trim(), options);\n    if (options.optimize !== false) {\n        optimize(ast, options);\n    }\n    var code = generate(ast, options);\n    return {\n        ast: ast,\n        render: code.render,\n        staticRenderFns: code.staticRenderFns\n    };\n});\n\nvar _a = createCompiler(baseOptions), compileToFunctions = _a.compileToFunctions;\n\n// check whether current browser encodes a char inside attribute values\nvar div;\nfunction getShouldDecode(href) {\n    div = div || document.createElement('div');\n    div.innerHTML = href ? \"<a href=\\\"\\n\\\"/>\" : \"<div a=\\\"\\n\\\"/>\";\n    return div.innerHTML.indexOf('&#10;') > 0;\n}\n// #3663: IE encodes newlines inside attribute values while other browsers don't\nvar shouldDecodeNewlines = inBrowser ? getShouldDecode(false) : false;\n// #6828: chrome encodes content in a[href]\nvar shouldDecodeNewlinesForHref = inBrowser\n    ? getShouldDecode(true)\n    : false;\n\nvar idToTemplate = cached(function (id) {\n    var el = query(id);\n    return el && el.innerHTML;\n});\nvar mount = Vue.prototype.$mount;\nVue.prototype.$mount = function (el, hydrating) {\n    el = el && query(el);\n    /* istanbul ignore if */\n    if (el === document.body || el === document.documentElement) {\n        process.env.NODE_ENV !== 'production' &&\n            warn$2(\"Do not mount Vue to <html> or <body> - mount to normal elements instead.\");\n        return this;\n    }\n    var options = this.$options;\n    // resolve template/el and convert to render function\n    if (!options.render) {\n        var template = options.template;\n        if (template) {\n            if (typeof template === 'string') {\n                if (template.charAt(0) === '#') {\n                    template = idToTemplate(template);\n                    /* istanbul ignore if */\n                    if (process.env.NODE_ENV !== 'production' && !template) {\n                        warn$2(\"Template element not found or is empty: \".concat(options.template), this);\n                    }\n                }\n            }\n            else if (template.nodeType) {\n                template = template.innerHTML;\n            }\n            else {\n                if (process.env.NODE_ENV !== 'production') {\n                    warn$2('invalid template option:' + template, this);\n                }\n                return this;\n            }\n        }\n        else if (el) {\n            // @ts-expect-error\n            template = getOuterHTML(el);\n        }\n        if (template) {\n            /* istanbul ignore if */\n            if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n                mark('compile');\n            }\n            var _a = compileToFunctions(template, {\n                outputSourceRange: process.env.NODE_ENV !== 'production',\n                shouldDecodeNewlines: shouldDecodeNewlines,\n                shouldDecodeNewlinesForHref: shouldDecodeNewlinesForHref,\n                delimiters: options.delimiters,\n                comments: options.comments\n            }, this), render = _a.render, staticRenderFns = _a.staticRenderFns;\n            options.render = render;\n            options.staticRenderFns = staticRenderFns;\n            /* istanbul ignore if */\n            if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n                mark('compile end');\n                measure(\"vue \".concat(this._name, \" compile\"), 'compile', 'compile end');\n            }\n        }\n    }\n    return mount.call(this, el, hydrating);\n};\n/**\n * Get outerHTML of elements, taking care\n * of SVG elements in IE as well.\n */\nfunction getOuterHTML(el) {\n    if (el.outerHTML) {\n        return el.outerHTML;\n    }\n    else {\n        var container = document.createElement('div');\n        container.appendChild(el.cloneNode(true));\n        return container.innerHTML;\n    }\n}\nVue.compile = compileToFunctions;\n\nexport { EffectScope, computed, customRef, Vue as default, defineAsyncComponent, defineComponent, del, effectScope, getCurrentInstance, getCurrentScope, h, inject, isProxy, isReactive, isReadonly, isRef, isShallow, markRaw, mergeDefaults, nextTick, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onScopeDispose, onServerPrefetch, onUnmounted, onUpdated, provide, proxyRefs, reactive, readonly, ref$1 as ref, set, shallowReactive, shallowReadonly, shallowRef, toRaw, toRef, toRefs, triggerRef, unref, useAttrs, useCssModule, useCssVars, useListeners, useSlots, version, watch, watchEffect, watchPostEffect, watchSyncEffect };\n", "import Vue from 'vue';\nimport VueRouter from 'vue-router';\n\nVue.use(VueRouter);\n\n// ESBuild does not work properly with dynamic components\nimport Main from '../webapp/pages/Main.vue';\nimport Index from '../webapp/components/Index.vue';\nimport Dataset from '../webapp/components/Dataset.vue';\nimport Visualizations from '../webapp/pages/Visualizations.vue';\n// const Main = () => import('../webapp/pages/Main.vue');\n// const Index = () => import('../webapp/components/Index.vue');\n// const Dataset = () => import('../webapp/components/Dataset.vue');\n// const Visualizations = () => import('../webapp/pages/Visualizations.vue');\n\nexport const tabs = ['resumen', 'editor', 'consultas', 'visualizaciones', 'descarga', 'mapa']\nexport const ROUTE_NAMES = {\n  Visualizations: 'Visualizations',\n  Index: 'Index',\n  Dataset: 'Dataset',\n  Query: 'Query',\n  Visualization: 'Visualization',\n  Map: 'Map',\n}\n\n// https://router.vuejs.org/guide/essentials/nested-routes.html\nexport const router = new VueRouter({\n  mode: 'history',\n  routes: [\n    {\n      path: '/datos/v/visualizaciones',\n      component: Visualizations,\n      name: ROUTE_NAMES.Visualizations\n    },\n    {\n      path: '/datos/',\n      alias: \"/\",\n      component: Main,\n      children: [\n        {\n          path: '',\n          name: ROUTE_NAMES.Index,\n          component: Index\n        },\n        {\n          path: ':id/:tab?',\n          component: Dataset,\n          name: ROUTE_NAMES.Dataset,\n          // send props as a function, default to tab[0], otherwise take the index\n          props: ({ params: { tab = tabs[0] } }) => ({\n            activeDatasetTab: tabs.indexOf(tab)\n          })\n        },\n        {\n          path: ':id/q/:queryId?',\n          component: Dataset,\n          name: ROUTE_NAMES.Query,\n          props: { activeDatasetTab: 1 }\n        },\n        {\n          path: ':id/v/:queryId?',\n          component: Dataset,\n          name: ROUTE_NAMES.Visualization,\n          props: { activeDatasetTab: 3 }\n        }\n      ]\n    }\n    ],\n    scrollBehavior() {\n      const element = document.getElementById('gobierto-datos-app');\n      const elementBounding = element.getBoundingClientRect();\n      const { y } = elementBounding\n      if (window.pageYOffset > (y + window.scrollY)) {\n        window.scrollTo({\n          top: element.offsetTop,\n          behavior: 'smooth'\n        });\n      }\n    }\n  });\n", "/*!\n  * vue-router v3.6.5\n  * (c) 2022 Evan You\n  * @license MIT\n  */\n/*  */\n\nfunction assert (condition, message) {\n  if (!condition) {\n    throw new Error((\"[vue-router] \" + message))\n  }\n}\n\nfunction warn (condition, message) {\n  if (!condition) {\n    typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n  }\n}\n\nfunction extend (a, b) {\n  for (var key in b) {\n    a[key] = b[key];\n  }\n  return a\n}\n\n/*  */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n    .replace(encodeReserveRE, encodeReserveReplacer)\n    .replace(commaRE, ','); };\n\nfunction decode (str) {\n  try {\n    return decodeURIComponent(str)\n  } catch (err) {\n    if (process.env.NODE_ENV !== 'production') {\n      warn(false, (\"Error decoding \\\"\" + str + \"\\\". Leaving it intact.\"));\n    }\n  }\n  return str\n}\n\nfunction resolveQuery (\n  query,\n  extraQuery,\n  _parseQuery\n) {\n  if ( extraQuery === void 0 ) extraQuery = {};\n\n  var parse = _parseQuery || parseQuery;\n  var parsedQuery;\n  try {\n    parsedQuery = parse(query || '');\n  } catch (e) {\n    process.env.NODE_ENV !== 'production' && warn(false, e.message);\n    parsedQuery = {};\n  }\n  for (var key in extraQuery) {\n    var value = extraQuery[key];\n    parsedQuery[key] = Array.isArray(value)\n      ? value.map(castQueryParamValue)\n      : castQueryParamValue(value);\n  }\n  return parsedQuery\n}\n\nvar castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); };\n\nfunction parseQuery (query) {\n  var res = {};\n\n  query = query.trim().replace(/^(\\?|#|&)/, '');\n\n  if (!query) {\n    return res\n  }\n\n  query.split('&').forEach(function (param) {\n    var parts = param.replace(/\\+/g, ' ').split('=');\n    var key = decode(parts.shift());\n    var val = parts.length > 0 ? decode(parts.join('=')) : null;\n\n    if (res[key] === undefined) {\n      res[key] = val;\n    } else if (Array.isArray(res[key])) {\n      res[key].push(val);\n    } else {\n      res[key] = [res[key], val];\n    }\n  });\n\n  return res\n}\n\nfunction stringifyQuery (obj) {\n  var res = obj\n    ? Object.keys(obj)\n      .map(function (key) {\n        var val = obj[key];\n\n        if (val === undefined) {\n          return ''\n        }\n\n        if (val === null) {\n          return encode(key)\n        }\n\n        if (Array.isArray(val)) {\n          var result = [];\n          val.forEach(function (val2) {\n            if (val2 === undefined) {\n              return\n            }\n            if (val2 === null) {\n              result.push(encode(key));\n            } else {\n              result.push(encode(key) + '=' + encode(val2));\n            }\n          });\n          return result.join('&')\n        }\n\n        return encode(key) + '=' + encode(val)\n      })\n      .filter(function (x) { return x.length > 0; })\n      .join('&')\n    : null;\n  return res ? (\"?\" + res) : ''\n}\n\n/*  */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n  record,\n  location,\n  redirectedFrom,\n  router\n) {\n  var stringifyQuery = router && router.options.stringifyQuery;\n\n  var query = location.query || {};\n  try {\n    query = clone(query);\n  } catch (e) {}\n\n  var route = {\n    name: location.name || (record && record.name),\n    meta: (record && record.meta) || {},\n    path: location.path || '/',\n    hash: location.hash || '',\n    query: query,\n    params: location.params || {},\n    fullPath: getFullPath(location, stringifyQuery),\n    matched: record ? formatMatch(record) : []\n  };\n  if (redirectedFrom) {\n    route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n  }\n  return Object.freeze(route)\n}\n\nfunction clone (value) {\n  if (Array.isArray(value)) {\n    return value.map(clone)\n  } else if (value && typeof value === 'object') {\n    var res = {};\n    for (var key in value) {\n      res[key] = clone(value[key]);\n    }\n    return res\n  } else {\n    return value\n  }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n  path: '/'\n});\n\nfunction formatMatch (record) {\n  var res = [];\n  while (record) {\n    res.unshift(record);\n    record = record.parent;\n  }\n  return res\n}\n\nfunction getFullPath (\n  ref,\n  _stringifyQuery\n) {\n  var path = ref.path;\n  var query = ref.query; if ( query === void 0 ) query = {};\n  var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n  var stringify = _stringifyQuery || stringifyQuery;\n  return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b, onlyPath) {\n  if (b === START) {\n    return a === b\n  } else if (!b) {\n    return false\n  } else if (a.path && b.path) {\n    return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath ||\n      a.hash === b.hash &&\n      isObjectEqual(a.query, b.query))\n  } else if (a.name && b.name) {\n    return (\n      a.name === b.name &&\n      (onlyPath || (\n        a.hash === b.hash &&\n      isObjectEqual(a.query, b.query) &&\n      isObjectEqual(a.params, b.params))\n      )\n    )\n  } else {\n    return false\n  }\n}\n\nfunction isObjectEqual (a, b) {\n  if ( a === void 0 ) a = {};\n  if ( b === void 0 ) b = {};\n\n  // handle null value #1566\n  if (!a || !b) { return a === b }\n  var aKeys = Object.keys(a).sort();\n  var bKeys = Object.keys(b).sort();\n  if (aKeys.length !== bKeys.length) {\n    return false\n  }\n  return aKeys.every(function (key, i) {\n    var aVal = a[key];\n    var bKey = bKeys[i];\n    if (bKey !== key) { return false }\n    var bVal = b[key];\n    // query values can be null and undefined\n    if (aVal == null || bVal == null) { return aVal === bVal }\n    // check nested equality\n    if (typeof aVal === 'object' && typeof bVal === 'object') {\n      return isObjectEqual(aVal, bVal)\n    }\n    return String(aVal) === String(bVal)\n  })\n}\n\nfunction isIncludedRoute (current, target) {\n  return (\n    current.path.replace(trailingSlashRE, '/').indexOf(\n      target.path.replace(trailingSlashRE, '/')\n    ) === 0 &&\n    (!target.hash || current.hash === target.hash) &&\n    queryIncludes(current.query, target.query)\n  )\n}\n\nfunction queryIncludes (current, target) {\n  for (var key in target) {\n    if (!(key in current)) {\n      return false\n    }\n  }\n  return true\n}\n\nfunction handleRouteEntered (route) {\n  for (var i = 0; i < route.matched.length; i++) {\n    var record = route.matched[i];\n    for (var name in record.instances) {\n      var instance = record.instances[name];\n      var cbs = record.enteredCbs[name];\n      if (!instance || !cbs) { continue }\n      delete record.enteredCbs[name];\n      for (var i$1 = 0; i$1 < cbs.length; i$1++) {\n        if (!instance._isBeingDestroyed) { cbs[i$1](instance); }\n      }\n    }\n  }\n}\n\nvar View = {\n  name: 'RouterView',\n  functional: true,\n  props: {\n    name: {\n      type: String,\n      default: 'default'\n    }\n  },\n  render: function render (_, ref) {\n    var props = ref.props;\n    var children = ref.children;\n    var parent = ref.parent;\n    var data = ref.data;\n\n    // used by devtools to display a router-view badge\n    data.routerView = true;\n\n    // directly use parent context's createElement() function\n    // so that components rendered by router-view can resolve named slots\n    var h = parent.$createElement;\n    var name = props.name;\n    var route = parent.$route;\n    var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n    // determine current view depth, also check to see if the tree\n    // has been toggled inactive but kept-alive.\n    var depth = 0;\n    var inactive = false;\n    while (parent && parent._routerRoot !== parent) {\n      var vnodeData = parent.$vnode ? parent.$vnode.data : {};\n      if (vnodeData.routerView) {\n        depth++;\n      }\n      if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n        inactive = true;\n      }\n      parent = parent.$parent;\n    }\n    data.routerViewDepth = depth;\n\n    // render previous view if the tree is inactive and kept-alive\n    if (inactive) {\n      var cachedData = cache[name];\n      var cachedComponent = cachedData && cachedData.component;\n      if (cachedComponent) {\n        // #2301\n        // pass props\n        if (cachedData.configProps) {\n          fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n        }\n        return h(cachedComponent, data, children)\n      } else {\n        // render previous empty view\n        return h()\n      }\n    }\n\n    var matched = route.matched[depth];\n    var component = matched && matched.components[name];\n\n    // render empty node if no matched route or no config component\n    if (!matched || !component) {\n      cache[name] = null;\n      return h()\n    }\n\n    // cache component\n    cache[name] = { component: component };\n\n    // attach instance registration hook\n    // this will be called in the instance's injected lifecycle hooks\n    data.registerRouteInstance = function (vm, val) {\n      // val could be undefined for unregistration\n      var current = matched.instances[name];\n      if (\n        (val && current !== vm) ||\n        (!val && current === vm)\n      ) {\n        matched.instances[name] = val;\n      }\n    }\n\n    // also register instance in prepatch hook\n    // in case the same component instance is reused across different routes\n    ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n      matched.instances[name] = vnode.componentInstance;\n    };\n\n    // register instance in init hook\n    // in case kept-alive component be actived when routes changed\n    data.hook.init = function (vnode) {\n      if (vnode.data.keepAlive &&\n        vnode.componentInstance &&\n        vnode.componentInstance !== matched.instances[name]\n      ) {\n        matched.instances[name] = vnode.componentInstance;\n      }\n\n      // if the route transition has already been confirmed then we weren't\n      // able to call the cbs during confirmation as the component was not\n      // registered yet, so we call it here.\n      handleRouteEntered(route);\n    };\n\n    var configProps = matched.props && matched.props[name];\n    // save route and configProps in cache\n    if (configProps) {\n      extend(cache[name], {\n        route: route,\n        configProps: configProps\n      });\n      fillPropsinData(component, data, route, configProps);\n    }\n\n    return h(component, data, children)\n  }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n  // resolve props\n  var propsToPass = data.props = resolveProps(route, configProps);\n  if (propsToPass) {\n    // clone to prevent mutation\n    propsToPass = data.props = extend({}, propsToPass);\n    // pass non-declared props as attrs\n    var attrs = data.attrs = data.attrs || {};\n    for (var key in propsToPass) {\n      if (!component.props || !(key in component.props)) {\n        attrs[key] = propsToPass[key];\n        delete propsToPass[key];\n      }\n    }\n  }\n}\n\nfunction resolveProps (route, config) {\n  switch (typeof config) {\n    case 'undefined':\n      return\n    case 'object':\n      return config\n    case 'function':\n      return config(route)\n    case 'boolean':\n      return config ? route.params : undefined\n    default:\n      if (process.env.NODE_ENV !== 'production') {\n        warn(\n          false,\n          \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n          \"expecting an object, function or boolean.\"\n        );\n      }\n  }\n}\n\n/*  */\n\nfunction resolvePath (\n  relative,\n  base,\n  append\n) {\n  var firstChar = relative.charAt(0);\n  if (firstChar === '/') {\n    return relative\n  }\n\n  if (firstChar === '?' || firstChar === '#') {\n    return base + relative\n  }\n\n  var stack = base.split('/');\n\n  // remove trailing segment if:\n  // - not appending\n  // - appending to trailing slash (last segment is empty)\n  if (!append || !stack[stack.length - 1]) {\n    stack.pop();\n  }\n\n  // resolve relative path\n  var segments = relative.replace(/^\\//, '').split('/');\n  for (var i = 0; i < segments.length; i++) {\n    var segment = segments[i];\n    if (segment === '..') {\n      stack.pop();\n    } else if (segment !== '.') {\n      stack.push(segment);\n    }\n  }\n\n  // ensure leading slash\n  if (stack[0] !== '') {\n    stack.unshift('');\n  }\n\n  return stack.join('/')\n}\n\nfunction parsePath (path) {\n  var hash = '';\n  var query = '';\n\n  var hashIndex = path.indexOf('#');\n  if (hashIndex >= 0) {\n    hash = path.slice(hashIndex);\n    path = path.slice(0, hashIndex);\n  }\n\n  var queryIndex = path.indexOf('?');\n  if (queryIndex >= 0) {\n    query = path.slice(queryIndex + 1);\n    path = path.slice(0, queryIndex);\n  }\n\n  return {\n    path: path,\n    query: query,\n    hash: hash\n  }\n}\n\nfunction cleanPath (path) {\n  return path.replace(/\\/(?:\\s*\\/)+/g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n  return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n  // Match escaped characters that would otherwise appear in future matches.\n  // This allows the user to escape special characters that won't transform.\n  '(\\\\\\\\.)',\n  // Match Express-style parameters and un-named parameters with a prefix\n  // and optional suffixes. Matches appear as:\n  //\n  // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n  // \"/route(\\\\d+)\"  => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n  // \"/*\"            => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n  '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param  {string}  str\n * @param  {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n  var tokens = [];\n  var key = 0;\n  var index = 0;\n  var path = '';\n  var defaultDelimiter = options && options.delimiter || '/';\n  var res;\n\n  while ((res = PATH_REGEXP.exec(str)) != null) {\n    var m = res[0];\n    var escaped = res[1];\n    var offset = res.index;\n    path += str.slice(index, offset);\n    index = offset + m.length;\n\n    // Ignore already escaped sequences.\n    if (escaped) {\n      path += escaped[1];\n      continue\n    }\n\n    var next = str[index];\n    var prefix = res[2];\n    var name = res[3];\n    var capture = res[4];\n    var group = res[5];\n    var modifier = res[6];\n    var asterisk = res[7];\n\n    // Push the current path onto the tokens.\n    if (path) {\n      tokens.push(path);\n      path = '';\n    }\n\n    var partial = prefix != null && next != null && next !== prefix;\n    var repeat = modifier === '+' || modifier === '*';\n    var optional = modifier === '?' || modifier === '*';\n    var delimiter = res[2] || defaultDelimiter;\n    var pattern = capture || group;\n\n    tokens.push({\n      name: name || key++,\n      prefix: prefix || '',\n      delimiter: delimiter,\n      optional: optional,\n      repeat: repeat,\n      partial: partial,\n      asterisk: !!asterisk,\n      pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n    });\n  }\n\n  // Match any characters still remaining.\n  if (index < str.length) {\n    path += str.substr(index);\n  }\n\n  // If the path exists, push it onto the end.\n  if (path) {\n    tokens.push(path);\n  }\n\n  return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param  {string}             str\n * @param  {Object=}            options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n  return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param  {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n  return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param  {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n  return encodeURI(str).replace(/[?#]/g, function (c) {\n    return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n  })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n  // Compile all the tokens into regexps.\n  var matches = new Array(tokens.length);\n\n  // Compile all the patterns before compilation.\n  for (var i = 0; i < tokens.length; i++) {\n    if (typeof tokens[i] === 'object') {\n      matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n    }\n  }\n\n  return function (obj, opts) {\n    var path = '';\n    var data = obj || {};\n    var options = opts || {};\n    var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n    for (var i = 0; i < tokens.length; i++) {\n      var token = tokens[i];\n\n      if (typeof token === 'string') {\n        path += token;\n\n        continue\n      }\n\n      var value = data[token.name];\n      var segment;\n\n      if (value == null) {\n        if (token.optional) {\n          // Prepend partial segment prefixes.\n          if (token.partial) {\n            path += token.prefix;\n          }\n\n          continue\n        } else {\n          throw new TypeError('Expected \"' + token.name + '\" to be defined')\n        }\n      }\n\n      if (isarray(value)) {\n        if (!token.repeat) {\n          throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n        }\n\n        if (value.length === 0) {\n          if (token.optional) {\n            continue\n          } else {\n            throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n          }\n        }\n\n        for (var j = 0; j < value.length; j++) {\n          segment = encode(value[j]);\n\n          if (!matches[i].test(segment)) {\n            throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n          }\n\n          path += (j === 0 ? token.prefix : token.delimiter) + segment;\n        }\n\n        continue\n      }\n\n      segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n      if (!matches[i].test(segment)) {\n        throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n      }\n\n      path += token.prefix + segment;\n    }\n\n    return path\n  }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param  {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n  return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param  {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n  return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param  {!RegExp} re\n * @param  {Array}   keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n  re.keys = keys;\n  return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param  {Object} options\n * @return {string}\n */\nfunction flags (options) {\n  return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param  {!RegExp} path\n * @param  {!Array}  keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n  // Use a negative lookahead to match only capturing groups.\n  var groups = path.source.match(/\\((?!\\?)/g);\n\n  if (groups) {\n    for (var i = 0; i < groups.length; i++) {\n      keys.push({\n        name: i,\n        prefix: null,\n        delimiter: null,\n        optional: false,\n        repeat: false,\n        partial: false,\n        asterisk: false,\n        pattern: null\n      });\n    }\n  }\n\n  return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param  {!Array}  path\n * @param  {Array}   keys\n * @param  {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n  var parts = [];\n\n  for (var i = 0; i < path.length; i++) {\n    parts.push(pathToRegexp(path[i], keys, options).source);\n  }\n\n  var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n  return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param  {string}  path\n * @param  {!Array}  keys\n * @param  {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n  return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param  {!Array}          tokens\n * @param  {(Array|Object)=} keys\n * @param  {Object=}         options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n  if (!isarray(keys)) {\n    options = /** @type {!Object} */ (keys || options);\n    keys = [];\n  }\n\n  options = options || {};\n\n  var strict = options.strict;\n  var end = options.end !== false;\n  var route = '';\n\n  // Iterate over the tokens and create our regexp string.\n  for (var i = 0; i < tokens.length; i++) {\n    var token = tokens[i];\n\n    if (typeof token === 'string') {\n      route += escapeString(token);\n    } else {\n      var prefix = escapeString(token.prefix);\n      var capture = '(?:' + token.pattern + ')';\n\n      keys.push(token);\n\n      if (token.repeat) {\n        capture += '(?:' + prefix + capture + ')*';\n      }\n\n      if (token.optional) {\n        if (!token.partial) {\n          capture = '(?:' + prefix + '(' + capture + '))?';\n        } else {\n          capture = prefix + '(' + capture + ')?';\n        }\n      } else {\n        capture = prefix + '(' + capture + ')';\n      }\n\n      route += capture;\n    }\n  }\n\n  var delimiter = escapeString(options.delimiter || '/');\n  var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n  // In non-strict mode we allow a slash at the end of match. If the path to\n  // match already ends with a slash, we remove it for consistency. The slash\n  // is valid at the end of a path match, not in the middle. This is important\n  // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n  if (!strict) {\n    route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n  }\n\n  if (end) {\n    route += '$';\n  } else {\n    // In non-ending mode, we need the capturing groups to match as much as\n    // possible by using a positive lookahead to the end or next path segment.\n    route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n  }\n\n  return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param  {(string|RegExp|Array)} path\n * @param  {(Array|Object)=}       keys\n * @param  {Object=}               options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n  if (!isarray(keys)) {\n    options = /** @type {!Object} */ (keys || options);\n    keys = [];\n  }\n\n  options = options || {};\n\n  if (path instanceof RegExp) {\n    return regexpToRegexp(path, /** @type {!Array} */ (keys))\n  }\n\n  if (isarray(path)) {\n    return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n  }\n\n  return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/*  */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n  path,\n  params,\n  routeMsg\n) {\n  params = params || {};\n  try {\n    var filler =\n      regexpCompileCache[path] ||\n      (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n    // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n    // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n    if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }\n\n    return filler(params, { pretty: true })\n  } catch (e) {\n    if (process.env.NODE_ENV !== 'production') {\n      // Fix #3072 no warn if `pathMatch` is string\n      warn(typeof params.pathMatch === 'string', (\"missing param for \" + routeMsg + \": \" + (e.message)));\n    }\n    return ''\n  } finally {\n    // delete the 0 if it was added\n    delete params[0];\n  }\n}\n\n/*  */\n\nfunction normalizeLocation (\n  raw,\n  current,\n  append,\n  router\n) {\n  var next = typeof raw === 'string' ? { path: raw } : raw;\n  // named target\n  if (next._normalized) {\n    return next\n  } else if (next.name) {\n    next = extend({}, raw);\n    var params = next.params;\n    if (params && typeof params === 'object') {\n      next.params = extend({}, params);\n    }\n    return next\n  }\n\n  // relative params\n  if (!next.path && next.params && current) {\n    next = extend({}, next);\n    next._normalized = true;\n    var params$1 = extend(extend({}, current.params), next.params);\n    if (current.name) {\n      next.name = current.name;\n      next.params = params$1;\n    } else if (current.matched.length) {\n      var rawPath = current.matched[current.matched.length - 1].path;\n      next.path = fillParams(rawPath, params$1, (\"path \" + (current.path)));\n    } else if (process.env.NODE_ENV !== 'production') {\n      warn(false, \"relative params navigation requires a current route.\");\n    }\n    return next\n  }\n\n  var parsedPath = parsePath(next.path || '');\n  var basePath = (current && current.path) || '/';\n  var path = parsedPath.path\n    ? resolvePath(parsedPath.path, basePath, append || next.append)\n    : basePath;\n\n  var query = resolveQuery(\n    parsedPath.query,\n    next.query,\n    router && router.options.parseQuery\n  );\n\n  var hash = next.hash || parsedPath.hash;\n  if (hash && hash.charAt(0) !== '#') {\n    hash = \"#\" + hash;\n  }\n\n  return {\n    _normalized: true,\n    path: path,\n    query: query,\n    hash: hash\n  }\n}\n\n/*  */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar warnedCustomSlot;\nvar warnedTagProp;\nvar warnedEventProp;\n\nvar Link = {\n  name: 'RouterLink',\n  props: {\n    to: {\n      type: toTypes,\n      required: true\n    },\n    tag: {\n      type: String,\n      default: 'a'\n    },\n    custom: Boolean,\n    exact: Boolean,\n    exactPath: Boolean,\n    append: Boolean,\n    replace: Boolean,\n    activeClass: String,\n    exactActiveClass: String,\n    ariaCurrentValue: {\n      type: String,\n      default: 'page'\n    },\n    event: {\n      type: eventTypes,\n      default: 'click'\n    }\n  },\n  render: function render (h) {\n    var this$1$1 = this;\n\n    var router = this.$router;\n    var current = this.$route;\n    var ref = router.resolve(\n      this.to,\n      current,\n      this.append\n    );\n    var location = ref.location;\n    var route = ref.route;\n    var href = ref.href;\n\n    var classes = {};\n    var globalActiveClass = router.options.linkActiveClass;\n    var globalExactActiveClass = router.options.linkExactActiveClass;\n    // Support global empty active class\n    var activeClassFallback =\n      globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n    var exactActiveClassFallback =\n      globalExactActiveClass == null\n        ? 'router-link-exact-active'\n        : globalExactActiveClass;\n    var activeClass =\n      this.activeClass == null ? activeClassFallback : this.activeClass;\n    var exactActiveClass =\n      this.exactActiveClass == null\n        ? exactActiveClassFallback\n        : this.exactActiveClass;\n\n    var compareTarget = route.redirectedFrom\n      ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n      : route;\n\n    classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath);\n    classes[activeClass] = this.exact || this.exactPath\n      ? classes[exactActiveClass]\n      : isIncludedRoute(current, compareTarget);\n\n    var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n    var handler = function (e) {\n      if (guardEvent(e)) {\n        if (this$1$1.replace) {\n          router.replace(location, noop);\n        } else {\n          router.push(location, noop);\n        }\n      }\n    };\n\n    var on = { click: guardEvent };\n    if (Array.isArray(this.event)) {\n      this.event.forEach(function (e) {\n        on[e] = handler;\n      });\n    } else {\n      on[this.event] = handler;\n    }\n\n    var data = { class: classes };\n\n    var scopedSlot =\n      !this.$scopedSlots.$hasNormal &&\n      this.$scopedSlots.default &&\n      this.$scopedSlots.default({\n        href: href,\n        route: route,\n        navigate: handler,\n        isActive: classes[activeClass],\n        isExactActive: classes[exactActiveClass]\n      });\n\n    if (scopedSlot) {\n      if (process.env.NODE_ENV !== 'production' && !this.custom) {\n        !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an <a> element. Use the custom prop to remove this warning:\\n<router-link v-slot=\"{ navigate, href }\" custom></router-link>\\n');\n        warnedCustomSlot = true;\n      }\n      if (scopedSlot.length === 1) {\n        return scopedSlot[0]\n      } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n        if (process.env.NODE_ENV !== 'production') {\n          warn(\n            false,\n            (\"<router-link> with to=\\\"\" + (this.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\")\n          );\n        }\n        return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n      }\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      if ('tag' in this.$options.propsData && !warnedTagProp) {\n        warn(\n          false,\n          \"<router-link>'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n        );\n        warnedTagProp = true;\n      }\n      if ('event' in this.$options.propsData && !warnedEventProp) {\n        warn(\n          false,\n          \"<router-link>'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n        );\n        warnedEventProp = true;\n      }\n    }\n\n    if (this.tag === 'a') {\n      data.on = on;\n      data.attrs = { href: href, 'aria-current': ariaCurrentValue };\n    } else {\n      // find the first <a> child and apply listener and href\n      var a = findAnchor(this.$slots.default);\n      if (a) {\n        // in case the <a> is a static node\n        a.isStatic = false;\n        var aData = (a.data = extend({}, a.data));\n        aData.on = aData.on || {};\n        // transform existing events in both objects into arrays so we can push later\n        for (var event in aData.on) {\n          var handler$1 = aData.on[event];\n          if (event in on) {\n            aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n          }\n        }\n        // append new listeners for router-link\n        for (var event$1 in on) {\n          if (event$1 in aData.on) {\n            // on[event] is always a function\n            aData.on[event$1].push(on[event$1]);\n          } else {\n            aData.on[event$1] = handler;\n          }\n        }\n\n        var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n        aAttrs.href = href;\n        aAttrs['aria-current'] = ariaCurrentValue;\n      } else {\n        // doesn't have <a> child, apply listener to self\n        data.on = on;\n      }\n    }\n\n    return h(this.tag, data, this.$slots.default)\n  }\n};\n\nfunction guardEvent (e) {\n  // don't redirect with control keys\n  if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n  // don't redirect when preventDefault called\n  if (e.defaultPrevented) { return }\n  // don't redirect on right click\n  if (e.button !== undefined && e.button !== 0) { return }\n  // don't redirect if `target=\"_blank\"`\n  if (e.currentTarget && e.currentTarget.getAttribute) {\n    var target = e.currentTarget.getAttribute('target');\n    if (/\\b_blank\\b/i.test(target)) { return }\n  }\n  // this may be a Weex event which doesn't have this method\n  if (e.preventDefault) {\n    e.preventDefault();\n  }\n  return true\n}\n\nfunction findAnchor (children) {\n  if (children) {\n    var child;\n    for (var i = 0; i < children.length; i++) {\n      child = children[i];\n      if (child.tag === 'a') {\n        return child\n      }\n      if (child.children && (child = findAnchor(child.children))) {\n        return child\n      }\n    }\n  }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n  if (install.installed && _Vue === Vue) { return }\n  install.installed = true;\n\n  _Vue = Vue;\n\n  var isDef = function (v) { return v !== undefined; };\n\n  var registerInstance = function (vm, callVal) {\n    var i = vm.$options._parentVnode;\n    if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n      i(vm, callVal);\n    }\n  };\n\n  Vue.mixin({\n    beforeCreate: function beforeCreate () {\n      if (isDef(this.$options.router)) {\n        this._routerRoot = this;\n        this._router = this.$options.router;\n        this._router.init(this);\n        Vue.util.defineReactive(this, '_route', this._router.history.current);\n      } else {\n        this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n      }\n      registerInstance(this, this);\n    },\n    destroyed: function destroyed () {\n      registerInstance(this);\n    }\n  });\n\n  Object.defineProperty(Vue.prototype, '$router', {\n    get: function get () { return this._routerRoot._router }\n  });\n\n  Object.defineProperty(Vue.prototype, '$route', {\n    get: function get () { return this._routerRoot._route }\n  });\n\n  Vue.component('RouterView', View);\n  Vue.component('RouterLink', Link);\n\n  var strats = Vue.config.optionMergeStrategies;\n  // use the same hook merging strategy for route hooks\n  strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/*  */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/*  */\n\nfunction createRouteMap (\n  routes,\n  oldPathList,\n  oldPathMap,\n  oldNameMap,\n  parentRoute\n) {\n  // the path list is used to control path matching priority\n  var pathList = oldPathList || [];\n  // $flow-disable-line\n  var pathMap = oldPathMap || Object.create(null);\n  // $flow-disable-line\n  var nameMap = oldNameMap || Object.create(null);\n\n  routes.forEach(function (route) {\n    addRouteRecord(pathList, pathMap, nameMap, route, parentRoute);\n  });\n\n  // ensure wildcard routes are always at the end\n  for (var i = 0, l = pathList.length; i < l; i++) {\n    if (pathList[i] === '*') {\n      pathList.push(pathList.splice(i, 1)[0]);\n      l--;\n      i--;\n    }\n  }\n\n  if (process.env.NODE_ENV === 'development') {\n    // warn if routes do not include leading slashes\n    var found = pathList\n    // check for missing leading slash\n      .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n    if (found.length > 0) {\n      var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n      warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\n    }\n  }\n\n  return {\n    pathList: pathList,\n    pathMap: pathMap,\n    nameMap: nameMap\n  }\n}\n\nfunction addRouteRecord (\n  pathList,\n  pathMap,\n  nameMap,\n  route,\n  parent,\n  matchAs\n) {\n  var path = route.path;\n  var name = route.name;\n  if (process.env.NODE_ENV !== 'production') {\n    assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n    assert(\n      typeof route.component !== 'string',\n      \"route config \\\"component\\\" for path: \" + (String(\n        path || name\n      )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n    );\n\n    warn(\n      // eslint-disable-next-line no-control-regex\n      !/[^\\u0000-\\u007F]+/.test(path),\n      \"Route with path \\\"\" + path + \"\\\" contains unencoded characters, make sure \" +\n        \"your path is correctly encoded before passing it to the router. Use \" +\n        \"encodeURI to encode static segments of your path.\"\n    );\n  }\n\n  var pathToRegexpOptions =\n    route.pathToRegexpOptions || {};\n  var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n  if (typeof route.caseSensitive === 'boolean') {\n    pathToRegexpOptions.sensitive = route.caseSensitive;\n  }\n\n  var record = {\n    path: normalizedPath,\n    regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n    components: route.components || { default: route.component },\n    alias: route.alias\n      ? typeof route.alias === 'string'\n        ? [route.alias]\n        : route.alias\n      : [],\n    instances: {},\n    enteredCbs: {},\n    name: name,\n    parent: parent,\n    matchAs: matchAs,\n    redirect: route.redirect,\n    beforeEnter: route.beforeEnter,\n    meta: route.meta || {},\n    props:\n      route.props == null\n        ? {}\n        : route.components\n          ? route.props\n          : { default: route.props }\n  };\n\n  if (route.children) {\n    // Warn if route is named, does not redirect and has a default child route.\n    // If users navigate to this route by name, the default child will\n    // not be rendered (GH Issue #629)\n    if (process.env.NODE_ENV !== 'production') {\n      if (\n        route.name &&\n        !route.redirect &&\n        route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n      ) {\n        warn(\n          false,\n          \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n            \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'}\\\"), \" +\n            \"the default child route will not be rendered. Remove the name from \" +\n            \"this route and use the name of the default child route for named \" +\n            \"links instead.\"\n        );\n      }\n    }\n    route.children.forEach(function (child) {\n      var childMatchAs = matchAs\n        ? cleanPath((matchAs + \"/\" + (child.path)))\n        : undefined;\n      addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n    });\n  }\n\n  if (!pathMap[record.path]) {\n    pathList.push(record.path);\n    pathMap[record.path] = record;\n  }\n\n  if (route.alias !== undefined) {\n    var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n    for (var i = 0; i < aliases.length; ++i) {\n      var alias = aliases[i];\n      if (process.env.NODE_ENV !== 'production' && alias === path) {\n        warn(\n          false,\n          (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n        );\n        // skip in dev to make it work\n        continue\n      }\n\n      var aliasRoute = {\n        path: alias,\n        children: route.children\n      };\n      addRouteRecord(\n        pathList,\n        pathMap,\n        nameMap,\n        aliasRoute,\n        parent,\n        record.path || '/' // matchAs\n      );\n    }\n  }\n\n  if (name) {\n    if (!nameMap[name]) {\n      nameMap[name] = record;\n    } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n      warn(\n        false,\n        \"Duplicate named routes definition: \" +\n          \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n      );\n    }\n  }\n}\n\nfunction compileRouteRegex (\n  path,\n  pathToRegexpOptions\n) {\n  var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n  if (process.env.NODE_ENV !== 'production') {\n    var keys = Object.create(null);\n    regex.keys.forEach(function (key) {\n      warn(\n        !keys[key.name],\n        (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n      );\n      keys[key.name] = true;\n    });\n  }\n  return regex\n}\n\nfunction normalizePath (\n  path,\n  parent,\n  strict\n) {\n  if (!strict) { path = path.replace(/\\/$/, ''); }\n  if (path[0] === '/') { return path }\n  if (parent == null) { return path }\n  return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/*  */\n\n\n\nfunction createMatcher (\n  routes,\n  router\n) {\n  var ref = createRouteMap(routes);\n  var pathList = ref.pathList;\n  var pathMap = ref.pathMap;\n  var nameMap = ref.nameMap;\n\n  function addRoutes (routes) {\n    createRouteMap(routes, pathList, pathMap, nameMap);\n  }\n\n  function addRoute (parentOrRoute, route) {\n    var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined;\n    // $flow-disable-line\n    createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent);\n\n    // add aliases of parent\n    if (parent && parent.alias.length) {\n      createRouteMap(\n        // $flow-disable-line route is defined if parent is\n        parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }),\n        pathList,\n        pathMap,\n        nameMap,\n        parent\n      );\n    }\n  }\n\n  function getRoutes () {\n    return pathList.map(function (path) { return pathMap[path]; })\n  }\n\n  function match (\n    raw,\n    currentRoute,\n    redirectedFrom\n  ) {\n    var location = normalizeLocation(raw, currentRoute, false, router);\n    var name = location.name;\n\n    if (name) {\n      var record = nameMap[name];\n      if (process.env.NODE_ENV !== 'production') {\n        warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n      }\n      if (!record) { return _createRoute(null, location) }\n      var paramNames = record.regex.keys\n        .filter(function (key) { return !key.optional; })\n        .map(function (key) { return key.name; });\n\n      if (typeof location.params !== 'object') {\n        location.params = {};\n      }\n\n      if (currentRoute && typeof currentRoute.params === 'object') {\n        for (var key in currentRoute.params) {\n          if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n            location.params[key] = currentRoute.params[key];\n          }\n        }\n      }\n\n      location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n      return _createRoute(record, location, redirectedFrom)\n    } else if (location.path) {\n      location.params = {};\n      for (var i = 0; i < pathList.length; i++) {\n        var path = pathList[i];\n        var record$1 = pathMap[path];\n        if (matchRoute(record$1.regex, location.path, location.params)) {\n          return _createRoute(record$1, location, redirectedFrom)\n        }\n      }\n    }\n    // no match\n    return _createRoute(null, location)\n  }\n\n  function redirect (\n    record,\n    location\n  ) {\n    var originalRedirect = record.redirect;\n    var redirect = typeof originalRedirect === 'function'\n      ? originalRedirect(createRoute(record, location, null, router))\n      : originalRedirect;\n\n    if (typeof redirect === 'string') {\n      redirect = { path: redirect };\n    }\n\n    if (!redirect || typeof redirect !== 'object') {\n      if (process.env.NODE_ENV !== 'production') {\n        warn(\n          false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n        );\n      }\n      return _createRoute(null, location)\n    }\n\n    var re = redirect;\n    var name = re.name;\n    var path = re.path;\n    var query = location.query;\n    var hash = location.hash;\n    var params = location.params;\n    query = re.hasOwnProperty('query') ? re.query : query;\n    hash = re.hasOwnProperty('hash') ? re.hash : hash;\n    params = re.hasOwnProperty('params') ? re.params : params;\n\n    if (name) {\n      // resolved named direct\n      var targetRecord = nameMap[name];\n      if (process.env.NODE_ENV !== 'production') {\n        assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n      }\n      return match({\n        _normalized: true,\n        name: name,\n        query: query,\n        hash: hash,\n        params: params\n      }, undefined, location)\n    } else if (path) {\n      // 1. resolve relative redirect\n      var rawPath = resolveRecordPath(path, record);\n      // 2. resolve params\n      var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n      // 3. rematch with existing query and hash\n      return match({\n        _normalized: true,\n        path: resolvedPath,\n        query: query,\n        hash: hash\n      }, undefined, location)\n    } else {\n      if (process.env.NODE_ENV !== 'production') {\n        warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n      }\n      return _createRoute(null, location)\n    }\n  }\n\n  function alias (\n    record,\n    location,\n    matchAs\n  ) {\n    var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n    var aliasedMatch = match({\n      _normalized: true,\n      path: aliasedPath\n    });\n    if (aliasedMatch) {\n      var matched = aliasedMatch.matched;\n      var aliasedRecord = matched[matched.length - 1];\n      location.params = aliasedMatch.params;\n      return _createRoute(aliasedRecord, location)\n    }\n    return _createRoute(null, location)\n  }\n\n  function _createRoute (\n    record,\n    location,\n    redirectedFrom\n  ) {\n    if (record && record.redirect) {\n      return redirect(record, redirectedFrom || location)\n    }\n    if (record && record.matchAs) {\n      return alias(record, location, record.matchAs)\n    }\n    return createRoute(record, location, redirectedFrom, router)\n  }\n\n  return {\n    match: match,\n    addRoute: addRoute,\n    getRoutes: getRoutes,\n    addRoutes: addRoutes\n  }\n}\n\nfunction matchRoute (\n  regex,\n  path,\n  params\n) {\n  var m = path.match(regex);\n\n  if (!m) {\n    return false\n  } else if (!params) {\n    return true\n  }\n\n  for (var i = 1, len = m.length; i < len; ++i) {\n    var key = regex.keys[i - 1];\n    if (key) {\n      // Fix #1994: using * with props: true generates a param named 0\n      params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];\n    }\n  }\n\n  return true\n}\n\nfunction resolveRecordPath (path, record) {\n  return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/*  */\n\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n  inBrowser && window.performance && window.performance.now\n    ? window.performance\n    : Date;\n\nfunction genStateKey () {\n  return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n  return _key\n}\n\nfunction setStateKey (key) {\n  return (_key = key)\n}\n\n/*  */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n  // Prevent browser scroll behavior on History popstate\n  if ('scrollRestoration' in window.history) {\n    window.history.scrollRestoration = 'manual';\n  }\n  // Fix for #1585 for Firefox\n  // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n  // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n  // window.location.protocol + '//' + window.location.host\n  // location.host contains the port and location.hostname doesn't\n  var protocolAndPath = window.location.protocol + '//' + window.location.host;\n  var absolutePath = window.location.href.replace(protocolAndPath, '');\n  // preserve existing history state as it could be overriden by the user\n  var stateCopy = extend({}, window.history.state);\n  stateCopy.key = getStateKey();\n  window.history.replaceState(stateCopy, '', absolutePath);\n  window.addEventListener('popstate', handlePopState);\n  return function () {\n    window.removeEventListener('popstate', handlePopState);\n  }\n}\n\nfunction handleScroll (\n  router,\n  to,\n  from,\n  isPop\n) {\n  if (!router.app) {\n    return\n  }\n\n  var behavior = router.options.scrollBehavior;\n  if (!behavior) {\n    return\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n  }\n\n  // wait until re-render finishes before scrolling\n  router.app.$nextTick(function () {\n    var position = getScrollPosition();\n    var shouldScroll = behavior.call(\n      router,\n      to,\n      from,\n      isPop ? position : null\n    );\n\n    if (!shouldScroll) {\n      return\n    }\n\n    if (typeof shouldScroll.then === 'function') {\n      shouldScroll\n        .then(function (shouldScroll) {\n          scrollToPosition((shouldScroll), position);\n        })\n        .catch(function (err) {\n          if (process.env.NODE_ENV !== 'production') {\n            assert(false, err.toString());\n          }\n        });\n    } else {\n      scrollToPosition(shouldScroll, position);\n    }\n  });\n}\n\nfunction saveScrollPosition () {\n  var key = getStateKey();\n  if (key) {\n    positionStore[key] = {\n      x: window.pageXOffset,\n      y: window.pageYOffset\n    };\n  }\n}\n\nfunction handlePopState (e) {\n  saveScrollPosition();\n  if (e.state && e.state.key) {\n    setStateKey(e.state.key);\n  }\n}\n\nfunction getScrollPosition () {\n  var key = getStateKey();\n  if (key) {\n    return positionStore[key]\n  }\n}\n\nfunction getElementPosition (el, offset) {\n  var docEl = document.documentElement;\n  var docRect = docEl.getBoundingClientRect();\n  var elRect = el.getBoundingClientRect();\n  return {\n    x: elRect.left - docRect.left - offset.x,\n    y: elRect.top - docRect.top - offset.y\n  }\n}\n\nfunction isValidPosition (obj) {\n  return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n  return {\n    x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n    y: isNumber(obj.y) ? obj.y : window.pageYOffset\n  }\n}\n\nfunction normalizeOffset (obj) {\n  return {\n    x: isNumber(obj.x) ? obj.x : 0,\n    y: isNumber(obj.y) ? obj.y : 0\n  }\n}\n\nfunction isNumber (v) {\n  return typeof v === 'number'\n}\n\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n  var isObject = typeof shouldScroll === 'object';\n  if (isObject && typeof shouldScroll.selector === 'string') {\n    // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n    // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n    var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n      ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n      : document.querySelector(shouldScroll.selector);\n\n    if (el) {\n      var offset =\n        shouldScroll.offset && typeof shouldScroll.offset === 'object'\n          ? shouldScroll.offset\n          : {};\n      offset = normalizeOffset(offset);\n      position = getElementPosition(el, offset);\n    } else if (isValidPosition(shouldScroll)) {\n      position = normalizePosition(shouldScroll);\n    }\n  } else if (isObject && isValidPosition(shouldScroll)) {\n    position = normalizePosition(shouldScroll);\n  }\n\n  if (position) {\n    // $flow-disable-line\n    if ('scrollBehavior' in document.documentElement.style) {\n      window.scrollTo({\n        left: position.x,\n        top: position.y,\n        // $flow-disable-line\n        behavior: shouldScroll.behavior\n      });\n    } else {\n      window.scrollTo(position.x, position.y);\n    }\n  }\n}\n\n/*  */\n\nvar supportsPushState =\n  inBrowser &&\n  (function () {\n    var ua = window.navigator.userAgent;\n\n    if (\n      (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n      ua.indexOf('Mobile Safari') !== -1 &&\n      ua.indexOf('Chrome') === -1 &&\n      ua.indexOf('Windows Phone') === -1\n    ) {\n      return false\n    }\n\n    return window.history && typeof window.history.pushState === 'function'\n  })();\n\nfunction pushState (url, replace) {\n  saveScrollPosition();\n  // try...catch the pushState call to get around Safari\n  // DOM Exception 18 where it limits to 100 pushState calls\n  var history = window.history;\n  try {\n    if (replace) {\n      // preserve existing history state as it could be overriden by the user\n      var stateCopy = extend({}, history.state);\n      stateCopy.key = getStateKey();\n      history.replaceState(stateCopy, '', url);\n    } else {\n      history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n    }\n  } catch (e) {\n    window.location[replace ? 'replace' : 'assign'](url);\n  }\n}\n\nfunction replaceState (url) {\n  pushState(url, true);\n}\n\n// When changing thing, also edit router.d.ts\nvar NavigationFailureType = {\n  redirected: 2,\n  aborted: 4,\n  cancelled: 8,\n  duplicated: 16\n};\n\nfunction createNavigationRedirectedError (from, to) {\n  return createRouterError(\n    from,\n    to,\n    NavigationFailureType.redirected,\n    (\"Redirected when going from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (stringifyRoute(\n      to\n    )) + \"\\\" via a navigation guard.\")\n  )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n  var error = createRouterError(\n    from,\n    to,\n    NavigationFailureType.duplicated,\n    (\"Avoided redundant navigation to current location: \\\"\" + (from.fullPath) + \"\\\".\")\n  );\n  // backwards compatible with the first introduction of Errors\n  error.name = 'NavigationDuplicated';\n  return error\n}\n\nfunction createNavigationCancelledError (from, to) {\n  return createRouterError(\n    from,\n    to,\n    NavigationFailureType.cancelled,\n    (\"Navigation cancelled from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" with a new navigation.\")\n  )\n}\n\nfunction createNavigationAbortedError (from, to) {\n  return createRouterError(\n    from,\n    to,\n    NavigationFailureType.aborted,\n    (\"Navigation aborted from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" via a navigation guard.\")\n  )\n}\n\nfunction createRouterError (from, to, type, message) {\n  var error = new Error(message);\n  error._isRouter = true;\n  error.from = from;\n  error.to = to;\n  error.type = type;\n\n  return error\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n  if (typeof to === 'string') { return to }\n  if ('path' in to) { return to.path }\n  var location = {};\n  propertiesToLog.forEach(function (key) {\n    if (key in to) { location[key] = to[key]; }\n  });\n  return JSON.stringify(location, null, 2)\n}\n\nfunction isError (err) {\n  return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isNavigationFailure (err, errorType) {\n  return (\n    isError(err) &&\n    err._isRouter &&\n    (errorType == null || err.type === errorType)\n  )\n}\n\n/*  */\n\nfunction runQueue (queue, fn, cb) {\n  var step = function (index) {\n    if (index >= queue.length) {\n      cb();\n    } else {\n      if (queue[index]) {\n        fn(queue[index], function () {\n          step(index + 1);\n        });\n      } else {\n        step(index + 1);\n      }\n    }\n  };\n  step(0);\n}\n\n/*  */\n\nfunction resolveAsyncComponents (matched) {\n  return function (to, from, next) {\n    var hasAsync = false;\n    var pending = 0;\n    var error = null;\n\n    flatMapComponents(matched, function (def, _, match, key) {\n      // if it's a function and doesn't have cid attached,\n      // assume it's an async component resolve function.\n      // we are not using Vue's default async resolving mechanism because\n      // we want to halt the navigation until the incoming component has been\n      // resolved.\n      if (typeof def === 'function' && def.cid === undefined) {\n        hasAsync = true;\n        pending++;\n\n        var resolve = once(function (resolvedDef) {\n          if (isESModule(resolvedDef)) {\n            resolvedDef = resolvedDef.default;\n          }\n          // save resolved on async factory in case it's used elsewhere\n          def.resolved = typeof resolvedDef === 'function'\n            ? resolvedDef\n            : _Vue.extend(resolvedDef);\n          match.components[key] = resolvedDef;\n          pending--;\n          if (pending <= 0) {\n            next();\n          }\n        });\n\n        var reject = once(function (reason) {\n          var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n          process.env.NODE_ENV !== 'production' && warn(false, msg);\n          if (!error) {\n            error = isError(reason)\n              ? reason\n              : new Error(msg);\n            next(error);\n          }\n        });\n\n        var res;\n        try {\n          res = def(resolve, reject);\n        } catch (e) {\n          reject(e);\n        }\n        if (res) {\n          if (typeof res.then === 'function') {\n            res.then(resolve, reject);\n          } else {\n            // new syntax in Vue 2.3\n            var comp = res.component;\n            if (comp && typeof comp.then === 'function') {\n              comp.then(resolve, reject);\n            }\n          }\n        }\n      }\n    });\n\n    if (!hasAsync) { next(); }\n  }\n}\n\nfunction flatMapComponents (\n  matched,\n  fn\n) {\n  return flatten(matched.map(function (m) {\n    return Object.keys(m.components).map(function (key) { return fn(\n      m.components[key],\n      m.instances[key],\n      m, key\n    ); })\n  }))\n}\n\nfunction flatten (arr) {\n  return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n  typeof Symbol === 'function' &&\n  typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n  return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n  var called = false;\n  return function () {\n    var args = [], len = arguments.length;\n    while ( len-- ) args[ len ] = arguments[ len ];\n\n    if (called) { return }\n    called = true;\n    return fn.apply(this, args)\n  }\n}\n\n/*  */\n\nvar History = function History (router, base) {\n  this.router = router;\n  this.base = normalizeBase(base);\n  // start with a route object that stands for \"nowhere\"\n  this.current = START;\n  this.pending = null;\n  this.ready = false;\n  this.readyCbs = [];\n  this.readyErrorCbs = [];\n  this.errorCbs = [];\n  this.listeners = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n  this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n  if (this.ready) {\n    cb();\n  } else {\n    this.readyCbs.push(cb);\n    if (errorCb) {\n      this.readyErrorCbs.push(errorCb);\n    }\n  }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n  this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n  location,\n  onComplete,\n  onAbort\n) {\n    var this$1$1 = this;\n\n  var route;\n  // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n  try {\n    route = this.router.match(location, this.current);\n  } catch (e) {\n    this.errorCbs.forEach(function (cb) {\n      cb(e);\n    });\n    // Exception should still be thrown\n    throw e\n  }\n  var prev = this.current;\n  this.confirmTransition(\n    route,\n    function () {\n      this$1$1.updateRoute(route);\n      onComplete && onComplete(route);\n      this$1$1.ensureURL();\n      this$1$1.router.afterHooks.forEach(function (hook) {\n        hook && hook(route, prev);\n      });\n\n      // fire ready cbs once\n      if (!this$1$1.ready) {\n        this$1$1.ready = true;\n        this$1$1.readyCbs.forEach(function (cb) {\n          cb(route);\n        });\n      }\n    },\n    function (err) {\n      if (onAbort) {\n        onAbort(err);\n      }\n      if (err && !this$1$1.ready) {\n        // Initial redirection should not mark the history as ready yet\n        // because it's triggered by the redirection instead\n        // https://github.com/vuejs/vue-router/issues/3225\n        // https://github.com/vuejs/vue-router/issues/3331\n        if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n          this$1$1.ready = true;\n          this$1$1.readyErrorCbs.forEach(function (cb) {\n            cb(err);\n          });\n        }\n      }\n    }\n  );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n    var this$1$1 = this;\n\n  var current = this.current;\n  this.pending = route;\n  var abort = function (err) {\n    // changed after adding errors with\n    // https://github.com/vuejs/vue-router/pull/3047 before that change,\n    // redirect and aborted navigation would produce an err == null\n    if (!isNavigationFailure(err) && isError(err)) {\n      if (this$1$1.errorCbs.length) {\n        this$1$1.errorCbs.forEach(function (cb) {\n          cb(err);\n        });\n      } else {\n        if (process.env.NODE_ENV !== 'production') {\n          warn(false, 'uncaught error during route navigation:');\n        }\n        console.error(err);\n      }\n    }\n    onAbort && onAbort(err);\n  };\n  var lastRouteIndex = route.matched.length - 1;\n  var lastCurrentIndex = current.matched.length - 1;\n  if (\n    isSameRoute(route, current) &&\n    // in the case the route map has been dynamically appended to\n    lastRouteIndex === lastCurrentIndex &&\n    route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n  ) {\n    this.ensureURL();\n    if (route.hash) {\n      handleScroll(this.router, current, route, false);\n    }\n    return abort(createNavigationDuplicatedError(current, route))\n  }\n\n  var ref = resolveQueue(\n    this.current.matched,\n    route.matched\n  );\n    var updated = ref.updated;\n    var deactivated = ref.deactivated;\n    var activated = ref.activated;\n\n  var queue = [].concat(\n    // in-component leave guards\n    extractLeaveGuards(deactivated),\n    // global before hooks\n    this.router.beforeHooks,\n    // in-component update hooks\n    extractUpdateHooks(updated),\n    // in-config enter guards\n    activated.map(function (m) { return m.beforeEnter; }),\n    // async components\n    resolveAsyncComponents(activated)\n  );\n\n  var iterator = function (hook, next) {\n    if (this$1$1.pending !== route) {\n      return abort(createNavigationCancelledError(current, route))\n    }\n    try {\n      hook(route, current, function (to) {\n        if (to === false) {\n          // next(false) -> abort navigation, ensure current URL\n          this$1$1.ensureURL(true);\n          abort(createNavigationAbortedError(current, route));\n        } else if (isError(to)) {\n          this$1$1.ensureURL(true);\n          abort(to);\n        } else if (\n          typeof to === 'string' ||\n          (typeof to === 'object' &&\n            (typeof to.path === 'string' || typeof to.name === 'string'))\n        ) {\n          // next('/') or next({ path: '/' }) -> redirect\n          abort(createNavigationRedirectedError(current, route));\n          if (typeof to === 'object' && to.replace) {\n            this$1$1.replace(to);\n          } else {\n            this$1$1.push(to);\n          }\n        } else {\n          // confirm transition and pass on the value\n          next(to);\n        }\n      });\n    } catch (e) {\n      abort(e);\n    }\n  };\n\n  runQueue(queue, iterator, function () {\n    // wait until async components are resolved before\n    // extracting in-component enter guards\n    var enterGuards = extractEnterGuards(activated);\n    var queue = enterGuards.concat(this$1$1.router.resolveHooks);\n    runQueue(queue, iterator, function () {\n      if (this$1$1.pending !== route) {\n        return abort(createNavigationCancelledError(current, route))\n      }\n      this$1$1.pending = null;\n      onComplete(route);\n      if (this$1$1.router.app) {\n        this$1$1.router.app.$nextTick(function () {\n          handleRouteEntered(route);\n        });\n      }\n    });\n  });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n  this.current = route;\n  this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners () {\n  // Default implementation is empty\n};\n\nHistory.prototype.teardown = function teardown () {\n  // clean up event listeners\n  // https://github.com/vuejs/vue-router/issues/2341\n  this.listeners.forEach(function (cleanupListener) {\n    cleanupListener();\n  });\n  this.listeners = [];\n\n  // reset current history route\n  // https://github.com/vuejs/vue-router/issues/3294\n  this.current = START;\n  this.pending = null;\n};\n\nfunction normalizeBase (base) {\n  if (!base) {\n    if (inBrowser) {\n      // respect <base> tag\n      var baseEl = document.querySelector('base');\n      base = (baseEl && baseEl.getAttribute('href')) || '/';\n      // strip full URL origin\n      base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n    } else {\n      base = '/';\n    }\n  }\n  // make sure there's the starting slash\n  if (base.charAt(0) !== '/') {\n    base = '/' + base;\n  }\n  // remove trailing slash\n  return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n  current,\n  next\n) {\n  var i;\n  var max = Math.max(current.length, next.length);\n  for (i = 0; i < max; i++) {\n    if (current[i] !== next[i]) {\n      break\n    }\n  }\n  return {\n    updated: next.slice(0, i),\n    activated: next.slice(i),\n    deactivated: current.slice(i)\n  }\n}\n\nfunction extractGuards (\n  records,\n  name,\n  bind,\n  reverse\n) {\n  var guards = flatMapComponents(records, function (def, instance, match, key) {\n    var guard = extractGuard(def, name);\n    if (guard) {\n      return Array.isArray(guard)\n        ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n        : bind(guard, instance, match, key)\n    }\n  });\n  return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n  def,\n  key\n) {\n  if (typeof def !== 'function') {\n    // extend now so that global mixins are applied.\n    def = _Vue.extend(def);\n  }\n  return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n  return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n  return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n  if (instance) {\n    return function boundRouteGuard () {\n      return guard.apply(instance, arguments)\n    }\n  }\n}\n\nfunction extractEnterGuards (\n  activated\n) {\n  return extractGuards(\n    activated,\n    'beforeRouteEnter',\n    function (guard, _, match, key) {\n      return bindEnterGuard(guard, match, key)\n    }\n  )\n}\n\nfunction bindEnterGuard (\n  guard,\n  match,\n  key\n) {\n  return function routeEnterGuard (to, from, next) {\n    return guard(to, from, function (cb) {\n      if (typeof cb === 'function') {\n        if (!match.enteredCbs[key]) {\n          match.enteredCbs[key] = [];\n        }\n        match.enteredCbs[key].push(cb);\n      }\n      next(cb);\n    })\n  }\n}\n\n/*  */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n  function HTML5History (router, base) {\n    History.call(this, router, base);\n\n    this._startLocation = getLocation(this.base);\n  }\n\n  if ( History ) HTML5History.__proto__ = History;\n  HTML5History.prototype = Object.create( History && History.prototype );\n  HTML5History.prototype.constructor = HTML5History;\n\n  HTML5History.prototype.setupListeners = function setupListeners () {\n    var this$1$1 = this;\n\n    if (this.listeners.length > 0) {\n      return\n    }\n\n    var router = this.router;\n    var expectScroll = router.options.scrollBehavior;\n    var supportsScroll = supportsPushState && expectScroll;\n\n    if (supportsScroll) {\n      this.listeners.push(setupScroll());\n    }\n\n    var handleRoutingEvent = function () {\n      var current = this$1$1.current;\n\n      // Avoiding first `popstate` event dispatched in some browsers but first\n      // history route not updated since async guard at the same time.\n      var location = getLocation(this$1$1.base);\n      if (this$1$1.current === START && location === this$1$1._startLocation) {\n        return\n      }\n\n      this$1$1.transitionTo(location, function (route) {\n        if (supportsScroll) {\n          handleScroll(router, route, current, true);\n        }\n      });\n    };\n    window.addEventListener('popstate', handleRoutingEvent);\n    this.listeners.push(function () {\n      window.removeEventListener('popstate', handleRoutingEvent);\n    });\n  };\n\n  HTML5History.prototype.go = function go (n) {\n    window.history.go(n);\n  };\n\n  HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n    var this$1$1 = this;\n\n    var ref = this;\n    var fromRoute = ref.current;\n    this.transitionTo(location, function (route) {\n      pushState(cleanPath(this$1$1.base + route.fullPath));\n      handleScroll(this$1$1.router, route, fromRoute, false);\n      onComplete && onComplete(route);\n    }, onAbort);\n  };\n\n  HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n    var this$1$1 = this;\n\n    var ref = this;\n    var fromRoute = ref.current;\n    this.transitionTo(location, function (route) {\n      replaceState(cleanPath(this$1$1.base + route.fullPath));\n      handleScroll(this$1$1.router, route, fromRoute, false);\n      onComplete && onComplete(route);\n    }, onAbort);\n  };\n\n  HTML5History.prototype.ensureURL = function ensureURL (push) {\n    if (getLocation(this.base) !== this.current.fullPath) {\n      var current = cleanPath(this.base + this.current.fullPath);\n      push ? pushState(current) : replaceState(current);\n    }\n  };\n\n  HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n    return getLocation(this.base)\n  };\n\n  return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n  var path = window.location.pathname;\n  var pathLowerCase = path.toLowerCase();\n  var baseLowerCase = base.toLowerCase();\n  // base=\"/a\" shouldn't turn path=\"/app\" into \"/a/pp\"\n  // https://github.com/vuejs/vue-router/issues/3555\n  // so we ensure the trailing slash in the base\n  if (base && ((pathLowerCase === baseLowerCase) ||\n    (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) {\n    path = path.slice(base.length);\n  }\n  return (path || '/') + window.location.search + window.location.hash\n}\n\n/*  */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n  function HashHistory (router, base, fallback) {\n    History.call(this, router, base);\n    // check history fallback deeplinking\n    if (fallback && checkFallback(this.base)) {\n      return\n    }\n    ensureSlash();\n  }\n\n  if ( History ) HashHistory.__proto__ = History;\n  HashHistory.prototype = Object.create( History && History.prototype );\n  HashHistory.prototype.constructor = HashHistory;\n\n  // this is delayed until the app mounts\n  // to avoid the hashchange listener being fired too early\n  HashHistory.prototype.setupListeners = function setupListeners () {\n    var this$1$1 = this;\n\n    if (this.listeners.length > 0) {\n      return\n    }\n\n    var router = this.router;\n    var expectScroll = router.options.scrollBehavior;\n    var supportsScroll = supportsPushState && expectScroll;\n\n    if (supportsScroll) {\n      this.listeners.push(setupScroll());\n    }\n\n    var handleRoutingEvent = function () {\n      var current = this$1$1.current;\n      if (!ensureSlash()) {\n        return\n      }\n      this$1$1.transitionTo(getHash(), function (route) {\n        if (supportsScroll) {\n          handleScroll(this$1$1.router, route, current, true);\n        }\n        if (!supportsPushState) {\n          replaceHash(route.fullPath);\n        }\n      });\n    };\n    var eventType = supportsPushState ? 'popstate' : 'hashchange';\n    window.addEventListener(\n      eventType,\n      handleRoutingEvent\n    );\n    this.listeners.push(function () {\n      window.removeEventListener(eventType, handleRoutingEvent);\n    });\n  };\n\n  HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n    var this$1$1 = this;\n\n    var ref = this;\n    var fromRoute = ref.current;\n    this.transitionTo(\n      location,\n      function (route) {\n        pushHash(route.fullPath);\n        handleScroll(this$1$1.router, route, fromRoute, false);\n        onComplete && onComplete(route);\n      },\n      onAbort\n    );\n  };\n\n  HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n    var this$1$1 = this;\n\n    var ref = this;\n    var fromRoute = ref.current;\n    this.transitionTo(\n      location,\n      function (route) {\n        replaceHash(route.fullPath);\n        handleScroll(this$1$1.router, route, fromRoute, false);\n        onComplete && onComplete(route);\n      },\n      onAbort\n    );\n  };\n\n  HashHistory.prototype.go = function go (n) {\n    window.history.go(n);\n  };\n\n  HashHistory.prototype.ensureURL = function ensureURL (push) {\n    var current = this.current.fullPath;\n    if (getHash() !== current) {\n      push ? pushHash(current) : replaceHash(current);\n    }\n  };\n\n  HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n    return getHash()\n  };\n\n  return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n  var location = getLocation(base);\n  if (!/^\\/#/.test(location)) {\n    window.location.replace(cleanPath(base + '/#' + location));\n    return true\n  }\n}\n\nfunction ensureSlash () {\n  var path = getHash();\n  if (path.charAt(0) === '/') {\n    return true\n  }\n  replaceHash('/' + path);\n  return false\n}\n\nfunction getHash () {\n  // We can't use window.location.hash here because it's not\n  // consistent across browsers - Firefox will pre-decode it!\n  var href = window.location.href;\n  var index = href.indexOf('#');\n  // empty path\n  if (index < 0) { return '' }\n\n  href = href.slice(index + 1);\n\n  return href\n}\n\nfunction getUrl (path) {\n  var href = window.location.href;\n  var i = href.indexOf('#');\n  var base = i >= 0 ? href.slice(0, i) : href;\n  return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n  if (supportsPushState) {\n    pushState(getUrl(path));\n  } else {\n    window.location.hash = path;\n  }\n}\n\nfunction replaceHash (path) {\n  if (supportsPushState) {\n    replaceState(getUrl(path));\n  } else {\n    window.location.replace(getUrl(path));\n  }\n}\n\n/*  */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n  function AbstractHistory (router, base) {\n    History.call(this, router, base);\n    this.stack = [];\n    this.index = -1;\n  }\n\n  if ( History ) AbstractHistory.__proto__ = History;\n  AbstractHistory.prototype = Object.create( History && History.prototype );\n  AbstractHistory.prototype.constructor = AbstractHistory;\n\n  AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n    var this$1$1 = this;\n\n    this.transitionTo(\n      location,\n      function (route) {\n        this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index + 1).concat(route);\n        this$1$1.index++;\n        onComplete && onComplete(route);\n      },\n      onAbort\n    );\n  };\n\n  AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n    var this$1$1 = this;\n\n    this.transitionTo(\n      location,\n      function (route) {\n        this$1$1.stack = this$1$1.stack.slice(0, this$1$1.index).concat(route);\n        onComplete && onComplete(route);\n      },\n      onAbort\n    );\n  };\n\n  AbstractHistory.prototype.go = function go (n) {\n    var this$1$1 = this;\n\n    var targetIndex = this.index + n;\n    if (targetIndex < 0 || targetIndex >= this.stack.length) {\n      return\n    }\n    var route = this.stack[targetIndex];\n    this.confirmTransition(\n      route,\n      function () {\n        var prev = this$1$1.current;\n        this$1$1.index = targetIndex;\n        this$1$1.updateRoute(route);\n        this$1$1.router.afterHooks.forEach(function (hook) {\n          hook && hook(route, prev);\n        });\n      },\n      function (err) {\n        if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n          this$1$1.index = targetIndex;\n        }\n      }\n    );\n  };\n\n  AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n    var current = this.stack[this.stack.length - 1];\n    return current ? current.fullPath : '/'\n  };\n\n  AbstractHistory.prototype.ensureURL = function ensureURL () {\n    // noop\n  };\n\n  return AbstractHistory;\n}(History));\n\n/*  */\n\n\n\nvar VueRouter = function VueRouter (options) {\n  if ( options === void 0 ) options = {};\n\n  if (process.env.NODE_ENV !== 'production') {\n    warn(this instanceof VueRouter, \"Router must be called with the new operator.\");\n  }\n  this.app = null;\n  this.apps = [];\n  this.options = options;\n  this.beforeHooks = [];\n  this.resolveHooks = [];\n  this.afterHooks = [];\n  this.matcher = createMatcher(options.routes || [], this);\n\n  var mode = options.mode || 'hash';\n  this.fallback =\n    mode === 'history' && !supportsPushState && options.fallback !== false;\n  if (this.fallback) {\n    mode = 'hash';\n  }\n  if (!inBrowser) {\n    mode = 'abstract';\n  }\n  this.mode = mode;\n\n  switch (mode) {\n    case 'history':\n      this.history = new HTML5History(this, options.base);\n      break\n    case 'hash':\n      this.history = new HashHistory(this, options.base, this.fallback);\n      break\n    case 'abstract':\n      this.history = new AbstractHistory(this, options.base);\n      break\n    default:\n      if (process.env.NODE_ENV !== 'production') {\n        assert(false, (\"invalid mode: \" + mode));\n      }\n  }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (raw, current, redirectedFrom) {\n  return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n  return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n    var this$1$1 = this;\n\n  process.env.NODE_ENV !== 'production' &&\n    assert(\n      install.installed,\n      \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n        \"before creating root instance.\"\n    );\n\n  this.apps.push(app);\n\n  // set up app destroyed handler\n  // https://github.com/vuejs/vue-router/issues/2639\n  app.$once('hook:destroyed', function () {\n    // clean out app from this.apps array once destroyed\n    var index = this$1$1.apps.indexOf(app);\n    if (index > -1) { this$1$1.apps.splice(index, 1); }\n    // ensure we still have a main app or null if no apps\n    // we do not release the router so it can be reused\n    if (this$1$1.app === app) { this$1$1.app = this$1$1.apps[0] || null; }\n\n    if (!this$1$1.app) { this$1$1.history.teardown(); }\n  });\n\n  // main app previously initialized\n  // return as we don't need to set up new history listener\n  if (this.app) {\n    return\n  }\n\n  this.app = app;\n\n  var history = this.history;\n\n  if (history instanceof HTML5History || history instanceof HashHistory) {\n    var handleInitialScroll = function (routeOrError) {\n      var from = history.current;\n      var expectScroll = this$1$1.options.scrollBehavior;\n      var supportsScroll = supportsPushState && expectScroll;\n\n      if (supportsScroll && 'fullPath' in routeOrError) {\n        handleScroll(this$1$1, routeOrError, from, false);\n      }\n    };\n    var setupListeners = function (routeOrError) {\n      history.setupListeners();\n      handleInitialScroll(routeOrError);\n    };\n    history.transitionTo(\n      history.getCurrentLocation(),\n      setupListeners,\n      setupListeners\n    );\n  }\n\n  history.listen(function (route) {\n    this$1$1.apps.forEach(function (app) {\n      app._route = route;\n    });\n  });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n  return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n  return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n  return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n  this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n  this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n    var this$1$1 = this;\n\n  // $flow-disable-line\n  if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n    return new Promise(function (resolve, reject) {\n      this$1$1.history.push(location, resolve, reject);\n    })\n  } else {\n    this.history.push(location, onComplete, onAbort);\n  }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n    var this$1$1 = this;\n\n  // $flow-disable-line\n  if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n    return new Promise(function (resolve, reject) {\n      this$1$1.history.replace(location, resolve, reject);\n    })\n  } else {\n    this.history.replace(location, onComplete, onAbort);\n  }\n};\n\nVueRouter.prototype.go = function go (n) {\n  this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n  this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n  this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n  var route = to\n    ? to.matched\n      ? to\n      : this.resolve(to).route\n    : this.currentRoute;\n  if (!route) {\n    return []\n  }\n  return [].concat.apply(\n    [],\n    route.matched.map(function (m) {\n      return Object.keys(m.components).map(function (key) {\n        return m.components[key]\n      })\n    })\n  )\n};\n\nVueRouter.prototype.resolve = function resolve (\n  to,\n  current,\n  append\n) {\n  current = current || this.history.current;\n  var location = normalizeLocation(to, current, append, this);\n  var route = this.match(location, current);\n  var fullPath = route.redirectedFrom || route.fullPath;\n  var base = this.history.base;\n  var href = createHref(base, fullPath, this.mode);\n  return {\n    location: location,\n    route: route,\n    href: href,\n    // for backwards compat\n    normalizedTo: location,\n    resolved: route\n  }\n};\n\nVueRouter.prototype.getRoutes = function getRoutes () {\n  return this.matcher.getRoutes()\n};\n\nVueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) {\n  this.matcher.addRoute(parentOrRoute, route);\n  if (this.history.current !== START) {\n    this.history.transitionTo(this.history.getCurrentLocation());\n  }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n  if (process.env.NODE_ENV !== 'production') {\n    warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.');\n  }\n  this.matcher.addRoutes(routes);\n  if (this.history.current !== START) {\n    this.history.transitionTo(this.history.getCurrentLocation());\n  }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nvar VueRouter$1 = VueRouter;\n\nfunction registerHook (list, fn) {\n  list.push(fn);\n  return function () {\n    var i = list.indexOf(fn);\n    if (i > -1) { list.splice(i, 1); }\n  }\n}\n\nfunction createHref (base, fullPath, mode) {\n  var path = mode === 'hash' ? '#' + fullPath : fullPath;\n  return base ? cleanPath(base + '/' + path) : path\n}\n\n// We cannot remove this as it would be a breaking change\nVueRouter.install = install;\nVueRouter.version = '3.6.5';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\nVueRouter.START_LOCATION = START;\n\nif (inBrowser && window.Vue) {\n  window.Vue.use(VueRouter);\n}\n\nvar version = '3.6.5';\n\nexport { NavigationFailureType, Link as RouterLink, View as RouterView, START as START_LOCATION, VueRouter$1 as default, isNavigationFailure, version };\n", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport { SkeletonSpinner } from '../../../lib/vue/components';\nimport { translate } from '../../../lib/vue/filters';\nimport { DatasetFactoryMixin } from '../../lib/factories/datasets';\nimport Sidebar from '../components/Sidebar.vue';\nimport Layout from '../layouts/Layout.vue';\n\n// availableFilters on https://gobierto.readme.io/docs/inversiones-configuration\nconst fields = [\n  {\n    id: \"category\",\n    flat: true\n  },\n  {\n    id: \"frequency\",\n    flat: true\n  }\n];\n\nconst __vue_script__ = {\n  name: \"Main\",\n  components: {\n    Layout,\n    Sidebar,\n    SkeletonSpinner\n  },\n  mixins: [DatasetFactoryMixin],\n  data() {\n    return {\n      activeSidebarTab: 0,\n      pageTitle: \"\",\n      attrs: {},\n      items: [],\n      isDatasetLoaded: false\n    };\n  },\n  computed: {\n    categories() {\n      // We need to extract the human-readable elements from the dictionary\n      const { attributes: { vocabulary_terms: categories = [] } = {} } =\n        this.attrs.metadata.find(\n          ({ attributes: { uid } = {} }) => uid === \"category\"\n        ) || {};\n\n      return categories;\n    },\n    frequencies() {\n      // We need to extract the human-readable elements from the dictionary\n      const { attributes: { vocabulary_terms: frequencies = [] } = {} } =\n        this.attrs.metadata.find(\n          ({ attributes: { uid } = {} }) => uid === \"frequency\"\n        ) || {};\n\n      return frequencies;\n    },\n    parsedSubsetItems() {\n      return this.items.map(\n        ({\n          id,\n          attributes: {\n            slug,\n            name,\n            description,\n            data_updated_at,\n            category: category_id,\n            frequency: frequency_id\n          }\n        }) => {\n          let category = null;\n          let frequency = null;\n\n          if (category_id) {\n            // convert into arrays\n            const selectedCategories = Array.isArray(category_id)\n              ? category_id\n              : [category_id];\n            // get only the translated strings, separated by commas\n            category = (\n              this.categories.reduce((acc, { id, name_translations }) => {\n                if (selectedCategories.includes(id.toString())) {\n                  acc.push(translate(name_translations));\n                }\n                return acc;\n              }, []) || []\n            ).join(\", \");\n          }\n\n          if (frequency_id) {\n            const selectedFrequencies = Array.isArray(frequency_id)\n              ? frequency_id\n              : [frequency_id];\n\n            frequency = (\n              this.frequencies.reduce((acc, { id, name_translations }) => {\n                if (selectedFrequencies.includes(id.toString())) {\n                  acc.push(translate(name_translations));\n                }\n                return acc;\n              }, []) || []\n            ).join(\", \");\n          }\n\n          return {\n            id,\n            slug,\n            name,\n            description,\n            data_updated_at,\n            category,\n            frequency\n          };\n        }\n      );\n    }\n  },\n  watch: {\n    $route(to) {\n      if (to.name === \"Dataset\") {\n        this.activeSidebarTab = 1;\n      }\n    }\n  },\n  async created() {\n    this.pageTitle = document.title;\n\n    const [\n      {\n        data: { data: items = [] }\n      },\n      {\n        data: { data: metadata = [], meta: stats = {} }\n      }\n    ] = await Promise.all([\n      this.getDatasets(),\n      this.getDatasetsMetadata({ stats: true })\n    ]);\n\n    this.attrs = {\n      items,\n      fields,\n      metadata,\n      stats\n    };\n\n    this.isDatasetLoaded = true;\n  },\n  methods: {\n    handleUpdate(items) {\n      this.items = items;\n    }\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Layout',{scopedSlots:_vm._u([{key:\"sidebar\",fn:function(){return [(!_vm.isDatasetLoaded)?[_c('SkeletonSpinner',{attrs:{\"height-square\":\"20px\",\"squares-rows\":\"1\",\"squares\":\"3\"}}),_vm._v(\" \"),_c('SkeletonSpinner',{attrs:{\"squares\":\"0\",\"lines\":\"4\"}})]:_c('Sidebar',_vm._b({attrs:{\"active-tab\":_vm.activeSidebarTab},on:{\"active-tab\":function($event){_vm.activeSidebarTab = $event},\"update\":_vm.handleUpdate}},'Sidebar',_vm.attrs,false))]},proxy:true}])},[_vm._v(\" \"),(!_vm.isDatasetLoaded)?_c('SkeletonSpinner',{attrs:{\"height-square\":\"200px\",\"squares-rows\":\"3\",\"squares\":\"1\"}}):_c('keep-alive',[_c('router-view',{key:_vm.$route.params.id,attrs:{\"datasets\":_vm.parsedSubsetItems,\"page-title\":_vm.pageTitle}})],1)],1)}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"Main.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "import BlockHeader from './modules/BlockHeader.vue'\nimport Calendar from './modules/Calendar.vue'\nimport HorizontalCarousel from './modules/HorizontalCarousel.vue'\nimport Loading from './modules/Loading.vue'\nimport Checkbox from './modules/Checkbox.vue'\nimport RangeBars from './modules/RangeBars.vue'\nimport ReadMore from './modules/ReadMore.vue'\nimport Dropdown from './modules/Dropdown.vue'\nimport SkeletonSpinner from './modules/SkeletonSpinner.vue'\nimport Pagination from './modules/Pagination.vue'\nimport MultipleLineChart from './modules/MultipleLineChart.vue'\nimport TextEditable from './modules/TextEditable.vue'\nimport Autocomplete from './modules/Autocomplete.vue'\nimport Table from './modules/Table.vue'\nimport TableColumnsSelector from './modules/TableColumnsSelector.vue'\nimport SortIcon from './modules/SortIcon.vue'\nimport Filters from './modules/Filters.vue'\n\nexport {\n  BlockHeader,\n  Calendar,\n  HorizontalCarousel,\n  Loading,\n  Checkbox,\n  RangeBars,\n  ReadMore,\n  Dropdown,\n  SkeletonSpinner,\n  Pagination,\n  MultipleLineChart,\n  TextEditable,\n  Autocomplete,\n  Table,\n  TableColumnsSelector,\n  SortIcon,\n  Filters\n}\n", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nconst __vue_script__ = {\n  name: \"BlockHeader\",\n  props: {\n    title: {\n      type: String,\n      default: \"\"\n    },\n    seeLink: {\n      type: Boolean,\n      default: false\n    },\n    labelAlt: {\n      type: Boolean,\n      default: false\n    },\n    rotate: {\n      type: Boolean,\n      default: false\n    },\n  },\n  data() {\n    return {\n      labelAll: \"\",\n      labelNone: \"\"\n    };\n  },\n  created() {\n    this.labelAll = I18n.t(\"gobierto_common.vue_components.block_header.all\");\n    this.labelNone = I18n.t(\"gobierto_common.vue_components.block_header.none\");\n  },\n  methods: {\n    selectAll() {\n      this.$emit(\"select-all\");\n    },\n    toggle() {\n      this.$emit(\"toggle\");\n    }\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gobierto-block-header\"},[_c('strong',{staticClass:\"gobierto-block-header--title\"},[_c('i',{staticClass:\"fas fa-caret-down gobierto-block-header--icon\",class:_vm.rotate ? 'rotate-caret' : '',on:{\"click\":_vm.toggle}}),_vm._v(\"\\n    \"+_vm._s(_vm.title))]),_vm._v(\" \"),(_vm.seeLink)?_c('a',{staticClass:\"gobierto-block-header--link\",on:{\"click\":function($event){$event.stopPropagation();return _vm.selectAll.apply(null, arguments)}}},[_vm._v(_vm._s(_vm.labelAlt ? _vm.labelNone : _vm.labelAll))]):_vm._e()])}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"BlockHeader.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport { Datepicker } from '../../../../lib/shared';\n\nconst __vue_script__ = {\n  name: \"Calendar\",\n  props: {\n    savedStartDate: {\n      type: Date,\n      default: null\n    },\n    savedEndDate: {\n      type: Date,\n      default: null\n    }\n  },\n  data() {\n    return {\n      labelDate: I18n.t(\"gobierto_common.vue_components.calendar.date\") || \"\",\n      startDate: this.savedStartDate,\n      endDate: this.savedEndDate\n    };\n  },\n  dateFmt: { day: \"numeric\", month: \"short\", year: \"numeric\" },\n  computed: {\n    startDateFmt() {\n      return this.startDate\n        ? this.startDate.toLocaleDateString(I18n.locale, this.$options.dateFmt)\n        : undefined;\n    },\n    endDateFmt() {\n      return this.endDate\n        ? this.endDate.toLocaleDateString(I18n.locale, this.$options.dateFmt)\n        : undefined;\n    }\n  },\n  watch: {\n    savedStartDate(n) {\n      this.startDate = n;\n    },\n    savedEndDate(n) {\n      this.endDate = n;\n    }\n  },\n  mounted() {\n    this.setDatePicker();\n  },\n  updated() {\n    this.startDate = this.savedStartDate;\n    this.endDate = this.savedEndDate;\n    this.setDatePicker();\n  },\n  beforeUnmount() {\n    // https://vuejs.org/v2/cookbook/avoiding-memory-leaks.html\n    this.datepicker.destroy();\n  },\n  methods: {\n    setDatePicker() {\n      this.datepicker = new Datepicker(this.$el.querySelector(\"input\"), {\n        language: I18n.locale,\n        autoClose: true,\n        range: true,\n        inline: false,\n        clearButton: true,\n        onSelect: (_, date) => {\n          const [start, end] = date;\n          this.startDate = start;\n          this.endDate = end;\n\n          this.$emit(\"calendar-change\", { start, end });\n        }\n      });\n    }\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gobierto-calendar\"},[_c('div',[_c('strong',[_vm._v(_vm._s(_vm.labelDate))]),_vm._v(\" \"),_c('i',{staticClass:\"fas fa-caret-down\"})]),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.startDateFmt)+_vm._s(_vm.endDate ? \" - \" : \"\")+_vm._s(_vm.endDateFmt))]),_vm._v(\" \"),_c('input',{staticClass:\"datepicker-here\",attrs:{\"type\":\"text\"}})])}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"Calendar.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport { HorizontalCarousel } from '../../../../lib/shared';\n\nconst __vue_script__ = {\n  name: \"HorizontalCarousel\",\n  props: {\n    visibleItems: {\n      type: Number,\n      default: 3\n    },\n    thumbnails: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data() {\n    return {\n      items: this.visibleItems\n    }\n  },\n  mounted() {\n    const images = this.$el.firstElementChild?.children;\n    if (images.length < this.items) {\n      this.items = images.length;\n    }\n\n    this.$nextTick(() => {\n      // if this.items changes, we need to wait for the next DOM update before initializing the carousel\n      this.horizontalCarousel = new HorizontalCarousel(this.$el);\n    })\n  },\n  beforeUnmount() {\n    this.horizontalCarousel.destroy();\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"horizontal-carousel js-horizontal-carousel\",attrs:{\"data-visible-items\":_vm.items,\"data-thumbnails\":_vm.thumbnails}},[_c('div',{staticClass:\"horizontal-carousel-content\"},[_vm._t(\"default\")],2),_vm._v(\" \"),_vm._m(0),_vm._v(\" \"),_vm._m(1)])}\nvar __vue_staticRenderFns__ = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"data-prev\":\"\"}},[_c('i',{staticClass:\"fas fa-angle-left fa-2x\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"data-next\":\"\"}},[_c('i',{staticClass:\"fas fa-angle-right fa-2x\"})])}]\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"HorizontalCarousel.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n\nconst __vue_script__ = {\n  name: \"Loading\",\n  props: {\n    message: {\n      type: String,\n      default: \"\"\n    }\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('i',{staticClass:\"fas fa-spinner fa-spin\"}),_vm._v(\" \"+_vm._s(_vm.message)+\"\\n\")])}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"Loading.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport { slugString } from '../../../../lib/shared';\n\nconst __vue_script__ = {\n  name: \"Checkbox\",\n  props: {\n    title: {\n      type: [Number, String],\n      default: \"\"\n    },\n    category: {\n      type: String,\n      default: \"\"\n    },\n    id: {\n      type: [Number, String],\n      default: 0\n    },\n    checked: {\n      type: Boolean,\n      default: false\n    },\n    counter: {\n      type: Number,\n      default: null\n    }\n  },\n  data() {\n    return {\n      seed: Math.random().toString(36).substring(7)\n    }\n  },\n  computed: {\n    hasCounter() {\n      return this.counter !== null\n    }\n  },\n  methods: {\n    onChange({ target: { checked } }) {\n      this.$emit(\"checkbox-change\", { id: this.id, value: checked })\n    },\n    createIdCheckbox() {\n      const parseCategoryFilter = slugString(this.category)\n      return `container-checkbox-${parseCategoryFilter}-${this.id}`\n    }\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gobierto-filter-checkbox\",attrs:{\"id\":_vm.createIdCheckbox()}},[_c('input',{staticClass:\"gobierto-filter-checkbox--input\",attrs:{\"id\":(\"checkbox-\" + _vm.id + \"-\" + _vm.seed),\"type\":\"checkbox\"},domProps:{\"checked\":_vm.checked},on:{\"change\":_vm.onChange}}),_vm._v(\" \"),_c('label',{staticClass:\"gobierto-filter-checkbox--label\",attrs:{\"for\":(\"checkbox-\" + _vm.id + \"-\" + _vm.seed)}},[_c('div',{staticClass:\"gobierto-filter-checkbox--label-title\"},[_c('p',{staticClass:\"gobierto-filter-checkbox--label-title-text\"},[_vm._v(\"\\n        \"+_vm._s(_vm.title)+\"\\n      \")]),_vm._v(\" \"),(_vm.hasCounter)?_c('i',{staticClass:\"gobierto-filter-checkbox--label-counter\"},[_vm._v(\"(\"+_vm._s(_vm.counter)+\")\")]):_vm._e()])])])}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"Checkbox.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport { VueFiltersMixin } from '../../../../lib/vue/filters';\nimport { RangeSlider, debounce } from '../../../../lib/shared';\n\nconst __vue_script__ = {\n  name: \"RangeBars\",\n  mixins: [VueFiltersMixin],\n  props: {\n    min: {\n      type: Number,\n      default: 0\n    },\n    max: {\n      type: Number,\n      default: 100\n    },\n    totalItems: {\n      type: Number,\n      default: 1\n    },\n    savedMin: {\n      type: Number,\n      default: null\n    },\n    savedMax: {\n      type: Number,\n      default: null\n    },\n    histogram: {\n      type: Array,\n      default: () => []\n    }\n  },\n  inRangeClass: \"in-range\",\n  data() {\n    return {\n      defaultRange: [this.min, this.max],\n      selectedMin: this.savedMin || this.min,\n      selectedMax: this.savedMax || this.max,\n      seed: Math.random()\n        .toString(36)\n        .substring(7)\n    };\n  },\n  computed: {\n    rangeMin() {\n      return value => Math.floor(parseFloat(value));\n    },\n    rangeMax() {\n      return value => Math.ceil(parseFloat(value));\n    },\n    rangeDefault() {\n      return JSON.stringify([\n        this.savedMin || Math.floor(this.min),\n        this.savedMax || Math.ceil(this.max)\n      ]);\n    }\n  },\n  mounted() {\n    this.getRangeSlider()\n  },\n  updated() {\n    this.selectedMin = this.savedMin || this.min;\n    this.selectedMax = this.savedMax || this.max;\n    this.getRangeSlider()\n  },\n  beforeUnmount() {\n    // https://vuejs.org/v2/cookbook/avoiding-memory-leaks.html\n    this.rangeSlider.destroy()\n  },\n  methods: {\n    getRangeSlider() {\n      const rangeSlider = this.$el.querySelector(\".js-range-slider\");\n      this.setRangeSlider(rangeSlider);\n    },\n    setRangeSlider(slider) {\n      const {\n        min = 0,\n        max = 100,\n        default: defaultRange = `[${min},${max}]`,\n        rangeBarsSelector\n      } = slider.dataset;\n\n      const callback = (_, ui) => {\n        const { values = [] } = ui;\n\n        slider.selectedRange = values;\n        this.setRangeBar(slider);\n\n        const [min = this.min, max = this.max] = values;\n        this.selectedMin = min;\n        this.selectedMax = max;\n        this.$emit(\"range-change\", { min, max });\n      };\n\n      // Update values for THIS slider\n      slider.min = parseFloat(min);\n      slider.max = parseFloat(max);\n      slider.selectedRange = JSON.parse(defaultRange);\n\n      this.rangeSlider = new RangeSlider({\n        elem: slider,\n        min: slider.min,\n        max: slider.max,\n        defaultRange: slider.selectedRange,\n        rangeCallback: debounce(callback, 750)\n      });\n\n      // Initialize range bars if present\n      if (rangeBarsSelector) {\n        slider.selector = this.$el.querySelector(rangeBarsSelector);\n        this.setRangeBar(slider);\n      }\n    },\n    setRangeBar(rangeBars) {\n      const { min, max, selectedRange, selector } = rangeBars;\n      const bars = selector.children;\n      const step = (max - min) / bars.length;\n      const [start, end] = selectedRange;\n\n      for (let index = 0; index < bars.length; index++) {\n        const bar = bars[index];\n\n        start <= step * index + step + min && end >= step * index + min\n          ? bar.classList.add(this.$options.inRangeClass)\n          : bar.classList.remove(this.$options.inRangeClass);\n      }\n    }\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"range-slider\"},[_c('div',{staticClass:\"range-slider--bars\",attrs:{\"id\":(\"range-bars-\" + _vm.seed)}},_vm._l((_vm.histogram),function(bar){return _c('div',{key:bar.id,style:({ height: ((100 * (bar.count / _vm.totalItems)) + \"%\") })},[_c('span',[_vm._v(_vm._s(_vm._f(\"money\")(_vm.rangeMin(bar.start),{ minimumFractionDigits: 0 })))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm._f(\"money\")(_vm.rangeMax(bar.end),{ minimumFractionDigits: 0 })))])])}),0),_vm._v(\" \"),_c('div',{staticClass:\"js-range-slider\",attrs:{\"data-min\":_vm.min,\"data-max\":_vm.max,\"data-default\":_vm.rangeDefault,\"data-range-bars-selector\":(\"#range-bars-\" + _vm.seed)}}),_vm._v(\" \"),_c('div',{staticClass:\"range-slider--values\"},[_c('span',[_vm._v(_vm._s(_vm._f(\"money\")(_vm.selectedMin,{ minimumFractionDigits: 0 })))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm._f(\"money\")(_vm.selectedMax,{ minimumFractionDigits: 0 })))])])])}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"RangeBars.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport { readMore } from '../../../../lib/shared';\n\nconst __vue_script__ = {\n  name: \"ReadMore\",\n  props: {\n    seeMore: {\n      type: String,\n      default: I18n.t(\"gobierto_common.vue_components.read_more.more\")\n    },\n    seeLess: {\n      type: String,\n      default: I18n.t(\"gobierto_common.vue_components.read_more.less\")\n    },\n    roundChars: {\n      type: Number,\n      default: 150\n    }\n  },\n  data() {\n    return {\n      text: \"\",\n      breakIndex: 0\n    };\n  },\n  computed: {\n    isFeatureEnable() {\n      return this.text.length > this.breakIndex\n    },\n    firstChars() {\n      return this.text.substring(0, this.breakIndex);\n    },\n    lastChars() {\n      return this.text.substring(this.breakIndex, this.text.length);\n    }\n  },\n  created() {\n    const { text = \"\" } = this.$slots.default[0];\n    this.text = text;\n    this.breakIndex = this.roundChars + this.firstBreakAppearance() + 1;\n  },\n  mounted() {\n    if (this.isFeatureEnable) {\n      readMore(this.$el);\n    }\n  },\n  methods: {\n    firstBreakAppearance() {\n      const textBreaks = [\".\", \";\", \"\\n\"];\n      const indexTextBreaks = [];\n      for (let i = 0; i < textBreaks.length; i++) {\n        const element = textBreaks[i];\n        const index = this.text\n          .substring(this.roundChars, this.text.length)\n          .indexOf(element);\n        if (index >= 0) {\n          indexTextBreaks.push(index);\n        }\n      }\n\n      return Math.min.apply(Math, indexTextBreaks);\n    }\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"read-more js-read-more\"},[_c('div',[_vm._v(\"\\n    \"+_vm._s(_vm.firstChars)+\"\\n    \"),(_vm.isFeatureEnable)?_c('span',{attrs:{\"data-toggle\":\"\"}},[_c('a',[_vm._v(_vm._s(_vm.seeMore))])]):_vm._e()]),_vm._v(\" \"),_c('div',[_vm._v(\"\\n    \"+_vm._s(_vm.lastChars)+\"\\n    \"),_c('span',{attrs:{\"data-toggle\":\"\"}},[_c('a',[_vm._v(_vm._s(_vm.seeLess))])])])])}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"ReadMore.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nconst __vue_script__ = {\n  name: 'Dropdown',\n  data() {\n    return {\n      isContentVisible: true\n    }\n  },\n  created() {\n    this.isContentVisible = window.innerWidth <= 769 ? false : true\n  },\n  methods: {\n    show() {\n      this.isContentVisible = !this.isContentVisible\n      this.$emit('is-content-visible', this.isContentVisible)\n    }\n  }\n}\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gobierto-vue-dropdown\"},[_c('div',{staticClass:\"gobierto-vue-dropdown--trigger\",on:{\"click\":_vm.show}},[_vm._t(\"trigger\")],2),_vm._v(\" \"),_c('div',{staticClass:\"gobierto-vue-dropdown--content\"},[_c('transition',{attrs:{\"name\":\"slide\"}},[(_vm.isContentVisible)?_vm._t(\"default\"):_vm._e()],2)],1)])}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"Dropdown.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nconst __vue_script__ = {\n  name: \"SkeletonSpinner\",\n  props: {\n    heightSquare: {\n      default: '1rem',\n      type: String,\n    },\n    squaresRows: {\n      default: '1',\n      type: String,\n    },\n    squares: {\n      default: '1',\n      type: String,\n    },\n    lines: {\n      default: '0',\n      type: String,\n    }\n  },\n  computed: {\n    styleSquares() {\n      return {\n        width: ((100 - (+(this.squares) - 1)) / +(this.squares)) + '%',\n        height: this.heightSquare\n      }\n    },\n  },\n  methods: {\n    stylesLines() {\n      return {\n        width: Math.floor(Math.random() * (90 - 50 + 1)) + 50 + '%'\n      }\n    }\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._l((parseInt(_vm.lines)),function(line){return [_c('div',{key:(\"line-\" + line),staticClass:\"gobierto-skeleton-spinner gobierto-skeleton-spinner-line\",style:(_vm.stylesLines())})]}),_vm._v(\" \"),_vm._l((parseInt(_vm.squaresRows)),function(square){return [_c('div',{key:(\"square-row-\" + square),staticClass:\"gobierto-skeleton-spinner-container-squares\"},[_vm._l((parseInt(_vm.squares)),function(square){return [_c('div',{key:(\"square-\" + square),staticClass:\"gobierto-skeleton-spinner gobierto-skeleton-spinner-square\",style:(_vm.styleSquares)})]})],2)]})],2)}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"SkeletonSpinner.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nconst __vue_script__ = {\n  name: \"Pagination\",\n  props: {\n    data: {\n      type: Array,\n      default: () => []\n    },\n    itemsPerPage: {\n      type: Number,\n      default: 1\n    },\n    containerPagination: {\n      type: String,\n      default: ''\n    },\n  },\n  data() {\n    return {\n      labelNext: I18n.t(\"gobierto_common.vue_components.pagination.next\"),\n      labelPrev: I18n.t(\"gobierto_common.vue_components.pagination.previous\"),\n      page: 1,\n      pages: [],\n    };\n  },\n  computed: {\n    displayedData() {\n      return this.paginateData(this.data);\n    },\n    paginationOptions() {\n      let page = this.page;\n      let len = this.pages.length;\n      if (page - len >= -1 && len > 3) {\n        return this.pages.slice(page - ((page - len) + (5 < len ? 5 : len)), len);\n      } else {\n        return this.pages.slice(page - (page < 4 ? page : 3), page + (5 - (page < 4 ? page : 3)));\n      }\n    },\n    disabledPrevButton() {\n      return this.page === 1\n    },\n    disabledNextButton() {\n      //Disable the Next button when the current page is the last.\n      return this.page === this.pages.slice(-1)[0]\n    },\n    showPagination() {\n      return this.data.length > this.itemsPerPage\n    }\n  },\n  watch:{\n    perPage(value) {\n      if (typeof value === 'string' && value.length < 3) {\n        this.page = 1;\n        this.setPages();\n      }\n    },\n    page(newValue, oldValue) {\n      if (newValue !== oldValue) {\n        this.paginateData(this.data);\n      }\n    },\n    data(newValue, oldValue) {\n      if (newValue !== oldValue) {\n        this.page = 1;\n        this.setPages();\n        this.paginateData(newValue);\n      }\n    }\n  },\n  created() {\n    this.setPages();\n    this.paginateData(this.data);\n  },\n  methods: {\n    setPages() {\n      this.pages.splice(0, this.pages.length);\n      let pageCount = Math.ceil(this.data.length / this.itemsPerPage);\n      for (let index = 1; index <= pageCount; index++) {\n        this.pages.push(index);\n      }\n    },\n    paginateData(data) {\n      let page = this.page;\n      let perPage = this.itemsPerPage;\n      let from = (page * perPage) - perPage;\n      let to = (page * perPage);\n      const displayedData = data.slice(from, to);\n      this.$emit('show-data', displayedData)\n    },\n    nextPage() {\n      this.page++\n      this.scrollToTop()\n    },\n    currentPage(pageNumber) {\n      this.page = pageNumber\n      this.scrollToTop()\n    },\n    prevPage() {\n      this.page--\n      this.scrollToTop()\n    },\n    scrollToTop() {\n      const element = document.querySelector(this.containerPagination);\n      element.scrollIntoView({ behavior: \"smooth\" });\n    }\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.showPagination)?_c('nav',{staticClass:\"gobierto-pagination\"},[_c('button',{staticClass:\"gobierto-pagination-btn\",attrs:{\"disabled\":_vm.disabledPrevButton},on:{\"click\":_vm.prevPage}},[_vm._v(\"\\n    \"+_vm._s(_vm.labelPrev)+\"\\n  \")]),_vm._v(\" \"),_c('ul',{staticClass:\"gobierto-pagination-pages\"},_vm._l((_vm.paginationOptions),function(pageNumber){return _c('li',{key:pageNumber,staticClass:\"gobierto-pagination-pages-element\"},[_c('button',{staticClass:\"gobierto-pagination-pages-element-btn\",attrs:{\"disabled\":pageNumber === _vm.page},on:{\"click\":function($event){return _vm.currentPage(pageNumber)}}},[_vm._v(\"\\n        \"+_vm._s(pageNumber)+\"\\n      \")])])}),0),_vm._v(\" \"),_c('button',{staticClass:\"gobierto-pagination-btn\",attrs:{\"disabled\":_vm.disabledNextButton},on:{\"click\":_vm.nextPage}},[_vm._v(\"\\n    \"+_vm._s(_vm.labelNext)+\"\\n  \")])]):_vm._e()}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"Pagination.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport * as d3 from 'd3';\nimport { d3locale } from '../../../../lib/shared';\n\nconst __vue_script__ = {\n  name: 'MultipleLineChart',\n  props: {\n    data: {\n      type: Array,\n      default: () => []\n    },\n    height: {\n      default: 400,\n      type: Number,\n    },\n    arrayLineValues: {\n      type: Array,\n      default: () => []\n    },\n    arrayCircleValues: {\n      type: Array,\n      default: () => []\n    },\n    showRightLabels: {\n      type: Boolean,\n      default: false\n    },\n    valuesLegend: {\n      type: Array,\n      default: () => []\n    },\n    marginLeft: {\n      type: Number,\n      default: 30\n    },\n    marginRight: {\n      type: Number,\n      default: 250\n    },\n    marginTop: {\n      type: Number,\n      default: 50\n    },\n    marginBottom: {\n      type: Number,\n      default: 30\n    }\n  },\n  data() {\n    return {\n      svgWidth: 0,\n      svgHeight: 0,\n      margin: {\n        left: this.marginLeft,\n        right: this.marginRight,\n        top: this.marginTop,\n        bottom: this.marginBottom\n      },\n      dataMultipleLineWithoutCoordinates: undefined,\n      containerChart: undefined\n    }\n  },\n  mounted() {\n    this.containerChart = document.querySelector('.multiple-line-chart-container');\n    this.svgWidth = this.containerChart.offsetWidth;\n    this.svgHeight = this.height + this.margin.top + this.margin.bottom\n    this.setupElements()\n    this.buildMultipleLine(this.data)\n    this.resizeListener()\n  },\n  methods: {\n    setupElements() {\n      const svg = d3.select('.multiple-line-chart')\n\n      const g = svg.append('g')\n        .attr('class', 'multiple-line-chart-container-g')\n\n      g.append('g')\n        .attr('class', 'axis axis-x')\n\n      g.append('g')\n        .attr('class', 'axis axis-y')\n    },\n    buildMultipleLine(data) {\n      //Check if showLabels is true, if it's false reduce the size of the margin right\n      this.marginRight = !this.showRightLabels ? 30 : this.marginRight\n\n      data.sort(function(a,b){\n        return new Date(b.year) - new Date(a.year);\n      });\n\n      this.dataMultipleLineWithoutCoordinates = JSON.parse(JSON.stringify(this.data));\n\n      const svg = d3.select('.multiple-line-chart')\n\n      const translate = `translate(${this.margin.left},${this.margin.top})`\n\n      const g = svg.select('.multiple-line-chart-container-g')\n\n      g.attr('transform', translate)\n\n      const scaleY = d3.scaleLinear()\n        .domain([0, d3.max(data, d => Math.max(d[this.arrayLineValues[0]], d[this.arrayLineValues[1]], d[this.arrayLineValues[2]]))])\n        .range([this.height, 0]);\n\n      const scaleX = d3.scaleTime()\n        .domain(d3.extent(data, d => d.year))\n        .range([0, this.svgWidth - (this.margin.left + this.margin.right)]);\n\n      const scaleYBarCharts = d3.scaleLinear()\n        .domain([0, d3.max(data, d => d.final_amount_no_taxes)])\n        .range([this.height, 0]);\n\n      const axisX = d3\n        .axisBottom(scaleX)\n        .tickPadding(10)\n        .ticks(5)\n\n      g.select('.axis-x')\n        .attr('transform', `translate(0,${this.height})`)\n        .call(axisX)\n\n      const axisY = d3\n        .axisLeft(scaleY)\n        .tickPadding(10)\n        .tickFormat(d => d)\n        .tickSize(-(this.svgWidth - (this.margin.right)))\n        .ticks(10)\n\n      g.select('.axis-y')\n        .call(axisY)\n\n      g.selectAll(\".bar\")\n        .data(data)\n        .enter()\n        .append(\"rect\")\n        .attr('class', 'multiple-line-chart-bars')\n        .attr(\"x\", d => scaleX(d.year))\n        .attr(\"width\", 20)\n        .attr(\"y\", d => scaleYBarCharts(d.final_amount_no_taxes))\n        .attr('class', 'multiple-line-chart-bars')\n        .attr('height', (d) => this.height - scaleYBarCharts(d.final_amount_no_taxes))\n        .on('mouseover', (d, e, event) => {\n          this.$emit('showTooltip', d, e, event);\n        })\n        .on('mouseout', () => {\n          d3.select('.multiple-line-tooltip-bars')\n            .style(\"opacity\", 1)\n            .transition()\n            .duration(400)\n            .style(\"opacity\", 0)\n        })\n\n      for (let index = 0; index < this.arrayLineValues.length; index++) {\n\n        let value = this.arrayLineValues[index]\n        let valueline = d3.line()\n          .x(d => scaleX(d.year))\n          .y(d => scaleY(d[value]))\n          .curve(d3.curveCardinal);\n\n        g.append(\"path\")\n          .data([data])\n          .attr(\"class\", `lines-multiple-lines line-${value}`)\n          .attr(\"d\", valueline)\n\n        d3.select('.multiple-line-chart-container')\n          .append('div')\n          .data(data)\n          .attr('class', `tooltip-multiple-line tooltip-${value}`)\n          .style('left', `${this.svgWidth - this.margin.right + 36}px`)\n          .style('top', d => `${scaleY(d[value]) + this.margin.bottom}px`)\n          .html(d => {\n            if (this.showRightLabels) {\n              return this.buildLenged(d, value)\n            }\n          })\n      }\n\n      for (let index = 0; index < this.arrayCircleValues.length; index++) {\n\n        g.selectAll(`.circle-${this.arrayCircleValues[index]}`)\n          .data(data)\n          .join('circle')\n          .attr(\"class\", `circle-${this.arrayCircleValues[index]}`)\n          .attr('cx', d => scaleX(d.year))\n          .attr('cy', d => scaleY(d[this.arrayCircleValues[index]]))\n          .attr('r', 6)\n      }\n    },\n    buildLenged(d, value) {\n      const locale = d3.formatDefaultLocale(d3locale[I18n.locale]);\n      const localeFormat = locale.format(',.0f')\n      const filterData = this.valuesLegend.filter(d => d.key === value)\n\n      let tooltipText = new Function('d', 'value', 'localeFormat', 'return `' + filterData[0].legend + '`;')(d, value, localeFormat);\n      return tooltipText\n    },\n    resizeListener() {\n      window.addEventListener(\"resize\", () => {\n        d3.select('.multiple-line-chart-container-g')\n          .remove()\n          .exit()\n        d3.selectAll('.tooltip-multiple-line')\n          .remove()\n          .exit()\n        this.containerChart = document.querySelector('.multiple-line-chart-container');\n        this.svgWidth = this.containerChart.offsetWidth;\n        this.setupElements()\n        this.buildMultipleLine(this.data)\n      })\n    }\n  }\n}\n\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"multiple-line-chart-container\"},[_c('div',{staticClass:\"multiple-line-tooltip-bars\"}),_vm._v(\" \"),_c('svg',{staticClass:\"multiple-line-chart\",attrs:{\"width\":_vm.svgWidth,\"height\":_vm.svgHeight}})])}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"MultipleLineChart.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nconst __vue_script__ = {\n  name: \"TextEditable\",\n  props: {\n    tag: {\n      type: String,\n      default: \"p\"\n    },\n    icon: {\n      type: Boolean,\n      default: false\n    }\n  },\n  methods: {\n    handleEnterKey() {\n      document.activeElement.blur()\n    },\n    handleFocus() {\n      // assure no white-space remaining\n      document.activeElement.textContent = document.activeElement.textContent.trim()\n\n      // https://javascript.info/selection-range\n      const range = new Range()\n      range.selectNodeContents(document.activeElement)\n      document.getSelection().removeAllRanges();\n      document.getSelection().addRange(range);\n    },\n    handleInput({ target }) {\n      this.$emit('input', target.innerText);\n    }\n  }\n}\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gobierto-text-editable\"},[_c(_vm.tag,{tag:\"component\",attrs:{\"contenteditable\":\"\"},on:{\"input\":_vm.handleInput,\"focus\":_vm.handleFocus,\"keypress\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();return _vm.handleEnterKey.apply(null, arguments)}}},[_vm._t(\"default\")],2),_vm._v(\" \"),(_vm.icon)?_c('i',{staticClass:\"fas fa-edit\"}):_vm._e()],1)}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"TextEditable.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nconst __vue_script__ = {\n  name: \"Autocomplete\",\n  props: {\n    label: {\n      type: String,\n      default: null\n    },\n    placeholder: {\n      type: String,\n      default: \"\"\n    },\n    name: {\n      type: String,\n      default: \"autocomplete\"\n    },\n    items: {\n      type: Array,\n      default: () => []\n    },\n    defaultValue: {\n      type: String,\n      default: null\n    }\n  },\n  data() {\n    return {\n      results: this.items,\n      isOpen: false,\n      search: this.defaultValue || \"\",\n      arrowCounter: -1\n    };\n  },\n  mounted() {\n    document.addEventListener(\"click\", this.handleClickOutside);\n  },\n  unmounted() {\n    document.removeEventListener(\"click\", this.handleClickOutside);\n  },\n  methods: {\n    onChange() {\n      this.$emit(\"input\", this.search);\n\n      this.isOpen = true;\n      this.results = this.items.filter(item => (\"\"+item).toLowerCase().indexOf((\"\"+this.search).toLowerCase()) > -1);\n    },\n    onArrowDown() {\n      this.isOpen = true;\n      this.arrowCounter = (this.arrowCounter < this.results.length - 1) ? this.arrowCounter + 1 : 0\n    },\n    onArrowUp() {\n      this.isOpen = true;\n      this.arrowCounter = (this.arrowCounter > 0) ? this.arrowCounter - 1 : this.results.length - 1\n    },\n    handleClickOutside(evt) {\n      if (!this.$el.contains(evt.target)) {\n        this.isOpen = false;\n        this.arrowCounter = -1;\n      }\n    },\n    setResult(result) {\n      this.search = result || this.results[this.arrowCounter];\n      this.isOpen = false;\n      this.arrowCounter = -1;\n\n      this.$emit(\"change\", this.search);\n    }\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gobierto-autocomplete\"},[(_vm.label.length)?_vm._t(\"label\",function(){return [_c('label',{staticClass:\"gobierto-autocomplete__label\",attrs:{\"for\":\"autocomplete-input\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.label)+\"\\n    \")])]}):_vm._e(),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.search),expression:\"search\"}],staticClass:\"gobierto-autocomplete__input\",class:{ 'is-active': _vm.isOpen },attrs:{\"id\":\"autocomplete-input\",\"name\":_vm.name,\"autocomplete\":\"off\",\"placeholder\":_vm.placeholder,\"type\":\"text\"},domProps:{\"value\":(_vm.search)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.search=$event.target.value},_vm.onChange],\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"])){ return null; }return _vm.onArrowDown.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"])){ return null; }return _vm.onArrowUp.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();return _vm.setResult()}],\"dblclick\":function($event){_vm.isOpen = !_vm.isOpen}}}),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"slide\"}},[(_vm.isOpen)?_c('ul',{staticClass:\"gobierto-autocomplete__results\"},_vm._l((_vm.results),function(result,i){return _c('li',{key:i,staticClass:\"gobierto-autocomplete__result\",class:{ 'is-active': i === _vm.arrowCounter },on:{\"click\":function($event){return _vm.setResult(result)}}},[_vm._t(\"default\",function(){return [_vm._v(\"\\n          \"+_vm._s(result)+\"\\n        \")]},{\"result\":result})],2)}),0):_vm._e()])],2)}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"Autocomplete.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport { Pagination } from '../../../../lib/vue/components'\nimport { VueFiltersMixin } from '../../../../lib/vue/filters'\nimport TableColumnsSelector from './TableColumnsSelector.vue'\nimport SortIcon from './SortIcon.vue'\n\nconst collator = new Intl.Collator(I18n.locale)\n\nconst __vue_script__ = {\n  name: 'Table',\n  components: {\n    SortIcon,\n    TableColumnsSelector,\n    Pagination,\n  },\n  mixins: [VueFiltersMixin],\n  defaults: {\n    sortColumn: \"id\",\n    sortDirection: \"asc\",\n  },\n  props: {\n    data: {\n      type: Array,\n      default: () => []\n    },\n    columns: {\n      type: Array,\n      default: () => []\n    },\n    sortColumn: {\n      type: String,\n      default: null\n    },\n    sortDirection: {\n      type: String,\n      default: null\n    },\n    showColumns: {\n      type: Array,\n      default: () => []\n    },\n    showColumnSelector: {\n      type: Boolean,\n      default: true\n    },\n    showPagination: {\n      type: Boolean,\n      default: true\n    },\n    href: {\n      type: String,\n      default: 'href'\n    },\n  },\n  data() {\n    return {\n      mapColumns: new Map(),\n      currentSortColumn: this.sortColumn || this.$options.defaults.sortColumn,\n      currentSort: this.sortDirection || this.$options.defaults.sortDirection,\n      labelNoData: I18n.t(\"gobierto_common.vue_components.table.no_data\") || '',\n      visibleColumns: this.showColumns.length ? this.showColumns : this.columns.map(({ field }) => field),\n      visiblePaginatedRows: null,\n      arrayColumnsFiltered: []\n    };\n  },\n  computed: {\n    hasPermalink() {\n      return this.data.some(element => element[this.href])\n    },\n    rowsSorted() {\n      const id = this.currentSortColumn;\n      const sort = this.currentSort;\n      return this.data\n        .slice()\n        .sort(({ [id]: termA }, { [id]: termB }) =>\n          sort === \"asc\"\n            ? typeof termA === \"string\"\n              ? collator.compare(termA, termB)\n              : termA > termB ? 1 : -1\n            : typeof termA === \"string\"\n              ? collator.compare(termB, termA)\n              : termA < termB ? 1 : -1\n        );\n    },\n    visibleRows() {\n      // if there's pagination, display only such subset, otherwise show everything\n      return this.showPagination ? this.visiblePaginatedRows : this.rowsSorted\n    },\n  },\n  created() {\n    this.prepareTable()\n  },\n  methods: {\n    handleTableHeaderClick(id) {\n      const { sort } = this.mapColumns.get(id);\n      this.currentSortColumn = id;\n      // toggle sort order\n      this.currentSort = sort === \"asc\" ? \"desc\" : \"asc\";\n      // update the order for the item clicked\n      this.mapColumns.set(id, { ...this.mapColumns.get(id), sort: this.currentSort });\n    },\n    getSorting(column) {\n      // ignore the first item of the tuple\n      const { sort } = this.mapColumns.get(column)\n      return sort;\n    },\n    prepareTable() {\n      this.mapColumns.clear();\n      for (let index = 0; index < this.columns.length; index++) {\n        const { field, name, type, cssClass = '' } = this.columns[index];\n        this.mapColumns.set(field, {\n          visibility: this.visibleColumns.includes(field),\n          name: name,\n          sort: field === this.currentSortColumn ? this.currentSort : undefined,\n          type: type,\n          cssClass: cssClass\n        });\n      }\n      this.arrayColumnsFiltered = Array.from(this.mapColumns).filter(([,{ visibility }]) => !!visibility)\n    },\n    updateData(values) {\n      this.visiblePaginatedRows = values\n    },\n    filterColumns(columns) {\n      this.mapColumns = columns\n      this.arrayColumnsFiltered = Array.from(this.mapColumns).filter(([,{ visibility }]) => !!visibility)\n    },\n    handleTableItem(item) {\n      this.$emit('on-href-click', item)\n    }\n  }\n}\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"table\",staticClass:\"gobierto-table\"},[(_vm.showColumnSelector)?[_vm._t(\"columns\",function(){return [_c('div',{staticClass:\"gobierto-table__header\"},[_c('TableColumnsSelector',{attrs:{\"columns\":_vm.mapColumns},on:{\"visible-columns\":_vm.filterColumns}})],1)]})]:_vm._e(),_vm._v(\" \"),_c('table',[_c('thead',_vm._l((_vm.arrayColumnsFiltered),function(ref){\nvar id = ref[0];\nvar ref_1 = ref[1];\nvar name = ref_1.name;\nvar index = ref_1.index;\nvar cssClass = ref_1.cssClass;\nreturn _c('th',{key:index,staticClass:\"gobierto-table__th\",class:cssClass,on:{\"click\":function($event){return _vm.handleTableHeaderClick(id)}}},[_vm._v(\"\\n        \"+_vm._s(name)+\"\\n        \"),(_vm.currentSortColumn === id)?_c('SortIcon',{attrs:{\"direction\":_vm.getSorting(id)}}):_vm._e()],1)}),0),_vm._v(\" \"),_c('tbody',_vm._l((_vm.visibleRows),function(item,index){return _c('tr',{key:index,staticClass:\"gobierto-table__tr\",class:{ 'is-clickable': _vm.hasPermalink }},[_vm._l((_vm.arrayColumnsFiltered),function(ref){\nvar id = ref[0];\nvar ref_1 = ref[1];\nvar type = ref_1.type;\nvar cssClass = ref_1.cssClass;\nreturn [(type === 'money')?[_c('td',{key:id,staticClass:\"gobierto-table__td\",class:cssClass},[(_vm.hasPermalink)?[_c('a',{staticClass:\"gobierto-table__a\",attrs:{\"href\":item[_vm.href]},on:{\"click\":function($event){$event.preventDefault();return _vm.handleTableItem(item)}}},[_vm._v(\"\\n                  \"+_vm._s(_vm._f(\"money\")(item[id]))+\"\\n                \")])]:[_c('span',[_vm._v(\"\\n                  \"+_vm._s(_vm._f(\"money\")(item[id]))+\"\\n                \")])]],2)]:(type === 'date')?[_c('td',{key:id,staticClass:\"gobierto-table__td\",class:cssClass},[(_vm.hasPermalink)?[_c('a',{staticClass:\"gobierto-table__a\",attrs:{\"href\":item[_vm.href]},on:{\"click\":function($event){$event.preventDefault();return _vm.handleTableItem(item)}}},[_vm._v(\"\\n                  \"+_vm._s(_vm._f(\"date\")(item[id]))+\"\\n                \")])]:[_c('span',[_vm._v(\"\\n                  \"+_vm._s(_vm._f(\"date\")(item[id]))+\"\\n                \")])]],2)]:(type === 'truncate')?[_c('td',{key:id,staticClass:\"gobierto-table__td\"},[(_vm.hasPermalink)?[_c('a',{staticClass:\"gobierto-table__a\",class:cssClass,attrs:{\"href\":item[_vm.href]},on:{\"click\":function($event){$event.preventDefault();return _vm.handleTableItem(item)}}},[_vm._v(\"\\n                  \"+_vm._s(item[id])+\"\\n                \")])]:[_c('span',{class:cssClass},[_vm._v(\"\\n                  \"+_vm._s(item[id])+\"\\n                \")])]],2)]:[_c('td',{key:id,staticClass:\"gobierto-table__td\",class:cssClass},[(_vm.hasPermalink)?[_c('a',{staticClass:\"gobierto-table__a\",attrs:{\"href\":item[_vm.href]},on:{\"click\":function($event){$event.preventDefault();return _vm.handleTableItem(item)}}},[_vm._v(\"\\n                  \"+_vm._s(item[id])+\"\\n                \")])]:[_c('span',[_vm._v(\"\\n                  \"+_vm._s(item[id])+\"\\n                \")])]],2)]]})],2)}),0)]),_vm._v(\" \"),(!_vm.data.length)?_c('div',{staticClass:\"center p1\"},[_vm._v(\"\\n    \"+_vm._s(_vm.labelNoData)+\"\\n  \")]):_vm._e(),_vm._v(\" \"),(_vm.showPagination)?[_vm._t(\"pagination\",function(){return [_c('Pagination',{attrs:{\"data\":_vm.rowsSorted,\"items-per-page\":25,\"container-pagination\":'main'},on:{\"show-data\":_vm.updateData}})]},{\"paginator\":_vm.updateData,\"data\":_vm.rowsSorted})]:_vm._e()],2)}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"Table.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport { Checkbox } from '../../../../lib/vue/components';\nimport { clickoutside } from '../../../../lib/vue/directives'\n\nconst __vue_script__ = {\n  name: \"TableColumnsSelector\",\n  components: {\n    Checkbox\n  },\n  directives: {\n    clickoutside\n  },\n  props: {\n    columns: {\n      type: Map,\n      default: () => new Map()\n    }\n  },\n  data() {\n    return {\n      showColumnsModal: false,\n      labelCustomizeColumns: I18n.t(\"gobierto_common.vue_components.table.customize_columns\") || ''\n    }\n  },\n  methods: {\n    closeModal() {\n      this.showColumnsModal = false\n    },\n    toggleVisibility({ id, value }) {\n      this.columns.set(id, { ...this.columns.get(id), visibility: value });\n      this.$emit('visible-columns', this.columns)\n    },\n  }\n}\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"clickoutside\",rawName:\"v-clickoutside\",value:(_vm.closeModal),expression:\"closeModal\"}],staticClass:\"gobierto-table__column-selector\"},[_c('div',{staticClass:\"gobierto-table__column-selector__trigger\",attrs:{\"data-testid\":\"table-button-modal\"},on:{\"click\":function($event){_vm.showColumnsModal = !_vm.showColumnsModal}}},[_c('span',[_vm._v(_vm._s(_vm.labelCustomizeColumns))]),_vm._v(\" \"),_c('i',{staticClass:\"gobierto-table__column-selector__icon fas fa-columns\"})]),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.showColumnsModal)?_c('div',{staticClass:\"gobierto-table__column-selector__content\",attrs:{\"data-testid\":\"table-modal\"}},_vm._l((_vm.columns),function(ref){\nvar id = ref[0];\nvar ref_1 = ref[1];\nvar name = ref_1.name;\nvar visibility = ref_1.visibility;\nreturn _c('Checkbox',{key:id,attrs:{\"id\":id,\"title\":name,\"checked\":visibility},on:{\"checkbox-change\":_vm.toggleVisibility}})}),1):_vm._e()])],1)}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"TableColumnsSelector.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "export const clickoutside = {\n  bind(el, binding, vnode) {\n    el.clickOutsideEvent = (event) => {\n      if (!(el === event.target || el.contains(event.target))) {\n        vnode.context[binding.expression](event);\n      }\n    };\n    document.body.addEventListener('click', el.clickOutsideEvent)\n  },\n  unbind(el) { document.body.removeEventListener('click', el.clickOutsideEvent) },\n  stopProp(event) { event.stopPropagation() }\n}\n\nexport const VueDirectivesMixin = {\n  directives: {\n    clickoutside\n  }\n}\n", "/* script */\n//\n//\n//\n//\n//\n//\n//\n\nconst __vue_script__ = {\n  name: \"SortIcon\",\n  props: {\n    direction: {\n      type: String,\n      default: null\n    }\n  },\n  computed: {\n    icon() {\n      return this.direction === \"desc\" ? \"down\" : \"down-alt\"\n    }\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.direction)?_c('i',{class:(\"gobierto-table__column-selector__icon fas fa-sort-amount-\" + _vm.icon)}):_vm._e()}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"SortIcon.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport { ItemsFilterMixin } from '../../../../lib/vue/mixins';\nimport { Checkbox, BlockHeader, Calendar, RangeBars, Dropdown } from '../../../../lib/vue/components';\n\nconst __vue_script__ = {\n  name: \"Filters\",\n  components: {\n    Checkbox,\n    BlockHeader,\n    Calendar,\n    RangeBars,\n    Dropdown\n  },\n  mixins: [ItemsFilterMixin],\n  props: {\n    data: {\n      type: Array,\n      default: () => []\n    },\n    fields: {\n      type: Array,\n      default: () => []\n    },\n    metadata: {\n      type: Array,\n      default: () => []\n    },\n    stats: {\n      type: Object,\n      default: () => {}\n    }\n  },\n  data() {\n    return {\n      labelClear: I18n.t(\"gobierto_common.vue_components.filters.clear\") || \"\",\n      items: this.data\n    };\n  },\n  watch: {\n    subsetItems(items) {\n      this.$emit(\"update\", items);\n    }\n  },\n  created() {\n    // items-filter method\n    this.createFilters({\n      filters: this.fields,\n      dictionary: this.metadata,\n      stats: this.stats\n    });\n  },\n  methods: {\n    clear() {\n      // items-filter method\n      this.clearFilters();\n      this.$emit(\"clear\");\n    }\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gobierto-filters\"},[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(_vm.isDirty)?_c('span',{staticClass:\"gobierto-filters--clear\",on:{\"click\":_vm.clear}},[_vm._v(_vm._s(_vm.labelClear))]):_vm._e()]),_vm._v(\" \"),_vm._l((_vm.filters),function(filter){return [(filter.type === 'date')?[_c('Dropdown',{key:filter.key,on:{\"is-content-visible\":function($event){filter.rotate = !filter.rotate}},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('BlockHeader',{attrs:{\"rotate\":filter.rotate,\"title\":filter.title}})]},proxy:true}],null,true)},[_vm._v(\" \"),_c('Calendar',{attrs:{\"saved-start-date\":filter.savedStartDate,\"saved-end-date\":filter.savedEndDate},on:{\"calendar-change\":function (e) { return _vm.handleCalendarFilterStatus(Object.assign({}, e, {filter: filter})); }}})],1)]:(filter.type === 'vocabulary_options')?[_c('Dropdown',{key:filter.key,on:{\"is-content-visible\":function($event){filter.rotate = !filter.rotate}},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('BlockHeader',{attrs:{\"rotate\":filter.rotate,\"title\":filter.title,\"label-alt\":filter.isEverythingChecked,\"see-link\":\"\"},on:{\"select-all\":function (e) { return _vm.handleIsEverythingChecked(Object.assign({}, e, {filter: filter})); }}})]},proxy:true}],null,true)},[_vm._v(\" \"),_c('div',_vm._l((filter.options),function(option){return _c('Checkbox',{key:option.id,attrs:{\"id\":option.id,\"title\":option.title,\"checked\":option.isOptionChecked,\"counter\":option.counter},on:{\"checkbox-change\":function (e) { return _vm.handleCheckboxStatus(Object.assign({}, e, {filter: filter})); }}})}),1)])]:(filter.type === 'numeric')?[_c('Dropdown',{key:filter.key,on:{\"is-content-visible\":function($event){filter.rotate = !filter.rotate}},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('BlockHeader',{attrs:{\"rotate\":filter.rotate,\"title\":filter.title}})]},proxy:true}],null,true)},[_vm._v(\" \"),_c('RangeBars',{attrs:{\"histogram\":(filter.histogram || []).map(function (item, i) { return (Object.assign({}, item,\n              {id: item.bucket || i})); }),\"min\":Math.floor(+filter.min),\"max\":Math.ceil(parseFloat(filter.max)),\"saved-min\":filter.savedMin,\"saved-max\":filter.savedMax,\"total-items\":parseFloat(filter.count)},on:{\"range-change\":function (e) { return _vm.handleRangeFilterStatus(Object.assign({}, e, {filter: filter})); }}})],1)]:_vm._e()]})],2)}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"Filters.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "import { ItemsFilterMixin } from './modules/items-filter';\n\nexport {\n  ItemsFilterMixin\n}\n", "import { Middleware } from '../../../../lib/shared';\n\nexport const ItemsFilterMixin = {\n  data() {\n    return {\n      items: [],\n      subsetItems: [],\n      filters: [],\n      activeFilters: new Map(),\n      defaultFilters: new Map(),\n      isDirty: false\n    }\n  },\n  props: {\n    noEmptyOptions: {\n      type: Boolean,\n      default: false\n    }\n  },\n  methods: {\n    createFilters({ filters, dictionary, stats = {} }) {\n      // Middleware receives both the dictionary of all possible attributes, and the selected filters for the site\n      const middleware = new Middleware({ dictionary, filters });\n\n      this.filters = middleware.getFilters(stats) || [];\n      this.defaultFilters = JSON.parse(JSON.stringify(this.filters.slice(0)));\n\n      if (filters.length) {\n        this.activeFilters = new Map();\n        this.initializeFilters()\n        this.parseQueryParams(this.$route)\n        this.updateItems()\n      }\n    },\n    filterItems(filterFn, key) {\n      this.isDirty = true\n      this.activeFilters.set(key, filterFn);\n    },\n    updateItems() {\n      this.subsetItems = this.applyFiltersCallbacks(this.activeFilters);\n      this.filters = this.filters.map(this.calculateOptionCounters);\n    },\n    initializeFilters() {\n      this.isDirty = false\n      this.activeFilters.clear()\n      this.filters = this.filters.map(filter => {\n        const __filter = this.calculateOptionCounters(filter)\n\n        if (this.noEmptyOptions) {\n          __filter.options = __filter.options.filter(({ counter }) => counter > 0)\n        }\n\n        return __filter\n      });\n    },\n    applyFiltersCallbacks(activeFilters) {\n      let results = this.items;\n      activeFilters.forEach(activeFn => {\n        if (activeFn) {\n          results = results.filter(d => activeFn(d.attributes));\n        }\n      });\n\n      return results;\n    },\n    clearFilters() {\n      this.filters = []\n      this.filters = JSON.parse(JSON.stringify(this.defaultFilters.slice(0)))\n\n      this.initializeFilters()\n      this.updateItems();\n\n      const query = { ...this.$route?.query, ...this.filters.reduce((acc, { key }) => ({ ...acc, [key]: undefined }), {}) }\n      this.$router?.push({ ...this.$route, query })\n    },\n    handleIsEverythingChecked({ filter }) {\n      filter.isEverythingChecked = !filter.isEverythingChecked;\n      filter.options.map(d => (d.isOptionChecked = filter.isEverythingChecked));\n      this.handleCheckboxFilter(filter);\n\n      // url updates must be done only in functions triggered by the user\n      this.updateURL(filter)\n    },\n    handleCheckboxStatus({ id, value, filter }) {\n      const index = filter.options.findIndex(d => d.id === id);\n      filter.options[index].isOptionChecked = value;\n      this.handleCheckboxFilter(filter);\n      this.updateItems();\n\n      // url updates must be done only in functions triggered by the user\n      this.updateURL(filter)\n    },\n    handleCheckboxFilter(filter) {\n      const { key, options } = filter;\n      const checkboxesSelected = new Map();\n      options.forEach(({ id, isOptionChecked }) =>\n        checkboxesSelected.set(id, isOptionChecked)\n      );\n\n      const size = [...checkboxesSelected.values()].filter(Boolean).length;\n      // Filter by those that have at least one element\n      const optionsActive = options.filter(({ counter = 0 }) => counter > 0 );\n      // Update the property when all isEverythingChecked\n      if (size === optionsActive.length) {\n        filter.isEverythingChecked = true;\n      }\n\n      // Update the property when none isEverythingChecked\n      if (size === 0) {\n        filter.isEverythingChecked = false;\n      }\n\n      const index = this.filters.findIndex(d => d.key === key);\n      this.filters.splice(index, 1, filter); // To detect array mutations\n\n      const checkboxFilterFn = attrs =>\n        attrs[key] && this.convertToArrayOfIds(attrs[key]).find(d => checkboxesSelected.get(+d));\n\n      const callback = size ? checkboxFilterFn : undefined;\n      this.filterItems(callback, key);\n    },\n    handleRangeFilterStatus({ min, max, filter }) {\n      // this function mutates filter, therefore updateURL receives the mutated filter obj\n      this.handleRangeFilter({ min, max, filter })\n      this.updateItems();\n\n      // url updates must be done only in functions triggered by the user\n      this.updateURL(filter)\n    },\n    handleRangeFilter({ min, max, filter }) {\n      const { key, min: __min__, max: __max__ } = filter;\n      const rangeFilterFn = attrs => attrs[key] >= min && attrs[key] <= max;\n\n      filter.savedMin = min;\n      filter.savedMax = max;\n\n      const index = this.filters.findIndex(d => d.key === key);\n      this.filters.splice(index, 1, filter); // To detect array mutations\n\n      const callback =\n        Math.floor(min) <= Math.floor(+__min__) &&\n        Math.floor(max) >= Math.floor(+__max__)\n          ? undefined\n          : rangeFilterFn;\n      this.filterItems(callback, key);\n    },\n    handleCalendarFilterStatus({ start, end, filter }) {\n      // this function mutates filter, therefore updateURL receives the mutated filter obj\n      this.handleCalendarFilter({ start, end, filter })\n      this.updateItems();\n\n      // url updates must be done only in functions triggered by the user\n      this.updateURL(filter)\n    },\n    handleCalendarFilter({ start, end, filter }) {\n      const { key, startKey = key, endKey = startKey } = filter;\n      const calendarFilterFn = attrs => {\n        if (start && end && attrs[startKey] && attrs[endKey]) {\n          return !(\n            end < new Date(attrs[startKey]) || start > new Date(attrs[endKey])\n          );\n        } else if (start && !end && attrs[endKey]) {\n          return !(start > new Date(attrs[endKey]));\n        } else if (!start && end && attrs[startKey]) {\n          return !(end < new Date(attrs[startKey]));\n        } else {\n          return false;\n        }\n      };\n\n      // Update object\n      filter.savedStartDate = start;\n      filter.savedEndDate = end;\n\n      const index = this.filters.findIndex(d => d.key === key);\n      this.filters.splice(index, 1, filter); // To detect array mutations\n\n      const callback = !start && !end ? undefined : calendarFilterFn;\n      this.filterItems(callback, key);\n    },\n    counter({ key, id }) {\n      // Clone current filters\n      const __activeFilters__ = new Map(this.activeFilters);\n      // Ignore same key callbacks (as if none of the same category are selected)\n      __activeFilters__.set(key, undefined);\n      // Get the items based on these new active filters\n      const __items__ = this.applyFiltersCallbacks(__activeFilters__);\n\n      return __items__.filter(({ attributes }) =>\n        this.convertToArrayOfIds(attributes[key]).includes(id)\n      ).length;\n    },\n    calculateOptionCounters(filter) {\n      const { key, options = [] } = filter;\n\n      if (options.length) {\n        filter.options = options.map(o => ({\n          ...o,\n          counter: this.counter({ id: o.id, key })\n        }));\n      }\n\n      return filter\n    },\n    convertToArrayOfIds(items) {\n      return Array.isArray(items) ? items.map(item => (+item)) : [+items]\n    },\n    updateURL(filter = {}) {\n      const param = this.$route?.query[filter.key]?.split(\",\") || []\n\n      if (filter.type === \"vocabulary_options\") {\n        filter.options.forEach(({ slug, isOptionChecked }) => {\n          if (isOptionChecked) {\n            // when value is true, ignore param if exists, otherwise append it\n            if (!param.includes(slug)) {\n              param.push(slug)\n            }\n          } else if (param.includes(slug)) {\n            // remove param if false\n            param.splice(param.indexOf(slug), 1)\n          }\n        })\n      }\n\n      if (filter.type === \"numeric\") {\n        param[0] = filter.savedMin\n        param[1] = filter.savedMax\n      }\n\n      if (filter.type === \"date\") {\n        // set only the date part\n        param[0] = filter.savedStartDate?.toISOString().substr(0, 10)\n        param[1] = filter.savedEndDate?.toISOString().substr(0, 10)\n      }\n\n      const query = { ...this.$route?.query, [filter.key]: param.length ? param.join(\",\") : undefined }\n      this.$router?.push({ ...this.$route, query })\n    },\n    parseQueryParams({ query }) {\n      Object.entries(query).forEach(([k, values]) => {\n        const ix = this.filters.findIndex(({ key }) => k === key)\n        const filter = this.filters[ix]\n\n        if (filter && filter.type === \"vocabulary_options\") {\n          values.split(\",\").forEach(x => {\n            const idx = filter.options.findIndex(({ slug }) => x === slug)\n            filter.options[idx].isOptionChecked = true\n          })\n          this.filters.splice(ix, 1, filter)\n          this.handleCheckboxFilter(filter)\n        } else if (filter && filter.type === \"numeric\") {\n          const [min, max] = values.split(\",\")\n          this.handleRangeFilter({ min: +min, max: +max, filter })\n        } else if (filter && filter.type === \"date\") {\n          const [start, end] = values.split(\",\")\n          this.handleCalendarFilter({ start: new Date(start), end: end ? new Date(end) : undefined, filter })\n        }\n      })\n    }\n  }\n}\n", "import { baseUrl } from '../commons.js';\nimport axios from 'axios';\n\nconst endPoint = `${baseUrl}/datasets`;\n\n// Dataset-endpoint factory to get/post/put/delete API data\nexport const DatasetFactoryMixin = {\n  methods: {\n    getDatasets(params) {\n      const headers = {\n        \"Content-type\": \"application/json\",\n        Authorization: window.gobiertoAPI.token\n      };\n\n      const qs = new URLSearchParams(params);\n      return axios.get(`${endPoint}?${qs.toString()}locale=${I18n.locale}`, { headers });\n    },\n    getDatasetsMetadata(params) {\n      const headers = {\n        \"Content-type\": \"application/json\",\n        Authorization: window.gobiertoAPI.token\n      };\n\n      const qs = new URLSearchParams(params);\n      return axios.get(`${endPoint}/meta?${qs.toString()}`, { headers });\n    },\n    getDatasetMetadata(id) {\n      const headers = {\n        \"Content-type\": \"application/json\",\n        Authorization: window.gobiertoAPI.token\n      };\n\n      return axios.get(`${endPoint}/${id}/meta/?locale=${I18n.locale}`, { headers })\n    }\n  }\n};\n", "import * as htmlToImage from 'html-to-image';\n\nexport const baseUrl = `${location.origin}/api/v1/data`\n\n//TODO: extract handleOutsideClick outside directive\nexport const closableMixin = {\n  directives: {\n    closable : {\n      bind (el, binding, vnode) {\n        const handleOutsideClick = (e) => {\n          e.stopPropagation()\n          const { handler, exclude } = binding.value\n          let clickedOnExcludedEl = false\n          exclude.forEach(refName => {\n            if (!clickedOnExcludedEl ) {\n              const excludedEl = vnode.context.$refs[refName]\n              if (excludedEl !== undefined) {\n                clickedOnExcludedEl = excludedEl.contains(e.target)\n              }\n            }\n          })\n          if (!el.contains(e.target) && !clickedOnExcludedEl) {\n            vnode.context[handler]()\n          }\n        }\n        document.addEventListener('click', handleOutsideClick)\n        document.addEventListener('touchstart', handleOutsideClick)\n      },\n      unbind () {\n        let handleOutsideClick\n        document.removeEventListener('click', handleOutsideClick)\n        document.removeEventListener('touchstart', handleOutsideClick)\n      }\n    }\n  }\n}\n\nexport const sqlKeywords = [\n  {\n    className: \"sql\",\n    text: \"ALTER\"\n  },\n  {\n    className: \"sql\",\n    text: \"AND\"\n  },\n  {\n    className: \"sql\",\n    text: \"AS\"\n  },\n  {\n    className: \"sql\",\n    text: \"ASC\"\n  },\n  {\n    className: \"sql\",\n    text: \"BETWEEN\"\n  },\n  {\n    className: \"sql\",\n    text: \"BY\"\n  },\n  {\n    className: \"sql\",\n    text: \"COUNT\"\n  },\n  {\n    className: \"sql\",\n    text: \"CREATE\"\n  },\n  {\n    className: \"sql\",\n    text: \"DELETE\"\n  },\n  {\n    className: \"sql\",\n    text: \"DESC\"\n  },\n  {\n    className: \"sql\",\n    text: \"DISTINCT\"\n  },\n  {\n    className: \"sql\",\n    text: \"DROP\"\n  },\n  {\n    className: \"sql\",\n    text: \"FROM\"\n  },\n  {\n    className: \"sql\",\n    text: \"GROUP\"\n  },\n  {\n    className: \"sql\",\n    text: \"HAVING\"\n  },\n  {\n    className: \"sql\",\n    text: \"IN\"\n  },\n  {\n    className: \"sql\",\n    text: \"INSERT\"\n  },\n  {\n    className: \"sql\",\n    text: \"INTO\"\n  },\n  {\n    className: \"sql\",\n    text: \"IS\"\n  },\n  {\n    className: \"sql\",\n    text: \"JOIN\"\n  },\n  {\n    className: \"sql\",\n    text: \"LIKE\"\n  },\n  {\n    className: \"sql\",\n    text: \"NOT\"\n  },\n  {\n    className: \"sql\",\n    text: \"ON\"\n  },\n  {\n    className: \"sql\",\n    text: \"OR\"\n  },\n  {\n    className: \"sql\",\n    text: \"ORDER\"\n  },\n  {\n    className: \"sql\",\n    text: \"SELECT\"\n  },\n  {\n    className: \"sql\",\n    text: \"SET\"\n  },\n  {\n    className: \"sql\",\n    text: \"TABLE\"\n  },\n  {\n    className: \"sql\",\n    text: \"UNION\"\n  },\n  {\n    className: \"sql\",\n    text: \"UPDATE\"\n  },\n  {\n    className: \"sql\",\n    text: \"VALUES\"\n  },\n  {\n    className: \"sql\",\n    text: \"WHERE\"\n  },\n  {\n    className: \"sql\",\n    text: \"LIMIT\"\n  }\n]\n\nexport const convertVizToImgMixin = {\n  methods: {\n    data() {\n      return {\n        imageApi: null,\n        saveLoader: false\n      }\n    },\n    convertVizToImg(node, cb) {\n      htmlToImage.toPng(node)\n        .then(function (dataUrl) {\n          this.saveLoader = true\n          this.imageApi = dataUrl\n          cb()\n        }.bind(this))\n        .catch(function (error) {\n          console.error('oops, something went wrong!', error);\n        });\n    },\n  }\n}\n", null, null, null, null, null, null, null, null, null, "import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n  Axios,\n  AxiosError,\n  CanceledError,\n  isCancel,\n  CancelToken,\n  VERSION,\n  all,\n  Cancel,\n  isAxiosError,\n  spread,\n  toFormData,\n  AxiosHeaders,\n  HttpStatusCode,\n  formToJSON,\n  getAdapter,\n  mergeConfig,\n  create,\n} = axios;\n\nexport {\n  axios as default,\n  create,\n  Axios,\n  AxiosError,\n  CanceledError,\n  isCancel,\n  CancelToken,\n  VERSION,\n  all,\n  Cancel,\n  isAxiosError,\n  spread,\n  toFormData,\n  AxiosHeaders,\n  HttpStatusCode,\n  formToJSON,\n  getAdapter,\n  mergeConfig,\n};\n", "'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport { VERSION } from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from './core/AxiosHeaders.js';\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n  const context = new Axios(defaultConfig);\n  const instance = bind(Axios.prototype.request, context);\n\n  // Copy axios.prototype to instance\n  utils.extend(instance, Axios.prototype, context, { allOwnKeys: true });\n\n  // Copy context to instance\n  utils.extend(instance, context, null, { allOwnKeys: true });\n\n  // Factory for creating new instances\n  instance.create = function create(instanceConfig) {\n    return createInstance(mergeConfig(defaultConfig, instanceConfig));\n  };\n\n  return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n  return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = (thing) => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios;\n", "'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst { toString } = Object.prototype;\nconst { getPrototypeOf } = Object;\nconst { iterator, toStringTag } = Symbol;\n\nconst kindOf = ((cache) => (thing) => {\n  const str = toString.call(thing);\n  return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n  type = type.toLowerCase();\n  return (thing) => kindOf(thing) === type;\n};\n\nconst typeOfTest = (type) => (thing) => typeof thing === type;\n\n/**\n * Determine if a value is a non-null object\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst { isArray } = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n  return (\n    val !== null &&\n    !isUndefined(val) &&\n    val.constructor !== null &&\n    !isUndefined(val.constructor) &&\n    isFunction(val.constructor.isBuffer) &&\n    val.constructor.isBuffer(val)\n  );\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n  let result;\n  if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n    result = ArrayBuffer.isView(val);\n  } else {\n    result = val && val.buffer && isArrayBuffer(val.buffer);\n  }\n  return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = (thing) => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n  if (kindOf(val) !== 'object') {\n    return false;\n  }\n\n  const prototype = getPrototypeOf(val);\n  return (\n    (prototype === null ||\n      prototype === Object.prototype ||\n      Object.getPrototypeOf(prototype) === null) &&\n    !(toStringTag in val) &&\n    !(iterator in val)\n  );\n};\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n  // Early return for non-objects or Buffers to prevent RangeError\n  if (!isObject(val) || isBuffer(val)) {\n    return false;\n  }\n\n  try {\n    return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n  } catch (e) {\n    // Fallback for any other objects that might cause RangeError with Object.keys()\n    return false;\n  }\n};\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a React Native Blob\n * React Native \"blob\": an object with a `uri` attribute. Optionally, it can\n * also have a `name` and `type` attribute to specify filename and content type\n *\n * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71\n *\n * @param {*} value The value to test\n *\n * @returns {boolean} True if value is a React Native Blob, otherwise false\n */\nconst isReactNativeBlob = (value) => {\n  return !!(value && typeof value.uri !== 'undefined');\n};\n\n/**\n * Determine if environment is React Native\n * ReactNative `FormData` has a non-standard `getParts()` method\n *\n * @param {*} formData The formData to test\n *\n * @returns {boolean} True if environment is React Native, otherwise false\n */\nconst isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined';\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a FileList, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction getGlobal() {\n  if (typeof globalThis !== 'undefined') return globalThis;\n  if (typeof self !== 'undefined') return self;\n  if (typeof window !== 'undefined') return window;\n  if (typeof global !== 'undefined') return global;\n  return {};\n}\n\nconst G = getGlobal();\nconst FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined;\n\nconst isFormData = (thing) => {\n  if (!thing) return false;\n  if (FormDataCtor && thing instanceof FormDataCtor) return true;\n  // Reject plain objects inheriting directly from Object.prototype so prototype-pollution gadgets can't spoof FormData.\n  const proto = getPrototypeOf(thing);\n  if (!proto || proto === Object.prototype) return false;\n  if (!isFunction(thing.append)) return false;\n  const kind = kindOf(thing);\n  return (\n    kind === 'formdata' ||\n    // detect form-data instance\n    (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n  );\n};\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = [\n  'ReadableStream',\n  'Request',\n  'Response',\n  'Headers',\n].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => {\n  return str.trim ? str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n};\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array<unknown>} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, { allOwnKeys = false } = {}) {\n  // Don't bother if no value provided\n  if (obj === null || typeof obj === 'undefined') {\n    return;\n  }\n\n  let i;\n  let l;\n\n  // Force an array if not already something iterable\n  if (typeof obj !== 'object') {\n    /*eslint no-param-reassign:0*/\n    obj = [obj];\n  }\n\n  if (isArray(obj)) {\n    // Iterate over array values\n    for (i = 0, l = obj.length; i < l; i++) {\n      fn.call(null, obj[i], i, obj);\n    }\n  } else {\n    // Buffer check\n    if (isBuffer(obj)) {\n      return;\n    }\n\n    // Iterate over object keys\n    const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n    const len = keys.length;\n    let key;\n\n    for (i = 0; i < len; i++) {\n      key = keys[i];\n      fn.call(null, obj[key], key, obj);\n    }\n  }\n}\n\n/**\n * Finds a key in an object, case-insensitive, returning the actual key name.\n * Returns null if the object is a Buffer or if no match is found.\n *\n * @param {Object} obj - The object to search.\n * @param {string} key - The key to find (case-insensitive).\n * @returns {?string} The actual key name if found, otherwise null.\n */\nfunction findKey(obj, key) {\n  if (isBuffer(obj)) {\n    return null;\n  }\n\n  key = key.toLowerCase();\n  const keys = Object.keys(obj);\n  let i = keys.length;\n  let _key;\n  while (i-- > 0) {\n    _key = keys[i];\n    if (key === _key.toLowerCase()) {\n      return _key;\n    }\n  }\n  return null;\n}\n\nconst _global = (() => {\n  /*eslint no-undef:0*/\n  if (typeof globalThis !== 'undefined') return globalThis;\n  return typeof self !== 'undefined' ? self : typeof window !== 'undefined' ? window : global;\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * const result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(...objs) {\n  const { caseless, skipUndefined } = (isContextDefined(this) && this) || {};\n  const result = {};\n  const assignValue = (val, key) => {\n    // Skip dangerous property names to prevent prototype pollution\n    if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n      return;\n    }\n\n    const targetKey = (caseless && findKey(result, key)) || key;\n    // Read via own-prop only \u2014 a bare `result[targetKey]` walks the prototype\n    // chain, so a polluted Object.prototype value could surface here and get\n    // copied into the merged result.\n    const existing = hasOwnProperty(result, targetKey) ? result[targetKey] : undefined;\n    if (isPlainObject(existing) && isPlainObject(val)) {\n      result[targetKey] = merge(existing, val);\n    } else if (isPlainObject(val)) {\n      result[targetKey] = merge({}, val);\n    } else if (isArray(val)) {\n      result[targetKey] = val.slice();\n    } else if (!skipUndefined || !isUndefined(val)) {\n      result[targetKey] = val;\n    }\n  };\n\n  for (let i = 0, l = objs.length; i < l; i++) {\n    objs[i] && forEach(objs[i], assignValue);\n  }\n  return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, { allOwnKeys } = {}) => {\n  forEach(\n    b,\n    (val, key) => {\n      if (thisArg && isFunction(val)) {\n        Object.defineProperty(a, key, {\n          // Null-proto descriptor so a polluted Object.prototype.get cannot\n          // hijack defineProperty's accessor-vs-data resolution.\n          __proto__: null,\n          value: bind(val, thisArg),\n          writable: true,\n          enumerable: true,\n          configurable: true,\n        });\n      } else {\n        Object.defineProperty(a, key, {\n          __proto__: null,\n          value: val,\n          writable: true,\n          enumerable: true,\n          configurable: true,\n        });\n      }\n    },\n    { allOwnKeys }\n  );\n  return a;\n};\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n  if (content.charCodeAt(0) === 0xfeff) {\n    content = content.slice(1);\n  }\n  return content;\n};\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n  constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n  Object.defineProperty(constructor.prototype, 'constructor', {\n    __proto__: null,\n    value: constructor,\n    writable: true,\n    enumerable: false,\n    configurable: true,\n  });\n  Object.defineProperty(constructor, 'super', {\n    __proto__: null,\n    value: superConstructor.prototype,\n  });\n  props && Object.assign(constructor.prototype, props);\n};\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n  let props;\n  let i;\n  let prop;\n  const merged = {};\n\n  destObj = destObj || {};\n  // eslint-disable-next-line no-eq-null,eqeqeq\n  if (sourceObj == null) return destObj;\n\n  do {\n    props = Object.getOwnPropertyNames(sourceObj);\n    i = props.length;\n    while (i-- > 0) {\n      prop = props[i];\n      if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n        destObj[prop] = sourceObj[prop];\n        merged[prop] = true;\n      }\n    }\n    sourceObj = filter !== false && getPrototypeOf(sourceObj);\n  } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n  return destObj;\n};\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n  str = String(str);\n  if (position === undefined || position > str.length) {\n    position = str.length;\n  }\n  position -= searchString.length;\n  const lastIndex = str.indexOf(searchString, position);\n  return lastIndex !== -1 && lastIndex === position;\n};\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n  if (!thing) return null;\n  if (isArray(thing)) return thing;\n  let i = thing.length;\n  if (!isNumber(i)) return null;\n  const arr = new Array(i);\n  while (i-- > 0) {\n    arr[i] = thing[i];\n  }\n  return arr;\n};\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = ((TypedArray) => {\n  // eslint-disable-next-line func-names\n  return (thing) => {\n    return TypedArray && thing instanceof TypedArray;\n  };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n  const generator = obj && obj[iterator];\n\n  const _iterator = generator.call(obj);\n\n  let result;\n\n  while ((result = _iterator.next()) && !result.done) {\n    const pair = result.value;\n    fn.call(obj, pair[0], pair[1]);\n  }\n};\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n  let matches;\n  const arr = [];\n\n  while ((matches = regExp.exec(str)) !== null) {\n    arr.push(matches);\n  }\n\n  return arr;\n};\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = (str) => {\n  return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g, function replacer(m, p1, p2) {\n    return p1.toUpperCase() + p2;\n  });\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (\n  ({ hasOwnProperty }) =>\n  (obj, prop) =>\n    hasOwnProperty.call(obj, prop)\n)(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n  const descriptors = Object.getOwnPropertyDescriptors(obj);\n  const reducedDescriptors = {};\n\n  forEach(descriptors, (descriptor, name) => {\n    let ret;\n    if ((ret = reducer(descriptor, name, obj)) !== false) {\n      reducedDescriptors[name] = ret || descriptor;\n    }\n  });\n\n  Object.defineProperties(obj, reducedDescriptors);\n};\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n  reduceDescriptors(obj, (descriptor, name) => {\n    // skip restricted props in strict mode\n    if (isFunction(obj) && ['arguments', 'caller', 'callee'].includes(name)) {\n      return false;\n    }\n\n    const value = obj[name];\n\n    if (!isFunction(value)) return;\n\n    descriptor.enumerable = false;\n\n    if ('writable' in descriptor) {\n      descriptor.writable = false;\n      return;\n    }\n\n    if (!descriptor.set) {\n      descriptor.set = () => {\n        throw Error(\"Can not rewrite read-only method '\" + name + \"'\");\n      };\n    }\n  });\n};\n\n/**\n * Converts an array or a delimited string into an object set with values as keys and true as values.\n * Useful for fast membership checks.\n *\n * @param {Array|string} arrayOrString - The array or string to convert.\n * @param {string} delimiter - The delimiter to use if input is a string.\n * @returns {Object} An object with keys from the array or string, values set to true.\n */\nconst toObjectSet = (arrayOrString, delimiter) => {\n  const obj = {};\n\n  const define = (arr) => {\n    arr.forEach((value) => {\n      obj[value] = true;\n    });\n  };\n\n  isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n  return obj;\n};\n\nconst noop = () => {};\n\nconst toFiniteNumber = (value, defaultValue) => {\n  return value != null && Number.isFinite((value = +value)) ? value : defaultValue;\n};\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n  return !!(\n    thing &&\n    isFunction(thing.append) &&\n    thing[toStringTag] === 'FormData' &&\n    thing[iterator]\n  );\n}\n\n/**\n * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers.\n *\n * @param {Object} obj - The object to convert.\n * @returns {Object} The JSON-compatible object.\n */\nconst toJSONObject = (obj) => {\n  const stack = new Array(10);\n\n  const visit = (source, i) => {\n    if (isObject(source)) {\n      if (stack.indexOf(source) >= 0) {\n        return;\n      }\n\n      //Buffer check\n      if (isBuffer(source)) {\n        return source;\n      }\n\n      if (!('toJSON' in source)) {\n        stack[i] = source;\n        const target = isArray(source) ? [] : {};\n\n        forEach(source, (value, key) => {\n          const reducedValue = visit(value, i + 1);\n          !isUndefined(reducedValue) && (target[key] = reducedValue);\n        });\n\n        stack[i] = undefined;\n\n        return target;\n      }\n    }\n\n    return source;\n  };\n\n  return visit(obj, 0);\n};\n\n/**\n * Determines if a value is an async function.\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is an async function, otherwise false.\n */\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\n/**\n * Determines if a value is thenable (has then and catch methods).\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is thenable, otherwise false.\n */\nconst isThenable = (thing) =>\n  thing &&\n  (isObject(thing) || isFunction(thing)) &&\n  isFunction(thing.then) &&\n  isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\n/**\n * Provides a cross-platform setImmediate implementation.\n * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout.\n *\n * @param {boolean} setImmediateSupported - Whether setImmediate is supported.\n * @param {boolean} postMessageSupported - Whether postMessage is supported.\n * @returns {Function} A function to schedule a callback asynchronously.\n */\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n  if (setImmediateSupported) {\n    return setImmediate;\n  }\n\n  return postMessageSupported\n    ? ((token, callbacks) => {\n        _global.addEventListener(\n          'message',\n          ({ source, data }) => {\n            if (source === _global && data === token) {\n              callbacks.length && callbacks.shift()();\n            }\n          },\n          false\n        );\n\n        return (cb) => {\n          callbacks.push(cb);\n          _global.postMessage(token, '*');\n        };\n      })(`axios@${Math.random()}`, [])\n    : (cb) => setTimeout(cb);\n})(typeof setImmediate === 'function', isFunction(_global.postMessage));\n\n/**\n * Schedules a microtask or asynchronous callback as soon as possible.\n * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate.\n *\n * @type {Function}\n */\nconst asap =\n  typeof queueMicrotask !== 'undefined'\n    ? queueMicrotask.bind(_global)\n    : (typeof process !== 'undefined' && process.nextTick) || _setImmediate;\n\n// *********************\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\nexport default {\n  isArray,\n  isArrayBuffer,\n  isBuffer,\n  isFormData,\n  isArrayBufferView,\n  isString,\n  isNumber,\n  isBoolean,\n  isObject,\n  isPlainObject,\n  isEmptyObject,\n  isReadableStream,\n  isRequest,\n  isResponse,\n  isHeaders,\n  isUndefined,\n  isDate,\n  isFile,\n  isReactNativeBlob,\n  isReactNative,\n  isBlob,\n  isRegExp,\n  isFunction,\n  isStream,\n  isURLSearchParams,\n  isTypedArray,\n  isFileList,\n  forEach,\n  merge,\n  extend,\n  trim,\n  stripBOM,\n  inherits,\n  toFlatObject,\n  kindOf,\n  kindOfTest,\n  endsWith,\n  toArray,\n  forEachEntry,\n  matchAll,\n  isHTMLForm,\n  hasOwnProperty,\n  hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n  reduceDescriptors,\n  freezeMethods,\n  toObjectSet,\n  toCamelCase,\n  noop,\n  toFiniteNumber,\n  findKey,\n  global: _global,\n  isContextDefined,\n  isSpecCompliantForm,\n  toJSONObject,\n  isAsyncFn,\n  isThenable,\n  setImmediate: _setImmediate,\n  asap,\n  isIterable,\n};\n", "'use strict';\n\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\n */\nexport default function bind(fn, thisArg) {\n  return function wrap() {\n    return fn.apply(thisArg, arguments);\n  };\n}\n", "'use strict';\n\nimport utils from '../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\nimport transitionalDefaults from '../defaults/transitional.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n  constructor(instanceConfig) {\n    this.defaults = instanceConfig || {};\n    this.interceptors = {\n      request: new InterceptorManager(),\n      response: new InterceptorManager(),\n    };\n  }\n\n  /**\n   * Dispatch a request\n   *\n   * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n   * @param {?Object} config\n   *\n   * @returns {Promise} The Promise to be fulfilled\n   */\n  async request(configOrUrl, config) {\n    try {\n      return await this._request(configOrUrl, config);\n    } catch (err) {\n      if (err instanceof Error) {\n        let dummy = {};\n\n        Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n        // slice off the Error: ... line\n        const stack = (() => {\n          if (!dummy.stack) {\n            return '';\n          }\n\n          const firstNewlineIndex = dummy.stack.indexOf('\\n');\n\n          return firstNewlineIndex === -1 ? '' : dummy.stack.slice(firstNewlineIndex + 1);\n        })();\n        try {\n          if (!err.stack) {\n            err.stack = stack;\n            // match without the 2 top stack lines\n          } else if (stack) {\n            const firstNewlineIndex = stack.indexOf('\\n');\n            const secondNewlineIndex =\n              firstNewlineIndex === -1 ? -1 : stack.indexOf('\\n', firstNewlineIndex + 1);\n            const stackWithoutTwoTopLines =\n              secondNewlineIndex === -1 ? '' : stack.slice(secondNewlineIndex + 1);\n\n            if (!String(err.stack).endsWith(stackWithoutTwoTopLines)) {\n              err.stack += '\\n' + stack;\n            }\n          }\n        } catch (e) {\n          // ignore the case where \"stack\" is an un-writable property\n        }\n      }\n\n      throw err;\n    }\n  }\n\n  _request(configOrUrl, config) {\n    /*eslint no-param-reassign:0*/\n    // Allow for axios('example/url'[, config]) a la fetch API\n    if (typeof configOrUrl === 'string') {\n      config = config || {};\n      config.url = configOrUrl;\n    } else {\n      config = configOrUrl || {};\n    }\n\n    config = mergeConfig(this.defaults, config);\n\n    const { transitional, paramsSerializer, headers } = config;\n\n    if (transitional !== undefined) {\n      validator.assertOptions(\n        transitional,\n        {\n          silentJSONParsing: validators.transitional(validators.boolean),\n          forcedJSONParsing: validators.transitional(validators.boolean),\n          clarifyTimeoutError: validators.transitional(validators.boolean),\n          legacyInterceptorReqResOrdering: validators.transitional(validators.boolean),\n        },\n        false\n      );\n    }\n\n    if (paramsSerializer != null) {\n      if (utils.isFunction(paramsSerializer)) {\n        config.paramsSerializer = {\n          serialize: paramsSerializer,\n        };\n      } else {\n        validator.assertOptions(\n          paramsSerializer,\n          {\n            encode: validators.function,\n            serialize: validators.function,\n          },\n          true\n        );\n      }\n    }\n\n    // Set config.allowAbsoluteUrls\n    if (config.allowAbsoluteUrls !== undefined) {\n      // do nothing\n    } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n      config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n    } else {\n      config.allowAbsoluteUrls = true;\n    }\n\n    validator.assertOptions(\n      config,\n      {\n        baseUrl: validators.spelling('baseURL'),\n        withXsrfToken: validators.spelling('withXSRFToken'),\n      },\n      true\n    );\n\n    // Set config.method\n    config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n    // Flatten headers\n    let contextHeaders = headers && utils.merge(headers.common, headers[config.method]);\n\n    headers &&\n      utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'query', 'common'], (method) => {\n        delete headers[method];\n      });\n\n    config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n    // filter out skipped interceptors\n    const requestInterceptorChain = [];\n    let synchronousRequestInterceptors = true;\n    this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n      if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n        return;\n      }\n\n      synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n      const transitional = config.transitional || transitionalDefaults;\n      const legacyInterceptorReqResOrdering =\n        transitional && transitional.legacyInterceptorReqResOrdering;\n\n      if (legacyInterceptorReqResOrdering) {\n        requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n      } else {\n        requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n      }\n    });\n\n    const responseInterceptorChain = [];\n    this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n      responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n    });\n\n    let promise;\n    let i = 0;\n    let len;\n\n    if (!synchronousRequestInterceptors) {\n      const chain = [dispatchRequest.bind(this), undefined];\n      chain.unshift(...requestInterceptorChain);\n      chain.push(...responseInterceptorChain);\n      len = chain.length;\n\n      promise = Promise.resolve(config);\n\n      while (i < len) {\n        promise = promise.then(chain[i++], chain[i++]);\n      }\n\n      return promise;\n    }\n\n    len = requestInterceptorChain.length;\n\n    let newConfig = config;\n\n    while (i < len) {\n      const onFulfilled = requestInterceptorChain[i++];\n      const onRejected = requestInterceptorChain[i++];\n      try {\n        newConfig = onFulfilled(newConfig);\n      } catch (error) {\n        onRejected.call(this, error);\n        break;\n      }\n    }\n\n    try {\n      promise = dispatchRequest.call(this, newConfig);\n    } catch (error) {\n      return Promise.reject(error);\n    }\n\n    i = 0;\n    len = responseInterceptorChain.length;\n\n    while (i < len) {\n      promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n    }\n\n    return promise;\n  }\n\n  getUri(config) {\n    config = mergeConfig(this.defaults, config);\n    const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n    return buildURL(fullPath, config.params, config.paramsSerializer);\n  }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n  /*eslint func-names:0*/\n  Axios.prototype[method] = function (url, config) {\n    return this.request(\n      mergeConfig(config || {}, {\n        method,\n        url,\n        data: (config || {}).data,\n      })\n    );\n  };\n});\n\nutils.forEach(['post', 'put', 'patch', 'query'], function forEachMethodWithData(method) {\n  function generateHTTPMethod(isForm) {\n    return function httpMethod(url, data, config) {\n      return this.request(\n        mergeConfig(config || {}, {\n          method,\n          headers: isForm\n            ? {\n                'Content-Type': 'multipart/form-data',\n              }\n            : {},\n          url,\n          data,\n        })\n      );\n    };\n  }\n\n  Axios.prototype[method] = generateHTTPMethod();\n\n  // QUERY is a safe/idempotent read method; multipart form bodies don't fit\n  // its semantics, so no queryForm shorthand is generated.\n  if (method !== 'query') {\n    Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n  }\n});\n\nexport default Axios;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces URL-encoded forms of `:`, `$`, `,`, and spaces with\n * their plain counterparts (`:`, `$`, `,`, `+`).\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nexport function encode(val) {\n  return encodeURIComponent(val)\n    .replace(/%3A/gi, ':')\n    .replace(/%24/g, '$')\n    .replace(/%2C/gi, ',')\n    .replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n  if (!params) {\n    return url;\n  }\n\n  const _encode = (options && options.encode) || encode;\n\n  const _options = utils.isFunction(options)\n    ? {\n        serialize: options,\n      }\n    : options;\n\n  const serializeFn = _options && _options.serialize;\n\n  let serializedParams;\n\n  if (serializeFn) {\n    serializedParams = serializeFn(params, _options);\n  } else {\n    serializedParams = utils.isURLSearchParams(params)\n      ? params.toString()\n      : new AxiosURLSearchParams(params, _options).toString(_encode);\n  }\n\n  if (serializedParams) {\n    const hashmarkIndex = url.indexOf('#');\n\n    if (hashmarkIndex !== -1) {\n      url = url.slice(0, hashmarkIndex);\n    }\n    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n  }\n\n  return url;\n}\n", "'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n  const charMap = {\n    '!': '%21',\n    \"'\": '%27',\n    '(': '%28',\n    ')': '%29',\n    '~': '%7E',\n    '%20': '+',\n  };\n  return encodeURIComponent(str).replace(/[!'()~]|%20/g, function replacer(match) {\n    return charMap[match];\n  });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n  this._pairs = [];\n\n  params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n  this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n  const _encode = encoder\n    ? function (value) {\n        return encoder.call(this, value, encode);\n      }\n    : encode;\n\n  return this._pairs\n    .map(function each(pair) {\n      return _encode(pair[0]) + '=' + _encode(pair[1]);\n    }, '')\n    .join('&');\n};\n\nexport default AxiosURLSearchParams;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n  return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n  return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n  if (!path) return key;\n  return path\n    .concat(key)\n    .map(function each(token, i) {\n      // eslint-disable-next-line no-param-reassign\n      token = removeBrackets(token);\n      return !dots && i ? '[' + token + ']' : token;\n    })\n    .join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n  return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n  return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n  if (!utils.isObject(obj)) {\n    throw new TypeError('target must be an object');\n  }\n\n  // eslint-disable-next-line no-param-reassign\n  formData = formData || new (PlatformFormData || FormData)();\n\n  // eslint-disable-next-line no-param-reassign\n  options = utils.toFlatObject(\n    options,\n    {\n      metaTokens: true,\n      dots: false,\n      indexes: false,\n    },\n    false,\n    function defined(option, source) {\n      // eslint-disable-next-line no-eq-null,eqeqeq\n      return !utils.isUndefined(source[option]);\n    }\n  );\n\n  const metaTokens = options.metaTokens;\n  // eslint-disable-next-line no-use-before-define\n  const visitor = options.visitor || defaultVisitor;\n  const dots = options.dots;\n  const indexes = options.indexes;\n  const _Blob = options.Blob || (typeof Blob !== 'undefined' && Blob);\n  const maxDepth = options.maxDepth === undefined ? 100 : options.maxDepth;\n  const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n  if (!utils.isFunction(visitor)) {\n    throw new TypeError('visitor must be a function');\n  }\n\n  function convertValue(value) {\n    if (value === null) return '';\n\n    if (utils.isDate(value)) {\n      return value.toISOString();\n    }\n\n    if (utils.isBoolean(value)) {\n      return value.toString();\n    }\n\n    if (!useBlob && utils.isBlob(value)) {\n      throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n    }\n\n    if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n      return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n    }\n\n    return value;\n  }\n\n  /**\n   * Default visitor.\n   *\n   * @param {*} value\n   * @param {String|Number} key\n   * @param {Array<String|Number>} path\n   * @this {FormData}\n   *\n   * @returns {boolean} return true to visit the each prop of the value recursively\n   */\n  function defaultVisitor(value, key, path) {\n    let arr = value;\n\n    if (utils.isReactNative(formData) && utils.isReactNativeBlob(value)) {\n      formData.append(renderKey(path, key, dots), convertValue(value));\n      return false;\n    }\n\n    if (value && !path && typeof value === 'object') {\n      if (utils.endsWith(key, '{}')) {\n        // eslint-disable-next-line no-param-reassign\n        key = metaTokens ? key : key.slice(0, -2);\n        // eslint-disable-next-line no-param-reassign\n        value = JSON.stringify(value);\n      } else if (\n        (utils.isArray(value) && isFlatArray(value)) ||\n        ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value)))\n      ) {\n        // eslint-disable-next-line no-param-reassign\n        key = removeBrackets(key);\n\n        arr.forEach(function each(el, index) {\n          !(utils.isUndefined(el) || el === null) &&\n            formData.append(\n              // eslint-disable-next-line no-nested-ternary\n              indexes === true\n                ? renderKey([key], index, dots)\n                : indexes === null\n                  ? key\n                  : key + '[]',\n              convertValue(el)\n            );\n        });\n        return false;\n      }\n    }\n\n    if (isVisitable(value)) {\n      return true;\n    }\n\n    formData.append(renderKey(path, key, dots), convertValue(value));\n\n    return false;\n  }\n\n  const stack = [];\n\n  const exposedHelpers = Object.assign(predicates, {\n    defaultVisitor,\n    convertValue,\n    isVisitable,\n  });\n\n  function build(value, path, depth = 0) {\n    if (utils.isUndefined(value)) return;\n\n    if (depth > maxDepth) {\n      throw new AxiosError(\n        'Object is too deeply nested (' + depth + ' levels). Max depth: ' + maxDepth,\n        AxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED\n      );\n    }\n\n    if (stack.indexOf(value) !== -1) {\n      throw Error('Circular reference detected in ' + path.join('.'));\n    }\n\n    stack.push(value);\n\n    utils.forEach(value, function each(el, key) {\n      const result =\n        !(utils.isUndefined(el) || el === null) &&\n        visitor.call(formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers);\n\n      if (result === true) {\n        build(el, path ? path.concat(key) : [key], depth + 1);\n      }\n    });\n\n    stack.pop();\n  }\n\n  if (!utils.isObject(obj)) {\n    throw new TypeError('data must be an object');\n  }\n\n  build(obj);\n\n  return formData;\n}\n\nexport default toFormData;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst REDACTED = '[REDACTED ****]';\n\nfunction hasOwnOrPrototypeToJSON(source) {\n  if (utils.hasOwnProp(source, 'toJSON')) {\n    return true;\n  }\n\n  let prototype = Object.getPrototypeOf(source);\n\n  while (prototype && prototype !== Object.prototype) {\n    if (utils.hasOwnProp(prototype, 'toJSON')) {\n      return true;\n    }\n\n    prototype = Object.getPrototypeOf(prototype);\n  }\n\n  return false;\n}\n\n// Build a plain-object snapshot of `config` and replace the value of any key\n// (case-insensitive) listed in `redactKeys` with REDACTED. Walks through arrays\n// and AxiosHeaders, and short-circuits on circular references.\nfunction redactConfig(config, redactKeys) {\n  const lowerKeys = new Set(redactKeys.map((k) => String(k).toLowerCase()));\n  const seen = [];\n\n  const visit = (source) => {\n    if (source === null || typeof source !== 'object') return source;\n    if (utils.isBuffer(source)) return source;\n    if (seen.indexOf(source) !== -1) return undefined;\n\n    if (source instanceof AxiosHeaders) {\n      source = source.toJSON();\n    }\n\n    seen.push(source);\n\n    let result;\n    if (utils.isArray(source)) {\n      result = [];\n      source.forEach((v, i) => {\n        const reducedValue = visit(v);\n        if (!utils.isUndefined(reducedValue)) {\n          result[i] = reducedValue;\n        }\n      });\n    } else {\n      if (!utils.isPlainObject(source) && hasOwnOrPrototypeToJSON(source)) {\n        seen.pop();\n        return source;\n      }\n\n      result = Object.create(null);\n      for (const [key, value] of Object.entries(source)) {\n        const reducedValue = lowerKeys.has(key.toLowerCase()) ? REDACTED : visit(value);\n        if (!utils.isUndefined(reducedValue)) {\n          result[key] = reducedValue;\n        }\n      }\n    }\n\n    seen.pop();\n    return result;\n  };\n\n  return visit(config);\n}\n\nclass AxiosError extends Error {\n  static from(error, code, config, request, response, customProps) {\n    const axiosError = new AxiosError(error.message, code || error.code, config, request, response);\n    axiosError.cause = error;\n    axiosError.name = error.name;\n\n    // Preserve status from the original error if not already set from response\n    if (error.status != null && axiosError.status == null) {\n      axiosError.status = error.status;\n    }\n\n    customProps && Object.assign(axiosError, customProps);\n    return axiosError;\n  }\n\n  /**\n   * Create an Error with the specified message, config, error code, request and response.\n   *\n   * @param {string} message The error message.\n   * @param {string} [code] The error code (for example, 'ECONNABORTED').\n   * @param {Object} [config] The config.\n   * @param {Object} [request] The request.\n   * @param {Object} [response] The response.\n   *\n   * @returns {Error} The created error.\n   */\n  constructor(message, code, config, request, response) {\n    super(message);\n\n    // Make message enumerable to maintain backward compatibility\n    // The native Error constructor sets message as non-enumerable,\n    // but axios < v1.13.3 had it as enumerable\n    Object.defineProperty(this, 'message', {\n      // Null-proto descriptor so a polluted Object.prototype.get cannot turn\n      // this data descriptor into an accessor descriptor on the way in.\n      __proto__: null,\n      value: message,\n      enumerable: true,\n      writable: true,\n      configurable: true,\n    });\n\n    this.name = 'AxiosError';\n    this.isAxiosError = true;\n    code && (this.code = code);\n    config && (this.config = config);\n    request && (this.request = request);\n    if (response) {\n      this.response = response;\n      this.status = response.status;\n    }\n  }\n\n  toJSON() {\n    // Opt-in redaction: when the request config carries a `redact` array, the\n    // value of any matching key (case-insensitive, at any depth) is replaced\n    // with REDACTED in the serialized snapshot. Undefined or empty leaves the\n    // existing serialization behavior unchanged.\n    const config = this.config;\n    const redactKeys = config && utils.hasOwnProp(config, 'redact') ? config.redact : undefined;\n    const serializedConfig =\n      utils.isArray(redactKeys) && redactKeys.length > 0\n        ? redactConfig(config, redactKeys)\n        : utils.toJSONObject(config);\n\n    return {\n      // Standard\n      message: this.message,\n      name: this.name,\n      // Microsoft\n      description: this.description,\n      number: this.number,\n      // Mozilla\n      fileName: this.fileName,\n      lineNumber: this.lineNumber,\n      columnNumber: this.columnNumber,\n      stack: this.stack,\n      // Axios\n      config: serializedConfig,\n      code: this.code,\n      status: this.status,\n    };\n  }\n}\n\n// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated.\nAxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE';\nAxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION';\nAxiosError.ECONNABORTED = 'ECONNABORTED';\nAxiosError.ETIMEDOUT = 'ETIMEDOUT';\nAxiosError.ECONNREFUSED = 'ECONNREFUSED';\nAxiosError.ERR_NETWORK = 'ERR_NETWORK';\nAxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS';\nAxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED';\nAxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE';\nAxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST';\nAxiosError.ERR_CANCELED = 'ERR_CANCELED';\nAxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT';\nAxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL';\nAxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED = 'ERR_FORM_DATA_DEPTH_EXCEEDED';\n\nexport default AxiosError;\n", "'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nconst INVALID_HEADER_VALUE_CHARS_RE = /[^\\x09\\x20-\\x7E\\x80-\\xFF]/g;\n\nfunction trimSPorHTAB(str) {\n  let start = 0;\n  let end = str.length;\n\n  while (start < end) {\n    const code = str.charCodeAt(start);\n\n    if (code !== 0x09 && code !== 0x20) {\n      break;\n    }\n\n    start += 1;\n  }\n\n  while (end > start) {\n    const code = str.charCodeAt(end - 1);\n\n    if (code !== 0x09 && code !== 0x20) {\n      break;\n    }\n\n    end -= 1;\n  }\n\n  return start === 0 && end === str.length ? str : str.slice(start, end);\n}\n\nfunction normalizeHeader(header) {\n  return header && String(header).trim().toLowerCase();\n}\n\nfunction sanitizeHeaderValue(str) {\n  return trimSPorHTAB(str.replace(INVALID_HEADER_VALUE_CHARS_RE, ''));\n}\n\nfunction normalizeValue(value) {\n  if (value === false || value == null) {\n    return value;\n  }\n\n  return utils.isArray(value) ? value.map(normalizeValue) : sanitizeHeaderValue(String(value));\n}\n\nfunction parseTokens(str) {\n  const tokens = Object.create(null);\n  const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n  let match;\n\n  while ((match = tokensRE.exec(str))) {\n    tokens[match[1]] = match[2];\n  }\n\n  return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n  if (utils.isFunction(filter)) {\n    return filter.call(this, value, header);\n  }\n\n  if (isHeaderNameFilter) {\n    value = header;\n  }\n\n  if (!utils.isString(value)) return;\n\n  if (utils.isString(filter)) {\n    return value.indexOf(filter) !== -1;\n  }\n\n  if (utils.isRegExp(filter)) {\n    return filter.test(value);\n  }\n}\n\nfunction formatHeader(header) {\n  return header\n    .trim()\n    .toLowerCase()\n    .replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n      return char.toUpperCase() + str;\n    });\n}\n\nfunction buildAccessors(obj, header) {\n  const accessorName = utils.toCamelCase(' ' + header);\n\n  ['get', 'set', 'has'].forEach((methodName) => {\n    Object.defineProperty(obj, methodName + accessorName, {\n      // Null-proto descriptor so a polluted Object.prototype.get cannot turn\n      // this data descriptor into an accessor descriptor on the way in.\n      __proto__: null,\n      value: function (arg1, arg2, arg3) {\n        return this[methodName].call(this, header, arg1, arg2, arg3);\n      },\n      configurable: true,\n    });\n  });\n}\n\nclass AxiosHeaders {\n  constructor(headers) {\n    headers && this.set(headers);\n  }\n\n  set(header, valueOrRewrite, rewrite) {\n    const self = this;\n\n    function setHeader(_value, _header, _rewrite) {\n      const lHeader = normalizeHeader(_header);\n\n      if (!lHeader) {\n        throw new Error('header name must be a non-empty string');\n      }\n\n      const key = utils.findKey(self, lHeader);\n\n      if (\n        !key ||\n        self[key] === undefined ||\n        _rewrite === true ||\n        (_rewrite === undefined && self[key] !== false)\n      ) {\n        self[key || _header] = normalizeValue(_value);\n      }\n    }\n\n    const setHeaders = (headers, _rewrite) =>\n      utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n    if (utils.isPlainObject(header) || header instanceof this.constructor) {\n      setHeaders(header, valueOrRewrite);\n    } else if (utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n      setHeaders(parseHeaders(header), valueOrRewrite);\n    } else if (utils.isObject(header) && utils.isIterable(header)) {\n      let obj = {},\n        dest,\n        key;\n      for (const entry of header) {\n        if (!utils.isArray(entry)) {\n          throw TypeError('Object iterator must return a key-value pair');\n        }\n\n        obj[(key = entry[0])] = (dest = obj[key])\n          ? utils.isArray(dest)\n            ? [...dest, entry[1]]\n            : [dest, entry[1]]\n          : entry[1];\n      }\n\n      setHeaders(obj, valueOrRewrite);\n    } else {\n      header != null && setHeader(valueOrRewrite, header, rewrite);\n    }\n\n    return this;\n  }\n\n  get(header, parser) {\n    header = normalizeHeader(header);\n\n    if (header) {\n      const key = utils.findKey(this, header);\n\n      if (key) {\n        const value = this[key];\n\n        if (!parser) {\n          return value;\n        }\n\n        if (parser === true) {\n          return parseTokens(value);\n        }\n\n        if (utils.isFunction(parser)) {\n          return parser.call(this, value, key);\n        }\n\n        if (utils.isRegExp(parser)) {\n          return parser.exec(value);\n        }\n\n        throw new TypeError('parser must be boolean|regexp|function');\n      }\n    }\n  }\n\n  has(header, matcher) {\n    header = normalizeHeader(header);\n\n    if (header) {\n      const key = utils.findKey(this, header);\n\n      return !!(\n        key &&\n        this[key] !== undefined &&\n        (!matcher || matchHeaderValue(this, this[key], key, matcher))\n      );\n    }\n\n    return false;\n  }\n\n  delete(header, matcher) {\n    const self = this;\n    let deleted = false;\n\n    function deleteHeader(_header) {\n      _header = normalizeHeader(_header);\n\n      if (_header) {\n        const key = utils.findKey(self, _header);\n\n        if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n          delete self[key];\n\n          deleted = true;\n        }\n      }\n    }\n\n    if (utils.isArray(header)) {\n      header.forEach(deleteHeader);\n    } else {\n      deleteHeader(header);\n    }\n\n    return deleted;\n  }\n\n  clear(matcher) {\n    const keys = Object.keys(this);\n    let i = keys.length;\n    let deleted = false;\n\n    while (i--) {\n      const key = keys[i];\n      if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n        delete this[key];\n        deleted = true;\n      }\n    }\n\n    return deleted;\n  }\n\n  normalize(format) {\n    const self = this;\n    const headers = {};\n\n    utils.forEach(this, (value, header) => {\n      const key = utils.findKey(headers, header);\n\n      if (key) {\n        self[key] = normalizeValue(value);\n        delete self[header];\n        return;\n      }\n\n      const normalized = format ? formatHeader(header) : String(header).trim();\n\n      if (normalized !== header) {\n        delete self[header];\n      }\n\n      self[normalized] = normalizeValue(value);\n\n      headers[normalized] = true;\n    });\n\n    return this;\n  }\n\n  concat(...targets) {\n    return this.constructor.concat(this, ...targets);\n  }\n\n  toJSON(asStrings) {\n    const obj = Object.create(null);\n\n    utils.forEach(this, (value, header) => {\n      value != null &&\n        value !== false &&\n        (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n    });\n\n    return obj;\n  }\n\n  [Symbol.iterator]() {\n    return Object.entries(this.toJSON())[Symbol.iterator]();\n  }\n\n  toString() {\n    return Object.entries(this.toJSON())\n      .map(([header, value]) => header + ': ' + value)\n      .join('\\n');\n  }\n\n  getSetCookie() {\n    return this.get('set-cookie') || [];\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'AxiosHeaders';\n  }\n\n  static from(thing) {\n    return thing instanceof this ? thing : new this(thing);\n  }\n\n  static concat(first, ...targets) {\n    const computed = new this(first);\n\n    targets.forEach((target) => computed.set(target));\n\n    return computed;\n  }\n\n  static accessor(header) {\n    const internals =\n      (this[$internals] =\n      this[$internals] =\n        {\n          accessors: {},\n        });\n\n    const accessors = internals.accessors;\n    const prototype = this.prototype;\n\n    function defineAccessor(_header) {\n      const lHeader = normalizeHeader(_header);\n\n      if (!accessors[lHeader]) {\n        buildAccessors(prototype, _header);\n        accessors[lHeader] = true;\n      }\n    }\n\n    utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n    return this;\n  }\n}\n\nAxiosHeaders.accessor([\n  'Content-Type',\n  'Content-Length',\n  'Accept',\n  'Accept-Encoding',\n  'User-Agent',\n  'Authorization',\n]);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({ value }, key) => {\n  let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n  return {\n    get: () => value,\n    set(headerValue) {\n      this[mapped] = headerValue;\n    },\n  };\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n", "'use strict';\n\nimport utils from '../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n  'age',\n  'authorization',\n  'content-length',\n  'content-type',\n  'etag',\n  'expires',\n  'from',\n  'host',\n  'if-modified-since',\n  'if-unmodified-since',\n  'last-modified',\n  'location',\n  'max-forwards',\n  'proxy-authorization',\n  'referer',\n  'retry-after',\n  'user-agent',\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default (rawHeaders) => {\n  const parsed = {};\n  let key;\n  let val;\n  let i;\n\n  rawHeaders &&\n    rawHeaders.split('\\n').forEach(function parser(line) {\n      i = line.indexOf(':');\n      key = line.substring(0, i).trim().toLowerCase();\n      val = line.substring(i + 1).trim();\n\n      if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n        return;\n      }\n\n      if (key === 'set-cookie') {\n        if (parsed[key]) {\n          parsed[key].push(val);\n        } else {\n          parsed[key] = [val];\n        }\n      } else {\n        parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n      }\n    });\n\n  return parsed;\n};\n", "// eslint-disable-next-line strict\nexport default null;\n", "'use strict';\n\nimport utils from '../utils.js';\n\nclass InterceptorManager {\n  constructor() {\n    this.handlers = [];\n  }\n\n  /**\n   * Add a new interceptor to the stack\n   *\n   * @param {Function} fulfilled The function to handle `then` for a `Promise`\n   * @param {Function} rejected The function to handle `reject` for a `Promise`\n   * @param {Object} options The options for the interceptor, synchronous and runWhen\n   *\n   * @return {Number} An ID used to remove interceptor later\n   */\n  use(fulfilled, rejected, options) {\n    this.handlers.push({\n      fulfilled,\n      rejected,\n      synchronous: options ? options.synchronous : false,\n      runWhen: options ? options.runWhen : null,\n    });\n    return this.handlers.length - 1;\n  }\n\n  /**\n   * Remove an interceptor from the stack\n   *\n   * @param {Number} id The ID that was returned by `use`\n   *\n   * @returns {void}\n   */\n  eject(id) {\n    if (this.handlers[id]) {\n      this.handlers[id] = null;\n    }\n  }\n\n  /**\n   * Clear all interceptors from the stack\n   *\n   * @returns {void}\n   */\n  clear() {\n    if (this.handlers) {\n      this.handlers = [];\n    }\n  }\n\n  /**\n   * Iterate over all the registered interceptors\n   *\n   * This method is particularly useful for skipping over any\n   * interceptors that may have become `null` calling `eject`.\n   *\n   * @param {Function} fn The function to call for each interceptor\n   *\n   * @returns {void}\n   */\n  forEach(fn) {\n    utils.forEach(this.handlers, function forEachHandler(h) {\n      if (h !== null) {\n        fn(h);\n      }\n    });\n  }\n}\n\nexport default InterceptorManager;\n", "'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from '../adapters/adapters.js';\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n  if (config.cancelToken) {\n    config.cancelToken.throwIfRequested();\n  }\n\n  if (config.signal && config.signal.aborted) {\n    throw new CanceledError(null, config);\n  }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n  throwIfCancellationRequested(config);\n\n  config.headers = AxiosHeaders.from(config.headers);\n\n  // Transform request data\n  config.data = transformData.call(config, config.transformRequest);\n\n  if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n    config.headers.setContentType('application/x-www-form-urlencoded', false);\n  }\n\n  const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config);\n\n  return adapter(config).then(\n    function onAdapterResolution(response) {\n      throwIfCancellationRequested(config);\n\n      // Expose the current response on config so that transformResponse can\n      // attach it to any AxiosError it throws (e.g. on JSON parse failure).\n      // We clean it up afterwards to avoid polluting the config object.\n      config.response = response;\n      try {\n        response.data = transformData.call(config, config.transformResponse, response);\n      } finally {\n        delete config.response;\n      }\n\n      response.headers = AxiosHeaders.from(response.headers);\n\n      return response;\n    },\n    function onAdapterRejection(reason) {\n      if (!isCancel(reason)) {\n        throwIfCancellationRequested(config);\n\n        // Transform response data\n        if (reason && reason.response) {\n          config.response = reason.response;\n          try {\n            reason.response.data = transformData.call(\n              config,\n              config.transformResponse,\n              reason.response\n            );\n          } finally {\n            delete config.response;\n          }\n          reason.response.headers = AxiosHeaders.from(reason.response.headers);\n        }\n      }\n\n      return Promise.reject(reason);\n    }\n  );\n}\n", "'use strict';\n\nimport utils from '../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n  const config = this || defaults;\n  const context = response || config;\n  const headers = AxiosHeaders.from(context.headers);\n  let data = context.data;\n\n  utils.forEach(fns, function transform(fn) {\n    data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n  });\n\n  headers.normalize();\n\n  return data;\n}\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\nconst own = (obj, key) => (obj != null && utils.hasOwnProp(obj, key) ? obj[key] : undefined);\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n  if (utils.isString(rawValue)) {\n    try {\n      (parser || JSON.parse)(rawValue);\n      return utils.trim(rawValue);\n    } catch (e) {\n      if (e.name !== 'SyntaxError') {\n        throw e;\n      }\n    }\n  }\n\n  return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n  transitional: transitionalDefaults,\n\n  adapter: ['xhr', 'http', 'fetch'],\n\n  transformRequest: [\n    function transformRequest(data, headers) {\n      const contentType = headers.getContentType() || '';\n      const hasJSONContentType = contentType.indexOf('application/json') > -1;\n      const isObjectPayload = utils.isObject(data);\n\n      if (isObjectPayload && utils.isHTMLForm(data)) {\n        data = new FormData(data);\n      }\n\n      const isFormData = utils.isFormData(data);\n\n      if (isFormData) {\n        return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n      }\n\n      if (\n        utils.isArrayBuffer(data) ||\n        utils.isBuffer(data) ||\n        utils.isStream(data) ||\n        utils.isFile(data) ||\n        utils.isBlob(data) ||\n        utils.isReadableStream(data)\n      ) {\n        return data;\n      }\n      if (utils.isArrayBufferView(data)) {\n        return data.buffer;\n      }\n      if (utils.isURLSearchParams(data)) {\n        headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n        return data.toString();\n      }\n\n      let isFileList;\n\n      if (isObjectPayload) {\n        const formSerializer = own(this, 'formSerializer');\n        if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n          return toURLEncodedForm(data, formSerializer).toString();\n        }\n\n        if (\n          (isFileList = utils.isFileList(data)) ||\n          contentType.indexOf('multipart/form-data') > -1\n        ) {\n          const env = own(this, 'env');\n          const _FormData = env && env.FormData;\n\n          return toFormData(\n            isFileList ? { 'files[]': data } : data,\n            _FormData && new _FormData(),\n            formSerializer\n          );\n        }\n      }\n\n      if (isObjectPayload || hasJSONContentType) {\n        headers.setContentType('application/json', false);\n        return stringifySafely(data);\n      }\n\n      return data;\n    },\n  ],\n\n  transformResponse: [\n    function transformResponse(data) {\n      const transitional = own(this, 'transitional') || defaults.transitional;\n      const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n      const responseType = own(this, 'responseType');\n      const JSONRequested = responseType === 'json';\n\n      if (utils.isResponse(data) || utils.isReadableStream(data)) {\n        return data;\n      }\n\n      if (\n        data &&\n        utils.isString(data) &&\n        ((forcedJSONParsing && !responseType) || JSONRequested)\n      ) {\n        const silentJSONParsing = transitional && transitional.silentJSONParsing;\n        const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n        try {\n          return JSON.parse(data, own(this, 'parseReviver'));\n        } catch (e) {\n          if (strictJSONParsing) {\n            if (e.name === 'SyntaxError') {\n              throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, own(this, 'response'));\n            }\n            throw e;\n          }\n        }\n      }\n\n      return data;\n    },\n  ],\n\n  /**\n   * A timeout in milliseconds to abort a request. If set to 0 (default) a\n   * timeout is not created.\n   */\n  timeout: 0,\n\n  xsrfCookieName: 'XSRF-TOKEN',\n  xsrfHeaderName: 'X-XSRF-TOKEN',\n\n  maxContentLength: -1,\n  maxBodyLength: -1,\n\n  env: {\n    FormData: platform.classes.FormData,\n    Blob: platform.classes.Blob,\n  },\n\n  validateStatus: function validateStatus(status) {\n    return status >= 200 && status < 300;\n  },\n\n  headers: {\n    common: {\n      Accept: 'application/json, text/plain, */*',\n      'Content-Type': undefined,\n    },\n  },\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'query'], (method) => {\n  defaults.headers[method] = {};\n});\n\nexport default defaults;\n", "'use strict';\n\nexport default {\n  silentJSONParsing: true,\n  forcedJSONParsing: true,\n  clarifyTimeoutError: false,\n  legacyInterceptorReqResOrdering: true,\n};\n", "'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n  return toFormData(data, new platform.classes.URLSearchParams(), {\n    visitor: function (value, key, path, helpers) {\n      if (platform.isNode && utils.isBuffer(value)) {\n        this.append(key, value.toString('base64'));\n        return false;\n      }\n\n      return helpers.defaultVisitor.apply(this, arguments);\n    },\n    ...options,\n  });\n}\n", "import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n  ...utils,\n  ...platform,\n};\n", "import URLSearchParams from './classes/URLSearchParams.js';\nimport FormData from './classes/FormData.js';\nimport Blob from './classes/Blob.js';\n\nexport default {\n  isBrowser: true,\n  classes: {\n    URLSearchParams,\n    FormData,\n    Blob,\n  },\n  protocols: ['http', 'https', 'file', 'blob', 'url', 'data'],\n};\n", "'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n", "'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n", "'use strict';\n\nexport default typeof Blob !== 'undefined' ? Blob : null;\n", "const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = (typeof navigator === 'object' && navigator) || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n *  typeof window -> undefined\n *  typeof document -> undefined\n *\n * react-native:\n *  navigator.product -> 'ReactNative'\n * nativescript\n *  navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv =\n  hasBrowserEnv &&\n  (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n  return (\n    typeof WorkerGlobalScope !== 'undefined' &&\n    // eslint-disable-next-line no-undef\n    self instanceof WorkerGlobalScope &&\n    typeof self.importScripts === 'function'\n  );\n})();\n\nconst origin = (hasBrowserEnv && window.location.href) || 'http://localhost';\n\nexport {\n  hasBrowserEnv,\n  hasStandardBrowserWebWorkerEnv,\n  hasStandardBrowserEnv,\n  _navigator as navigator,\n  origin,\n};\n", "'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n  // foo[x][y][z]\n  // foo.x.y.z\n  // foo-x-y-z\n  // foo x y z\n  return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map((match) => {\n    return match[0] === '[]' ? '' : match[1] || match[0];\n  });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n  const obj = {};\n  const keys = Object.keys(arr);\n  let i;\n  const len = keys.length;\n  let key;\n  for (i = 0; i < len; i++) {\n    key = keys[i];\n    obj[key] = arr[key];\n  }\n  return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n  function buildPath(path, value, target, index) {\n    let name = path[index++];\n\n    if (name === '__proto__') return true;\n\n    const isNumericKey = Number.isFinite(+name);\n    const isLast = index >= path.length;\n    name = !name && utils.isArray(target) ? target.length : name;\n\n    if (isLast) {\n      if (utils.hasOwnProp(target, name)) {\n        target[name] = utils.isArray(target[name])\n          ? target[name].concat(value)\n          : [target[name], value];\n      } else {\n        target[name] = value;\n      }\n\n      return !isNumericKey;\n    }\n\n    if (!target[name] || !utils.isObject(target[name])) {\n      target[name] = [];\n    }\n\n    const result = buildPath(path, value, target[name], index);\n\n    if (result && utils.isArray(target[name])) {\n      target[name] = arrayToObject(target[name]);\n    }\n\n    return !isNumericKey;\n  }\n\n  if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n    const obj = {};\n\n    utils.forEachEntry(formData, (name, value) => {\n      buildPath(parsePropPath(name), value, obj, 0);\n    });\n\n    return obj;\n  }\n\n  return null;\n}\n\nexport default formDataToJSON;\n", "'use strict';\n\nexport default function isCancel(value) {\n  return !!(value && value.__CANCEL__);\n}\n", "'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\n\nclass CanceledError extends AxiosError {\n  /**\n   * A `CanceledError` is an object that is thrown when an operation is canceled.\n   *\n   * @param {string=} message The message.\n   * @param {Object=} config The config.\n   * @param {Object=} request The request.\n   *\n   * @returns {CanceledError} The created error.\n   */\n  constructor(message, config, request) {\n    super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n    this.name = 'CanceledError';\n    this.__CANCEL__ = true;\n  }\n}\n\nexport default CanceledError;\n", "import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from '../core/AxiosError.js';\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n *\n * @type {Object<string, Function|Object>}\n */\nconst knownAdapters = {\n  http: httpAdapter,\n  xhr: xhrAdapter,\n  fetch: {\n    get: fetchAdapter.getFetch,\n  },\n};\n\n// Assign adapter names for easier debugging and identification\nutils.forEach(knownAdapters, (fn, value) => {\n  if (fn) {\n    try {\n      // Null-proto descriptors so a polluted Object.prototype.get cannot turn\n      // these data descriptors into accessor descriptors on the way in.\n      Object.defineProperty(fn, 'name', { __proto__: null, value });\n    } catch (e) {\n      // eslint-disable-next-line no-empty\n    }\n    Object.defineProperty(fn, 'adapterName', { __proto__: null, value });\n  }\n});\n\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n *\n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n *\n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) =>\n  utils.isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n *\n * @param {Array<string|Function>|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\n  adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n  const { length } = adapters;\n  let nameOrAdapter;\n  let adapter;\n\n  const rejectedReasons = {};\n\n  for (let i = 0; i < length; i++) {\n    nameOrAdapter = adapters[i];\n    let id;\n\n    adapter = nameOrAdapter;\n\n    if (!isResolvedHandle(nameOrAdapter)) {\n      adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n      if (adapter === undefined) {\n        throw new AxiosError(`Unknown adapter '${id}'`);\n      }\n    }\n\n    if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n      break;\n    }\n\n    rejectedReasons[id || '#' + i] = adapter;\n  }\n\n  if (!adapter) {\n    const reasons = Object.entries(rejectedReasons).map(\n      ([id, state]) =>\n        `adapter ${id} ` +\n        (state === false ? 'is not supported by the environment' : 'is not available in the build')\n    );\n\n    let s = length\n      ? reasons.length > 1\n        ? 'since :\\n' + reasons.map(renderReason).join('\\n')\n        : ' ' + renderReason(reasons[0])\n      : 'as no adapter specified';\n\n    throw new AxiosError(\n      `There is no suitable adapter to dispatch the request ` + s,\n      'ERR_NOT_SUPPORT'\n    );\n  }\n\n  return adapter;\n}\n\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\nexport default {\n  /**\n   * Resolve an adapter from a list of adapter names or functions.\n   * @type {Function}\n   */\n  getAdapter,\n\n  /**\n   * Exposes all known adapters\n   * @type {Object<string, Function|Object>}\n   */\n  adapters: knownAdapters,\n};\n", "import utils from '../utils.js';\nimport settle from '../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport { progressEventReducer } from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported &&\n  function (config) {\n    return new Promise(function dispatchXhrRequest(resolve, reject) {\n      const _config = resolveConfig(config);\n      let requestData = _config.data;\n      const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n      let { responseType, onUploadProgress, onDownloadProgress } = _config;\n      let onCanceled;\n      let uploadThrottled, downloadThrottled;\n      let flushUpload, flushDownload;\n\n      function done() {\n        flushUpload && flushUpload(); // flush events\n        flushDownload && flushDownload(); // flush events\n\n        _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n        _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n      }\n\n      let request = new XMLHttpRequest();\n\n      request.open(_config.method.toUpperCase(), _config.url, true);\n\n      // Set the request timeout in MS\n      request.timeout = _config.timeout;\n\n      function onloadend() {\n        if (!request) {\n          return;\n        }\n        // Prepare the response\n        const responseHeaders = AxiosHeaders.from(\n          'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n        );\n        const responseData =\n          !responseType || responseType === 'text' || responseType === 'json'\n            ? request.responseText\n            : request.response;\n        const response = {\n          data: responseData,\n          status: request.status,\n          statusText: request.statusText,\n          headers: responseHeaders,\n          config,\n          request,\n        };\n\n        settle(\n          function _resolve(value) {\n            resolve(value);\n            done();\n          },\n          function _reject(err) {\n            reject(err);\n            done();\n          },\n          response\n        );\n\n        // Clean up request\n        request = null;\n      }\n\n      if ('onloadend' in request) {\n        // Use onloadend if available\n        request.onloadend = onloadend;\n      } else {\n        // Listen for ready state to emulate onloadend\n        request.onreadystatechange = function handleLoad() {\n          if (!request || request.readyState !== 4) {\n            return;\n          }\n\n          // The request errored out and we didn't get a response, this will be\n          // handled by onerror instead\n          // With one exception: request that using file: protocol, most browsers\n          // will return status as 0 even though it's a successful request\n          if (\n            request.status === 0 &&\n            !(request.responseURL && request.responseURL.startsWith('file:'))\n          ) {\n            return;\n          }\n          // readystate handler is calling before onerror or ontimeout handlers,\n          // so we should call onloadend on the next 'tick'\n          setTimeout(onloadend);\n        };\n      }\n\n      // Handle browser request cancellation (as opposed to a manual cancellation)\n      request.onabort = function handleAbort() {\n        if (!request) {\n          return;\n        }\n\n        reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n        done();\n\n        // Clean up request\n        request = null;\n      };\n\n      // Handle low level network errors\n      request.onerror = function handleError(event) {\n        // Browsers deliver a ProgressEvent in XHR onerror\n        // (message may be empty; when present, surface it)\n        // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n        const msg = event && event.message ? event.message : 'Network Error';\n        const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n        // attach the underlying event for consumers who want details\n        err.event = event || null;\n        reject(err);\n        done();\n        request = null;\n      };\n\n      // Handle timeout\n      request.ontimeout = function handleTimeout() {\n        let timeoutErrorMessage = _config.timeout\n          ? 'timeout of ' + _config.timeout + 'ms exceeded'\n          : 'timeout exceeded';\n        const transitional = _config.transitional || transitionalDefaults;\n        if (_config.timeoutErrorMessage) {\n          timeoutErrorMessage = _config.timeoutErrorMessage;\n        }\n        reject(\n          new AxiosError(\n            timeoutErrorMessage,\n            transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n            config,\n            request\n          )\n        );\n        done();\n\n        // Clean up request\n        request = null;\n      };\n\n      // Remove Content-Type if data is undefined\n      requestData === undefined && requestHeaders.setContentType(null);\n\n      // Add headers to the request\n      if ('setRequestHeader' in request) {\n        utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n          request.setRequestHeader(key, val);\n        });\n      }\n\n      // Add withCredentials to request if needed\n      if (!utils.isUndefined(_config.withCredentials)) {\n        request.withCredentials = !!_config.withCredentials;\n      }\n\n      // Add responseType to request if needed\n      if (responseType && responseType !== 'json') {\n        request.responseType = _config.responseType;\n      }\n\n      // Handle progress if needed\n      if (onDownloadProgress) {\n        [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true);\n        request.addEventListener('progress', downloadThrottled);\n      }\n\n      // Not all browsers support upload events\n      if (onUploadProgress && request.upload) {\n        [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress);\n\n        request.upload.addEventListener('progress', uploadThrottled);\n\n        request.upload.addEventListener('loadend', flushUpload);\n      }\n\n      if (_config.cancelToken || _config.signal) {\n        // Handle cancellation\n        // eslint-disable-next-line func-names\n        onCanceled = (cancel) => {\n          if (!request) {\n            return;\n          }\n          reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n          request.abort();\n          done();\n          request = null;\n        };\n\n        _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n        if (_config.signal) {\n          _config.signal.aborted\n            ? onCanceled()\n            : _config.signal.addEventListener('abort', onCanceled);\n        }\n      }\n\n      const protocol = parseProtocol(_config.url);\n\n      if (protocol && !platform.protocols.includes(protocol)) {\n        reject(\n          new AxiosError(\n            'Unsupported protocol ' + protocol + ':',\n            AxiosError.ERR_BAD_REQUEST,\n            config\n          )\n        );\n        return;\n      }\n\n      // Send the request\n      request.send(requestData || null);\n    });\n  };\n", "'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n  const validateStatus = response.config.validateStatus;\n  if (!response.status || !validateStatus || validateStatus(response.status)) {\n    resolve(response);\n  } else {\n    reject(new AxiosError(\n      'Request failed with status code ' + response.status,\n      response.status >= 400 && response.status < 500 ? AxiosError.ERR_BAD_REQUEST : AxiosError.ERR_BAD_RESPONSE,\n      response.config,\n      response.request,\n      response\n    ));\n  }\n}\n", "'use strict';\n\nexport default function parseProtocol(url) {\n  const match = /^([-+\\w]{1,25}):(?:\\/\\/)?/.exec(url);\n  return (match && match[1]) || '';\n}\n", "import speedometer from './speedometer.js';\nimport throttle from './throttle.js';\nimport utils from '../utils.js';\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n  let bytesNotified = 0;\n  const _speedometer = speedometer(50, 250);\n\n  return throttle((e) => {\n    const rawLoaded = e.loaded;\n    const total = e.lengthComputable ? e.total : undefined;\n    const loaded = total != null ? Math.min(rawLoaded, total) : rawLoaded;\n    const progressBytes = Math.max(0, loaded - bytesNotified);\n    const rate = _speedometer(progressBytes);\n\n    bytesNotified = Math.max(bytesNotified, loaded);\n\n    const data = {\n      loaded,\n      total,\n      progress: total ? loaded / total : undefined,\n      bytes: progressBytes,\n      rate: rate ? rate : undefined,\n      estimated: rate && total ? (total - loaded) / rate : undefined,\n      event: e,\n      lengthComputable: total != null,\n      [isDownloadStream ? 'download' : 'upload']: true,\n    };\n\n    listener(data);\n  }, freq);\n};\n\nexport const progressEventDecorator = (total, throttled) => {\n  const lengthComputable = total != null;\n\n  return [\n    (loaded) =>\n      throttled[0]({\n        lengthComputable,\n        total,\n        loaded,\n      }),\n    throttled[1],\n  ];\n};\n\nexport const asyncDecorator =\n  (fn) =>\n  (...args) =>\n    utils.asap(() => fn(...args));\n", "'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n  samplesCount = samplesCount || 10;\n  const bytes = new Array(samplesCount);\n  const timestamps = new Array(samplesCount);\n  let head = 0;\n  let tail = 0;\n  let firstSampleTS;\n\n  min = min !== undefined ? min : 1000;\n\n  return function push(chunkLength) {\n    const now = Date.now();\n\n    const startedAt = timestamps[tail];\n\n    if (!firstSampleTS) {\n      firstSampleTS = now;\n    }\n\n    bytes[head] = chunkLength;\n    timestamps[head] = now;\n\n    let i = tail;\n    let bytesCount = 0;\n\n    while (i !== head) {\n      bytesCount += bytes[i++];\n      i = i % samplesCount;\n    }\n\n    head = (head + 1) % samplesCount;\n\n    if (head === tail) {\n      tail = (tail + 1) % samplesCount;\n    }\n\n    if (now - firstSampleTS < min) {\n      return;\n    }\n\n    const passed = startedAt && now - startedAt;\n\n    return passed ? Math.round((bytesCount * 1000) / passed) : undefined;\n  };\n}\n\nexport default speedometer;\n", "/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n  let timestamp = 0;\n  let threshold = 1000 / freq;\n  let lastArgs;\n  let timer;\n\n  const invoke = (args, now = Date.now()) => {\n    timestamp = now;\n    lastArgs = null;\n    if (timer) {\n      clearTimeout(timer);\n      timer = null;\n    }\n    fn(...args);\n  };\n\n  const throttled = (...args) => {\n    const now = Date.now();\n    const passed = now - timestamp;\n    if (passed >= threshold) {\n      invoke(args, now);\n    } else {\n      lastArgs = args;\n      if (!timer) {\n        timer = setTimeout(() => {\n          timer = null;\n          invoke(lastArgs);\n        }, threshold - passed);\n      }\n    }\n  };\n\n  const flush = () => lastArgs && invoke(lastArgs);\n\n  return [throttled, flush];\n}\n\nexport default throttle;\n", "import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport isURLSameOrigin from './isURLSameOrigin.js';\nimport cookies from './cookies.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport mergeConfig from '../core/mergeConfig.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport buildURL from './buildURL.js';\n\nconst FORM_DATA_CONTENT_HEADERS = ['content-type', 'content-length'];\n\nfunction setFormDataHeaders(headers, formHeaders, policy) {\n  if (policy !== 'content-only') {\n    headers.set(formHeaders);\n    return;\n  }\n\n  Object.entries(formHeaders).forEach(([key, val]) => {\n    if (FORM_DATA_CONTENT_HEADERS.includes(key.toLowerCase())) {\n      headers.set(key, val);\n    }\n  });\n}\n\n/**\n * Encode a UTF-8 string to a Latin-1 byte string for use with btoa().\n * This is a modern replacement for the deprecated unescape(encodeURIComponent(str)) pattern.\n *\n * @param {string} str The string to encode\n *\n * @returns {string} UTF-8 bytes as a Latin-1 string\n */\nconst encodeUTF8 = (str) =>\n  encodeURIComponent(str).replace(/%([0-9A-F]{2})/gi, (_, hex) =>\n    String.fromCharCode(parseInt(hex, 16))\n  );\n\nexport default (config) => {\n  const newConfig = mergeConfig({}, config);\n\n  // Read only own properties to prevent prototype pollution gadgets\n  // (e.g. Object.prototype.baseURL = 'https://evil.com').\n  const own = (key) => (utils.hasOwnProp(newConfig, key) ? newConfig[key] : undefined);\n\n  const data = own('data');\n  let withXSRFToken = own('withXSRFToken');\n  const xsrfHeaderName = own('xsrfHeaderName');\n  const xsrfCookieName = own('xsrfCookieName');\n  let headers = own('headers');\n  const auth = own('auth');\n  const baseURL = own('baseURL');\n  const allowAbsoluteUrls = own('allowAbsoluteUrls');\n  const url = own('url');\n\n  newConfig.headers = headers = AxiosHeaders.from(headers);\n\n  newConfig.url = buildURL(\n    buildFullPath(baseURL, url, allowAbsoluteUrls),\n    config.params,\n    config.paramsSerializer\n  );\n\n  // HTTP basic authentication\n  if (auth) {\n    headers.set(\n      'Authorization',\n      'Basic ' +\n        btoa((auth.username || '') + ':' + (auth.password ? encodeUTF8(auth.password) : ''))\n    );\n  }\n\n  if (utils.isFormData(data)) {\n    if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n      headers.setContentType(undefined); // browser handles it\n    } else if (utils.isFunction(data.getHeaders)) {\n      // Node.js FormData (like form-data package)\n      setFormDataHeaders(headers, data.getHeaders(), own('formDataHeaderPolicy'));\n    }\n  }\n\n  // Add xsrf header\n  // This is only done if running in a standard browser environment.\n  // Specifically not if we're in a web worker, or react-native.\n\n  if (platform.hasStandardBrowserEnv) {\n    if (utils.isFunction(withXSRFToken)) {\n      withXSRFToken = withXSRFToken(newConfig);\n    }\n\n    // Strict boolean check \u2014 prevents proto-pollution gadgets (e.g. Object.prototype.withXSRFToken = 1)\n    // and misconfigurations (e.g. \"false\") from short-circuiting the same-origin check and leaking\n    // the XSRF token cross-origin.\n    const shouldSendXSRF =\n      withXSRFToken === true || (withXSRFToken == null && isURLSameOrigin(newConfig.url));\n\n    if (shouldSendXSRF) {\n      const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n      if (xsrfValue) {\n        headers.set(xsrfHeaderName, xsrfValue);\n      }\n    }\n  }\n\n  return newConfig;\n};\n", "import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n  ? ((origin, isMSIE) => (url) => {\n      url = new URL(url, platform.origin);\n\n      return (\n        origin.protocol === url.protocol &&\n        origin.host === url.host &&\n        (isMSIE || origin.port === url.port)\n      );\n    })(\n      new URL(platform.origin),\n      platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n    )\n  : () => true;\n", "import utils from '../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n  ? // Standard browser envs support document.cookie\n    {\n      write(name, value, expires, path, domain, secure, sameSite) {\n        if (typeof document === 'undefined') return;\n\n        const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n        if (utils.isNumber(expires)) {\n          cookie.push(`expires=${new Date(expires).toUTCString()}`);\n        }\n        if (utils.isString(path)) {\n          cookie.push(`path=${path}`);\n        }\n        if (utils.isString(domain)) {\n          cookie.push(`domain=${domain}`);\n        }\n        if (secure === true) {\n          cookie.push('secure');\n        }\n        if (utils.isString(sameSite)) {\n          cookie.push(`SameSite=${sameSite}`);\n        }\n\n        document.cookie = cookie.join('; ');\n      },\n\n      read(name) {\n        if (typeof document === 'undefined') return null;\n        // Match name=value by splitting on the semicolon separator instead of building a\n        // RegExp from `name` \u2014 interpolating an unescaped string into a RegExp would let\n        // metacharacters (e.g. `.+?` in an attacker-influenced cookie name) cause ReDoS or\n        // match the wrong cookie. Browsers may serialize cookie pairs as either \";\" or\n        // \"; \", so ignore optional whitespace before each cookie name.\n        const cookies = document.cookie.split(';');\n        for (let i = 0; i < cookies.length; i++) {\n          const cookie = cookies[i].replace(/^\\s+/, '');\n          const eq = cookie.indexOf('=');\n          if (eq !== -1 && cookie.slice(0, eq) === name) {\n            return decodeURIComponent(cookie.slice(eq + 1));\n          }\n        }\n        return null;\n      },\n\n      remove(name) {\n        this.write(name, '', Date.now() - 86400000, '/');\n      },\n    }\n  : // Non-standard browser env (web workers, react-native) lack needed support.\n    {\n      write() {},\n      read() {\n        return null;\n      },\n      remove() {},\n    };\n", "'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n  let isRelativeUrl = !isAbsoluteURL(requestedURL);\n  if (baseURL && (isRelativeUrl || allowAbsoluteUrls === false)) {\n    return combineURLs(baseURL, requestedURL);\n  }\n  return requestedURL;\n}\n", "'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n  // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n  // by any combination of letters, digits, plus, period, or hyphen.\n  if (typeof url !== 'string') {\n    return false;\n  }\n\n  return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n", "'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n  return relativeURL\n    ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n    : baseURL;\n}\n", "'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst headersToObject = (thing) => (thing instanceof AxiosHeaders ? { ...thing } : thing);\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n  // eslint-disable-next-line no-param-reassign\n  config2 = config2 || {};\n\n  // Use a null-prototype object so that downstream reads such as `config.auth`\n  // or `config.baseURL` cannot inherit polluted values from Object.prototype.\n  // `hasOwnProperty` is restored as a non-enumerable own slot to preserve\n  // ergonomics for user code that relies on it.\n  const config = Object.create(null);\n  Object.defineProperty(config, 'hasOwnProperty', {\n    // Null-proto descriptor so a polluted Object.prototype.get cannot turn\n    // this data descriptor into an accessor descriptor on the way in.\n    __proto__: null,\n    value: Object.prototype.hasOwnProperty,\n    enumerable: false,\n    writable: true,\n    configurable: true,\n  });\n\n  function getMergedValue(target, source, prop, caseless) {\n    if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n      return utils.merge.call({ caseless }, target, source);\n    } else if (utils.isPlainObject(source)) {\n      return utils.merge({}, source);\n    } else if (utils.isArray(source)) {\n      return source.slice();\n    }\n    return source;\n  }\n\n  function mergeDeepProperties(a, b, prop, caseless) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(a, b, prop, caseless);\n    } else if (!utils.isUndefined(a)) {\n      return getMergedValue(undefined, a, prop, caseless);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function valueFromConfig2(a, b) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(undefined, b);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function defaultToConfig2(a, b) {\n    if (!utils.isUndefined(b)) {\n      return getMergedValue(undefined, b);\n    } else if (!utils.isUndefined(a)) {\n      return getMergedValue(undefined, a);\n    }\n  }\n\n  // eslint-disable-next-line consistent-return\n  function mergeDirectKeys(a, b, prop) {\n    if (utils.hasOwnProp(config2, prop)) {\n      return getMergedValue(a, b);\n    } else if (utils.hasOwnProp(config1, prop)) {\n      return getMergedValue(undefined, a);\n    }\n  }\n\n  const mergeMap = {\n    url: valueFromConfig2,\n    method: valueFromConfig2,\n    data: valueFromConfig2,\n    baseURL: defaultToConfig2,\n    transformRequest: defaultToConfig2,\n    transformResponse: defaultToConfig2,\n    paramsSerializer: defaultToConfig2,\n    timeout: defaultToConfig2,\n    timeoutMessage: defaultToConfig2,\n    withCredentials: defaultToConfig2,\n    withXSRFToken: defaultToConfig2,\n    adapter: defaultToConfig2,\n    responseType: defaultToConfig2,\n    xsrfCookieName: defaultToConfig2,\n    xsrfHeaderName: defaultToConfig2,\n    onUploadProgress: defaultToConfig2,\n    onDownloadProgress: defaultToConfig2,\n    decompress: defaultToConfig2,\n    maxContentLength: defaultToConfig2,\n    maxBodyLength: defaultToConfig2,\n    beforeRedirect: defaultToConfig2,\n    transport: defaultToConfig2,\n    httpAgent: defaultToConfig2,\n    httpsAgent: defaultToConfig2,\n    cancelToken: defaultToConfig2,\n    socketPath: defaultToConfig2,\n    allowedSocketPaths: defaultToConfig2,\n    responseEncoding: defaultToConfig2,\n    validateStatus: mergeDirectKeys,\n    headers: (a, b, prop) =>\n      mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true),\n  };\n\n  utils.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) {\n    if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return;\n    const merge = utils.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties;\n    const a = utils.hasOwnProp(config1, prop) ? config1[prop] : undefined;\n    const b = utils.hasOwnProp(config2, prop) ? config2[prop] : undefined;\n    const configValue = merge(a, b, prop);\n    (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n  });\n\n  return config;\n}\n", "import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport composeSignals from '../helpers/composeSignals.js';\nimport { trackStream } from '../helpers/trackStream.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {\n  progressEventReducer,\n  progressEventDecorator,\n  asyncDecorator,\n} from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\nimport settle from '../core/settle.js';\nimport estimateDataURLDecodedBytes from '../helpers/estimateDataURLDecodedBytes.js';\nimport { VERSION } from '../env/data.js';\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst { isFunction } = utils;\n\nconst test = (fn, ...args) => {\n  try {\n    return !!fn(...args);\n  } catch (e) {\n    return false;\n  }\n};\n\nconst factory = (env) => {\n  const globalObject = utils.global ?? globalThis;\n  const { ReadableStream, TextEncoder } = globalObject;\n\n  env = utils.merge.call(\n    {\n      skipUndefined: true,\n    },\n    {\n      Request: globalObject.Request,\n      Response: globalObject.Response,\n    },\n    env\n  );\n\n  const { fetch: envFetch, Request, Response } = env;\n  const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n  const isRequestSupported = isFunction(Request);\n  const isResponseSupported = isFunction(Response);\n\n  if (!isFetchSupported) {\n    return false;\n  }\n\n  const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n  const encodeText =\n    isFetchSupported &&\n    (typeof TextEncoder === 'function'\n      ? (\n          (encoder) => (str) =>\n            encoder.encode(str)\n        )(new TextEncoder())\n      : async (str) => new Uint8Array(await new Request(str).arrayBuffer()));\n\n  const supportsRequestStream =\n    isRequestSupported &&\n    isReadableStreamSupported &&\n    test(() => {\n      let duplexAccessed = false;\n\n      const request = new Request(platform.origin, {\n        body: new ReadableStream(),\n        method: 'POST',\n        get duplex() {\n          duplexAccessed = true;\n          return 'half';\n        },\n      });\n\n      const hasContentType = request.headers.has('Content-Type');\n\n      if (request.body != null) {\n        request.body.cancel();\n      }\n\n      return duplexAccessed && !hasContentType;\n    });\n\n  const supportsResponseStream =\n    isResponseSupported &&\n    isReadableStreamSupported &&\n    test(() => utils.isReadableStream(new Response('').body));\n\n  const resolvers = {\n    stream: supportsResponseStream && ((res) => res.body),\n  };\n\n  isFetchSupported &&\n    (() => {\n      ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => {\n        !resolvers[type] &&\n          (resolvers[type] = (res, config) => {\n            let method = res && res[type];\n\n            if (method) {\n              return method.call(res);\n            }\n\n            throw new AxiosError(\n              `Response type '${type}' is not supported`,\n              AxiosError.ERR_NOT_SUPPORT,\n              config\n            );\n          });\n      });\n    })();\n\n  const getBodyLength = async (body) => {\n    if (body == null) {\n      return 0;\n    }\n\n    if (utils.isBlob(body)) {\n      return body.size;\n    }\n\n    if (utils.isSpecCompliantForm(body)) {\n      const _request = new Request(platform.origin, {\n        method: 'POST',\n        body,\n      });\n      return (await _request.arrayBuffer()).byteLength;\n    }\n\n    if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n      return body.byteLength;\n    }\n\n    if (utils.isURLSearchParams(body)) {\n      body = body + '';\n    }\n\n    if (utils.isString(body)) {\n      return (await encodeText(body)).byteLength;\n    }\n  };\n\n  const resolveBodyLength = async (headers, body) => {\n    const length = utils.toFiniteNumber(headers.getContentLength());\n\n    return length == null ? getBodyLength(body) : length;\n  };\n\n  return async (config) => {\n    let {\n      url,\n      method,\n      data,\n      signal,\n      cancelToken,\n      timeout,\n      onDownloadProgress,\n      onUploadProgress,\n      responseType,\n      headers,\n      withCredentials = 'same-origin',\n      fetchOptions,\n      maxContentLength,\n      maxBodyLength,\n    } = resolveConfig(config);\n\n    const hasMaxContentLength = utils.isNumber(maxContentLength) && maxContentLength > -1;\n    const hasMaxBodyLength = utils.isNumber(maxBodyLength) && maxBodyLength > -1;\n\n    let _fetch = envFetch || fetch;\n\n    responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n    let composedSignal = composeSignals(\n      [signal, cancelToken && cancelToken.toAbortSignal()],\n      timeout\n    );\n\n    let request = null;\n\n    const unsubscribe =\n      composedSignal &&\n      composedSignal.unsubscribe &&\n      (() => {\n        composedSignal.unsubscribe();\n      });\n\n    let requestContentLength;\n\n    try {\n      // Enforce maxContentLength for data: URLs up-front so we never materialize\n      // an oversized payload. The HTTP adapter applies the same check (see http.js\n      // \"if (protocol === 'data:')\" branch).\n      if (hasMaxContentLength && typeof url === 'string' && url.startsWith('data:')) {\n        const estimated = estimateDataURLDecodedBytes(url);\n        if (estimated > maxContentLength) {\n          throw new AxiosError(\n            'maxContentLength size of ' + maxContentLength + ' exceeded',\n            AxiosError.ERR_BAD_RESPONSE,\n            config,\n            request\n          );\n        }\n      }\n\n      // Enforce maxBodyLength against the outbound request body before dispatch.\n      // Mirrors http.js behavior (ERR_BAD_REQUEST / 'Request body larger than\n      // maxBodyLength limit'). Skip when the body length cannot be determined\n      // (e.g. a live ReadableStream supplied by the caller).\n      if (hasMaxBodyLength && method !== 'get' && method !== 'head') {\n        const outboundLength = await resolveBodyLength(headers, data);\n        if (\n          typeof outboundLength === 'number' &&\n          isFinite(outboundLength) &&\n          outboundLength > maxBodyLength\n        ) {\n          throw new AxiosError(\n            'Request body larger than maxBodyLength limit',\n            AxiosError.ERR_BAD_REQUEST,\n            config,\n            request\n          );\n        }\n      }\n\n      if (\n        onUploadProgress &&\n        supportsRequestStream &&\n        method !== 'get' &&\n        method !== 'head' &&\n        (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n      ) {\n        let _request = new Request(url, {\n          method: 'POST',\n          body: data,\n          duplex: 'half',\n        });\n\n        let contentTypeHeader;\n\n        if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n          headers.setContentType(contentTypeHeader);\n        }\n\n        if (_request.body) {\n          const [onProgress, flush] = progressEventDecorator(\n            requestContentLength,\n            progressEventReducer(asyncDecorator(onUploadProgress))\n          );\n\n          data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n        }\n      }\n\n      if (!utils.isString(withCredentials)) {\n        withCredentials = withCredentials ? 'include' : 'omit';\n      }\n\n      // Cloudflare Workers throws when credentials are defined\n      // see https://github.com/cloudflare/workerd/issues/902\n      const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype;\n\n      // If data is FormData and Content-Type is multipart/form-data without boundary,\n      // delete it so fetch can set it correctly with the boundary\n      if (utils.isFormData(data)) {\n        const contentType = headers.getContentType();\n        if (\n          contentType &&\n          /^multipart\\/form-data/i.test(contentType) &&\n          !/boundary=/i.test(contentType)\n        ) {\n          headers.delete('content-type');\n        }\n      }\n\n      // Set User-Agent header if not already set (fetch defaults to 'node' in Node.js)\n      headers.set('User-Agent', 'axios/' + VERSION, false);\n\n      const resolvedOptions = {\n        ...fetchOptions,\n        signal: composedSignal,\n        method: method.toUpperCase(),\n        headers: headers.normalize().toJSON(),\n        body: data,\n        duplex: 'half',\n        credentials: isCredentialsSupported ? withCredentials : undefined,\n      };\n\n      request = isRequestSupported && new Request(url, resolvedOptions);\n\n      let response = await (isRequestSupported\n        ? _fetch(request, fetchOptions)\n        : _fetch(url, resolvedOptions));\n\n      // Cheap pre-check: if the server honestly declares a content-length that\n      // already exceeds the cap, reject before we start streaming.\n      if (hasMaxContentLength) {\n        const declaredLength = utils.toFiniteNumber(response.headers.get('content-length'));\n        if (declaredLength != null && declaredLength > maxContentLength) {\n          throw new AxiosError(\n            'maxContentLength size of ' + maxContentLength + ' exceeded',\n            AxiosError.ERR_BAD_RESPONSE,\n            config,\n            request\n          );\n        }\n      }\n\n      const isStreamResponse =\n        supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n      if (\n        supportsResponseStream &&\n        response.body &&\n        (onDownloadProgress || hasMaxContentLength || (isStreamResponse && unsubscribe))\n      ) {\n        const options = {};\n\n        ['status', 'statusText', 'headers'].forEach((prop) => {\n          options[prop] = response[prop];\n        });\n\n        const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n        const [onProgress, flush] =\n          (onDownloadProgress &&\n            progressEventDecorator(\n              responseContentLength,\n              progressEventReducer(asyncDecorator(onDownloadProgress), true)\n            )) ||\n          [];\n\n        let bytesRead = 0;\n        const onChunkProgress = (loadedBytes) => {\n          if (hasMaxContentLength) {\n            bytesRead = loadedBytes;\n            if (bytesRead > maxContentLength) {\n              throw new AxiosError(\n                'maxContentLength size of ' + maxContentLength + ' exceeded',\n                AxiosError.ERR_BAD_RESPONSE,\n                config,\n                request\n              );\n            }\n          }\n          onProgress && onProgress(loadedBytes);\n        };\n\n        response = new Response(\n          trackStream(response.body, DEFAULT_CHUNK_SIZE, onChunkProgress, () => {\n            flush && flush();\n            unsubscribe && unsubscribe();\n          }),\n          options\n        );\n      }\n\n      responseType = responseType || 'text';\n\n      let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](\n        response,\n        config\n      );\n\n      // Fallback enforcement for environments without ReadableStream support\n      // (legacy runtimes). Detect materialized size from typed output; skip\n      // streams/Response passthrough since the user will read those themselves.\n      if (hasMaxContentLength && !supportsResponseStream && !isStreamResponse) {\n        let materializedSize;\n        if (responseData != null) {\n          if (typeof responseData.byteLength === 'number') {\n            materializedSize = responseData.byteLength;\n          } else if (typeof responseData.size === 'number') {\n            materializedSize = responseData.size;\n          } else if (typeof responseData === 'string') {\n            materializedSize =\n              typeof TextEncoder === 'function'\n                ? new TextEncoder().encode(responseData).byteLength\n                : responseData.length;\n          }\n        }\n        if (typeof materializedSize === 'number' && materializedSize > maxContentLength) {\n          throw new AxiosError(\n            'maxContentLength size of ' + maxContentLength + ' exceeded',\n            AxiosError.ERR_BAD_RESPONSE,\n            config,\n            request\n          );\n        }\n      }\n\n      !isStreamResponse && unsubscribe && unsubscribe();\n\n      return await new Promise((resolve, reject) => {\n        settle(resolve, reject, {\n          data: responseData,\n          headers: AxiosHeaders.from(response.headers),\n          status: response.status,\n          statusText: response.statusText,\n          config,\n          request,\n        });\n      });\n    } catch (err) {\n      unsubscribe && unsubscribe();\n\n      // Safari can surface fetch aborts as a DOMException-like object whose\n      // branded getters throw. Prefer our composed signal reason before reading\n      // the caught error, preserving timeout vs cancellation semantics.\n      if (composedSignal && composedSignal.aborted && composedSignal.reason instanceof AxiosError) {\n        const canceledError = composedSignal.reason;\n        canceledError.config = config;\n        request && (canceledError.request = request);\n        err !== canceledError && (canceledError.cause = err);\n        throw canceledError;\n      }\n\n      if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n        throw Object.assign(\n          new AxiosError(\n            'Network Error',\n            AxiosError.ERR_NETWORK,\n            config,\n            request,\n            err && err.response\n          ),\n          {\n            cause: err.cause || err,\n          }\n        );\n      }\n\n      throw AxiosError.from(err, err && err.code, config, request, err && err.response);\n    }\n  };\n};\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n  let env = (config && config.env) || {};\n  const { fetch, Request, Response } = env;\n  const seeds = [Request, Response, fetch];\n\n  let len = seeds.length,\n    i = len,\n    seed,\n    target,\n    map = seedCache;\n\n  while (i--) {\n    seed = seeds[i];\n    target = map.get(seed);\n\n    target === undefined && map.set(seed, (target = i ? new Map() : factory(env)));\n\n    map = target;\n  }\n\n  return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n", "import CanceledError from '../cancel/CanceledError.js';\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n  const { length } = (signals = signals ? signals.filter(Boolean) : []);\n\n  if (timeout || length) {\n    let controller = new AbortController();\n\n    let aborted;\n\n    const onabort = function (reason) {\n      if (!aborted) {\n        aborted = true;\n        unsubscribe();\n        const err = reason instanceof Error ? reason : this.reason;\n        controller.abort(\n          err instanceof AxiosError\n            ? err\n            : new CanceledError(err instanceof Error ? err.message : err)\n        );\n      }\n    };\n\n    let timer =\n      timeout &&\n      setTimeout(() => {\n        timer = null;\n        onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT));\n      }, timeout);\n\n    const unsubscribe = () => {\n      if (signals) {\n        timer && clearTimeout(timer);\n        timer = null;\n        signals.forEach((signal) => {\n          signal.unsubscribe\n            ? signal.unsubscribe(onabort)\n            : signal.removeEventListener('abort', onabort);\n        });\n        signals = null;\n      }\n    };\n\n    signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n    const { signal } = controller;\n\n    signal.unsubscribe = () => utils.asap(unsubscribe);\n\n    return signal;\n  }\n};\n\nexport default composeSignals;\n", "export const streamChunk = function* (chunk, chunkSize) {\n  let len = chunk.byteLength;\n\n  if (!chunkSize || len < chunkSize) {\n    yield chunk;\n    return;\n  }\n\n  let pos = 0;\n  let end;\n\n  while (pos < len) {\n    end = pos + chunkSize;\n    yield chunk.slice(pos, end);\n    pos = end;\n  }\n};\n\nexport const readBytes = async function* (iterable, chunkSize) {\n  for await (const chunk of readStream(iterable)) {\n    yield* streamChunk(chunk, chunkSize);\n  }\n};\n\nconst readStream = async function* (stream) {\n  if (stream[Symbol.asyncIterator]) {\n    yield* stream;\n    return;\n  }\n\n  const reader = stream.getReader();\n  try {\n    for (;;) {\n      const { done, value } = await reader.read();\n      if (done) {\n        break;\n      }\n      yield value;\n    }\n  } finally {\n    await reader.cancel();\n  }\n};\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n  const iterator = readBytes(stream, chunkSize);\n\n  let bytes = 0;\n  let done;\n  let _onFinish = (e) => {\n    if (!done) {\n      done = true;\n      onFinish && onFinish(e);\n    }\n  };\n\n  return new ReadableStream(\n    {\n      async pull(controller) {\n        try {\n          const { done, value } = await iterator.next();\n\n          if (done) {\n            _onFinish();\n            controller.close();\n            return;\n          }\n\n          let len = value.byteLength;\n          if (onProgress) {\n            let loadedBytes = (bytes += len);\n            onProgress(loadedBytes);\n          }\n          controller.enqueue(new Uint8Array(value));\n        } catch (err) {\n          _onFinish(err);\n          throw err;\n        }\n      },\n      cancel(reason) {\n        _onFinish(reason);\n        return iterator.return();\n      },\n    },\n    {\n      highWaterMark: 2,\n    }\n  );\n};\n", "/**\n * Estimate decoded byte length of a data:// URL *without* allocating large buffers.\n * - For base64: compute exact decoded size using length and padding;\n *               handle %XX at the character-count level (no string allocation).\n * - For non-base64: use UTF-8 byteLength of the encoded body as a safe upper bound.\n *\n * @param {string} url\n * @returns {number}\n */\nexport default function estimateDataURLDecodedBytes(url) {\n  if (!url || typeof url !== 'string') return 0;\n  if (!url.startsWith('data:')) return 0;\n\n  const comma = url.indexOf(',');\n  if (comma < 0) return 0;\n\n  const meta = url.slice(5, comma);\n  const body = url.slice(comma + 1);\n  const isBase64 = /;base64/i.test(meta);\n\n  if (isBase64) {\n    let effectiveLen = body.length;\n    const len = body.length; // cache length\n\n    for (let i = 0; i < len; i++) {\n      if (body.charCodeAt(i) === 37 /* '%' */ && i + 2 < len) {\n        const a = body.charCodeAt(i + 1);\n        const b = body.charCodeAt(i + 2);\n        const isHex =\n          ((a >= 48 && a <= 57) || (a >= 65 && a <= 70) || (a >= 97 && a <= 102)) &&\n          ((b >= 48 && b <= 57) || (b >= 65 && b <= 70) || (b >= 97 && b <= 102));\n\n        if (isHex) {\n          effectiveLen -= 2;\n          i += 2;\n        }\n      }\n    }\n\n    let pad = 0;\n    let idx = len - 1;\n\n    const tailIsPct3D = (j) =>\n      j >= 2 &&\n      body.charCodeAt(j - 2) === 37 && // '%'\n      body.charCodeAt(j - 1) === 51 && // '3'\n      (body.charCodeAt(j) === 68 || body.charCodeAt(j) === 100); // 'D' or 'd'\n\n    if (idx >= 0) {\n      if (body.charCodeAt(idx) === 61 /* '=' */) {\n        pad++;\n        idx--;\n      } else if (tailIsPct3D(idx)) {\n        pad++;\n        idx -= 3;\n      }\n    }\n\n    if (pad === 1 && idx >= 0) {\n      if (body.charCodeAt(idx) === 61 /* '=' */) {\n        pad++;\n      } else if (tailIsPct3D(idx)) {\n        pad++;\n      }\n    }\n\n    const groups = Math.floor(effectiveLen / 4);\n    const bytes = groups * 3 - (pad || 0);\n    return bytes > 0 ? bytes : 0;\n  }\n\n  if (typeof Buffer !== 'undefined' && typeof Buffer.byteLength === 'function') {\n    return Buffer.byteLength(body, 'utf8');\n  }\n\n  // Compute UTF-8 byte length directly from UTF-16 code units without allocating\n  // a byte buffer (TextEncoder.encode would defeat the DoS guard on large bodies).\n  // Using body.length here would undercount non-ASCII (e.g. '\u20AC' is 1 code unit\n  // but 3 UTF-8 bytes).\n  let bytes = 0;\n  for (let i = 0, len = body.length; i < len; i++) {\n    const c = body.charCodeAt(i);\n    if (c < 0x80) {\n      bytes += 1;\n    } else if (c < 0x800) {\n      bytes += 2;\n    } else if (c >= 0xd800 && c <= 0xdbff && i + 1 < len) {\n      const next = body.charCodeAt(i + 1);\n      if (next >= 0xdc00 && next <= 0xdfff) {\n        bytes += 4;\n        i++;\n      } else {\n        bytes += 3;\n      }\n    } else {\n      bytes += 3;\n    }\n  }\n  return bytes;\n}\n", "export const VERSION = \"1.16.0\";", "'use strict';\n\nimport { VERSION } from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n  validators[type] = function validator(thing) {\n    return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n  };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n  function formatMessage(opt, desc) {\n    return (\n      '[Axios v' +\n      VERSION +\n      \"] Transitional option '\" +\n      opt +\n      \"'\" +\n      desc +\n      (message ? '. ' + message : '')\n    );\n  }\n\n  // eslint-disable-next-line func-names\n  return (value, opt, opts) => {\n    if (validator === false) {\n      throw new AxiosError(\n        formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n        AxiosError.ERR_DEPRECATED\n      );\n    }\n\n    if (version && !deprecatedWarnings[opt]) {\n      deprecatedWarnings[opt] = true;\n      // eslint-disable-next-line no-console\n      console.warn(\n        formatMessage(\n          opt,\n          ' has been deprecated since v' + version + ' and will be removed in the near future'\n        )\n      );\n    }\n\n    return validator ? validator(value, opt, opts) : true;\n  };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n  return (value, opt) => {\n    // eslint-disable-next-line no-console\n    console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n    return true;\n  };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n  if (typeof options !== 'object') {\n    throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n  }\n  const keys = Object.keys(options);\n  let i = keys.length;\n  while (i-- > 0) {\n    const opt = keys[i];\n    // Use hasOwnProperty so a polluted Object.prototype.<opt> cannot supply\n    // a non-function validator and cause a TypeError.\n    const validator = Object.prototype.hasOwnProperty.call(schema, opt) ? schema[opt] : undefined;\n    if (validator) {\n      const value = options[opt];\n      const result = value === undefined || validator(value, opt, options);\n      if (result !== true) {\n        throw new AxiosError(\n          'option ' + opt + ' must be ' + result,\n          AxiosError.ERR_BAD_OPTION_VALUE\n        );\n      }\n      continue;\n    }\n    if (allowUnknown !== true) {\n      throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n    }\n  }\n}\n\nexport default {\n  assertOptions,\n  validators,\n};\n", "'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n  constructor(executor) {\n    if (typeof executor !== 'function') {\n      throw new TypeError('executor must be a function.');\n    }\n\n    let resolvePromise;\n\n    this.promise = new Promise(function promiseExecutor(resolve) {\n      resolvePromise = resolve;\n    });\n\n    const token = this;\n\n    // eslint-disable-next-line func-names\n    this.promise.then((cancel) => {\n      if (!token._listeners) return;\n\n      let i = token._listeners.length;\n\n      while (i-- > 0) {\n        token._listeners[i](cancel);\n      }\n      token._listeners = null;\n    });\n\n    // eslint-disable-next-line func-names\n    this.promise.then = (onfulfilled) => {\n      let _resolve;\n      // eslint-disable-next-line func-names\n      const promise = new Promise((resolve) => {\n        token.subscribe(resolve);\n        _resolve = resolve;\n      }).then(onfulfilled);\n\n      promise.cancel = function reject() {\n        token.unsubscribe(_resolve);\n      };\n\n      return promise;\n    };\n\n    executor(function cancel(message, config, request) {\n      if (token.reason) {\n        // Cancellation has already been requested\n        return;\n      }\n\n      token.reason = new CanceledError(message, config, request);\n      resolvePromise(token.reason);\n    });\n  }\n\n  /**\n   * Throws a `CanceledError` if cancellation has been requested.\n   */\n  throwIfRequested() {\n    if (this.reason) {\n      throw this.reason;\n    }\n  }\n\n  /**\n   * Subscribe to the cancel signal\n   */\n\n  subscribe(listener) {\n    if (this.reason) {\n      listener(this.reason);\n      return;\n    }\n\n    if (this._listeners) {\n      this._listeners.push(listener);\n    } else {\n      this._listeners = [listener];\n    }\n  }\n\n  /**\n   * Unsubscribe from the cancel signal\n   */\n\n  unsubscribe(listener) {\n    if (!this._listeners) {\n      return;\n    }\n    const index = this._listeners.indexOf(listener);\n    if (index !== -1) {\n      this._listeners.splice(index, 1);\n    }\n  }\n\n  toAbortSignal() {\n    const controller = new AbortController();\n\n    const abort = (err) => {\n      controller.abort(err);\n    };\n\n    this.subscribe(abort);\n\n    controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n    return controller.signal;\n  }\n\n  /**\n   * Returns an object that contains a new `CancelToken` and a function that, when called,\n   * cancels the `CancelToken`.\n   */\n  static source() {\n    let cancel;\n    const token = new CancelToken(function executor(c) {\n      cancel = c;\n    });\n    return {\n      token,\n      cancel,\n    };\n  }\n}\n\nexport default CancelToken;\n", "'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n *  ```js\n *  function f(x, y, z) {}\n *  const args = [1, 2, 3];\n *  f.apply(null, args);\n *  ```\n *\n * With `spread` this example can be re-written.\n *\n *  ```js\n *  spread(function(x, y, z) {})([1, 2, 3]);\n *  ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n  return function wrap(arr) {\n    return callback.apply(null, arr);\n  };\n}\n", "'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n  return utils.isObject(payload) && payload.isAxiosError === true;\n}\n", "const HttpStatusCode = {\n  Continue: 100,\n  SwitchingProtocols: 101,\n  Processing: 102,\n  EarlyHints: 103,\n  Ok: 200,\n  Created: 201,\n  Accepted: 202,\n  NonAuthoritativeInformation: 203,\n  NoContent: 204,\n  ResetContent: 205,\n  PartialContent: 206,\n  MultiStatus: 207,\n  AlreadyReported: 208,\n  ImUsed: 226,\n  MultipleChoices: 300,\n  MovedPermanently: 301,\n  Found: 302,\n  SeeOther: 303,\n  NotModified: 304,\n  UseProxy: 305,\n  Unused: 306,\n  TemporaryRedirect: 307,\n  PermanentRedirect: 308,\n  BadRequest: 400,\n  Unauthorized: 401,\n  PaymentRequired: 402,\n  Forbidden: 403,\n  NotFound: 404,\n  MethodNotAllowed: 405,\n  NotAcceptable: 406,\n  ProxyAuthenticationRequired: 407,\n  RequestTimeout: 408,\n  Conflict: 409,\n  Gone: 410,\n  LengthRequired: 411,\n  PreconditionFailed: 412,\n  PayloadTooLarge: 413,\n  UriTooLong: 414,\n  UnsupportedMediaType: 415,\n  RangeNotSatisfiable: 416,\n  ExpectationFailed: 417,\n  ImATeapot: 418,\n  MisdirectedRequest: 421,\n  UnprocessableEntity: 422,\n  Locked: 423,\n  FailedDependency: 424,\n  TooEarly: 425,\n  UpgradeRequired: 426,\n  PreconditionRequired: 428,\n  TooManyRequests: 429,\n  RequestHeaderFieldsTooLarge: 431,\n  UnavailableForLegalReasons: 451,\n  InternalServerError: 500,\n  NotImplemented: 501,\n  BadGateway: 502,\n  ServiceUnavailable: 503,\n  GatewayTimeout: 504,\n  HttpVersionNotSupported: 505,\n  VariantAlsoNegotiates: 506,\n  InsufficientStorage: 507,\n  LoopDetected: 508,\n  NotExtended: 510,\n  NetworkAuthenticationRequired: 511,\n  WebServerIsDown: 521,\n  ConnectionTimedOut: 522,\n  OriginIsUnreachable: 523,\n  TimeoutOccurred: 524,\n  SslHandshakeFailed: 525,\n  InvalidSslCertificate: 526,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n  HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n// ESBuild does not work properly with dynamic components\nimport SidebarCategories from './sidebar/SidebarCategories.vue';\nimport SidebarDatasets from './sidebar/SidebarDatasets.vue';\nimport SidebarQueries from './sidebar/SidebarQueries.vue';\n\nconst COMPONENTS = [\n  SidebarCategories,\n  SidebarDatasets,\n  SidebarQueries\n];\n// define the components as dynamic\n// const COMPONENTS = [\n//   () => import('./sidebar/SidebarCategories.vue'),\n//   () => import('./sidebar/SidebarDatasets.vue'),\n//   () => import('./sidebar/SidebarQueries.vue')\n// ];\n\nconst __vue_script__ = {\n  name: \"Sidebar\",\n  inheritAttrs: false,\n  props: {\n    activeTab: {\n      type: Number,\n      default: 0\n    },\n  },\n  data() {\n    return {\n      labelSets: I18n.t(\"gobierto_data.projects.sets\") || \"\",\n      // labelQueries: I18n.t(\"gobierto_data.projects.queries\") || \"\",\n      labelCategories: I18n.t(\"gobierto_data.projects.categories\") || \"\",\n      currentTabComponent: null,\n    };\n  },\n  watch: {\n    activeTab(newValue, oldValue) {\n      if (newValue !== oldValue) {\n        this.currentTabComponent = COMPONENTS[newValue];\n      }\n    }\n  },\n  created() {\n    this.currentTabComponent = COMPONENTS[this.activeTab];\n  },\n  methods: {\n    activateTab(index) {\n      this.$emit(\"active-tab\", index)\n    },\n    handleUpdate(items) {\n      this.$emit(\"update\", items)\n    }\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('nav',{staticClass:\"gobierto-data-tabs-sidebar\",attrs:{\"role\":\"navigation\",\"aria-label\":\"sidebar navigation\"}},[_c('div',{staticClass:\"gobierto-data-tab-sidebar--tab\",class:{ 'is-active': _vm.activeTab === 0 },on:{\"click\":function($event){return _vm.activateTab(0)}}},[_c('span',[_vm._v(_vm._s(_vm.labelCategories))])]),_vm._v(\" \"),_c('div',{staticClass:\"gobierto-data-tab-sidebar--tab\",class:{ 'is-active': _vm.activeTab === 1 },on:{\"click\":function($event){return _vm.activateTab(1)}}},[_c('span',[_vm._v(_vm._s(_vm.labelSets))])])]),_vm._v(\" \"),_c('keep-alive',[_c(_vm.currentTabComponent,_vm._b({tag:\"component\",on:{\"update\":_vm.handleUpdate}},'component',_vm.$attrs,false))],1)],1)}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"Sidebar.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport { Filters } from '../../../../lib/vue/components';\nimport { ROUTE_NAMES } from '../../../lib/router';\n\nconst __vue_script__ = {\n  name: \"SidebarCategories\",\n  components: {\n    Filters\n  },\n  props: {\n    fields: {\n      type: Array,\n      default: () => []\n    },\n    items: {\n      type: Array,\n      default: () => []\n    },\n    metadata: {\n      type: Array,\n      default: () => []\n    },\n    stats: {\n      type: Object,\n      default: () => {}\n    }\n  },\n  methods: {\n    handleUpdate(items) {\n      this.$emit(\"update\", items);\n    },\n    handleClick() {\n      if (this.$route.name !== ROUTE_NAMES.Index) {\n        this.$router.push({ name: ROUTE_NAMES.Index });\n      }\n    }\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pure-u-1 pure-u-lg-4-4\",on:{\"click\":_vm.handleClick}},[(_vm.items.length)?_c('Filters',{attrs:{\"data\":_vm.items,\"fields\":_vm.fields,\"metadata\":_vm.metadata,\"stats\":_vm.stats,\"no-empty-options\":true},on:{\"update\":_vm.handleUpdate}}):_vm._e()],1)}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"SidebarCategories.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nconst __vue_script__ = {\n  name: \"SidebarDatasets\",\n  props: {\n    items: {\n      type: Array,\n      default: () => []\n    }\n  },\n  data() {\n    return {\n      sortedItems: [],\n      listDatasets: [],\n      currentDatasetSlug: null,\n      showMaxKeys: 10,\n      showLess: null,\n      activeDatasetColumns: {},\n      showToggle: null,\n      labelSets: I18n.t(\"gobierto_data.projects.sets\"),\n      labelQueries: I18n.t(\"gobierto_data.projects.queries\"),\n      labelCategories: I18n.t(\"gobierto_data.projects.categories\"),\n      labelshowAll: I18n.t(\"gobierto_data.projects.showAll\"),\n      labelshowLess: I18n.t(\"gobierto_data.projects.showLess\")\n    }\n  },\n  computed: {\n    activeDatasetVisibleColumns() {\n      if (this.showLess && Object.keys(this.activeDatasetColumns).length) {\n       return Object.keys(this.activeDatasetColumns).slice(0, this.showMaxKeys).reduce((result, key) => {\n          result[key] = this.activeDatasetColumns[key];\n          return result;\n        }, {});\n      } else {\n        return this.activeDatasetColumns;\n      }\n    }\n  },\n  watch: {\n    currentDatasetSlug (newSlug) {\n      this.showLess = true;\n      if (this.sortedItems.length && newSlug) {\n        this.activeDatasetColumns = this.sortedItems.find(({ attributes: { slug } = {} }) => slug === newSlug).attributes.columns || {}\n        this.showToggle = Object.keys(this.activeDatasetColumns).length > this.showMaxKeys\n      }\n    }\n  },\n  created() {\n    // TODO Datasets should be order in filter mixin\n    this.sortedItems = this.items.sort(({ attributes: { name: a } = {} }, { attributes: { name: b } = {} }) => a.localeCompare(b));\n\n    let { id } = this.$route.params\n    this.selectCurrentDataset(id)\n  },\n  methods: {\n    selectCurrentDataset(selectedDatasetSlug) {\n      if (!selectedDatasetSlug && this.sortedItems.length) {\n        selectedDatasetSlug = this.sortedItems[0].attributes.slug\n      }\n      if (selectedDatasetSlug) {\n        const selectedDataset = this.sortedItems.find(({ attributes: { slug } = {} }) => slug === selectedDatasetSlug)\n        const filteredArray = this.sortedItems.filter(({ attributes: { slug } = {} }) => slug !== selectedDatasetSlug)\n        this.listDatasets = [selectedDataset].concat(filteredArray)\n        this.currentDatasetSlug = selectedDatasetSlug\n      }\n    },\n    handleToggle(slug) {\n      if (slug !== this.currentDatasetSlug) {\n        this.currentDatasetSlug = slug\n      } else {\n        this.currentDatasetSlug = ''\n      }\n    }\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.listDatasets.length)?_c('div',_vm._l((_vm.listDatasets),function(ref){\nvar ref_attributes = ref.attributes;\nvar slug = ref_attributes.slug;\nvar name = ref_attributes.name;\nreturn _c('div',{key:slug,staticClass:\"gobierto-data-sidebar-datasets\"},[_c('div',{staticClass:\"gobierto-data-sidebar-datasets-links-container\"},[_c('i',{staticClass:\"fas fa-caret-down gobierto-data-sidebar-icon\",class:{'rotate-caret': _vm.currentDatasetSlug !== slug },on:{\"click\":function($event){return _vm.handleToggle(slug)}}}),_vm._v(\" \"),_c('router-link',{staticClass:\"gobierto-data-sidebar-datasets-name\",attrs:{\"to\":(\"/datos/\" + slug)},nativeOn:{\"click\":function($event){return _vm.selectCurrentDataset(slug)}}},[_vm._v(\"\\n        \"+_vm._s(name)+\"\\n      \")]),_vm._v(\" \"),(_vm.currentDatasetSlug === slug)?_c('div',{staticClass:\"gobierto-data-sidebar-datasets-container-columns\"},[_vm._l((_vm.activeDatasetVisibleColumns),function(type,column){return [_c('div',{key:(column + \"-\" + type),staticClass:\"gobierto-data-sidebar-datasets-links-columns\",attrs:{\"title\":(\"\" + type)}},[_c('i',{class:(\"fas gobierto-data-columns-icon gobierto-data-columns-icon-\" + type),staticStyle:{\"color\":\"var(--color-base)\"}}),_vm._v(\" \"),_c('span',{staticClass:\"gobierto-data-sidebar-datasets-links-columns-text\"},[_vm._v(\"\\n              \"+_vm._s(column)+\"\\n            \")])])]}),_vm._v(\" \"),(_vm.showToggle)?_c('div',[(_vm.showLess)?_c('span',{staticClass:\"gobierto-data-sidebar-datasets-links-columns-see-more\",on:{\"click\":function($event){_vm.showLess = false}}},[_vm._v(\"\\n            \"+_vm._s(_vm.labelshowAll)+\"\\n          \")]):_c('span',{staticClass:\"gobierto-data-sidebar-datasets-links-columns-see-more\",on:{\"click\":function($event){_vm.showLess = true}}},[_vm._v(\"\\n            \"+_vm._s(_vm.labelshowLess)+\"\\n          \")])]):_vm._e()],2):_vm._e()],1)])}),0):_vm._e()}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"SidebarDatasets.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n\nconst __vue_script__ = {\n  name: \"SidebarQueries\"\n}\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar __vue_staticRenderFns__ = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('p',[_vm._v(\"Queries\")])])}]\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"SidebarQueries.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nconst __vue_script__ = {\n  name: \"Layout\"\n}\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gobierto-data\"},[_c('div',{staticClass:\"pure-g gutters m_b_1\"},[_c('div',{staticClass:\"pure-u-1 pure-u-lg-1-4 gobierto-data-layout-column gobierto-data-layout-sidebar\"},[_vm._t(\"sidebar\")],2),_vm._v(\" \"),_c('div',{staticClass:\"pure-u-1 pure-u-lg-3-4 gobierto-data-layout-column\"},[_vm._t(\"default\")],2)])])}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"Layout.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport Info from './commons/Info.vue';\n\nconst __vue_script__ = {\n  name: \"Index\",\n  components: {\n    Info\n  },\n  props: {\n    datasets: {\n      type: Array,\n      default: () => []\n    }\n  },\n  data() {\n    return {\n      labelUpdated: I18n.t(\"gobierto_data.projects.updated\") || \"\",\n      labelFrequency: I18n.t(\"gobierto_data.projects.frequency\") || \"\",\n      labelSubject: I18n.t(\"gobierto_data.projects.subject\") || \"\",\n      labelDownloadData: I18n.t(\"gobierto_data.projects.downloadData\") || \"\",\n      labelDatasetUpdated: I18n.t(\"gobierto_data.projects.datasetUpdated\") || \"\",\n    };\n  },\n  created() {\n    this.injectRouter()\n  },\n  methods: {\n    injectRouter() {\n      //REVIEW: Inject a vue router to element outside VUE, be careful\n      const topMenu = document.getElementById('gobierto-data-top-menu')\n      if (topMenu) {\n        topMenu.addEventListener('click', (e) => {\n        e.preventDefault()\n        // eslint-disable-next-line no-unused-vars\n        this.$router.push('/datos/').catch(err => {})\n      })\n      }\n    }\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.datasets.length)?_c('div',[_c('h3',{staticClass:\"gobierto-data-index-title\"},[_vm._v(\"\\n    \"+_vm._s(_vm.labelDatasetUpdated)+\"\\n  \")]),_vm._v(\" \"),_c('div',{staticClass:\"gobierto-data-info-list-grid\"},[_vm._l((_vm.datasets),function(ref){\n      var id = ref.id;\n      var slug = ref.slug;\n      var name = ref.name;\n      var description = ref.description;\n      var data_updated_at = ref.data_updated_at;\n      var category = ref.category;\n      var frequency = ref.frequency;\nreturn [_c('router-link',{key:id,staticClass:\"gobierto-data-info-list-element\",attrs:{\"to\":{ path:(\"/datos/\" + slug), params: { activeSidebarTab: 1 }}}},[_c('Info',{attrs:{\"description-dataset\":description,\"category-dataset\":category,\"frequency-dataset\":frequency,\"date-updated\":data_updated_at,\"title-dataset\":name}})],1)]})],2)]):_vm._e()}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"Index.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport { date, truncate } from '../../../../lib/vue/filters';\nimport InfoBlockText from '../commons/InfoBlockText.vue';\n\n//Parse markdown to HTML. Related: https://github.com/PopulateTools/issues/issues/1428#issuecomment-1026617835\nconst marked = require('marked');\n\nconst __vue_script__ = {\n  name: \"Info\",\n  components: {\n    InfoBlockText,\n  },\n  filters: {\n    convertDate(valueDate) {\n      return date(valueDate, {\n        day : 'numeric',\n        month : 'short',\n        year : 'numeric'\n      })\n    }\n  },\n  props: {\n    descriptionDataset: {\n      type: String,\n      default: ''\n    },\n    categoryDataset: {\n      type: String,\n      default: ''\n    },\n    titleDataset: {\n      type: String,\n      default: ''\n    },\n    frequencyDataset: {\n      type: String,\n      default: ''\n    },\n    licenseDataset: {\n      type: Object,\n      default: () => {}\n    },\n    sourceDataset: {\n      type: Object,\n      default: () => {}\n    },\n    dateUpdated: {\n      type: String,\n      default: ''\n    },\n    arrayFormats: {\n      type: Object,\n      default: () => {},\n    },\n  },\n  data() {\n    return {\n      labelDownloadData: I18n.t(\"gobierto_data.projects.downloadData\") || '',\n      labelSource: I18n.t(\"gobierto_data.projects.sourceDataset\") || '',\n      labelSourceUrl: I18n.t(\"gobierto_data.projects.sourceDatasetUrl\") || '',\n      labelLicense: I18n.t(\"gobierto_data.projects.license\") || '',\n      seeMore: I18n.t(\"gobierto_common.vue_components.read_more.more\") || '',\n      seeLess: I18n.t(\"gobierto_common.vue_components.read_more.less\") || '',\n      truncateIsActive: true,\n      sourceDatasetText: '',\n      sourceDatasetUrl: '',\n      licenseDatasetText: '',\n      licenseDatasetUrl: ''\n    }\n  },\n  computed: {\n    compiledHTMLMarkdown() {\n      /*This method is to remove only the <p>| |</p> and |<br> elements that CodeMirror adds when exporting from the editor. We need to remove them to convert the Markdown tables to HTML correctly.*/\n      const descriptionHTML = this.descriptionDataset.replace(/\\|<br>|<p>\\||\\|<\\/p>/g, '|');\n      const markdownText = marked(descriptionHTML, {\n        sanitize: false,\n        tables: true\n      })\n      if (this.truncateIsActive) {\n        return truncate(markdownText, { length: 150 })\n      } else {\n        return markdownText\n      }\n    },\n    hasDatasetSource() {\n      return this.sourceDataset && this.sourceDataset?.text !== undefined && this.sourceDataset?.text !== \"\"\n    },\n    hasDatasetLicense() {\n      return this.licenseDataset?.text !== undefined && this.licenseDataset?.url !== undefined\n    },\n  },\n  created(){\n    if (this.sourceDataset) {\n      const { text: sourceDatasetText, url: sourceDatasetUrl } = this.sourceDataset\n      this.sourceDatasetText = sourceDatasetText\n      this.sourceDatasetUrl = sourceDatasetUrl\n    }\n    if (this.licenseDataset) {\n      const { text: licenseDatasetText, url: licenseDatasetUrl } = this.licenseDataset\n      this.licenseDatasetText = licenseDatasetText\n      this.licenseDatasetUrl = licenseDatasetUrl\n    }\n  },\n  methods: {\n    scrollDetail() {\n      const element = document.getElementById('gobierto-datos-app');\n      window.scrollTo({\n        top: element.offsetTop,\n        behavior: 'smooth'\n      });\n      this.truncateIsActive = true\n    }\n  }\n}\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pure-g\"},[_c('div',{staticClass:\"pure-u-1-1 gobierto-data-summary-header gobierto-data-summary-info\"},[_c('h2',{staticClass:\"gobierto-data-title-dataset gobierto-data-info-list-title\"},[_vm._v(\"\\n      \"+_vm._s(_vm.titleDataset)+\"\\n    \")]),_vm._v(\" \"),(_vm.categoryDataset)?_c('InfoBlockText',{attrs:{\"icon\":\"tag\",\"text\":_vm.categoryDataset}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"gobierto-data-info-list-top\"},[(_vm.dateUpdated)?_c('InfoBlockText',{attrs:{\"icon\":\"clock\",\"text\":_vm._f(\"convertDate\")(_vm.dateUpdated)}}):_vm._e(),_vm._v(\" \"),(_vm.frequencyDataset)?_c('InfoBlockText',{attrs:{\"icon\":\"calendar\",\"text\":_vm.frequencyDataset}}):_vm._e()],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"pure-u-1-1 gobierto-data-summary-body\"},[_c('div',{staticClass:\"gobierto-data-summary-header-description\",attrs:{\"id\":\"gobierto-data-summary-header\"},domProps:{\"innerHTML\":_vm._s(_vm.compiledHTMLMarkdown)}}),_vm._v(\" \"),_c('i',{staticClass:\"fas fa-arrow-right\"})])])}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"Info.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport LinkableText from '../commons/LinkableText.vue'\n\nconst __vue_script__ = {\n  name: \"InfoBlockText\",\n  components: { LinkableText },\n  props: {\n    icon: {\n      type: String,\n      default: ''\n    },\n    text: {\n      type: String,\n      default: ''\n    },\n    url: {\n      type: String,\n      default: \"\"\n    },\n    label: {\n      type: String,\n      default: ''\n    },\n    opacity: {\n      type: String,\n      default: ''\n    },\n    iconColor: {\n      type: String,\n      default: 'inherit'\n    }\n  }\n}\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gobierto-data-summary-header-container\"},[(_vm.icon)?_c('i',{class:'fa fa-' + _vm.icon,staticStyle:{\"margin-right\":\".25rem\"},style:({'color': _vm.iconColor, 'opacity': _vm.opacity})}):_vm._e(),_vm._v(\" \"),(_vm.label)?_c('span',{staticClass:\"gobierto-data-summary-header-container-label\"},[_vm._v(\"\\n    \"+_vm._s(_vm.label)+\"\\n  \")]):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"gobierto-data-summary-header-container-text\"},[_c('LinkableText',{attrs:{\"text\":_vm.text,\"url\":_vm.url}})],1)])}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"InfoBlockText.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nconst __vue_script__ = {\n    name: \"TextOrLink\",\n    props: {\n      text: {\n        type: String,\n        default: ''\n      },\n      url: {\n        type: String,\n        default: ''\n      }\n    },\n    computed: {\n      hasText(){\n        return this.text !== undefined && this.text !== \"\"\n      },\n      hasUrl(){\n        return this.url !== undefined && this.url !== \"\"\n      }\n    }\n}\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.hasUrl)?_c('a',{attrs:{\"href\":_vm.url,\"target\":\"_blank\"}},[_vm._v(\"\\n  \"+_vm._s(_vm.text)+\"\\n\")]):(_vm.hasText)?_c('span',[_vm._v(\"\\n  \"+_vm._s(_vm.text)+\"\\n\")]):_vm._e()}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"LinkableText.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport { SkeletonSpinner } from '../../../lib/vue/components';\nimport DatasetNav from './sets/DatasetNav.vue';\nimport SummaryTab from './sets/SummaryTab.vue';\nimport DataTab from './sets/DataTab.vue';\nimport QueriesTab from './sets/QueriesTab.vue';\nimport VisualizationsTab from './sets/VisualizationsTab.vue';\nimport DownloadsTab from './sets/DownloadsTab.vue';\nimport MapTab from './sets/MapTab.vue';\nimport { getUserId, convertToCSV } from '../../lib/helpers';\nimport { ROUTE_NAMES, tabs } from '../../lib/router';\nimport { DatasetFactoryMixin } from '../../lib/factories/datasets';\nimport { QueriesFactoryMixin } from '../../lib/factories/queries';\nimport { DataFactoryMixin } from '../../lib/factories/data';\nimport { VisualizationFactoryMixin } from '../../lib/factories/visualizations';\n\nconst __vue_script__ = {\n  name: \"Dataset\",\n  components: {\n    SummaryTab,\n    DataTab,\n    QueriesTab,\n    VisualizationsTab,\n    DownloadsTab,\n    MapTab,\n    DatasetNav,\n    SkeletonSpinner\n  },\n  mixins: [\n    DatasetFactoryMixin,\n    QueriesFactoryMixin,\n    DataFactoryMixin,\n    VisualizationFactoryMixin\n  ],\n  beforeRouteEnter(to, from, next) {\n    const { name: nameComponent } = to;\n    next(vm => {\n      vm.showRevertQuery = nameComponent === \"Query\";\n    });\n  },\n  props: {\n    activeDatasetTab: {\n      type: Number,\n      default: 0\n    },\n    pageTitle: {\n      type: String,\n      default: \"\"\n    }\n  },\n  data() {\n    return {\n      datasetId: 0, // possible deprecation in DATA, don't in the class\n      titleDataset: \"\",\n      arrayFormats: {},\n      objectColumns: {},\n      configMap: null,\n      attributes: null,\n      privateQueries: undefined,\n      publicQueries: undefined,\n      recentQueries: [],\n      publicVisualizations: undefined,\n      privateVisualizations: undefined,\n      resourcesList: [],\n      currentQuery: null,\n      currentVizTab: null,\n      queryRevert: null,\n      items: \"\",\n      isQuerySaved: false,\n      isVizSaved: false,\n      isQuerySavingPromptVisible: false,\n      isQueryRunning: false,\n      isQueryModified: false,\n      isForkPromptVisible: true,\n      isVizModified: false,\n      isVizItemModified: false,\n      isVizSavingPromptVisible: false,\n      showPrivate: false,\n      tableName: \"\",\n      defaultLimit: 50,\n      enabledQuerySavedButton: false,\n      enabledVizSavedButton: false,\n      enabledRevertButton: false,\n      showRevertQuery: false,\n      queryName: null,\n      queryDuration: 0,\n      queryError: null,\n      isUserLogged: false,\n      enabledForkButton: false,\n      enabledForkVizButton: false,\n      isPrivateVizLoading: false,\n      queryInputFocus: false,\n      isPublicVizLoading: false,\n      vizName: null,\n      vizID: null,\n      userSaveViz: null,\n      vizInputFocus: false,\n      savingViz: false,\n      savingQuery: false,\n      showPrivatePublicIcon: false,\n      showPrivatePublicIconViz: false,\n      showPrivateViz: false,\n      showLabelEdit: false,\n      resetPrivate: false,\n      labelSummary: I18n.t(\"gobierto_data.projects.summary\") || \"\",\n      labelData: I18n.t(\"gobierto_data.projects.data\") || \"\",\n      labelQueries: I18n.t(\"gobierto_data.projects.queries\") || \"\",\n      labelVisualizations:\n        I18n.t(\"gobierto_data.projects.visualizations\") || \"\",\n      labelDownload: I18n.t(\"gobierto_data.projects.download\") || \"\",\n      registrationDisabled: this.$root.$data.registrationDisabled === \"true\"\n    };\n  },\n  computed: {\n    recentQueriesFiltered() {\n      return this.recentQueries.length\n        ? this.recentQueries\n            .filter(sql => (sql || \"\").includes(this.tableName))\n            .reverse()\n        : [];\n    },\n    isDatasetLoaded() {\n      // When loading, show skeleton if:\n      // 1. Any tab but download and map OR\n      // 2a. Dataset has no attibutes (getDatasetMetadata empty or error) AND\n      // 2b. publicQueries or publicVisualization are undefined (getPublicQueries or getPublicVisualizations have fetched no answer)\n      return [4, 5].includes(this.activeDatasetTab) || !!(\n        this.attributes && !!(this.publicQueries || this.publicVisualizations)\n      );\n    },\n    queryLimit() {\n      return this.defaultLimit !== null && this.defaultLimit > 0\n        ? ` LIMIT ${this.defaultLimit}`\n        : \"\";\n    },\n    hasGeometryColumn() {\n      return this.items.length && Object.keys(this.objectColumns).some(x => x === \"geometry\")\n    },\n    currentTabs() {\n      const commonTabs = tabs.filter(x => x !== 'mapa')\n      return this.hasGeometryColumn ? tabs : commonTabs\n    }\n  },\n  watch: {\n    $route(to, from) {\n      const {\n        path,\n        name,\n        params: { queryId },\n        query: { sql }\n      } = to;\n\n      // do nothing if the component is inactive\n      if (this._inactive) return null\n\n      if (path !== from.path) {\n        this.isQueryModified = false;\n        this.setDefaultQuery();\n        this.queryOrVizIsNotMine();\n        this.disabledRevertButton();\n      }\n\n      if (name === ROUTE_NAMES.Dataset) {\n        this.currentVizTab = 0;\n        this.vizName = null;\n\n        this.updateBaseTitle();\n        this.handleDatasetTabs(this.$route);\n      } else if (name === ROUTE_NAMES.Visualization) {\n        this.currentVizTab = 1;\n        this.showLabelEdit = true;\n      } else if (name === ROUTE_NAMES.Query) {\n        this.parseUrl(queryId, sql)\n      }\n    }\n  },\n  async created() {\n    const {\n      name,\n      params: { id }\n    } = this.$route;\n\n    let responseMetaData;\n\n    try {\n      responseMetaData = await this.getDatasetMetadata(id);\n    } catch ({ response }) {\n      if (response.status === 404) {\n        this.$router.push({ name: ROUTE_NAMES.Index });\n        throw response;\n      }\n    }\n\n    const {\n      data: {\n        data: { id: datasetId, attributes }\n      },\n      included\n    } = responseMetaData;\n\n    this.datasetId = parseInt(datasetId);\n    this.resourcesList = included;\n    this.attributes = attributes;\n\n    const {\n      name: titleDataset,\n      table_name: tableName,\n      columns: objectColumns,\n      formats: arrayFormats,\n      default_limit: defaultLimit,\n      \"gobierto-default-geometry-data-column\": metric\n    } = attributes;\n\n    this.titleDataset = titleDataset;\n    this.tableName = tableName;\n    this.objectColumns = objectColumns;\n    this.configMap = { metric };\n    this.arrayFormats = arrayFormats;\n    this.defaultLimit = defaultLimit;\n\n    const userId = getUserId();\n    this.isUserLogged = !!(userId && userId.length);\n\n    if (\n      [\n        ROUTE_NAMES.Dataset,\n        ROUTE_NAMES.Query,\n        ROUTE_NAMES.Visualization\n      ].includes(name)\n    ) {\n      this.updateBaseTitle();\n      await this.handleDatasetTabs(this.$route);\n\n      // wait for the query be resolved\n      if (ROUTE_NAMES.Dataset === name) {\n        // run the query directly in the editor\n        this.runCurrentQuery()\n      }\n    }\n\n\n    this.queryOrVizIsNotMine();\n    this.displayVizSavingPrompt();\n  },\n  mounted() {\n    const recentQueries = localStorage.getItem(\"recentQueries\");\n    if (recentQueries) {\n      this.recentQueries = JSON.parse(recentQueries);\n    }\n  },\n  activated() {\n    this.$root.$on(\"deleteSavedQuery\", this.deleteSavedQuery);\n    // change the current query, triggering a new SQL execution\n    this.$root.$on(\"setCurrentQuery\", this.setCurrentQuery);\n    // execute the current query\n    this.$root.$on(\"runCurrentQuery\", this.runCurrentQuery);\n    // save the query in database\n    this.$root.$on(\"storeCurrentQuery\", this.storeCurrentQuery);\n    // save the visualization in database\n    this.$root.$on(\"storeCurrentVisualization\", this.storeCurrentVisualization);\n    // Reset to the default query\n    this.$root.$on(\"resetQuery\", this.resetQuery);\n    // reset to the saved query\n    this.$root.$on(\"revertSavedQuery\", this.revertSavedQuery);\n    // activate button to saved a query\n    this.$root.$on(\"enableSavedButton\", this.activatedSavedButton);\n    // reset query flow to initial state\n    this.$root.$on(\"eventIsQueryModified\", this.eventIsQueryModified);\n    // disabled saved button\n    this.$root.$on(\"disabledSavedButton\", this.disabledSavedButton);\n    //Show a message for the user, your query is saved\n    this.$root.$on(\"disabledStringSavedQuery\", this.disabledStringSavedQuery);\n    // enabled button to saved a viz\n    this.$root.$on(\"enableSavedVizButton\", this.activatedSavedVizButton);\n    //if user is logged show a prompt to saved a query\n    this.$root.$on(\n      \"isQuerySavingPromptVisible\",\n      this.isQuerySavingPromptVisibleHandler\n    );\n    //if user is logged show a prompt to saved a visualization\n    this.$root.$on(\n      \"isVizSavingPromptVisible\",\n      this.isVizSavingPromptVisibleHandler\n    );\n    //When user save a vizusliation show a string\n    this.$root.$on(\"showSavedVizString\", this.showSavedVizString);\n    //Show a string when the vis is modified\n    this.$root.$on(\"isVizModified\", this.eventIsVizModified);\n    //Check if the query is ours if it isn't ours show a button to fork\n    this.$root.$on(\"disabledForkButton\", this.disabledForkButton);\n    this.$root.$on(\"enabledForkPrompt\", this.enabledForkPrompt);\n    //If load a query from the other user show a button to revert the code of the editor\n    this.$root.$on(\"enabledRevertButton\", this.activatedRevertButton);\n    this.$root.$on(\"disabledRevertButton\", this.disabledRevertButton);\n    //Show the name of the visualization\n    this.$root.$on(\"loadVizName\", this.setVizName);\n    //Reload a list of private and public visualizations\n    this.$root.$on(\"reloadVisualizations\", this.setVisualizations);\n    //Check if the visualization is ours if it isn't ours show a button to fork\n    this.$root.$on(\"enabledForkVizButton\", this.activateForkVizButton);\n    //Update the name of Visualization\n    this.$root.$on(\"updateVizName\", this.eventToUpdateVizName);\n    //Enable input to write a name for query\n    this.$root.$on(\n      \"eventToEnabledInputQueries\",\n      this.eventToEnabledInputQueries\n    );\n    //Reset visualization flow\n    this.$root.$on(\"resetVizEvent\", this.resetVizEvent);\n    //Show saving dialog visualization\n    this.$root.$on(\"showSavingDialogEvent\", this.showSavingDialogEvent);\n    //Show saving dialog visualization tab item\n    this.$root.$on(\"showSavingDialogEventViz\", this.showSavingDialogEventViz);\n  },\n  deactivated() {\n    this.$root.$off(\"deleteSavedQuery\");\n    this.$root.$off(\"setCurrentQuery\");\n    this.$root.$off(\"runCurrentQuery\");\n    this.$root.$off(\"storeCurrentQuery\");\n    this.$root.$off(\"storeCurrentVisualization\");\n    this.$root.$off(\"resetQuery\");\n    this.$root.$off(\"revertSavedQuery\");\n    this.$root.$off(\"enableSavedButton\");\n    this.$root.$off(\"eventIsQueryModified\");\n    this.$root.$off(\"disabledSavedButton\");\n    this.$root.$off(\"disabledStringSavedQuery\");\n    this.$root.$off(\"disabledForkButton\");\n    this.$root.$off(\"enabledForkPrompt\");\n    this.$root.$off(\"enabledRevertButton\");\n    this.$root.$off(\"disabledRevertButton\");\n    this.$root.$off(\"isQuerySavingPromptVisible\");\n    this.$root.$off(\"eventToEnabledInputQueries\");\n    this.$root.$off(\"isVizSavingPromptVisible\");\n    this.$root.$off(\"enableSavedVizButton\");\n    this.$root.$off(\"showSavedVizString\");\n    this.$root.$off(\"isVizModified\");\n    this.$root.$off(\"loadVizName\");\n    this.$root.$off(\"updateVizName\");\n    this.$root.$off(\"reloadVisualizations\");\n    this.$root.$off(\"enabledForkVizButton\");\n    this.$root.$off(\"resetVizEvent\");\n    this.$root.$off(\"showSavingDialogEvent\");\n  },\n  methods: {\n    async handleDatasetTabs(path) {\n      const {\n        name,\n        params: { queryId, tab },\n        query: { sql }\n      } = path;\n\n      switch (true) {\n        // resumen\n        case (!tab && !queryId) || tab === tabs[0]: {\n          // Only request for the queries/vizzs when their arrays are undefined\n          if (!this.publicQueries) {\n            this.setQueries();\n          }\n          if (!this.publicVisualizations) {\n            this.setVisualizations();\n          }\n          break;\n        }\n        // datos or /q/:id\n        case tab === tabs[1]:\n        case name === ROUTE_NAMES.Query: {\n          // Only request for the queries/vizzs when their arrays are undefined\n          // Furthermore, AWAIT queries results in order to parse url\n          if (!this.publicQueries) {\n            await this.setQueries();\n          }\n          this.parseUrl(queryId, sql);\n          this.setDefaultQuery();\n          break;\n        }\n        // consultas\n        case tab === tabs[2]: {\n          // Only request for the queries/vizzs when their arrays are undefined\n          if (!this.publicQueries) {\n            this.setQueries();\n          }\n          break;\n        }\n        // visualizaciones or /v/:id\n        case tab === tabs[3]:\n        case name === ROUTE_NAMES.Visualization: {\n          // Only request for the queries/vizzs when their arrays are undefined\n          if (!this.publicVisualizations) {\n            this.setVisualizations();\n          }\n          // Request for the queries because we need them to show in visualization\n          if (!this.publicQueries) {\n            this.setQueries();\n          }\n          break;\n        }\n\n        // mapa\n        case tab === tabs[5]:\n        case name === ROUTE_NAMES.Map: {\n          this.setDefaultQuery();\n          // run queries just in the editor tab\n          this.runCurrentQuery()\n          break\n        }\n\n        default:\n          break;\n      }\n    },\n    updateBaseTitle() {\n      const {\n        name: nameComponent,\n        params: { tab: tabName }\n      } = this.$route;\n      if (nameComponent === ROUTE_NAMES.Dataset && this.titleDataset) {\n        let title;\n        let tabTitle;\n\n        const titleI18n = this.titleDataset ? `${this.titleDataset} \u00B7 ` : \"\";\n\n        if (tabName === tabs[1]) {\n          tabTitle = `${this.labelData} \u00B7 `;\n        } else if (tabName === tabs[2]) {\n          tabTitle = `${this.labelQueries} \u00B7 `;\n        } else if (tabName === tabs[3]) {\n          tabTitle = `${this.labelVisualizations} \u00B7 `;\n        } else if (tabName === tabs[4]) {\n          tabTitle = `${this.labelDownload} \u00B7 `;\n        } else {\n          tabTitle = `${this.labelSummary} \u00B7 `;\n        }\n        title = `${titleI18n} ${tabTitle} ${this.pageTitle}`;\n        document.title = title;\n      }\n    },\n    displayVizSavingPrompt() {\n      if (this.isUserLogged) {\n        this.isVizSavingPromptVisible = true;\n      }\n    },\n    parseUrl(queryId, queryText) {\n      if (queryId && !queryText) {\n        // if has id it's an stored query\n        const {\n          attributes: { sql, name, user_id, privacy_status }\n        } = this.publicQueries.find(({ id }) => id === queryId);\n        this.queryName = name;\n        this.queryUserId = user_id;\n        this.showPrivate = (privacy_status === \"closed\");\n\n        this.setCurrentQuery(sql);\n      } else if (queryId && queryText) {\n        const {\n          attributes: { name }\n        } = this.publicQueries.find(({ id }) => id === queryId);\n        this.queryName = name;\n        this.setCurrentQuery(decodeURIComponent(queryText));\n      } else if (!queryId && queryText) {\n        this.setCurrentQuery(decodeURIComponent(queryText));\n      }\n    },\n    setDefaultQuery() {\n      const {\n        params: { queryId }\n      } = this.$route;\n\n      //We need to keep this query separate from the editor query\n      const { attributes: { sql: queryRevert } = {} } =\n        this.publicQueries?.find(({ id }) => id === queryId) || {};\n      //QueryRevert: if the user loads a saved query, there can reset to the initial query or reset to the saved query.\n      this.queryRevert = queryRevert;\n    },\n    isQueryStored(query = this.currentQuery) {\n      // check if the query passed belongs to public/private arrays, if there's no args, it uses currentQuery\n      return this.publicQueries?.some(({ attributes: { sql } }) => sql === query);\n    },\n    setCurrentQuery(sql) {\n      // trigger the modified label:\n      // - hides if the new typed query is already stored\n      // - shows if the previous query was stored\n      if (!this.registrationDisabled && this.isQueryStored(sql)) {\n        this.isQueryModified = false;\n      } else if (!this.registrationDisabled && this.isQueryStored()) {\n        this.isQueryModified = true;\n      }\n      this.currentQuery = sql;\n    },\n    storeRecentQuery() {\n      // if the currentQuery does not exist, nor recent, nor in stored queries neither\n      // then save it in recent ones, and update localStorage\n      if (\n        !this.recentQueries.some(query => query === this.currentQuery) &&\n        !this.isQueryStored()\n      ) {\n        this.recentQueries.push(this.currentQuery);\n        localStorage.setItem(\n          \"recentQueries\",\n          JSON.stringify(this.recentQueries)\n        );\n      }\n    },\n    async setQueries() {\n      // factory method\n      const { data: { data = [] } = {} } = await this.getQueries({ \"filter[dataset_id]\": this.datasetId }) || {};\n\n      this.publicQueries = data\n      // privateQueries is always a subset of the publicQueries\n      this.privateQueries = data.filter(({ attributes }) => +attributes?.user_id === +getUserId())\n      this.queryOrVizIsNotMine();\n    },\n    async setVisualizations() {\n      this.isPublicVizLoading = true;\n      this.isPrivateVizLoading = true;\n\n      // factory method\n      const { data: { data = [] } = {} } = await this.getVisualizations({ \"filter[dataset_id]\": this.datasetId }) || {};\n      this.publicVisualizations = await this.getDataFromVisualizations(data);\n      // privateVisualizations is always a subset of the publicVisualizations\n      this.privateVisualizations = this.publicVisualizations.filter(({ user_id }) => +user_id === +getUserId())\n\n      this.isPublicVizLoading = false;\n      this.isPrivateVizLoading = false;\n    },\n    async getDataFromVisualizations(data) {\n      const queryPromises = new Map()\n      const visualizations = data.map(x => {\n        const { attributes: {\n          query_id,\n          user_id,\n          sql = \"\",\n          spec = {},\n          name = \"\",\n          privacy_status = \"open\"\n        } = {}, id } = x;\n\n        // only store new (different) queries (promises)\n        if (!queryPromises.has(query_id || sql)) {\n          queryPromises.set(query_id || sql, query_id ? this.getQuery(query_id) : this.getData({ sql }))\n        }\n\n        return {\n          config: spec,\n          name,\n          privacy_status,\n          query_id,\n          id,\n          user_id,\n          sql\n        }\n      })\n\n      // wait for queries to be solved\n      const responses = await Promise.all([...queryPromises.values()]);\n      [...queryPromises].forEach((item, i) => {\n        const { data } = responses[i]\n        // in the map, replace each promise with its respective response (formatting the results)\n        return queryPromises.set(item[0], typeof data === \"object\" ? convertToCSV(data.data) : data)\n      })\n\n      // finally update all existing visualizations with the properly results\n      return visualizations.map(x => ({ ...x, items: queryPromises.get(x.query_id || x.sql) }))\n    },\n    async deleteSavedQuery(id) {\n      // factory method\n      const { status } = await this.deleteQuery(id);\n\n      if (status === 204) {\n        this.setQueries()\n      }\n    },\n    async storeCurrentQuery({ name, privacy }) {\n      this.savingViz = false;\n      this.savingQuery = true;\n\n      const {\n        params: { queryId }\n      } = this.$route;\n\n      if (!queryId && !this.isQuerySavingPromptVisible) {\n        this.isQuerySavingPromptVisible = true;\n        this.queryInputFocus = true;\n      } else if (!this.labelValue) {\n        this.queryInputFocus = true;\n      }\n\n      const data = {\n        type: \"gobierto_data-queries\",\n        attributes: {\n          privacy_status: privacy ? \"closed\" : \"open\",\n          sql: this.currentQuery,\n          name,\n          dataset_id: this.datasetId\n        }\n      };\n\n      const userId = Number(getUserId());\n      let status = null; // https://javascript.info/destructuring-assignment\n      let newQuery;\n\n      // Only update the query is the user and the name are the same\n      if (name === this.queryName && userId === this.queryUserId) {\n        const { queryId } = this.$route.params;\n        // factory method\n        try {\n          ({ status } = await this.putQuery(queryId, { data }));\n        } catch (error) {\n          this.queryError = this.destructuringStoreQueryError(error);\n        }\n\n        //Update revert query\n        this.queryRevert = this.currentQuery;\n      } else {\n        // factory method\n        try {\n          ({\n            status,\n            data: { data: newQuery }\n          } = await this.postQuery({ data }));\n        } catch (error) {\n          this.queryError = this.destructuringStoreQueryError(error);\n        }\n      }\n\n      // reload the queries if the response was successfull\n      // 200 OK (PUT) / 201 Created (POST)\n      if ([200, 201].includes(status)) {\n        //Show a message for the user, your query is saved\n        this.isQuerySaved = true;\n        this.enabledQuerySavedButton = false;\n        this.isQueryModified = false;\n        this.isQuerySavingPromptVisible = false;\n\n        this.setQueries()\n\n        if (userId !== this.queryUserId || newQuery) {\n          this.updateURL(newQuery);\n        }\n      }\n    },\n    async runCurrentQuery() {\n      this.isQueryRunning = true;\n\n      // save the query executed\n      this.storeRecentQuery();\n\n      let params = { sql: this.currentQuery };\n\n      if (this.currentQuery === null) {\n        this.currentQuery = `SELECT * FROM ${this.tableName}${this.queryLimit}`;\n        params = { sql: this.currentQuery };\n      }\n\n      // update url with a temporal parameter\n      this.$router.push({\n        ...this.$route,\n        query: { ...this.$route.query, sql: encodeURIComponent(this.currentQuery) }\n      }).catch(()=>{})\n\n      const startTime = new Date().getTime();\n      // factory method\n      try {\n        const { data: items } = await this.getData(params);\n\n        this.items = items;\n        this.queryDuration = new Date().getTime() - startTime;\n        this.isQueryRunning = false;\n        this.queryError = null;\n      } catch ({\n        response: {\n          data: { errors: [{ sql: stringError } = {}] = [] }\n        }\n      }) {\n        this.queryError = stringError;\n        this.isQueryRunning = false;\n        this.enabledQuerySavedButton = false;\n      }\n    },\n    async storeCurrentVisualization(config, opts) {\n      const {\n        params: { queryId },\n        name: nameComponent\n      } = this.$route;\n\n      let vizIdFromRoute = +queryId;\n\n      this.savingViz = true;\n      this.savingQuery = false;\n\n      if (!this.isVizSavingPromptVisible) {\n        this.isVizSavingPromptVisible = true;\n        this.vizInputFocus = true;\n      } else if (!this.vizName) {\n        this.vizInputFocus = true;\n      }\n\n      const { name, privacy, vizID, user, queryViz } = opts;\n      this.vizName = name;\n\n      const userId = Number(getUserId());\n\n      // Get the id if the query matches with a stored query\n      const { id } =\n        this.privateQueries.find(\n          ({ attributes: { sql } }) => sql === this.currentQuery\n        ) || {};\n\n      let currentQueryViz = !queryViz ? this.currentQuery : queryViz;\n\n      // default attributes\n      let attributes = {\n        name_translations: {\n          en: name,\n          es: name\n        },\n        privacy_status: privacy ? \"closed\" : \"open\",\n        spec: config,\n        user_id: user,\n        dataset_id: this.datasetId,\n        query_id: id,\n        sql: currentQueryViz\n      };\n\n      // POST data obj\n      const data = {\n        type: \"gobierto_data-visualizations\",\n        attributes\n      };\n\n      let status = null;\n      let newViz;\n\n      if (vizID === vizIdFromRoute && user === userId) {\n        // factory method\n        ({ status } = await this.putVisualization(vizID, { data }));\n      } else {\n        // factory method\n        ({\n          status,\n          data: { data: newViz }\n        } = await this.postVisualization({ data }));\n        const {\n          id: saveVizID,\n          attributes: { user_id: user }\n        } = newViz;\n        this.vizID = +saveVizID;\n        this.userSaveViz = user;\n      }\n\n      if ([200, 201].includes(status)) {\n        this.isVizModified = false;\n        this.isVizSaved = true;\n        this.isVizSavingPromptVisible = false;\n        this.enabledVizSavedButton = false;\n        /* Check if the user saved a viz from another user, we need to wait to obtain the private visualizations to avoid error because it's possible which this Visualization is the first Visualization which user save */\n        /*Update URL only when saved a query from editor or a viz from Visualizations tabs*/\n        if (\n          (user !== userId || newViz) &&\n          nameComponent === ROUTE_NAMES.Visualization\n        ) {\n          this.updateURL(newViz);\n        }\n\n        this.setVisualizations()\n      }\n    },\n    updateURL(element) {\n      const { id: queryId } = element;\n      this.$router.push({\n        name: this.savingViz ? ROUTE_NAMES.Visualization : ROUTE_NAMES.Query,\n        params: { ...this.$route.params, queryId }\n      });\n\n      this.enabledForkButton = false;\n      this.queryInputFocus = false;\n      this.enabledForkVizButton = false;\n      this.isVizSaved = true;\n    },\n    resetQuery() {\n      this.isQuerySavingPromptVisible = false;\n      this.currentQuery = `SELECT * FROM ${this.tableName}${this.queryLimit}`;\n      this.isQueryModified = false;\n      this.runCurrentQuery();\n      this.disabledSavedButton();\n      this.disabledStringSavedQuery();\n      this.queryName = null;\n      this.disabledForkButton();\n      this.showPrivatePublicIcon = false;\n      this.showPrivate = false;\n      this.resetPrivate = true;\n    },\n    revertSavedQuery() {\n      this.isQuerySavingPromptVisible = false;\n      this.currentQuery = this.queryRevert;\n      this.isQueryModified = false;\n      this.runCurrentQuery();\n      this.disabledSavedButton();\n      this.disabledStringSavedQuery();\n      this.disabledRevertButton();\n\n      const userId = Number(getUserId());\n      if (this.queryUserId !== userId) {\n        this.showPrivatePublicIcon = false;\n        this.enabledForkButton = true;\n        this.isForkPromptVisible = true;\n      } else {\n        this.showPrivatePublicIcon = true;\n      }\n    },\n    activatedSavedButton() {\n      this.enabledQuerySavedButton = true;\n      this.isQueryModified = true;\n      const { name: name } = this.$route;\n\n      if (name === ROUTE_NAMES.Query) {\n        this.showRevertQuery = true;\n      }\n\n      this.resetPrivate = false;\n    },\n    disabledSavedButton() {\n      this.enabledQuerySavedButton = false;\n    },\n    eventIsQueryModified(value) {\n      this.isQueryModified = value;\n      this.enabledQuerySavedButton = true;\n    },\n    resetToInitialStateSavedQuery() {\n      this.showRevertQuery = true;\n      this.isQueryModified = false;\n    },\n    disabledStringSavedQuery() {\n      this.isQuerySaved = false;\n    },\n    isSavingPromptVisibleHandler(value) {\n      this.isSavingPromptVisible = value;\n    },\n    async queryOrVizIsNotMine() {\n      const userId = Number(getUserId());\n      const {\n        params: { queryId },\n        name: nameComponent\n      } = this.$route;\n\n      //Find which query is loaded\n      if (userId !== 0 && nameComponent === ROUTE_NAMES.Query) {\n        const items = !this.showPrivate\n          ? this.publicQueries\n          : this.privateQueries;\n        const { attributes: { user_id: checkUserId } = {} } =\n          items?.find(({ id }) => id === queryId) || {};\n\n        //Check if the user who loaded the query is the same user who created the query\n        if (userId !== checkUserId) {\n          this.showPrivatePublicIcon = false;\n          this.enabledForkButton = true;\n          this.isForkPromptVisible = true;\n        } else {\n          this.showPrivatePublicIcon = true;\n          this.disabledForkButton();\n        }\n      } else if (userId !== 0 && nameComponent === ROUTE_NAMES.Visualization) {\n        this.showLabelEdit = true;\n\n        if (!this.publicVisualizations) {\n          await this.setVisualizations();\n        }\n\n        const objectViz =\n          this.privateVisualizations?.find(({ id }) => id === queryId) || {};\n        const { privacy_status: privacyStatus } = objectViz;\n\n        this.showPrivateViz = privacyStatus === \"closed\" ? true : false;\n        const items = !this.showPrivateViz\n          ? this.publicVisualizations\n          : this.privateVisualizations;\n\n        //Find which viz is loaded\n        const { user_id: checkUserId = {} } =\n          items?.find(({ id }) => id === queryId) || {};\n\n        this.vizUserId = checkUserId;\n\n        //Check if the user who loaded the viz is the same user who created the viz\n        if (userId !== checkUserId && !this.savingViz) {\n          this.enabledForkVizButton = true;\n          this.showPrivatePublicIconViz = false;\n        } else {\n          this.showPrivatePublicIconViz = true;\n          this.enabledForkVizButton = false;\n        }\n      } else if (nameComponent === ROUTE_NAMES.Visualization) {\n        this.showLabelEdit = true;\n      }\n    },\n    disabledForkButton() {\n      this.enabledForkButton = false;\n    },\n    enabledForkPrompt() {\n      this.isForkPromptVisible = true;\n    },\n    disabledRevertButton() {\n      this.enabledRevertButton = false;\n    },\n    activatedRevertButton() {\n      this.enabledRevertButton = true;\n      this.showPrivatePublicIcon = true;\n    },\n    showSavedVizString(value) {\n      this.isVizSaved = value;\n    },\n    isQuerySavingPromptVisibleHandler(value) {\n      this.isQuerySavingPromptVisible = value;\n    },\n    activatedSavedVizButton(value) {\n      this.enabledVizSavedButton = value;\n    },\n    isVizSavingPromptVisibleHandler(value) {\n      this.isVizSavingPromptVisible = value;\n    },\n    eventIsVizModified(value) {\n      this.isVizModified = value;\n    },\n    setVizName(vizName) {\n      this.vizName = vizName;\n    },\n    activateForkVizButton(value) {\n      this.enabledForkVizButton = value;\n      this.userSaveViz = null;\n    },\n    eventToUpdateVizName() {\n      this.isVizModified = true;\n      this.enabledVizSavedButton = true;\n    },\n    eventToEnabledInputQueries() {\n      this.activatedSavedButton();\n      this.isForkPromptVisible = true;\n      this.enabledRevertButton = false;\n    },\n    resetVizEvent() {\n      this.enabledVizSavedButton = true;\n      this.vizName = null;\n    },\n    showSavingDialogEvent() {\n      this.enabledVizSavedButton = true;\n      this.isVizModified = true;\n      this.showPrivatePublicIconViz = true;\n      this.isVizSavingPromptVisible = true;\n    },\n    showSavingDialogEventViz(value) {\n      this.isVizItemModified = value;\n      this.isVizModified = false;\n      this.activatedSavedVizButton(value);\n      this.showPrivatePublicIconViz = true;\n    },\n    destructuringStoreQueryError(error) {\n      const {\n        response: {\n          data: { errors: [{ detail } = {}] = [] }\n        }\n      } = error;\n      return detail;\n    }\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(!_vm.isDatasetLoaded)?[_c('SkeletonSpinner',{attrs:{\"height-square\":\"300px\",\"squares-rows\":\"2\",\"squares\":\"2\",\"lines\":\"5\"}})]:[_c('div',{staticClass:\"pure-g\"},[_c('div',{staticClass:\"pure-u-1-2\"},[(_vm.titleDataset)?_c('h2',{staticClass:\"gobierto-data-title-dataset\"},[_vm._v(\"\\n          \"+_vm._s(_vm.titleDataset)+\"\\n        \")]):_vm._e()])]),_vm._v(\" \"),_c('DatasetNav',{attrs:{\"active-dataset-tab\":_vm.activeDatasetTab,\"tabs\":_vm.currentTabs}}),_vm._v(\" \"),(_vm.activeDatasetTab === 0 && _vm.attributes)?_c('SummaryTab',{attrs:{\"dataset-id\":_vm.datasetId,\"is-viz-modified\":_vm.isVizModified,\"is-viz-item-modified\":_vm.isVizItemModified,\"is-viz-saved\":_vm.isVizSaved,\"is-private-viz-loading\":_vm.isPrivateVizLoading,\"is-public-viz-loading\":_vm.isPublicVizLoading,\"public-visualizations\":_vm.publicVisualizations,\"private-visualizations\":_vm.privateVisualizations,\"enabled-viz-saved-button\":_vm.enabledVizSavedButton,\"current-viz-tab\":_vm.currentVizTab,\"enabled-fork-viz-button\":_vm.enabledForkVizButton,\"viz-input-focus\":_vm.vizInputFocus,\"viz-id\":_vm.vizID,\"user-save-viz\":_vm.userSaveViz,\"show-private-public-icon-viz\":_vm.showPrivatePublicIconViz,\"show-private\":_vm.showPrivate,\"show-private-viz\":_vm.showPrivateViz,\"show-label-edit\":_vm.showLabelEdit,\"reset-private\":_vm.resetPrivate,\"private-queries\":_vm.privateQueries,\"public-queries\":_vm.publicQueries,\"array-formats\":_vm.arrayFormats,\"object-columns\":_vm.objectColumns,\"resources-list\":_vm.resourcesList,\"dataset-attributes\":_vm.attributes,\"is-user-logged\":_vm.isUserLogged,\"items\":_vm.items,\"config-map\":_vm.configMap}}):(_vm.activeDatasetTab === 1)?_c('DataTab',{attrs:{\"private-queries\":_vm.privateQueries,\"public-queries\":_vm.publicQueries,\"recent-queries\":_vm.recentQueriesFiltered,\"object-columns\":_vm.objectColumns,\"config-map\":_vm.configMap,\"array-formats\":_vm.arrayFormats,\"items\":_vm.items,\"is-query-saved\":_vm.isQuerySaved,\"is-viz-saved\":_vm.isVizSaved,\"is-query-saving-prompt-visible\":_vm.isQuerySavingPromptVisible,\"is-query-running\":_vm.isQueryRunning,\"is-query-modified\":_vm.isQueryModified,\"is-viz-modified\":_vm.isVizModified,\"is-viz-saving-prompt-visible\":_vm.isVizSavingPromptVisible,\"is-fork-prompt-visible\":_vm.isForkPromptVisible,\"query-stored\":_vm.currentQuery,\"query-name\":_vm.queryName,\"query-duration\":_vm.queryDuration,\"query-error\":_vm.queryError,\"enabled-query-saved-button\":_vm.enabledQuerySavedButton,\"enabled-viz-saved-button\":_vm.enabledVizSavedButton,\"enabled-fork-button\":_vm.enabledForkButton,\"enabled-revert-button\":_vm.enabledRevertButton,\"show-revert-query\":_vm.showRevertQuery,\"show-private\":_vm.showPrivate,\"table-name\":_vm.tableName,\"is-user-logged\":_vm.isUserLogged,\"query-input-focus\":_vm.queryInputFocus,\"viz-input-focus\":_vm.vizInputFocus,\"viz-name\":_vm.vizName,\"viz-id\":_vm.vizID,\"reset-private\":_vm.resetPrivate,\"show-private-public-icon\":_vm.showPrivatePublicIcon,\"show-private-public-icon-viz\":_vm.showPrivatePublicIconViz,\"registration-disabled\":_vm.registrationDisabled}}):(_vm.activeDatasetTab === 2)?_c('QueriesTab',{attrs:{\"private-queries\":_vm.privateQueries,\"public-queries\":_vm.publicQueries,\"is-user-logged\":_vm.isUserLogged}}):(_vm.activeDatasetTab === 3)?_c('VisualizationsTab',{attrs:{\"dataset-id\":_vm.datasetId,\"is-user-logged\":_vm.isUserLogged,\"is-viz-saving-prompt-visible\":_vm.isVizSavingPromptVisible,\"is-viz-modified\":_vm.isVizModified,\"is-viz-item-modified\":_vm.isVizItemModified,\"is-viz-saved\":_vm.isVizSaved,\"is-private-viz-loading\":_vm.isPrivateVizLoading,\"is-public-viz-loading\":_vm.isPublicVizLoading,\"public-visualizations\":_vm.publicVisualizations,\"private-visualizations\":_vm.privateVisualizations,\"private-queries\":_vm.privateQueries,\"public-queries\":_vm.publicQueries,\"enabled-viz-saved-button\":_vm.enabledVizSavedButton,\"current-viz-tab\":_vm.currentVizTab,\"enabled-fork-viz-button\":_vm.enabledForkVizButton,\"viz-input-focus\":_vm.vizInputFocus,\"viz-id\":_vm.vizID,\"user-save-viz\":_vm.userSaveViz,\"show-private-public-icon-viz\":_vm.showPrivatePublicIconViz,\"show-private\":_vm.showPrivate,\"show-private-viz\":_vm.showPrivateViz,\"show-label-edit\":_vm.showLabelEdit,\"reset-private\":_vm.resetPrivate,\"object-columns\":_vm.objectColumns,\"config-map\":_vm.configMap,\"registration-disabled\":_vm.registrationDisabled}}):(_vm.activeDatasetTab === 4)?_c('DownloadsTab',{attrs:{\"array-formats\":_vm.arrayFormats,\"resources-list\":_vm.resourcesList}}):(_vm.activeDatasetTab === 5 && _vm.hasGeometryColumn)?_c('MapTab',{attrs:{\"items\":_vm.items,\"object-columns\":_vm.objectColumns,\"config-map\":_vm.configMap}}):_vm._e()]],2)}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"Dataset.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nconst LABELS = {\n  'resumen': I18n.t(\"gobierto_data.projects.summary\") || \"\",\n  'editor': I18n.t(\"gobierto_data.projects.data\") || \"\",\n  'consultas': I18n.t(\"gobierto_data.projects.queries\") || \"\",\n  'visualizaciones': I18n.t(\"gobierto_data.projects.visualizations\") || \"\",\n  'descarga': I18n.t(\"gobierto_data.projects.download\") || \"\",\n  'mapa': I18n.t(\"gobierto_data.projects.map\") || \"\"\n}\n\nconst __vue_script__ = {\n  name: \"DatasetNav\",\n  props: {\n    activeDatasetTab: {\n      type: Number,\n      default: 0\n    },\n    tabs: {\n      type: Array,\n      default: () => []\n    }\n  },\n  computed: {\n    routes() {\n      return this.tabs.map(tab => ({\n        path: `/datos/${this.$route.params.id}/${tab}`,\n        label: LABELS[tab]\n      }))\n    }\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('nav',{staticClass:\"gobierto-data-sets-nav\"},[_c('ul',[_vm._l((_vm.routes),function(ref,i){\nvar path = ref.path;\nvar label = ref.label;\nreturn [_c('router-link',{key:path,staticClass:\"gobierto-data-sets-nav--tab\",class:{ 'is-active': _vm.activeDatasetTab === i },attrs:{\"to\":path,\"tag\":\"li\"}},[_c('span',[_vm._v(_vm._s(label))])])]})],2)])}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"DatasetNav.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport { Dropdown, SkeletonSpinner } from '../../../../lib/vue/components';\nimport { translate } from '../../../../lib/vue/filters';\nimport { tabs } from '../../../lib/router';\nimport Caret from '../commons/Caret.vue';\nimport Description from '../commons/Description.vue';\nimport InfoTab from '../commons/InfoTab.vue';\nimport Queries from '../commons/Queries.vue';\nimport Resources from '../commons/Resources.vue';\nimport Visualizations from '../commons/Visualizations.vue';\nimport VisualizationsTab from './VisualizationsTab.vue';\n\nconst __vue_script__ = {\n  name: \"SummaryTab\",\n  components: {\n    Resources,\n    Queries,\n    InfoTab,\n    Caret,\n    Dropdown,\n    Description,\n    VisualizationsTab,\n    SkeletonSpinner,\n    Visualizations\n  },\n  filters: {\n    translate\n  },\n  props: {\n    datasetId: {\n      type: Number,\n      required: true\n    },\n    isVizModified: {\n      type: Boolean,\n      default: false\n    },\n    isVizSaved: {\n      type: Boolean,\n      default: false\n    },\n    enabledVizSavedButton: {\n      type: Boolean,\n      default: false\n    },\n    privateVisualizations: {\n      type: Array,\n      default: () => []\n    },\n    publicVisualizations: {\n      type: Array,\n      default: () => []\n    },\n    privateQueries: {\n      type: Array,\n      default: () => []\n    },\n    publicQueries: {\n      type: Array,\n      default: () => []\n    },\n    arrayFormats: {\n      type: Object,\n      default: () => {}\n    },\n    objectColumns: {\n      type: Object,\n      default: () => {}\n    },\n    datasetAttributes: {\n      type: Object,\n      default: () => {}\n    },\n    resourcesList: {\n      type: Array,\n      default: () => []\n    },\n    isUserLogged: {\n      type: Boolean,\n      default: false\n    },\n    isPrivateVizLoading: {\n      type: Boolean,\n      default: false\n    },\n    isPublicVizLoading: {\n      type: Boolean,\n      default: false\n    },\n    currentVizTab: {\n      type: Number,\n      default: null\n    },\n    enabledForkVizButton: {\n      type: Boolean,\n      default: true\n    },\n    vizInputFocus: {\n      type: Boolean,\n      default: true\n    },\n    showPrivatePublicIconViz: {\n      type: Boolean,\n      default: false\n    },\n    showPrivateViz: {\n      type: Boolean,\n      default: false\n    },\n    showPrivate: {\n      type: Boolean,\n      default: false\n    },\n    showLabelEdit: {\n      type: Boolean,\n      default: false\n    },\n    isVizItemModified: {\n      type: Boolean,\n      default: false\n    },\n    resetPrivate: {\n      type: Boolean,\n      default: false\n    },\n    userSaveViz: {\n      type: Number,\n      default: 0\n    },\n    items: {\n      type: String,\n      default: \"\"\n    },\n    configMap: {\n      type: Object,\n      default: () => {}\n    }\n  },\n  data() {\n    return {\n      description: null,\n      category: {},\n      frequency: {},\n      dateUpdated: null,\n      datasetLicense: null,\n      datasetNumberOfRows: null,\n      datasetLicenseUrl: null,\n      datasetSource: null,\n      datasetSourceUrl: null,\n      datasetSourceObject: {},\n      datasetLicenseObject: {},\n      showYourQueries: true,\n      showYourVizs: true,\n      showMap: true,\n      labelQueries: I18n.t(\"gobierto_data.projects.queries\") || \"\",\n      labelVisualizations:\n        I18n.t(\"gobierto_data.projects.visualizations\") || \"\",\n      labelMap: I18n.t(\"gobierto_data.projects.map\") || \"\",\n      tabs,\n      config: {\n        plugin: \"map\"\n      }\n    };\n  },\n  computed: {\n    isVizLoading() {\n      return this.publicVisualizations.length || !this.isPublicVizLoading;\n    },\n    hasQueries() {\n      return this.privateQueries?.length || this.publicQueries?.length;\n    },\n    hasVisualizations() {\n      return (\n        this.privateVisualizations?.length || this.publicVisualizations?.length\n      );\n    },\n    hasGeometry() {\n      return Object.keys(this.objectColumns).some(x => x === \"geometry\");\n    },\n    moreThanOneFormat() {\n      return Object.keys(this.arrayFormats).length > 1\n    }\n  },\n  created() {\n    ({\n      data_summary: { number_of_rows: this.datasetNumberOfRows },\n      data_updated_at: this.dateUpdated,\n      category: [{ name_translations: this.category } = {}] = [],\n      frequency: [{ name_translations: this.frequency } = {}] = [],\n      \"dataset-license\": [{ name_translations: this.datasetLicense, description_translations: this.datasetLicenseUrl } = {}] = [],\n      \"dataset-source\": this.datasetSource,\n      \"dataset-source-url\": this.datasetSourceUrl,\n      description: this.description\n    } = this.datasetAttributes) // Ouh yes, destructuring FTW \uD83D\uDE0E\n    this.datasetSourceObject = {\n      text: this.datasetSource,\n      url: this.datasetSourceUrl\n    }\n    this.datasetLicenseObject = {\n      text: translate(this.datasetLicense),\n      url: translate(this.datasetLicenseUrl)\n    }\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gobierto-data-sets-nav--tab-container\"},[_c('InfoTab',{attrs:{\"description-dataset\":_vm.description,\"category-dataset\":_vm._f(\"translate\")(_vm.category),\"frequency-dataset\":_vm._f(\"translate\")(_vm.frequency),\"license-dataset\":_vm.datasetLicenseObject,\"source-dataset\":_vm.datasetSourceObject,\"date-updated\":_vm.dateUpdated,\"array-formats\":_vm.arrayFormats,\"number-of-rows\":_vm.datasetNumberOfRows}}),_vm._v(\" \"),_c('Resources',{staticClass:\"gobierto-data-summary-separator\",attrs:{\"resources-list\":_vm.resourcesList}}),_vm._v(\" \"),_c('Description',{staticClass:\"gobierto-data-summary-separator gobierto-data-description-columns\",attrs:{\"object-columns\":_vm.objectColumns}}),_vm._v(\" \"),(_vm.hasGeometry && _vm.items.length)?_c('Dropdown',{staticClass:\"gobierto-data-summary-separator\",on:{\"is-content-visible\":function($event){_vm.showMap = !_vm.showMap}},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('h2',{staticClass:\"gobierto-data-tabs-section-title\"},[_c('Caret',{attrs:{\"rotate\":_vm.showMap}}),_vm._v(\"\\n        \"+_vm._s(_vm.labelMap)+\"\\n      \")],1)]},proxy:true}],null,false,2500907692)},[_vm._v(\" \"),_c('div',{staticClass:\"gobierto-data-visualization--aspect-ratio-16-9\"},[(_vm.showMap)?_c('Visualizations',{attrs:{\"items\":_vm.items,\"config\":_vm.config,\"object-columns\":_vm.objectColumns,\"config-map\":_vm.configMap}}):_vm._e()],1)]):_vm._e(),_vm._v(\" \"),(_vm.hasQueries)?_c('Dropdown',{staticClass:\"gobierto-data-summary-separator\",on:{\"is-content-visible\":function($event){_vm.showYourQueries = !_vm.showYourQueries}},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('h2',{staticClass:\"gobierto-data-tabs-section-title\"},[_c('Caret',{attrs:{\"rotate\":_vm.showYourQueries}}),_vm._v(\"\\n        \"+_vm._s(_vm.labelQueries)+\"\\n      \")],1)]},proxy:true}],null,false,1753388637)},[_vm._v(\" \"),(_vm.showYourQueries)?_c('Queries',{attrs:{\"is-user-logged\":_vm.isUserLogged,\"private-queries\":_vm.privateQueries,\"public-queries\":_vm.publicQueries}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(!_vm.isVizLoading)?[_c('SkeletonSpinner',{attrs:{\"height-square\":\"300px\",\"squares\":\"2\",\"lines\":\"2\"}})]:[(_vm.hasVisualizations)?_c('Dropdown',{on:{\"is-content-visible\":function($event){_vm.showYourVizs = !_vm.showYourVizs}},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('h2',{staticClass:\"gobierto-data-tabs-section-title\"},[_c('Caret',{attrs:{\"rotate\":_vm.showYourVizs}}),_vm._v(\"\\n          \"+_vm._s(_vm.labelVisualizations)+\"\\n        \")],1)]},proxy:true}],null,false,1748345794)},[_vm._v(\" \"),(_vm.showYourVizs)?_c('VisualizationsTab',{staticClass:\"gobierto-data-summary-visualizations\",attrs:{\"dataset-id\":_vm.datasetId,\"is-user-logged\":_vm.isUserLogged,\"is-viz-modified\":_vm.isVizModified,\"is-viz-item-modified\":_vm.isVizItemModified,\"is-viz-saved\":_vm.isVizSaved,\"is-private-viz-loading\":_vm.isPrivateVizLoading,\"is-public-viz-loading\":_vm.isPublicVizLoading,\"public-visualizations\":_vm.publicVisualizations,\"private-visualizations\":_vm.privateVisualizations,\"private-queries\":_vm.privateQueries,\"public-queries\":_vm.publicQueries,\"enabled-viz-saved-button\":_vm.enabledVizSavedButton,\"current-viz-tab\":_vm.currentVizTab,\"enabled-fork-viz-button\":_vm.enabledForkVizButton,\"viz-input-focus\":_vm.vizInputFocus,\"user-save-viz\":_vm.userSaveViz,\"show-private-public-icon-viz\":_vm.showPrivatePublicIconViz,\"show-private\":_vm.showPrivate,\"show-private-viz\":_vm.showPrivateViz,\"show-label-edit\":_vm.showLabelEdit,\"reset-private\":_vm.resetPrivate,\"object-columns\":_vm.objectColumns}}):_vm._e()],1):_vm._e()]],2)}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"SummaryTab.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n\nconst __vue_script__ = {\n  name: 'Caret',\n  props: {\n    rotate: {\n      type: Boolean,\n      default: true\n    },\n  }\n}\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('i',{staticClass:\"fas fa-caret-down\",class:_vm.rotate ? '' : 'rotate-caret',staticStyle:{\"color\":\"var(--color-base)\"}})}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"Caret.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport Caret from '../commons/Caret.vue';\nimport { Dropdown } from '../../../../lib/vue/components';\n\nconst __vue_script__ = {\n  name: 'Description',\n  components: {\n    Caret,\n    Dropdown\n  },\n  props: {\n    objectColumns: {\n      type: Object,\n      default: () => {}\n    }\n  },\n  data() {\n    return {\n      labelDescription: I18n.t(\"gobierto_data.projects.description\") || '',\n      showDescription: true,\n      arrayOfObjectsColumns: []\n    }\n  },\n  created() {\n    this.arrayOfObjectsColumns = Object.entries(this.objectColumns).map(([k, v]) => ({ column: k, type: v }));\n  }\n}\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('Dropdown',{on:{\"is-content-visible\":function($event){_vm.showDescription = !_vm.showDescription}},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('h2',{staticClass:\"gobierto-data-tabs-section-title\"},[_c('Caret',{attrs:{\"rotate\":_vm.showDescription}}),_vm._v(\"\\n        \"+_vm._s(_vm.labelDescription)+\"\\n      \")],1)]},proxy:true}])},[_vm._v(\" \"),_c('div',{staticClass:\"gobierto-data-description\"},[_vm._l((_vm.arrayOfObjectsColumns),function(ref){\nvar column = ref.column;\nvar type = ref.type;\nreturn _c('div',{key:column},[_c('i',{class:(\"fas gobierto-data-columns-icon gobierto-data-columns-icon-\" + type),staticStyle:{\"color\":\"var(--color-base)\"}}),_vm._v(\" \"),_c('span',{staticClass:\"gobierto-data-sidebar-datasets-links-columns-text\"},[_vm._v(\"\\n            \"+_vm._s(column)+\"\\n          \")])])})],2)])],1)}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"Description.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport { formatNumbers } from '../../../../lib/shared';\nimport { date } from '../../../../lib/vue/filters';\nimport { tabs } from '../../../lib/router';\nimport Button from '../commons/Button.vue';\nimport DownloadButton from '../commons/DownloadButton.vue';\nimport DownloadLink from '../commons/DownloadLink.vue';\nimport InfoBlockText from '../commons/InfoBlockText.vue';\n\n//Parse markdown to HTML. Related: https://github.com/PopulateTools/issues/issues/1428#issuecomment-1026617835\nconst marked = require('marked');\n\nconst __vue_script__ = {\n  name: \"InfoTab\",\n  components: {\n    InfoBlockText,\n    DownloadButton,\n    DownloadLink,\n    Button\n  },\n  filters: {\n    convertDate(valueDate) {\n      return date(valueDate, {\n        day : 'numeric',\n        month : 'short',\n        year : 'numeric'\n      })\n    }\n  },\n  props: {\n    descriptionDataset: {\n      type: String,\n      default: ''\n    },\n    categoryDataset: {\n      type: String,\n      default: ''\n    },\n    frequencyDataset: {\n      type: String,\n      default: ''\n    },\n    licenseDataset: {\n      type: Object,\n      default: () => {}\n    },\n    sourceDataset: {\n      type: Object,\n      default: () => {}\n    },\n    dateUpdated: {\n      type: String,\n      default: ''\n    },\n    arrayFormats: {\n      type: Object,\n      default: () => {}\n    },\n    numberOfRows: {\n      type: Number,\n      default: 0\n    },\n  },\n  data() {\n    return {\n      labelUpdated: I18n.t(\"gobierto_data.projects.updated\") || '',\n      labelNumberOfRows: I18n.t(\"gobierto_data.projects.numberOfRows\") || '',\n      labelFrequency: I18n.t(\"gobierto_data.projects.frequency\") || '',\n      labelSubject: I18n.t(\"gobierto_data.projects.subject\") || '',\n      labelDownloadData: I18n.t(\"gobierto_data.projects.downloadData\") || '',\n      labelSource: I18n.t(\"gobierto_data.projects.sourceDataset\") || '',\n      labelSourceUrl: I18n.t(\"gobierto_data.projects.sourceDatasetUrl\") || '',\n      labelLicense: I18n.t(\"gobierto_data.projects.license\") || '',\n      seeMore: I18n.t(\"gobierto_common.vue_components.read_more.more\") || '',\n      seeLess: I18n.t(\"gobierto_common.vue_components.read_more.less\") || '',\n      labelPreview: I18n.t(\"gobierto_data.projects.preview\") || \"\",\n      sourceDatasetText: '',\n      sourceDatasetUrl: '',\n      licenseDatasetText: '',\n      licenseDatasetUrl: '',\n      tabs\n    }\n  },\n  computed: {\n    compiledHTMLMarkdown() {\n      /*This method is to remove only the <p>| |</p> and |<br> elements that CodeMirror adds when exporting from the editor. We need to remove them to convert the Markdown tables to HTML correctly.*/\n      const descriptionHTML = this.descriptionDataset.replace(/\\|<br>|<p>\\||\\|<\\/p>/g, '|');\n      const markdownText = marked(descriptionHTML, {\n        sanitize: false,\n        tables: true\n      })\n      return markdownText\n    },\n    hasDatasetSource() {\n      return this.sourceDataset && this.sourceDataset?.text !== undefined && this.sourceDataset?.text !== \"\"\n    },\n    hasDatasetLicense() {\n      return this.licenseDataset?.text !== undefined && this.licenseDataset?.url !== undefined\n    },\n    moreThanOneFormat() {\n      return Object.keys(this.arrayFormats).length > 1\n    },\n    formatNumberOfRows() {\n      return formatNumbers(this.numberOfRows)\n    }\n  },\n  created(){\n    if (this.sourceDataset) {\n      const { text: sourceDatasetText, url: sourceDatasetUrl } = this.sourceDataset\n      this.sourceDatasetText = sourceDatasetText\n      this.sourceDatasetUrl = sourceDatasetUrl\n    }\n    if (this.licenseDataset) {\n      const { text: licenseDatasetText, url: licenseDatasetUrl } = this.licenseDataset\n      this.licenseDatasetText = licenseDatasetText\n      this.licenseDatasetUrl = licenseDatasetUrl\n    }\n  }\n}\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pure-g\"},[_c('div',{staticClass:\"pure-u-17-24 gobierto-data-summary-header\"},[(_vm.compiledHTMLMarkdown)?_c('div',{staticClass:\"gobierto-data-summary-header-description gobierto-data-summary-separator\",attrs:{\"id\":\"gobierto-data-summary-header\"},domProps:{\"innerHTML\":_vm._s(_vm.compiledHTMLMarkdown)}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"gobierto-data-summary-separator\"},[(_vm.numberOfRows)?_c('InfoBlockText',{attrs:{\"icon\":\"database\",\"icon-color\":'#666',\"label\":_vm.labelNumberOfRows,\"text\":_vm.formatNumberOfRows}}):_vm._e(),_vm._v(\" \"),(_vm.dateUpdated)?_c('InfoBlockText',{attrs:{\"icon\":\"clock\",\"icon-color\":'#666',\"label\":_vm.labelUpdated,\"text\":_vm._f(\"convertDate\")(_vm.dateUpdated)}}):_vm._e(),_vm._v(\" \"),(_vm.frequencyDataset)?_c('InfoBlockText',{attrs:{\"icon\":\"calendar\",\"icon-color\":'#666',\"label\":_vm.labelFrequency,\"text\":_vm.frequencyDataset}}):_vm._e(),_vm._v(\" \"),(_vm.categoryDataset)?_c('InfoBlockText',{attrs:{\"icon\":\"tag\",\"icon-color\":'#666',\"label\":_vm.labelSubject,\"text\":_vm.categoryDataset}}):_vm._e(),_vm._v(\" \"),(_vm.hasDatasetSource)?_c('InfoBlockText',{attrs:{\"icon\":\"building\",\"icon-color\":'#666',\"label\":_vm.labelSource,\"text\":_vm.sourceDatasetText,\"url\":_vm.sourceDatasetUrl}}):_vm._e(),_vm._v(\" \"),(_vm.hasDatasetLicense)?_c('InfoBlockText',{attrs:{\"icon\":\"certificate\",\"icon-color\":'#666',\"label\":_vm.labelLicense,\"text\":_vm.licenseDatasetText,\"url\":_vm.licenseDatasetUrl}}):_vm._e()],1)]),_vm._v(\" \"),_c('div',{staticClass:\"pure-u-7-24 gobierto-data-summary-info-tab\"},[_c('div',{staticClass:\"gobierto-data-summary-header-btns\"},[(_vm.moreThanOneFormat)?[_c('DownloadButton',{staticClass:\"arrow-top modal-left\",attrs:{\"array-formats\":_vm.arrayFormats}})]:[_c('DownloadLink',{attrs:{\"editor\":false,\"array-formats\":_vm.arrayFormats}})],_vm._v(\" \"),_c('router-link',{staticClass:\"gobierto-data-btn-preview\",attrs:{\"to\":(\"/datos/\" + (_vm.$route.params.id) + \"/\" + (_vm.tabs[1]))}},[_c('Button',{staticClass:\"gobierto-data-btn-download-data\",attrs:{\"text\":_vm.labelPreview,\"icon\":\"table\",\"icon-color\":\"rgba(var(--color-base-string), .5)\",\"background\":\"#fff\"}})],1)],2)])])}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"InfoTab.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\nconst __vue_script__ = {\n  name: 'Button',\n  props: {\n    text: {\n      type: String,\n      default: ''\n    },\n    icon: {\n      type: String,\n      default: ''\n    },\n    color: {\n      type: String,\n      default: 'var(--color-base)'\n    },\n    background: {\n      type: String,\n      default: ''\n    },\n    iconColor: {\n      type: String,\n      default: 'var(--color-base)'\n    }\n  }\n}\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"gobierto-data-btn-blue\",style:({ 'color': _vm.color, 'background-color': _vm.background })},[(_vm.icon)?_c('i',{staticClass:\"fas\",class:'fa-' + _vm.icon,staticStyle:{\"color\":\"inherit\",\"margin\":\"0\"},style:({'color': _vm.iconColor})}):_vm._e(),_vm._v(\"\\n  \"+_vm._s(_vm.text)+\"\\n  \"),_vm._t(\"default\")],2)}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"Button.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport Button from './Button.vue';\nimport { VueDirectivesMixin } from '../../../../lib/vue/directives';\nimport { DownloadFilesFactoryMixin } from '../../../lib/factories/download';\n\nconst __vue_script__ = {\n  name: 'DownloadButton',\n  components: {\n    Button\n  },\n  mixins: [VueDirectivesMixin, DownloadFilesFactoryMixin],\n  props: {\n    editor: {\n      type: Boolean,\n      default: false\n    },\n    arrayFormats: {\n      type: Object,\n      required: true\n    },\n    queryStored: {\n      type: String,\n      default: \"\"\n    },\n  },\n  data() {\n    return {\n      labelDownloadData: I18n.t(\"gobierto_data.projects.downloadData\") || \"\",\n      isHidden: true,\n      arrayFormatsQuery: {},\n      titleFile: ''\n    }\n  },\n  watch: {\n    queryStored(newValue, oldValue) {\n      if (newValue !== oldValue) {\n        this.createObjectFormatsQuery(newValue)\n      }\n    }\n  },\n  created() {\n    this.createObjectFormatsQuery(this.queryStored)\n  },\n  methods: {\n    closeMenu() {\n      this.isHidden = true\n    }\n  }\n}\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gobierto-data-container-btn-download-data\"},[_c('Button',{directives:[{name:\"clickoutside\",rawName:\"v-clickoutside\",value:(_vm.closeMenu),expression:\"closeMenu\"}],staticClass:\"gobierto-data-btn-download-data\",attrs:{\"text\":_vm.labelDownloadData,\"icon\":\"download\",\"icon-color\":\"rgba(var(--color-base-string), .5)\",\"background\":\"#fff\"},nativeOn:{\"click\":function($event){_vm.isHidden = !_vm.isHidden}}},[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(!_vm.editor)?[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isHidden),expression:\"!isHidden\"}],staticClass:\"gobierto-data-btn-download-data-modal\"},_vm._l((_vm.arrayFormats),function(item,key){return _c('a',{key:key,staticClass:\"gobierto-data-btn-download-data-modal-element\",attrs:{\"href\":item,\"download\":_vm.titleFile}},[_vm._v(\"\\n            \"+_vm._s(key)+\"\\n          \")])}),0)]:[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isHidden),expression:\"!isHidden\"}],staticClass:\"gobierto-data-btn-download-data-modal\"},_vm._l((_vm.arrayFormatsQuery),function(ref,key){\nvar url = ref.url;\nvar name = ref.name;\nvar label = ref.label;\nreturn _c('a',{key:key,staticClass:\"gobierto-data-btn-download-data-modal-element\",attrs:{\"href\":url},on:{\"click\":function($event){$event.preventDefault();return _vm.getFiles(url, name)}}},[_vm._v(\"\\n            \"+_vm._s(label)+\"\\n          \")])}),0)]],2)],1)],1)}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"DownloadButton.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "import { baseUrl } from '../commons.js';\nimport axios from 'axios';\n\nconst endPoint = `${baseUrl}/data.`;\n\n// Factor to force download files in multiple formats\nexport const DownloadFilesFactoryMixin = {\n  methods: {\n    createObjectFormatsQuery(sql) {\n      //Get the formats from API\n      const keyFormats = Object.keys(this.arrayFormats)\n\n      //Create an object to parse query, is the same method which use to run a query. If we don't do this we've to use regex and replace to encode URL with too hacks https://stackoverflow.com/a/32882427\n      const objectSql = { sql: sql }\n      const queryUrl = new URLSearchParams(objectSql);\n\n      const datetime = new Date();\n      const date = `${datetime.getDate()}_${(datetime.getMonth() + 1)}_${datetime.getFullYear()}`;\n\n      const {\n        params: {\n          id: titleFile\n        }\n      } = this.$route\n\n      this.titleFile = titleFile\n\n      const formats = {}\n      for (let i = 0; i < keyFormats.length; i++) {\n        formats[i] = {\n          label: keyFormats[i],\n          url: `${endPoint}${keyFormats[i]}?${queryUrl.toString()}`,\n          name: `${titleFile}_${date}.${keyFormats[i]}`\n        };\n      }\n\n      // we need to re-assign the object to trigger reactivity\n      // otherwise, object changes won't be reflected\n      this.arrayFormatsQuery = formats\n\n    },\n    getFiles(url, name) {\n      return axios\n        .get(url, { responseType: 'blob' })\n        .then(response => {\n          const blob = new Blob([response.data], { type: 'text/plain' });\n          const link = document.createElement('a');\n          link.href = URL.createObjectURL(blob);\n          link.download = name;\n          link.click();\n          URL.revokeObjectURL(link.href);\n        })\n        .catch(console.error);\n    }\n  }\n};\n", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport { VueDirectivesMixin } from '../../../../lib/vue/directives';\nimport { DownloadFilesFactoryMixin } from '../../../lib/factories/download';\n\nconst __vue_script__ = {\n  name: 'DownloadLink',\n  mixins: [VueDirectivesMixin, DownloadFilesFactoryMixin],\n  props: {\n    editor: {\n      type: Boolean,\n      default: false\n    },\n    arrayFormats: {\n      type: Object,\n      required: true\n    },\n    queryStored: {\n      type: String,\n      default: \"\"\n    },\n    cssClass: {\n      type: String,\n      default: \"\"\n    }\n  },\n  data() {\n    return {\n      labelDownloadData: I18n.t(\"gobierto_data.projects.downloadData\") || \"\",\n      arrayFormatsQuery: {},\n      titleFile: ''\n    }\n  },\n  computed: {\n    moreThanOneFormat() {\n      return Object.keys(this.arrayFormats).length > 1\n    }\n  },\n  watch: {\n    queryStored(newValue, oldValue) {\n      if (newValue !== oldValue) {\n        this.createObjectFormatsQuery(newValue)\n      }\n    }\n  },\n  created() {\n    this.createObjectFormatsQuery(this.queryStored)\n  },\n  methods: {\n    closeMenu() {\n      this.isHidden = true\n    }\n  }\n}\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gobierto-data-container-btn-download-data\",class:_vm.cssClass},[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(!_vm.editor)?_vm._l((_vm.arrayFormats),function(item,key){return _c('a',{key:key,staticClass:\"gobierto-data-btn-blue gobierto-data-btn-download-data\",attrs:{\"href\":item,\"download\":_vm.titleFile}},[_c('i',{staticClass:\"fas fa-download\"}),_vm._v(\"\\n        \"+_vm._s(_vm.labelDownloadData)+\"\\n      \")])}):_vm._l((_vm.arrayFormatsQuery),function(ref,key){\nvar url = ref.url;\nvar name = ref.name;\nreturn _c('a',{key:key,staticClass:\"gobierto-data-btn-blue gobierto-data-btn-download-data align-right\",attrs:{\"href\":url},on:{\"click\":function($event){$event.preventDefault();return _vm.getFiles(url, name)}}},[_c('i',{staticClass:\"fas fa-download\"}),_vm._v(\"\\n        \"+_vm._s(_vm.labelDownloadData)+\"\\n      \")])})],2)],1)}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"DownloadLink.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport { Dropdown } from '../../../../lib/vue/components';\nimport Caret from './Caret.vue';\nimport PrivateIcon from './PrivateIcon.vue';\nimport CodeMirror from 'codemirror';\nimport 'codemirror/mode/sql/sql.js';\n\nconst __vue_script__ = {\n  name: \"Queries\",\n  components: {\n    Caret,\n    Dropdown,\n    PrivateIcon\n  },\n  props: {\n    privateQueries: {\n      type: Array,\n      default: () => []\n    },\n    publicQueries: {\n      type: Array,\n      default: () => []\n    },\n    isUserLogged: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data() {\n    return {\n      labelYourQueries: I18n.t(\"gobierto_data.projects.yourQueries\") || \"\",\n      labelQueryEmpty: I18n.t(\"gobierto_data.projects.queryEmpty\") || \"\",\n      labelFavs: I18n.t(\"gobierto_data.projects.favs\") || \"\",\n      labelAll: I18n.t(\"gobierto_data.projects.all\") || \"\",\n      labelDeleteQuery: I18n.t(\"gobierto_data.projects.deleteQuery\") || \"\",\n      labelEditor: I18n.t(\"gobierto_data.accessibility.editor\") || \"\",\n      sqlCode: null,\n      showPrivateQueries: true,\n      showPublicQueries: true,\n    };\n  },\n  mounted() {\n    const cmOption = {\n      tabSize: 2,\n      styleActiveLine: false,\n      lineNumbers: false,\n      styleSelectedText: false,\n      line: true,\n      foldGutter: true,\n      mode: \"text/x-sql\",\n      showCursorWhenSelecting: true,\n      theme: \"default\",\n      autoIndent: true,\n      screenReaderLabel: \"queryEditorQueries\"\n    };\n\n    this.editor = CodeMirror.fromTextArea(this.$refs.querySnippet, cmOption);\n\n    this.showPrivateQueries = !!this.privateQueries.length\n    this.showPublicQueries = !!this.publicQueries.length\n  },\n  methods: {\n    closeYourQueriesModal() {\n      this.$root.$emit('runCurrentQuery')\n      this.$emit('close-queries-modal')\n      this.$root.$emit('disabledStringSavedQuery')\n      this.$root.$emit('resetVizEvent')\n    },\n    clickDeleteQueryHandler(id) {\n      const answerDelete = confirm(this.labelDeleteQuery);\n      if (answerDelete) {\n        this.$root.$emit('deleteSavedQuery', id)\n      }\n    },\n    showSQLCode(code) {\n      this.sqlCode = code\n      this.editor.setValue(this.sqlCode);\n    },\n    removeSQLCode() {\n      this.sqlCode = ''\n      this.editor.setValue(this.sqlCode);\n    }\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gobierto-data-summary-queries\"},[_c('div',{staticClass:\"gobierto-data-summary-queries-panel pure-g\"},[_c('div',{staticClass:\"pure-u-1-2 gobierto-data-summary-queries-panel-dropdown\"},[(_vm.isUserLogged)?[_c('Dropdown',{on:{\"is-content-visible\":function($event){_vm.showPrivateQueries = !_vm.showPrivateQueries}},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('h3',{staticClass:\"gobierto-data-summary-queries-panel-title\"},[_c('Caret',{attrs:{\"rotate\":!_vm.showPrivateQueries}}),_vm._v(\"\\n              \"+_vm._s(_vm.labelYourQueries)+\" (\"+_vm._s(_vm.privateQueries.length)+\")\\n            \")],1)]},proxy:true}],null,false,3490557657)},[_vm._v(\" \"),_c('div',[_c('transition-group',{attrs:{\"name\":\"fade\"}},_vm._l((_vm.privateQueries),function(ref){\nvar id = ref.id;\nvar ref_attributes = ref.attributes;\nvar sql = ref_attributes.sql;\nvar name = ref_attributes.name;\nvar privacy_status = ref_attributes.privacy_status;\nreturn _c('div',{key:id,staticClass:\"gobierto-data-summary-queries-container\",on:{\"mouseover\":function($event){return _vm.showSQLCode(sql)},\"mouseleave\":function($event){return _vm.removeSQLCode()}}},[_c('router-link',{staticClass:\"gobierto-data-summary-queries-container-name\",attrs:{\"to\":(\"/datos/\" + (_vm.$route.params.id) + \"/q/\" + id)},nativeOn:{\"click\":function($event){return _vm.closeYourQueriesModal()}}},[_vm._v(\"\\n                  \"+_vm._s(name)+\"\\n                \")]),_vm._v(\" \"),_c('div',{staticClass:\"gobierto-data-summary-queries-container-icon\"},[_c('i',{staticClass:\"fas fa-trash-alt icons-your-queries\",staticStyle:{\"color\":\"var(--color-base)\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.clickDeleteQueryHandler(id)}}}),_vm._v(\" \"),_c('PrivateIcon',{staticClass:\"icons-your-queries\",attrs:{\"is-closed\":privacy_status === 'closed'}})],1)],1)}),0)],1)])]:_vm._e(),_vm._v(\" \"),_c('Dropdown',{on:{\"is-content-visible\":function($event){_vm.showPublicQueries = !_vm.showPublicQueries}},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('h3',{staticClass:\"gobierto-data-summary-queries-panel-title\"},[_c('Caret',{attrs:{\"rotate\":_vm.showPublicQueries}}),_vm._v(\"\\n\\n            \"+_vm._s(_vm.labelAll)+\"\\n            \"),(_vm.publicQueries.length)?[_vm._v(\"\\n              (\"+_vm._s(_vm.publicQueries.length)+\")\\n            \")]:_vm._e()],2)]},proxy:true}])},[_vm._v(\" \"),(_vm.publicQueries.length)?_c('div',_vm._l((_vm.publicQueries),function(ref){\nvar id = ref.id;\nvar ref_attributes = ref.attributes;\nvar sql = ref_attributes.sql;\nvar name = ref_attributes.name;\nreturn _c('div',{key:id,staticClass:\"gobierto-data-summary-queries-container\",on:{\"mouseover\":function($event){return _vm.showSQLCode(sql)},\"mouseleave\":function($event){return _vm.removeSQLCode()}}},[_c('router-link',{staticClass:\"gobierto-data-summary-queries-container-name\",attrs:{\"to\":(\"/datos/\" + (_vm.$route.params.id) + \"/q/\" + id)},nativeOn:{\"click\":function($event){return _vm.closeYourQueriesModal()}}},[_vm._v(\"\\n              \"+_vm._s(name)+\"\\n            \")])],1)}),0):[_c('div',{staticClass:\"gobierto-data-summary-queries-container\"},[_vm._v(\"\\n            \"+_vm._s(_vm.labelQueryEmpty)+\"\\n          \")])]],2)],2),_vm._v(\" \"),_c('div',{staticClass:\"pure-u-1-2 border-color-queries\"},[_c('p',{staticClass:\"gobierto-data-summary-queries-sql-code\"},[_c('label',{staticClass:\"helper-screenreader\",attrs:{\"for\":\"queryEditorQueries\"}},[_vm._v(_vm._s(_vm.labelEditor))]),_vm._v(\" \"),_c('textarea',{ref:\"querySnippet\",attrs:{\"id\":\"queryEditorQueries\"}})])])])])}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"Queries.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n\nconst __vue_script__ = {\n  name: 'PrivateIcon',\n  props: {\n    isClosed: {\n      type: Boolean,\n      default: false\n    },\n  }\n}\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('i',{staticClass:\"fas\",class:_vm.isClosed ? 'fa-lock' : 'fa-lock-open',style:(_vm.isClosed ? 'color: #D0021B;' : 'color: #A0C51D;')})}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"PrivateIcon.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport ResourcesItem from './ResourcesItem.vue';\nimport Caret from '../commons/Caret.vue';\nimport { Dropdown } from '../../../../lib/vue/components';\n\nconst __vue_script__ = {\n  name: \"Resources\",\n  components: {\n    ResourcesItem,\n    Caret,\n    Dropdown\n  },\n  props: {\n    resourcesList: {\n      type: Array,\n      default: () => []\n    }\n  },\n  data() {\n    return {\n      labelResources: I18n.t(\"gobierto_data.projects.resources\") || '',\n      showResources: true\n    }\n  }\n}\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.resourcesList.length)?_c('div',{staticClass:\"gobierto-data-summary-resources\"},[_c('Dropdown',{on:{\"is-content-visible\":function($event){_vm.showResources = !_vm.showResources}},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('h2',{staticClass:\"gobierto-data-tabs-section-title\"},[_c('Caret',{attrs:{\"rotate\":_vm.showResources}}),_vm._v(\"\\n        \"+_vm._s(_vm.labelResources)+\"\\n      \")],1)]},proxy:true}],null,false,1700011084)},[_vm._v(\" \"),_c('div',{staticClass:\"gobierto-data-resources-list\"},[(_vm.showResources)?_c('ResourcesItem',{staticClass:\"gobierto-data-resources-list-element\",attrs:{\"resources-list\":_vm.resourcesList}}):_vm._e()],1)])],1):_vm._e()}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"Resources.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nconst __vue_script__ = {\n  name: \"ResourcesItem\",\n  props: {\n    resourcesList: {\n      type: Array,\n      required: true,\n      default: () => []\n    }\n  },\n}\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._l((_vm.resourcesList),function(item,index){return [_c('a',{key:index,attrs:{\"href\":item.attributes.url}},[_c('i',{staticClass:\"fas fa-file-excel\"})]),_vm._v(\" \"),_c('span',{key:index,staticClass:\"gobierto-data-resources-list-element-name\"},[_vm._v(\"\\n      \"+_vm._s(item.attributes.name)+\"\\n    \")]),_vm._v(\" \"),_c('span',{key:index,staticClass:\"gobierto-data-resources-list-element-size\"},[_vm._v(\"\\n      \"+_vm._s(item.attributes.file_size)+\"\\n    \")])]})],2)}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"ResourcesItem.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n\nimport 'perspective-map';\nimport 'leaflet/dist/leaflet.css';\n\nconst __vue_script__ = {\n  name: \"Visualizations\",\n  props: {\n    items: {\n      type: String,\n      default: ''\n    },\n    objectColumns: {\n      type: Object,\n      default: () => {}\n    },\n    config: {\n      type: Object,\n      default: () => {}\n    },\n    configMap: {\n      type: Object,\n      default: () => {}\n    },\n    registrationDisabled: {\n      type: Boolean,\n      default: false\n    },\n    isUserLogged: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data() {\n    return {\n      prevConfig: this.config\n    }\n  },\n  computed: {\n    registrationDisabledAndUserIsLogged() {\n      return !this.registrationDisabled || this.isUserLogged\n    }\n  },\n  watch: {\n    items(newValue, oldValue) {\n      if (newValue !== oldValue) {\n        this.checkIfQueryResultIsEmpty(newValue)\n      }\n    },\n    config() {\n      this.setConfig()\n    }\n  },\n  mounted() {\n    this.viewer = this.$refs[\"perspective-viewer\"];\n    this.checkIfQueryResultIsEmpty(this.items)\n    this.$root.$emit(\"showSavingDialogEventViz\", false)\n  },\n  beforeUnmount() {\n    document.removeEventListener(\"click\", this.$emit(\"show-saving\"));\n    this.$root.$emit(\"showSavingDialogEventViz\", false)\n  },\n  methods: {\n    // You can run a query that gets an empty result, and this isn't an error. But if the result comes empty Perspective has no data to build the table, so console returns an error. We need to check if the result of the query is equal to the columns\n    checkIfQueryResultIsEmpty(items) {\n      // The result of the query, if returns empty only contains the columns.\n      const data = items.trim()\n      // Only the columns of the query.\n      const [columns = \"\"] = items.split(\"\\n\");\n\n      // Clean any previous config\n      this.resetConfig();\n\n      this.viewer.setAttribute(\"columns\", JSON.stringify(columns.split(\",\")))\n      if (this.configMap) {\n        this.viewer.setAttribute(\"config-map\", JSON.stringify(this.configMap))\n      }\n\n      if (columns !== data) {\n        this.checkPerspectiveTypes()\n      } else {\n        this.viewer.clear()\n        // Well, it's a bit tricky, but reset the table with .clear() only responds when trigger an event,\n        // if not trigger an event .clear() isn't fired\n        window.dispatchEvent(new Event(\"resize\"))\n      }\n    },\n    async checkPerspectiveTypes() {\n      //If columns contains Boolean values goes to replace them\n      let data = this.items\n      if (Object.values(this.objectColumns).some(value => value === \"boolean\")) {\n        data = this.items.replace(/\"t\"/g, '\"true\"').replace(/\"f\"/g, '\"false\"')\n      }\n\n      if (this.config) {\n        // requires wait for the config to be loaded\n        await this.setConfig()\n      }\n\n      this.hideConfigButton()\n\n      const table = perspective.worker().table(data);\n      this.viewer.load(table)\n    },\n    getConfig() {\n      // export the visualization configuration object\n      return this.viewer.save()\n    },\n    async setConfig() {\n      this.viewer.restore(this.config);\n    },\n    resetConfig() {\n      this.viewer.reset();\n    },\n    hideConfigButton() {\n      const configButtonPerspective = this.viewer.shadowRoot?.getElementById(\"config_button\")\n      configButtonPerspective.style.display = \"none\"\n    },\n    toggleConfigPerspective() {\n      this.viewer.toggleConfig()\n      if (this.registrationDisabledAndUserIsLogged) {\n        this.$root.$emit(\"showSavedVizString\", false)\n        const shadowRootPerspective = document.querySelector(\"perspective-viewer\").shadowRoot\n        const selectVizPerspective = shadowRootPerspective.getElementById(\"app\")\n        const clickableElementsPerspective = [\"row_pivots\", \"vis_selector\", \"active_columns\"]\n        selectVizPerspective.addEventListener(\"click\", (e) => {\n          const parent = e.target.parentElement?.id\n          if (clickableElementsPerspective.includes(parent)) {\n            this.$emit(\"show-saving\")\n            this.$root.$emit(\"isVizModified\", true)\n          }\n        })\n      }\n    },\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.items)?_c('perspective-viewer',{ref:\"perspective-viewer\"}):_vm._e()}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"Visualizations.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport { SkeletonSpinner } from '../../../../lib/vue/components';\nimport { VisualizationFactoryMixin } from '../../../lib/factories/visualizations';\n\n// ESBuild does not work properly with dynamic components\nimport VisualizationsList from './VisualizationsList.vue';\nimport VisualizationsItem from './VisualizationsItem.vue';\n\nconst COMPONENTS = [\n  VisualizationsList,\n  VisualizationsItem\n];\n// const COMPONENTS = [\n//   () => import('./VisualizationsList.vue'),\n//   () => import('./VisualizationsItem.vue')\n// ];\n\nconst __vue_script__ = {\n  name: \"VisualizationsTab\",\n  components: {\n    SkeletonSpinner\n  },\n  mixins: [\n    VisualizationFactoryMixin,\n  ],\n  props: {\n    datasetId: {\n      type: Number,\n      required: true\n    },\n    isUserLogged: {\n      type: Boolean,\n      default: false\n    },\n    isVizModified: {\n      type: Boolean,\n      default: false\n    },\n    isVizSaved: {\n      type: Boolean,\n      default: false\n    },\n    isVizSavingPromptVisible: {\n      type: Boolean,\n      default: false\n    },\n    enabledVizSavedButton: {\n      type: Boolean,\n      default: false\n    },\n    privateVisualizations: {\n      type: Array,\n      default: () => []\n    },\n    publicVisualizations: {\n      type: Array,\n      default: () => []\n    },\n    privateQueries: {\n      type: Array,\n      default: () => []\n    },\n    publicQueries: {\n      type: Array,\n      default: () => []\n    },\n    isPrivateVizLoading: {\n      type: Boolean,\n      default: false\n    },\n    isPublicVizLoading: {\n      type: Boolean,\n      default: false\n    },\n    currentVizTab: {\n      type: Number,\n      default: null\n    },\n    enabledForkVizButton: {\n      type: Boolean,\n      default: true\n    },\n    vizInputFocus: {\n      type: Boolean,\n      default: true\n    },\n    showPrivatePublicIconViz: {\n      type: Boolean,\n      default: false\n    },\n    showPrivateViz: {\n      type: Boolean,\n      default: false\n    },\n    showPrivate: {\n      type: Boolean,\n      default: false\n    },\n    showLabelEdit: {\n      type: Boolean,\n      default: false\n    },\n    isVizItemModified: {\n      type: Boolean,\n      default: false\n    },\n    resetPrivate: {\n      type: Boolean,\n      default: false\n    },\n    vizId: {\n      type: Number,\n      default: 0\n    },\n    userSaveViz: {\n      type: Number,\n      default: 0\n    },\n    objectColumns: {\n      type: Object,\n      default: () => {}\n    },\n    configMap: {\n      type: Object,\n      default: () => {}\n    },\n    registrationDisabled: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data() {\n    return {\n      currentVizComponent: null,\n      items: null,\n      isPrivateLoading: false,\n      isPublicLoading: false,\n      listVizComponent: true,\n      titleViz: '',\n      activeViz: 0,\n      config: {}\n    };\n  },\n  computed: {\n    isVizLoading() {\n      return this.publicVisualizations.length || !this.isPublicVizLoading\n    }\n  },\n  watch: {\n    currentVizTab(newValue) {\n      if (newValue === 0) {\n        this.currentVizComponent = COMPONENTS[newValue];\n      }\n    }\n  },\n  created() {\n    const {\n      name: nameComponent\n    } = this.$route;\n\n    if (nameComponent === 'Visualization') {\n      this.currentVizComponent = COMPONENTS[1];\n      this.listVizComponent = false\n    } else {\n      this.currentVizComponent = COMPONENTS[this.activeViz];\n      this.listVizComponent = true\n    }\n  },\n  mounted() {\n    this.$root.$emit('showSavingDialogEventViz', false)\n  },\n  methods: {\n    showVizElement(component) {\n      this.activeViz = component\n      this.currentVizComponent = COMPONENTS[this.activeViz];\n    },\n    async deleteHandlerVisualization(id) {\n      await this.deleteVisualization(id)\n      this.$root.$emit('reloadVisualizations')\n    }\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gobierto-data-sets-nav--tab-container\"},[(!_vm.isVizLoading)?[(_vm.listVizComponent)?[_c('SkeletonSpinner',{attrs:{\"height-square\":\"200px\",\"squares-rows\":\"2\",\"squares\":\"2\"}})]:[_c('SkeletonSpinner',{attrs:{\"height-square\":\"300px\",\"squares\":\"1\",\"lines\":\"2\"}})]]:[(_vm.isVizLoading)?_c(_vm.currentVizComponent,{tag:\"component\",attrs:{\"public-visualizations\":_vm.publicVisualizations,\"private-visualizations\":_vm.privateVisualizations,\"private-queries\":_vm.privateQueries,\"public-queries\":_vm.publicQueries,\"dataset-id\":_vm.datasetId,\"is-user-logged\":_vm.isUserLogged,\"is-public-loading\":_vm.isPublicLoading,\"is-private-loading\":_vm.isPrivateLoading,\"name\":_vm.titleViz,\"is-viz-saving-prompt-visible\":_vm.isVizSavingPromptVisible,\"is-viz-modified\":_vm.isVizModified,\"is-viz-saved\":_vm.isVizSaved,\"is-private-viz-loading\":_vm.isPrivateVizLoading,\"is-public-viz-loading\":_vm.isPublicVizLoading,\"enabled-viz-saved-button\":_vm.enabledVizSavedButton,\"enabled-fork-viz-button\":_vm.enabledForkVizButton,\"viz-input-focus\":_vm.vizInputFocus,\"show-private-public-icon-viz\":_vm.showPrivatePublicIconViz,\"show-private-viz\":_vm.showPrivateViz,\"show-private\":_vm.showPrivate,\"show-label-edit\":_vm.showLabelEdit,\"is-viz-item-modified\":_vm.isVizItemModified,\"reset-private\":_vm.resetPrivate,\"viz-id\":_vm.vizId,\"user-save-viz\":_vm.userSaveViz,\"object-columns\":_vm.objectColumns,\"config-map\":_vm.configMap,\"registration-disabled\":_vm.registrationDisabled},on:{\"change-viz\":_vm.showVizElement,\"emit-delete\":_vm.deleteHandlerVisualization}}):_vm._e()]],2)}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"VisualizationsTab.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "import { baseUrl } from '../commons.js';\nimport axios from 'axios';\n\nconst endPoint = `${baseUrl}/visualizations`;\n\n// Visualizations-endpoint factory to get/post/put/delete API data\nexport const VisualizationFactoryMixin = {\n  methods: {\n    getVisualization(id) {\n      const headers = {\n        \"Content-type\": \"application/json\",\n        Authorization: window.gobiertoAPI.token\n      };\n\n      return axios.get(`${endPoint}/${id}`, { headers });\n    },\n    getVisualizations(params) {\n      const headers = {\n        \"Content-type\": \"application/json\",\n        Authorization: window.gobiertoAPI.token\n      };\n\n      const qs = new URLSearchParams(params)\n      return axios.get(`${endPoint}?${qs.toString()}`, { headers });\n    },\n    postVisualization(data) {\n      const headers = {\n        \"Content-type\": \"application/json\",\n        Authorization: window.gobiertoAPI.token\n      };\n\n      // Return a promise to handle the response where it's invoked\n      return axios.post(endPoint, data, { headers });\n    },\n    putVisualization(id, data) {\n      const headers = {\n        \"Content-type\": \"application/json\",\n        Authorization: window.gobiertoAPI.token\n      };\n\n      return axios.put(`${endPoint}/${id}`, data, { headers });\n    },\n    deleteVisualization(id) {\n      const headers = {\n        \"Content-type\": \"application/json\",\n        Authorization: window.gobiertoAPI.token\n      };\n\n      return axios.delete(`${endPoint}/${id}`, { headers });\n    }\n  }\n};\n", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport { Loading, Dropdown } from '../../../../lib/vue/components';\nimport Caret from '../commons/Caret.vue';\nimport Visualizations from '../commons/Visualizations.vue';\nimport PrivateIcon from '../commons/PrivateIcon.vue';\nimport { getUserId } from '../../../lib/helpers';\nimport CardVisualization from '../../layouts/CardVisualization.vue';\n\n\nconst __vue_script__ = {\n  name: \"VisualizationsList\",\n  components: {\n    Visualizations,\n    PrivateIcon,\n    Dropdown,\n    Caret,\n    Loading,\n    CardVisualization\n  },\n  props: {\n    datasetId: {\n      type: Number,\n      required: true\n    },\n    isUserLogged: {\n      type: Boolean,\n      default: false\n    },\n    isPrivateVizLoading: {\n      type: Boolean,\n      default: false\n    },\n    isPublicVizLoading: {\n      type: Boolean,\n      default: false\n    },\n    publicVisualizations: {\n      type: Array,\n      default: () => []\n    },\n    privateVisualizations: {\n      type: Array,\n      default: () => []\n    },\n    objectColumns: {\n      type: Object,\n      default: () => {}\n    },\n    configMap: {\n      type: Object,\n      default: () => {}\n    },\n  },\n  data() {\n    return {\n      labelVisEmpty: I18n.t(\"gobierto_data.projects.visEmpty\") || \"\",\n      labelVisPrivate: I18n.t(\"gobierto_data.projects.visPrivate\") || \"\",\n      labelVisPublic: I18n.t(\"gobierto_data.projects.visPublic\") || \"\",\n      labelDeleteViz: I18n.t(\"gobierto_data.projects.deleteViz\") || \"\",\n      showPrivateVis: true,\n      showPublicVis: true,\n      deleteAndReload: false,\n    };\n  },\n  watch: {\n    isPrivateVizLoading(newValue) {\n      if (!newValue) {\n        this.deleteAndReload = false\n      }\n    },\n    privateVisualizations(newValue, oldValue) {\n      if (newValue !== oldValue) {\n        this.deleteAndReload = false\n      }\n    }\n  },\n  methods: {\n    loadViz(vizName, user) {\n      document.getElementById('gobierto-datos-app').scrollIntoView();\n      const userId = Number(getUserId())\n      this.$emit('change-viz', 1)\n      this.$root.$emit('loadVizName', vizName)\n      if (userId !== 0 && userId !== user) {\n        this.$root.$emit('enabledForkVizButton', true)\n      }\n    },\n    emitDeleteHandlerVisualization(id) {\n      this.deleteAndReload = true\n      const answerDelete = confirm(this.labelDeleteViz);\n      if (answerDelete) {\n        this.$emit('emit-delete', id)\n      }\n    }\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.isUserLogged)?[_c('Dropdown',{on:{\"is-content-visible\":function($event){_vm.showPrivateVis = !_vm.showPrivateVis}},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('h3',{staticClass:\"gobierto-data-visualization--h3\"},[_c('Caret',{attrs:{\"rotate\":_vm.showPrivateVis}}),_vm._v(\"\\n\\n          \"+_vm._s(_vm.labelVisPrivate)+\"\\n          (\"+_vm._s(_vm.privateVisualizations.length)+\")\\n        \")],1)]},proxy:true}],null,false,2189641499)},[_vm._v(\" \"),_c('div',{staticClass:\"gobierto-data-visualization--grid\"},[(_vm.deleteAndReload)?[_c('Loading')]:[(_vm.privateVisualizations.length)?[_vm._l((_vm.privateVisualizations),function(ref){\nvar config = ref.config;\nvar items = ref.items;\nvar name = ref.name;\nvar privacy_status = ref.privacy_status;\nvar id = ref.id;\nvar user_id = ref.user_id;\nreturn [_c('div',{key:id,staticClass:\"gobierto-data-visualization--container\"},[_c('router-link',{staticClass:\"gobierto-data-visualizations-name\",attrs:{\"to\":(\"/datos/\" + (_vm.$route.params.id) + \"/v/\" + id)},nativeOn:{\"click\":function($event){return _vm.loadViz(name, user_id)}}},[_c('CardVisualization',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._v(\"\\n                      \"+_vm._s(name)+\"\\n                    \")]},proxy:true}],null,true)},[_vm._v(\" \"),(config.base64)?[_c('img',{staticClass:\"gobierto-data-visualization--image\",attrs:{\"src\":config.base64}})]:[_c('Visualizations',{attrs:{\"items\":items,\"config\":config,\"object-columns\":_vm.objectColumns,\"config-map\":_vm.configMap}})]],2)],1),_vm._v(\" \"),_c('div',{staticClass:\"gobierto-data-visualization--icons\"},[_c('PrivateIcon',{attrs:{\"is-closed\":privacy_status === 'closed'}}),_vm._v(\" \"),_c('i',{staticClass:\"fas fa-trash-alt\",staticStyle:{\"color\":\"var(--color-base)\",\"cursor\":\"pointer\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.emitDeleteHandlerVisualization(id)}}})],1)],1)]})]:[_c('div',[_vm._v(_vm._s(_vm.labelVisEmpty))])]]],2)])]:_vm._e(),_vm._v(\" \"),_c('Dropdown',{on:{\"is-content-visible\":function($event){_vm.showPublicVis = !_vm.showPublicVis}},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('h3',{staticClass:\"gobierto-data-visualization--h3\"},[_c('Caret',{attrs:{\"rotate\":_vm.showPublicVis}}),_vm._v(\"\\n\\n        \"+_vm._s(_vm.labelVisPublic)+\"\\n        \"),(_vm.publicVisualizations.length)?[_vm._v(\"\\n          (\"+_vm._s(_vm.publicVisualizations.length)+\")\\n        \")]:_vm._e()],2)]},proxy:true}])},[_vm._v(\" \"),_c('div',{staticClass:\"gobierto-data-visualization--grid\"},[(_vm.publicVisualizations.length)?[_vm._l((_vm.publicVisualizations),function(ref){\nvar config = ref.config;\nvar items = ref.items;\nvar name = ref.name;\nvar id = ref.id;\nvar user_id = ref.user_id;\nreturn [_c('div',{key:id},[_c('router-link',{staticClass:\"gobierto-data-visualizations-name\",attrs:{\"to\":(\"/datos/\" + (_vm.$route.params.id) + \"/v/\" + id)},nativeOn:{\"click\":function($event){return _vm.loadViz(name, user_id)}}},[_c('CardVisualization',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._v(\"\\n                  \"+_vm._s(name)+\"\\n                \")]},proxy:true}],null,true)},[_vm._v(\" \"),(config.base64)?[_c('img',{staticClass:\"gobierto-data-visualization--image\",attrs:{\"src\":config.base64}})]:[_c('Visualizations',{attrs:{\"items\":items,\"config\":config,\"object-columns\":_vm.objectColumns,\"config-map\":_vm.configMap}})]],2)],1)],1)]})]:[_c('div',[_vm._v(_vm._s(_vm.labelVisEmpty))])]],2)])],2)}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"VisualizationsList.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "function getUserId() {\n  return window.gobiertoAPI.current_user_id\n}\n\nfunction convertToCSV(arr) {\n  const array = [Object.keys(arr?.[0] || {})].concat(arr)\n\n  return array.map(it => Object.values(it).toString()).join('\\n')\n}\n\nexport { getUserId, convertToCSV }\n", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nconst __vue_script__ = {\n  name: \"CardVisualization\",\n}\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gobierto-data-visualization--card\"},[_c('div',{staticClass:\"gobierto-data-visualization--aspect-ratio-16-9\"},[_c('div',{staticClass:\"gobierto-data-visualization--content\"},[_c('h4',{staticClass:\"gobierto-data-visualization--title\"},[_vm._t(\"title\")],2),_vm._v(\" \"),_vm._t(\"default\")],2)])])}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"CardVisualization.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport { Loading } from '../../../../lib/vue/components';\nimport Visualizations from '../commons/Visualizations.vue';\nimport SavingDialog from '../commons/SavingDialog.vue';\nimport { getUserId } from '../../../lib/helpers';\nimport { convertVizToImgMixin } from '../../../lib/commons.js';\n\nconst __vue_script__ = {\n  name: \"VisualizationsItem\",\n  components: {\n    Visualizations,\n    SavingDialog,\n    Loading\n  },\n  mixins: [convertVizToImgMixin],\n  props: {\n    datasetId: {\n      type: Number,\n      required: true\n    },\n    isUserLogged: {\n      type: Boolean,\n      default: false\n    },\n    privateVisualizations: {\n      type: Array,\n      default: () => []\n    },\n    publicVisualizations: {\n      type: Array,\n      default: () => []\n    },\n    privateQueries: {\n      type: Array,\n      default: () => []\n    },\n    publicQueries: {\n      type: Array,\n      default: () => []\n    },\n    isVizModified: {\n      type: Boolean,\n      default: false\n    },\n    isVizSaved: {\n      type: Boolean,\n      default: false\n    },\n    isVizSavingPromptVisible: {\n      type: Boolean,\n      default: false\n    },\n    enabledVizSavedButton: {\n      type: Boolean,\n      default: false\n    },\n    enabledForkVizButton: {\n      type: Boolean,\n      default: true\n    },\n    vizInputFocus: {\n      type: Boolean,\n      default: false\n    },\n    showPrivatePublicIconViz: {\n      type: Boolean,\n      default: false\n    },\n    showPrivateViz: {\n      type: Boolean,\n      default: false\n    },\n    showPrivate: {\n      type: Boolean,\n      default: false\n    },\n    showLabelEdit: {\n      type: Boolean,\n      default: false\n    },\n    isVizItemModified: {\n      type: Boolean,\n      default: false\n    },\n    resetPrivate: {\n      type: Boolean,\n      default: false\n    },\n    vizId: {\n      type: Number,\n      default: 0\n    },\n    userSaveViz: {\n      type: Number,\n      default: 0\n    },\n    objectColumns: {\n      type: Object,\n      default: () => {}\n    },\n    configMap: {\n      type: Object,\n      default: () => {}\n    },\n    registrationDisabled: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data() {\n    return {\n      labelVisName: I18n.t('gobierto_data.projects.visName') || \"\",\n      labelVisualize: I18n.t('gobierto_data.projects.visualize') || \"\",\n      labelDashboard: I18n.t('gobierto_data.projects.dashboards') || \"\",\n      labelSavedVisualization: I18n.t(\"gobierto_data.projects.savedVisualization\") || \"\",\n      labelModifiedVizualition: I18n.t(\"gobierto_data.projects.modifiedVisualization\") || \"\",\n      labelQuery: I18n.t(\"gobierto_data.projects.query\") || \"\",\n      items: null,\n      config: {},\n      vizSaveID: null,\n      queryID: '',\n      queryName: '',\n      user: null,\n      queryViz: '',\n      isVizElementSavingVisible: false,\n      name: '',\n      isQuerySavingPromptVisible: false,\n      saveLoader: false,\n      configMapZoom: { ...this.configMap, zoom: true }\n    }\n  },\n  computed: {\n    registrationDisabledAndUserIsLogged() {\n      return !this.registrationDisabled || this.isUserLogged\n    }\n  },\n  watch: {\n    vizInputFocus(newValue) {\n      if (newValue) {\n        this.$nextTick(() => this.$refs.savingDialogVizElement.inputFocus())\n      }\n    },\n    isVizSaved(newValue) {\n      if (newValue) {\n        this.saveLoader = false\n      }\n    },\n    showPrivateViz(newValue) {\n      if (newValue) {\n        this.getDataVisualization(this.privateVisualizations);\n      }\n    },\n    vizId(newValue, oldValue) {\n      if (newValue !== oldValue) {\n        this.vizSaveID = newValue\n      }\n    },\n    userSaveViz(newValue) {\n      this.user = newValue\n    }\n  },\n  created() {\n    this.$root.$emit(\"showSavedVizString\", false);\n    const userId = getUserId()\n    this.getDataVisualization(this.publicVisualizations);\n    //Only getPrivate if user load a PrivateViz\n    if (userId && this.showPrivateViz) {\n      this.getDataVisualization(this.privateVisualizations);\n    }\n  },\n  mounted() {\n    this.currentConfigChart = this.$refs.viewer.getConfig()\n  },\n  beforeUnmount() {\n    //Hide the string, and the buttons return to their initial state.\n    this.$root.$emit(\"isVizModified\", false);\n    this.$root.$emit(\"showSavedVizString\", false);\n    this.$root.$emit('enabledForkVizButton', false)\n    this.$root.$emit('showSavingDialogEventViz', false)\n  },\n  methods: {\n    convertVizHandler(opts) {\n      const perspectiveSidePanel = this.$refs.viewer.$el.shadowRoot.getElementById(\"side_panel\")\n      const perspectiveTopPanel = this.$refs.viewer.$el.shadowRoot.getElementById(\"top_panel\")\n      perspectiveSidePanel.style.display = \"none\"\n      perspectiveTopPanel.style.display = \"none\"\n      this.convertVizToImg(this.$refs[\"visualization-container\"], () => this.onSaveEventHandler(opts))\n    },\n    onSaveEventHandler(opts) {\n      //Add visualization ID to opts object, we need it to update a viz saved\n      opts.vizID = Number(this.vizSaveID)\n      opts.user = Number(this.user)\n      opts.queryID = Number(this.queryID)\n      opts.queryViz = this.queryViz\n      // get children configuration\n      const config = this.$refs.viewer.getConfig()\n      config.base64 = this.imageApi\n      this.$root.$emit(\"storeCurrentVisualization\", config, opts);\n      this.hidePromptSaveViz()\n\n      const { plugin: updateConfigPlugin } = config\n      const { plugin: currentConfigPlugin } = this.currentConfigChart\n      /* When saving a query, checks if the type of chart is changed.\n        If the chart change, we need to reload the visualization to\n        show the new type of chart.*/\n      if (updateConfigPlugin !== currentConfigPlugin) {\n        this.$root.$emit(\"reloadVisualizations\")\n        this.saveLoader = false\n      }\n    },\n    //TODO: Extract to common.js\n\n    updateVizName(value) {\n      const {\n        name: vizName\n      } = value;\n      this.labelValue = vizName\n      if (this.registrationDisabledAndUserIsLogged) {\n        this.$root.$emit('updateVizName')\n      }\n    },\n    showSavingDialog() {\n      if (this.registrationDisabledAndUserIsLogged) {\n        this.showVisualize = false\n        this.showResetViz = true\n        //Enable saved button\n        this.$root.$emit('showSavingDialogEvent')\n      }\n    },\n    getDataVisualization(data) {\n      const {\n        params: { queryId }\n      } = this.$route;\n\n      const objectViz = data.find(({ id }) => id === queryId) || {}\n\n      const {\n        items: elements,\n        config: config,\n        name: name,\n        id: vizID,\n        user_id: user_id,\n        sql: sql,\n        query_id: queryID\n      } = objectViz\n\n      //Find the query associated to the visualization\n      const itemQueries = this.showPrivateViz ? this.privateQueries : this.publicQueries\n      const { attributes: { name: queryName } = {} } = itemQueries.find(({ id }) => id == queryID) || {}\n\n      this.vizSaveID = vizID\n      this.queryID = queryID\n      this.queryName = queryName\n      this.user = user_id\n      this.name = name\n      this.config = config\n      this.items = elements\n      this.queryViz = sql\n    },\n    handlerForkViz() {\n      this.$nextTick(() => {\n        this.$refs.savingDialogVizElement.inputFocus()\n        this.$refs.savingDialogVizElement.inputSelect()\n      });\n      this.$root.$emit('enabledForkVizButton', false)\n      this.$refs.viewer.toggleConfigPerspective();\n      this.$root.$emit('showSavingDialogEventViz', true)\n    },\n    isPrivateChecked() {\n      if (this.registrationDisabledAndUserIsLogged) {\n        this.$root.$emit('isVizModified', true)\n      }\n    },\n    showPromptSaveViz() {\n      this.$refs.viewer.toggleConfigPerspective();\n      if (this.registrationDisabledAndUserIsLogged) {\n        this.$root.$emit('showSavingDialogEventViz', true)\n      }\n    },\n    hidePromptSaveViz() {\n      this.$refs.viewer.toggleConfigPerspective();\n      if (this.registrationDisabledAndUserIsLogged) {\n        this.$root.$emit('showSavingDialogEventViz', false)\n        this.$root.$emit('enableSavedVizButton', false)\n        this.$root.$emit(\"isVizModified\", false);\n      }\n    },\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.items)?_c('div',{staticClass:\"gobierto-data-sql-editor\"},[_c('div',{staticClass:\"pure-g\"},[_c('div',{staticClass:\"pure-u-1 pure-u-lg-4-4\"},[_c('SavingDialog',{ref:\"savingDialogVizElement\",attrs:{\"value\":_vm.name,\"placeholder\":_vm.labelVisName,\"label-saved\":_vm.labelSavedVisualization,\"label-modified\":_vm.labelModifiedVizualition,\"is-viz-saving-prompt-visible\":_vm.isVizSavingPromptVisible,\"is-viz-modified\":_vm.isVizModified,\"is-viz-saved\":_vm.isVizSaved,\"is-viz-item-modified\":_vm.isVizItemModified,\"is-user-logged\":_vm.isUserLogged,\"enabled-fork-viz-button\":_vm.enabledForkVizButton,\"enabled-viz-saved-button\":_vm.enabledVizSavedButton,\"is-query-saving-prompt-visible\":_vm.isQuerySavingPromptVisible,\"show-private-public-icon-viz\":_vm.showPrivatePublicIconViz,\"show-private-viz\":_vm.showPrivateViz,\"show-label-edit\":_vm.showLabelEdit,\"reset-private\":_vm.resetPrivate},on:{\"save\":_vm.convertVizHandler,\"key-down-input\":_vm.updateVizName,\"handler-fork\":_vm.handlerForkViz,\"is-private-checked\":_vm.isPrivateChecked,\"show-toggle-config\":_vm.showPromptSaveViz,\"handler-revert-viz\":_vm.hidePromptSaveViz}})],1),_vm._v(\" \"),(_vm.queryName)?_c('div',{staticClass:\"gobierto-data-visualization-query-container\"},[_c('span',{staticClass:\"gobierto-data-summary-queries-panel-title\"},[_vm._v(_vm._s(_vm.labelQuery)+\":\")]),_vm._v(\" \"),_c('router-link',{staticClass:\"gobierto-data-summary-queries-container-name\",attrs:{\"to\":(\"/datos/\" + (_vm.$route.params.id) + \"/q/\" + _vm.queryID)}},[_vm._v(\"\\n        \"+_vm._s(_vm.queryName)+\"\\n      \")])],1):_vm._e()]),_vm._v(\" \"),_c('div',{ref:\"visualization-container\",staticClass:\"gobierto-data-visualization--aspect-ratio-16-9\"},[(_vm.saveLoader)?[_c('Loading')]:[(_vm.items)?_c('Visualizations',{ref:\"viewer\",staticClass:\"gobierto-data-visualization--item\",attrs:{\"items\":_vm.items,\"config\":_vm.config,\"object-columns\":_vm.objectColumns,\"config-map\":_vm.configMapZoom,\"registration-disabled\":_vm.registrationDisabled,\"is-user-logged\":_vm.isUserLogged},on:{\"show-saving\":_vm.showSavingDialog}}):_vm._e()]],2)]):_vm._e()}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"VisualizationsItem.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport Button from './Button.vue';\nimport PrivateIcon from './PrivateIcon.vue';\n\nconst __vue_script__ = {\n  name: 'SavingDialog',\n  components: {\n    Button,\n    PrivateIcon\n  },\n  props: {\n    value: {\n      type: String,\n      default: ''\n    },\n    placeholder: {\n      type: String,\n      default: ''\n    },\n    labelSaved: {\n      type: String,\n      default: ''\n    },\n    labelModified: {\n      type: String,\n      default: ''\n    },\n    isQueryModified: {\n      type: Boolean,\n      default: false\n    },\n    isVizModified: {\n      type: Boolean,\n      default: false\n    },\n    isQuerySavingPromptVisible: {\n      type: Boolean,\n      default: false\n    },\n    isVizSavingPromptVisible: {\n      type: Boolean,\n      default: false\n    },\n    enabledQuerySavedButton: {\n      type: Boolean,\n      default: false\n    },\n    isForkPromptVisible: {\n      type: Boolean,\n      default: true\n    },\n    isUserLogged: {\n      type: Boolean,\n      default: true\n    },\n    enabledVizSavedButton: {\n      type: Boolean,\n      default: false\n    },\n    enabledForkButton: {\n      type: Boolean,\n      default: false\n    },\n    showRevertQuery: {\n      type: Boolean,\n      default: false\n    },\n    showPrivate: {\n      type: Boolean,\n      default: false\n    },\n    isQuerySaved: {\n      type: Boolean,\n      default: false\n    },\n    isVizSaved: {\n      type: Boolean,\n      default: false\n    },\n    enabledForkVizButton: {\n      type: Boolean,\n      default: false\n    },\n    showPrivatePublicIcon: {\n      type: Boolean,\n      default: false\n    },\n    showPrivatePublicIconViz: {\n      type: Boolean,\n      default: false\n    },\n    showPrivateViz: {\n      type: Boolean,\n      default: false\n    },\n    showLabelEdit: {\n      type: Boolean,\n      default: false\n    },\n    isVizItemModified: {\n      type: Boolean,\n      default: false\n    },\n    resetPrivate: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data() {\n    return {\n      isPrivate: false,\n      disabledButton: true,\n      labelValue: this.value,\n      labelPrivate: I18n.t('gobierto_data.projects.private') || \"\",\n      labelCancel: I18n.t('gobierto_data.projects.cancel') || \"\",\n      labelEdit: I18n.t(\"gobierto_data.projects.edit\") || \"\",\n      labelRevert: I18n.t(\"gobierto_data.projects.revert\") || \"\",\n      labelSavedQuery: I18n.t(\"gobierto_data.projects.savedQuery\") || \"\",\n      labelSave: I18n.t(\"gobierto_data.projects.save\") || \"\",\n      labelButtonFork: I18n.t(\"gobierto_data.projects.buttonFork\") || \"\",\n      labelFork: I18n.t(\"gobierto_data.projects.createCopy\") || \"\",\n      labelVisName: I18n.t('gobierto_data.projects.visName') || \"\",\n    }\n  },\n  computed: {\n    showForkButton() {\n      return this.enabledForkVizButton || this.enabledForkButton\n    },\n    handlerInputQuery() {\n       return (this.isUserLogged && this.isQuerySavingPromptVisible) || this.labelValue || this.isVizSavingPromptVisible\n    },\n    showPrivateIcon() {\n      return this.showPrivatePublicIcon || (this.showPrivatePublicIconViz && !this.showForkButton)\n    },\n    isQueryOrVizModified() {\n      return this.isQueryModified || this.isVizModified\n    },\n    isQueryOrVizSaved() {\n      return this.isQuerySaved || this.isVizSaved\n    },\n    showEditButton() {\n      return this.showLabelEdit && (!this.isVizItemModified && !this.showForkButton)\n    },\n    showRevertButton() {\n      return this.showRevertQuery && this.isQueryOrVizModified\n    },\n    showSaveButton() {\n      return !this.showForkButton && (this.isQueryOrVizModified || this.isVizItemModified)\n    },\n    showLabelPrivate() {\n      return this.isQueryModified || this.isVizModified || this.isVizItemModified\n    },\n    disabledInputName() {\n      return this.enabledForkButton || !this.isUserLogged || this.enabledForkVizButton\n    }\n  },\n  watch: {\n    value(newValue, oldValue) {\n      if (newValue !== oldValue) {\n        this.labelValue = newValue\n        this.countInputCharacters(newValue)\n        this.disabledButton = true\n      }\n    },\n    showPrivate(newValue) {\n      this.isPrivate = (newValue);\n    },\n    resetPrivate(newValue) {\n      if (newValue) {\n        this.isPrivate = false\n      }\n    }\n  },\n  created() {\n    this.isPrivate = this.showPrivateViz\n  },\n  mounted() {\n    this.countInputCharacters(this.value)\n  },\n  methods: {\n    inputFocus(value) {\n      if (value) {\n        this.$refs.inputText.focus()\n      } else {\n        this.$refs.inputText.blur()\n      }\n    },\n    inputSelect() {\n      this.$refs.inputText.select()\n    },\n    onClickSaveHandler() {\n      if (!this.isUserLogged) {\n        location.href = '/user/sessions/new?open_modal=true';\n        return false;\n      }\n\n      if (!this.labelValue) {\n        this.$refs.inputText.focus()\n      } else {\n        this.$emit('save', { name: this.labelValue, privacy: this.isPrivate })\n      }\n    },\n    onKeyDownTextHandler(event) {\n      const { value } = event.target\n      this.labelValue = value\n      this.$emit('key-down-input', { name: this.labelValue })\n      this.countInputCharacters(value)\n    },\n    onInputCheckboxHandler(event) {\n      const { checked } = event.target\n      this.isPrivate = checked\n      this.$emit('is-private-checked')\n    },\n    revertQueryHandler() {\n      this.labelValue = this.value\n      this.$root.$emit('revertSavedQuery')\n      this.disabledButton = true\n    },\n    onClickForkHandler() {\n      this.$emit('handler-fork')\n      this.disabledButton = false\n    },\n    countInputCharacters(label) {\n\n      if (!label) return false;\n\n      const inputValueSplit = [...label]\n      const inputValueLength = inputValueSplit.length\n\n      let newWidth = inputValueLength * 7.5\n      let maxWidth = 289.5\n      let minWidth = 200\n      newWidth = newWidth > 290 ? maxWidth : newWidth\n\n      //Check if the user is typing in the input of the queries or visualizations\n      const { placeholder = [] } = this.$refs.inputText || {};\n\n      //In the Visualizations view, we've more space, so we take advantage of it by increasing the input name width.\n      if (this.$route.name === 'Visualization') {\n        maxWidth = maxWidth * 1.4\n        minWidth = minWidth * 1.4\n      } else if (placeholder) {\n        maxWidth = maxWidth * 1.2\n        minWidth = minWidth * 1.2\n      }\n\n      if (inputValueLength > 25 && inputValueLength < 50) {\n        this.$nextTick(() => this.$refs.inputText.style.width = `${newWidth}px`);\n      } else if (inputValueLength >= 50) {\n        this.$nextTick(() => this.$refs.inputText.style.width = `${maxWidth}px`);\n      } else {\n        this.$nextTick(() => this.$refs.inputText.style.width = `${minWidth}px`);\n      }\n    },\n    enabledInputHandler() {\n      this.$emit('enabled-input')\n    },\n    showChart() {\n      this.$emit('show-toggle-config')\n    },\n    revertViz() {\n      this.$emit('handler-revert-viz')\n      this.disabledButton = true\n    }\n  }\n}\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gobierto-data-sql-editor-container-save\"},[(_vm.handlerInputQuery)?[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.labelValue),expression:\"labelValue\"}],ref:\"inputText\",staticClass:\"gobierto-data-sql-editor-container-save-text\",class:{\n        'disable-input-text': _vm.disabledButton,\n        'disable-cursor-pointer': _vm.disabledInputName\n      },attrs:{\"placeholder\":_vm.placeholder,\"type\":\"text\"},domProps:{\"value\":(_vm.labelValue)},on:{\"keydown\":function($event){$event.stopPropagation();return _vm.onKeyDownTextHandler.apply(null, arguments)},\"click\":_vm.enabledInputHandler,\"input\":function($event){if($event.target.composing){ return; }_vm.labelValue=$event.target.value}}})]:_vm._e(),_vm._v(\" \"),(_vm.showPrivateIcon && _vm.isUserLogged)?[_c('PrivateIcon',{style:({ paddingRight: '.5em', margin: 0 }),attrs:{\"is-closed\":_vm.isPrivate}}),_vm._v(\" \"),(_vm.showLabelPrivate)?_c('div',{staticClass:\"gobierto-data-sql-editor-container-save-label\"},[_c('input',{staticClass:\"gobierto-data-sql-editor-container-save-label-input\",attrs:{\"id\":_vm.labelPrivate,\"type\":\"checkbox\"},domProps:{\"checked\":_vm.isPrivate},on:{\"input\":_vm.onInputCheckboxHandler}}),_vm._v(\" \"),_c('label',{staticClass:\"gobierto-data-sql-editor-container-save-label-text\",attrs:{\"for\":_vm.labelPrivate}},[_vm._v(\"\\n        \"+_vm._s(_vm.labelPrivate)+\"\\n      \")])]):_vm._e()]:_vm._e(),_vm._v(\" \"),(_vm.showSaveButton)?_c('Button',{staticClass:\"btn-sql-editor\",attrs:{\"text\":_vm.labelSave,\"icon\":\"save\",\"background\":\"#fff\"},nativeOn:{\"click\":function($event){return _vm.onClickSaveHandler.apply(null, arguments)}}}):_vm._e(),_vm._v(\" \"),(_vm.showForkButton)?_c('Button',{staticClass:\"btn-sql-editor\",attrs:{\"text\":_vm.labelFork,\"title\":_vm.labelButtonFork,\"icon\":\"code-branch\",\"background\":\"#fff\"},nativeOn:{\"click\":function($event){return _vm.onClickForkHandler.apply(null, arguments)}}}):_vm._e(),_vm._v(\" \"),(_vm.showRevertButton)?[_c('Button',{staticClass:\"btn-sql-editor btn-sql-editor-revert\",attrs:{\"text\":_vm.labelRevert,\"icon\":\"undo\",\"background\":\"#fff\"},nativeOn:{\"click\":function($event){return _vm.revertQueryHandler.apply(null, arguments)}}})]:_vm._e(),_vm._v(\" \"),(_vm.showEditButton)?[_c('Button',{staticClass:\"btn-sql-editor btn-sql-revert-query\",attrs:{\"text\":_vm.labelEdit,\"icon\":\"chart-area\",\"background\":\"#fff\"},nativeOn:{\"click\":function($event){return _vm.showChart.apply(null, arguments)}}})]:_vm._e(),_vm._v(\" \"),(_vm.isVizItemModified)?[_c('Button',{staticClass:\"btn-sql-editor btn-sql-revert-query\",attrs:{\"text\":_vm.labelCancel,\"icon\":\"undo\",\"background\":\"#fff\"},nativeOn:{\"click\":function($event){return _vm.revertViz.apply(null, arguments)}}})]:_vm._e(),_vm._v(\" \"),(_vm.isQueryOrVizModified)?[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('div',{staticClass:\"gobierto-data-sql-editor-modified-label-container\"},[_c('span',{staticClass:\"gobierto-data-sql-editor-modified-label\"},[_vm._v(\"\\n          \"+_vm._s(_vm.labelModified)+\"\\n        \")])])])]:_vm._e(),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(_vm.isQueryOrVizSaved)?[_c('div',{staticClass:\"gobierto-data-sql-editor-modified-label-container\"},[_c('span',{staticClass:\"gobierto-data-sql-editor-modified-label\"},[_vm._v(\"\\n          \"+_vm._s(_vm.labelSaved)+\"\\n        \")])])]:_vm._e()],2)],2)}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"SavingDialog.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport SQLEditorCode from './data/SQLEditorCode.vue';\nimport SQLEditorHeader from './data/SQLEditorHeader.vue';\nimport SQLEditorResults from './data/SQLEditorResults.vue';\nimport '../../../lib/sql-theme.css'\n\nconst __vue_script__ = {\n  name: 'DataTab',\n  components: {\n    SQLEditorCode,\n    SQLEditorHeader,\n    SQLEditorResults\n  },\n  props: {\n    privateQueries: {\n      type: Array,\n      default: () => []\n    },\n    recentQueries: {\n      type: Array,\n      default: () => []\n    },\n    objectColumns: {\n      type: Object,\n      default: () => {}\n    },\n    configMap: {\n      type: Object,\n      default: () => {}\n    },\n    publicQueries: {\n      type: Array,\n      default: () => []\n    },\n    arrayFormats: {\n      type: Object,\n      required: true\n    },\n    items: {\n      type: String,\n      default: ''\n    },\n    isQueryRunning: {\n      type: Boolean,\n      default: false\n    },\n    isQueryModified: {\n      type: Boolean,\n      default: false\n    },\n    isVizModified: {\n      type: Boolean,\n      default: false\n    },\n    isQuerySavingPromptVisible: {\n      type: Boolean,\n      default: false\n    },\n    isVizSavingPromptVisible: {\n      type: Boolean,\n      default: false\n    },\n    isForkPromptVisible: {\n      type: Boolean,\n      default: true\n    },\n    queryStored: {\n      type: String,\n      default: null\n    },\n    queryName: {\n      type: String,\n      default: null\n    },\n    queryDuration: {\n      type: Number,\n      default: 0\n    },\n    queryError: {\n      type: String,\n      default: null\n    },\n    enabledQuerySavedButton: {\n      type: Boolean,\n      default: false\n    },\n    enabledVizSavedButton: {\n      type: Boolean,\n      default: false\n    },\n    enabledForkButton: {\n      type: Boolean,\n      default: false\n    },\n    enabledRevertButton: {\n      type: Boolean,\n      default: false\n    },\n    showRevertQuery: {\n      type: Boolean,\n      default: false\n    },\n    showPrivate: {\n      type: Boolean,\n      default: false\n    },\n    isQuerySaved: {\n      type: Boolean,\n      default: false\n    },\n    isVizSaved: {\n      type: Boolean,\n      default: false\n    },\n    tableName: {\n      type: String,\n      default: ''\n    },\n    isUserLogged: {\n      type: Boolean,\n      default: false\n    },\n    queryInputFocus: {\n      type: Boolean,\n      default: false\n    },\n    vizInputFocus: {\n      type: Boolean,\n      default: false\n    },\n    showPrivatePublicIcon: {\n      type: Boolean,\n      default: false\n    },\n    showPrivatePublicIconViz: {\n      type: Boolean,\n      default: false\n    },\n    resetPrivate: {\n      type: Boolean,\n      default: false\n    },\n    vizName: {\n      type: String,\n      default: ''\n    },\n    vizId: {\n      type: Number,\n      default: 0\n    },\n    registrationDisabled: {\n      type: Boolean,\n      default: false\n    }\n  }\n}\n\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gobierto-data-sets-nav--tab-container\"},[_c('div',{staticClass:\"gobierto-data-sql-editor\"},[_c('SQLEditorHeader',{attrs:{\"private-queries\":_vm.privateQueries,\"public-queries\":_vm.publicQueries,\"recent-queries\":_vm.recentQueries,\"is-query-running\":_vm.isQueryRunning,\"is-query-modified\":_vm.isQueryModified,\"is-query-saved\":_vm.isQuerySaved,\"is-fork-prompt-visible\":_vm.isForkPromptVisible,\"is-query-saving-prompt-visible\":_vm.isQuerySavingPromptVisible,\"query-name\":_vm.queryName,\"enabled-fork-button\":_vm.enabledForkButton,\"enabled-revert-button\":_vm.enabledRevertButton,\"enabled-query-saved-button\":_vm.enabledQuerySavedButton,\"show-revert-query\":_vm.showRevertQuery,\"show-private\":_vm.showPrivate,\"is-user-logged\":_vm.isUserLogged,\"query-input-focus\":_vm.queryInputFocus,\"show-private-public-icon\":_vm.showPrivatePublicIcon,\"reset-private\":_vm.resetPrivate,\"registration-disabled\":_vm.registrationDisabled}}),_vm._v(\" \"),_c('SQLEditorCode',{attrs:{\"object-columns\":_vm.objectColumns,\"query-stored\":_vm.queryStored,\"query-duration\":_vm.queryDuration,\"query-error\":_vm.queryError,\"table-name\":_vm.tableName,\"is-user-logged\":_vm.isUserLogged,\"registration-disabled\":_vm.registrationDisabled}}),_vm._v(\" \"),(_vm.items.length)?_c('SQLEditorResults',{attrs:{\"array-formats\":_vm.arrayFormats,\"object-columns\":_vm.objectColumns,\"config-map\":_vm.configMap,\"enabled-viz-saved-button\":_vm.enabledVizSavedButton,\"is-viz-modified\":_vm.isVizModified,\"is-query-saved\":_vm.isQuerySaved,\"is-viz-saved\":_vm.isVizSaved,\"is-viz-saving-prompt-visible\":_vm.isVizSavingPromptVisible,\"items\":_vm.items,\"is-user-logged\":_vm.isUserLogged,\"query-stored\":_vm.queryStored,\"viz-input-focus\":_vm.vizInputFocus,\"viz-name\":_vm.vizName,\"viz-id\":_vm.vizId,\"show-private-public-icon-viz\":_vm.showPrivatePublicIconViz,\"registration-disabled\":_vm.registrationDisabled}}):_vm._e()],1)])}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"DataTab.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport CodeMirror from 'codemirror';\nimport 'codemirror/mode/sql/sql.js';\nimport 'codemirror/addon/selection/active-line.js';\nimport 'codemirror/addon/hint/show-hint.css';\nimport 'codemirror/addon/hint/show-hint.js';\nimport 'codemirror/addon/hint/sql-hint.js';\nimport 'codemirror/src/model/selection_updates.js';\nimport { sqlKeywords } from '../../../../lib/commons.js';\n\nconst __vue_script__ = {\n  name: \"SQLEditorCode\",\n  props: {\n    objectColumns: {\n      type: Object,\n      required: true\n    },\n    queryStored: {\n      type: String,\n      default: \"\"\n    },\n    queryDuration: {\n      type: Number,\n      default: 0\n    },\n    queryError: {\n      type: String,\n      default: null\n    },\n    tableName: {\n      type: String,\n      default: ''\n    },\n    registrationDisabled: {\n      type: Boolean,\n      default: false\n    },\n    isUserLogged: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data() {\n    return {\n      labelGuide: I18n.t(\"gobierto_data.projects.guide\") || \"\",\n      labelQueryExecuted: I18n.t(\"gobierto_data.projects.queryExecuted\") || \"\",\n      labelRecords: I18n.t(\"gobierto_data.projects.records\") || \"\",\n      labelEditor: I18n.t(\"gobierto_data.accessibility.editor\") || \"\",\n      sqlAutocomplete: sqlKeywords,\n      arrayMutated: [],\n      autoCompleteKeys: [],\n      tableNameAutocomplete: []\n    };\n  },\n  computed: {\n    queryDurationParsed() {\n      return this.queryDuration.toLocaleString();\n    }\n  },\n  watch: {\n    queryStored(newValue, oldValue) {\n      if (newValue !== oldValue) {\n        this.setEditorValue(newValue);\n      }\n    }\n  },\n  mounted() {\n    const cmOption = {\n      tabSize: 2,\n      styleActiveLine: false,\n      lineNumbers: false,\n      styleSelectedText: false,\n      line: true,\n      foldGutter: true,\n      mode: \"text/x-sql\",\n      hintOptions: {\n        completeSingle: false,\n        hint: this.hint\n      },\n      showCursorWhenSelecting: true,\n      theme: \"default\",\n      autoIndent: true,\n      extraKeys: {\n        Ctrl: \"autocomplete\"\n      },\n      screenReaderLabel: \"queryEditor\"\n    };\n\n    this.editor = CodeMirror.fromTextArea(this.$refs.queryEditor, cmOption);\n\n    // update the editor content\n    if (this.queryStored) {\n      this.setEditorValue(this.queryStored);\n    }\n\n    // metaKey + keyUp doesn't work with MacOS\n    // https://stackoverflow.com/questions/11818637/why-does-javascript-drop-keyup-events-when-the-metakey-is-pressed-on-mac-browser\n    this.editor.on(\"keydown\", this.onKeyDown);\n    // This event detects any changes in the editor\n    this.editor.on(\"change\", this.onChange);\n    // We need this event to enable autocomplete(hint)\n    this.editor.on(\"keyup\", this.onKeyUp);\n  },\n  methods: {\n    onKeyUp(editor, e) {\n      const {\n        state: {\n          completionActive: isEditorActive\n        }\n      } = editor\n\n      // Show autocomplete only when a letter key is pressed\n      if (!isEditorActive && e.keyCode > 64 && e.keyCode < 91) {\n        editor.showHint({ completeSingle: false })\n      }\n\n      // Enabled saved and fork button while typping on editor\n      if (!this.registrationDisabled || this.isUserLogged) {\n        this.$root.$emit('disabledStringSavedQuery', false)\n        this.$root.$emit('enableSavedButton')\n        this.$root.$emit('enabledForkPrompt')\n        this.$root.$emit('enabledRevertButton')\n        this.$root.$emit(\"isQuerySavingPromptVisible\", true);\n      }\n    },\n    onChange(editor) {\n      this.mergeTables();\n      const value = editor.getValue();\n      this.$root.$emit(\"setCurrentQuery\", value);\n    },\n    onKeyDown(editor, e) {\n      this.mergeTables();\n      // keyUp event to stop \"c|r\" open modals, but allow ctrl+enter (or cmd+enter) to run query\n      if (!((e.keyCode == 10 || e.keyCode == 13) && (e.ctrlKey || e.metaKey))) {\n        e.stopPropagation();\n      }\n    },\n    mergeTables() {\n      const sizeObjectColumns = Object.keys(this.objectColumns);\n\n      for (let i = 0; i < sizeObjectColumns.length; i++) {\n        this.arrayMutated[i] = {\n          className: \"table\",\n          text: sizeObjectColumns[i]\n        };\n      }\n      this.autoCompleteKeys = [\n        ...this.arrayMutated,\n        ...this.sqlAutocomplete,\n        {\n          className: \"dataset\",\n          text: this.tableName\n      }];\n    },\n    setEditorValue(newCode) {\n      const pos = this.editor.getCursor();\n      this.editor.setValue(newCode);\n      this.editor.setCursor(pos);\n    },\n    suggest(searchString) {\n      let token = searchString;\n      if (searchString.startsWith(\".\")) token = searchString.substring(1);\n      else token = searchString.toLowerCase();\n      let resu = [];\n      let N = this.autoCompleteKeys.length;\n\n      for (let i = 0; i < N; i++) {\n        let keyword = this.autoCompleteKeys[i].text.toLowerCase();\n        let suggestion = null;\n        if (keyword.startsWith(token)) {\n          suggestion = Object.assign(\n            { score: N + (N - i) },\n            this.autoCompleteKeys[i]\n          );\n        } else if (keyword.includes(token)) {\n          suggestion = Object.assign(\n            { score: N - i },\n            this.autoCompleteKeys[i]\n          );\n        }\n        if (suggestion) resu.push(suggestion);\n      }\n\n      if (searchString.startsWith(\".\")) {\n        resu.forEach(s => {\n          if (s.className === \"table\") {\n            s.score += N;\n            s.text = `.${s.text}`\n          } else if (s.className === \"sql\") {\n            s.score -= N;\n          }\n          return s;\n        });\n      }\n\n      return resu.sort((a, b) => b.score - a.score);\n    },\n    hint(editor) {\n      const cur = editor.getCursor();\n      const token = editor.getTokenAt(cur);\n      const searchString = token.string;\n\n      return {\n        list: this.suggest(searchString),\n        from: CodeMirror.Pos(cur.line, token.start),\n        to: CodeMirror.Pos(cur.line, token.end)\n      };\n    }\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('label',{staticClass:\"helper-screenreader\",attrs:{\"for\":\"queryEditor\"}},[_vm._v(_vm._s(_vm.labelEditor))]),_vm._v(\" \"),_c('textarea',{ref:\"queryEditor\",attrs:{\"id\":\"queryEditor\"}}),_vm._v(\" \"),_c('div',{staticClass:\"gobierto-data-sql-editor-footer\"},[(_vm.queryError)?[_c('span',{staticClass:\"gobierto-data-sql-error-message\"},[_vm._v(\"\\n        \"+_vm._s(_vm.queryError)+\"\\n      \")])]:[_c('span',{staticClass:\"gobierto-data-sql-editor-footer-time\"},[_vm._v(\"\\n        \"+_vm._s(_vm.labelQueryExecuted)+\" \"+_vm._s(_vm.queryDurationParsed)+\"ms\\n      \")])]],2),_vm._v(\" \"),_c('a',{staticClass:\"gobierto-data-sql-editor-footer-guide\",attrs:{\"href\":\"\"}},[_vm._v(\"\\n    \"+_vm._s(_vm.labelGuide)+\"\\n  \")])])}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"SQLEditorCode.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "import { signalLater } from \"../util/operation_group.js\"\nimport { ensureCursorVisible } from \"../display/scrolling.js\"\nimport { clipPos, cmp, Pos } from \"../line/pos.js\"\nimport { getLine } from \"../line/utils_line.js\"\nimport { hasHandler, signal, signalCursorActivity } from \"../util/event.js\"\nimport { lst, sel_dontScroll } from \"../util/misc.js\"\n\nimport { addSelectionToHistory } from \"./history.js\"\nimport { normalizeSelection, Range, Selection, simpleSelection } from \"./selection.js\"\n\n// The 'scroll' parameter given to many of these indicated whether\n// the new cursor position should be scrolled into view after\n// modifying the selection.\n\n// If shift is held or the extend flag is set, extends a range to\n// include a given position (and optionally a second position).\n// Otherwise, simply returns the range between the given positions.\n// Used for cursor motion and such.\nexport function extendRange(range, head, other, extend) {\n  if (extend) {\n    let anchor = range.anchor\n    if (other) {\n      let posBefore = cmp(head, anchor) < 0\n      if (posBefore != (cmp(other, anchor) < 0)) {\n        anchor = head\n        head = other\n      } else if (posBefore != (cmp(head, other) < 0)) {\n        head = other\n      }\n    }\n    return new Range(anchor, head)\n  } else {\n    return new Range(other || head, head)\n  }\n}\n\n// Extend the primary selection range, discard the rest.\nexport function extendSelection(doc, head, other, options, extend) {\n  if (extend == null) extend = doc.cm && (doc.cm.display.shift || doc.extend)\n  setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options)\n}\n\n// Extend all selections (pos is an array of selections with length\n// equal the number of selections)\nexport function extendSelections(doc, heads, options) {\n  let out = []\n  let extend = doc.cm && (doc.cm.display.shift || doc.extend)\n  for (let i = 0; i < doc.sel.ranges.length; i++)\n    out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend)\n  let newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex)\n  setSelection(doc, newSel, options)\n}\n\n// Updates a single range in the selection.\nexport function replaceOneSelection(doc, i, range, options) {\n  let ranges = doc.sel.ranges.slice(0)\n  ranges[i] = range\n  setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options)\n}\n\n// Reset the selection to a single range.\nexport function setSimpleSelection(doc, anchor, head, options) {\n  setSelection(doc, simpleSelection(anchor, head), options)\n}\n\n// Give beforeSelectionChange handlers a change to influence a\n// selection update.\nfunction filterSelectionChange(doc, sel, options) {\n  let obj = {\n    ranges: sel.ranges,\n    update: function(ranges) {\n      this.ranges = []\n      for (let i = 0; i < ranges.length; i++)\n        this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n                                   clipPos(doc, ranges[i].head))\n    },\n    origin: options && options.origin\n  }\n  signal(doc, \"beforeSelectionChange\", doc, obj)\n  if (doc.cm) signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj)\n  if (obj.ranges != sel.ranges) return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1)\n  else return sel\n}\n\nexport function setSelectionReplaceHistory(doc, sel, options) {\n  let done = doc.history.done, last = lst(done)\n  if (last && last.ranges) {\n    done[done.length - 1] = sel\n    setSelectionNoUndo(doc, sel, options)\n  } else {\n    setSelection(doc, sel, options)\n  }\n}\n\n// Set a new selection.\nexport function setSelection(doc, sel, options) {\n  setSelectionNoUndo(doc, sel, options)\n  addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options)\n}\n\nexport function setSelectionNoUndo(doc, sel, options) {\n  if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n    sel = filterSelectionChange(doc, sel, options)\n\n  let bias = options && options.bias ||\n    (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1)\n  setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true))\n\n  if (!(options && options.scroll === false) && doc.cm)\n    ensureCursorVisible(doc.cm)\n}\n\nfunction setSelectionInner(doc, sel) {\n  if (sel.equals(doc.sel)) return\n\n  doc.sel = sel\n\n  if (doc.cm) {\n    doc.cm.curOp.updateInput = 1\n    doc.cm.curOp.selectionChanged = true\n    signalCursorActivity(doc.cm)\n  }\n  signalLater(doc, \"cursorActivity\", doc)\n}\n\n// Verify that the selection does not partially select any atomic\n// marked ranges.\nexport function reCheckSelection(doc) {\n  setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false))\n}\n\n// Return a selection that does not partially select any atomic\n// ranges.\nfunction skipAtomicInSelection(doc, sel, bias, mayClear) {\n  let out\n  for (let i = 0; i < sel.ranges.length; i++) {\n    let range = sel.ranges[i]\n    let old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i]\n    let newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear)\n    let newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear)\n    if (out || newAnchor != range.anchor || newHead != range.head) {\n      if (!out) out = sel.ranges.slice(0, i)\n      out[i] = new Range(newAnchor, newHead)\n    }\n  }\n  return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel\n}\n\nfunction skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n  let line = getLine(doc, pos.line)\n  if (line.markedSpans) for (let i = 0; i < line.markedSpans.length; ++i) {\n    let sp = line.markedSpans[i], m = sp.marker\n\n    // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n    // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n    // is with selectLeft/Right\n    let preventCursorLeft = (\"selectLeft\" in m) ? !m.selectLeft : m.inclusiveLeft\n    let preventCursorRight = (\"selectRight\" in m) ? !m.selectRight : m.inclusiveRight\n\n    if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n        (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n      if (mayClear) {\n        signal(m, \"beforeCursorEnter\")\n        if (m.explicitlyCleared) {\n          if (!line.markedSpans) break\n          else {--i; continue}\n        }\n      }\n      if (!m.atomic) continue\n\n      if (oldPos) {\n        let near = m.find(dir < 0 ? 1 : -1), diff\n        if (dir < 0 ? preventCursorRight : preventCursorLeft)\n          near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null)\n        if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n          return skipAtomicInner(doc, near, pos, dir, mayClear)\n      }\n\n      let far = m.find(dir < 0 ? -1 : 1)\n      if (dir < 0 ? preventCursorLeft : preventCursorRight)\n        far = movePos(doc, far, dir, far.line == pos.line ? line : null)\n      return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n    }\n  }\n  return pos\n}\n\n// Ensure a given position is not inside an atomic range.\nexport function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n  let dir = bias || 1\n  let found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n      (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n      skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n      (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true))\n  if (!found) {\n    doc.cantEdit = true\n    return Pos(doc.first, 0)\n  }\n  return found\n}\n\nfunction movePos(doc, pos, dir, line) {\n  if (dir < 0 && pos.ch == 0) {\n    if (pos.line > doc.first) return clipPos(doc, Pos(pos.line - 1))\n    else return null\n  } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n    if (pos.line < doc.first + doc.size - 1) return Pos(pos.line + 1, 0)\n    else return null\n  } else {\n    return new Pos(pos.line, pos.ch + dir)\n  }\n}\n\nexport function selectAll(cm) {\n  cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll)\n}\n", "import { getHandlers } from \"./event.js\"\n\nlet operationGroup = null\n\nexport function pushOperation(op) {\n  if (operationGroup) {\n    operationGroup.ops.push(op)\n  } else {\n    op.ownsGroup = operationGroup = {\n      ops: [op],\n      delayedCallbacks: []\n    }\n  }\n}\n\nfunction fireCallbacksForOps(group) {\n  // Calls delayed callbacks and cursorActivity handlers until no\n  // new ones appear\n  let callbacks = group.delayedCallbacks, i = 0\n  do {\n    for (; i < callbacks.length; i++)\n      callbacks[i].call(null)\n    for (let j = 0; j < group.ops.length; j++) {\n      let op = group.ops[j]\n      if (op.cursorActivityHandlers)\n        while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n          op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm)\n    }\n  } while (i < callbacks.length)\n}\n\nexport function finishOperation(op, endCb) {\n  let group = op.ownsGroup\n  if (!group) return\n\n  try { fireCallbacksForOps(group) }\n  finally {\n    operationGroup = null\n    endCb(group)\n  }\n}\n\nlet orphanDelayedCallbacks = null\n\n// Often, we want to signal events at a point where we are in the\n// middle of some work, but don't want the handler to start calling\n// other methods on the editor, which might be in an inconsistent\n// state or simply not expect any other events to happen.\n// signalLater looks whether there are any handlers, and schedules\n// them to be executed when the last operation ends, or, if no\n// operation is active, when a timeout fires.\nexport function signalLater(emitter, type /*, values...*/) {\n  let arr = getHandlers(emitter, type)\n  if (!arr.length) return\n  let args = Array.prototype.slice.call(arguments, 2), list\n  if (operationGroup) {\n    list = operationGroup.delayedCallbacks\n  } else if (orphanDelayedCallbacks) {\n    list = orphanDelayedCallbacks\n  } else {\n    list = orphanDelayedCallbacks = []\n    setTimeout(fireOrphanDelayed, 0)\n  }\n  for (let i = 0; i < arr.length; ++i)\n    list.push(() => arr[i].apply(null, args))\n}\n\nfunction fireOrphanDelayed() {\n  let delayed = orphanDelayedCallbacks\n  orphanDelayedCallbacks = null\n  for (let i = 0; i < delayed.length; ++i) delayed[i]()\n}\n", "import { mac } from \"./browser.js\"\nimport { indexOf } from \"./misc.js\"\n\n// EVENT HANDLING\n\n// Lightweight event framework. on/off also work on DOM nodes,\n// registering native DOM handlers.\n\nconst noHandlers = []\n\nexport let on = function(emitter, type, f) {\n  if (emitter.addEventListener) {\n    emitter.addEventListener(type, f, false)\n  } else if (emitter.attachEvent) {\n    emitter.attachEvent(\"on\" + type, f)\n  } else {\n    let map = emitter._handlers || (emitter._handlers = {})\n    map[type] = (map[type] || noHandlers).concat(f)\n  }\n}\n\nexport function getHandlers(emitter, type) {\n  return emitter._handlers && emitter._handlers[type] || noHandlers\n}\n\nexport function off(emitter, type, f) {\n  if (emitter.removeEventListener) {\n    emitter.removeEventListener(type, f, false)\n  } else if (emitter.detachEvent) {\n    emitter.detachEvent(\"on\" + type, f)\n  } else {\n    let map = emitter._handlers, arr = map && map[type]\n    if (arr) {\n      let index = indexOf(arr, f)\n      if (index > -1)\n        map[type] = arr.slice(0, index).concat(arr.slice(index + 1))\n    }\n  }\n}\n\nexport function signal(emitter, type /*, values...*/) {\n  let handlers = getHandlers(emitter, type)\n  if (!handlers.length) return\n  let args = Array.prototype.slice.call(arguments, 2)\n  for (let i = 0; i < handlers.length; ++i) handlers[i].apply(null, args)\n}\n\n// The DOM events that CodeMirror handles can be overridden by\n// registering a (non-DOM) handler on the editor for the event name,\n// and preventDefault-ing the event in that handler.\nexport function signalDOMEvent(cm, e, override) {\n  if (typeof e == \"string\")\n    e = {type: e, preventDefault: function() { this.defaultPrevented = true }}\n  signal(cm, override || e.type, cm, e)\n  return e_defaultPrevented(e) || e.codemirrorIgnore\n}\n\nexport function signalCursorActivity(cm) {\n  let arr = cm._handlers && cm._handlers.cursorActivity\n  if (!arr) return\n  let set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = [])\n  for (let i = 0; i < arr.length; ++i) if (indexOf(set, arr[i]) == -1)\n    set.push(arr[i])\n}\n\nexport function hasHandler(emitter, type) {\n  return getHandlers(emitter, type).length > 0\n}\n\n// Add on and off methods to a constructor's prototype, to make\n// registering events on such objects more convenient.\nexport function eventMixin(ctor) {\n  ctor.prototype.on = function(type, f) {on(this, type, f)}\n  ctor.prototype.off = function(type, f) {off(this, type, f)}\n}\n\n// Due to the fact that we still support jurassic IE versions, some\n// compatibility wrappers are needed.\n\nexport function e_preventDefault(e) {\n  if (e.preventDefault) e.preventDefault()\n  else e.returnValue = false\n}\nexport function e_stopPropagation(e) {\n  if (e.stopPropagation) e.stopPropagation()\n  else e.cancelBubble = true\n}\nexport function e_defaultPrevented(e) {\n  return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n}\nexport function e_stop(e) {e_preventDefault(e); e_stopPropagation(e)}\n\nexport function e_target(e) {return e.target || e.srcElement}\nexport function e_button(e) {\n  let b = e.which\n  if (b == null) {\n    if (e.button & 1) b = 1\n    else if (e.button & 2) b = 3\n    else if (e.button & 4) b = 2\n  }\n  if (mac && e.ctrlKey && b == 1) b = 3\n  return b\n}\n", "// Kludges for bugs and behavior differences that can't be feature\n// detected are enabled based on userAgent etc sniffing.\nlet userAgent = navigator.userAgent\nlet platform = navigator.platform\n\nexport let gecko = /gecko\\/\\d/i.test(userAgent)\nlet ie_upto10 = /MSIE \\d/.test(userAgent)\nlet ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent)\nlet edge = /Edge\\/(\\d+)/.exec(userAgent)\nexport let ie = ie_upto10 || ie_11up || edge\nexport let ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1])\nexport let webkit = !edge && /WebKit\\//.test(userAgent)\nlet qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent)\nexport let chrome = !edge && /Chrome\\//.test(userAgent)\nexport let presto = /Opera\\//.test(userAgent)\nexport let safari = /Apple Computer/.test(navigator.vendor)\nexport let mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent)\nexport let phantom = /PhantomJS/.test(userAgent)\n\nexport let ios = !edge && /AppleWebKit/.test(userAgent) && /Mobile\\/\\w+/.test(userAgent)\nexport let android = /Android/.test(userAgent)\n// This is woefully incomplete. Suggestions for alternative methods welcome.\nexport let mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent)\nexport let mac = ios || /Mac/.test(platform)\nexport let chromeOS = /\\bCrOS\\b/.test(userAgent)\nexport let windows = /win/i.test(platform)\n\nlet presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/)\nif (presto_version) presto_version = Number(presto_version[1])\nif (presto_version && presto_version >= 15) { presto = false; webkit = true }\n// Some browsers use the wrong event properties to signal cmd/ctrl on OS X\nexport let flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11))\nexport let captureRightClick = gecko || (ie && ie_version >= 9)\n", "export function bind(f) {\n  let args = Array.prototype.slice.call(arguments, 1)\n  return function(){return f.apply(null, args)}\n}\n\nexport function copyObj(obj, target, overwrite) {\n  if (!target) target = {}\n  for (let prop in obj)\n    if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n      target[prop] = obj[prop]\n  return target\n}\n\n// Counts the column offset in a string, taking tabs into account.\n// Used mostly to find indentation.\nexport function countColumn(string, end, tabSize, startIndex, startValue) {\n  if (end == null) {\n    end = string.search(/[^\\s\\u00a0]/)\n    if (end == -1) end = string.length\n  }\n  for (let i = startIndex || 0, n = startValue || 0;;) {\n    let nextTab = string.indexOf(\"\\t\", i)\n    if (nextTab < 0 || nextTab >= end)\n      return n + (end - i)\n    n += nextTab - i\n    n += tabSize - (n % tabSize)\n    i = nextTab + 1\n  }\n}\n\nexport class Delayed {\n  constructor() {\n    this.id = null\n    this.f = null\n    this.time = 0\n    this.handler = bind(this.onTimeout, this)\n  }\n  onTimeout(self) {\n    self.id = 0\n    if (self.time <= +new Date) {\n      self.f()\n    } else {\n      setTimeout(self.handler, self.time - +new Date)\n    }\n  }\n  set(ms, f) {\n    this.f = f\n    const time = +new Date + ms\n    if (!this.id || time < this.time) {\n      clearTimeout(this.id)\n      this.id = setTimeout(this.handler, ms)\n      this.time = time\n    }\n  }\n}\n\nexport function indexOf(array, elt) {\n  for (let i = 0; i < array.length; ++i)\n    if (array[i] == elt) return i\n  return -1\n}\n\n// Number of pixels added to scroller and sizer to hide scrollbar\nexport let scrollerGap = 50\n\n// Returned or thrown by various protocols to signal 'I'm not\n// handling this'.\nexport let Pass = {toString: function(){return \"CodeMirror.Pass\"}}\n\n// Reused option objects for setSelection & friends\nexport let sel_dontScroll = {scroll: false}, sel_mouse = {origin: \"*mouse\"}, sel_move = {origin: \"+move\"}\n\n// The inverse of countColumn -- find the offset that corresponds to\n// a particular column.\nexport function findColumn(string, goal, tabSize) {\n  for (let pos = 0, col = 0;;) {\n    let nextTab = string.indexOf(\"\\t\", pos)\n    if (nextTab == -1) nextTab = string.length\n    let skipped = nextTab - pos\n    if (nextTab == string.length || col + skipped >= goal)\n      return pos + Math.min(skipped, goal - col)\n    col += nextTab - pos\n    col += tabSize - (col % tabSize)\n    pos = nextTab + 1\n    if (col >= goal) return pos\n  }\n}\n\nlet spaceStrs = [\"\"]\nexport function spaceStr(n) {\n  while (spaceStrs.length <= n)\n    spaceStrs.push(lst(spaceStrs) + \" \")\n  return spaceStrs[n]\n}\n\nexport function lst(arr) { return arr[arr.length-1] }\n\nexport function map(array, f) {\n  let out = []\n  for (let i = 0; i < array.length; i++) out[i] = f(array[i], i)\n  return out\n}\n\nexport function insertSorted(array, value, score) {\n  let pos = 0, priority = score(value)\n  while (pos < array.length && score(array[pos]) <= priority) pos++\n  array.splice(pos, 0, value)\n}\n\nfunction nothing() {}\n\nexport function createObj(base, props) {\n  let inst\n  if (Object.create) {\n    inst = Object.create(base)\n  } else {\n    nothing.prototype = base\n    inst = new nothing()\n  }\n  if (props) copyObj(props, inst)\n  return inst\n}\n\nlet nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/\nexport function isWordCharBasic(ch) {\n  return /\\w/.test(ch) || ch > \"\\x80\" &&\n    (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n}\nexport function isWordChar(ch, helper) {\n  if (!helper) return isWordCharBasic(ch)\n  if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) return true\n  return helper.test(ch)\n}\n\nexport function isEmpty(obj) {\n  for (let n in obj) if (obj.hasOwnProperty(n) && obj[n]) return false\n  return true\n}\n\n// Extending unicode characters. A series of a non-extending char +\n// any number of extending chars is treated as a single unit as far\n// as editing and measuring is concerned. This is not fully correct,\n// since some scripts/fonts/browsers also treat other configurations\n// of code points as a group.\nlet extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/\nexport function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n// Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\nexport function skipExtendingChars(str, pos, dir) {\n  while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) pos += dir\n  return pos\n}\n\n// Returns the value from the range [`from`; `to`] that satisfies\n// `pred` and is closest to `from`. Assumes that at least `to`\n// satisfies `pred`. Supports `from` being greater than `to`.\nexport function findFirst(pred, from, to) {\n  // At any point we are certain `to` satisfies `pred`, don't know\n  // whether `from` does.\n  let dir = from > to ? -1 : 1\n  for (;;) {\n    if (from == to) return from\n    let midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF)\n    if (mid == from) return pred(mid) ? from : to\n    if (pred(mid)) to = mid\n    else from = mid + dir\n  }\n}\n", "import { Pos } from \"../line/pos.js\"\nimport { cursorCoords, displayHeight, displayWidth, estimateCoords, paddingTop, paddingVert, scrollGap, textHeight } from \"../measurement/position_measurement.js\"\nimport { gecko, phantom } from \"../util/browser.js\"\nimport { elt } from \"../util/dom.js\"\nimport { signalDOMEvent } from \"../util/event.js\"\n\nimport { startWorker } from \"./highlight_worker.js\"\nimport { alignHorizontally } from \"./line_numbers.js\"\nimport { updateDisplaySimple } from \"./update_display.js\"\n\n// SCROLLING THINGS INTO VIEW\n\n// If an editor sits on the top or bottom of the window, partially\n// scrolled out of view, this ensures that the cursor is visible.\nexport function maybeScrollWindow(cm, rect) {\n  if (signalDOMEvent(cm, \"scrollCursorIntoView\")) return\n\n  let display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null\n  if (rect.top + box.top < 0) doScroll = true\n  else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) doScroll = false\n  if (doScroll != null && !phantom) {\n    let scrollNode = elt(\"div\", \"\\u200b\", null, `position: absolute;\n                         top: ${rect.top - display.viewOffset - paddingTop(cm.display)}px;\n                         height: ${rect.bottom - rect.top + scrollGap(cm) + display.barHeight}px;\n                         left: ${rect.left}px; width: ${Math.max(2, rect.right - rect.left)}px;`)\n    cm.display.lineSpace.appendChild(scrollNode)\n    scrollNode.scrollIntoView(doScroll)\n    cm.display.lineSpace.removeChild(scrollNode)\n  }\n}\n\n// Scroll a given position into view (immediately), verifying that\n// it actually became visible (as line heights are accurately\n// measured, the position of something may 'drift' during drawing).\nexport function scrollPosIntoView(cm, pos, end, margin) {\n  if (margin == null) margin = 0\n  let rect\n  if (!cm.options.lineWrapping && pos == end) {\n    // Set pos and end to the cursor positions around the character pos sticks to\n    // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n    // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n    pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos\n    end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos\n  }\n  for (let limit = 0; limit < 5; limit++) {\n    let changed = false\n    let coords = cursorCoords(cm, pos)\n    let endCoords = !end || end == pos ? coords : cursorCoords(cm, end)\n    rect = {left: Math.min(coords.left, endCoords.left),\n            top: Math.min(coords.top, endCoords.top) - margin,\n            right: Math.max(coords.left, endCoords.left),\n            bottom: Math.max(coords.bottom, endCoords.bottom) + margin}\n    let scrollPos = calculateScrollPos(cm, rect)\n    let startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft\n    if (scrollPos.scrollTop != null) {\n      updateScrollTop(cm, scrollPos.scrollTop)\n      if (Math.abs(cm.doc.scrollTop - startTop) > 1) changed = true\n    }\n    if (scrollPos.scrollLeft != null) {\n      setScrollLeft(cm, scrollPos.scrollLeft)\n      if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) changed = true\n    }\n    if (!changed) break\n  }\n  return rect\n}\n\n// Scroll a given set of coordinates into view (immediately).\nexport function scrollIntoView(cm, rect) {\n  let scrollPos = calculateScrollPos(cm, rect)\n  if (scrollPos.scrollTop != null) updateScrollTop(cm, scrollPos.scrollTop)\n  if (scrollPos.scrollLeft != null) setScrollLeft(cm, scrollPos.scrollLeft)\n}\n\n// Calculate a new scroll position needed to scroll the given\n// rectangle into view. Returns an object with scrollTop and\n// scrollLeft properties. When these are undefined, the\n// vertical/horizontal position does not need to be adjusted.\nfunction calculateScrollPos(cm, rect) {\n  let display = cm.display, snapMargin = textHeight(cm.display)\n  if (rect.top < 0) rect.top = 0\n  let screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop\n  let screen = displayHeight(cm), result = {}\n  if (rect.bottom - rect.top > screen) rect.bottom = rect.top + screen\n  let docBottom = cm.doc.height + paddingVert(display)\n  let atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin\n  if (rect.top < screentop) {\n    result.scrollTop = atTop ? 0 : rect.top\n  } else if (rect.bottom > screentop + screen) {\n    let newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen)\n    if (newTop != screentop) result.scrollTop = newTop\n  }\n\n  let gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth\n  let screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace\n  let screenw = displayWidth(cm) - display.gutters.offsetWidth\n  let tooWide = rect.right - rect.left > screenw\n  if (tooWide) rect.right = rect.left + screenw\n  if (rect.left < 10)\n    result.scrollLeft = 0\n  else if (rect.left < screenleft)\n    result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10))\n  else if (rect.right > screenw + screenleft - 3)\n    result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw\n  return result\n}\n\n// Store a relative adjustment to the scroll position in the current\n// operation (to be applied when the operation finishes).\nexport function addToScrollTop(cm, top) {\n  if (top == null) return\n  resolveScrollToPos(cm)\n  cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top\n}\n\n// Make sure that at the end of the operation the current cursor is\n// shown.\nexport function ensureCursorVisible(cm) {\n  resolveScrollToPos(cm)\n  let cur = cm.getCursor()\n  cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin}\n}\n\nexport function scrollToCoords(cm, x, y) {\n  if (x != null || y != null) resolveScrollToPos(cm)\n  if (x != null) cm.curOp.scrollLeft = x\n  if (y != null) cm.curOp.scrollTop = y\n}\n\nexport function scrollToRange(cm, range) {\n  resolveScrollToPos(cm)\n  cm.curOp.scrollToPos = range\n}\n\n// When an operation has its scrollToPos property set, and another\n// scroll action is applied before the end of the operation, this\n// 'simulates' scrolling that position into view in a cheap way, so\n// that the effect of intermediate scroll commands is not ignored.\nfunction resolveScrollToPos(cm) {\n  let range = cm.curOp.scrollToPos\n  if (range) {\n    cm.curOp.scrollToPos = null\n    let from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to)\n    scrollToCoordsRange(cm, from, to, range.margin)\n  }\n}\n\nexport function scrollToCoordsRange(cm, from, to, margin) {\n  let sPos = calculateScrollPos(cm, {\n    left: Math.min(from.left, to.left),\n    top: Math.min(from.top, to.top) - margin,\n    right: Math.max(from.right, to.right),\n    bottom: Math.max(from.bottom, to.bottom) + margin\n  })\n  scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop)\n}\n\n// Sync the scrollable area and scrollbars, ensure the viewport\n// covers the visible area.\nexport function updateScrollTop(cm, val) {\n  if (Math.abs(cm.doc.scrollTop - val) < 2) return\n  if (!gecko) updateDisplaySimple(cm, {top: val})\n  setScrollTop(cm, val, true)\n  if (gecko) updateDisplaySimple(cm)\n  startWorker(cm, 100)\n}\n\nexport function setScrollTop(cm, val, forceScroll) {\n  val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val))\n  if (cm.display.scroller.scrollTop == val && !forceScroll) return\n  cm.doc.scrollTop = val\n  cm.display.scrollbars.setScrollTop(val)\n  if (cm.display.scroller.scrollTop != val) cm.display.scroller.scrollTop = val\n}\n\n// Sync scroller and scrollbar, ensure the gutter elements are\n// aligned.\nexport function setScrollLeft(cm, val, isScroller, forceScroll) {\n  val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth))\n  if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) return\n  cm.doc.scrollLeft = val\n  alignHorizontally(cm)\n  if (cm.display.scroller.scrollLeft != val) cm.display.scroller.scrollLeft = val\n  cm.display.scrollbars.setScrollLeft(val)\n}\n", "import { getLine } from \"./utils_line.js\"\n\n// A Pos instance represents a position within the text.\nexport function Pos(line, ch, sticky = null) {\n  if (!(this instanceof Pos)) return new Pos(line, ch, sticky)\n  this.line = line\n  this.ch = ch\n  this.sticky = sticky\n}\n\n// Compare two positions, return 0 if they are the same, a negative\n// number when a is less, and a positive number otherwise.\nexport function cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\nexport function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\nexport function copyPos(x) {return Pos(x.line, x.ch)}\nexport function maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\nexport function minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n// Most of the external API clips given positions to make sure they\n// actually exist within the document.\nexport function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\nexport function clipPos(doc, pos) {\n  if (pos.line < doc.first) return Pos(doc.first, 0)\n  let last = doc.first + doc.size - 1\n  if (pos.line > last) return Pos(last, getLine(doc, last).text.length)\n  return clipToLen(pos, getLine(doc, pos.line).text.length)\n}\nfunction clipToLen(pos, linelen) {\n  let ch = pos.ch\n  if (ch == null || ch > linelen) return Pos(pos.line, linelen)\n  else if (ch < 0) return Pos(pos.line, 0)\n  else return pos\n}\nexport function clipPosArray(doc, array) {\n  let out = []\n  for (let i = 0; i < array.length; i++) out[i] = clipPos(doc, array[i])\n  return out\n}\n", "import { indexOf } from \"../util/misc.js\"\n\n// Find the line object corresponding to the given line number.\nexport function getLine(doc, n) {\n  n -= doc.first\n  if (n < 0 || n >= doc.size) throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\")\n  let chunk = doc\n  while (!chunk.lines) {\n    for (let i = 0;; ++i) {\n      let child = chunk.children[i], sz = child.chunkSize()\n      if (n < sz) { chunk = child; break }\n      n -= sz\n    }\n  }\n  return chunk.lines[n]\n}\n\n// Get the part of a document between two positions, as an array of\n// strings.\nexport function getBetween(doc, start, end) {\n  let out = [], n = start.line\n  doc.iter(start.line, end.line + 1, line => {\n    let text = line.text\n    if (n == end.line) text = text.slice(0, end.ch)\n    if (n == start.line) text = text.slice(start.ch)\n    out.push(text)\n    ++n\n  })\n  return out\n}\n// Get the lines between from and to, as array of strings.\nexport function getLines(doc, from, to) {\n  let out = []\n  doc.iter(from, to, line => { out.push(line.text) }) // iter aborts when callback returns truthy value\n  return out\n}\n\n// Update the height of a line, propagating the height change\n// upwards to parent nodes.\nexport function updateLineHeight(line, height) {\n  let diff = height - line.height\n  if (diff) for (let n = line; n; n = n.parent) n.height += diff\n}\n\n// Given a line object, find its line number by walking up through\n// its parent links.\nexport function lineNo(line) {\n  if (line.parent == null) return null\n  let cur = line.parent, no = indexOf(cur.lines, line)\n  for (let chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n    for (let i = 0;; ++i) {\n      if (chunk.children[i] == cur) break\n      no += chunk.children[i].chunkSize()\n    }\n  }\n  return no + cur.first\n}\n\n// Find the line at the given vertical position, using the height\n// information in the document tree.\nexport function lineAtHeight(chunk, h) {\n  let n = chunk.first\n  outer: do {\n    for (let i = 0; i < chunk.children.length; ++i) {\n      let child = chunk.children[i], ch = child.height\n      if (h < ch) { chunk = child; continue outer }\n      h -= ch\n      n += child.chunkSize()\n    }\n    return n\n  } while (!chunk.lines)\n  let i = 0\n  for (; i < chunk.lines.length; ++i) {\n    let line = chunk.lines[i], lh = line.height\n    if (h < lh) break\n    h -= lh\n  }\n  return n + i\n}\n\nexport function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\nexport function lineNumberFor(options, i) {\n  return String(options.lineNumberFormatter(i + options.firstLineNumber))\n}\n", "import { buildLineContent, LineView } from \"../line/line_data.js\"\nimport { clipPos, Pos } from \"../line/pos.js\"\nimport { collapsedSpanAround, heightAtLine, lineIsHidden, visualLine } from \"../line/spans.js\"\nimport { getLine, lineAtHeight, lineNo, updateLineHeight } from \"../line/utils_line.js\"\nimport { bidiOther, getBidiPartAt, getOrder } from \"../util/bidi.js\"\nimport { chrome, android, ie, ie_version } from \"../util/browser.js\"\nimport { elt, removeChildren, range, removeChildrenAndAdd } from \"../util/dom.js\"\nimport { e_target } from \"../util/event.js\"\nimport { hasBadZoomedRects } from \"../util/feature_detection.js\"\nimport { countColumn, findFirst, isExtendingChar, scrollerGap, skipExtendingChars } from \"../util/misc.js\"\nimport { updateLineForChanges } from \"../display/update_line.js\"\n\nimport { widgetHeight } from \"./widgets.js\"\n\n// POSITION MEASUREMENT\n\nexport function paddingTop(display) {return display.lineSpace.offsetTop}\nexport function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\nexport function paddingH(display) {\n  if (display.cachedPaddingH) return display.cachedPaddingH\n  let e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"))\n  let style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle\n  let data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)}\n  if (!isNaN(data.left) && !isNaN(data.right)) display.cachedPaddingH = data\n  return data\n}\n\nexport function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\nexport function displayWidth(cm) {\n  return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n}\nexport function displayHeight(cm) {\n  return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n}\n\n// Ensure the lineView.wrapping.heights array is populated. This is\n// an array of bottom offsets for the lines that make up a drawn\n// line. When lineWrapping is on, there might be more than one\n// height.\nfunction ensureLineHeights(cm, lineView, rect) {\n  let wrapping = cm.options.lineWrapping\n  let curWidth = wrapping && displayWidth(cm)\n  if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n    let heights = lineView.measure.heights = []\n    if (wrapping) {\n      lineView.measure.width = curWidth\n      let rects = lineView.text.firstChild.getClientRects()\n      for (let i = 0; i < rects.length - 1; i++) {\n        let cur = rects[i], next = rects[i + 1]\n        if (Math.abs(cur.bottom - next.bottom) > 2)\n          heights.push((cur.bottom + next.top) / 2 - rect.top)\n      }\n    }\n    heights.push(rect.bottom - rect.top)\n  }\n}\n\n// Find a line map (mapping character offsets to text nodes) and a\n// measurement cache for the given line number. (A line view might\n// contain multiple lines when collapsed ranges are present.)\nexport function mapFromLineView(lineView, line, lineN) {\n  if (lineView.line == line)\n    return {map: lineView.measure.map, cache: lineView.measure.cache}\n  for (let i = 0; i < lineView.rest.length; i++)\n    if (lineView.rest[i] == line)\n      return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]}\n  for (let i = 0; i < lineView.rest.length; i++)\n    if (lineNo(lineView.rest[i]) > lineN)\n      return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i], before: true}\n}\n\n// Render a line into the hidden node display.externalMeasured. Used\n// when measurement is needed for a line that's not in the viewport.\nfunction updateExternalMeasurement(cm, line) {\n  line = visualLine(line)\n  let lineN = lineNo(line)\n  let view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN)\n  view.lineN = lineN\n  let built = view.built = buildLineContent(cm, view)\n  view.text = built.pre\n  removeChildrenAndAdd(cm.display.lineMeasure, built.pre)\n  return view\n}\n\n// Get a {top, bottom, left, right} box (in line-local coordinates)\n// for a given character.\nexport function measureChar(cm, line, ch, bias) {\n  return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n}\n\n// Find a line view that corresponds to the given line number.\nexport function findViewForLine(cm, lineN) {\n  if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n    return cm.display.view[findViewIndex(cm, lineN)]\n  let ext = cm.display.externalMeasured\n  if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n    return ext\n}\n\n// Measurement can be split in two steps, the set-up work that\n// applies to the whole line, and the measurement of the actual\n// character. Functions like coordsChar, that need to do a lot of\n// measurements in a row, can thus ensure that the set-up work is\n// only done once.\nexport function prepareMeasureForLine(cm, line) {\n  let lineN = lineNo(line)\n  let view = findViewForLine(cm, lineN)\n  if (view && !view.text) {\n    view = null\n  } else if (view && view.changes) {\n    updateLineForChanges(cm, view, lineN, getDimensions(cm))\n    cm.curOp.forceUpdate = true\n  }\n  if (!view)\n    view = updateExternalMeasurement(cm, line)\n\n  let info = mapFromLineView(view, line, lineN)\n  return {\n    line: line, view: view, rect: null,\n    map: info.map, cache: info.cache, before: info.before,\n    hasHeights: false\n  }\n}\n\n// Given a prepared measurement object, measures the position of an\n// actual character (or fetches it from the cache).\nexport function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n  if (prepared.before) ch = -1\n  let key = ch + (bias || \"\"), found\n  if (prepared.cache.hasOwnProperty(key)) {\n    found = prepared.cache[key]\n  } else {\n    if (!prepared.rect)\n      prepared.rect = prepared.view.text.getBoundingClientRect()\n    if (!prepared.hasHeights) {\n      ensureLineHeights(cm, prepared.view, prepared.rect)\n      prepared.hasHeights = true\n    }\n    found = measureCharInner(cm, prepared, ch, bias)\n    if (!found.bogus) prepared.cache[key] = found\n  }\n  return {left: found.left, right: found.right,\n          top: varHeight ? found.rtop : found.top,\n          bottom: varHeight ? found.rbottom : found.bottom}\n}\n\nlet nullRect = {left: 0, right: 0, top: 0, bottom: 0}\n\nexport function nodeAndOffsetInLineMap(map, ch, bias) {\n  let node, start, end, collapse, mStart, mEnd\n  // First, search the line map for the text node corresponding to,\n  // or closest to, the target character.\n  for (let i = 0; i < map.length; i += 3) {\n    mStart = map[i]\n    mEnd = map[i + 1]\n    if (ch < mStart) {\n      start = 0; end = 1\n      collapse = \"left\"\n    } else if (ch < mEnd) {\n      start = ch - mStart\n      end = start + 1\n    } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n      end = mEnd - mStart\n      start = end - 1\n      if (ch >= mEnd) collapse = \"right\"\n    }\n    if (start != null) {\n      node = map[i + 2]\n      if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n        collapse = bias\n      if (bias == \"left\" && start == 0)\n        while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n          node = map[(i -= 3) + 2]\n          collapse = \"left\"\n        }\n      if (bias == \"right\" && start == mEnd - mStart)\n        while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n          node = map[(i += 3) + 2]\n          collapse = \"right\"\n        }\n      break\n    }\n  }\n  return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n}\n\nfunction getUsefulRect(rects, bias) {\n  let rect = nullRect\n  if (bias == \"left\") for (let i = 0; i < rects.length; i++) {\n    if ((rect = rects[i]).left != rect.right) break\n  } else for (let i = rects.length - 1; i >= 0; i--) {\n    if ((rect = rects[i]).left != rect.right) break\n  }\n  return rect\n}\n\nfunction measureCharInner(cm, prepared, ch, bias) {\n  let place = nodeAndOffsetInLineMap(prepared.map, ch, bias)\n  let node = place.node, start = place.start, end = place.end, collapse = place.collapse\n\n  let rect\n  if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n    for (let i = 0; i < 4; i++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n      while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) --start\n      while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) ++end\n      if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n        rect = node.parentNode.getBoundingClientRect()\n      else\n        rect = getUsefulRect(range(node, start, end).getClientRects(), bias)\n      if (rect.left || rect.right || start == 0) break\n      end = start\n      start = start - 1\n      collapse = \"right\"\n    }\n    if (ie && ie_version < 11) rect = maybeUpdateRectForZooming(cm.display.measure, rect)\n  } else { // If it is a widget, simply get the box for the whole widget.\n    if (start > 0) collapse = bias = \"right\"\n    let rects\n    if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n      rect = rects[bias == \"right\" ? rects.length - 1 : 0]\n    else\n      rect = node.getBoundingClientRect()\n  }\n  if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n    let rSpan = node.parentNode.getClientRects()[0]\n    if (rSpan)\n      rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}\n    else\n      rect = nullRect\n  }\n\n  let rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top\n  let mid = (rtop + rbot) / 2\n  let heights = prepared.view.measure.heights\n  let i = 0\n  for (; i < heights.length - 1; i++)\n    if (mid < heights[i]) break\n  let top = i ? heights[i - 1] : 0, bot = heights[i]\n  let result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n                right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n                top: top, bottom: bot}\n  if (!rect.left && !rect.right) result.bogus = true\n  if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot }\n\n  return result\n}\n\n// Work around problem with bounding client rects on ranges being\n// returned incorrectly when zoomed on IE10 and below.\nfunction maybeUpdateRectForZooming(measure, rect) {\n  if (!window.screen || screen.logicalXDPI == null ||\n      screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n    return rect\n  let scaleX = screen.logicalXDPI / screen.deviceXDPI\n  let scaleY = screen.logicalYDPI / screen.deviceYDPI\n  return {left: rect.left * scaleX, right: rect.right * scaleX,\n          top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n}\n\nexport function clearLineMeasurementCacheFor(lineView) {\n  if (lineView.measure) {\n    lineView.measure.cache = {}\n    lineView.measure.heights = null\n    if (lineView.rest) for (let i = 0; i < lineView.rest.length; i++)\n      lineView.measure.caches[i] = {}\n  }\n}\n\nexport function clearLineMeasurementCache(cm) {\n  cm.display.externalMeasure = null\n  removeChildren(cm.display.lineMeasure)\n  for (let i = 0; i < cm.display.view.length; i++)\n    clearLineMeasurementCacheFor(cm.display.view[i])\n}\n\nexport function clearCaches(cm) {\n  clearLineMeasurementCache(cm)\n  cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null\n  if (!cm.options.lineWrapping) cm.display.maxLineChanged = true\n  cm.display.lineNumChars = null\n}\n\nfunction pageScrollX() {\n  // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n  // which causes page_Offset and bounding client rects to use\n  // different reference viewports and invalidate our calculations.\n  if (chrome && android) return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft))\n  return window.pageXOffset || (document.documentElement || document.body).scrollLeft\n}\nfunction pageScrollY() {\n  if (chrome && android) return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop))\n  return window.pageYOffset || (document.documentElement || document.body).scrollTop\n}\n\nfunction widgetTopHeight(lineObj) {\n  let height = 0\n  if (lineObj.widgets) for (let i = 0; i < lineObj.widgets.length; ++i) if (lineObj.widgets[i].above)\n    height += widgetHeight(lineObj.widgets[i])\n  return height\n}\n\n// Converts a {top, bottom, left, right} box from line-local\n// coordinates into another coordinate system. Context may be one of\n// \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n// or \"page\".\nexport function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n  if (!includeWidgets) {\n    let height = widgetTopHeight(lineObj)\n    rect.top += height; rect.bottom += height\n  }\n  if (context == \"line\") return rect\n  if (!context) context = \"local\"\n  let yOff = heightAtLine(lineObj)\n  if (context == \"local\") yOff += paddingTop(cm.display)\n  else yOff -= cm.display.viewOffset\n  if (context == \"page\" || context == \"window\") {\n    let lOff = cm.display.lineSpace.getBoundingClientRect()\n    yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY())\n    let xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX())\n    rect.left += xOff; rect.right += xOff\n  }\n  rect.top += yOff; rect.bottom += yOff\n  return rect\n}\n\n// Coverts a box from \"div\" coords to another coordinate system.\n// Context may be \"window\", \"page\", \"div\", or \"local\"./null.\nexport function fromCoordSystem(cm, coords, context) {\n  if (context == \"div\") return coords\n  let left = coords.left, top = coords.top\n  // First move into \"page\" coordinate system\n  if (context == \"page\") {\n    left -= pageScrollX()\n    top -= pageScrollY()\n  } else if (context == \"local\" || !context) {\n    let localBox = cm.display.sizer.getBoundingClientRect()\n    left += localBox.left\n    top += localBox.top\n  }\n\n  let lineSpaceBox = cm.display.lineSpace.getBoundingClientRect()\n  return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n}\n\nexport function charCoords(cm, pos, context, lineObj, bias) {\n  if (!lineObj) lineObj = getLine(cm.doc, pos.line)\n  return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n}\n\n// Returns a box for a given cursor position, which may have an\n// 'other' property containing the position of the secondary cursor\n// on a bidi boundary.\n// A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n// and after `char - 1` in writing order of `char - 1`\n// A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n// and before `char` in writing order of `char`\n// Examples (upper-case letters are RTL, lower-case are LTR):\n//     Pos(0, 1, ...)\n//     before   after\n// ab     a|b     a|b\n// aB     a|B     aB|\n// Ab     |Ab     A|b\n// AB     B|A     B|A\n// Every position after the last character on a line is considered to stick\n// to the last character on the line.\nexport function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n  lineObj = lineObj || getLine(cm.doc, pos.line)\n  if (!preparedMeasure) preparedMeasure = prepareMeasureForLine(cm, lineObj)\n  function get(ch, right) {\n    let m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight)\n    if (right) m.left = m.right; else m.right = m.left\n    return intoCoordSystem(cm, lineObj, m, context)\n  }\n  let order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky\n  if (ch >= lineObj.text.length) {\n    ch = lineObj.text.length\n    sticky = \"before\"\n  } else if (ch <= 0) {\n    ch = 0\n    sticky = \"after\"\n  }\n  if (!order) return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\")\n\n  function getBidi(ch, partPos, invert) {\n    let part = order[partPos], right = part.level == 1\n    return get(invert ? ch - 1 : ch, right != invert)\n  }\n  let partPos = getBidiPartAt(order, ch, sticky)\n  let other = bidiOther\n  let val = getBidi(ch, partPos, sticky == \"before\")\n  if (other != null) val.other = getBidi(ch, other, sticky != \"before\")\n  return val\n}\n\n// Used to cheaply estimate the coordinates for a position. Used for\n// intermediate scroll updates.\nexport function estimateCoords(cm, pos) {\n  let left = 0\n  pos = clipPos(cm.doc, pos)\n  if (!cm.options.lineWrapping) left = charWidth(cm.display) * pos.ch\n  let lineObj = getLine(cm.doc, pos.line)\n  let top = heightAtLine(lineObj) + paddingTop(cm.display)\n  return {left: left, right: left, top: top, bottom: top + lineObj.height}\n}\n\n// Positions returned by coordsChar contain some extra information.\n// xRel is the relative x position of the input coordinates compared\n// to the found position (so xRel > 0 means the coordinates are to\n// the right of the character position, for example). When outside\n// is true, that means the coordinates lie outside the line's\n// vertical range.\nfunction PosWithInfo(line, ch, sticky, outside, xRel) {\n  let pos = Pos(line, ch, sticky)\n  pos.xRel = xRel\n  if (outside) pos.outside = outside\n  return pos\n}\n\n// Compute the character position closest to the given coordinates.\n// Input must be lineSpace-local (\"div\" coordinate system).\nexport function coordsChar(cm, x, y) {\n  let doc = cm.doc\n  y += cm.display.viewOffset\n  if (y < 0) return PosWithInfo(doc.first, 0, null, -1, -1)\n  let lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1\n  if (lineN > last)\n    return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1)\n  if (x < 0) x = 0\n\n  let lineObj = getLine(doc, lineN)\n  for (;;) {\n    let found = coordsCharInner(cm, lineObj, lineN, x, y)\n    let collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0))\n    if (!collapsed) return found\n    let rangeEnd = collapsed.find(1)\n    if (rangeEnd.line == lineN) return rangeEnd\n    lineObj = getLine(doc, lineN = rangeEnd.line)\n  }\n}\n\nfunction wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n  y -= widgetTopHeight(lineObj)\n  let end = lineObj.text.length\n  let begin = findFirst(ch => measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y, end, 0)\n  end = findFirst(ch => measureCharPrepared(cm, preparedMeasure, ch).top > y, begin, end)\n  return {begin, end}\n}\n\nexport function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n  if (!preparedMeasure) preparedMeasure = prepareMeasureForLine(cm, lineObj)\n  let targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top\n  return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n}\n\n// Returns true if the given side of a box is after the given\n// coordinates, in top-to-bottom, left-to-right order.\nfunction boxIsAfter(box, x, y, left) {\n  return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x\n}\n\nfunction coordsCharInner(cm, lineObj, lineNo, x, y) {\n  // Move y into line-local coordinate space\n  y -= heightAtLine(lineObj)\n  let preparedMeasure = prepareMeasureForLine(cm, lineObj)\n  // When directly calling `measureCharPrepared`, we have to adjust\n  // for the widgets at this line.\n  let widgetHeight = widgetTopHeight(lineObj)\n  let begin = 0, end = lineObj.text.length, ltr = true\n\n  let order = getOrder(lineObj, cm.doc.direction)\n  // If the line isn't plain left-to-right text, first figure out\n  // which bidi section the coordinates fall into.\n  if (order) {\n    let part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)\n                 (cm, lineObj, lineNo, preparedMeasure, order, x, y)\n    ltr = part.level != 1\n    // The awkward -1 offsets are needed because findFirst (called\n    // on these below) will treat its first bound as inclusive,\n    // second as exclusive, but we want to actually address the\n    // characters in the part's range\n    begin = ltr ? part.from : part.to - 1\n    end = ltr ? part.to : part.from - 1\n  }\n\n  // A binary search to find the first character whose bounding box\n  // starts after the coordinates. If we run across any whose box wrap\n  // the coordinates, store that.\n  let chAround = null, boxAround = null\n  let ch = findFirst(ch => {\n    let box = measureCharPrepared(cm, preparedMeasure, ch)\n    box.top += widgetHeight; box.bottom += widgetHeight\n    if (!boxIsAfter(box, x, y, false)) return false\n    if (box.top <= y && box.left <= x) {\n      chAround = ch\n      boxAround = box\n    }\n    return true\n  }, begin, end)\n\n  let baseX, sticky, outside = false\n  // If a box around the coordinates was found, use that\n  if (boxAround) {\n    // Distinguish coordinates nearer to the left or right side of the box\n    let atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr\n    ch = chAround + (atStart ? 0 : 1)\n    sticky = atStart ? \"after\" : \"before\"\n    baseX = atLeft ? boxAround.left : boxAround.right\n  } else {\n    // (Adjust for extended bound, if necessary.)\n    if (!ltr && (ch == end || ch == begin)) ch++\n    // To determine which side to associate with, get the box to the\n    // left of the character and compare it's vertical position to the\n    // coordinates\n    sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" :\n      (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y) == ltr ?\n      \"after\" : \"before\"\n    // Now get accurate coordinates for this place, in order to get a\n    // base X position\n    let coords = cursorCoords(cm, Pos(lineNo, ch, sticky), \"line\", lineObj, preparedMeasure)\n    baseX = coords.left\n    outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0\n  }\n\n  ch = skipExtendingChars(lineObj.text, ch, 1)\n  return PosWithInfo(lineNo, ch, sticky, outside, x - baseX)\n}\n\nfunction coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) {\n  // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n  // situation, we can take this ordering to correspond to the visual\n  // ordering. This finds the first part whose end is after the given\n  // coordinates.\n  let index = findFirst(i => {\n    let part = order[i], ltr = part.level != 1\n    return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"),\n                                   \"line\", lineObj, preparedMeasure), x, y, true)\n  }, 0, order.length - 1)\n  let part = order[index]\n  // If this isn't the first part, the part's start is also after\n  // the coordinates, and the coordinates aren't on the same line as\n  // that start, move one part back.\n  if (index > 0) {\n    let ltr = part.level != 1\n    let start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"),\n                             \"line\", lineObj, preparedMeasure)\n    if (boxIsAfter(start, x, y, true) && start.top > y)\n      part = order[index - 1]\n  }\n  return part\n}\n\nfunction coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n  // In a wrapped line, rtl text on wrapping boundaries can do things\n  // that don't correspond to the ordering in our `order` array at\n  // all, so a binary search doesn't work, and we want to return a\n  // part that only spans one line so that the binary search in\n  // coordsCharInner is safe. As such, we first find the extent of the\n  // wrapped line, and then do a flat search in which we discard any\n  // spans that aren't on the line.\n  let {begin, end} = wrappedLineExtent(cm, lineObj, preparedMeasure, y)\n  if (/\\s/.test(lineObj.text.charAt(end - 1))) end--\n  let part = null, closestDist = null\n  for (let i = 0; i < order.length; i++) {\n    let p = order[i]\n    if (p.from >= end || p.to <= begin) continue\n    let ltr = p.level != 1\n    let endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right\n    // Weigh against spans ending before this, so that they are only\n    // picked if nothing ends after\n    let dist = endX < x ? x - endX + 1e9 : endX - x\n    if (!part || closestDist > dist) {\n      part = p\n      closestDist = dist\n    }\n  }\n  if (!part) part = order[order.length - 1]\n  // Clip the part to the wrapped line.\n  if (part.from < begin) part = {from: begin, to: part.to, level: part.level}\n  if (part.to > end) part = {from: part.from, to: end, level: part.level}\n  return part\n}\n\nlet measureText\n// Compute the default text height.\nexport function textHeight(display) {\n  if (display.cachedTextHeight != null) return display.cachedTextHeight\n  if (measureText == null) {\n    measureText = elt(\"pre\", null, \"CodeMirror-line-like\")\n    // Measure a bunch of lines, for browsers that compute\n    // fractional heights.\n    for (let i = 0; i < 49; ++i) {\n      measureText.appendChild(document.createTextNode(\"x\"))\n      measureText.appendChild(elt(\"br\"))\n    }\n    measureText.appendChild(document.createTextNode(\"x\"))\n  }\n  removeChildrenAndAdd(display.measure, measureText)\n  let height = measureText.offsetHeight / 50\n  if (height > 3) display.cachedTextHeight = height\n  removeChildren(display.measure)\n  return height || 1\n}\n\n// Compute the default character width.\nexport function charWidth(display) {\n  if (display.cachedCharWidth != null) return display.cachedCharWidth\n  let anchor = elt(\"span\", \"xxxxxxxxxx\")\n  let pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\")\n  removeChildrenAndAdd(display.measure, pre)\n  let rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10\n  if (width > 2) display.cachedCharWidth = width\n  return width || 10\n}\n\n// Do a bulk-read of the DOM positions and sizes needed to draw the\n// view, so that we don't interleave reading and writing to the DOM.\nexport function getDimensions(cm) {\n  let d = cm.display, left = {}, width = {}\n  let gutterLeft = d.gutters.clientLeft\n  for (let n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n    let id = cm.display.gutterSpecs[i].className\n    left[id] = n.offsetLeft + n.clientLeft + gutterLeft\n    width[id] = n.clientWidth\n  }\n  return {fixedPos: compensateForHScroll(d),\n          gutterTotalWidth: d.gutters.offsetWidth,\n          gutterLeft: left,\n          gutterWidth: width,\n          wrapperWidth: d.wrapper.clientWidth}\n}\n\n// Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n// but using getBoundingClientRect to get a sub-pixel-accurate\n// result.\nexport function compensateForHScroll(display) {\n  return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n}\n\n// Returns a function that estimates the height of a line, to use as\n// first approximation until the line becomes visible (and is thus\n// properly measurable).\nexport function estimateHeight(cm) {\n  let th = textHeight(cm.display), wrapping = cm.options.lineWrapping\n  let perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3)\n  return line => {\n    if (lineIsHidden(cm.doc, line)) return 0\n\n    let widgetsHeight = 0\n    if (line.widgets) for (let i = 0; i < line.widgets.length; i++) {\n      if (line.widgets[i].height) widgetsHeight += line.widgets[i].height\n    }\n\n    if (wrapping)\n      return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th\n    else\n      return widgetsHeight + th\n  }\n}\n\nexport function estimateLineHeights(cm) {\n  let doc = cm.doc, est = estimateHeight(cm)\n  doc.iter(line => {\n    let estHeight = est(line)\n    if (estHeight != line.height) updateLineHeight(line, estHeight)\n  })\n}\n\n// Given a mouse event, find the corresponding position. If liberal\n// is false, it checks whether a gutter or scrollbar was clicked,\n// and returns null if it was. forRect is used by rectangular\n// selections, and tries to estimate a character position even for\n// coordinates beyond the right of the text.\nexport function posFromMouse(cm, e, liberal, forRect) {\n  let display = cm.display\n  if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") return null\n\n  let x, y, space = display.lineSpace.getBoundingClientRect()\n  // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n  try { x = e.clientX - space.left; y = e.clientY - space.top }\n  catch (e) { return null }\n  let coords = coordsChar(cm, x, y), line\n  if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n    let colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length\n    coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff))\n  }\n  return coords\n}\n\n// Find the view element corresponding to a given line. Return null\n// when the line isn't visible.\nexport function findViewIndex(cm, n) {\n  if (n >= cm.display.viewTo) return null\n  n -= cm.display.viewFrom\n  if (n < 0) return null\n  let view = cm.display.view\n  for (let i = 0; i < view.length; i++) {\n    n -= view[i].size\n    if (n < 0) return i\n  }\n}\n", "import { getOrder } from \"../util/bidi.js\"\nimport { ie, ie_version, webkit } from \"../util/browser.js\"\nimport { elt, eltP, joinClasses } from \"../util/dom.js\"\nimport { eventMixin, signal } from \"../util/event.js\"\nimport { hasBadBidiRects, zeroWidthElement } from \"../util/feature_detection.js\"\nimport { lst, spaceStr } from \"../util/misc.js\"\n\nimport { getLineStyles } from \"./highlight.js\"\nimport { attachMarkedSpans, compareCollapsedMarkers, detachMarkedSpans, lineIsHidden, visualLineContinued } from \"./spans.js\"\nimport { getLine, lineNo, updateLineHeight } from \"./utils_line.js\"\n\n// LINE DATA STRUCTURE\n\n// Line objects. These hold state related to a line, including\n// highlighting info (the styles array).\nexport class Line {\n  constructor(text, markedSpans, estimateHeight) {\n    this.text = text\n    attachMarkedSpans(this, markedSpans)\n    this.height = estimateHeight ? estimateHeight(this) : 1\n  }\n\n  lineNo() { return lineNo(this) }\n}\neventMixin(Line)\n\n// Change the content (text, markers) of a line. Automatically\n// invalidates cached information and tries to re-estimate the\n// line's height.\nexport function updateLine(line, text, markedSpans, estimateHeight) {\n  line.text = text\n  if (line.stateAfter) line.stateAfter = null\n  if (line.styles) line.styles = null\n  if (line.order != null) line.order = null\n  detachMarkedSpans(line)\n  attachMarkedSpans(line, markedSpans)\n  let estHeight = estimateHeight ? estimateHeight(line) : 1\n  if (estHeight != line.height) updateLineHeight(line, estHeight)\n}\n\n// Detach a line from the document tree and its markers.\nexport function cleanUpLine(line) {\n  line.parent = null\n  detachMarkedSpans(line)\n}\n\n// Convert a style as returned by a mode (either null, or a string\n// containing one or more styles) to a CSS style. This is cached,\n// and also looks for line-wide styles.\nlet styleToClassCache = {}, styleToClassCacheWithMode = {}\nfunction interpretTokenStyle(style, options) {\n  if (!style || /^\\s*$/.test(style)) return null\n  let cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache\n  return cache[style] ||\n    (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n}\n\n// Render the DOM representation of the text of a line. Also builds\n// up a 'line map', which points at the DOM nodes that represent\n// specific stretches of text, and is used by the measuring code.\n// The returned object contains the DOM node, this map, and\n// information about line-wide styles that were set by the mode.\nexport function buildLineContent(cm, lineView) {\n  // The padding-right forces the element to have a 'border', which\n  // is needed on Webkit to be able to get line-level bounding\n  // rectangles for it (in measureChar).\n  let content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null)\n  let builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n                 col: 0, pos: 0, cm: cm,\n                 trailingSpace: false,\n                 splitSpaces: cm.getOption(\"lineWrapping\")}\n  lineView.measure = {}\n\n  // Iterate over the logical lines that make up this visual line.\n  for (let i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n    let line = i ? lineView.rest[i - 1] : lineView.line, order\n    builder.pos = 0\n    builder.addToken = buildToken\n    // Optionally wire in some hacks into the token-rendering\n    // algorithm, to deal with browser quirks.\n    if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n      builder.addToken = buildTokenBadBidi(builder.addToken, order)\n    builder.map = []\n    let allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line)\n    insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate))\n    if (line.styleClasses) {\n      if (line.styleClasses.bgClass)\n        builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\")\n      if (line.styleClasses.textClass)\n        builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\")\n    }\n\n    // Ensure at least a single node is present, for measuring.\n    if (builder.map.length == 0)\n      builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure)))\n\n    // Store the map and a cache object for the current logical line\n    if (i == 0) {\n      lineView.measure.map = builder.map\n      lineView.measure.cache = {}\n    } else {\n      ;(lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n      ;(lineView.measure.caches || (lineView.measure.caches = [])).push({})\n    }\n  }\n\n  // See issue #2901\n  if (webkit) {\n    let last = builder.content.lastChild\n    if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n      builder.content.className = \"cm-tab-wrap-hack\"\n  }\n\n  signal(cm, \"renderLine\", cm, lineView.line, builder.pre)\n  if (builder.pre.className)\n    builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\")\n\n  return builder\n}\n\nexport function defaultSpecialCharPlaceholder(ch) {\n  let token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\")\n  token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16)\n  token.setAttribute(\"aria-label\", token.title)\n  return token\n}\n\n// Build up the DOM representation for a single token, and add it to\n// the line map. Takes care to render special characters separately.\nfunction buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n  if (!text) return\n  let displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text\n  let special = builder.cm.state.specialChars, mustWrap = false\n  let content\n  if (!special.test(text)) {\n    builder.col += text.length\n    content = document.createTextNode(displayText)\n    builder.map.push(builder.pos, builder.pos + text.length, content)\n    if (ie && ie_version < 9) mustWrap = true\n    builder.pos += text.length\n  } else {\n    content = document.createDocumentFragment()\n    let pos = 0\n    while (true) {\n      special.lastIndex = pos\n      let m = special.exec(text)\n      let skipped = m ? m.index - pos : text.length - pos\n      if (skipped) {\n        let txt = document.createTextNode(displayText.slice(pos, pos + skipped))\n        if (ie && ie_version < 9) content.appendChild(elt(\"span\", [txt]))\n        else content.appendChild(txt)\n        builder.map.push(builder.pos, builder.pos + skipped, txt)\n        builder.col += skipped\n        builder.pos += skipped\n      }\n      if (!m) break\n      pos += skipped + 1\n      let txt\n      if (m[0] == \"\\t\") {\n        let tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize\n        txt = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"))\n        txt.setAttribute(\"role\", \"presentation\")\n        txt.setAttribute(\"cm-text\", \"\\t\")\n        builder.col += tabWidth\n      } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n        txt = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"))\n        txt.setAttribute(\"cm-text\", m[0])\n        builder.col += 1\n      } else {\n        txt = builder.cm.options.specialCharPlaceholder(m[0])\n        txt.setAttribute(\"cm-text\", m[0])\n        if (ie && ie_version < 9) content.appendChild(elt(\"span\", [txt]))\n        else content.appendChild(txt)\n        builder.col += 1\n      }\n      builder.map.push(builder.pos, builder.pos + 1, txt)\n      builder.pos++\n    }\n  }\n  builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32\n  if (style || startStyle || endStyle || mustWrap || css || attributes) {\n    let fullStyle = style || \"\"\n    if (startStyle) fullStyle += startStyle\n    if (endStyle) fullStyle += endStyle\n    let token = elt(\"span\", [content], fullStyle, css)\n    if (attributes) {\n      for (let attr in attributes) if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\")\n        token.setAttribute(attr, attributes[attr])\n    }\n    return builder.content.appendChild(token)\n  }\n  builder.content.appendChild(content)\n}\n\n// Change some spaces to NBSP to prevent the browser from collapsing\n// trailing spaces at the end of a line when rendering text (issue #1362).\nfunction splitSpaces(text, trailingBefore) {\n  if (text.length > 1 && !/  /.test(text)) return text\n  let spaceBefore = trailingBefore, result = \"\"\n  for (let i = 0; i < text.length; i++) {\n    let ch = text.charAt(i)\n    if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n      ch = \"\\u00a0\"\n    result += ch\n    spaceBefore = ch == \" \"\n  }\n  return result\n}\n\n// Work around nonsense dimensions being reported for stretches of\n// right-to-left text.\nfunction buildTokenBadBidi(inner, order) {\n  return (builder, text, style, startStyle, endStyle, css, attributes) => {\n    style = style ? style + \" cm-force-border\" : \"cm-force-border\"\n    let start = builder.pos, end = start + text.length\n    for (;;) {\n      // Find the part that overlaps with the start of this text\n      let part\n      for (let i = 0; i < order.length; i++) {\n        part = order[i]\n        if (part.to > start && part.from <= start) break\n      }\n      if (part.to >= end) return inner(builder, text, style, startStyle, endStyle, css, attributes)\n      inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes)\n      startStyle = null\n      text = text.slice(part.to - start)\n      start = part.to\n    }\n  }\n}\n\nfunction buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n  let widget = !ignoreWidget && marker.widgetNode\n  if (widget) builder.map.push(builder.pos, builder.pos + size, widget)\n  if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n    if (!widget)\n      widget = builder.content.appendChild(document.createElement(\"span\"))\n    widget.setAttribute(\"cm-marker\", marker.id)\n  }\n  if (widget) {\n    builder.cm.display.input.setUneditable(widget)\n    builder.content.appendChild(widget)\n  }\n  builder.pos += size\n  builder.trailingSpace = false\n}\n\n// Outputs a number of spans to make up a line, taking highlighting\n// and marked text into account.\nfunction insertLineContent(line, builder, styles) {\n  let spans = line.markedSpans, allText = line.text, at = 0\n  if (!spans) {\n    for (let i = 1; i < styles.length; i+=2)\n      builder.addToken(builder, allText.slice(at, at = styles[i]), interpretTokenStyle(styles[i+1], builder.cm.options))\n    return\n  }\n\n  let len = allText.length, pos = 0, i = 1, text = \"\", style, css\n  let nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes\n  for (;;) {\n    if (nextChange == pos) { // Update current marker set\n      spanStyle = spanEndStyle = spanStartStyle = css = \"\"\n      attributes = null\n      collapsed = null; nextChange = Infinity\n      let foundBookmarks = [], endStyles\n      for (let j = 0; j < spans.length; ++j) {\n        let sp = spans[j], m = sp.marker\n        if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n          foundBookmarks.push(m)\n        } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n          if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n            nextChange = sp.to\n            spanEndStyle = \"\"\n          }\n          if (m.className) spanStyle += \" \" + m.className\n          if (m.css) css = (css ? css + \";\" : \"\") + m.css\n          if (m.startStyle && sp.from == pos) spanStartStyle += \" \" + m.startStyle\n          if (m.endStyle && sp.to == nextChange) (endStyles || (endStyles = [])).push(m.endStyle, sp.to)\n          // support for the old title property\n          // https://github.com/codemirror/CodeMirror/pull/5673\n          if (m.title) (attributes || (attributes = {})).title = m.title\n          if (m.attributes) {\n            for (let attr in m.attributes)\n              (attributes || (attributes = {}))[attr] = m.attributes[attr]\n          }\n          if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n            collapsed = sp\n        } else if (sp.from > pos && nextChange > sp.from) {\n          nextChange = sp.from\n        }\n      }\n      if (endStyles) for (let j = 0; j < endStyles.length; j += 2)\n        if (endStyles[j + 1] == nextChange) spanEndStyle += \" \" + endStyles[j]\n\n      if (!collapsed || collapsed.from == pos) for (let j = 0; j < foundBookmarks.length; ++j)\n        buildCollapsedSpan(builder, 0, foundBookmarks[j])\n      if (collapsed && (collapsed.from || 0) == pos) {\n        buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n                           collapsed.marker, collapsed.from == null)\n        if (collapsed.to == null) return\n        if (collapsed.to == pos) collapsed = false\n      }\n    }\n    if (pos >= len) break\n\n    let upto = Math.min(len, nextChange)\n    while (true) {\n      if (text) {\n        let end = pos + text.length\n        if (!collapsed) {\n          let tokenText = end > upto ? text.slice(0, upto - pos) : text\n          builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n                           spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes)\n        }\n        if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n        pos = end\n        spanStartStyle = \"\"\n      }\n      text = allText.slice(at, at = styles[i++])\n      style = interpretTokenStyle(styles[i++], builder.cm.options)\n    }\n  }\n}\n\n\n// These objects are used to represent the visible (currently drawn)\n// part of the document. A LineView may correspond to multiple\n// logical lines, if those are connected by collapsed ranges.\nexport function LineView(doc, line, lineN) {\n  // The starting line\n  this.line = line\n  // Continuing lines, if any\n  this.rest = visualLineContinued(line)\n  // Number of logical lines in this visual line\n  this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1\n  this.node = this.text = null\n  this.hidden = lineIsHidden(doc, line)\n}\n\n// Create a range of LineView objects for the given lines.\nexport function buildViewArray(cm, from, to) {\n  let array = [], nextPos\n  for (let pos = from; pos < to; pos = nextPos) {\n    let view = new LineView(cm.doc, getLine(cm.doc, pos), pos)\n    nextPos = pos + view.size\n    array.push(view)\n  }\n  return array\n}\n", "import { lst } from \"./misc.js\"\n\n// BIDI HELPERS\n\nexport function iterateBidiSections(order, from, to, f) {\n  if (!order) return f(from, to, \"ltr\", 0)\n  let found = false\n  for (let i = 0; i < order.length; ++i) {\n    let part = order[i]\n    if (part.from < to && part.to > from || from == to && part.to == from) {\n      f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i)\n      found = true\n    }\n  }\n  if (!found) f(from, to, \"ltr\")\n}\n\nexport let bidiOther = null\nexport function getBidiPartAt(order, ch, sticky) {\n  let found\n  bidiOther = null\n  for (let i = 0; i < order.length; ++i) {\n    let cur = order[i]\n    if (cur.from < ch && cur.to > ch) return i\n    if (cur.to == ch) {\n      if (cur.from != cur.to && sticky == \"before\") found = i\n      else bidiOther = i\n    }\n    if (cur.from == ch) {\n      if (cur.from != cur.to && sticky != \"before\") found = i\n      else bidiOther = i\n    }\n  }\n  return found != null ? found : bidiOther\n}\n\n// Bidirectional ordering algorithm\n// See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n// that this (partially) implements.\n\n// One-char codes used for character types:\n// L (L):   Left-to-Right\n// R (R):   Right-to-Left\n// r (AL):  Right-to-Left Arabic\n// 1 (EN):  European Number\n// + (ES):  European Number Separator\n// % (ET):  European Number Terminator\n// n (AN):  Arabic Number\n// , (CS):  Common Number Separator\n// m (NSM): Non-Spacing Mark\n// b (BN):  Boundary Neutral\n// s (B):   Paragraph Separator\n// t (S):   Segment Separator\n// w (WS):  Whitespace\n// N (ON):  Other Neutrals\n\n// Returns null if characters are ordered as they appear\n// (left-to-right), or an array of sections ({from, to, level}\n// objects) in the order in which they occur visually.\nlet bidiOrdering = (function() {\n  // Character types for codepoints 0 to 0xff\n  let lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\"\n  // Character types for codepoints 0x600 to 0x6f9\n  let arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\"\n  function charType(code) {\n    if (code <= 0xf7) return lowTypes.charAt(code)\n    else if (0x590 <= code && code <= 0x5f4) return \"R\"\n    else if (0x600 <= code && code <= 0x6f9) return arabicTypes.charAt(code - 0x600)\n    else if (0x6ee <= code && code <= 0x8ac) return \"r\"\n    else if (0x2000 <= code && code <= 0x200b) return \"w\"\n    else if (code == 0x200c) return \"b\"\n    else return \"L\"\n  }\n\n  let bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/\n  let isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/\n\n  function BidiSpan(level, from, to) {\n    this.level = level\n    this.from = from; this.to = to\n  }\n\n  return function(str, direction) {\n    let outerType = direction == \"ltr\" ? \"L\" : \"R\"\n\n    if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) return false\n    let len = str.length, types = []\n    for (let i = 0; i < len; ++i)\n      types.push(charType(str.charCodeAt(i)))\n\n    // W1. Examine each non-spacing mark (NSM) in the level run, and\n    // change the type of the NSM to the type of the previous\n    // character. If the NSM is at the start of the level run, it will\n    // get the type of sor.\n    for (let i = 0, prev = outerType; i < len; ++i) {\n      let type = types[i]\n      if (type == \"m\") types[i] = prev\n      else prev = type\n    }\n\n    // W2. Search backwards from each instance of a European number\n    // until the first strong type (R, L, AL, or sor) is found. If an\n    // AL is found, change the type of the European number to Arabic\n    // number.\n    // W3. Change all ALs to R.\n    for (let i = 0, cur = outerType; i < len; ++i) {\n      let type = types[i]\n      if (type == \"1\" && cur == \"r\") types[i] = \"n\"\n      else if (isStrong.test(type)) { cur = type; if (type == \"r\") types[i] = \"R\" }\n    }\n\n    // W4. A single European separator between two European numbers\n    // changes to a European number. A single common separator between\n    // two numbers of the same type changes to that type.\n    for (let i = 1, prev = types[0]; i < len - 1; ++i) {\n      let type = types[i]\n      if (type == \"+\" && prev == \"1\" && types[i+1] == \"1\") types[i] = \"1\"\n      else if (type == \",\" && prev == types[i+1] &&\n               (prev == \"1\" || prev == \"n\")) types[i] = prev\n      prev = type\n    }\n\n    // W5. A sequence of European terminators adjacent to European\n    // numbers changes to all European numbers.\n    // W6. Otherwise, separators and terminators change to Other\n    // Neutral.\n    for (let i = 0; i < len; ++i) {\n      let type = types[i]\n      if (type == \",\") types[i] = \"N\"\n      else if (type == \"%\") {\n        let end\n        for (end = i + 1; end < len && types[end] == \"%\"; ++end) {}\n        let replace = (i && types[i-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\"\n        for (let j = i; j < end; ++j) types[j] = replace\n        i = end - 1\n      }\n    }\n\n    // W7. Search backwards from each instance of a European number\n    // until the first strong type (R, L, or sor) is found. If an L is\n    // found, then change the type of the European number to L.\n    for (let i = 0, cur = outerType; i < len; ++i) {\n      let type = types[i]\n      if (cur == \"L\" && type == \"1\") types[i] = \"L\"\n      else if (isStrong.test(type)) cur = type\n    }\n\n    // N1. A sequence of neutrals takes the direction of the\n    // surrounding strong text if the text on both sides has the same\n    // direction. European and Arabic numbers act as if they were R in\n    // terms of their influence on neutrals. Start-of-level-run (sor)\n    // and end-of-level-run (eor) are used at level run boundaries.\n    // N2. Any remaining neutrals take the embedding direction.\n    for (let i = 0; i < len; ++i) {\n      if (isNeutral.test(types[i])) {\n        let end\n        for (end = i + 1; end < len && isNeutral.test(types[end]); ++end) {}\n        let before = (i ? types[i-1] : outerType) == \"L\"\n        let after = (end < len ? types[end] : outerType) == \"L\"\n        let replace = before == after ? (before ? \"L\" : \"R\") : outerType\n        for (let j = i; j < end; ++j) types[j] = replace\n        i = end - 1\n      }\n    }\n\n    // Here we depart from the documented algorithm, in order to avoid\n    // building up an actual levels array. Since there are only three\n    // levels (0, 1, 2) in an implementation that doesn't take\n    // explicit embedding into account, we can build up the order on\n    // the fly, without following the level-based algorithm.\n    let order = [], m\n    for (let i = 0; i < len;) {\n      if (countsAsLeft.test(types[i])) {\n        let start = i\n        for (++i; i < len && countsAsLeft.test(types[i]); ++i) {}\n        order.push(new BidiSpan(0, start, i))\n      } else {\n        let pos = i, at = order.length, isRTL = direction == \"rtl\" ? 1 : 0\n        for (++i; i < len && types[i] != \"L\"; ++i) {}\n        for (let j = pos; j < i;) {\n          if (countsAsNum.test(types[j])) {\n            if (pos < j) { order.splice(at, 0, new BidiSpan(1, pos, j)); at += isRTL }\n            let nstart = j\n            for (++j; j < i && countsAsNum.test(types[j]); ++j) {}\n            order.splice(at, 0, new BidiSpan(2, nstart, j))\n            at += isRTL\n            pos = j\n          } else ++j\n        }\n        if (pos < i) order.splice(at, 0, new BidiSpan(1, pos, i))\n      }\n    }\n    if (direction == \"ltr\") {\n      if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n        order[0].from = m[0].length\n        order.unshift(new BidiSpan(0, 0, m[0].length))\n      }\n      if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n        lst(order).to -= m[0].length\n        order.push(new BidiSpan(0, len - m[0].length, len))\n      }\n    }\n\n    return direction == \"rtl\" ? order.reverse() : order\n  }\n})()\n\n// Get the bidi ordering for the given line (and cache it). Returns\n// false for lines that are fully left-to-right, and an array of\n// BidiSpan objects otherwise.\nexport function getOrder(line, direction) {\n  let order = line.order\n  if (order == null) order = line.order = bidiOrdering(line.text, direction)\n  return order\n}\n", "import { ie, ios } from \"./browser.js\"\n\nexport function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\nexport let rmClass = function(node, cls) {\n  let current = node.className\n  let match = classTest(cls).exec(current)\n  if (match) {\n    let after = current.slice(match.index + match[0].length)\n    node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\")\n  }\n}\n\nexport function removeChildren(e) {\n  for (let count = e.childNodes.length; count > 0; --count)\n    e.removeChild(e.firstChild)\n  return e\n}\n\nexport function removeChildrenAndAdd(parent, e) {\n  return removeChildren(parent).appendChild(e)\n}\n\nexport function elt(tag, content, className, style) {\n  let e = document.createElement(tag)\n  if (className) e.className = className\n  if (style) e.style.cssText = style\n  if (typeof content == \"string\") e.appendChild(document.createTextNode(content))\n  else if (content) for (let i = 0; i < content.length; ++i) e.appendChild(content[i])\n  return e\n}\n// wrapper for elt, which removes the elt from the accessibility tree\nexport function eltP(tag, content, className, style) {\n  let e = elt(tag, content, className, style)\n  e.setAttribute(\"role\", \"presentation\")\n  return e\n}\n\nexport let range\nif (document.createRange) range = function(node, start, end, endNode) {\n  let r = document.createRange()\n  r.setEnd(endNode || node, end)\n  r.setStart(node, start)\n  return r\n}\nelse range = function(node, start, end) {\n  let r = document.body.createTextRange()\n  try { r.moveToElementText(node.parentNode) }\n  catch(e) { return r }\n  r.collapse(true)\n  r.moveEnd(\"character\", end)\n  r.moveStart(\"character\", start)\n  return r\n}\n\nexport function contains(parent, child) {\n  if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n    child = child.parentNode\n  if (parent.contains)\n    return parent.contains(child)\n  do {\n    if (child.nodeType == 11) child = child.host\n    if (child == parent) return true\n  } while (child = child.parentNode)\n}\n\nexport function activeElt() {\n  // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n  // IE < 10 will throw when accessed while the page is loading or in an iframe.\n  // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n  let activeElement\n  try {\n    activeElement = document.activeElement\n  } catch(e) {\n    activeElement = document.body || null\n  }\n  while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n    activeElement = activeElement.shadowRoot.activeElement\n  return activeElement\n}\n\nexport function addClass(node, cls) {\n  let current = node.className\n  if (!classTest(cls).test(current)) node.className += (current ? \" \" : \"\") + cls\n}\nexport function joinClasses(a, b) {\n  let as = a.split(\" \")\n  for (let i = 0; i < as.length; i++)\n    if (as[i] && !classTest(as[i]).test(b)) b += \" \" + as[i]\n  return b\n}\n\nexport let selectInput = function(node) { node.select() }\nif (ios) // Mobile Safari apparently has a bug where select() is broken.\n  selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length }\nelse if (ie) // Suppress mysterious IE10 errors\n  selectInput = function(node) { try { node.select() } catch(_e) {} }\n", "import { elt, range, removeChildren, removeChildrenAndAdd } from \"./dom.js\"\nimport { ie, ie_version } from \"./browser.js\"\n\n// Detect drag-and-drop\nexport let dragAndDrop = function() {\n  // There is *some* kind of drag-and-drop support in IE6-8, but I\n  // couldn't get it to work yet.\n  if (ie && ie_version < 9) return false\n  let div = elt('div')\n  return \"draggable\" in div || \"dragDrop\" in div\n}()\n\nlet zwspSupported\nexport function zeroWidthElement(measure) {\n  if (zwspSupported == null) {\n    let test = elt(\"span\", \"\\u200b\")\n    removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]))\n    if (measure.firstChild.offsetHeight != 0)\n      zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8)\n  }\n  let node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n    elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\")\n  node.setAttribute(\"cm-text\", \"\")\n  return node\n}\n\n// Feature-detect IE's crummy client rect reporting for bidi text\nlet badBidiRects\nexport function hasBadBidiRects(measure) {\n  if (badBidiRects != null) return badBidiRects\n  let txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"))\n  let r0 = range(txt, 0, 1).getBoundingClientRect()\n  let r1 = range(txt, 1, 2).getBoundingClientRect()\n  removeChildren(measure)\n  if (!r0 || r0.left == r0.right) return false // Safari returns null in some cases (#2780)\n  return badBidiRects = (r1.right - r0.right < 3)\n}\n\n// See if \"\".split is the broken IE version, if so, provide an\n// alternative way to split lines.\nexport let splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? string => {\n  let pos = 0, result = [], l = string.length\n  while (pos <= l) {\n    let nl = string.indexOf(\"\\n\", pos)\n    if (nl == -1) nl = string.length\n    let line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl)\n    let rt = line.indexOf(\"\\r\")\n    if (rt != -1) {\n      result.push(line.slice(0, rt))\n      pos += rt + 1\n    } else {\n      result.push(line)\n      pos = nl + 1\n    }\n  }\n  return result\n} : string => string.split(/\\r\\n?|\\n/)\n\nexport let hasSelection = window.getSelection ? te => {\n  try { return te.selectionStart != te.selectionEnd }\n  catch(e) { return false }\n} : te => {\n  let range\n  try {range = te.ownerDocument.selection.createRange()}\n  catch(e) {}\n  if (!range || range.parentElement() != te) return false\n  return range.compareEndPoints(\"StartToEnd\", range) != 0\n}\n\nexport let hasCopyEvent = (() => {\n  let e = elt(\"div\")\n  if (\"oncopy\" in e) return true\n  e.setAttribute(\"oncopy\", \"return;\")\n  return typeof e.oncopy == \"function\"\n})()\n\nlet badZoomedRects = null\nexport function hasBadZoomedRects(measure) {\n  if (badZoomedRects != null) return badZoomedRects\n  let node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"))\n  let normal = node.getBoundingClientRect()\n  let fromRange = range(node, 0, 1).getBoundingClientRect()\n  return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n}\n", "import { countColumn } from \"../util/misc.js\"\nimport { copyState, innerMode, startState } from \"../modes.js\"\nimport StringStream from \"../util/StringStream.js\"\n\nimport { getLine, lineNo } from \"./utils_line.js\"\nimport { clipPos } from \"./pos.js\"\n\nclass SavedContext {\n  constructor(state, lookAhead) {\n    this.state = state\n    this.lookAhead = lookAhead\n  }\n}\n\nclass Context {\n  constructor(doc, state, line, lookAhead) {\n    this.state = state\n    this.doc = doc\n    this.line = line\n    this.maxLookAhead = lookAhead || 0\n    this.baseTokens = null\n    this.baseTokenPos = 1\n  }\n\n  lookAhead(n) {\n    let line = this.doc.getLine(this.line + n)\n    if (line != null && n > this.maxLookAhead) this.maxLookAhead = n\n    return line\n  }\n\n  baseToken(n) {\n    if (!this.baseTokens) return null\n    while (this.baseTokens[this.baseTokenPos] <= n)\n      this.baseTokenPos += 2\n    let type = this.baseTokens[this.baseTokenPos + 1]\n    return {type: type && type.replace(/( |^)overlay .*/, \"\"),\n            size: this.baseTokens[this.baseTokenPos] - n}\n  }\n\n  nextLine() {\n    this.line++\n    if (this.maxLookAhead > 0) this.maxLookAhead--\n  }\n\n  static fromSaved(doc, saved, line) {\n    if (saved instanceof SavedContext)\n      return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead)\n    else\n      return new Context(doc, copyState(doc.mode, saved), line)\n  }\n\n  save(copy) {\n    let state = copy !== false ? copyState(this.doc.mode, this.state) : this.state\n    return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state\n  }\n}\n\n\n// Compute a style array (an array starting with a mode generation\n// -- for invalidation -- followed by pairs of end positions and\n// style strings), which is used to highlight the tokens on the\n// line.\nexport function highlightLine(cm, line, context, forceToEnd) {\n  // A styles array always starts with a number identifying the\n  // mode/overlays that it is based on (for easy invalidation).\n  let st = [cm.state.modeGen], lineClasses = {}\n  // Compute the base array of styles\n  runMode(cm, line.text, cm.doc.mode, context, (end, style) => st.push(end, style),\n          lineClasses, forceToEnd)\n  let state = context.state\n\n  // Run overlays, adjust style array.\n  for (let o = 0; o < cm.state.overlays.length; ++o) {\n    context.baseTokens = st\n    let overlay = cm.state.overlays[o], i = 1, at = 0\n    context.state = true\n    runMode(cm, line.text, overlay.mode, context, (end, style) => {\n      let start = i\n      // Ensure there's a token end at the current position, and that i points at it\n      while (at < end) {\n        let i_end = st[i]\n        if (i_end > end)\n          st.splice(i, 1, end, st[i+1], i_end)\n        i += 2\n        at = Math.min(end, i_end)\n      }\n      if (!style) return\n      if (overlay.opaque) {\n        st.splice(start, i - start, end, \"overlay \" + style)\n        i = start + 2\n      } else {\n        for (; start < i; start += 2) {\n          let cur = st[start+1]\n          st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style\n        }\n      }\n    }, lineClasses)\n    context.state = state\n    context.baseTokens = null\n    context.baseTokenPos = 1\n  }\n\n  return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n}\n\nexport function getLineStyles(cm, line, updateFrontier) {\n  if (!line.styles || line.styles[0] != cm.state.modeGen) {\n    let context = getContextBefore(cm, lineNo(line))\n    let resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state)\n    let result = highlightLine(cm, line, context)\n    if (resetState) context.state = resetState\n    line.stateAfter = context.save(!resetState)\n    line.styles = result.styles\n    if (result.classes) line.styleClasses = result.classes\n    else if (line.styleClasses) line.styleClasses = null\n    if (updateFrontier === cm.doc.highlightFrontier)\n      cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier)\n  }\n  return line.styles\n}\n\nexport function getContextBefore(cm, n, precise) {\n  let doc = cm.doc, display = cm.display\n  if (!doc.mode.startState) return new Context(doc, true, n)\n  let start = findStartLine(cm, n, precise)\n  let saved = start > doc.first && getLine(doc, start - 1).stateAfter\n  let context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start)\n\n  doc.iter(start, n, line => {\n    processLine(cm, line.text, context)\n    let pos = context.line\n    line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null\n    context.nextLine()\n  })\n  if (precise) doc.modeFrontier = context.line\n  return context\n}\n\n// Lightweight form of highlight -- proceed over this line and\n// update state, but don't save a style array. Used for lines that\n// aren't currently visible.\nexport function processLine(cm, text, context, startAt) {\n  let mode = cm.doc.mode\n  let stream = new StringStream(text, cm.options.tabSize, context)\n  stream.start = stream.pos = startAt || 0\n  if (text == \"\") callBlankLine(mode, context.state)\n  while (!stream.eol()) {\n    readToken(mode, stream, context.state)\n    stream.start = stream.pos\n  }\n}\n\nfunction callBlankLine(mode, state) {\n  if (mode.blankLine) return mode.blankLine(state)\n  if (!mode.innerMode) return\n  let inner = innerMode(mode, state)\n  if (inner.mode.blankLine) return inner.mode.blankLine(inner.state)\n}\n\nfunction readToken(mode, stream, state, inner) {\n  for (let i = 0; i < 10; i++) {\n    if (inner) inner[0] = innerMode(mode, state).mode\n    let style = mode.token(stream, state)\n    if (stream.pos > stream.start) return style\n  }\n  throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n}\n\nclass Token {\n  constructor(stream, type, state) {\n    this.start = stream.start; this.end = stream.pos\n    this.string = stream.current()\n    this.type = type || null\n    this.state = state\n  }\n}\n\n// Utility for getTokenAt and getLineTokens\nexport function takeToken(cm, pos, precise, asArray) {\n  let doc = cm.doc, mode = doc.mode, style\n  pos = clipPos(doc, pos)\n  let line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise)\n  let stream = new StringStream(line.text, cm.options.tabSize, context), tokens\n  if (asArray) tokens = []\n  while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n    stream.start = stream.pos\n    style = readToken(mode, stream, context.state)\n    if (asArray) tokens.push(new Token(stream, style, copyState(doc.mode, context.state)))\n  }\n  return asArray ? tokens : new Token(stream, style, context.state)\n}\n\nfunction extractLineClasses(type, output) {\n  if (type) for (;;) {\n    let lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/)\n    if (!lineClass) break\n    type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length)\n    let prop = lineClass[1] ? \"bgClass\" : \"textClass\"\n    if (output[prop] == null)\n      output[prop] = lineClass[2]\n    else if (!(new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\")).test(output[prop]))\n      output[prop] += \" \" + lineClass[2]\n  }\n  return type\n}\n\n// Run the given mode's parser over a line, calling f for each token.\nfunction runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n  let flattenSpans = mode.flattenSpans\n  if (flattenSpans == null) flattenSpans = cm.options.flattenSpans\n  let curStart = 0, curStyle = null\n  let stream = new StringStream(text, cm.options.tabSize, context), style\n  let inner = cm.options.addModeClass && [null]\n  if (text == \"\") extractLineClasses(callBlankLine(mode, context.state), lineClasses)\n  while (!stream.eol()) {\n    if (stream.pos > cm.options.maxHighlightLength) {\n      flattenSpans = false\n      if (forceToEnd) processLine(cm, text, context, stream.pos)\n      stream.pos = text.length\n      style = null\n    } else {\n      style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses)\n    }\n    if (inner) {\n      let mName = inner[0].name\n      if (mName) style = \"m-\" + (style ? mName + \" \" + style : mName)\n    }\n    if (!flattenSpans || curStyle != style) {\n      while (curStart < stream.start) {\n        curStart = Math.min(stream.start, curStart + 5000)\n        f(curStart, curStyle)\n      }\n      curStyle = style\n    }\n    stream.start = stream.pos\n  }\n  while (curStart < stream.pos) {\n    // Webkit seems to refuse to render text nodes longer than 57444\n    // characters, and returns inaccurate measurements in nodes\n    // starting around 5000 chars.\n    let pos = Math.min(stream.pos, curStart + 5000)\n    f(pos, curStyle)\n    curStart = pos\n  }\n}\n\n// Finds the line to start with when starting a parse. Tries to\n// find a line with a stateAfter, so that it can start with a\n// valid state. If that fails, it returns the line with the\n// smallest indentation, which tends to need the least context to\n// parse correctly.\nfunction findStartLine(cm, n, precise) {\n  let minindent, minline, doc = cm.doc\n  let lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100)\n  for (let search = n; search > lim; --search) {\n    if (search <= doc.first) return doc.first\n    let line = getLine(doc, search - 1), after = line.stateAfter\n    if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))\n      return search\n    let indented = countColumn(line.text, null, cm.options.tabSize)\n    if (minline == null || minindent > indented) {\n      minline = search - 1\n      minindent = indented\n    }\n  }\n  return minline\n}\n\nexport function retreatFrontier(doc, n) {\n  doc.modeFrontier = Math.min(doc.modeFrontier, n)\n  if (doc.highlightFrontier < n - 10) return\n  let start = doc.first\n  for (let line = n - 1; line > start; line--) {\n    let saved = getLine(doc, line).stateAfter\n    // change is on 3\n    // state on line 1 looked ahead 2 -- so saw 3\n    // test 1 + 2 < 3 should cover this\n    if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n      start = line + 1\n      break\n    }\n  }\n  doc.highlightFrontier = Math.min(doc.highlightFrontier, start)\n}\n", "import { copyObj, createObj } from \"./util/misc.js\"\n\n// Known modes, by name and by MIME\nexport let modes = {}, mimeModes = {}\n\n// Extra arguments are stored as the mode's dependencies, which is\n// used by (legacy) mechanisms like loadmode.js to automatically\n// load a mode. (Preferred mechanism is the require/define calls.)\nexport function defineMode(name, mode) {\n  if (arguments.length > 2)\n    mode.dependencies = Array.prototype.slice.call(arguments, 2)\n  modes[name] = mode\n}\n\nexport function defineMIME(mime, spec) {\n  mimeModes[mime] = spec\n}\n\n// Given a MIME type, a {name, ...options} config object, or a name\n// string, return a mode config object.\nexport function resolveMode(spec) {\n  if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n    spec = mimeModes[spec]\n  } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n    let found = mimeModes[spec.name]\n    if (typeof found == \"string\") found = {name: found}\n    spec = createObj(found, spec)\n    spec.name = found.name\n  } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n    return resolveMode(\"application/xml\")\n  } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n    return resolveMode(\"application/json\")\n  }\n  if (typeof spec == \"string\") return {name: spec}\n  else return spec || {name: \"null\"}\n}\n\n// Given a mode spec (anything that resolveMode accepts), find and\n// initialize an actual mode object.\nexport function getMode(options, spec) {\n  spec = resolveMode(spec)\n  let mfactory = modes[spec.name]\n  if (!mfactory) return getMode(options, \"text/plain\")\n  let modeObj = mfactory(options, spec)\n  if (modeExtensions.hasOwnProperty(spec.name)) {\n    let exts = modeExtensions[spec.name]\n    for (let prop in exts) {\n      if (!exts.hasOwnProperty(prop)) continue\n      if (modeObj.hasOwnProperty(prop)) modeObj[\"_\" + prop] = modeObj[prop]\n      modeObj[prop] = exts[prop]\n    }\n  }\n  modeObj.name = spec.name\n  if (spec.helperType) modeObj.helperType = spec.helperType\n  if (spec.modeProps) for (let prop in spec.modeProps)\n    modeObj[prop] = spec.modeProps[prop]\n\n  return modeObj\n}\n\n// This can be used to attach properties to mode objects from\n// outside the actual mode definition.\nexport let modeExtensions = {}\nexport function extendMode(mode, properties) {\n  let exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {})\n  copyObj(properties, exts)\n}\n\nexport function copyState(mode, state) {\n  if (state === true) return state\n  if (mode.copyState) return mode.copyState(state)\n  let nstate = {}\n  for (let n in state) {\n    let val = state[n]\n    if (val instanceof Array) val = val.concat([])\n    nstate[n] = val\n  }\n  return nstate\n}\n\n// Given a mode and a state (for that mode), find the inner mode and\n// state at the position that the state refers to.\nexport function innerMode(mode, state) {\n  let info\n  while (mode.innerMode) {\n    info = mode.innerMode(state)\n    if (!info || info.mode == mode) break\n    state = info.state\n    mode = info.mode\n  }\n  return info || {mode: mode, state: state}\n}\n\nexport function startState(mode, a1, a2) {\n  return mode.startState ? mode.startState(a1, a2) : true\n}\n", "import { countColumn } from \"./misc.js\"\n\n// STRING STREAM\n\n// Fed to the mode parsers, provides helper functions to make\n// parsers more succinct.\n\nclass StringStream {\n  constructor(string, tabSize, lineOracle) {\n    this.pos = this.start = 0\n    this.string = string\n    this.tabSize = tabSize || 8\n    this.lastColumnPos = this.lastColumnValue = 0\n    this.lineStart = 0\n    this.lineOracle = lineOracle\n  }\n\n  eol() {return this.pos >= this.string.length}\n  sol() {return this.pos == this.lineStart}\n  peek() {return this.string.charAt(this.pos) || undefined}\n  next() {\n    if (this.pos < this.string.length)\n      return this.string.charAt(this.pos++)\n  }\n  eat(match) {\n    let ch = this.string.charAt(this.pos)\n    let ok\n    if (typeof match == \"string\") ok = ch == match\n    else ok = ch && (match.test ? match.test(ch) : match(ch))\n    if (ok) {++this.pos; return ch}\n  }\n  eatWhile(match) {\n    let start = this.pos\n    while (this.eat(match)){}\n    return this.pos > start\n  }\n  eatSpace() {\n    let start = this.pos\n    while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos\n    return this.pos > start\n  }\n  skipToEnd() {this.pos = this.string.length}\n  skipTo(ch) {\n    let found = this.string.indexOf(ch, this.pos)\n    if (found > -1) {this.pos = found; return true}\n  }\n  backUp(n) {this.pos -= n}\n  column() {\n    if (this.lastColumnPos < this.start) {\n      this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue)\n      this.lastColumnPos = this.start\n    }\n    return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n  }\n  indentation() {\n    return countColumn(this.string, null, this.tabSize) -\n      (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n  }\n  match(pattern, consume, caseInsensitive) {\n    if (typeof pattern == \"string\") {\n      let cased = str => caseInsensitive ? str.toLowerCase() : str\n      let substr = this.string.substr(this.pos, pattern.length)\n      if (cased(substr) == cased(pattern)) {\n        if (consume !== false) this.pos += pattern.length\n        return true\n      }\n    } else {\n      let match = this.string.slice(this.pos).match(pattern)\n      if (match && match.index > 0) return null\n      if (match && consume !== false) this.pos += match[0].length\n      return match\n    }\n  }\n  current(){return this.string.slice(this.start, this.pos)}\n  hideFirstChars(n, inner) {\n    this.lineStart += n\n    try { return inner() }\n    finally { this.lineStart -= n }\n  }\n  lookAhead(n) {\n    let oracle = this.lineOracle\n    return oracle && oracle.lookAhead(n)\n  }\n  baseToken() {\n    let oracle = this.lineOracle\n    return oracle && oracle.baseToken(this.pos)\n  }\n}\n\nexport default StringStream\n", "import { indexOf, lst } from \"../util/misc.js\"\n\nimport { cmp } from \"./pos.js\"\nimport { sawCollapsedSpans } from \"./saw_special_spans.js\"\nimport { getLine, isLine, lineNo } from \"./utils_line.js\"\n\n// TEXTMARKER SPANS\n\nexport function MarkedSpan(marker, from, to) {\n  this.marker = marker\n  this.from = from; this.to = to\n}\n\n// Search an array of spans for a span matching the given marker.\nexport function getMarkedSpanFor(spans, marker) {\n  if (spans) for (let i = 0; i < spans.length; ++i) {\n    let span = spans[i]\n    if (span.marker == marker) return span\n  }\n}\n// Remove a span from an array, returning undefined if no spans are\n// left (we don't store arrays for lines without spans).\nexport function removeMarkedSpan(spans, span) {\n  let r\n  for (let i = 0; i < spans.length; ++i)\n    if (spans[i] != span) (r || (r = [])).push(spans[i])\n  return r\n}\n// Add a span to a line.\nexport function addMarkedSpan(line, span) {\n  line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span]\n  span.marker.attachLine(line)\n}\n\n// Used for the algorithm that adjusts markers for a change in the\n// document. These functions cut an array of spans at a given\n// character position, returning an array of remaining chunks (or\n// undefined if nothing remains).\nfunction markedSpansBefore(old, startCh, isInsert) {\n  let nw\n  if (old) for (let i = 0; i < old.length; ++i) {\n    let span = old[i], marker = span.marker\n    let startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh)\n    if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n      let endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh)\n      ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to))\n    }\n  }\n  return nw\n}\nfunction markedSpansAfter(old, endCh, isInsert) {\n  let nw\n  if (old) for (let i = 0; i < old.length; ++i) {\n    let span = old[i], marker = span.marker\n    let endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh)\n    if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n      let startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh)\n      ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n                                            span.to == null ? null : span.to - endCh))\n    }\n  }\n  return nw\n}\n\n// Given a change object, compute the new set of marker spans that\n// cover the line in which the change took place. Removes spans\n// entirely within the change, reconnects spans belonging to the\n// same marker that appear on both sides of the change, and cuts off\n// spans partially within the change. Returns an array of span\n// arrays with one element for each line in (after) the change.\nexport function stretchSpansOverChange(doc, change) {\n  if (change.full) return null\n  let oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans\n  let oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans\n  if (!oldFirst && !oldLast) return null\n\n  let startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0\n  // Get the spans that 'stick out' on both sides\n  let first = markedSpansBefore(oldFirst, startCh, isInsert)\n  let last = markedSpansAfter(oldLast, endCh, isInsert)\n\n  // Next, merge those two ends\n  let sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0)\n  if (first) {\n    // Fix up .to properties of first\n    for (let i = 0; i < first.length; ++i) {\n      let span = first[i]\n      if (span.to == null) {\n        let found = getMarkedSpanFor(last, span.marker)\n        if (!found) span.to = startCh\n        else if (sameLine) span.to = found.to == null ? null : found.to + offset\n      }\n    }\n  }\n  if (last) {\n    // Fix up .from in last (or move them into first in case of sameLine)\n    for (let i = 0; i < last.length; ++i) {\n      let span = last[i]\n      if (span.to != null) span.to += offset\n      if (span.from == null) {\n        let found = getMarkedSpanFor(first, span.marker)\n        if (!found) {\n          span.from = offset\n          if (sameLine) (first || (first = [])).push(span)\n        }\n      } else {\n        span.from += offset\n        if (sameLine) (first || (first = [])).push(span)\n      }\n    }\n  }\n  // Make sure we didn't create any zero-length spans\n  if (first) first = clearEmptySpans(first)\n  if (last && last != first) last = clearEmptySpans(last)\n\n  let newMarkers = [first]\n  if (!sameLine) {\n    // Fill gap with whole-line-spans\n    let gap = change.text.length - 2, gapMarkers\n    if (gap > 0 && first)\n      for (let i = 0; i < first.length; ++i)\n        if (first[i].to == null)\n          (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i].marker, null, null))\n    for (let i = 0; i < gap; ++i)\n      newMarkers.push(gapMarkers)\n    newMarkers.push(last)\n  }\n  return newMarkers\n}\n\n// Remove spans that are empty and don't have a clearWhenEmpty\n// option of false.\nfunction clearEmptySpans(spans) {\n  for (let i = 0; i < spans.length; ++i) {\n    let span = spans[i]\n    if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n      spans.splice(i--, 1)\n  }\n  if (!spans.length) return null\n  return spans\n}\n\n// Used to 'clip' out readOnly ranges when making a change.\nexport function removeReadOnlyRanges(doc, from, to) {\n  let markers = null\n  doc.iter(from.line, to.line + 1, line => {\n    if (line.markedSpans) for (let i = 0; i < line.markedSpans.length; ++i) {\n      let mark = line.markedSpans[i].marker\n      if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n        (markers || (markers = [])).push(mark)\n    }\n  })\n  if (!markers) return null\n  let parts = [{from: from, to: to}]\n  for (let i = 0; i < markers.length; ++i) {\n    let mk = markers[i], m = mk.find(0)\n    for (let j = 0; j < parts.length; ++j) {\n      let p = parts[j]\n      if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) continue\n      let newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to)\n      if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n        newParts.push({from: p.from, to: m.from})\n      if (dto > 0 || !mk.inclusiveRight && !dto)\n        newParts.push({from: m.to, to: p.to})\n      parts.splice.apply(parts, newParts)\n      j += newParts.length - 3\n    }\n  }\n  return parts\n}\n\n// Connect or disconnect spans from a line.\nexport function detachMarkedSpans(line) {\n  let spans = line.markedSpans\n  if (!spans) return\n  for (let i = 0; i < spans.length; ++i)\n    spans[i].marker.detachLine(line)\n  line.markedSpans = null\n}\nexport function attachMarkedSpans(line, spans) {\n  if (!spans) return\n  for (let i = 0; i < spans.length; ++i)\n    spans[i].marker.attachLine(line)\n  line.markedSpans = spans\n}\n\n// Helpers used when computing which overlapping collapsed span\n// counts as the larger one.\nfunction extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\nfunction extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n// Returns a number indicating which of two overlapping collapsed\n// spans is larger (and thus includes the other). Falls back to\n// comparing ids when the spans cover exactly the same range.\nexport function compareCollapsedMarkers(a, b) {\n  let lenDiff = a.lines.length - b.lines.length\n  if (lenDiff != 0) return lenDiff\n  let aPos = a.find(), bPos = b.find()\n  let fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b)\n  if (fromCmp) return -fromCmp\n  let toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b)\n  if (toCmp) return toCmp\n  return b.id - a.id\n}\n\n// Find out whether a line ends or starts in a collapsed span. If\n// so, return the marker for that span.\nfunction collapsedSpanAtSide(line, start) {\n  let sps = sawCollapsedSpans && line.markedSpans, found\n  if (sps) for (let sp, i = 0; i < sps.length; ++i) {\n    sp = sps[i]\n    if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n        (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n      found = sp.marker\n  }\n  return found\n}\nexport function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\nexport function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\nexport function collapsedSpanAround(line, ch) {\n  let sps = sawCollapsedSpans && line.markedSpans, found\n  if (sps) for (let i = 0; i < sps.length; ++i) {\n    let sp = sps[i]\n    if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) &&\n        (!found || compareCollapsedMarkers(found, sp.marker) < 0)) found = sp.marker\n  }\n  return found\n}\n\n// Test whether there exists a collapsed span that partially\n// overlaps (covers the start or end, but not both) of a new span.\n// Such overlap is not allowed.\nexport function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n  let line = getLine(doc, lineNo)\n  let sps = sawCollapsedSpans && line.markedSpans\n  if (sps) for (let i = 0; i < sps.length; ++i) {\n    let sp = sps[i]\n    if (!sp.marker.collapsed) continue\n    let found = sp.marker.find(0)\n    let fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker)\n    let toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker)\n    if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) continue\n    if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n        fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n      return true\n  }\n}\n\n// A visual line is a line as drawn on the screen. Folding, for\n// example, can cause multiple logical lines to appear on the same\n// visual line. This finds the start of the visual line that the\n// given line is part of (usually that is the line itself).\nexport function visualLine(line) {\n  let merged\n  while (merged = collapsedSpanAtStart(line))\n    line = merged.find(-1, true).line\n  return line\n}\n\nexport function visualLineEnd(line) {\n  let merged\n  while (merged = collapsedSpanAtEnd(line))\n    line = merged.find(1, true).line\n  return line\n}\n\n// Returns an array of logical lines that continue the visual line\n// started by the argument, or undefined if there are no such lines.\nexport function visualLineContinued(line) {\n  let merged, lines\n  while (merged = collapsedSpanAtEnd(line)) {\n    line = merged.find(1, true).line\n    ;(lines || (lines = [])).push(line)\n  }\n  return lines\n}\n\n// Get the line number of the start of the visual line that the\n// given line number is part of.\nexport function visualLineNo(doc, lineN) {\n  let line = getLine(doc, lineN), vis = visualLine(line)\n  if (line == vis) return lineN\n  return lineNo(vis)\n}\n\n// Get the line number of the start of the next visual line after\n// the given line.\nexport function visualLineEndNo(doc, lineN) {\n  if (lineN > doc.lastLine()) return lineN\n  let line = getLine(doc, lineN), merged\n  if (!lineIsHidden(doc, line)) return lineN\n  while (merged = collapsedSpanAtEnd(line))\n    line = merged.find(1, true).line\n  return lineNo(line) + 1\n}\n\n// Compute whether a line is hidden. Lines count as hidden when they\n// are part of a visual line that starts with another line, or when\n// they are entirely covered by collapsed, non-widget span.\nexport function lineIsHidden(doc, line) {\n  let sps = sawCollapsedSpans && line.markedSpans\n  if (sps) for (let sp, i = 0; i < sps.length; ++i) {\n    sp = sps[i]\n    if (!sp.marker.collapsed) continue\n    if (sp.from == null) return true\n    if (sp.marker.widgetNode) continue\n    if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n      return true\n  }\n}\nfunction lineIsHiddenInner(doc, line, span) {\n  if (span.to == null) {\n    let end = span.marker.find(1, true)\n    return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n  }\n  if (span.marker.inclusiveRight && span.to == line.text.length)\n    return true\n  for (let sp, i = 0; i < line.markedSpans.length; ++i) {\n    sp = line.markedSpans[i]\n    if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n        (sp.to == null || sp.to != span.from) &&\n        (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n        lineIsHiddenInner(doc, line, sp)) return true\n  }\n}\n\n// Find the height above the given line.\nexport function heightAtLine(lineObj) {\n  lineObj = visualLine(lineObj)\n\n  let h = 0, chunk = lineObj.parent\n  for (let i = 0; i < chunk.lines.length; ++i) {\n    let line = chunk.lines[i]\n    if (line == lineObj) break\n    else h += line.height\n  }\n  for (let p = chunk.parent; p; chunk = p, p = chunk.parent) {\n    for (let i = 0; i < p.children.length; ++i) {\n      let cur = p.children[i]\n      if (cur == chunk) break\n      else h += cur.height\n    }\n  }\n  return h\n}\n\n// Compute the character length of a line, taking into account\n// collapsed ranges (see markText) that might hide parts, and join\n// other lines onto it.\nexport function lineLength(line) {\n  if (line.height == 0) return 0\n  let len = line.text.length, merged, cur = line\n  while (merged = collapsedSpanAtStart(cur)) {\n    let found = merged.find(0, true)\n    cur = found.from.line\n    len += found.from.ch - found.to.ch\n  }\n  cur = line\n  while (merged = collapsedSpanAtEnd(cur)) {\n    let found = merged.find(0, true)\n    len -= cur.text.length - found.from.ch\n    cur = found.to.line\n    len += cur.text.length - found.to.ch\n  }\n  return len\n}\n\n// Find the longest line in the document.\nexport function findMaxLine(cm) {\n  let d = cm.display, doc = cm.doc\n  d.maxLine = getLine(doc, doc.first)\n  d.maxLineLength = lineLength(d.maxLine)\n  d.maxLineChanged = true\n  doc.iter(line => {\n    let len = lineLength(line)\n    if (len > d.maxLineLength) {\n      d.maxLineLength = len\n      d.maxLine = line\n    }\n  })\n}\n", "// Optimize some code when these features are not used.\nexport let sawReadOnlySpans = false, sawCollapsedSpans = false\n\nexport function seeReadOnlySpans() {\n  sawReadOnlySpans = true\n}\n\nexport function seeCollapsedSpans() {\n  sawCollapsedSpans = true\n}\n", "import { buildLineContent } from \"../line/line_data.js\"\nimport { lineNumberFor } from \"../line/utils_line.js\"\nimport { ie, ie_version } from \"../util/browser.js\"\nimport { elt, classTest } from \"../util/dom.js\"\nimport { signalLater } from \"../util/operation_group.js\"\n\n// When an aspect of a line changes, a string is added to\n// lineView.changes. This updates the relevant part of the line's\n// DOM structure.\nexport function updateLineForChanges(cm, lineView, lineN, dims) {\n  for (let j = 0; j < lineView.changes.length; j++) {\n    let type = lineView.changes[j]\n    if (type == \"text\") updateLineText(cm, lineView)\n    else if (type == \"gutter\") updateLineGutter(cm, lineView, lineN, dims)\n    else if (type == \"class\") updateLineClasses(cm, lineView)\n    else if (type == \"widget\") updateLineWidgets(cm, lineView, dims)\n  }\n  lineView.changes = null\n}\n\n// Lines with gutter elements, widgets or a background class need to\n// be wrapped, and have the extra elements added to the wrapper div\nfunction ensureLineWrapped(lineView) {\n  if (lineView.node == lineView.text) {\n    lineView.node = elt(\"div\", null, null, \"position: relative\")\n    if (lineView.text.parentNode)\n      lineView.text.parentNode.replaceChild(lineView.node, lineView.text)\n    lineView.node.appendChild(lineView.text)\n    if (ie && ie_version < 8) lineView.node.style.zIndex = 2\n  }\n  return lineView.node\n}\n\nfunction updateLineBackground(cm, lineView) {\n  let cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass\n  if (cls) cls += \" CodeMirror-linebackground\"\n  if (lineView.background) {\n    if (cls) lineView.background.className = cls\n    else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null }\n  } else if (cls) {\n    let wrap = ensureLineWrapped(lineView)\n    lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild)\n    cm.display.input.setUneditable(lineView.background)\n  }\n}\n\n// Wrapper around buildLineContent which will reuse the structure\n// in display.externalMeasured when possible.\nfunction getLineContent(cm, lineView) {\n  let ext = cm.display.externalMeasured\n  if (ext && ext.line == lineView.line) {\n    cm.display.externalMeasured = null\n    lineView.measure = ext.measure\n    return ext.built\n  }\n  return buildLineContent(cm, lineView)\n}\n\n// Redraw the line's text. Interacts with the background and text\n// classes because the mode may output tokens that influence these\n// classes.\nfunction updateLineText(cm, lineView) {\n  let cls = lineView.text.className\n  let built = getLineContent(cm, lineView)\n  if (lineView.text == lineView.node) lineView.node = built.pre\n  lineView.text.parentNode.replaceChild(built.pre, lineView.text)\n  lineView.text = built.pre\n  if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n    lineView.bgClass = built.bgClass\n    lineView.textClass = built.textClass\n    updateLineClasses(cm, lineView)\n  } else if (cls) {\n    lineView.text.className = cls\n  }\n}\n\nfunction updateLineClasses(cm, lineView) {\n  updateLineBackground(cm, lineView)\n  if (lineView.line.wrapClass)\n    ensureLineWrapped(lineView).className = lineView.line.wrapClass\n  else if (lineView.node != lineView.text)\n    lineView.node.className = \"\"\n  let textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass\n  lineView.text.className = textClass || \"\"\n}\n\nfunction updateLineGutter(cm, lineView, lineN, dims) {\n  if (lineView.gutter) {\n    lineView.node.removeChild(lineView.gutter)\n    lineView.gutter = null\n  }\n  if (lineView.gutterBackground) {\n    lineView.node.removeChild(lineView.gutterBackground)\n    lineView.gutterBackground = null\n  }\n  if (lineView.line.gutterClass) {\n    let wrap = ensureLineWrapped(lineView)\n    lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n                                    `left: ${cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth}px; width: ${dims.gutterTotalWidth}px`)\n    cm.display.input.setUneditable(lineView.gutterBackground)\n    wrap.insertBefore(lineView.gutterBackground, lineView.text)\n  }\n  let markers = lineView.line.gutterMarkers\n  if (cm.options.lineNumbers || markers) {\n    let wrap = ensureLineWrapped(lineView)\n    let gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", `left: ${cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth}px`)\n    cm.display.input.setUneditable(gutterWrap)\n    wrap.insertBefore(gutterWrap, lineView.text)\n    if (lineView.line.gutterClass)\n      gutterWrap.className += \" \" + lineView.line.gutterClass\n    if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n      lineView.lineNumber = gutterWrap.appendChild(\n        elt(\"div\", lineNumberFor(cm.options, lineN),\n            \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n            `left: ${dims.gutterLeft[\"CodeMirror-linenumbers\"]}px; width: ${cm.display.lineNumInnerWidth}px`))\n    if (markers) for (let k = 0; k < cm.display.gutterSpecs.length; ++k) {\n      let id = cm.display.gutterSpecs[k].className, found = markers.hasOwnProperty(id) && markers[id]\n      if (found)\n        gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n                                   `left: ${dims.gutterLeft[id]}px; width: ${dims.gutterWidth[id]}px`))\n    }\n  }\n}\n\nfunction updateLineWidgets(cm, lineView, dims) {\n  if (lineView.alignable) lineView.alignable = null\n  let isWidget = classTest(\"CodeMirror-linewidget\")\n  for (let node = lineView.node.firstChild, next; node; node = next) {\n    next = node.nextSibling\n    if (isWidget.test(node.className)) lineView.node.removeChild(node)\n  }\n  insertLineWidgets(cm, lineView, dims)\n}\n\n// Build a line's DOM representation from scratch\nexport function buildLineElement(cm, lineView, lineN, dims) {\n  let built = getLineContent(cm, lineView)\n  lineView.text = lineView.node = built.pre\n  if (built.bgClass) lineView.bgClass = built.bgClass\n  if (built.textClass) lineView.textClass = built.textClass\n\n  updateLineClasses(cm, lineView)\n  updateLineGutter(cm, lineView, lineN, dims)\n  insertLineWidgets(cm, lineView, dims)\n  return lineView.node\n}\n\n// A lineView may contain multiple logical lines (when merged by\n// collapsed spans). The widgets for all of them need to be drawn.\nfunction insertLineWidgets(cm, lineView, dims) {\n  insertLineWidgetsFor(cm, lineView.line, lineView, dims, true)\n  if (lineView.rest) for (let i = 0; i < lineView.rest.length; i++)\n    insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false)\n}\n\nfunction insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n  if (!line.widgets) return\n  let wrap = ensureLineWrapped(lineView)\n  for (let i = 0, ws = line.widgets; i < ws.length; ++i) {\n    let widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"))\n    if (!widget.handleMouseEvents) node.setAttribute(\"cm-ignore-events\", \"true\")\n    positionLineWidget(widget, node, lineView, dims)\n    cm.display.input.setUneditable(node)\n    if (allowAbove && widget.above)\n      wrap.insertBefore(node, lineView.gutter || lineView.text)\n    else\n      wrap.appendChild(node)\n    signalLater(widget, \"redraw\")\n  }\n}\n\nfunction positionLineWidget(widget, node, lineView, dims) {\n  if (widget.noHScroll) {\n    ;(lineView.alignable || (lineView.alignable = [])).push(node)\n    let width = dims.wrapperWidth\n    node.style.left = dims.fixedPos + \"px\"\n    if (!widget.coverGutter) {\n      width -= dims.gutterTotalWidth\n      node.style.paddingLeft = dims.gutterTotalWidth + \"px\"\n    }\n    node.style.width = width + \"px\"\n  }\n  if (widget.coverGutter) {\n    node.style.zIndex = 5\n    node.style.position = \"relative\"\n    if (!widget.noHScroll) node.style.marginLeft = -dims.gutterTotalWidth + \"px\"\n  }\n}\n", "import { contains, elt, removeChildrenAndAdd } from \"../util/dom.js\"\nimport { e_target } from \"../util/event.js\"\n\nexport function widgetHeight(widget) {\n  if (widget.height != null) return widget.height\n  let cm = widget.doc.cm\n  if (!cm) return 0\n  if (!contains(document.body, widget.node)) {\n    let parentStyle = \"position: relative;\"\n    if (widget.coverGutter)\n      parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"\n    if (widget.noHScroll)\n      parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"\n    removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle))\n  }\n  return widget.height = widget.node.parentNode.offsetHeight\n}\n\n// Return true when the given mouse event happened in a widget\nexport function eventInWidget(display, e) {\n  for (let n = e_target(e); n != display.wrapper; n = n.parentNode) {\n    if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n        (n.parentNode == display.sizer && n != display.mover))\n      return true\n  }\n}\n", "import { getContextBefore, highlightLine, processLine } from \"../line/highlight.js\"\nimport { copyState } from \"../modes.js\"\nimport { bind } from \"../util/misc.js\"\n\nimport { runInOp } from \"./operations.js\"\nimport { regLineChange } from \"./view_tracking.js\"\n\n// HIGHLIGHT WORKER\n\nexport function startWorker(cm, time) {\n  if (cm.doc.highlightFrontier < cm.display.viewTo)\n    cm.state.highlight.set(time, bind(highlightWorker, cm))\n}\n\nfunction highlightWorker(cm) {\n  let doc = cm.doc\n  if (doc.highlightFrontier >= cm.display.viewTo) return\n  let end = +new Date + cm.options.workTime\n  let context = getContextBefore(cm, doc.highlightFrontier)\n  let changedLines = []\n\n  doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), line => {\n    if (context.line >= cm.display.viewFrom) { // Visible\n      let oldStyles = line.styles\n      let resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null\n      let highlighted = highlightLine(cm, line, context, true)\n      if (resetState) context.state = resetState\n      line.styles = highlighted.styles\n      let oldCls = line.styleClasses, newCls = highlighted.classes\n      if (newCls) line.styleClasses = newCls\n      else if (oldCls) line.styleClasses = null\n      let ischange = !oldStyles || oldStyles.length != line.styles.length ||\n        oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass)\n      for (let i = 0; !ischange && i < oldStyles.length; ++i) ischange = oldStyles[i] != line.styles[i]\n      if (ischange) changedLines.push(context.line)\n      line.stateAfter = context.save()\n      context.nextLine()\n    } else {\n      if (line.text.length <= cm.options.maxHighlightLength)\n        processLine(cm, line.text, context)\n      line.stateAfter = context.line % 5 == 0 ? context.save() : null\n      context.nextLine()\n    }\n    if (+new Date > end) {\n      startWorker(cm, cm.options.workDelay)\n      return true\n    }\n  })\n  doc.highlightFrontier = context.line\n  doc.modeFrontier = Math.max(doc.modeFrontier, context.line)\n  if (changedLines.length) runInOp(cm, () => {\n    for (let i = 0; i < changedLines.length; i++)\n      regLineChange(cm, changedLines[i], \"text\")\n  })\n}\n", "import { clipPos } from \"../line/pos.js\"\nimport { findMaxLine } from \"../line/spans.js\"\nimport { displayWidth, measureChar, scrollGap } from \"../measurement/position_measurement.js\"\nimport { signal } from \"../util/event.js\"\nimport { activeElt } from \"../util/dom.js\"\nimport { finishOperation, pushOperation } from \"../util/operation_group.js\"\n\nimport { ensureFocus } from \"./focus.js\"\nimport { measureForScrollbars, updateScrollbars } from \"./scrollbars.js\"\nimport { restartBlink } from \"./selection.js\"\nimport { maybeScrollWindow, scrollPosIntoView, setScrollLeft, setScrollTop } from \"./scrolling.js\"\nimport { DisplayUpdate, maybeClipScrollbars, postUpdateDisplay, setDocumentHeight, updateDisplayIfNeeded } from \"./update_display.js\"\nimport { updateHeightsInViewport } from \"./update_lines.js\"\n\n// Operations are used to wrap a series of changes to the editor\n// state in such a way that each change won't have to update the\n// cursor and display (which would be awkward, slow, and\n// error-prone). Instead, display updates are batched and then all\n// combined and executed at once.\n\nlet nextOpId = 0\n// Start a new operation.\nexport function startOperation(cm) {\n  cm.curOp = {\n    cm: cm,\n    viewChanged: false,      // Flag that indicates that lines might need to be redrawn\n    startHeight: cm.doc.height, // Used to detect need to update scrollbar\n    forceUpdate: false,      // Used to force a redraw\n    updateInput: 0,       // Whether to reset the input textarea\n    typing: false,           // Whether this reset should be careful to leave existing text (for compositing)\n    changeObjs: null,        // Accumulated changes, for firing change events\n    cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n    cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n    selectionChanged: false, // Whether the selection needs to be redrawn\n    updateMaxLine: false,    // Set when the widest line needs to be determined anew\n    scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n    scrollToPos: null,       // Used to scroll to a specific position\n    focus: false,\n    id: ++nextOpId           // Unique ID\n  }\n  pushOperation(cm.curOp)\n}\n\n// Finish an operation, updating the display and signalling delayed events\nexport function endOperation(cm) {\n  let op = cm.curOp\n  if (op) finishOperation(op, group => {\n    for (let i = 0; i < group.ops.length; i++)\n      group.ops[i].cm.curOp = null\n    endOperations(group)\n  })\n}\n\n// The DOM updates done when an operation finishes are batched so\n// that the minimum number of relayouts are required.\nfunction endOperations(group) {\n  let ops = group.ops\n  for (let i = 0; i < ops.length; i++) // Read DOM\n    endOperation_R1(ops[i])\n  for (let i = 0; i < ops.length; i++) // Write DOM (maybe)\n    endOperation_W1(ops[i])\n  for (let i = 0; i < ops.length; i++) // Read DOM\n    endOperation_R2(ops[i])\n  for (let i = 0; i < ops.length; i++) // Write DOM (maybe)\n    endOperation_W2(ops[i])\n  for (let i = 0; i < ops.length; i++) // Read DOM\n    endOperation_finish(ops[i])\n}\n\nfunction endOperation_R1(op) {\n  let cm = op.cm, display = cm.display\n  maybeClipScrollbars(cm)\n  if (op.updateMaxLine) findMaxLine(cm)\n\n  op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n    op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n                       op.scrollToPos.to.line >= display.viewTo) ||\n    display.maxLineChanged && cm.options.lineWrapping\n  op.update = op.mustUpdate &&\n    new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate)\n}\n\nfunction endOperation_W1(op) {\n  op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update)\n}\n\nfunction endOperation_R2(op) {\n  let cm = op.cm, display = cm.display\n  if (op.updatedDisplay) updateHeightsInViewport(cm)\n\n  op.barMeasure = measureForScrollbars(cm)\n\n  // If the max line changed since it was last measured, measure it,\n  // and ensure the document's width matches it.\n  // updateDisplay_W2 will use these properties to do the actual resizing\n  if (display.maxLineChanged && !cm.options.lineWrapping) {\n    op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3\n    cm.display.sizerWidth = op.adjustWidthTo\n    op.barMeasure.scrollWidth =\n      Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth)\n    op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm))\n  }\n\n  if (op.updatedDisplay || op.selectionChanged)\n    op.preparedSelection = display.input.prepareSelection()\n}\n\nfunction endOperation_W2(op) {\n  let cm = op.cm\n\n  if (op.adjustWidthTo != null) {\n    cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\"\n    if (op.maxScrollLeft < cm.doc.scrollLeft)\n      setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true)\n    cm.display.maxLineChanged = false\n  }\n\n  let takeFocus = op.focus && op.focus == activeElt()\n  if (op.preparedSelection)\n    cm.display.input.showSelection(op.preparedSelection, takeFocus)\n  if (op.updatedDisplay || op.startHeight != cm.doc.height)\n    updateScrollbars(cm, op.barMeasure)\n  if (op.updatedDisplay)\n    setDocumentHeight(cm, op.barMeasure)\n\n  if (op.selectionChanged) restartBlink(cm)\n\n  if (cm.state.focused && op.updateInput)\n    cm.display.input.reset(op.typing)\n  if (takeFocus) ensureFocus(op.cm)\n}\n\nfunction endOperation_finish(op) {\n  let cm = op.cm, display = cm.display, doc = cm.doc\n\n  if (op.updatedDisplay) postUpdateDisplay(cm, op.update)\n\n  // Abort mouse wheel delta measurement, when scrolling explicitly\n  if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n    display.wheelStartX = display.wheelStartY = null\n\n  // Propagate the scroll position to the actual DOM scroller\n  if (op.scrollTop != null) setScrollTop(cm, op.scrollTop, op.forceScroll)\n\n  if (op.scrollLeft != null) setScrollLeft(cm, op.scrollLeft, true, true)\n  // If we need to scroll a specific position into view, do so.\n  if (op.scrollToPos) {\n    let rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n                                 clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin)\n    maybeScrollWindow(cm, rect)\n  }\n\n  // Fire events for markers that are hidden/unidden by editing or\n  // undoing\n  let hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers\n  if (hidden) for (let i = 0; i < hidden.length; ++i)\n    if (!hidden[i].lines.length) signal(hidden[i], \"hide\")\n  if (unhidden) for (let i = 0; i < unhidden.length; ++i)\n    if (unhidden[i].lines.length) signal(unhidden[i], \"unhide\")\n\n  if (display.wrapper.offsetHeight)\n    doc.scrollTop = cm.display.scroller.scrollTop\n\n  // Fire change events, and delayed event handlers\n  if (op.changeObjs)\n    signal(cm, \"changes\", cm, op.changeObjs)\n  if (op.update)\n    op.update.finish()\n}\n\n// Run the given function in an operation\nexport function runInOp(cm, f) {\n  if (cm.curOp) return f()\n  startOperation(cm)\n  try { return f() }\n  finally { endOperation(cm) }\n}\n// Wraps a function in an operation. Returns the wrapped function.\nexport function operation(cm, f) {\n  return function() {\n    if (cm.curOp) return f.apply(cm, arguments)\n    startOperation(cm)\n    try { return f.apply(cm, arguments) }\n    finally { endOperation(cm) }\n  }\n}\n// Used to add methods to editor and doc instances, wrapping them in\n// operations.\nexport function methodOp(f) {\n  return function() {\n    if (this.curOp) return f.apply(this, arguments)\n    startOperation(this)\n    try { return f.apply(this, arguments) }\n    finally { endOperation(this) }\n  }\n}\nexport function docMethodOp(f) {\n  return function() {\n    let cm = this.cm\n    if (!cm || cm.curOp) return f.apply(this, arguments)\n    startOperation(cm)\n    try { return f.apply(this, arguments) }\n    finally { endOperation(cm) }\n  }\n}\n", "import { restartBlink } from \"./selection.js\"\nimport { webkit } from \"../util/browser.js\"\nimport { addClass, rmClass } from \"../util/dom.js\"\nimport { signal } from \"../util/event.js\"\n\nexport function ensureFocus(cm) {\n  if (!cm.state.focused) { cm.display.input.focus(); onFocus(cm) }\n}\n\nexport function delayBlurEvent(cm) {\n  cm.state.delayingBlurEvent = true\n  setTimeout(() => { if (cm.state.delayingBlurEvent) {\n    cm.state.delayingBlurEvent = false\n    onBlur(cm)\n  } }, 100)\n}\n\nexport function onFocus(cm, e) {\n  if (cm.state.delayingBlurEvent) cm.state.delayingBlurEvent = false\n\n  if (cm.options.readOnly == \"nocursor\") return\n  if (!cm.state.focused) {\n    signal(cm, \"focus\", cm, e)\n    cm.state.focused = true\n    addClass(cm.display.wrapper, \"CodeMirror-focused\")\n    // This test prevents this from firing when a context\n    // menu is closed (since the input reset would kill the\n    // select-all detection hack)\n    if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n      cm.display.input.reset()\n      if (webkit) setTimeout(() => cm.display.input.reset(true), 20) // Issue #1730\n    }\n    cm.display.input.receivedFocus()\n  }\n  restartBlink(cm)\n}\nexport function onBlur(cm, e) {\n  if (cm.state.delayingBlurEvent) return\n\n  if (cm.state.focused) {\n    signal(cm, \"blur\", cm, e)\n    cm.state.focused = false\n    rmClass(cm.display.wrapper, \"CodeMirror-focused\")\n  }\n  clearInterval(cm.display.blinker)\n  setTimeout(() => { if (!cm.state.focused) cm.display.shift = false }, 150)\n}\n", "import { Pos } from \"../line/pos.js\"\nimport { visualLine } from \"../line/spans.js\"\nimport { getLine } from \"../line/utils_line.js\"\nimport { charCoords, cursorCoords, displayWidth, paddingH, wrappedLineExtentChar } from \"../measurement/position_measurement.js\"\nimport { getOrder, iterateBidiSections } from \"../util/bidi.js\"\nimport { elt } from \"../util/dom.js\"\nimport { onBlur } from \"./focus.js\"\n\nexport function updateSelection(cm) {\n  cm.display.input.showSelection(cm.display.input.prepareSelection())\n}\n\nexport function prepareSelection(cm, primary = true) {\n  let doc = cm.doc, result = {}\n  let curFragment = result.cursors = document.createDocumentFragment()\n  let selFragment = result.selection = document.createDocumentFragment()\n\n  for (let i = 0; i < doc.sel.ranges.length; i++) {\n    if (!primary && i == doc.sel.primIndex) continue\n    let range = doc.sel.ranges[i]\n    if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) continue\n    let collapsed = range.empty()\n    if (collapsed || cm.options.showCursorWhenSelecting)\n      drawSelectionCursor(cm, range.head, curFragment)\n    if (!collapsed)\n      drawSelectionRange(cm, range, selFragment)\n  }\n  return result\n}\n\n// Draws a cursor for the given range\nexport function drawSelectionCursor(cm, head, output) {\n  let pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine)\n\n  let cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"))\n  cursor.style.left = pos.left + \"px\"\n  cursor.style.top = pos.top + \"px\"\n  cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\"\n\n  if (pos.other) {\n    // Secondary cursor, shown when on a 'jump' in bi-directional text\n    let otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"))\n    otherCursor.style.display = \"\"\n    otherCursor.style.left = pos.other.left + \"px\"\n    otherCursor.style.top = pos.other.top + \"px\"\n    otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\"\n  }\n}\n\nfunction cmpCoords(a, b) { return a.top - b.top || a.left - b.left }\n\n// Draws the given range as a highlighted selection\nfunction drawSelectionRange(cm, range, output) {\n  let display = cm.display, doc = cm.doc\n  let fragment = document.createDocumentFragment()\n  let padding = paddingH(cm.display), leftSide = padding.left\n  let rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right\n  let docLTR = doc.direction == \"ltr\"\n\n  function add(left, top, width, bottom) {\n    if (top < 0) top = 0\n    top = Math.round(top)\n    bottom = Math.round(bottom)\n    fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", `position: absolute; left: ${left}px;\n                             top: ${top}px; width: ${width == null ? rightSide - left : width}px;\n                             height: ${bottom - top}px`))\n  }\n\n  function drawForLine(line, fromArg, toArg) {\n    let lineObj = getLine(doc, line)\n    let lineLen = lineObj.text.length\n    let start, end\n    function coords(ch, bias) {\n      return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n    }\n\n    function wrapX(pos, dir, side) {\n      let extent = wrappedLineExtentChar(cm, lineObj, null, pos)\n      let prop = (dir == \"ltr\") == (side == \"after\") ? \"left\" : \"right\"\n      let ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1)\n      return coords(ch, prop)[prop]\n    }\n\n    let order = getOrder(lineObj, doc.direction)\n    iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, (from, to, dir, i) => {\n      let ltr = dir == \"ltr\"\n      let fromPos = coords(from, ltr ? \"left\" : \"right\")\n      let toPos = coords(to - 1, ltr ? \"right\" : \"left\")\n\n      let openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen\n      let first = i == 0, last = !order || i == order.length - 1\n      if (toPos.top - fromPos.top <= 3) { // Single line\n        let openLeft = (docLTR ? openStart : openEnd) && first\n        let openRight = (docLTR ? openEnd : openStart) && last\n        let left = openLeft ? leftSide : (ltr ? fromPos : toPos).left\n        let right = openRight ? rightSide : (ltr ? toPos : fromPos).right\n        add(left, fromPos.top, right - left, fromPos.bottom)\n      } else { // Multiple lines\n        let topLeft, topRight, botLeft, botRight\n        if (ltr) {\n          topLeft = docLTR && openStart && first ? leftSide : fromPos.left\n          topRight = docLTR ? rightSide : wrapX(from, dir, \"before\")\n          botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\")\n          botRight = docLTR && openEnd && last ? rightSide : toPos.right\n        } else {\n          topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\")\n          topRight = !docLTR && openStart && first ? rightSide : fromPos.right\n          botLeft = !docLTR && openEnd && last ? leftSide : toPos.left\n          botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\")\n        }\n        add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom)\n        if (fromPos.bottom < toPos.top) add(leftSide, fromPos.bottom, null, toPos.top)\n        add(botLeft, toPos.top, botRight - botLeft, toPos.bottom)\n      }\n\n      if (!start || cmpCoords(fromPos, start) < 0) start = fromPos\n      if (cmpCoords(toPos, start) < 0) start = toPos\n      if (!end || cmpCoords(fromPos, end) < 0) end = fromPos\n      if (cmpCoords(toPos, end) < 0) end = toPos\n    })\n    return {start: start, end: end}\n  }\n\n  let sFrom = range.from(), sTo = range.to()\n  if (sFrom.line == sTo.line) {\n    drawForLine(sFrom.line, sFrom.ch, sTo.ch)\n  } else {\n    let fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line)\n    let singleVLine = visualLine(fromLine) == visualLine(toLine)\n    let leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end\n    let rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start\n    if (singleVLine) {\n      if (leftEnd.top < rightStart.top - 2) {\n        add(leftEnd.right, leftEnd.top, null, leftEnd.bottom)\n        add(leftSide, rightStart.top, rightStart.left, rightStart.bottom)\n      } else {\n        add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom)\n      }\n    }\n    if (leftEnd.bottom < rightStart.top)\n      add(leftSide, leftEnd.bottom, null, rightStart.top)\n  }\n\n  output.appendChild(fragment)\n}\n\n// Cursor-blinking\nexport function restartBlink(cm) {\n  if (!cm.state.focused) return\n  let display = cm.display\n  clearInterval(display.blinker)\n  let on = true\n  display.cursorDiv.style.visibility = \"\"\n  if (cm.options.cursorBlinkRate > 0)\n    display.blinker = setInterval(() => {\n      if (!cm.hasFocus()) onBlur(cm)\n      display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\"\n    }, cm.options.cursorBlinkRate)\n  else if (cm.options.cursorBlinkRate < 0)\n    display.cursorDiv.style.visibility = \"hidden\"\n}\n", "import { addClass, elt, rmClass } from \"../util/dom.js\"\nimport { on } from \"../util/event.js\"\nimport { scrollGap, paddingVert } from \"../measurement/position_measurement.js\"\nimport { ie, ie_version, mac, mac_geMountainLion } from \"../util/browser.js\"\nimport { updateHeightsInViewport } from \"./update_lines.js\"\nimport { Delayed } from \"../util/misc.js\"\n\nimport { setScrollLeft, updateScrollTop } from \"./scrolling.js\"\n\n// SCROLLBARS\n\n// Prepare DOM reads needed to update the scrollbars. Done in one\n// shot to minimize update/measure roundtrips.\nexport function measureForScrollbars(cm) {\n  let d = cm.display, gutterW = d.gutters.offsetWidth\n  let docH = Math.round(cm.doc.height + paddingVert(cm.display))\n  return {\n    clientHeight: d.scroller.clientHeight,\n    viewHeight: d.wrapper.clientHeight,\n    scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n    viewWidth: d.wrapper.clientWidth,\n    barLeft: cm.options.fixedGutter ? gutterW : 0,\n    docHeight: docH,\n    scrollHeight: docH + scrollGap(cm) + d.barHeight,\n    nativeBarWidth: d.nativeBarWidth,\n    gutterWidth: gutterW\n  }\n}\n\nclass NativeScrollbars {\n  constructor(place, scroll, cm) {\n    this.cm = cm\n    let vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\")\n    let horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\")\n    vert.tabIndex = horiz.tabIndex = -1\n    place(vert); place(horiz)\n\n    on(vert, \"scroll\", () => {\n      if (vert.clientHeight) scroll(vert.scrollTop, \"vertical\")\n    })\n    on(horiz, \"scroll\", () => {\n      if (horiz.clientWidth) scroll(horiz.scrollLeft, \"horizontal\")\n    })\n\n    this.checkedZeroWidth = false\n    // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n    if (ie && ie_version < 8) this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"\n  }\n\n  update(measure) {\n    let needsH = measure.scrollWidth > measure.clientWidth + 1\n    let needsV = measure.scrollHeight > measure.clientHeight + 1\n    let sWidth = measure.nativeBarWidth\n\n    if (needsV) {\n      this.vert.style.display = \"block\"\n      this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\"\n      let totalHeight = measure.viewHeight - (needsH ? sWidth : 0)\n      // A bug in IE8 can cause this value to be negative, so guard it.\n      this.vert.firstChild.style.height =\n        Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\"\n    } else {\n      this.vert.style.display = \"\"\n      this.vert.firstChild.style.height = \"0\"\n    }\n\n    if (needsH) {\n      this.horiz.style.display = \"block\"\n      this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\"\n      this.horiz.style.left = measure.barLeft + \"px\"\n      let totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0)\n      this.horiz.firstChild.style.width =\n        Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\"\n    } else {\n      this.horiz.style.display = \"\"\n      this.horiz.firstChild.style.width = \"0\"\n    }\n\n    if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n      if (sWidth == 0) this.zeroWidthHack()\n      this.checkedZeroWidth = true\n    }\n\n    return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n  }\n\n  setScrollLeft(pos) {\n    if (this.horiz.scrollLeft != pos) this.horiz.scrollLeft = pos\n    if (this.disableHoriz) this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\")\n  }\n\n  setScrollTop(pos) {\n    if (this.vert.scrollTop != pos) this.vert.scrollTop = pos\n    if (this.disableVert) this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\")\n  }\n\n  zeroWidthHack() {\n    let w = mac && !mac_geMountainLion ? \"12px\" : \"18px\"\n    this.horiz.style.height = this.vert.style.width = w\n    this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\"\n    this.disableHoriz = new Delayed\n    this.disableVert = new Delayed\n  }\n\n  enableZeroWidthBar(bar, delay, type) {\n    bar.style.pointerEvents = \"auto\"\n    function maybeDisable() {\n      // To find out whether the scrollbar is still visible, we\n      // check whether the element under the pixel in the bottom\n      // right corner of the scrollbar box is the scrollbar box\n      // itself (when the bar is still visible) or its filler child\n      // (when the bar is hidden). If it is still visible, we keep\n      // it enabled, if it's hidden, we disable pointer events.\n      let box = bar.getBoundingClientRect()\n      let elt = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n          : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1)\n      if (elt != bar) bar.style.pointerEvents = \"none\"\n      else delay.set(1000, maybeDisable)\n    }\n    delay.set(1000, maybeDisable)\n  }\n\n  clear() {\n    let parent = this.horiz.parentNode\n    parent.removeChild(this.horiz)\n    parent.removeChild(this.vert)\n  }\n}\n\nclass NullScrollbars {\n  update() { return {bottom: 0, right: 0} }\n  setScrollLeft() {}\n  setScrollTop() {}\n  clear() {}\n}\n\nexport function updateScrollbars(cm, measure) {\n  if (!measure) measure = measureForScrollbars(cm)\n  let startWidth = cm.display.barWidth, startHeight = cm.display.barHeight\n  updateScrollbarsInner(cm, measure)\n  for (let i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n    if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n      updateHeightsInViewport(cm)\n    updateScrollbarsInner(cm, measureForScrollbars(cm))\n    startWidth = cm.display.barWidth; startHeight = cm.display.barHeight\n  }\n}\n\n// Re-synchronize the fake scrollbars with the actual size of the\n// content.\nfunction updateScrollbarsInner(cm, measure) {\n  let d = cm.display\n  let sizes = d.scrollbars.update(measure)\n\n  d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\"\n  d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\"\n  d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\"\n\n  if (sizes.right && sizes.bottom) {\n    d.scrollbarFiller.style.display = \"block\"\n    d.scrollbarFiller.style.height = sizes.bottom + \"px\"\n    d.scrollbarFiller.style.width = sizes.right + \"px\"\n  } else d.scrollbarFiller.style.display = \"\"\n  if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n    d.gutterFiller.style.display = \"block\"\n    d.gutterFiller.style.height = sizes.bottom + \"px\"\n    d.gutterFiller.style.width = measure.gutterWidth + \"px\"\n  } else d.gutterFiller.style.display = \"\"\n}\n\nexport let scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars}\n\nexport function initScrollbars(cm) {\n  if (cm.display.scrollbars) {\n    cm.display.scrollbars.clear()\n    if (cm.display.scrollbars.addClass)\n      rmClass(cm.display.wrapper, cm.display.scrollbars.addClass)\n  }\n\n  cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](node => {\n    cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller)\n    // Prevent clicks in the scrollbars from killing focus\n    on(node, \"mousedown\", () => {\n      if (cm.state.focused) setTimeout(() => cm.display.input.focus(), 0)\n    })\n    node.setAttribute(\"cm-not-content\", \"true\")\n  }, (pos, axis) => {\n    if (axis == \"horizontal\") setScrollLeft(cm, pos)\n    else updateScrollTop(cm, pos)\n  }, cm)\n  if (cm.display.scrollbars.addClass)\n    addClass(cm.display.wrapper, cm.display.scrollbars.addClass)\n}\n", "import { heightAtLine } from \"../line/spans.js\"\nimport { getLine, lineAtHeight, updateLineHeight } from \"../line/utils_line.js\"\nimport { paddingTop, charWidth } from \"../measurement/position_measurement.js\"\nimport { ie, ie_version } from \"../util/browser.js\"\n\n// Read the actual heights of the rendered lines, and update their\n// stored heights to match.\nexport function updateHeightsInViewport(cm) {\n  let display = cm.display\n  let prevBottom = display.lineDiv.offsetTop\n  for (let i = 0; i < display.view.length; i++) {\n    let cur = display.view[i], wrapping = cm.options.lineWrapping\n    let height, width = 0\n    if (cur.hidden) continue\n    if (ie && ie_version < 8) {\n      let bot = cur.node.offsetTop + cur.node.offsetHeight\n      height = bot - prevBottom\n      prevBottom = bot\n    } else {\n      let box = cur.node.getBoundingClientRect()\n      height = box.bottom - box.top\n      // Check that lines don't extend past the right of the current\n      // editor width\n      if (!wrapping && cur.text.firstChild)\n        width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1\n    }\n    let diff = cur.line.height - height\n    if (diff > .005 || diff < -.005) {\n      updateLineHeight(cur.line, height)\n      updateWidgetHeight(cur.line)\n      if (cur.rest) for (let j = 0; j < cur.rest.length; j++)\n        updateWidgetHeight(cur.rest[j])\n    }\n    if (width > cm.display.sizerWidth) {\n      let chWidth = Math.ceil(width / charWidth(cm.display))\n      if (chWidth > cm.display.maxLineLength) {\n        cm.display.maxLineLength = chWidth\n        cm.display.maxLine = cur.line\n        cm.display.maxLineChanged = true\n      }\n    }\n  }\n}\n\n// Read and store the height of line widgets associated with the\n// given line.\nfunction updateWidgetHeight(line) {\n  if (line.widgets) for (let i = 0; i < line.widgets.length; ++i) {\n    let w = line.widgets[i], parent = w.node.parentNode\n    if (parent) w.height = parent.offsetHeight\n  }\n}\n\n// Compute the lines that are visible in a given viewport (defaults\n// the the current scroll position). viewport may contain top,\n// height, and ensure (see op.scrollToPos) properties.\nexport function visibleLines(display, doc, viewport) {\n  let top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop\n  top = Math.floor(top - paddingTop(display))\n  let bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight\n\n  let from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom)\n  // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n  // forces those lines into the viewport (if possible).\n  if (viewport && viewport.ensure) {\n    let ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line\n    if (ensureFrom < from) {\n      from = ensureFrom\n      to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight)\n    } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n      from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight)\n      to = ensureTo\n    }\n  }\n  return {from: from, to: Math.max(to, from + 1)}\n}\n", "import { sawCollapsedSpans } from \"../line/saw_special_spans.js\"\nimport { heightAtLine, visualLineEndNo, visualLineNo } from \"../line/spans.js\"\nimport { getLine, lineNumberFor } from \"../line/utils_line.js\"\nimport { displayHeight, displayWidth, getDimensions, paddingVert, scrollGap } from \"../measurement/position_measurement.js\"\nimport { mac, webkit } from \"../util/browser.js\"\nimport { activeElt, removeChildren, contains } from \"../util/dom.js\"\nimport { hasHandler, signal } from \"../util/event.js\"\nimport { indexOf } from \"../util/misc.js\"\n\nimport { buildLineElement, updateLineForChanges } from \"./update_line.js\"\nimport { startWorker } from \"./highlight_worker.js\"\nimport { maybeUpdateLineNumberWidth } from \"./line_numbers.js\"\nimport { measureForScrollbars, updateScrollbars } from \"./scrollbars.js\"\nimport { updateSelection } from \"./selection.js\"\nimport { updateHeightsInViewport, visibleLines } from \"./update_lines.js\"\nimport { adjustView, countDirtyView, resetView } from \"./view_tracking.js\"\n\n// DISPLAY DRAWING\n\nexport class DisplayUpdate {\n  constructor(cm, viewport, force) {\n    let display = cm.display\n\n    this.viewport = viewport\n    // Store some values that we'll need later (but don't want to force a relayout for)\n    this.visible = visibleLines(display, cm.doc, viewport)\n    this.editorIsHidden = !display.wrapper.offsetWidth\n    this.wrapperHeight = display.wrapper.clientHeight\n    this.wrapperWidth = display.wrapper.clientWidth\n    this.oldDisplayWidth = displayWidth(cm)\n    this.force = force\n    this.dims = getDimensions(cm)\n    this.events = []\n  }\n\n  signal(emitter, type) {\n    if (hasHandler(emitter, type))\n      this.events.push(arguments)\n  }\n  finish() {\n    for (let i = 0; i < this.events.length; i++)\n      signal.apply(null, this.events[i])\n  }\n}\n\nexport function maybeClipScrollbars(cm) {\n  let display = cm.display\n  if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n    display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth\n    display.heightForcer.style.height = scrollGap(cm) + \"px\"\n    display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\"\n    display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\"\n    display.scrollbarsClipped = true\n  }\n}\n\nfunction selectionSnapshot(cm) {\n  if (cm.hasFocus()) return null\n  let active = activeElt()\n  if (!active || !contains(cm.display.lineDiv, active)) return null\n  let result = {activeElt: active}\n  if (window.getSelection) {\n    let sel = window.getSelection()\n    if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n      result.anchorNode = sel.anchorNode\n      result.anchorOffset = sel.anchorOffset\n      result.focusNode = sel.focusNode\n      result.focusOffset = sel.focusOffset\n    }\n  }\n  return result\n}\n\nfunction restoreSelection(snapshot) {\n  if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) return\n  snapshot.activeElt.focus()\n  if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) &&\n      snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n    let sel = window.getSelection(), range = document.createRange()\n    range.setEnd(snapshot.anchorNode, snapshot.anchorOffset)\n    range.collapse(false)\n    sel.removeAllRanges()\n    sel.addRange(range)\n    sel.extend(snapshot.focusNode, snapshot.focusOffset)\n  }\n}\n\n// Does the actual updating of the line display. Bails out\n// (returning false) when there is nothing to be done and forced is\n// false.\nexport function updateDisplayIfNeeded(cm, update) {\n  let display = cm.display, doc = cm.doc\n\n  if (update.editorIsHidden) {\n    resetView(cm)\n    return false\n  }\n\n  // Bail out if the visible area is already rendered and nothing changed.\n  if (!update.force &&\n      update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n      (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n      display.renderedView == display.view && countDirtyView(cm) == 0)\n    return false\n\n  if (maybeUpdateLineNumberWidth(cm)) {\n    resetView(cm)\n    update.dims = getDimensions(cm)\n  }\n\n  // Compute a suitable new viewport (from & to)\n  let end = doc.first + doc.size\n  let from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first)\n  let to = Math.min(end, update.visible.to + cm.options.viewportMargin)\n  if (display.viewFrom < from && from - display.viewFrom < 20) from = Math.max(doc.first, display.viewFrom)\n  if (display.viewTo > to && display.viewTo - to < 20) to = Math.min(end, display.viewTo)\n  if (sawCollapsedSpans) {\n    from = visualLineNo(cm.doc, from)\n    to = visualLineEndNo(cm.doc, to)\n  }\n\n  let different = from != display.viewFrom || to != display.viewTo ||\n    display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth\n  adjustView(cm, from, to)\n\n  display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom))\n  // Position the mover div to align with the current scroll position\n  cm.display.mover.style.top = display.viewOffset + \"px\"\n\n  let toUpdate = countDirtyView(cm)\n  if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n      (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n    return false\n\n  // For big changes, we hide the enclosing element during the\n  // update, since that speeds up the operations on most browsers.\n  let selSnapshot = selectionSnapshot(cm)\n  if (toUpdate > 4) display.lineDiv.style.display = \"none\"\n  patchDisplay(cm, display.updateLineNumbers, update.dims)\n  if (toUpdate > 4) display.lineDiv.style.display = \"\"\n  display.renderedView = display.view\n  // There might have been a widget with a focused element that got\n  // hidden or updated, if so re-focus it.\n  restoreSelection(selSnapshot)\n\n  // Prevent selection and cursors from interfering with the scroll\n  // width and height.\n  removeChildren(display.cursorDiv)\n  removeChildren(display.selectionDiv)\n  display.gutters.style.height = display.sizer.style.minHeight = 0\n\n  if (different) {\n    display.lastWrapHeight = update.wrapperHeight\n    display.lastWrapWidth = update.wrapperWidth\n    startWorker(cm, 400)\n  }\n\n  display.updateLineNumbers = null\n\n  return true\n}\n\nexport function postUpdateDisplay(cm, update) {\n  let viewport = update.viewport\n\n  for (let first = true;; first = false) {\n    if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n      // Clip forced viewport to actual scrollable area.\n      if (viewport && viewport.top != null)\n        viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}\n      // Updated line heights might result in the drawn area not\n      // actually covering the viewport. Keep looping until it does.\n      update.visible = visibleLines(cm.display, cm.doc, viewport)\n      if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n        break\n    } else if (first) {\n      update.visible = visibleLines(cm.display, cm.doc, viewport)\n    }\n    if (!updateDisplayIfNeeded(cm, update)) break\n    updateHeightsInViewport(cm)\n    let barMeasure = measureForScrollbars(cm)\n    updateSelection(cm)\n    updateScrollbars(cm, barMeasure)\n    setDocumentHeight(cm, barMeasure)\n    update.force = false\n  }\n\n  update.signal(cm, \"update\", cm)\n  if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n    update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo)\n    cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo\n  }\n}\n\nexport function updateDisplaySimple(cm, viewport) {\n  let update = new DisplayUpdate(cm, viewport)\n  if (updateDisplayIfNeeded(cm, update)) {\n    updateHeightsInViewport(cm)\n    postUpdateDisplay(cm, update)\n    let barMeasure = measureForScrollbars(cm)\n    updateSelection(cm)\n    updateScrollbars(cm, barMeasure)\n    setDocumentHeight(cm, barMeasure)\n    update.finish()\n  }\n}\n\n// Sync the actual display DOM structure with display.view, removing\n// nodes for lines that are no longer in view, and creating the ones\n// that are not there yet, and updating the ones that are out of\n// date.\nfunction patchDisplay(cm, updateNumbersFrom, dims) {\n  let display = cm.display, lineNumbers = cm.options.lineNumbers\n  let container = display.lineDiv, cur = container.firstChild\n\n  function rm(node) {\n    let next = node.nextSibling\n    // Works around a throw-scroll bug in OS X Webkit\n    if (webkit && mac && cm.display.currentWheelTarget == node)\n      node.style.display = \"none\"\n    else\n      node.parentNode.removeChild(node)\n    return next\n  }\n\n  let view = display.view, lineN = display.viewFrom\n  // Loop over the elements in the view, syncing cur (the DOM nodes\n  // in display.lineDiv) with the view as we go.\n  for (let i = 0; i < view.length; i++) {\n    let lineView = view[i]\n    if (lineView.hidden) {\n    } else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n      let node = buildLineElement(cm, lineView, lineN, dims)\n      container.insertBefore(node, cur)\n    } else { // Already drawn\n      while (cur != lineView.node) cur = rm(cur)\n      let updateNumber = lineNumbers && updateNumbersFrom != null &&\n        updateNumbersFrom <= lineN && lineView.lineNumber\n      if (lineView.changes) {\n        if (indexOf(lineView.changes, \"gutter\") > -1) updateNumber = false\n        updateLineForChanges(cm, lineView, lineN, dims)\n      }\n      if (updateNumber) {\n        removeChildren(lineView.lineNumber)\n        lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)))\n      }\n      cur = lineView.node.nextSibling\n    }\n    lineN += lineView.size\n  }\n  while (cur) cur = rm(cur)\n}\n\nexport function updateGutterSpace(display) {\n  let width = display.gutters.offsetWidth\n  display.sizer.style.marginLeft = width + \"px\"\n}\n\nexport function setDocumentHeight(cm, measure) {\n  cm.display.sizer.style.minHeight = measure.docHeight + \"px\"\n  cm.display.heightForcer.style.top = measure.docHeight + \"px\"\n  cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\"\n}\n", "import { lineNumberFor } from \"../line/utils_line.js\"\nimport { compensateForHScroll } from \"../measurement/position_measurement.js\"\nimport { elt } from \"../util/dom.js\"\n\nimport { updateGutterSpace } from \"./update_display.js\"\n\n// Re-align line numbers and gutter marks to compensate for\n// horizontal scrolling.\nexport function alignHorizontally(cm) {\n  let display = cm.display, view = display.view\n  if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) return\n  let comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft\n  let gutterW = display.gutters.offsetWidth, left = comp + \"px\"\n  for (let i = 0; i < view.length; i++) if (!view[i].hidden) {\n    if (cm.options.fixedGutter) {\n      if (view[i].gutter)\n        view[i].gutter.style.left = left\n      if (view[i].gutterBackground)\n        view[i].gutterBackground.style.left = left\n    }\n    let align = view[i].alignable\n    if (align) for (let j = 0; j < align.length; j++)\n      align[j].style.left = left\n  }\n  if (cm.options.fixedGutter)\n    display.gutters.style.left = (comp + gutterW) + \"px\"\n}\n\n// Used to ensure that the line number gutter is still the right\n// size for the current document size. Returns true when an update\n// is needed.\nexport function maybeUpdateLineNumberWidth(cm) {\n  if (!cm.options.lineNumbers) return false\n  let doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display\n  if (last.length != display.lineNumChars) {\n    let test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n                                               \"CodeMirror-linenumber CodeMirror-gutter-elt\"))\n    let innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW\n    display.lineGutter.style.width = \"\"\n    display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1\n    display.lineNumWidth = display.lineNumInnerWidth + padding\n    display.lineNumChars = display.lineNumInnerWidth ? last.length : -1\n    display.lineGutter.style.width = display.lineNumWidth + \"px\"\n    updateGutterSpace(cm.display)\n    return true\n  }\n  return false\n}\n", "import { buildViewArray } from \"../line/line_data.js\"\nimport { sawCollapsedSpans } from \"../line/saw_special_spans.js\"\nimport { visualLineEndNo, visualLineNo } from \"../line/spans.js\"\nimport { findViewIndex } from \"../measurement/position_measurement.js\"\nimport { indexOf } from \"../util/misc.js\"\n\n// Updates the display.view data structure for a given change to the\n// document. From and to are in pre-change coordinates. Lendiff is\n// the amount of lines added or subtracted by the change. This is\n// used for changes that span multiple lines, or change the way\n// lines are divided into visual lines. regLineChange (below)\n// registers single-line changes.\nexport function regChange(cm, from, to, lendiff) {\n  if (from == null) from = cm.doc.first\n  if (to == null) to = cm.doc.first + cm.doc.size\n  if (!lendiff) lendiff = 0\n\n  let display = cm.display\n  if (lendiff && to < display.viewTo &&\n      (display.updateLineNumbers == null || display.updateLineNumbers > from))\n    display.updateLineNumbers = from\n\n  cm.curOp.viewChanged = true\n\n  if (from >= display.viewTo) { // Change after\n    if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n      resetView(cm)\n  } else if (to <= display.viewFrom) { // Change before\n    if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n      resetView(cm)\n    } else {\n      display.viewFrom += lendiff\n      display.viewTo += lendiff\n    }\n  } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n    resetView(cm)\n  } else if (from <= display.viewFrom) { // Top overlap\n    let cut = viewCuttingPoint(cm, to, to + lendiff, 1)\n    if (cut) {\n      display.view = display.view.slice(cut.index)\n      display.viewFrom = cut.lineN\n      display.viewTo += lendiff\n    } else {\n      resetView(cm)\n    }\n  } else if (to >= display.viewTo) { // Bottom overlap\n    let cut = viewCuttingPoint(cm, from, from, -1)\n    if (cut) {\n      display.view = display.view.slice(0, cut.index)\n      display.viewTo = cut.lineN\n    } else {\n      resetView(cm)\n    }\n  } else { // Gap in the middle\n    let cutTop = viewCuttingPoint(cm, from, from, -1)\n    let cutBot = viewCuttingPoint(cm, to, to + lendiff, 1)\n    if (cutTop && cutBot) {\n      display.view = display.view.slice(0, cutTop.index)\n        .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n        .concat(display.view.slice(cutBot.index))\n      display.viewTo += lendiff\n    } else {\n      resetView(cm)\n    }\n  }\n\n  let ext = display.externalMeasured\n  if (ext) {\n    if (to < ext.lineN)\n      ext.lineN += lendiff\n    else if (from < ext.lineN + ext.size)\n      display.externalMeasured = null\n  }\n}\n\n// Register a change to a single line. Type must be one of \"text\",\n// \"gutter\", \"class\", \"widget\"\nexport function regLineChange(cm, line, type) {\n  cm.curOp.viewChanged = true\n  let display = cm.display, ext = cm.display.externalMeasured\n  if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n    display.externalMeasured = null\n\n  if (line < display.viewFrom || line >= display.viewTo) return\n  let lineView = display.view[findViewIndex(cm, line)]\n  if (lineView.node == null) return\n  let arr = lineView.changes || (lineView.changes = [])\n  if (indexOf(arr, type) == -1) arr.push(type)\n}\n\n// Clear the view.\nexport function resetView(cm) {\n  cm.display.viewFrom = cm.display.viewTo = cm.doc.first\n  cm.display.view = []\n  cm.display.viewOffset = 0\n}\n\nfunction viewCuttingPoint(cm, oldN, newN, dir) {\n  let index = findViewIndex(cm, oldN), diff, view = cm.display.view\n  if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n    return {index: index, lineN: newN}\n  let n = cm.display.viewFrom\n  for (let i = 0; i < index; i++)\n    n += view[i].size\n  if (n != oldN) {\n    if (dir > 0) {\n      if (index == view.length - 1) return null\n      diff = (n + view[index].size) - oldN\n      index++\n    } else {\n      diff = n - oldN\n    }\n    oldN += diff; newN += diff\n  }\n  while (visualLineNo(cm.doc, newN) != newN) {\n    if (index == (dir < 0 ? 0 : view.length - 1)) return null\n    newN += dir * view[index - (dir < 0 ? 1 : 0)].size\n    index += dir\n  }\n  return {index: index, lineN: newN}\n}\n\n// Force the view to cover a given range, adding empty view element\n// or clipping off existing ones as needed.\nexport function adjustView(cm, from, to) {\n  let display = cm.display, view = display.view\n  if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n    display.view = buildViewArray(cm, from, to)\n    display.viewFrom = from\n  } else {\n    if (display.viewFrom > from)\n      display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view)\n    else if (display.viewFrom < from)\n      display.view = display.view.slice(findViewIndex(cm, from))\n    display.viewFrom = from\n    if (display.viewTo < to)\n      display.view = display.view.concat(buildViewArray(cm, display.viewTo, to))\n    else if (display.viewTo > to)\n      display.view = display.view.slice(0, findViewIndex(cm, to))\n  }\n  display.viewTo = to\n}\n\n// Count the number of lines in the view whose DOM representation is\n// out of date (or nonexistent).\nexport function countDirtyView(cm) {\n  let view = cm.display.view, dirty = 0\n  for (let i = 0; i < view.length; i++) {\n    let lineView = view[i]\n    if (!lineView.hidden && (!lineView.node || lineView.changes)) ++dirty\n  }\n  return dirty\n}\n", "import { cmp, copyPos } from \"../line/pos.js\"\nimport { stretchSpansOverChange } from \"../line/spans.js\"\nimport { getBetween } from \"../line/utils_line.js\"\nimport { signal } from \"../util/event.js\"\nimport { indexOf, lst } from \"../util/misc.js\"\n\nimport { changeEnd } from \"./change_measurement.js\"\nimport { linkedDocs } from \"./document_data.js\"\nimport { Selection } from \"./selection.js\"\n\nexport function History(startGen) {\n  // Arrays of change events and selections. Doing something adds an\n  // event to done and clears undo. Undoing moves events from done\n  // to undone, redoing moves them in the other direction.\n  this.done = []; this.undone = []\n  this.undoDepth = Infinity\n  // Used to track when changes can be merged into a single undo\n  // event\n  this.lastModTime = this.lastSelTime = 0\n  this.lastOp = this.lastSelOp = null\n  this.lastOrigin = this.lastSelOrigin = null\n  // Used by the isClean() method\n  this.generation = this.maxGeneration = startGen || 1\n}\n\n// Create a history change event from an updateDoc-style change\n// object.\nexport function historyChangeFromChange(doc, change) {\n  let histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)}\n  attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1)\n  linkedDocs(doc, doc => attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1), true)\n  return histChange\n}\n\n// Pop all selection events off the end of a history array. Stop at\n// a change event.\nfunction clearSelectionEvents(array) {\n  while (array.length) {\n    let last = lst(array)\n    if (last.ranges) array.pop()\n    else break\n  }\n}\n\n// Find the top change event in the history. Pop off selection\n// events that are in the way.\nfunction lastChangeEvent(hist, force) {\n  if (force) {\n    clearSelectionEvents(hist.done)\n    return lst(hist.done)\n  } else if (hist.done.length && !lst(hist.done).ranges) {\n    return lst(hist.done)\n  } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n    hist.done.pop()\n    return lst(hist.done)\n  }\n}\n\n// Register a change in the history. Merges changes that are within\n// a single operation, or are close together with an origin that\n// allows merging (starting with \"+\") into a single event.\nexport function addChangeToHistory(doc, change, selAfter, opId) {\n  let hist = doc.history\n  hist.undone.length = 0\n  let time = +new Date, cur\n  let last\n\n  if ((hist.lastOp == opId ||\n       hist.lastOrigin == change.origin && change.origin &&\n       ((change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) ||\n        change.origin.charAt(0) == \"*\")) &&\n      (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n    // Merge this change into the last event\n    last = lst(cur.changes)\n    if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n      // Optimized case for simple insertion -- don't want to add\n      // new changesets for every character typed\n      last.to = changeEnd(change)\n    } else {\n      // Add new sub-event\n      cur.changes.push(historyChangeFromChange(doc, change))\n    }\n  } else {\n    // Can not be merged, start a new event.\n    let before = lst(hist.done)\n    if (!before || !before.ranges)\n      pushSelectionToHistory(doc.sel, hist.done)\n    cur = {changes: [historyChangeFromChange(doc, change)],\n           generation: hist.generation}\n    hist.done.push(cur)\n    while (hist.done.length > hist.undoDepth) {\n      hist.done.shift()\n      if (!hist.done[0].ranges) hist.done.shift()\n    }\n  }\n  hist.done.push(selAfter)\n  hist.generation = ++hist.maxGeneration\n  hist.lastModTime = hist.lastSelTime = time\n  hist.lastOp = hist.lastSelOp = opId\n  hist.lastOrigin = hist.lastSelOrigin = change.origin\n\n  if (!last) signal(doc, \"historyAdded\")\n}\n\nfunction selectionEventCanBeMerged(doc, origin, prev, sel) {\n  let ch = origin.charAt(0)\n  return ch == \"*\" ||\n    ch == \"+\" &&\n    prev.ranges.length == sel.ranges.length &&\n    prev.somethingSelected() == sel.somethingSelected() &&\n    new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n}\n\n// Called whenever the selection changes, sets the new selection as\n// the pending selection in the history, and pushes the old pending\n// selection into the 'done' array when it was significantly\n// different (in number of selected ranges, emptiness, or time).\nexport function addSelectionToHistory(doc, sel, opId, options) {\n  let hist = doc.history, origin = options && options.origin\n\n  // A new event is started when the previous origin does not match\n  // the current, or the origins don't allow matching. Origins\n  // starting with * are always merged, those starting with + are\n  // merged when similar and close together in time.\n  if (opId == hist.lastSelOp ||\n      (origin && hist.lastSelOrigin == origin &&\n       (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n        selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n    hist.done[hist.done.length - 1] = sel\n  else\n    pushSelectionToHistory(sel, hist.done)\n\n  hist.lastSelTime = +new Date\n  hist.lastSelOrigin = origin\n  hist.lastSelOp = opId\n  if (options && options.clearRedo !== false)\n    clearSelectionEvents(hist.undone)\n}\n\nexport function pushSelectionToHistory(sel, dest) {\n  let top = lst(dest)\n  if (!(top && top.ranges && top.equals(sel)))\n    dest.push(sel)\n}\n\n// Used to store marked span information in the history.\nfunction attachLocalSpans(doc, change, from, to) {\n  let existing = change[\"spans_\" + doc.id], n = 0\n  doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), line => {\n    if (line.markedSpans)\n      (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans\n    ++n\n  })\n}\n\n// When un/re-doing restores text containing marked spans, those\n// that have been explicitly cleared should not be restored.\nfunction removeClearedSpans(spans) {\n  if (!spans) return null\n  let out\n  for (let i = 0; i < spans.length; ++i) {\n    if (spans[i].marker.explicitlyCleared) { if (!out) out = spans.slice(0, i) }\n    else if (out) out.push(spans[i])\n  }\n  return !out ? spans : out.length ? out : null\n}\n\n// Retrieve and filter the old marked spans stored in a change event.\nfunction getOldSpans(doc, change) {\n  let found = change[\"spans_\" + doc.id]\n  if (!found) return null\n  let nw = []\n  for (let i = 0; i < change.text.length; ++i)\n    nw.push(removeClearedSpans(found[i]))\n  return nw\n}\n\n// Used for un/re-doing changes from the history. Combines the\n// result of computing the existing spans with the set of spans that\n// existed in the history (so that deleting around a span and then\n// undoing brings back the span).\nexport function mergeOldSpans(doc, change) {\n  let old = getOldSpans(doc, change)\n  let stretched = stretchSpansOverChange(doc, change)\n  if (!old) return stretched\n  if (!stretched) return old\n\n  for (let i = 0; i < old.length; ++i) {\n    let oldCur = old[i], stretchCur = stretched[i]\n    if (oldCur && stretchCur) {\n      spans: for (let j = 0; j < stretchCur.length; ++j) {\n        let span = stretchCur[j]\n        for (let k = 0; k < oldCur.length; ++k)\n          if (oldCur[k].marker == span.marker) continue spans\n        oldCur.push(span)\n      }\n    } else if (stretchCur) {\n      old[i] = stretchCur\n    }\n  }\n  return old\n}\n\n// Used both to provide a JSON-safe object in .getHistory, and, when\n// detaching a document, to split the history in two\nexport function copyHistoryArray(events, newGroup, instantiateSel) {\n  let copy = []\n  for (let i = 0; i < events.length; ++i) {\n    let event = events[i]\n    if (event.ranges) {\n      copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event)\n      continue\n    }\n    let changes = event.changes, newChanges = []\n    copy.push({changes: newChanges})\n    for (let j = 0; j < changes.length; ++j) {\n      let change = changes[j], m\n      newChanges.push({from: change.from, to: change.to, text: change.text})\n      if (newGroup) for (var prop in change) if (m = prop.match(/^spans_(\\d+)$/)) {\n        if (indexOf(newGroup, Number(m[1])) > -1) {\n          lst(newChanges)[prop] = change[prop]\n          delete change[prop]\n        }\n      }\n    }\n  }\n  return copy\n}\n", "import { cmp, Pos } from \"../line/pos.js\"\nimport { lst } from \"../util/misc.js\"\n\nimport { normalizeSelection, Range, Selection } from \"./selection.js\"\n\n// Compute the position of the end of a change (its 'to' property\n// refers to the pre-change end).\nexport function changeEnd(change) {\n  if (!change.text) return change.to\n  return Pos(change.from.line + change.text.length - 1,\n             lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n}\n\n// Adjust a position to refer to the post-change position of the\n// same text, or the end of the change if the change covers it.\nfunction adjustForChange(pos, change) {\n  if (cmp(pos, change.from) < 0) return pos\n  if (cmp(pos, change.to) <= 0) return changeEnd(change)\n\n  let line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch\n  if (pos.line == change.to.line) ch += changeEnd(change).ch - change.to.ch\n  return Pos(line, ch)\n}\n\nexport function computeSelAfterChange(doc, change) {\n  let out = []\n  for (let i = 0; i < doc.sel.ranges.length; i++) {\n    let range = doc.sel.ranges[i]\n    out.push(new Range(adjustForChange(range.anchor, change),\n                       adjustForChange(range.head, change)))\n  }\n  return normalizeSelection(doc.cm, out, doc.sel.primIndex)\n}\n\nfunction offsetPos(pos, old, nw) {\n  if (pos.line == old.line)\n    return Pos(nw.line, pos.ch - old.ch + nw.ch)\n  else\n    return Pos(nw.line + (pos.line - old.line), pos.ch)\n}\n\n// Used by replaceSelections to allow moving the selection to the\n// start or around the replaced test. Hint may be \"start\" or \"around\".\nexport function computeReplacedSel(doc, changes, hint) {\n  let out = []\n  let oldPrev = Pos(doc.first, 0), newPrev = oldPrev\n  for (let i = 0; i < changes.length; i++) {\n    let change = changes[i]\n    let from = offsetPos(change.from, oldPrev, newPrev)\n    let to = offsetPos(changeEnd(change), oldPrev, newPrev)\n    oldPrev = change.to\n    newPrev = to\n    if (hint == \"around\") {\n      let range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0\n      out[i] = new Range(inv ? to : from, inv ? from : to)\n    } else {\n      out[i] = new Range(from, from)\n    }\n  }\n  return new Selection(out, doc.sel.primIndex)\n}\n", "import { cmp, copyPos, equalCursorPos, maxPos, minPos } from \"../line/pos.js\"\nimport { indexOf } from \"../util/misc.js\"\n\n// Selection objects are immutable. A new one is created every time\n// the selection changes. A selection is one or more non-overlapping\n// (and non-touching) ranges, sorted, and an integer that indicates\n// which one is the primary selection (the one that's scrolled into\n// view, that getCursor returns, etc).\nexport class Selection {\n  constructor(ranges, primIndex) {\n    this.ranges = ranges\n    this.primIndex = primIndex\n  }\n\n  primary() { return this.ranges[this.primIndex] }\n\n  equals(other) {\n    if (other == this) return true\n    if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) return false\n    for (let i = 0; i < this.ranges.length; i++) {\n      let here = this.ranges[i], there = other.ranges[i]\n      if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) return false\n    }\n    return true\n  }\n\n  deepCopy() {\n    let out = []\n    for (let i = 0; i < this.ranges.length; i++)\n      out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head))\n    return new Selection(out, this.primIndex)\n  }\n\n  somethingSelected() {\n    for (let i = 0; i < this.ranges.length; i++)\n      if (!this.ranges[i].empty()) return true\n    return false\n  }\n\n  contains(pos, end) {\n    if (!end) end = pos\n    for (let i = 0; i < this.ranges.length; i++) {\n      let range = this.ranges[i]\n      if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n        return i\n    }\n    return -1\n  }\n}\n\nexport class Range {\n  constructor(anchor, head) {\n    this.anchor = anchor; this.head = head\n  }\n\n  from() { return minPos(this.anchor, this.head) }\n  to() { return maxPos(this.anchor, this.head) }\n  empty() { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch }\n}\n\n// Take an unsorted, potentially overlapping set of ranges, and\n// build a selection out of it. 'Consumes' ranges array (modifying\n// it).\nexport function normalizeSelection(cm, ranges, primIndex) {\n  let mayTouch = cm && cm.options.selectionsMayTouch\n  let prim = ranges[primIndex]\n  ranges.sort((a, b) => cmp(a.from(), b.from()))\n  primIndex = indexOf(ranges, prim)\n  for (let i = 1; i < ranges.length; i++) {\n    let cur = ranges[i], prev = ranges[i - 1]\n    let diff = cmp(prev.to(), cur.from())\n    if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n      let from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to())\n      let inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head\n      if (i <= primIndex) --primIndex\n      ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to))\n    }\n  }\n  return new Selection(ranges, primIndex)\n}\n\nexport function simpleSelection(anchor, head) {\n  return new Selection([new Range(anchor, head || anchor)], 0)\n}\n", "import { loadMode } from \"../display/mode_state.js\"\nimport { runInOp } from \"../display/operations.js\"\nimport { regChange } from \"../display/view_tracking.js\"\nimport { Line, updateLine } from \"../line/line_data.js\"\nimport { findMaxLine } from \"../line/spans.js\"\nimport { getLine } from \"../line/utils_line.js\"\nimport { estimateLineHeights } from \"../measurement/position_measurement.js\"\nimport { addClass, rmClass } from \"../util/dom.js\"\nimport { lst } from \"../util/misc.js\"\nimport { signalLater } from \"../util/operation_group.js\"\n\n// DOCUMENT DATA STRUCTURE\n\n// By default, updates that start and end at the beginning of a line\n// are treated specially, in order to make the association of line\n// widgets and marker elements with the text behave more intuitive.\nexport function isWholeLineUpdate(doc, change) {\n  return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n    (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n}\n\n// Perform a change on the document data structure.\nexport function updateDoc(doc, change, markedSpans, estimateHeight) {\n  function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n  function update(line, text, spans) {\n    updateLine(line, text, spans, estimateHeight)\n    signalLater(line, \"change\", line, change)\n  }\n  function linesFor(start, end) {\n    let result = []\n    for (let i = start; i < end; ++i)\n      result.push(new Line(text[i], spansFor(i), estimateHeight))\n    return result\n  }\n\n  let from = change.from, to = change.to, text = change.text\n  let firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line)\n  let lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line\n\n  // Adjust the line structure\n  if (change.full) {\n    doc.insert(0, linesFor(0, text.length))\n    doc.remove(text.length, doc.size - text.length)\n  } else if (isWholeLineUpdate(doc, change)) {\n    // This is a whole-line replace. Treated specially to make\n    // sure line objects move the way they are supposed to.\n    let added = linesFor(0, text.length - 1)\n    update(lastLine, lastLine.text, lastSpans)\n    if (nlines) doc.remove(from.line, nlines)\n    if (added.length) doc.insert(from.line, added)\n  } else if (firstLine == lastLine) {\n    if (text.length == 1) {\n      update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans)\n    } else {\n      let added = linesFor(1, text.length - 1)\n      added.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight))\n      update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0))\n      doc.insert(from.line + 1, added)\n    }\n  } else if (text.length == 1) {\n    update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0))\n    doc.remove(from.line + 1, nlines)\n  } else {\n    update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0))\n    update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans)\n    let added = linesFor(1, text.length - 1)\n    if (nlines > 1) doc.remove(from.line + 1, nlines - 1)\n    doc.insert(from.line + 1, added)\n  }\n\n  signalLater(doc, \"change\", doc, change)\n}\n\n// Call f for all linked documents.\nexport function linkedDocs(doc, f, sharedHistOnly) {\n  function propagate(doc, skip, sharedHist) {\n    if (doc.linked) for (let i = 0; i < doc.linked.length; ++i) {\n      let rel = doc.linked[i]\n      if (rel.doc == skip) continue\n      let shared = sharedHist && rel.sharedHist\n      if (sharedHistOnly && !shared) continue\n      f(rel.doc, shared)\n      propagate(rel.doc, doc, shared)\n    }\n  }\n  propagate(doc, null, true)\n}\n\n// Attach a document to an editor.\nexport function attachDoc(cm, doc) {\n  if (doc.cm) throw new Error(\"This document is already in use.\")\n  cm.doc = doc\n  doc.cm = cm\n  estimateLineHeights(cm)\n  loadMode(cm)\n  setDirectionClass(cm)\n  if (!cm.options.lineWrapping) findMaxLine(cm)\n  cm.options.mode = doc.modeOption\n  regChange(cm)\n}\n\nfunction setDirectionClass(cm) {\n  ;(cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\")\n}\n\nexport function directionChanged(cm) {\n  runInOp(cm, () => {\n    setDirectionClass(cm)\n    regChange(cm)\n  })\n}\n", "import { getMode } from \"../modes.js\"\n\nimport { startWorker } from \"./highlight_worker.js\"\nimport { regChange } from \"./view_tracking.js\"\n\n// Used to get the editor into a consistent state again when options change.\n\nexport function loadMode(cm) {\n  cm.doc.mode = getMode(cm.options, cm.doc.modeOption)\n  resetModeState(cm)\n}\n\nexport function resetModeState(cm) {\n  cm.doc.iter(line => {\n    if (line.stateAfter) line.stateAfter = null\n    if (line.styles) line.styles = null\n  })\n  cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first\n  startWorker(cm, 100)\n  cm.state.modeGen++\n  if (cm.curOp) regChange(cm)\n}\n", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport { VueDirectivesMixin } from '../../../../../lib/vue/directives';\nimport { closableMixin } from '../../../../lib/commons.js';\nimport { tabs } from '../../../../lib/router';\n\nimport Button from '../../commons/Button.vue';\nimport Queries from '../../commons/Queries.vue';\nimport PulseSpinner from '../../commons/PulseSpinner.vue';\nimport RecentQueries from '../../commons/RecentQueries.vue';\nimport SavingDialog from '../../commons/SavingDialog.vue';\n\nconst __vue_script__ = {\n  name: \"SQLEditorHeader\",\n  components: {\n    Button,\n    RecentQueries,\n    Queries,\n    PulseSpinner,\n    SavingDialog\n  },\n  mixins: [VueDirectivesMixin, closableMixin],\n  props: {\n    privateQueries: {\n      type: Array,\n      default: () => [],\n    },\n    publicQueries: {\n      type: Array,\n      default: () => [],\n    },\n    recentQueries: {\n      type: Array,\n      default: () => []\n    },\n    isQueryRunning: {\n      type: Boolean,\n      default: false\n    },\n    isQuerySavingPromptVisible: {\n      type: Boolean,\n      default: false\n    },\n    isForkPromptVisible: {\n      type: Boolean,\n      default: true\n    },\n    isQueryModified: {\n      type: Boolean,\n      default: false\n    },\n    queryName: {\n      type: String,\n      default: '',\n    },\n    enabledQuerySavedButton: {\n      type: Boolean,\n      default: false\n    },\n    showRevertQuery: {\n      type: Boolean,\n      default: false\n    },\n    showPrivate: {\n      type: Boolean,\n      default: false\n    },\n    isQuerySaved: {\n      type: Boolean,\n      default: false\n    },\n    enabledForkButton: {\n      type: Boolean,\n      default: false\n    },\n    enabledRevertButton: {\n      type: Boolean,\n      default: false\n    },\n    isUserLogged: {\n      type: Boolean,\n      default: false\n    },\n    queryInputFocus: {\n      type: Boolean,\n      default: false\n    },\n    showPrivatePublicIcon: {\n      type: Boolean,\n      default: false\n    },\n    resetPrivate: {\n      type: Boolean,\n      default: false\n    },\n    registrationDisabled: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data() {\n    return {\n      labelRecents: I18n.t(\"gobierto_data.projects.recents\") || \"\",\n      labelQueries: I18n.t(\"gobierto_data.projects.queries\") || \"\",\n      labelYourQueries: I18n.t(\"gobierto_data.projects.yourQueries\") || \"\",\n      labelRunQuery: I18n.t(\"gobierto_data.projects.runQuery\") || \"\",\n      labelResetQuery: I18n.t(\"gobierto_data.projects.resetQuery\") || \"\",\n      labelSaved: I18n.t(\"gobierto_data.projects.savedQuery\") || \"\",\n      labelQueryName: I18n.t(\"gobierto_data.projects.queryName\") || \"\",\n      labelButtonQueries: I18n.t(\"gobierto_data.projects.buttonQueries\") || \"\",\n      labelModifiedQuery: I18n.t(\"gobierto_data.projects.modifiedQuery\") || \"\",\n      labelButtonRecentQueries:\n        I18n.t(\"gobierto_data.projects.buttonRecentQueries\") || \"\",\n      labelButtonRunQuery:\n        I18n.t(\"gobierto_data.projects.buttonRunQuery\") || \"\",\n      removeLabelBtn: false,\n      isQueriesModalActive: false,\n      isRecentModalActive: false,\n      labelValue: this.queryName,\n    };\n  },\n  watch: {\n    queryInputFocus(newValue, oldValue) {\n      if (newValue !== oldValue) {\n        this.$nextTick(() => this.$refs.savingDialogQuery.inputFocus(newValue))\n      }\n    }\n  },\n  created() {\n    // it has to be the same event (keydown) as SQLEditorCode\n    document.addEventListener(\"keydown\", this.keyboardShortcutsListener);\n  },\n  deactivated() {\n    this.$destroy()\n  },\n  beforeUnmount() {\n    this.removeKeyboardListener()\n  },\n  methods: {\n    keyboardShortcutsListener(e) {\n      if (e.keyCode == 67) {\n        // key \"c\"\n        this.isQueriesModalActive ? this.closeQueriesModal() : this.openQueriesModal();\n\n        // close the other modal, if open\n        if (this.isRecentModalActive) {\n          this.closeRecentModal()\n        }\n      } else if (e.keyCode == 82) {\n        // key \"r\"\n        this.isRecentModalActive ? this.closeRecentModal() : this.openRecentModal();\n\n        // close the other modal, if open\n        if (this.isQueriesModalActive) {\n          this.closeQueriesModal()\n        }\n      } else if ((e.keyCode == 10 || e.keyCode == 13) && (e.ctrlKey || e.metaKey)) {\n        this.clickRunQueryHandler();\n      }\n    },\n    removeKeyboardListener() {\n      document.removeEventListener(\"keydown\", this.keyboardShortcutsListener);\n    },\n    updateQueryName(value) {\n      const {\n        name: queryName\n      } = value;\n      this.labelValue = queryName\n      this.$root.$emit('enableSavedButton')\n    },\n    saveHandlerSavedQuery(opts) {\n      // send the query to be stored\n      this.$root.$emit(\"storeCurrentQuery\", opts);\n    },\n    clickRunQueryHandler() {\n      this.$root.$emit(\"runCurrentQuery\");\n    },\n    openRecentModal() {\n      this.isRecentModalActive = true;\n    },\n    closeRecentModal() {\n      this.isRecentModalActive = false;\n    },\n    openQueriesModal() {\n      this.isQueriesModalActive = true;\n    },\n    closeQueriesModal() {\n      this.isQueriesModalActive = false;\n    },\n    resetQueryHandler() {\n      this.$root.$emit('resetQuery')\n      this.$router.push(\n        `/datos/${this.$route.params.id}/${tabs[1]}`\n      //Avoid errors when user goes to the same route\n      // eslint-disable-next-line no-unused-vars\n      ).catch(err => {})\n    },\n    enabledInputQueries() {\n      if (!this.enabledForkButton && this.isUserLogged) {\n        this.$root.$emit('eventToEnabledInputQueries')\n        this.$nextTick(() => this.$refs.savingDialogQuery.inputFocus());\n      }\n    },\n    handlerForkQuery() {\n      this.$nextTick(() => {\n        this.$refs.savingDialogQuery.inputFocus()\n        this.$refs.savingDialogQuery.inputSelect()\n      });\n      this.$root.$emit('enableSavedButton')\n      this.$root.$emit('enabledForkPrompt')\n      this.$root.$emit('enabledRevertButton')\n      this.$root.$emit('disabledForkButton')\n    },\n    isPrivateChecked() {\n      this.$root.$emit('eventIsQueryModified', true)\n    }\n  },\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gobierto-data-sql-editor-toolbar\"},[_c('div',{staticClass:\"gobierto-data-sql-editor-container\"},[_c('Button',{staticClass:\"btn-sql-editor\",attrs:{\"title\":_vm.labelResetQuery,\"icon\":\"home\",\"background\":\"#fff\"},on:{\"enabled-input\":_vm.enabledInputQueries},nativeOn:{\"click\":function($event){return _vm.resetQueryHandler.apply(null, arguments)}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"gobierto-data-sql-editor-container\"},[_c('Button',{directives:[{name:\"clickoutside\",rawName:\"v-clickoutside\",value:(_vm.closeRecentModal),expression:\"closeRecentModal\"}],staticClass:\"btn-sql-editor\",class:{ 'remove-label' : _vm.removeLabelBtn },attrs:{\"title\":_vm.labelButtonRecentQueries,\"icon\":\"history\",\"background\":\"#fff\"},nativeOn:{\"click\":function($event){_vm.isRecentModalActive = !_vm.isRecentModalActive}}}),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(_vm.isRecentModalActive)?_c('RecentQueries',{staticClass:\"gobierto-data-sets-nav--tab-container gobierto-data-sql-editor-your-queries-container arrow-top\",class:{'active' : _vm.isRecentModalActive},attrs:{\"recent-queries\":_vm.recentQueries}}):_vm._e()],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"gobierto-data-sql-editor-container\"},[_c('button',{ref:\"buttonYourQueries\",staticClass:\"btn-sql-editor btn-sql-editor-queries gobierto-data-btn-blue\",attrs:{\"aria-label\":_vm.labelYourQueries},on:{\"click\":function($event){_vm.isQueriesModalActive = !_vm.isQueriesModalActive}}},[_c('i',{staticClass:\"fas fa-list\",staticStyle:{\"color\":\"inherit\"}})]),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('Queries',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isQueriesModalActive),expression:\"isQueriesModalActive\"},{name:\"closable\",rawName:\"v-closable\",value:({\n          exclude: ['buttonYourQueries'],\n          handler: 'closeQueriesModal'\n        }),expression:\"{\\n          exclude: ['buttonYourQueries'],\\n          handler: 'closeQueriesModal'\\n        }\"}],staticClass:\"gobierto-data-sets-nav--tab-container gobierto-data-sql-editor-your-queries-container arrow-top\",attrs:{\"private-queries\":_vm.privateQueries,\"public-queries\":_vm.publicQueries,\"is-user-logged\":_vm.isUserLogged},on:{\"close-queries-modal\":_vm.closeQueriesModal}})],1)],1),_vm._v(\" \"),_c('SavingDialog',{ref:\"savingDialogQuery\",attrs:{\"placeholder\":_vm.labelQueryName,\"value\":_vm.queryName,\"label-saved\":_vm.labelSaved,\"label-modified\":_vm.labelModifiedQuery,\"is-query-modified\":_vm.isQueryModified,\"is-query-saved\":_vm.isQuerySaved,\"is-fork-prompt-visible\":_vm.isForkPromptVisible,\"is-user-logged\":_vm.isUserLogged,\"enabled-fork-button\":_vm.enabledForkButton,\"enabled-revert-button\":_vm.enabledRevertButton,\"is-query-saving-prompt-visible\":_vm.isQuerySavingPromptVisible,\"enabled-query-saved-button\":_vm.enabledQuerySavedButton,\"show-revert-query\":_vm.showRevertQuery,\"show-private\":_vm.showPrivate,\"show-private-public-icon\":_vm.showPrivatePublicIcon,\"reset-private\":_vm.resetPrivate},on:{\"save\":_vm.saveHandlerSavedQuery,\"key-down-input\":_vm.updateQueryName,\"handler-fork\":_vm.handlerForkQuery,\"is-private-checked\":_vm.isPrivateChecked}}),_vm._v(\" \"),_c('Button',{staticClass:\"btn-sql-editor btn-sql-editor-run\",attrs:{\"text\":_vm.labelRunQuery,\"title\":_vm.labelButtonRunQuery,\"icon\":\"play\",\"background\":\"#fff\"},nativeOn:{\"click\":function($event){return _vm.clickRunQueryHandler()}}},[(_vm.isQueryRunning)?_c('PulseSpinner'):_vm._e()],1)],1)}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"SQLEditorHeader.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nconst __vue_script__ = {\n  name: 'PulseSpinner'\n}\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar __vue_staticRenderFns__ = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"spinner-box\"},[_c('div',{staticClass:\"pulse-container\"},[_c('div',{staticClass:\"pulse-bubble pulse-bubble-1\"}),_vm._v(\" \"),_c('div',{staticClass:\"pulse-bubble pulse-bubble-2\"}),_vm._v(\" \"),_c('div',{staticClass:\"pulse-bubble pulse-bubble-3\"})])])}]\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"PulseSpinner.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nconst __vue_script__ = {\n  name: \"RecentQueries\",\n  props: {\n    recentQueries: {\n      type: Array,\n      default: () => []\n    },\n  },\n  data() {\n    return {\n      labelEmptyRecentQueries: I18n.t(\"gobierto_data.projects.emptyRecentQueries\") || \"\",\n      currentItem: 0\n    }\n  },\n  created() {\n    document.addEventListener(\"keydown\", this.onKeyDownNextRecentItem)\n  },\n  beforeUnmount() {\n    document.removeEventListener(\"keydown\", this.onKeyDownNextRecentItem)\n  },\n  methods: {\n    onKeyDownNextRecentItem(event) {\n\n      const { keyCode } = event\n\n      if (keyCode == 38 && this.currentItem > 0) {\n        this.currentItem--\n      } else if (keyCode === 40 && this.currentItem < this.recentQueries.length) {\n        this.currentItem++\n      } else if (keyCode === 13) {\n        this.clickRunQueryHandler(this.recentQueries[this.currentItem])\n      }\n    },\n    clickRunQueryHandler(code) {\n      this.$root.$emit(\"setCurrentQuery\", code);\n      this.$root.$emit(\"runCurrentQuery\");\n    }\n  }\n}\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gobierto-data-sql-editor-recent-queries arrow-top\"},[_c('div',{staticClass:\"gobierto-data-btn-download-data-modal-container\"},[(_vm.recentQueries.length)?_vm._l((_vm.recentQueries),function(sql,index){return _c('button',{key:index,ref:\"button\",refInFor:true,staticClass:\"gobierto-data-recent-queries-list-element\",class:{'active-query': _vm.currentItem === index},on:{\"click\":function($event){return _vm.clickRunQueryHandler(sql)}}},[_vm._v(\"\\n        \"+_vm._s(sql)+\"\\n      \")])}):[_c('span',{staticClass:\"gobierto-data-recent-queries-list-element\"},[_vm._v(_vm._s(_vm.labelEmptyRecentQueries))])]],2)])}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"RecentQueries.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport Button from '../../commons/Button.vue';\nimport DownloadButton from '../../commons/DownloadButton.vue';\nimport DownloadLink from '../../commons/DownloadLink.vue';\nimport SavingDialog from '../../commons/SavingDialog.vue';\nimport Visualizations from '../../commons/Visualizations.vue';\nimport { convertVizToImgMixin } from '../../../../lib/commons.js';\n\nconst __vue_script__ = {\n  name: \"SQLEditorResults\",\n  components: {\n    Visualizations,\n    DownloadButton,\n    Button,\n    SavingDialog,\n    DownloadLink\n  },\n  mixins: [convertVizToImgMixin],\n  props: {\n    arrayFormats: {\n      type: Object,\n      required: true\n    },\n    objectColumns: {\n      type: Object,\n      default: () => {}\n    },\n    configMap: {\n      type: Object,\n      default: () => {}\n    },\n    items: {\n      type: String,\n      default: ''\n    },\n    isVizSavingPromptVisible: {\n      type: Boolean,\n      default: false\n    },\n    isVizModified: {\n      type: Boolean,\n      default: false\n    },\n    isVizSaved: {\n      type: Boolean,\n      default: false\n    },\n    enabledVizSavedButton: {\n      type: Boolean,\n      default: false\n    },\n    queryStored: {\n      type: String,\n      default: \"\"\n    },\n    isUserLogged: {\n      type: Boolean,\n      default: false\n    },\n    vizInputFocus: {\n      type: Boolean,\n      default: false\n    },\n    showPrivatePublicIconViz: {\n      type: Boolean,\n      default: false\n    },\n    vizName: {\n      type: String,\n      default: ''\n    },\n    vizId: {\n      type: Number,\n      default: 0\n    },\n    registrationDisabled: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data() {\n    return {\n      labelVisName: I18n.t(\"gobierto_data.projects.visName\") || \"\",\n      labelVisualize: I18n.t(\"gobierto_data.projects.visualize\") || \"\",\n      labelResetViz: I18n.t(\"gobierto_data.projects.resetViz\") || \"\",\n      labelModifiedVizualition: I18n.t(\"gobierto_data.projects.modifiedVisualization\") || \"\",\n      labelSavedVisualization: I18n.t(\"gobierto_data.projects.savedVisualization\") || \"\",\n      labelLink: I18n.t(\"gobierto_data.projects.link\") || \"\",\n      showVisualization: false,\n      showResetViz: false,\n      showVisualize: true,\n      removeLabelBtn: false,\n      perspectiveChanged: false,\n      config: null,\n      saveLoader: false,\n      configMapZoom: { ...this.configMap, zoom: true }\n    };\n  },\n  computed: {\n    moreThanOneFormat() {\n      return Object.keys(this.arrayFormats).length > 1\n    },\n    registrationDisabledAndUserIsLogged() {\n      return !this.registrationDisabled || this.isUserLogged\n    }\n  },\n  watch: {\n    vizInputFocus(newValue) {\n      if (newValue) {\n        this.$nextTick(() => this.$refs.savingDialogViz.inputFocus())\n      }\n    }\n  },\n  mounted() {\n    if (sessionStorage.getItem(\"map-tab\")) {\n      this.config = JSON.parse(sessionStorage.getItem(\"map-tab\"))\n      sessionStorage.removeItem(\"map-tab\")\n\n      // otherwise, it won't work \u00AC\u00AC\n      setTimeout(() => this.$refs.viewer.toggleConfigPerspective(), 20);\n    }\n  },\n  methods: {\n    convertVizHandler(opts) {\n      const perspectiveSidePanel = this.$refs.viewer.$el.shadowRoot.getElementById(\"side_panel\")\n      const perspectiveTopPanel = this.$refs.viewer.$el.shadowRoot.getElementById(\"top_panel\")\n      perspectiveSidePanel.style.display = \"none\"\n      perspectiveTopPanel.style.display = \"none\"\n      this.convertVizToImg(this.$refs[\"visualization-container\"], () => this.onSaveEventHandler(opts))\n    },\n    onSaveEventHandler(opts) {\n      // get children configuration\n      const config = this.$refs.viewer.getConfig()\n      config.base64 = this.imageApi\n      this.$root.$emit(\"storeCurrentVisualization\", config, opts);\n    },\n    updateVizNameHandler(value) {\n      const {\n        name: vizName\n      } = value;\n      this.labelValue = vizName\n      this.$root.$emit(\"eventIsVizModified\", true);\n    },\n    resetViz() {\n      this.showVisualize = true\n      this.perspectiveChanged = false\n      this.showResetViz = false\n\n      this.$refs.viewer.toggleConfigPerspective();\n      this.$refs.viewer.resetConfig()\n      this.$root.$emit(\"resetVizEvent\")\n    },\n    showChart() {\n      this.showVisualization = true\n      this.$refs.viewer.toggleConfigPerspective();\n    },\n    showSavingDialog() {\n      if (this.registrationDisabledAndUserIsLogged) {\n        this.perspectiveChanged = true\n        this.showVisualize = false\n        this.showResetViz = true\n        this.$root.$emit(\"showSavingDialogEvent\")\n      }\n    },\n    isPrivateChecked() {\n      if (this.registrationDisabledAndUserIsLogged) {\n        this.$root.$emit(\"eventIsVizModified\", true)\n      }\n    }\n  },\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gobierto-data-sql-editor-tabs\"},[_c('div',{staticClass:\"pure-g\",staticStyle:{\"margin-bottom\":\"1rem\"}},[_c('div',{staticClass:\"pure-u-1 pure-u-lg-4-4\"},[(_vm.showResetViz)?_c('Button',{staticClass:\"btn-sql-editor btn-sql-revert-viz\",attrs:{\"title\":_vm.labelResetViz,\"icon\":\"home\",\"background\":\"#fff\"},nativeOn:{\"click\":function($event){return _vm.resetViz.apply(null, arguments)}}}):_vm._e(),_vm._v(\" \"),(_vm.showVisualize)?_c('Button',{staticClass:\"btn-sql-editor\",attrs:{\"text\":_vm.labelVisualize,\"icon\":\"chart-area\",\"background\":\"#fff\"},nativeOn:{\"click\":function($event){return _vm.showChart.apply(null, arguments)}}}):_vm._e(),_vm._v(\" \"),(_vm.perspectiveChanged)?_c('SavingDialog',{ref:\"savingDialogViz\",attrs:{\"placeholder\":_vm.labelVisName,\"label-saved\":_vm.labelSavedVisualization,\"label-modified\":_vm.labelModifiedVizualition,\"is-viz-saving-prompt-visible\":_vm.isVizSavingPromptVisible,\"is-viz-modified\":_vm.isVizModified,\"is-viz-saved\":_vm.isVizSaved,\"is-user-logged\":_vm.isUserLogged,\"enabled-viz-saved-button\":_vm.enabledVizSavedButton,\"show-private-public-icon-viz\":_vm.showPrivatePublicIconViz,\"registration-disabled\":_vm.registrationDisabled},on:{\"save\":_vm.convertVizHandler,\"key-down-input\":_vm.updateVizNameHandler,\"is-private-checked\":_vm.isPrivateChecked}}):_vm._e(),_vm._v(\" \"),(_vm.moreThanOneFormat)?[_c('DownloadButton',{staticClass:\"arrow-top modal-right\",attrs:{\"editor\":true,\"query-stored\":_vm.queryStored,\"array-formats\":_vm.arrayFormats}})]:[_c('DownloadLink',{attrs:{\"editor\":true,\"query-stored\":_vm.queryStored,\"array-formats\":_vm.arrayFormats,\"css-class\":'modal-right'}})]],2),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(_vm.vizName && _vm.isVizSaved)?_c('div',{staticClass:\"gobierto-data-visualization-query-container\"},[_c('span',{staticClass:\"gobierto-data-summary-queries-panel-title\"},[_vm._v(_vm._s(_vm.labelLink)+\": \")]),_vm._v(\" \"),_c('router-link',{staticClass:\"gobierto-data-summary-queries-container-name\",attrs:{\"to\":(\"/datos/\" + (_vm.$route.params.id) + \"/v/\" + _vm.vizId)}},[_vm._v(\"\\n          \"+_vm._s(_vm.vizName)+\"\\n        \")])],1):_vm._e()])],1),_vm._v(\" \"),_c('div',{ref:\"visualization-container\",staticClass:\"gobierto-data-visualization--aspect-ratio-16-9\"},[(_vm.items)?_c('Visualizations',{ref:\"viewer\",attrs:{\"items\":_vm.items,\"object-columns\":_vm.objectColumns,\"config-map\":_vm.configMapZoom,\"config\":_vm.config,\"registration-disabled\":_vm.registrationDisabled,\"is-user-logged\":_vm.isUserLogged},on:{\"show-saving\":_vm.showSavingDialog}}):_vm._e()],1)])}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"SQLEditorResults.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport Queries from '../commons/Queries.vue';\n\nconst __vue_script__ = {\n  name: \"QueriesTab\",\n  components: {\n    Queries\n  },\n  props: {\n    privateQueries: {\n      type: Array,\n      default: () => []\n    },\n    publicQueries: {\n      type: Array,\n      default: () => []\n    },\n    isUserLogged: {\n      type: Boolean,\n      default: false\n    }\n  }\n}\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gobierto-data-sets-nav--tab-container\"},[_c('Queries',{attrs:{\"private-queries\":_vm.privateQueries,\"public-queries\":_vm.publicQueries,\"is-user-logged\":_vm.isUserLogged}})],1)}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"QueriesTab.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport Resources from '../commons/Resources.vue';\nimport DownloadButton from '../commons/DownloadButton.vue';\nimport DownloadLink from '../commons/DownloadLink.vue';\n\nconst __vue_script__ = {\n  name: \"DownloadsTab\",\n  components: {\n    Resources,\n    DownloadButton,\n    DownloadLink\n  },\n  props: {\n    arrayFormats: {\n      type: Object,\n      required: true\n    },\n    resourcesList: {\n      type: Array,\n      required: true,\n      default: () => []\n    }\n  },\n  data() {\n    return {\n      directionLeft: true\n    }\n  },\n  computed: {\n    moreThanOneFormat() {\n      return Object.keys(this.arrayFormats).length > 1\n    }\n  }\n}\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gobierto-data-sets-nav--tab-container\"},[_c('keep-alive',[(_vm.moreThanOneFormat)?[_c('DownloadButton',{staticClass:\"arrow-top\",class:[\n          _vm.directionLeft ? 'modal-left': 'modal-right'\n        ],attrs:{\"array-formats\":_vm.arrayFormats}})]:[_c('DownloadLink',{attrs:{\"editor\":false,\"array-formats\":_vm.arrayFormats}})]],2),_vm._v(\" \"),_c('Resources',{attrs:{\"resources-list\":_vm.resourcesList}})],1)}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"DownloadsTab.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport Visualizations from '../commons/Visualizations.vue';\nimport Button from '../commons/Button.vue';\n\nconst __vue_script__ = {\n  name: \"MapTab\",\n  components: {\n    Visualizations,\n    Button\n  },\n  props: {\n    items: {\n      type: String,\n      default: \"\"\n    },\n    objectColumns: {\n      type: Object,\n      default: () => {}\n    },\n    configMap: {\n      type: Object,\n      default: () => {}\n    },\n  },\n  data() {\n    return {\n      config: {\n        plugin: 'map'\n      },\n      configMapZoom: { ...this.configMap, zoom: true },\n      labelEdit: I18n.t(\"gobierto_data.projects.edit\") || \"\",\n      isDirty: false\n    }\n  },\n  mounted() {\n    if (sessionStorage.getItem(\"map-tab\")) {\n      this.config = JSON.parse(sessionStorage.getItem(\"map-tab\"))\n      sessionStorage.removeItem(\"map-tab\")\n    }\n\n    // otherwise, it won't work \u00AC\u00AC\n    setTimeout(() => this.$refs.viewer.toggleConfigPerspective(), 20);\n  },\n  methods: {\n    handleConfig() {\n      const config = this.$refs.viewer.getConfig()\n      sessionStorage.setItem(\"map-tab\", JSON.stringify(config))\n\n      this.isDirty = true\n    },\n    handleClick() {\n      this.$router.push({ path: `/datos/${this.$route.params.id}/editor` })\n    }\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gobierto-data-sets-nav--tab-container\"},[_c('Button',{staticClass:\"btn-sql-editor btn-sql-revert-query\",class:{ 'isDisabled': !_vm.isDirty },attrs:{\"text\":_vm.labelEdit,\"icon\":\"chart-area\",\"background\":\"#fff\"},nativeOn:{\"click\":function($event){return _vm.handleClick.apply(null, arguments)}}}),_vm._v(\" \"),_c('div',{staticClass:\"gobierto-data-visualization--aspect-ratio-16-9\"},[_c('Visualizations',{ref:\"viewer\",attrs:{\"items\":_vm.items,\"config\":_vm.config,\"object-columns\":_vm.objectColumns,\"config-map\":_vm.configMapZoom},on:{\"show-saving\":_vm.handleConfig}})],1)],1)}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"MapTab.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "import { baseUrl } from '../commons.js';\nimport axios from 'axios';\n\nconst endPoint = `${baseUrl}/queries`;\n\n// Queries-endpoint factory to get/post/put/delete API data\nexport const QueriesFactoryMixin = {\n  methods: {\n    getQuery(id) {\n      const headers = {\n        \"Content-type\": \"application/json\",\n        Authorization: window.gobiertoAPI.token\n      };\n\n      return axios.get(`${endPoint}/${id}`, { headers });\n    },\n    getQueries(params) {\n      const headers = {\n        \"Content-type\": \"application/json\",\n        Authorization: window.gobiertoAPI.token\n      };\n\n      const qs = new URLSearchParams(params)\n      return axios.get(`${endPoint}?${qs.toString()}`, { headers });\n    },\n    postQuery(data) {\n      const headers = {\n        \"Content-type\": \"application/json\",\n        Authorization: window.gobiertoAPI.token\n      };\n\n      return axios.post(endPoint, data, { headers });\n    },\n    putQuery(id, data) {\n      const headers = {\n        \"Content-type\": \"application/json\",\n        Authorization: window.gobiertoAPI.token\n      };\n\n      return axios.put(`${endPoint}/${id}`, data, { headers });\n    },\n    deleteQuery(id) {\n      const headers = {\n        \"Content-type\": \"application/json\",\n        Authorization: window.gobiertoAPI.token\n      };\n\n      return axios.delete(`${endPoint}/${id}`, { headers });\n    },\n  }\n};\n", "import { baseUrl } from '../commons.js';\nimport axios from 'axios';\n\nconst endPoint = `${baseUrl}/data.csv`;\n\n// Data-endpoint factory to get/post/put/delete API data\nexport const DataFactoryMixin = {\n  methods: {\n    getData(params) {\n      const headers = {\n        \"Content-type\": \"application/json\",\n        Authorization: window.gobiertoAPI.token\n      };\n\n      const qs = new URLSearchParams(params)\n      return axios.get(`${endPoint}?${qs.toString()}`, { headers });\n    },\n  }\n};\n", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport VisualizationsGrid from '../components/landingviz/VisualizationsGrid.vue';\nimport { convertToCSV } from '../../lib/helpers';\nimport { VisualizationFactoryMixin } from '../../lib/factories/visualizations';\nimport { DataFactoryMixin } from '../../lib/factories/data';\nimport { DatasetFactoryMixin } from '../../lib/factories/datasets';\nimport { QueriesFactoryMixin } from '../../lib/factories/queries';\nimport { SkeletonSpinner } from '../../../lib/vue/components';\n\nconst __vue_script__ = {\n  name: \"Visualizations\",\n  components: {\n    VisualizationsGrid,\n    SkeletonSpinner\n  },\n  mixins: [\n    DatasetFactoryMixin,\n    VisualizationFactoryMixin,\n    DataFactoryMixin,\n    QueriesFactoryMixin\n  ],\n  data() {\n    return {\n      publicVisualizations: [],\n      isLoading: true,\n      labelVisualizations: I18n.t(\"gobierto_data.projects.visualizations\") || \"\",\n      listDatasets: []\n    };\n  },\n  async created() {\n    //Get all the datasets to extract the slug of those that have visualizations.\n    const { data: { data } } = await this.getDatasets();\n    this.listDatasets = data\n    this.getDataVizs();\n  },\n  methods: {\n    async getDataVizs() {\n      const {\n        data: { data = [] }\n      } = await this.getVisualizations({\n        \"order[updated_at]\": \"desc\"\n      });\n\n      this.publicVisualizations = await this.getDataFromVisualizations(data);\n      this.isLoading = false;\n    },\n    async getDataFromVisualizations(data) {\n      const queryPromises = new Map();\n      const visualizations = data.map(x => {\n        const {\n          attributes: {\n            query_id,\n            dataset_id,\n            user_id,\n            sql = \"\",\n            spec = {},\n            name = \"\",\n            privacy_status = \"open\"\n          } = {},\n          id\n        } = x;\n\n        // only store new (different) queries (promises)\n        if (!queryPromises.has(query_id || sql)) {\n          queryPromises.set(\n            query_id || sql,\n            query_id ? this.getQuery(query_id) : this.getData({ sql })\n          );\n        }\n\n        //Filter by id to get the slug and the columns.\n        const [{ attributes: { columns, slug: slugDataset, name: datasetName } }] = this.listDatasets.filter(({ id }) => id == dataset_id)\n\n        return {\n          config: spec,\n          dataset_id,\n          columns,\n          slug: slugDataset,\n          name,\n          privacy_status,\n          query_id,\n          id,\n          user_id,\n          sql,\n          datasetName\n        };\n      });\n\n\n      // wait for queries to be solved\n      const responses = await Promise.all(\n        [...queryPromises.values()].map(x => x.catch(e => e.response))\n      );\n      [...queryPromises].forEach((item, i) => {\n        // ignore the null, they're comes from error catch\n        if (responses[i].status !== 200) {\n          return queryPromises.delete(item[0]);\n        }\n        const { data } = responses[i];\n        // in the map, replace each promise with its respective response (formatting the results)\n        return queryPromises.set(\n          item[0],\n          typeof data === \"object\" ? convertToCSV(data.data) : data\n        );\n      });\n      // finally update all existing visualizations with the properly results\n      // remove those visualizations whose data is erroneus\n      return visualizations.reduce((acc, x) => {\n        const k = x.query_id || x.sql;\n        if (queryPromises.has(k))\n          acc.push({ ...x, items: queryPromises.get(k) });\n        return acc;\n      }, []);\n\n    }\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gobierto-data gobierto-data-landing-visualizations\"},[_c('div',{staticClass:\"pure-g gutters m_b_1\"},[(_vm.isLoading)?[_c('SkeletonSpinner',{staticClass:\"pure-u-1\",attrs:{\"height-square\":\"250px\",\"squares-rows\":\"2\",\"squares\":\"2\"}})]:[_c('div',{staticClass:\"pure-u-1 pure-u-lg-4-4 gobierto-data-layout-column\"},[_c('h3',{staticClass:\"gobierto-data-index-title\"},[_vm._v(\"\\n          \"+_vm._s(_vm.labelVisualizations)+\"\\n        \")]),_vm._v(\" \"),_c('VisualizationsGrid',{attrs:{\"public-visualizations\":_vm.publicVisualizations}})],1)]],2)])}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"Visualizations.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "/* script */\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport Visualizations from '../commons/Visualizations.vue';\nimport CardVisualization from '../../layouts/CardVisualization.vue';\n\nconst __vue_script__ = {\n  name: \"VisualizationsGrid\",\n  components: {\n    CardVisualization,\n    Visualizations\n  },\n  props: {\n    publicVisualizations: {\n      type: Array,\n      default: () => []\n    }\n  }\n};\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.publicVisualizations && _vm.publicVisualizations.length)?_c('div',{staticClass:\"gobierto-data-visualization--grid\"},[_vm._l((_vm.publicVisualizations),function(ref){\nvar config = ref.config;\nvar name = ref.name;\nvar id = ref.id;\nvar slug = ref.slug;\nvar datasetName = ref.datasetName;\nvar items = ref.items;\nvar columns = ref.columns;\nreturn [_c('router-link',{key:id,staticClass:\"gobierto-data-visualizations-name\",attrs:{\"to\":(\"/datos/\" + slug + \"/v/\" + id)}},[_c('CardVisualization',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._v(\"\\n          \"+_vm._s(name)+\"\\n        \")]},proxy:true}],null,true)},[_vm._v(\" \"),(config.base64)?[_c('img',{staticClass:\"gobierto-data-visualization--image\",attrs:{\"src\":config.base64}})]:[(items)?_c('Visualizations',{attrs:{\"items\":items,\"object-columns\":columns,\"config\":config}}):_vm._e()],_vm._v(\" \"),_c('router-link',{staticClass:\"gobierto-data-visualizations-name\",attrs:{\"to\":(\"/datos/\" + slug + \"/\")}},[_c('h4',{staticClass:\"gobierto-data-visualization--dataset\"},[_vm._v(\"\\n            \"+_vm._s(datasetName)+\"\\n          \")])])],2)],1)]})],2):_vm._e()}\nvar __vue_staticRenderFns__ = []\n\n  /* style */\n  const __vue_inject_styles__ = undefined\n  /* scoped */\n  const __vue_scope_id__ = undefined\n  /* module identifier */\n  const __vue_module_identifier__ = undefined\n  /* functional template */\n  const __vue_is_functional_template__ = false\n  /* component normalizer */\n  function __vue_normalize__(\n    template, style, script,\n    scope, functional, moduleIdentifier, shadowMode,\n    createInjector, createInjectorSSR, createInjectorShadow\n  ) {\n    const component = (typeof script === 'function' ? script.options : script) || {}\n\n    // For security concerns, we use only base name in production mode.\n    component.__file = \"VisualizationsGrid.vue\"\n\n    if (!component.render) {\n      component.render = template.render\n      component.staticRenderFns = template.staticRenderFns\n      component._compiled = true\n\n      if (functional) component.functional = true\n    }\n\n    component._scopeId = scope\n\n    if (false) {\n      let hook\n      if (false) {\n        // In SSR.\n        hook = function(context) {\n          // 2.3 injection\n          context =\n            context || // cached call\n            (this.$vnode && this.$vnode.ssrContext) || // stateful\n            (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n          // 2.2 with runInNewContext: true\n          if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n            context = __VUE_SSR_CONTEXT__\n          }\n          // inject component styles\n          if (style) {\n            style.call(this, createInjectorSSR(context))\n          }\n          // register component module identifier for async chunk inference\n          if (context && context._registeredComponents) {\n            context._registeredComponents.add(moduleIdentifier)\n          }\n        }\n        // used by ssr in case component is cached and beforeCreate\n        // never gets called\n        component._ssrRegister = hook\n      }\n      else if (style) {\n        hook = shadowMode \n          ? function(context) {\n              style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot))\n            }\n          : function(context) {\n              style.call(this, createInjector(context))\n            }\n      }\n\n      if (hook !== undefined) {\n        if (component.functional) {\n          // register for functional component in vue file\n          const originalRender = component.render\n          component.render = function renderWithStyleInjection(h, context) {\n            hook.call(context)\n            return originalRender(h, context)\n          }\n        } else {\n          // inject component registration as beforeCreate hook\n          const existing = component.beforeCreate\n          component.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n        }\n      }\n    }\n\n    return component\n  }\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = /*#__PURE__*/__vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  )\n\n  export default __vue_component__", "import Vue from 'vue';\nimport '../../../../assets/stylesheets/modules/accessibility.css';\n\nexport function checkAndReportAccessibility() {\n  if (process.env.NODE_ENV === 'development') {\n    const VueAxe = require('vue-axe').default\n    Vue.use(VueAxe, {\n      allowConsoleClears: false\n    })\n  }\n}\n"],
  "mappings": "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G,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,CAAE,GAAG,CAAE,EAAE,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,CAAE,GAAG,CAAE,EAAE,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAE,CAAE,GAAG,CAAE,EAAE,CAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAE,GAAG,EAAE,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAE,CAAE,GAAG,CAAE,EAAE,CAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,CAAE,GAAG,CAAE,EAAE,CAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,CAAE,CAAE,GAAG,CAAE,EAAE,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAE,CAAE,GAAG,CAAE,EAAE,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,CAAE,CAAE,GAAG,CAAE,EAAE,CAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,CAAE,GAAG,CAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,CAAE,GAAG,CAAE,EAAE,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAE,GAAG,EAAE,CAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,CAAE,GAAG,CAAE,EAAE,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,CAAE,GAAG,CAAE,EAAE,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,CAAE,GAAG,EAAE,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,CAAE,GAAG,CAAE,EAAE,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,CAAE,GAAG,CAAE,EAAE,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAE,CAAE,GAAG,CAAE,EAAE,CAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAE,GAAG,EAAE,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,CAAE,GAAG,CAAE,EAAE,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,EAAE,CAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,CAAE,GAAG,CAAE,EAAE,CAAE,EAAE,CAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,CAAE,GAAG,CAAE,EAAE,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,CAAE,GAAG,EAAE,CAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,CAAE,GAAG,CAAE,EAAE,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,CAAE,CAAE,GAAG,CAAE,EAAE,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,CAAE,GAAG,CAAE,EAAE,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,CAAE,GAAG,EAAE,CAAE,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAE,CAAE,GAAG,CAAE,EAAE,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,EAAE,EAAE,CAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,CAAE,GAAG,EAAE,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,EAAE,CAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,CAAE,GAAG,EAAE,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,EAAE,EAAE,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,EAAE,CAAE,CAAE,GAAG,CAAE,EAAE,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,CAAE,GAAG,EAAE,CAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,CAAE,GAAG,CAAE,EAAE,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAE,CAAE,GAAG,CAAE,EAAE,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,CAAE,GAAG,EAAE,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,CAAE,GAAG,CAAE,EAAE,CAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,CAAE,GAAG,CAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,EAAE,CAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,GAAG,CAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAE,GAAG,CAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAE,CAAE,CAAE;AACn8rC,iBAAS,YAAY,MAAM;AACzB,cAAIiE,SAAQ;AACZ,iBAAO,KAAK,SAAS,GAAG;AACtB,oBAAQ;AAAA,UACV;AACA,mBAAS,OAAO,GAAG,QAAQ,KAAK,SAAS,GAAG,QAAQ;AAClD,gBAAItD,SAAQ,KAAK,WAAW,IAAI,IAAI;AACpC,YAAAsD,SAAQA,OAAMtD,MAAK;AACnB,gBAAI,CAACsD,QAAO;AACV,qBAAO;AAAA,YACT;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AACA,iBAAS,YAAY,WAAW;AAC9B,sBAAY,MAAM,QAAQ,SAAS,IAAI,YAAY;AACnD,cAAI,QAAQ,CAAC;AACb,oBAAU,QAAQ,SAAS,MAAMtD,QAAO;AACtC,gBAAI,SAAS,OAAO,aAAaA,SAAQ,EAAE,EAAE,QAAQ,KAAK,EAAE;AAC5D,gBAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,sBAAQ,MAAM,OAAO,YAAY,IAAI,EAAE,IAAI,SAAS,SAAS;AAC3D,uBAAO,SAAS;AAAA,cAClB,CAAC,CAAC;AAAA,YACJ,OAAO;AACL,oBAAM,KAAK,MAAM;AAAA,YACnB;AAAA,UACF,CAAC;AACD,iBAAO;AAAA,QACT;AACA,YAAI,sBAAsB;AAC1B,YAAI,6BAA6B,IAAI,8BAA8B,CAAC;AACpE,YAAI,2BAA2B,QAAQ;AAAA,UACrC;AAAA,QACF;AACA,YAAI,qBAAoB,SAAS,wBAAwB;AACvD,oBAAUmN,oBAAmB,sBAAsB;AACnD,cAAI,UAAU,aAAaA,kBAAiB;AAC5C,mBAASA,mBAAkB,YAAY;AACrC,gBAAI;AACJ,4BAAgB,MAAMA,kBAAiB;AACvC,qBAAS,QAAQ,KAAK,IAAI;AAC1B,mBAAO,SAAS,eAAe,UAAU;AACzC,mBAAO,SAAS,eAAe,UAAU;AACzC,mBAAO;AAAA,UACT;AACA,uBAAaA,oBAAmB,CAAE;AAAA,YAChC,KAAK;AAAA,YACL,OAAO,SAAS,KAAK,UAAU;AAC7B,qBAAO,KAAK,OAAO,QAAQ,KAAK;AAAA,YAClC;AAAA,UACF,GAAG;AAAA,YACD,KAAK;AAAA,YACL,OAAO,SAAS,QAAQ,UAAU;AAChC,qBAAO,KAAK,OAAO,QAAQ,MAAM;AAAA,YACnC;AAAA,UACF,GAAG;AAAA,YACD,KAAK;AAAA,YACL,KAAK,SAASpO,OAAM;AAClB,qBAAO,KAAK;AAAA,YACd;AAAA,UACF,GAAG;AAAA,YACD,KAAK;AAAA,YACL,KAAK,SAASA,OAAM;AAClB,qBAAO,OAAO,KAAK,KAAK,MAAM;AAAA,YAChC;AAAA,UACF,CAAE,CAAC;AACH,iBAAOoO;AAAA,QACT,GAAE,6BAA6B;AAC/B,iBAAS,eAAe,YAAY;AAClC,cAAI,YAAY,WAAW;AAC3B,cAAI,uBAAuB,WAAW,UAAU,WAAW,yBAAyB,SAAS,IAAI;AACjG,yBAAe,OAAO,aAAa,UAAU,qCAAsC,OAAO,UAAU,GAAI,CAAC;AACzG,yBAAe,OAAO,cAAc,UAAU,qCAAsC,OAAO,WAAW,GAAI,CAAC;AAC3G,sBAAY,UAAU,YAAY;AAClC,cAAItM,QAAO;AACX,cAAI,cAAc,SAAS;AACzB,YAAAA,SAAQ,WAAW,QAAQ,WAAW,cAAc,WAAW,WAAW,QAAQ,IAAI,YAAY;AAClG,gBAAI,CAAC,yBAAyB,EAAE,SAASA,KAAI,GAAG;AAC9C,cAAAA,QAAO;AAAA,YACT;AAAA,UACF;AACA,cAAI9C,SAAQ,SAAS,CAAC,GAAG,YAAY;AAAA,YACnC;AAAA,YACA,UAAU;AAAA,UACZ,CAAC;AACD,cAAI8C,OAAM;AACR,YAAA9C,OAAM,OAAO8C;AAAA,UACf;AACA,iBAAO9C,OAAM;AACb,iBAAO,OAAO,OAAOA,MAAK;AAAA,QAC5B;AACA,iBAAS,eAAe,QAAQ;AAC9B,cAAI,oBAAoB,OAAO,YAAY,cAAc,sBAAsB,SAAS,CAAC,IAAI;AAC7F,cAAI,UAAU;AAAA,YACZ,SAAS;AAAA,YACT,WAAW;AAAA,UACb;AACA,iBAAO,OAAO,KAAK,WAAW,EAAE,OAAO,SAASuO,QAAO,UAAU;AAC/D,gBAAI,QAAQ,YAAY,QAAQ;AAChC,2BAAe,QAAQ,KAAK,MAAM,YAAY,UAAU,MAAM,4CAA6C,OAAO,UAAU,OAAQ,CAAC;AACrI,gBAAI,UAAU,QAAQ;AACpB,kBAAI,aAAa,QAAQ,QAAQ,KAAK;AACtC,cAAAA,OAAM,UAAU,IAAI,UAAU,OAAO,OAAO,KAAK,IAAI;AAAA,YACvD;AACA,mBAAOA;AAAA,UACT,GAAG,CAAC,CAAC;AAAA,QACP;AACA,YAAI,8BAA8B;AAClC,YAAI,eAAe,CAAC;AACpB,QAAA3N,UAAS,cAAc;AAAA,UACrB,aAAa,SAASyO,eAAc;AAClC,mBAAO;AAAA,UACT;AAAA,UACA,eAAe,SAASC,iBAAgB;AACtC,mBAAO;AAAA,UACT;AAAA,UACA,oBAAoB,SAASC,sBAAqB;AAChD,mBAAO;AAAA,UACT;AAAA,UACA,mBAAmB,SAASC,qBAAoB;AAC9C,mBAAO;AAAA,UACT;AAAA,UACA,0BAA0B,SAASC,4BAA2B;AAC5D,mBAAO;AAAA,UACT;AAAA,UACA,iBAAiB,SAASC,mBAAkB;AAC1C,mBAAO;AAAA,UACT;AAAA,UACA,iBAAiB,SAASC,mBAAkB;AAC1C,mBAAO;AAAA,UACT;AAAA,UACA,SAAS,SAASC,WAAU;AAC1B,mBAAO;AAAA,UACT;AAAA,UACA,aAAa,SAASC,eAAc;AAClC,mBAAO;AAAA,UACT;AAAA,UACA,gBAAgB,SAASC,kBAAiB;AACxC,mBAAO;AAAA,UACT;AAAA,UACA,8BAA8B,SAASC,gCAA+B;AACpE,mBAAO;AAAA,UACT;AAAA,UACA,eAAe,SAASC,iBAAgB;AACtC,mBAAO;AAAA,UACT;AAAA,UACA,cAAc,SAASC,gBAAe;AACpC,mBAAO;AAAA,UACT;AAAA,UACA,iBAAiB,SAASC,mBAAkB;AAC1C,mBAAO;AAAA,UACT;AAAA,UACA,4BAA4B,SAASC,8BAA6B;AAChE,mBAAO;AAAA,UACT;AAAA,UACA,mBAAmB,SAASC,qBAAoB;AAC9C,mBAAO;AAAA,UACT;AAAA,UACA,aAAa,SAASC,eAAc;AAClC,mBAAO;AAAA,UACT;AAAA,UACA,OAAO,SAASC,SAAQ;AACtB,mBAAO;AAAA,UACT;AAAA,UACA,cAAc,SAASC,gBAAe;AACpC,mBAAO;AAAA,UACT;AAAA,UACA,aAAa,SAASC,eAAc;AAClC,mBAAO;AAAA,UACT;AAAA,UACA,mBAAmB,SAASC,qBAAoB;AAC9C,mBAAO;AAAA,UACT;AAAA,UACA,cAAc,SAASC,gBAAe;AACpC,mBAAO;AAAA,UACT;AAAA,UACA,iBAAiB,SAASC,mBAAkB;AAC1C,mBAAO;AAAA,UACT;AAAA,UACA,eAAe,SAASC,iBAAgB;AACtC,mBAAO;AAAA,UACT;AAAA,UACA,cAAc,SAASC,gBAAe;AACpC,mBAAO;AAAA,UACT;AAAA,UACA,mBAAmB,SAASC,qBAAoB;AAC9C,mBAAO;AAAA,UACT;AAAA,QACF,CAAC;AACD,iBAAS,qBAAqB;AAC5B,cAAI,cAAc,IAAI,iBAAiB,GAAG;AACxC,mBAAO,cAAc,IAAI,iBAAiB;AAAA,UAC5C;AACA,cAAI,cAAc,OAAO,KAAK,kBAAkB,SAAS,EAAE,OAAO,SAAS,UAAU;AACnF,mBAAO,kBAAkB,UAAU,QAAQ,EAAE;AAAA,UAC/C,CAAC;AACD,wBAAc,IAAI,mBAAmB,WAAW;AAChD,iBAAO;AAAA,QACT;AACA,YAAI,gCAAgC;AACpC,iBAAS,YAAY,MAAM;AACzB,cAAI,UAAU,kBAAkB,UAAU,IAAI;AAC9C,cAAIvC,SAAQ,mBAAmB,8BAA8B,CAAC;AAC9D,cAAI,CAAC,SAAS;AACZ,mBAAOA;AAAA,UACT;AACA,cAAI,QAAQ,cAAc;AACxB,YAAAA,OAAM,KAAK,MAAMA,QAAO,mBAAmB,QAAQ,YAAY,CAAC;AAAA,UAClE;AACA,cAAI,QAAQ,eAAe;AACzB,YAAAA,OAAM,KAAK,MAAMA,QAAO,mBAAmB,QAAQ,aAAa,CAAC;AAAA,UACnE;AACA,iBAAOA;AAAA,QACT;AACA,YAAI,uBAAuB;AAC3B,iBAAS,cAAc,OAAO;AAC5B,cAAI,EAAE,iBAAiB,gCAAgC;AACrD,gBAAI,MAAM,aAAa,GAAG;AACxB,qBAAO;AAAA,YACT;AACA,oBAAQ,2BAA2B,KAAK;AAAA,UAC1C;AACA,iBAAO,MAAM,KAAK,YAAY,KAAK;AAAA,QACrC;AACA,YAAI,yBAAyB;AAC7B,iBAAS,kBAAkB,MAAM;AAC/B,cAAI,iBAAiB,kBAAkB,UAAU,IAAI;AACrD,iBAAO,iBAAiB,CAAC,CAAC,eAAe,cAAc;AAAA,QACzD;AACA,YAAI,8BAA8B;AAClC,iBAAS,YAAY,MAAM;AACzB,cAAI,SAAS,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC,GAAG,gBAAgB,OAAO,eAAe,wBAAwB,OAAO,iBAAiB,kBAAkB,0BAA0B,SAAS,QAAQ;AACxO,cAAI,iBAAiB,kBAAkB,UAAU,IAAI;AACrD,cAAI,oBAAoB,4BAA4B,IAAI;AACxD,cAAI,CAAC,kBAAkB,mBAAmB,mBAAmB;AAC3D,mBAAO;AAAA,UACT;AACA,iBAAO,gBAAgB,OAAO,eAAe,SAAS;AAAA,QACxD;AACA,YAAI,wBAAwB;AAC5B,iBAAS,gBAAgB,OAAO;AAC9B,cAAI,SAAS,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC,GAAG,WAAW,OAAO,UAAU,YAAY,OAAO,WAAW,OAAO,OAAO;AAC7J,kBAAQ,iBAAiB,gCAAgC,QAAQ,2BAA2B,KAAK;AACjG,cAAI,MAAM,MAAM,aAAa,GAAG;AAC9B,mBAAO;AAAA,UACT;AACA,cAAI,YAAY,MAAM,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,YAAY;AAC7D,cAAI,WAAW,WAAW,mBAAmB,QAAQ,IAAI,CAAE,QAAS;AACpE,cAAI,iBAAiB,SAAS,KAAK,SAAS,MAAM;AAChD,gBAAI,CAAC,QAAQ,KAAK,OAAO,GAAG,CAAC,MAAM,QAAQ;AACzC,qBAAO;AAAA,YACT;AACA,mBAAO,sBAAsB,MAAM;AAAA,cACjC,eAAe;AAAA,YACjB,CAAC;AAAA,UACH,CAAC;AACD,iBAAO,kBAAkB;AAAA,QAC3B;AACA,YAAI,4BAA4B;AAChC,iBAAS,yBAAyBzL,OAAM;AACtC,iBAAO,OAAO,KAAK,kBAAkB,QAAQ,EAAE,OAAO,SAAS,WAAW;AACxE,gBAAI,MAAM,kBAAkB,SAAS,SAAS;AAC9C,gBAAI,IAAI,cAAc;AACpB,qBAAO,IAAI,aAAa,SAASA,KAAI;AAAA,YACvC;AACA,gBAAI,CAAC,IAAI,SAAS;AAChB,qBAAO;AAAA,YACT;AACA,gBAAI,IAAI,QAAQ,SAAS,KAAK,IAAI,QAAQ,SAAS,EAAE,cAAc;AACjE,qBAAO,IAAI,QAAQ,SAAS,EAAE,aAAa,SAASA,KAAI;AAAA,YAC1D;AACA,mBAAO;AAAA,UACT,CAAC;AAAA,QACH;AACA,YAAI,uCAAuC;AAC3C,iBAAS,OAAO,MAAM;AACpB,cAAI,SAAS,CAAC;AACd,cAAI,OAAO,KAAK;AAChB,mBAAS1B,KAAI,GAAG,YAAY,KAAK,QAAQA,KAAI,WAAWA,MAAK;AAC3D,gBAAI,QAAQ,KAAKA,EAAC,EAAE;AACpB,mBAAOA,EAAC,IAAI,OAAOA,EAAC,KAAK,CAAC;AAC1B,gBAAI,cAAc;AAClB,qBAAS,IAAI,GAAG,aAAa,MAAM,QAAQ,IAAI,YAAY,KAAK;AAC9D,uBAAS,UAAU,GAAG,UAAU,MAAM,CAAC,EAAE,SAAS,WAAW;AAC3D,oBAAI,cAAc,MAAM,CAAC,EAAE,aAAa,SAAS;AACjD,oBAAI,eAAe,SAAS,WAAW,MAAM,KAAK,MAAM,CAAC,EAAE,YAAY,IAAI,KAAK,SAAS,MAAM,CAAC,EAAE;AAClG,yBAAS,UAAU,GAAG,UAAU,cAAc,WAAW;AACvD,yBAAOA,KAAI,OAAO,IAAI,OAAOA,KAAI,OAAO,KAAK,CAAC;AAC9C,yBAAO,OAAOA,KAAI,OAAO,EAAE,WAAW,GAAG;AACvC;AAAA,kBACF;AACA,yBAAOA,KAAI,OAAO,EAAE,WAAW,IAAI,MAAM,CAAC;AAAA,gBAC5C;AACA;AAAA,cACF;AAAA,YACF;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AACA,YAAI,kBAAkB,gBAAgB,MAAM;AAC5C,iBAAS,gBAAgB,MAAM,WAAW;AACxC,cAAI,UAAUa;AACd,cAAI,CAAC,WAAW;AACd,wBAAY,gBAAgB,gBAAgB,MAAM,OAAO,CAAC;AAAA,UAC5D;AACA,eAAK,WAAW,GAAG,WAAW,UAAU,QAAQ,YAAY;AAC1D,gBAAI,UAAU,QAAQ,GAAG;AACvB,cAAAA,SAAQ,UAAU,QAAQ,EAAE,QAAQ,IAAI;AACxC,kBAAIA,WAAU,IAAI;AAChB,uBAAO;AAAA,kBACL,GAAGA;AAAA,kBACH,GAAG;AAAA,gBACL;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,YAAI,4BAA4B,gBAAgB,eAAe;AAC/D,iBAAS,SAAS,MAAM;AACtB,cAAI,QAAQ,KAAK,aAAa,OAAO;AACrC,cAAI,OAAO,KAAK,aAAa,MAAM;AACnC,cAAI,gBAAgB5C,QAAO,YAAY,SAAS,CAAE,MAAM,IAAK,EAAE,QAAQ,KAAK,SAAS,YAAY,CAAC,MAAM,IAAI;AAC1G,kBAAM,IAAI,UAAU,2BAA2B;AAAA,UACjD;AACA,cAAI,SAAS,gBAAgB;AAC3B,mBAAO;AAAA,UACT,WAAW,SAAS,aAAa;AAC/B,mBAAO;AAAA,UACT,WAAW,UAAU,SAAS,UAAU,OAAO;AAC7C,mBAAO;AAAA,UACT,WAAW,KAAK,SAAS,YAAY,MAAM,MAAM;AAC/C,mBAAO;AAAA,UACT;AACA,cAAI,YAAY,gBAAgB,gBAAgB,MAAM,OAAO,CAAC;AAC9D,cAAI,MAAM,0BAA0B,MAAM,SAAS;AACnD,cAAI,YAAY,UAAU,IAAI,CAAC,EAAE,OAAO,SAAS,YAAY,OAAO;AAClE,mBAAO,cAAc,MAAM,SAAS,YAAY,MAAM;AAAA,UACxD,GAAG,IAAI;AACP,cAAI,WAAW;AACb,mBAAO;AAAA,UACT;AACA,cAAI,YAAY,UAAU,IAAI,SAAS,KAAK;AAC1C,mBAAO,IAAI,IAAI,CAAC;AAAA,UAClB,CAAC,EAAE,OAAO,SAAS,YAAY,OAAO;AACpC,mBAAO,cAAc,SAAS,MAAM,SAAS,YAAY,MAAM;AAAA,UACjE,GAAG,IAAI;AACP,cAAI,WAAW;AACb,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,oBAAoB;AACxB,iBAAS,eAAe,SAAS;AAC/B,iBAAO,CAAE,OAAO,MAAO,EAAE,QAAQ,kBAAkB,OAAO,CAAC,MAAM;AAAA,QACnE;AACA,YAAI,2BAA2B;AAC/B,iBAAS,YAAY,MAAM;AACzB,iBAAO,CAAE,OAAO,MAAO,EAAE,SAAS,kBAAkB,IAAI,CAAC;AAAA,QAC3D;AACA,YAAI,wBAAwB;AAC5B,YAAI,4BAA4B,qCAAqC,YAAY,EAAE,IAAI,SAAS,WAAW;AACzG,iBAAO,GAAG,OAAO,WAAW,cAAc;AAAA,QAC5C,CAAC,EAAE,KAAK,IAAI,IAAI;AAChB,iBAAS,kBAAkB,OAAO;AAChC,cAAI,iBAAiB,iBAAiB,4BAA4B,KAAK,CAAC;AACxE,cAAI,YAAY,iBAAiB,uBAAuB,KAAK,CAAC;AAC9D,iBAAO,CAAC,EAAE,kBAAkB;AAAA,QAC9B;AACA,YAAI,oBAAoB;AAAA,UACtB,GAAG,SAAS,EAAE,OAAO;AACnB,mBAAO,MAAM,QAAQ,MAAM,IAAI,SAAS;AAAA,UAC1C;AAAA,UACA,MAAM,SAAS,KAAK,OAAO;AACzB,mBAAO,MAAM,QAAQ,MAAM,IAAI,SAAS;AAAA,UAC1C;AAAA,UACA,SAAS;AAAA,UACT,OAAO;AAAA,UACP,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,IAAI;AAAA,UACJ,KAAK;AAAA,UACL,SAAS;AAAA,UACT,QAAQ;AAAA,UACR,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,QAAQ;AAAA,UACR,QAAQ,SAAS,OAAO,OAAO;AAC7B,gBAAI,oBAAoB,gBAAgB,OAAO,yBAAyB;AACxE,mBAAO,CAAC,oBAAoB,gBAAgB;AAAA,UAC9C;AAAA,UACA,MAAM,SAAS,KAAK,OAAO;AACzB,mBAAO,kBAAkB,KAAK,IAAI,SAAS;AAAA,UAC7C;AAAA,UACA,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,IAAI;AAAA,UACJ,QAAQ,SAAS,OAAO,OAAO;AAC7B,gBAAI,oBAAoB,gBAAgB,OAAO,yBAAyB;AACxE,mBAAO,CAAC,oBAAoB,WAAW;AAAA,UACzC;AAAA,UACA,IAAI;AAAA,UACJ,KAAK,SAAS,IAAI,OAAO;AACvB,gBAAI,WAAW,MAAM,QAAQ,KAAK,KAAK,CAAC,MAAM,KAAK,KAAK;AACxD,gBAAI,gBAAgB,8BAA8B,EAAE,KAAK,SAAS,MAAM;AACtE,qBAAO,MAAM,QAAQ,IAAI;AAAA,YAC3B,CAAC;AACD,mBAAO,YAAY,CAAC,iBAAiB,CAAC,qBAAqB,KAAK,IAAI,iBAAiB;AAAA,UACvF;AAAA,UACA,OAAO,SAAS,MAAM,OAAO;AAC3B,gBAAI;AACJ,gBAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,kBAAI,cAAc,eAAe,MAAM,YAAY,MAAM,EAAE,OAAO,SAAS,MAAM;AAC/E,uBAAO,CAAC,CAAC;AAAA,cACX,CAAC,EAAE,CAAC;AACJ,yCAA2B,eAAe,YAAY,SAAS,YAAY,MAAM;AAAA,YACnF;AACA,oBAAQ,MAAM,MAAM,MAAM;AAAA,cACzB,KAAK;AACJ,uBAAO;AAAA,cAER,KAAK;AACJ,uBAAO;AAAA,cAER,KAAK;AACJ,uBAAO;AAAA,cAER,KAAK;AACJ,uBAAO;AAAA,cAER,KAAK;AACJ,uBAAO,CAAC,2BAA2B,cAAc;AAAA,cAElD,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACJ,uBAAO;AAAA,cAER,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACJ,uBAAO,CAAC,2BAA2B,YAAY;AAAA,cAEhD;AACC,uBAAO;AAAA,YACT;AAAA,UACF;AAAA,UACA,IAAI;AAAA,UACJ,MAAM;AAAA,UACN,MAAM;AAAA,UACN,MAAM;AAAA,UACN,KAAK;AAAA,UACL,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,SAAS,SAAS,QAAQ,OAAO;AAC/B,mBAAO,kBAAkB,KAAK,IAAI,WAAW;AAAA,UAC/C;AAAA,UACA,QAAQ,SAASmK,QAAO,OAAO;AAC7B,mBAAO,MAAM,QAAQ,UAAU,KAAK,SAAS,MAAM,KAAK,MAAM,CAAC,IAAI,IAAI,YAAY;AAAA,UACrF;AAAA,UACA,SAAS;AAAA,UACT,OAAO;AAAA,UACP,OAAO;AAAA,UACP,IAAI,SAAS,GAAG,OAAO;AACrB,gBAAI,SAAS,gBAAgB,OAAO,OAAO;AAC3C,gBAAI,OAAO,0BAA0B,MAAM;AAC3C,mBAAO,CAAE,QAAQ,UAAW,EAAE,SAAS,IAAI,IAAI,aAAa;AAAA,UAC9D;AAAA,UACA,UAAU;AAAA,UACV,OAAO;AAAA,UACP,IAAI,SAAS,GAAG,OAAO;AACrB,gBAAI,yBAAyB,MAAM,UAAU,GAAG;AAC9C,qBAAO;AAAA,YACT;AACA,gBAAI,sBAAsB,MAAM,UAAU,GAAG;AAC3C,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,UACA,OAAO;AAAA,UACP,IAAI;AAAA,UACJ,IAAI;AAAA,QACN;AACA,YAAI,8BAA8B;AAClC,iBAAS,aAAa,MAAM;AAC1B,cAAI,QAAQ,gBAAgB,gCAAgC,OAAO,2BAA2B,IAAI;AAClG,iBAAO,MAAM;AACb,cAAI,CAAC,OAAO;AACV,kBAAM,IAAI,eAAe,+DAA+D;AAAA,UAC1F;AACA,cAAI,QAAQ,KAAK,iBAAiB,8BAA8B;AAC9D,mBAAO;AAAA,UACT;AACA,cAAI,YAAY,MAAM,MAAM;AAC5B,cAAI,OAAO,4BAA4B,SAAS;AAChD,cAAI,CAAC,MAAM;AACT,mBAAO;AAAA,UACT;AACA,cAAI,OAAO,SAAS,YAAY;AAC9B,mBAAO,KAAK,KAAK;AAAA,UACnB;AACA,iBAAO;AAAA,QACT;AACA,YAAI,wBAAwB;AAC5B,YAAI,4BAA4B;AAAA,UAC9B,IAAI,CAAE,IAAK;AAAA,UACX,IAAI,CAAE,IAAK;AAAA,UACX,IAAI,CAAE,SAAS,SAAS,SAAS,OAAQ;AAAA,UACzC,OAAO,CAAE,OAAQ;AAAA,UACjB,OAAO,CAAE,OAAQ;AAAA,UACjB,OAAO,CAAE,OAAQ;AAAA,UACjB,IAAI,CAAE,MAAM,IAAK;AAAA,UACjB,IAAI,CAAE,MAAM,KAAM;AAAA,UAClB,IAAI,CAAE,MAAM,KAAM;AAAA,UAClB,KAAK,CAAE,IAAK;AAAA,QACd;AACA,iBAAS,iBAAiB,OAAO,qBAAqB;AACpD,cAAI,kBAAkB,0BAA0B,MAAM,MAAM,QAAQ;AACpE,cAAI,CAAC,iBAAiB;AACpB,mBAAO;AAAA,UACT;AACA,cAAI,CAAC,MAAM,QAAQ;AACjB,kBAAM,IAAI,eAAe,kGAAkG;AAAA,UAC7H;AACA,cAAI,CAAC,gBAAgB,SAAS,MAAM,OAAO,MAAM,QAAQ,GAAG;AAC1D,mBAAO;AAAA,UACT;AACA,cAAI,aAAa,0BAA0B,MAAM,QAAQ,mBAAmB;AAC5E,cAAI,CAAE,QAAQ,cAAe,EAAE,SAAS,UAAU,KAAK,CAAC,sBAAsB,MAAM,MAAM,GAAG;AAC3F,mBAAO;AAAA,UACT;AACA,cAAI,YAAY;AACd,mBAAO;AAAA,UACT;AACA,iBAAO,iBAAiB,MAAM,QAAQ,mBAAmB;AAAA,QAC3D;AACA,iBAAS,oBAAoB,OAAO,qBAAqB;AACvD,cAAI,gBAAgB,sBAAsB,KAAK;AAC/C,cAAI,CAAC,eAAe;AAClB,mBAAO;AAAA,UACT;AACA,cAAI,qBAAqB,iBAAiB,OAAO,mBAAmB;AACpE,cAAI,oBAAoB;AACtB,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,iBAAS,sBAAsB,OAAO;AACpC,cAAI,gBAAgB,8BAA8B,EAAE,KAAK,SAAS,MAAM;AACtE,mBAAO,MAAM,QAAQ,IAAI;AAAA,UAC3B,CAAC;AACD,iBAAO,iBAAiB,qBAAqB,KAAK;AAAA,QACpD;AACA,iBAAS,YAAY,MAAM;AACzB,cAAI,SAAS,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AAClF,cAAI,aAAa,OAAO,YAAY,sBAAsB,yBAAyB,QAAQ,CAAE,YAAa,CAAC;AAC3G,cAAI,QAAQ,gBAAgB,gCAAgC,OAAO,2BAA2B,IAAI;AAClG,cAAI,MAAM,MAAM,aAAa,GAAG;AAC9B,mBAAO;AAAA,UACT;AACA,cAAI,gBAAgB,0BAA0B,OAAO,mBAAmB;AACxE,cAAI,CAAC,eAAe;AAClB,mBAAO,aAAa,OAAO,oBAAoB,OAAO,mBAAmB;AAAA,UAC3E;AACA,cAAI,CAAC,CAAE,gBAAgB,MAAO,EAAE,SAAS,aAAa,GAAG;AACvD,mBAAO;AAAA,UACT;AACA,cAAI,sBAAsB,KAAK,GAAG;AAChC,mBAAO,aAAa,OAAO,oBAAoB,OAAO,mBAAmB;AAAA,UAC3E;AACA,iBAAO;AAAA,QACT;AACA,iBAAS,QAAQ,MAAM;AACrB,cAAI,SAAS,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AAClF,cAAI,mBAAmB,OAAO,kBAAkB,UAAU,yBAAyB,QAAQ,CAAE,kBAAmB,CAAC;AACjH,cAAI,OAAO,YAAY,MAAM,OAAO;AACpC,cAAI,oBAAoB,CAAE,gBAAgB,MAAO,EAAE,SAAS,IAAI,GAAG;AACjE,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,mBAAmB;AACvB,iBAAS,cAAc,YAAY,SAAS;AAC1C,cAAI,cAAc,QAAQ,OAAO;AACjC,cAAI,MAAM,QAAQ,OAAO,KAAK,OAAO,eAAe,aAAa;AAC/D,mBAAO,QAAQ,SAAS,UAAU;AAAA,UACpC;AACA,cAAI,gBAAgB,YAAY;AAC9B,mBAAO,CAAC,CAAC,QAAQ,UAAU;AAAA,UAC7B;AACA,cAAI,eAAe,QAAQ,eAAe,QAAQ;AAChD,gBAAI,mBAAmB,QAAQ;AAC7B,qBAAO,QAAQ,KAAK,UAAU;AAAA,YAChC;AACA,gBAAI,WAAW,KAAK,OAAO,GAAG;AAC5B,kBAAI,UAAU,QAAQ,UAAU,GAAG,QAAQ,SAAS,CAAC;AACrD,qBAAO,IAAI,OAAO,OAAO,EAAE,KAAK,UAAU;AAAA,YAC5C;AAAA,UACF;AACA,iBAAO,YAAY;AAAA,QACrB;AACA,YAAI,yBAAyB;AAC7B,iBAAS,aAAauH,WAAU,SAAS;AACvC,cAAI,cAAc,QAAQ,OAAO;AACjC,cAAI,gBAAgB,YAAY,MAAM,QAAQ,OAAO,KAAK,mBAAmB,QAAQ;AACnF,kBAAM,IAAI,MAAM,gCAAgC;AAAA,UAClD;AACA,iBAAO,OAAO,KAAK,OAAO,EAAE,MAAM,SAAS,UAAU;AACnD,mBAAO,uBAAuBA,UAAS,QAAQ,GAAG,QAAQ,QAAQ,CAAC;AAAA,UACrE,CAAC;AAAA,QACH;AACA,YAAI,wBAAwB;AAC5B,iBAAS,WAAW,OAAO,SAAS;AAClC,cAAI,EAAE,iBAAiB,gCAAgC;AACrD,oBAAQ,2BAA2B,KAAK;AAAA,UAC1C;AACA,iBAAO,sBAAsB,SAAS,UAAU;AAC9C,mBAAO,MAAM,KAAK,QAAQ;AAAA,UAC5B,GAAG,OAAO;AAAA,QACZ;AACA,YAAI,qBAAqB;AACzB,iBAAS,UAAU,KAAK,YAAY;AAClC,iBAAO,CAAC,CAAC,WAAW,GAAG;AAAA,QACzB;AACA,YAAI,oBAAoB;AACxB,iBAAS,aAAa,OAAO,SAAS;AACpC,iBAAO,uBAAuB,0BAA0B,KAAK,GAAG,OAAO;AAAA,QACzE;AACA,YAAI,wBAAwB;AAC5B,iBAAS,cAAc,OAAO,SAAS;AACrC,iBAAO,uBAAuB,sBAAsB,KAAK,GAAG,OAAO;AAAA,QACrE;AACA,YAAI,yBAAyB;AAC7B,iBAAS,SAAS,OAAO,SAAS;AAChC,cAAI,EAAE,iBAAiB,gCAAgC;AACrD,oBAAQ,2BAA2B,KAAK;AAAA,UAC1C;AACA,iBAAO,uBAAuB,MAAM,MAAM,UAAU,OAAO;AAAA,QAC7D;AACA,YAAI,oBAAoB;AACxB,iBAAS,WAAW,OAAO,SAAS;AAClC,cAAI,EAAE,iBAAiB,gCAAgC;AACrD,oBAAQ,2BAA2B,KAAK;AAAA,UAC1C;AACA,iBAAO,sBAAsB,SAAS,UAAU;AAC9C,mBAAO,MAAM,MAAM,QAAQ;AAAA,UAC7B,GAAG,OAAO;AAAA,QACZ;AACA,YAAI,qBAAqB;AACzB,iBAAS,aAAa,OAAO,SAAS;AACpC,iBAAO,uBAAuB,iBAAiB,KAAK,GAAG,OAAO;AAAA,QAChE;AACA,YAAI,wBAAwB;AAC5B,YAAI,WAAW;AAAA,UACb,YAAY;AAAA,UACZ,WAAW;AAAA,UACX,cAAc;AAAA,UACd,cAAc;AAAA,UACd,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,cAAc;AAAA,QAChB;AACA,iBAAS,eAAe,OAAO,YAAY;AACzC,cAAI,EAAE,iBAAiB,gCAAgC;AACrD,oBAAQ,2BAA2B,KAAK;AAAA,UAC1C;AACA,cAAI,MAAM,QAAQ,UAAU,GAAG;AAC7B,mBAAO,WAAW,KAAK,SAAS,gBAAgB;AAC9C,qBAAO,eAAe,OAAO,cAAc;AAAA,YAC7C,CAAC;AAAA,UACH;AACA,cAAI,OAAO,eAAe,UAAU;AAClC,mBAAO,gBAAgB,OAAO,UAAU;AAAA,UAC1C;AACA,iBAAO,OAAO,KAAK,UAAU,EAAE,MAAM,SAAS,aAAa;AACzD,gBAAI,CAAC,SAAS,WAAW,GAAG;AAC1B,oBAAM,IAAI,MAAM,yBAAyB,OAAO,aAAa,GAAG,CAAC;AAAA,YACnE;AACA,gBAAI,cAAc,SAAS,WAAW;AACtC,gBAAI,UAAU,WAAW,WAAW;AACpC,mBAAO,YAAY,OAAO,OAAO;AAAA,UACnC,CAAC;AAAA,QACH;AACA,YAAI,0BAA0B;AAC9B,iBAAS,SAAS,OAAO,YAAY;AACnC,iBAAO,wBAAwB,OAAO,UAAU;AAAA,QAClD;AACA,YAAI,mBAAmB;AACvB,yBAAiB,aAAa;AAC9B,yBAAiB,YAAY;AAC7B,yBAAiB,eAAe;AAChC,yBAAiB,iBAAiB;AAClC,yBAAiB,eAAe;AAChC,yBAAiB,gBAAgB;AACjC,yBAAiB,eAAe;AAChC,yBAAiB,WAAW;AAC5B,yBAAiB,aAAa;AAC9B,yBAAiB,eAAe;AAChC,YAAI,mBAAmB;AACvB,iBAAS,eAAe,OAAO;AAC7B,cAAI,WAAW,kBAAkB,SAAS,MAAM,MAAM,QAAQ;AAC9D,cAAI,CAAC,UAAU;AACb,mBAAO,CAAC;AAAA,UACV;AACA,cAAI,CAAC,SAAS,SAAS;AACrB,mBAAO;AAAA,UACT;AACA,cAAI,UAAU,SAAS,SAAS,OAAO,yBAAyB,UAAU,CAAE,SAAU,CAAC;AACvF,mBAAS,eAAe,SAAS;AAC/B,gBAAI,CAAC,QAAQ,eAAe,WAAW,KAAK,gBAAgB,WAAW;AACrE;AAAA,YACF;AACA,gBAAI,uBAAuB,QAAQ,WAAW,GAAG,YAAY,qBAAqB,SAAS/Q,SAAQ,yBAAyB,sBAAsB,CAAE,SAAU,CAAC;AAC/J,gBAAI,iBAAiB,OAAO,SAAS,GAAG;AACtC,uBAAS,YAAYA,QAAO;AAC1B,oBAAIA,OAAM,eAAe,QAAQ,GAAG;AAClC,uBAAK,QAAQ,IAAIA,OAAM,QAAQ;AAAA,gBACjC;AAAA,cACF;AAAA,YACF;AAAA,UACF;AACA,mBAAS,aAAa,QAAQ,SAAS,GAAG;AACxC,gBAAI,QAAQ,SAAS,EAAE,eAAe,SAAS,KAAK,OAAO,KAAK,SAAS,MAAM,aAAa;AAC1F,mBAAK,SAAS,IAAI,QAAQ,SAAS,EAAE,SAAS;AAAA,YAChD;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AACA,YAAI,2BAA2B;AAC/B,YAAI,sBAAsB,CAAE,QAAS;AACrC,iBAAS,UAAU,MAAM;AACvB,cAAI,QAAQ,gBAAgB,gCAAgC,OAAO,2BAA2B,IAAI;AAClG,cAAI,MAAM,MAAM,aAAa,KAAK,CAAC,KAAK,QAAQ,OAAO,GAAG;AACxD,mBAAO;AAAA,UACT;AACA,cAAI,CAAC,iBAAiB,OAAO,mBAAmB,KAAK,CAAE,QAAQ,cAAe,EAAE,SAAS,iBAAiB,KAAK,CAAC,GAAG;AACjH,mBAAO;AAAA,UACT;AACA,iBAAO,MAAM,KAAK,OAAO;AAAA,QAC3B;AACA,YAAI,qBAAqB;AACzB,iBAAS,kBAAkB,OAAO;AAChC,cAAI,SAAS,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,OAAO;AACrG,kBAAQ,iBAAiB,gCAAgC,QAAQ,2BAA2B,KAAK;AACjG,cAAI,MAAM,MAAM,aAAa,GAAG;AAC9B,mBAAO;AAAA,UACT;AACA,cAAI,OAAO,iBAAiB,KAAK;AACjC,cAAI,UAAU,kBAAkB,UAAU,IAAI;AAC9C,cAAI,WAAW,QAAQ,iBAAiB;AACtC,mBAAO;AAAA,UACT;AACA,cAAI,QAAQ;AACV,mBAAO;AAAA,UACT;AACA,iBAAO,CAAC,WAAW,CAAE,gBAAgB,MAAO,EAAE,SAAS,IAAI;AAAA,QAC7D;AACA,YAAI,8BAA8B;AAClC,iBAAS,gBAAgB,aAAa;AACpC,cAAI,aAAa,YAAY,YAAYgR,YAAW,YAAY;AAChE,cAAI,CAACA,WAAU;AACb,kBAAM,IAAI,MAAM,yCAAyC;AAAA,UAC3D;AACA,cAAI,YAAY,QAAQ,WAAW,GAAG;AACpC,gBAAI,OAAO,eAAe,YAAY,WAAW,EAAE,OAAO,SAAS,SAAS;AAC1E,qBAAO,CAAC,CAAC;AAAA,YACX,CAAC,EAAE,IAAI,SAAS,SAAS;AACvB,qBAAO,IAAI,MAAM,gBAAgB,OAAO;AAAA,YAC1C,CAAC;AACD,mBAAO,CAAC,EAAE,OAAO,mBAAmBA,SAAQ,GAAG,mBAAmB,IAAI,CAAC;AAAA,UACzE;AACA,iBAAO,mBAAmBA,SAAQ;AAAA,QACpC;AACA,YAAI,4BAA4B;AAChC,iBAAS,YAAY,aAAa;AAChC,cAAI,WAAW,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AACpF,cAAI,oBAAoB,gCAAgC;AACxD,mBAAS,YAAY,SAAS,aAAa;AAC3C,cAAI,WAAW,UAAU,SAAS,SAAS,QAAQ,mBAAmB,SAAS,kBAAkB,sBAAsB,SAAS;AAChI,cAAI,kBAAkB,aAAa,QAAQ,KAAK,YAAY,MAAM,aAAa,GAAG;AAChF,mBAAO;AAAA,UACT;AACA,cAAI,CAAC,4BAA4B,aAAa;AAAA,YAC5C;AAAA,UACF,CAAC,KAAK,CAAC,SAAS,mBAAmB;AACjC,mBAAO;AAAA,UACT;AACA,cAAI,CAAC,QAAQ;AACX,gBAAI,oBAAoB,CAAC,oBAAoB,CAAC;AAC9C,uBAAW,SAAS;AAAA,cAClB;AAAA,YACF,GAAG,QAAQ;AAAA,UACb;AACA,iBAAO,0BAA0B,WAAW,EAAE,OAAO,SAAS,aAAa,OAAO;AAChF,mBAAO,qBAAqB,aAAa,OAAO,QAAQ;AAAA,UAC1D,GAAG,EAAE;AAAA,QACP;AACA,YAAI,mBAAmB,qCAAqC,UAAU,EAAE,OAAO,CAAE,OAAQ,CAAC;AAC1F,iBAAS,qBAAqB,aAAa,aAAa,UAAU;AAChE,cAAI,YAAY,YAAY,MAAM;AAClC,cAAI,iBAAiB,gCAAgC,aAAa,QAAQ;AAC1E,cAAI,CAAC,gBAAgB;AACnB,mBAAO;AAAA,UACT;AACA,cAAI,CAAC,iBAAiB,SAAS,SAAS,GAAG;AACzC,gBAAI,eAAe,CAAC,MAAM,KAAK;AAC7B,gCAAkB;AAAA,YACpB;AACA,gBAAI,eAAe,YAAY,YAAY,SAAS,CAAC,MAAM,KAAK;AAC9D,+BAAiB,MAAM;AAAA,YACzB;AAAA,UACF;AACA,iBAAO,cAAc;AAAA,QACvB;AACA,YAAI,uBAAuB;AAC3B,iBAAS,UAAU,aAAa;AAC9B,cAAI,WAAW,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AACpF,cAAI,oBAAoB,gCAAgC;AACxD,cAAI,SAAS,oBAAoB,SAAS,uBAAuB,kBAAkB,aAAa,QAAQ,GAAG;AACzG,mBAAO;AAAA,UACT;AACA,cAAI,CAAC,SAAS,WAAW;AACvB,qBAAS,YAAY;AAAA,UACvB;AACA,cAAI,eAAe,SAAS;AAAA,YAC1B,kBAAkB;AAAA,UACpB,GAAG,QAAQ;AACX,cAAI,iBAAiB,kBAAkB,WAAW;AAClD,cAAI,gBAAgB,gBAAgB,aAAa,OAAO;AACxD,cAAI;AACJ,cAAI,eAAe;AACjB,qBAAS,CAAC,EAAE,OAAO,mBAAmB,cAAc,GAAG,CAAE,cAAc,UAAW,CAAC;AACnF,mBAAO,KAAK,mBAAmB;AAAA,UACjC,OAAO;AACL,qBAAS;AAAA,UACX;AACA,iBAAO,OAAO,IAAI,SAAS,QAAQ;AACjC,mBAAO,wBAAwB,QAAQ,YAAY;AAAA,UACrD,CAAC,EAAE,OAAO,SAAS,QAAQ;AACzB,mBAAO,WAAW;AAAA,UACpB,CAAC,EAAE,KAAK,GAAG;AAAA,QACb;AACA,iBAAS,kBAAkB,aAAa;AACtC,cAAI,CAAC,YAAY,KAAK,IAAI,GAAG;AAC3B,mBAAO,CAAC;AAAA,UACV;AACA,cAAI,CAAC,YAAY,YAAY;AAC3B,kBAAM,IAAI,UAAU,2DAA2D;AAAA,UACjF;AACA,iBAAO,6BAA6B;AAAA,YAClC,KAAK;AAAA,YACL,MAAM;AAAA,YACN,OAAO,YAAY,KAAK,IAAI;AAAA,YAC5B,SAAS,YAAY;AAAA,UACvB,CAAC;AAAA,QACH;AACA,YAAI,qBAAqB;AACzB,YAAI,sBAAsB;AAAA,UACxB,QAAQ;AAAA,UACR,OAAO;AAAA,UACP,OAAO;AAAA,UACP,QAAQ;AAAA,QACV;AACA,YAAI,oBAAoB;AAAA,UACtB,WAAW,SAAS,UAAU,QAAQ;AACpC,gBAAI,aAAa,OAAO;AACxB,mBAAO,WAAW,SAAS;AAAA,UAC7B;AAAA,UACA,mBAAmB,SAAS,kBAAkB,QAAQ;AACpD,gBAAI,aAAa,OAAO;AACxB,mBAAO,oBAAoB,WAAW,IAAI,KAAK;AAAA,UACjD;AAAA,UACA,kBAAkB,eAAe,KAAK,MAAM,SAAS;AAAA,UACrD,YAAY,eAAe,KAAK,MAAM,YAAY;AAAA,UAClD,cAAc,eAAe,KAAK,MAAM,OAAO;AAAA,UAC/C,oBAAoB,eAAe,KAAK,MAAM,QAAQ;AAAA,UACtD,SAAS,SAAS,KAAK,MAAM,KAAK;AAAA,UAClC,kBAAkB,SAAS,KAAK,MAAM,SAAS;AAAA,UAC/C,WAAW;AAAA,UACX,aAAa;AAAA,UACb,WAAW;AAAA,UACX,aAAa,SAAS,cAAc;AAClC,mBAAO;AAAA,UACT;AAAA,UACA,iBAAiB,SAAS,KAAK,MAAM,aAAa;AAAA,QACpD;AACA,iBAAS,SAAS,MAAM,OAAO;AAC7B,iBAAO,MAAM,KAAK,IAAI,KAAK;AAAA,QAC7B;AACA,iBAAS,eAAe,WAAW,QAAQ,UAAU;AACnD,cAAI,aAAa,OAAO;AACxB,sBAAY,UAAU,YAAY;AAClC,cAAI,YAAY,CAAE,WAAW,WAAW,SAAS,YAAY,CAAE,EAAE,KAAK,GAAG;AACzE,cAAI,YAAY,WAAW,cAAc,SAAS;AAClD,cAAI,CAAC,aAAa,UAAU,SAAS,YAAY,MAAM,WAAW;AAChE,mBAAO;AAAA,UACT;AACA,iBAAO,wBAAwB,WAAW,QAAQ;AAAA,QACpD;AACA,YAAI,8BAA8B;AAClC,iBAAS,sBAAsB,aAAa;AAC1C,cAAI,WAAW,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AACpF,cAAI,aAAa,YAAY;AAC7B,cAAI,YAAY,MAAM,aAAa,KAAK,CAAE,gBAAgB,MAAO,EAAE,SAAS,iBAAiB,WAAW,CAAC,GAAG;AAC1G,mBAAO;AAAA,UACT;AACA,cAAI,cAAc,gBAAgB,WAAW;AAC7C,cAAI,UAAU,YAAY,OAAO,SAAS,UAAU,MAAM;AACxD,mBAAO,YAAY,KAAK,aAAa,QAAQ;AAAA,UAC/C,GAAG,EAAE;AACL,cAAI,SAAS,OAAO;AAClB,gBAAI,IAAI,WAAW,iBAAiB,YAAY,QAAQ;AAAA,UAC1D;AACA,iBAAO;AAAA,QACT;AACA,iBAAS,gBAAgB,aAAa;AACpC,cAAI,UAAU,yBAAyB,WAAW;AAClD,cAAI,UAAU,QAAQ,iBAAiB,CAAC;AACxC,iBAAO,QAAQ,IAAI,SAAS,YAAY;AACtC,mBAAO,4BAA4B,UAAU;AAAA,UAC/C,CAAC;AAAA,QACH;AACA,YAAI,kCAAkC;AACtC,YAAI,cAAc;AAAA,UAChB,8BAA8B,CAAE,YAAY,WAAW,aAAc;AAAA,QACvE;AACA,YAAI,sBAAsB;AAC1B,YAAI,oBAAoB,CAAE,UAAU,YAAY,SAAS,QAAQ,UAAU,SAAS,YAAY,SAAS,SAAS,QAAS;AAC3H,iBAAS,gBAAgB,MAAM;AAC7B,iBAAO,gBAAgB,gCAAgC,OAAO,2BAA2B,IAAI;AAC7F,cAAI,YAAY,KAAK,MAAM;AAC3B,iBAAO,cAAc,cAAc,cAAc,WAAW,CAAC,kBAAkB,UAAU,KAAK,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC;AAAA,QACjI;AACA,YAAI,4BAA4B;AAChC,iBAAS,eAAe,MAAM;AAC5B,iBAAO,gBAAgB,gCAAgC,OAAO,2BAA2B,IAAI;AAC7F,cAAI,YAAY,KAAK,MAAM;AAC3B,iBAAO,cAAc;AAAA,QACvB;AACA,YAAI,2BAA2B;AAC/B,iBAAS,cAAc,MAAM;AAC3B,cAAI,OAAO,0BAA0B,IAAI;AACzC,iBAAO,SAAS;AAAA,QAClB;AACA,YAAI,0BAA0B;AAC9B,iBAAS,cAAc,MAAM;AAC3B,cAAI,OAAO,0BAA0B,IAAI;AACzC,iBAAO,SAAS;AAAA,QAClB;AACA,YAAI,0BAA0B;AAC9B,iBAAS,eAAe,MAAM;AAC5B,cAAI,OAAO,0BAA0B,IAAI;AACzC,iBAAO,SAAS;AAAA,QAClB;AACA,YAAI,2BAA2B;AAC/B,YAAI,aAAa,CAAE,eAAe,aAAa,UAAU,YAAa;AACtE,iBAAS,YAAY,MAAM;AACzB,cAAI,OAAO,0BAA0B,IAAI;AACzC,iBAAO,WAAW,SAAS,IAAI;AAAA,QACjC;AACA,YAAI,wBAAwB;AAC5B,YAAI,oBAAoB,CAAE,WAAW,eAAe,aAAa,UAAU,cAAc,YAAY,SAAU;AAC/G,YAAI,2BAA2B;AAAA,UAC7B;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AACA,iBAAS,iBAAiB,aAAa;AACrC,cAAI,WAAW,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AACpF,cAAI,aAAa,YAAY;AAC7B,cAAI,mBAAmB,oBAAoB,gCAAgC,CAAC;AAC5E,cAAI,OAAO,iBAAiB,WAAW;AACvC,cAAI,SAAS,cAAc,eAAe,CAAC,kBAAkB,SAAS,IAAI,KAAK,iBAAiB,SAAS,IAAI,GAAG;AAC9G,mBAAO;AAAA,UACT;AACA,cAAI,eAAe,OAAO,KAAK,wBAAwB,EAAE,IAAI,SAAS,MAAM;AAC1E,mBAAO,yBAAyB,IAAI;AAAA,UACtC,CAAC;AACD,cAAI,cAAc,aAAa,OAAO,SAAS,SAAS,MAAM;AAC5D,mBAAO,WAAW,KAAK,aAAa,QAAQ;AAAA,UAC9C,GAAG,EAAE;AACL,cAAI,SAAS,OAAO;AAClB,wBAAY,eAAe,iBAAiB,YAAY,QAAQ;AAAA,UAClE;AACA,iBAAO;AAAA,QACT;AACA,iBAAS,mBAAmB,MAAM;AAChC,cAAI,QAAQ,gBAAgB,gCAAgC,OAAO,2BAA2B,IAAI;AAClG,cAAI,0BAA0B,KAAK,GAAG;AACpC,mBAAO,MAAM,MAAM,SAAS;AAAA,UAC9B;AACA,iBAAO;AAAA,QACT;AACA,iBAAS,kBAAkB,MAAM;AAC/B,cAAI,QAAQ,gBAAgB,gCAAgC,OAAO,2BAA2B,IAAI;AAClG,cAAI,CAAC,yBAAyB,KAAK,GAAG;AACpC,mBAAO;AAAA,UACT;AACA,cAAI,UAAU,2BAA2B,OAAO,QAAQ;AACxD,cAAI,kBAAkB,QAAQ,OAAO,SAAS,QAAQ;AACpD,mBAAO,OAAO,QAAQ,UAAU;AAAA,UAClC,CAAC;AACD,cAAI,CAAC,gBAAgB,QAAQ;AAC3B,4BAAgB,KAAK,QAAQ,CAAC,CAAC;AAAA,UACjC;AACA,iBAAO,gBAAgB,IAAI,SAAS,QAAQ;AAC1C,mBAAO,wBAAwB,MAAM;AAAA,UACvC,CAAC,EAAE,KAAK,GAAG,KAAK;AAAA,QAClB;AACA,iBAAS,iBAAiB,MAAM;AAC9B,cAAI,QAAQ,gBAAgB,gCAAgC,OAAO,2BAA2B,IAAI;AAClG,cAAI,aAAa,MAAM;AACvB,cAAI,CAAC,wBAAwB,KAAK,GAAG;AACnC,mBAAO;AAAA,UACT;AACA,cAAI,CAAC,cAAc,cAAc,CAAC,2BAA2B,UAAU,GAAG;AACxE,mBAAO,wBAAwB,OAAO,IAAI;AAAA,UAC5C,OAAO;AACL,mBAAO,WAAW;AAAA,UACpB;AAAA,QACF;AACA,iBAAS,iBAAiB,MAAM,UAAU;AACxC,cAAI,QAAQ,gBAAgB,gCAAgC,OAAO,2BAA2B,IAAI;AAClG,cAAI,CAAC,wBAAwB,KAAK,GAAG;AACnC,mBAAO;AAAA,UACT;AACA,cAAI,WAAW,0BAA0B,KAAK,EAAE,OAAO,SAAS,OAAO;AACrE,mBAAO,iBAAiB,KAAK,MAAM,YAAY,MAAM,KAAK,eAAe,MAAM;AAAA,UACjF,CAAC;AACD,cAAI,SAAS,WAAW,GAAG;AACzB,mBAAO;AAAA,UACT;AACA,iBAAO,gCAAgC,SAAS,CAAC,GAAG,QAAQ;AAAA,QAC9D;AACA,iBAAS,kBAAkB,MAAM,UAAU;AACzC,cAAI,QAAQ,gBAAgB,gCAAgC,OAAO,2BAA2B,IAAI;AAClG,cAAI,CAAC,yBAAyB,KAAK,GAAG;AACpC,mBAAO;AAAA,UACT;AACA,cAAI,UAAU,0BAA0B,KAAK,EAAE,OAAO,SAAS,KAAK;AAClE,mBAAO,iBAAiB,GAAG,MAAM;AAAA,UACnC,CAAC,EAAE,CAAC;AACJ,iBAAO,UAAU,iBAAiB,SAAS,QAAQ,IAAI;AAAA,QACzD;AACA,iBAAS,eAAe,MAAM;AAC5B,cAAI,QAAQ,gBAAgB,gCAAgC,OAAO,2BAA2B,IAAI;AAClG,cAAI,CAAC,sBAAsB,KAAK,KAAK,CAAC,MAAM,QAAQ,eAAe,GAAG;AACpE,mBAAO;AAAA,UACT;AACA,cAAI,WAAW,CAAC,MAAM,KAAK,eAAe;AAC1C,iBAAO,CAAC,MAAM,QAAQ,IAAI,OAAO,QAAQ,IAAI;AAAA,QAC/C;AACA,YAAI,6BAA6B;AACjC,iBAAS,sBAAsB,aAAa;AAC1C,cAAI,WAAW,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AACpF,cAAI,aAAa,YAAY;AAC7B,qBAAW,eAAe,aAAa,QAAQ;AAC/C,cAAI,mBAAmB,aAAa,QAAQ,GAAG;AAC7C,mBAAO;AAAA,UACT;AACA,cAAI,mBAAmB,CAAE,6BAA6B,wBAAwB,iCAAiC,4BAA4B,sBAAsB,eAAe,kBAAmB;AACnM,cAAI,UAAU,iBAAiB,OAAO,SAAS,UAAU,MAAM;AAC7D,gBAAI,SAAS,cAAc,aAAa;AACtC,yBAAW,iBAAiB,QAAQ;AAAA,YACtC;AACA,gBAAI,aAAa,IAAI;AACnB,qBAAO;AAAA,YACT;AACA,mBAAO,KAAK,aAAa,QAAQ;AAAA,UACnC,GAAG,EAAE;AACL,cAAI,SAAS,OAAO;AAClB,gBAAI,IAAI,WAAW,iBAAiB,YAAY,QAAQ;AAAA,UAC1D;AACA,iBAAO;AAAA,QACT;AACA,iBAAS,cAAc,aAAa;AAClC,cAAI,YAAY,MAAM,aAAa,GAAG;AACpC,mBAAO;AAAA,UACT;AACA,iBAAO,YAAY,MAAM;AAAA,QAC3B;AACA,iBAAS,mBAAmB,QAAQ,UAAU;AAC5C,cAAI,aAAa,OAAO;AACxB,cAAI,CAAC,YAAY;AACf,mBAAO;AAAA,UACT;AACA,cAAI,WAAW,aAAa,KAAK,SAAS,eAAe;AACvD,mBAAO;AAAA,UACT;AACA,iBAAO,CAAC,mBAAmB,YAAY,IAAI;AAAA,QAC7C;AACA,iBAAS,eAAe,aAAa,UAAU;AAC7C,cAAI,aAAa,YAAY;AAC7B,cAAI,CAAC,SAAS,WAAW;AACvB,uBAAW,SAAS;AAAA,cAClB,WAAW;AAAA,YACb,GAAG,QAAQ;AAAA,UACb;AACA,cAAI,CAAC,YAAY;AACf,mBAAO;AAAA,UACT;AACA,cAAI,WAAW,aAAa,KAAK,SAAS,uBAAuB,SAAS,kBAAkB,QAAQ;AAClG,uBAAW,SAAS;AAAA,cAClB,eAAe,CAAC,mBAAmB,YAAY,IAAI;AAAA,YACrD,GAAG,QAAQ;AAAA,UACb;AACA,iBAAO;AAAA,QACT;AACA,8BAAsB,mBAAmB,SAAS,iBAAiB,aAAa,UAAU;AACxF,mBAAS,YAAY,SAAS,aAAa,CAAC;AAC5C,cAAI,SAAS,UAAU,SAAS,WAAW,GAAG;AAC5C,mBAAO;AAAA,UACT;AACA,mBAAS,UAAU,KAAK,WAAW;AACnC,iBAAO;AAAA,QACT;AACA,YAAI,kCAAkC;AACtC,iBAAS,eAAe,SAAS,UAAU;AACzC,cAAI,cAAc,2BAA2B,OAAO;AACpD,iBAAO,gCAAgC,aAAa,QAAQ;AAAA,QAC9D;AACA,YAAI,0BAA0B;AAC9B,iBAAS,mBAAmB,OAAO;AACjC,cAAI,WAAW,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AACpF,cAAI,EAAE,iBAAiB,gCAAgC;AACrD,gBAAI,MAAM,aAAa,GAAG;AACxB,qBAAO;AAAA,YACT;AACA,oBAAQ,2BAA2B,KAAK;AAAA,UAC1C;AACA,cAAI,MAAM,MAAM,aAAa,KAAK,SAAS,uBAAuB,SAAS,oBAAoB,CAAC,MAAM,KAAK,iBAAiB,GAAG;AAC7H,mBAAO;AAAA,UACT;AACA,cAAI,OAAO,eAAe,OAAO,iBAAiB,EAAE,OAAO,SAAS,KAAK;AACvE,mBAAO;AAAA,UACT,CAAC;AACD,iBAAO,KAAK,OAAO,SAAS,gBAAgB,KAAK;AAC/C,gBAAI,oBAAoB,wBAAwB,KAAK,SAAS;AAAA,cAC5D,qBAAqB;AAAA,cACrB,WAAW,SAAS,aAAa;AAAA,YACnC,GAAG,QAAQ,CAAC;AACZ,gBAAI,CAAC,gBAAgB;AACnB,qBAAO;AAAA,YACT,OAAO;AACL,qBAAO,GAAG,OAAO,gBAAgB,GAAG,EAAE,OAAO,iBAAiB;AAAA,YAChE;AAAA,UACF,GAAG,EAAE;AAAA,QACP;AACA,YAAI,8BAA8B;AAClC,YAAI,eAAe,CAAC;AACpB,QAAApQ,UAAS,cAAc;AAAA,UACrB,gBAAgB,SAASqQ,kBAAiB;AACxC,mBAAO;AAAA,UACT;AAAA,UACA,uBAAuB,SAASC,yBAAwB;AACtD,mBAAO;AAAA,UACT;AAAA,UACA,cAAc,SAAS,eAAe;AACpC,mBAAO;AAAA,UACT;AAAA,UACA,kBAAkB,SAASC,oBAAmB;AAC5C,mBAAO;AAAA,UACT;AAAA,UACA,yBAAyB,SAAS,0BAA0B;AAC1D,mBAAO;AAAA,UACT;AAAA,UACA,YAAY,SAASC,cAAa;AAChC,mBAAO;AAAA,UACT;AAAA,UACA,sBAAsB,SAASC,wBAAuB;AACpD,mBAAO;AAAA,UACT;AAAA,UACA,gBAAgB,SAASC,kBAAiB;AACxC,mBAAO;AAAA,UACT;AAAA,UACA,qBAAqB,SAASC,uBAAsB;AAClD,mBAAO;AAAA,UACT;AAAA,UACA,OAAO,SAASjB,SAAQ;AACtB,mBAAO;AAAA,UACT;AAAA,UACA,WAAW,SAASkB,aAAY;AAC9B,mBAAO;AAAA,UACT;AAAA,UACA,cAAc,SAASjB,gBAAe;AACpC,mBAAO;AAAA,UACT;AAAA,UACA,mBAAmB,SAASkB,qBAAoB;AAC9C,mBAAO;AAAA,UACT;AAAA,UACA,uBAAuB,SAASC,yBAAwB;AACtD,mBAAO;AAAA,UACT;AAAA,UACA,mBAAmB,SAASC,qBAAoB;AAC9C,mBAAO;AAAA,UACT;AAAA,UACA,eAAe,SAASC,iBAAgB;AACtC,mBAAO;AAAA,UACT;AAAA,UACA,UAAU,SAASC,YAAW;AAC5B,mBAAO;AAAA,UACT;AAAA,UACA,aAAa,SAASC,eAAc;AAClC,mBAAO;AAAA,UACT;AAAA,UACA,WAAW,SAASC,aAAY;AAC9B,mBAAO;AAAA,UACT;AAAA,UACA,aAAa,SAASC,eAAc;AAClC,mBAAO;AAAA,UACT;AAAA,UACA,SAAS,SAASC,WAAU;AAC1B,mBAAO;AAAA,UACT;AAAA,UACA,kBAAkB,SAASC,oBAAmB;AAC5C,mBAAO;AAAA,UACT;AAAA,UACA,gBAAgB,SAASC,kBAAiB;AACxC,mBAAO;AAAA,UACT;AAAA,QACF,CAAC;AACD,iBAAS,yBAAyB;AAChC,iBAAO;AAAA,QACT;AACA,iBAAS,uBAAuB;AAC9B,iBAAO;AAAA,QACT;AACA,iBAAS,mCAAmC;AAC1C,iBAAO;AAAA,QACT;AACA,YAAI,cAAc,WAAW,oBAAoB,CAAC;AAClD,iBAAS,WAAW7Q,MAAK,SAAS;AAChC,cAAI,QAAQ,QAAQ,OAAO,SAAS,QAAQ,QAAQ,eAAe,QAAQ;AAC3E,cAAI,OAAO;AACT,mBAAO,YAAY,SAAS,EAAE,EAAE,KAAKA,IAAG;AAAA,UAC1C;AACA,cAAI,QAAQ;AACV,mBAAO,uBAAuB,EAAE,KAAKA,IAAG,KAAK,iCAAiC,EAAE,KAAKA,IAAG;AAAA,UAC1F;AACA,cAAI,cAAc;AAChB,mBAAO,qBAAqB,EAAE,KAAKA,IAAG;AAAA,UACxC;AACA,iBAAO;AAAA,QACT;AACA,YAAI,sBAAsB;AAC1B,YAAI,eAAe,WAAW,oBAAoB,CAAC;AACnD,iBAAS,cAAcA,MAAK,SAAS;AACnC,cAAI,QAAQ,QAAQ,OAAO,SAAS,QAAQ,QAAQ,eAAe,QAAQ;AAC3E,cAAI,OAAO;AACT,YAAAA,OAAMA,KAAI,QAAQ,aAAa,SAAS,EAAE,GAAG,EAAE;AAAA,UACjD;AACA,cAAI,QAAQ;AACV,YAAAA,OAAMA,KAAI,QAAQ,uBAAuB,GAAG,EAAE;AAC9C,YAAAA,OAAMA,KAAI,QAAQ,iCAAiC,GAAG,EAAE;AAAA,UAC1D;AACA,cAAI,cAAc;AAChB,YAAAA,OAAMA,KAAI,QAAQ,qBAAqB,GAAG,EAAE;AAAA,UAC9C;AACA,iBAAOA;AAAA,QACT;AACA,YAAI,yBAAyB;AAC7B,iBAAS,qBAAqBA,MAAK;AACjC,cAAI,CAACA,KAAI,QAAQ;AACf,mBAAO;AAAA,UACT;AACA,cAAI,sBAAsB,CAAE,KAAK,GAAI;AACrC,cAAI,oBAAoB,SAASA,IAAG,GAAG;AACrC,mBAAO;AAAA,UACT;AACA,cAAI,eAAe,uBAAuBA,MAAK;AAAA,YAC7C,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,cAAc;AAAA,UAChB,CAAC;AACD,cAAI,CAAC,iBAAiB,YAAY,GAAG;AACnC,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,iCAAiC;AACrC,iBAAS,eAAe,WAAW;AACjC,cAAI,sBAAsB,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAC9F,cAAI,qBAAqB,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAC7F,cAAI,YAAY,UAAU,WAAW,UAAU,KAAK;AACpD,cAAI,CAAC,iBAAiB,SAAS,KAAK,oBAAoB,WAAW;AAAA,YACjE,OAAO;AAAA,YACP,QAAQ;AAAA,UACV,CAAC,GAAG;AACF,mBAAO;AAAA,UACT;AACA,cAAI,CAAC,cAAc,IAAI,eAAe,GAAG;AACvC,0BAAc,IAAI,iBAAiB/B,UAAS,cAAc,QAAQ,EAAE,WAAW,IAAI,CAAC;AAAA,UACtF;AACA,cAAI,gBAAgB,cAAc,IAAI,eAAe;AACrD,cAAI,SAAS,cAAc;AAC3B,cAAI,CAAC,cAAc,IAAI,OAAO,GAAG;AAC/B,0BAAc,IAAI,SAAS,CAAC,CAAC;AAAA,UAC/B;AACA,cAAI,QAAQ,cAAc,IAAI,OAAO;AACrC,cAAIgO,SAAQlO,QAAO,iBAAiB,UAAU,OAAO,UAAU;AAC/D,cAAI,aAAakO,OAAM,iBAAiB,aAAa;AACrD,cAAI,CAAC,MAAM,UAAU,GAAG;AACtB,kBAAM,UAAU,IAAI;AAAA,cAClB,YAAY;AAAA,cACZ,cAAc;AAAA,YAChB;AAAA,UACF;AACA,cAAI,OAAO,MAAM,UAAU;AAC3B,cAAI,KAAK,cAAc,oBAAoB;AACzC,gBAAI,KAAK,eAAe,KAAK,eAAe,GAAG;AAC7C,qBAAO;AAAA,YACT,WAAW,KAAK,iBAAiB,GAAG;AAClC,qBAAO;AAAA,YACT;AAAA,UACF;AACA,eAAK;AACL,cAAI,WAAW;AACf,cAAI,YAAY,GAAG,OAAO,UAAU,KAAK,EAAE,OAAO,UAAU;AAC5D,wBAAc,OAAO;AACrB,cAAI,YAAY,UAAU,OAAO,CAAC;AAClC,cAAI,QAAQ,cAAc,YAAY,SAAS,EAAE;AACjD,cAAI,QAAQ,IAAI;AACd,gBAAI,OAAO,KAAK;AAChB,qBAAS;AACT,wBAAY;AACZ,wBAAY,GAAG,OAAO,UAAU,KAAK,EAAE,OAAO,UAAU;AAAA,UAC1D;AACA,iBAAO,QAAQ;AACf,iBAAO,SAAS;AAChB,wBAAc,OAAO;AACrB,wBAAc,YAAY;AAC1B,wBAAc,eAAe;AAC7B,wBAAc,SAAS,WAAW,GAAG,CAAC;AACtC,cAAI,cAAc,IAAI,YAAY,cAAc,aAAa,GAAG,GAAG,OAAO,QAAQ,EAAE,KAAK,MAAM;AAC/F,cAAI,CAAC,YAAY,KAAK,SAAS,OAAO;AACpC,mBAAO;AAAA,UACT,CAAC,GAAG;AACF,iBAAK;AACL,mBAAO;AAAA,UACT;AACA,wBAAc,UAAU,GAAG,GAAG,OAAO,QAAQ;AAC7C,wBAAc,SAAS,WAAW,GAAG,CAAC;AACtC,cAAI,cAAc,IAAI,YAAY,cAAc,aAAa,GAAG,GAAG,OAAO,QAAQ,EAAE,KAAK,MAAM;AAC/F,cAAI,cAAc,YAAY,OAAO,SAAS6E,OAAM,OAAOhR,IAAG;AAC5D,gBAAI,UAAU,KAAK,YAAYA,EAAC,MAAM,GAAG;AACvC,qBAAOgR;AAAA,YACT;AACA,gBAAI,UAAU,KAAK,YAAYhR,EAAC,MAAM,GAAG;AACvC,qBAAOgR;AAAA,YACT;AACA,mBAAO,EAAEA;AAAA,UACX,GAAG,CAAC;AACJ,cAAI,gBAAgB,UAAU,MAAM,EAAE,EAAE,OAAO,SAAS,QAAQ,QAAQ;AACtE,mBAAO,SAAS,cAAc,YAAY,MAAM,EAAE;AAAA,UACpD,GAAG,CAAC;AACJ,cAAI,cAAc,cAAc,YAAY,SAAS,EAAE;AACvD,cAAI,kBAAkB,cAAc,YAAY;AAChD,cAAI,iBAAiB,IAAI,cAAc;AACvC,cAAI,mBAAmB,uBAAuB,kBAAkB,qBAAqB;AACnF,iBAAK;AACL,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,2BAA2B;AAC/B,YAAI,gBAAgB;AAAA,UAClB,YAAY,CAAE,MAAM,KAAM;AAAA,UAC1B,iBAAiB,CAAE,QAAQ,oBAAoB,cAAc,mBAAmB,eAAe,oBAAoB,YAAY,YAAY,gBAAgB,oBAAoB,sBAAsB,gBAAgB,kBAAkB,iBAAiB,iBAAiB,iBAAiB,kBAAkB,kBAAkB,kBAAkB,kBAAkB,WAAW,gBAAgB,eAAe,WAAW,iBAAiB,sBAAsB,kBAAkB,aAAa,UAAU,gBAAgB,eAAe,UAAU,WAAW,wBAAwB,sBAAsB,YAAY,QAAQ,YAAY,cAAc,aAAa,OAAO,OAAO,SAAS,eAAgB;AAAA,UAC3qB,YAAY,CAAE,QAAQ,QAAQ,UAAU,OAAO,OAAQ;AAAA,UACvD,gBAAgB,CAAE,OAAO,oBAAoB,gBAAgB,iBAAiB,aAAa,oBAAoB,oBAAoB,iBAAiB,SAAS,MAAO;AAAA,UACpK,WAAW,CAAE,WAAW,UAAW;AAAA,QACrC;AACA,iBAAS,oBAAoB,mBAAmB;AAC9C,cAAI,SAAS,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC,GAAG,oBAAoB,OAAO,YAAY,aAAa,sBAAsB,SAAS,QAAQ,mBAAmB,oBAAoB,OAAO,YAAY,aAAa,sBAAsB,SAAS,CAAC,IAAI,mBAAmB,mBAAmB,OAAO,WAAW,YAAY,qBAAqB,SAAS,CAAC,IAAI,kBAAkB,oBAAoB,OAAO,YAAY,aAAa,sBAAsB,SAAS,CAAC,IAAI,mBAAmB,wBAAwB,OAAO,iBAAiB,kBAAkB,0BAA0B,SAAS,CAAC,IAAI,uBAAuB,wBAAwB,OAAO,gBAAgB,iBAAiB,0BAA0B,SAAS,CAAC,IAAI;AACxuB,8BAAoB,kBAAkB,YAAY,EAAE,KAAK;AACzD,uBAAa,WAAW,OAAO,cAAc,UAAU;AACvD,cAAI,WAAW,SAAS,iBAAiB,KAAK,sBAAsB,IAAI;AACtE,mBAAO;AAAA,UACT;AACA,uBAAa,WAAW,OAAO,cAAc,UAAU;AACvD,sBAAY,UAAU,OAAO,cAAc,SAAS;AACpD,4BAAkB,gBAAgB,OAAO,cAAc,eAAe;AACtE,2BAAiB,eAAe,OAAO,cAAc,cAAc;AACnE,cAAI,oBAAoB,kBAAkB,MAAM,MAAM;AACtD,cAAI,CAAC,YAAY;AACf,gBAAI,kBAAkB,CAAC,EAAE,SAAS,KAAK,kBAAkB,CAAC,EAAE,OAAO,GAAG,CAAC,MAAM,YAAY;AACvF,gCAAkB,MAAM;AAAA,YAC1B;AACA,gBAAI,UAAU,SAAS,kBAAkB,CAAC,CAAC,GAAG;AAC5C,gCAAkB,MAAM;AAAA,YAC1B;AACA,gBAAI,WAAW,SAAS,kBAAkB,CAAC,CAAC,GAAG;AAC7C,gCAAkB,MAAM;AACxB,gCAAkB,CAAC;AAAA,YACrB;AACA,gBAAI,kBAAkB,WAAW,GAAG;AAClC,qBAAO;AAAA,YACT;AAAA,UACF;AACA,cAAI,cAAc,kBAAkB,kBAAkB,SAAS,CAAC;AAChE,iBAAO,gBAAgB,SAAS,WAAW,KAAK,eAAe,SAAS,WAAW;AAAA,QACrF;AACA,YAAI,gCAAgC;AACpC,iBAAS,QAAQ,SAAS,cAAc,aAAa;AACnD,oBAAU,2BAA2B,OAAO;AAC5C,iBAAO,wBAAwB,SAAS,cAAc,WAAW;AAAA,QACnE;AACA,YAAI,kBAAkB;AACtB,iBAAS,cAAc,aAAa;AAClC,cAAItE,MAAK,WAAW;AACpB,sBAAY,sBAAsB,WAAW;AAC7C,cAAI,WAAW;AACb,mBAAO;AAAA,UACT;AACA,cAAI,YAAY,KAAK,IAAI,GAAG;AAC1B,gBAAI,CAAC,YAAY,YAAY;AAC3B,oBAAM,IAAI,UAAU,2DAA2D;AAAA,YACjF;AACA,gBAAI3K,MAAK,wBAAwB,YAAY,KAAK,IAAI,CAAC;AACvD,kBAAM,uBAAuB,YAAY,UAAU;AACnD,YAAA2K,OAAM,IAAI,cAAc,gBAAgB3K,MAAK,IAAI;AACjD,wBAAY2K,QAAO,gBAAgBA,MAAK,IAAI;AAC5C,gBAAI,WAAW;AACb,qBAAO;AAAA,YACT;AAAA,UACF;AACA,UAAAA,OAAM,gBAAgB,aAAa,OAAO;AAC1C,sBAAYA,QAAO,wBAAwBA,MAAK,IAAI;AACpD,cAAI,WAAW;AACb,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,yBAAyB;AAC7B,iBAAS,MAAM,MAAM;AACnB,iBAAO,2BAA2B,IAAI;AACtC,iBAAO,uBAAuB,IAAI;AAAA,QACpC;AACA,YAAI,gBAAgB;AACpB,YAAI,oBAAoB,CAAE;AAAA,UACxB,SAAS,CAAE;AAAA,YACT,UAAU;AAAA,UACZ,GAAG;AAAA,YACD,UAAU;AAAA,YACV,YAAY;AAAA,cACV,MAAM,CAAE,QAAQ,YAAY,UAAU,OAAO,SAAS,KAAM;AAAA,YAC9D;AAAA,UACF,CAAE;AAAA,UACF,eAAe;AAAA,QACjB,GAAG;AAAA,UACD,SAAS;AAAA,YACP,UAAU;AAAA,YACV,YAAY;AAAA,cACV,MAAM,CAAE,UAAU,UAAU,OAAQ;AAAA,YACtC;AAAA,UACF;AAAA,UACA,eAAe,CAAE,aAAa,aAAa,mBAAoB;AAAA,QACjE,GAAG;AAAA,UACD,SAAS;AAAA,YACP,UAAU;AAAA,YACV,YAAY;AAAA,cACV,MAAM;AAAA,YACR;AAAA,UACF;AAAA,UACA,eAAe,CAAE,WAAW,aAAa,aAAa,aAAa,mBAAoB;AAAA,QACzF,GAAG;AAAA,UACD,SAAS;AAAA,UACT,eAAe;AAAA,QACjB,GAAG;AAAA,UACD,SAAS;AAAA,UACT,eAAe;AAAA,QACjB,GAAG;AAAA,UACD,SAAS;AAAA,UACT,eAAe;AAAA,QACjB,GAAG;AAAA,UACD,SAAS,CAAE;AAAA,YACT,UAAU;AAAA,UACZ,GAAG;AAAA,YACD,UAAU;AAAA,YACV,YAAY;AAAA,cACV,MAAM;AAAA,YACR;AAAA,UACF,CAAE;AAAA,UACF,eAAe;AAAA,QACjB,GAAG;AAAA,UACD,SAAS;AAAA,UACT,eAAe;AAAA,QACjB,GAAG;AAAA,UACD,SAAS;AAAA,UACT,eAAe,CAAE,cAAc,WAAY;AAAA,QAC7C,GAAG;AAAA,UACD,SAAS;AAAA,UACT,eAAe;AAAA,QACjB,GAAG;AAAA,UACD,SAAS;AAAA,UACT,eAAe,CAAE,oBAAoB,kBAAmB;AAAA,QAC1D,GAAG;AAAA,UACD,SAAS,CAAE,MAAM,IAAK;AAAA,UACtB,eAAe,CAAE,aAAa,aAAc;AAAA,QAC9C,CAAE;AACF,YAAI,8BAA8B;AAClC,iBAAS,iBAAiB,OAAO;AAC/B,cAAI,gBAAgB,mBAAmB,MAAM,UAAU;AACvD,cAAI,QAAQ,CAAC;AACb,gBAAM,SAAS,QAAQ,SAAS,OAAO;AACrC,gBAAI,MAAM,WAAW,aAAa,GAAG;AACnC,kBAAI,eAAe;AACjB,sBAAM,KAAK,KAAK;AAAA,cAClB;AAAA,YACF,OAAO;AACL,sBAAQ,MAAM,OAAO,iBAAiB,KAAK,CAAC;AAAA,YAC9C;AAAA,UACF,CAAC;AACD,iBAAO;AAAA,QACT;AACA,YAAI,6BAA6B;AACjC,YAAI,cAAc;AAClB,iBAAS,YAAY,MAAM,QAAQ,UAAU;AAC3C,cAAI,KAAK,cAAc;AACrB,gBAAI,KAAK,SAAS,YAAY,MAAM,WAAW,KAAK,aAAa,KAAK,GAAG;AACvE,kBAAI3K,MAAK,KAAK,aAAa,KAAK;AAChC,qBAAOA,GAAE,IAAI,OAAOA,GAAE,KAAK,CAAC;AAC5B,qBAAOA,GAAE,EAAE,KAAK,IAAI;AAAA,YACtB;AACA,qBAAS,OAAO,GAAG,OAAO,SAAS,QAAQ,EAAE,MAAM;AACjD,kBAAI,OAAO,SAAS,IAAI;AACxB,kBAAI,YAAY,iBAAiB,KAAK,aAAa,IAAI,KAAK,EAAE;AAC9D,kBAAI,CAAC,WAAW;AACd;AAAA,cACF;AACA,kBAAI,SAAS,mBAAmB,SAAS;AACzC,uBAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,EAAE,GAAG;AACtC,uBAAO,OAAO,CAAC,CAAC,IAAI,OAAO,OAAO,CAAC,CAAC,KAAK,CAAC;AAC1C,uBAAO,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI;AAAA,cAC7B;AAAA,YACF;AAAA,UACF;AACA,mBAAS,OAAO,GAAG,OAAO,KAAK,SAAS,QAAQ,QAAQ;AACtD,wBAAY,KAAK,SAAS,IAAI,GAAG,QAAQ,QAAQ;AAAA,UACnD;AAAA,QACF;AACA,iBAAS,kBAAkB,MAAM;AAC/B,iBAAO,KAAK,cAAc;AAC1B,cAAIiK,QAAO,uBAAuB,IAAI;AACtC,UAAAA,QAAOA,MAAK,mBAAmBA;AAC/B,cAAI,eAAe,cAAc,IAAI,cAAc;AACnD,cAAI,CAAC,cAAc;AACjB,2BAAe,oBAAI,QAAQ;AAC3B,0BAAc,IAAI,gBAAgB,YAAY;AAAA,UAChD;AACA,cAAI,SAAS,aAAa,IAAIA,KAAI;AAClC,cAAI,CAAC,QAAQ;AACX,qBAAS,CAAC;AACV,yBAAa,IAAIA,OAAM,MAAM;AAC7B,gBAAI,WAAW,OAAO,KAAK,kBAAkB,SAAS,EAAE,OAAO,SAAS,MAAM;AAC5E,kBAAItK,QAAO,kBAAkB,UAAU,IAAI,EAAE;AAC7C,qBAAO,YAAY,KAAKA,KAAI;AAAA,YAC9B,CAAC;AACD,wBAAYsK,OAAM,QAAQ,QAAQ;AAAA,UACpC;AACA,iBAAO,OAAO,KAAK,EAAE,KAAK,CAAC;AAAA,QAC7B;AACA,YAAI,8BAA8B;AAClC,iBAAS,YAAY,MAAM;AACzB,cAAI,UAAU,kBAAkB,UAAU,IAAI;AAC9C,cAAI,CAAC,SAAS;AACZ,mBAAO;AAAA,UACT;AACA,iBAAO,QAAQ;AAAA,QACjB;AACA,YAAI,wBAAwB;AAC5B,iBAAS,2BAA2B,MAAM,MAAM;AAC9C,cAAI,QAAQ,gBAAgB,gCAAgC,OAAO,2BAA2B,IAAI;AAClG,cAAI,gBAAgB,sBAAsB,KAAK;AAC/C,cAAI,SAAS,eAAe;AAC1B,mBAAO;AAAA,UACT;AACA,cAAI,OAAO,yBAAyB,KAAK;AACzC,cAAI,MAAM,QAAQ,KAAK,YAAY,GAAG;AACpC,mBAAO,KAAK,aAAa,SAAS,IAAI;AAAA,UACxC;AACA,iBAAO,CAAC,CAAC,KAAK;AAAA,QAChB;AACA,YAAI,0CAA0C;AAC9C,YAAI,aAAa,CAAE,gBAAgB,mBAAmB,iBAAiB,aAAa,eAAe,gBAAgB,aAAc;AACjI,iBAAS,gBAAgB,MAAM;AAC7B,cAAI,QAAQ,CAAC;AACb,cAAI,CAAC,MAAM;AACT,mBAAO;AAAA,UACT;AACA,cAAI,KAAK,aAAa,MAAM,GAAG;AAC7B,gBAAI,YAAY,mBAAmB,KAAK,aAAa,MAAM,EAAE,YAAY,CAAC;AAC1E,oBAAQ,MAAM,OAAO,SAAS;AAAA,UAChC;AACA,cAAI,KAAK,eAAe,gCAAgC,MAAM,GAAG;AAC/D,gBAAI,YAAY,mBAAmB,KAAK,eAAe,gCAAgC,MAAM,EAAE,YAAY,CAAC,EAAE,IAAI,SAAS,MAAM;AAC/H,qBAAO,OAAO,OAAO,IAAI;AAAA,YAC3B,CAAC;AACD,oBAAQ,MAAM,OAAO,SAAS;AAAA,UAChC;AACA,kBAAQ,MAAM,OAAO,SAAS,MAAM;AAClC,mBAAO,sBAAsB,IAAI;AAAA,UACnC,CAAC;AACD,iBAAO;AAAA,QACT;AACA,iBAAS,yBAAyB,MAAM;AACtC,cAAI,gBAAgB,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AACxF,cAAIiF,WAAU,KAAK,SAAS,YAAY;AACxC,cAAI,CAAC,wBAAwB,IAAI,GAAG;AAClC,mBAAO,CAAC;AAAA,UACV;AACA,cAAI,eAAe,gBAAgB,IAAI;AACvC,cAAI,gBAAgB,sBAAsB,IAAI;AAC9C,cAAI,iBAAiB,aAAa,OAAO,SAAS,MAAM;AACtD,gBAAI,iBAAiB,SAAS,eAAe;AAC3C,qBAAO;AAAA,YACT;AACA,gBAAI,iBAAiB,WAAW,SAAS,IAAI,GAAG;AAC9C,kBAAI,WAAW,sBAAsB,IAAI;AACzC,kBAAI,kBAAkB,UAAU;AAC9B,uBAAO;AAAA,cACT;AAAA,YACF;AACA,gBAAI,CAAC,iBAAiB,EAAE,SAAS,SAASA,aAAY,QAAQ,wBAAwB,MAAM,yBAAyB,IAAI;AACvH,qBAAO;AAAA,YACT;AACA,mBAAO,CAAC,wCAAwC,MAAM,IAAI;AAAA,UAC5D,CAAC;AACD,iBAAO;AAAA,QACT;AACA,YAAI,sCAAsC;AAC1C,iBAAS,mBAAmBvP,OAAM;AAChC,iBAAO,OAAO,KAAK,kBAAkB,SAAS,EAAE,OAAO,SAAS,UAAU;AACxE,mBAAO,kBAAkB,UAAU,QAAQ,EAAE,SAASA;AAAA,UACxD,CAAC;AAAA,QACH;AACA,YAAI,iCAAiC;AACrC,iBAAS,eAAe,UAAU;AAChC,iBAAO,+BAA+B,QAAQ;AAAA,QAChD;AACA,YAAI,4BAA4B;AAChC,iBAAS,wCAAwC;AAC/C,cAAI,cAAc,IAAI,0BAA0B,GAAG;AACjD,mBAAO,cAAc,IAAI,0BAA0B;AAAA,UACrD;AACA,cAAI,eAAe,OAAO,KAAK,kBAAkB,SAAS,EAAE,OAAO,SAAS,UAAU;AACpF,mBAAO,kBAAkB,UAAU,QAAQ,EAAE;AAAA,UAC/C,CAAC;AACD,wBAAc,IAAI,4BAA4B,YAAY;AAC1D,iBAAO;AAAA,QACT;AACA,YAAI,sDAAsD;AAC1D,iBAAS,+BAA+B;AACtC,iBAAO,oDAAoD;AAAA,QAC7D;AACA,YAAI,4CAA4C;AAChD,YAAI,SAAS,SAASwP,QAAO,OAAO;AAClC,iBAAO,UAAU;AAAA,QACnB;AACA,YAAI,YAAY,SAASC,WAAU,OAAO;AACxC,iBAAO,UAAU;AAAA,QACnB;AACA,YAAI,cAAc,CAAC;AACnB,oBAAY,aAAa;AAAA,UACvB,yBAAyB;AAAA,YACvB,MAAM;AAAA,YACN,YAAY;AAAA,YACZ,aAAa;AAAA,UACf;AAAA,UACA,eAAe;AAAA,YACb,MAAM;AAAA,YACN,QAAQ,CAAE,QAAQ,OAAQ;AAAA,YAC1B,aAAa;AAAA,UACf;AAAA,UACA,qBAAqB;AAAA,YACnB,MAAM;AAAA,YACN,QAAQ,CAAE,UAAU,QAAQ,QAAQ,MAAO;AAAA,YAC3C,aAAa;AAAA,UACf;AAAA,UACA,aAAa;AAAA,YACX,MAAM;AAAA,YACN,QAAQ,CAAE,QAAQ,OAAQ;AAAA,YAC1B,aAAa;AAAA,UACf;AAAA,UACA,gBAAgB;AAAA,YACd,MAAM;AAAA,YACN,QAAQ,CAAE,QAAQ,SAAS,SAAS,WAAY;AAAA,YAChD,aAAa;AAAA,UACf;AAAA,UACA,iBAAiB;AAAA,YACf,MAAM;AAAA,YACN,aAAa;AAAA,UACf;AAAA,UACA,iBAAiB;AAAA,YACf,MAAM;AAAA,YACN,aAAa;AAAA,UACf;AAAA,UACA,gBAAgB;AAAA,YACd,MAAM;AAAA,YACN,aAAa;AAAA,UACf;AAAA,UACA,iBAAiB;AAAA,YACf,MAAM;AAAA,YACN,YAAY;AAAA,YACZ,aAAa;AAAA,UACf;AAAA,UACA,gBAAgB;AAAA,YACd,MAAM;AAAA,YACN,YAAY;AAAA,YACZ,QAAQ,CAAE,QAAQ,QAAQ,YAAY,QAAQ,QAAQ,QAAQ,OAAQ;AAAA,YACtE,aAAa;AAAA,UACf;AAAA,UACA,oBAAoB;AAAA,YAClB,MAAM;AAAA,YACN,YAAY;AAAA,YACZ,aAAa;AAAA,UACf;AAAA,UACA,oBAAoB;AAAA,YAClB,aAAa;AAAA,YACb,gBAAgB;AAAA,UAClB;AAAA,UACA,gBAAgB;AAAA,YACd,MAAM;AAAA,YACN,YAAY;AAAA,YACZ,aAAa;AAAA,UACf;AAAA,UACA,iBAAiB;AAAA,YACf,MAAM;AAAA,YACN,QAAQ,CAAE,QAAQ,OAAQ;AAAA,YAC1B,aAAa;AAAA,UACf;AAAA,UACA,mBAAmB;AAAA,YACjB,MAAM;AAAA,YACN,QAAQ,CAAE,QAAQ,QAAQ,aAAa,WAAW,SAAS,MAAO;AAAA,YAClE,aAAa;AAAA,UACf;AAAA,UACA,qBAAqB;AAAA,YACnB,MAAM;AAAA,YACN,YAAY;AAAA,YACZ,aAAa;AAAA,UACf;AAAA,UACA,iBAAiB;AAAA,YACf,MAAM;AAAA,YACN,QAAQ,CAAE,QAAQ,SAAS,WAAY;AAAA,YACvC,aAAa;AAAA,UACf;AAAA,UACA,eAAe;AAAA,YACb,MAAM;AAAA,YACN,YAAY;AAAA,YACZ,aAAa;AAAA,UACf;AAAA,UACA,gBAAgB;AAAA,YACd,MAAM;AAAA,YACN,QAAQ,CAAE,QAAQ,SAAS,WAAY;AAAA,YACvC,aAAa;AAAA,UACf;AAAA,UACA,iBAAiB;AAAA,YACf,MAAM;AAAA,YACN,YAAY;AAAA,YACZ,QAAQ,CAAE,QAAQ,SAAS,QAAQ,WAAW,QAAQ,QAAQ,QAAS;AAAA,YACvE,aAAa;AAAA,UACf;AAAA,UACA,eAAe;AAAA,YACb,MAAM;AAAA,YACN,QAAQ,CAAE,QAAQ,OAAQ;AAAA,YAC1B,aAAa;AAAA,UACf;AAAA,UACA,gBAAgB;AAAA,YACd,MAAM;AAAA,YACN,YAAY;AAAA,YACZ,QAAQ,CAAE,QAAQ,SAAS,YAAY,SAAU;AAAA,YACjD,aAAa;AAAA,UACf;AAAA,UACA,qBAAqB;AAAA,YACnB,MAAM;AAAA,YACN,YAAY;AAAA,YACZ,aAAa;AAAA,UACf;AAAA,UACA,cAAc;AAAA,YACZ,MAAM;AAAA,YACN,YAAY;AAAA,YACZ,aAAa;AAAA,UACf;AAAA,UACA,mBAAmB;AAAA,YACjB,MAAM;AAAA,YACN,YAAY;AAAA,YACZ,aAAa;AAAA,UACf;AAAA,UACA,cAAc;AAAA,YACZ,MAAM;AAAA,YACN,aAAa;AAAA,UACf;AAAA,UACA,aAAa;AAAA,YACX,MAAM;AAAA,YACN,QAAQ,CAAE,OAAO,UAAU,WAAY;AAAA,YACvC,aAAa;AAAA,UACf;AAAA,UACA,cAAc;AAAA,YACZ,MAAM;AAAA,YACN,QAAQ,CAAE,QAAQ,OAAQ;AAAA,YAC1B,aAAa;AAAA,UACf;AAAA,UACA,kBAAkB;AAAA,YAChB,MAAM;AAAA,YACN,QAAQ,CAAE,QAAQ,OAAQ;AAAA,YAC1B,aAAa;AAAA,UACf;AAAA,UACA,wBAAwB;AAAA,YACtB,MAAM;AAAA,YACN,QAAQ,CAAE,QAAQ,OAAQ;AAAA,YAC1B,aAAa;AAAA,UACf;AAAA,UACA,oBAAoB;AAAA,YAClB,MAAM;AAAA,YACN,QAAQ,CAAE,cAAc,UAAW;AAAA,YACnC,aAAa;AAAA,UACf;AAAA,UACA,aAAa;AAAA,YACX,MAAM;AAAA,YACN,YAAY;AAAA,YACZ,aAAa;AAAA,UACf;AAAA,UACA,oBAAoB;AAAA,YAClB,MAAM;AAAA,YACN,YAAY;AAAA,YACZ,aAAa;AAAA,UACf;AAAA,UACA,iBAAiB;AAAA,YACf,MAAM;AAAA,YACN,aAAa;AAAA,UACf;AAAA,UACA,gBAAgB;AAAA,YACd,MAAM;AAAA,YACN,QAAQ,CAAE,QAAQ,SAAS,SAAS,WAAY;AAAA,YAChD,aAAa;AAAA,UACf;AAAA,UACA,iBAAiB;AAAA,YACf,MAAM;AAAA,YACN,QAAQ,CAAE,QAAQ,OAAQ;AAAA,YAC1B,aAAa;AAAA,UACf;AAAA,UACA,iBAAiB;AAAA,YACf,MAAM;AAAA,YACN,QAAQ,CAAE,aAAa,YAAY,QAAQ,KAAM;AAAA,YACjD,aAAa;AAAA,UACf;AAAA,UACA,iBAAiB;AAAA,YACf,MAAM;AAAA,YACN,QAAQ,CAAE,QAAQ,OAAQ;AAAA,YAC1B,aAAa;AAAA,UACf;AAAA,UACA,wBAAwB;AAAA,YACtB,MAAM;AAAA,YACN,YAAY;AAAA,YACZ,aAAa;AAAA,UACf;AAAA,UACA,iBAAiB;AAAA,YACf,MAAM;AAAA,YACN,aAAa;AAAA,UACf;AAAA,UACA,iBAAiB;AAAA,YACf,MAAM;AAAA,YACN,aAAa;AAAA,UACf;AAAA,UACA,gBAAgB;AAAA,YACd,MAAM;AAAA,YACN,aAAa;AAAA,UACf;AAAA,UACA,iBAAiB;AAAA,YACf,MAAM;AAAA,YACN,QAAQ,CAAE,QAAQ,SAAS,WAAY;AAAA,YACvC,aAAa;AAAA,UACf;AAAA,UACA,gBAAgB;AAAA,YACd,MAAM;AAAA,YACN,aAAa;AAAA,UACf;AAAA,UACA,aAAa;AAAA,YACX,MAAM;AAAA,YACN,QAAQ,CAAE,aAAa,cAAc,SAAS,MAAO;AAAA,YACrD,aAAa;AAAA,UACf;AAAA,UACA,iBAAiB;AAAA,YACf,MAAM;AAAA,YACN,aAAa;AAAA,UACf;AAAA,UACA,iBAAiB;AAAA,YACf,MAAM;AAAA,YACN,aAAa;AAAA,UACf;AAAA,UACA,iBAAiB;AAAA,YACf,MAAM;AAAA,YACN,aAAa;AAAA,UACf;AAAA,UACA,kBAAkB;AAAA,YAChB,MAAM;AAAA,YACN,aAAa;AAAA,UACf;AAAA,QACF;AACA,oBAAY,mBAAmB,CAAE,eAAe,aAAa,iBAAiB,gBAAgB,oBAAoB,gBAAgB,iBAAiB,mBAAmB,eAAe,gBAAgB,iBAAiB,eAAe,gBAAgB,qBAAqB,cAAc,mBAAmB,aAAa,aAAa,iBAAiB,sBAAuB;AAC7W,oBAAY,OAAO;AAAA,UACjB,OAAO;AAAA,YACL,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,aAAa;AAAA,YACX,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,cAAc,mBAAoB;AAAA,YAChE;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,UAAU,SAAU;AAAA,UACzC;AAAA,UACA,aAAa;AAAA,YACX,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,qBAAqB,uBAAwB;AAAA,YAC3E;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,WAAW,SAAS,SAAS,UAAU,UAAU,WAAW,OAAO,OAAQ;AAAA,UAChG;AAAA,UACA,SAAS;AAAA,YACP,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,iBAAiB,gBAAgB,mBAAoB;AAAA,YACnF;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,UAAU,CAAE,SAAU;AAAA,YACtB,aAAa;AAAA,UACf;AAAA,UACA,QAAQ;AAAA,YACN,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,UAAU,CAAE,QAAS;AAAA,YACrB,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,QAAQ;AAAA,YACN,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,gBAAgB,mBAAoB;AAAA,YAClE;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,SAAS;AAAA,YACT,UAAU,CAAE,UAAU,wBAAwB,uBAAuB,uBAAuB,wBAAwB,SAAU;AAAA,YAC9H,aAAa;AAAA,YACb,iBAAiB,CAAE;AAAA,cACjB,UAAU;AAAA,cACV,YAAY;AAAA,gBACV,MAAM;AAAA,cACR;AAAA,YACF,CAAE;AAAA,UACJ;AAAA,UACA,MAAM;AAAA,YACJ,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,gBAAgB,iBAAiB,gBAAgB,mBAAoB;AAAA,YACnG;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,SAAS,CAAE,KAAM;AAAA,YACjB,UAAU,CAAE,MAAM,IAAK;AAAA,YACvB,aAAa;AAAA,UACf;AAAA,UACA,UAAU;AAAA,YACR,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,gBAAgB,iBAAiB,iBAAiB,mBAAoB;AAAA,YACnF;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,SAAS;AAAA,YACT,UAAU,CAAE,wBAAyB;AAAA,YACrC,aAAa;AAAA,YACb,iBAAiB,CAAE,QAAS;AAAA,UAC9B;AAAA,UACA,cAAc;AAAA,YACZ,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,gBAAgB,iBAAiB,iBAAiB,gBAAgB,iBAAiB,iBAAiB,iBAAiB,aAAa,mBAAoB;AAAA,YACpL;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,SAAS,CAAE,KAAM;AAAA,YACjB,UAAU,CAAE,IAAK;AAAA,YACjB,aAAa;AAAA,UACf;AAAA,UACA,UAAU;AAAA,YACR,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,qBAAqB,iBAAiB,yBAAyB,oBAAoB,mBAAoB;AAAA,cAClH,UAAU,CAAE,eAAgB;AAAA,YAC9B;AAAA,YACA,OAAO;AAAA,cACL,KAAK,CAAE,WAAW,QAAQ,QAAQ,UAAU,SAAU;AAAA,YACxD;AAAA,YACA,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE;AAAA,cACjB,UAAU;AAAA,cACV,YAAY;AAAA,gBACV,MAAM,CAAE,QAAQ,UAAU,OAAO,OAAO,OAAQ;AAAA,cAClD;AAAA,YACF,CAAE;AAAA,UACJ;AAAA,UACA,SAAS;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,MAAM;AAAA,YACN,aAAa;AAAA,UACf;AAAA,UACA,eAAe;AAAA,YACb,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,UAAU,CAAE,OAAQ;AAAA,YACpB,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,WAAW;AAAA,YACT,UAAU,CAAE,QAAS;AAAA,YACrB,MAAM;AAAA,YACN,aAAa;AAAA,UACf;AAAA,UACA,aAAa;AAAA,YACX,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,UAAU,CAAE,QAAS;AAAA,YACrB,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,YAAY;AAAA,YACV,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,UAAU,CAAE,MAAM,KAAM;AAAA,YACxB,aAAa;AAAA,UACf;AAAA,UACA,QAAQ;AAAA,YACN,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,cAAc,mBAAoB;AAAA,YAChE;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,UAAU,CAAE,QAAS;AAAA,YACrB,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,WAAW;AAAA,YACT,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,MAAM,IAAK;AAAA,UAChC;AAAA,UACA,UAAU;AAAA,YACR,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,UAAU,CAAE,MAAO;AAAA,YACnB,aAAa;AAAA,YACb,iBAAiB,CAAE,WAAW,SAAS,UAAU,UAAU,WAAW,KAAM;AAAA,UAC9E;AAAA,UACA,gBAAgB;AAAA,YACd,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,uBAAuB;AAAA,YACrB,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,iBAAiB;AAAA,YACf,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,gBAAgB;AAAA,YACd,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,gBAAgB;AAAA,YACd,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE;AAAA,cACjB,UAAU;AAAA,cACV,YAAY;AAAA,gBACV,MAAM;AAAA,cACR;AAAA,YACF,CAAE;AAAA,UACJ;AAAA,UACA,mBAAmB;AAAA,YACjB,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,cAAc,iBAAiB,gBAAgB,mBAAoB;AAAA,YACjG;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS,CAAE,kBAAmB;AAAA,YAC9B,aAAa;AAAA,YACb,iBAAiB,CAAE,IAAK;AAAA,UAC1B;AAAA,UACA,oBAAoB;AAAA,YAClB,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,cACL,KAAK,CAAE,iBAAkB;AAAA,YAC3B;AAAA,YACA,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,iBAAiB;AAAA,YACf,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE;AAAA,cACjB,UAAU;AAAA,cACV,YAAY;AAAA,gBACV,MAAM;AAAA,cACR;AAAA,YACF,CAAE;AAAA,UACJ;AAAA,UACA,eAAe;AAAA,YACb,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,gBAAgB;AAAA,YACd,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,kBAAkB;AAAA,YAChB,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,aAAa;AAAA,YACX,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,UACf;AAAA,UACA,cAAc;AAAA,YACZ,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,eAAe;AAAA,YACb,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,kBAAkB;AAAA,YAChB,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,eAAe;AAAA,YACb,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,cAAc,iBAAiB,gBAAgB,mBAAoB;AAAA,YACjG;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS,CAAE,cAAe;AAAA,YAC1B,aAAa;AAAA,YACb,iBAAiB,CAAE,IAAK;AAAA,UAC1B;AAAA,UACA,gBAAgB;AAAA,YACd,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,cACL,KAAK,CAAE,aAAc;AAAA,YACvB;AAAA,YACA,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,gBAAgB;AAAA,YACd,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,UACf;AAAA,UACA,gBAAgB;AAAA,YACd,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,cAAc;AAAA,YACZ,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,eAAe;AAAA,YACb,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAS,SAAU;AAAA,UACxC;AAAA,UACA,gBAAgB;AAAA,YACd,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAS,UAAU,QAAS;AAAA,UACjD;AAAA,UACA,gBAAgB;AAAA,YACd,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,gBAAgB;AAAA,YACd,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO,CAAE,QAAQ,YAAa;AAAA,YAC9B,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,IAAK;AAAA,UAC1B;AAAA,UACA,gBAAgB;AAAA,YACd,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE;AAAA,cACjB,UAAU;AAAA,cACV,YAAY;AAAA,gBACV,MAAM;AAAA,cACR;AAAA,YACF,CAAE;AAAA,UACJ;AAAA,UACA,aAAa;AAAA,YACX,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,OAAO,SAAU;AAAA,UACtC;AAAA,UACA,oBAAoB;AAAA,YAClB,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,eAAe;AAAA,YACb,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,eAAgB;AAAA,YAC7B;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE;AAAA,cACjB,UAAU;AAAA,cACV,YAAY;AAAA,gBACV,MAAM;AAAA,cACR;AAAA,YACF,CAAE;AAAA,UACJ;AAAA,UACA,cAAc;AAAA,YACZ,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,eAAgB;AAAA,YAC7B;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,iBAAiB;AAAA,YACf,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,eAAgB;AAAA,YAC7B;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,IAAK;AAAA,UAC1B;AAAA,UACA,gBAAgB;AAAA,YACd,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,eAAgB;AAAA,YAC7B;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,OAAO,SAAU;AAAA,UACtC;AAAA,UACA,YAAY;AAAA,YACV,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,eAAgB;AAAA,YAC7B;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,eAAe;AAAA,YACb,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,eAAgB;AAAA,YAC7B;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,gBAAgB;AAAA,YACd,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,iBAAiB;AAAA,YACf,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,eAAgB;AAAA,YAC7B;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAS,SAAU;AAAA,UACxC;AAAA,UACA,WAAW;AAAA,YACT,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,eAAgB;AAAA,YAC7B;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,gBAAgB;AAAA,YACd,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,eAAgB;AAAA,YAC7B;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB;AAAA,cACf,UAAU,CAAE,MAAM,MAAM,MAAM,MAAM,MAAM,IAAK;AAAA,YACjD;AAAA,UACF;AAAA,UACA,WAAW;AAAA,YACT,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,eAAgB;AAAA,YAC7B;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,OAAQ;AAAA,UAC7B;AAAA,UACA,WAAW;AAAA,YACT,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,OAAO,SAAU;AAAA,UACtC;AAAA,UACA,MAAM;AAAA,YACJ,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,cACL,KAAK,CAAE,SAAU;AAAA,YACnB;AAAA,YACA,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,WAAW,SAAS,SAAU;AAAA,UACnD;AAAA,UACA,QAAQ;AAAA,YACN,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,SAAS;AAAA,YACT,UAAU,CAAE,QAAS;AAAA,YACrB,aAAa;AAAA,UACf;AAAA,UACA,MAAM;AAAA,YACJ,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,UAAU,CAAE,MAAO;AAAA,YACnB,aAAa;AAAA,UACf;AAAA,UACA,MAAM;AAAA,YACJ,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,yBAAyB,iBAAiB,iBAAiB,cAAc,wBAAwB,iBAAiB,iBAAiB,mBAAoB;AAAA,YACpK;AAAA,YACA,OAAO;AAAA,cACL,KAAK,CAAE,YAAY,KAAM;AAAA,YAC3B;AAAA,YACA,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,UAAU,CAAE,OAAQ;AAAA,YACpB,aAAa;AAAA,UACf;AAAA,UACA,UAAU;AAAA,YACR,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,gBAAgB,iBAAiB,iBAAiB,gBAAgB,iBAAiB,iBAAiB,iBAAiB,mBAAoB;AAAA,YACvK;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,SAAS,CAAE,KAAM;AAAA,YACjB,UAAU,CAAE,MAAM,IAAK;AAAA,YACvB,aAAa;AAAA,UACf;AAAA,UACA,OAAO;AAAA,YACL,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,yBAAyB,iBAAiB,mBAAoB;AAAA,YAC3E;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,UAAU,CAAE,WAAW,UAAW;AAAA,YAClC,aAAa;AAAA,YACb,iBAAiB,CAAE,MAAM,cAAc,YAAY,UAAU,UAAU,UAAU,MAAM,IAAK;AAAA,UAC9F;AAAA,UACA,SAAS;AAAA,YACP,MAAM;AAAA,YACN,YAAY;AAAA,cACV,UAAU,CAAE,YAAa;AAAA,cACzB,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,SAAS;AAAA,YACT,UAAU,CAAE,MAAM,MAAM,MAAM,MAAM,MAAM,IAAK;AAAA,YAC/C,aAAa;AAAA,UACf;AAAA,UACA,KAAK;AAAA,YACH,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,UAAU,CAAE,KAAM;AAAA,YAClB,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAS,UAAU,UAAU,KAAM;AAAA,UACxD;AAAA,UACA,OAAO;AAAA,YACL,UAAU,CAAE,QAAS;AAAA,YACrB,MAAM;AAAA,YACN,aAAa;AAAA,UACf;AAAA,UACA,UAAU;AAAA,YACR,UAAU,CAAE,QAAS;AAAA,YACrB,MAAM;AAAA,YACN,aAAa;AAAA,UACf;AAAA,UACA,MAAM;AAAA,YACJ,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,SAAS;AAAA,YACT,UAAU,CAAE,WAAW,YAAa;AAAA,YACpC,aAAa;AAAA,YACb,iBAAiB,CAAE,UAAU;AAAA,cAC3B,UAAU;AAAA,cACV,YAAY;AAAA,gBACV,MAAM,CAAE,SAAS,QAAS;AAAA,cAC5B;AAAA,YACF,CAAE;AAAA,UACJ;AAAA,UACA,MAAM;AAAA,YACJ,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,cACL,KAAK,CAAE,UAAW;AAAA,YACpB;AAAA,YACA,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,UAAU,CAAE,MAAM,MAAM,IAAK;AAAA,YAC7B,aAAa;AAAA,UACf;AAAA,UACA,SAAS;AAAA,YACP,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,yBAAyB,wBAAwB,iBAAiB,iBAAiB,iBAAiB,oBAAoB,mBAAoB;AAAA,YACzJ;AAAA,YACA,OAAO;AAAA,cACL,KAAK,CAAE,QAAS;AAAA,YAClB;AAAA,YACA,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,UAAU,CAAE,QAAS;AAAA,YACrB,aAAa;AAAA,YACb,iBAAiB,CAAE,MAAM,IAAK;AAAA,UAChC;AAAA,UACA,UAAU;AAAA,YACR,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,cAAc,iBAAiB,gBAAgB,iBAAiB,mBAAoB;AAAA,YACjG;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,SAAS,CAAE,MAAO;AAAA,YAClB,UAAU,CAAE,MAAM,IAAK;AAAA,YACvB,aAAa;AAAA,UACf;AAAA,UACA,KAAK;AAAA,YACH,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,MAAM;AAAA,YACJ,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,UAAU,CAAE,MAAO;AAAA,YACnB,aAAa;AAAA,YACb,iBAAiB,CAAE,WAAW,SAAU;AAAA,UAC1C;AAAA,UACA,SAAS;AAAA,YACP,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,MAAM;AAAA,YACJ,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,UAAU,CAAE,MAAO;AAAA,YACnB,aAAa;AAAA,UACf;AAAA,UACA,MAAM;AAAA,YACJ,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,yBAAyB,iBAAiB,oBAAoB,mBAAoB;AAAA,YAC/F;AAAA,YACA,OAAO;AAAA,cACL,KAAK,CAAE,YAAY,iBAAiB,kBAAmB;AAAA,YACzD;AAAA,YACA,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,UAAU,CAAE,sBAAuB;AAAA,YACnC,aAAa;AAAA,YACb,iBAAiB,CAAE,MAAM,IAAK;AAAA,UAChC;AAAA,UACA,SAAS;AAAA,YACP,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,yBAAyB,iBAAiB,oBAAoB,mBAAoB;AAAA,YAC/F;AAAA,YACA,OAAO;AAAA,cACL,KAAK,CAAE,YAAY,iBAAiB,kBAAmB;AAAA,YACzD;AAAA,YACA,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,MAAM,IAAK;AAAA,UAChC;AAAA,UACA,UAAU;AAAA,YACR,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,gBAAgB,iBAAiB,mBAAoB;AAAA,YACnF;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,SAAS,CAAE,QAAQ,SAAU;AAAA,YAC7B,UAAU,CAAE,0BAA2B;AAAA,YACvC,aAAa;AAAA,YACb,iBAAiB,CAAE,UAAU,MAAM;AAAA,cACjC,UAAU;AAAA,cACV,YAAY;AAAA,gBACV,MAAM,CAAE,SAAS,QAAS;AAAA,cAC5B;AAAA,YACF,GAAG;AAAA,cACD,UAAU;AAAA,cACV,YAAY;AAAA,gBACV,MAAM;AAAA,cACR;AAAA,YACF,CAAE;AAAA,UACJ;AAAA,UACA,kBAAkB;AAAA,YAChB,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,gBAAgB,iBAAiB,gBAAgB,mBAAoB;AAAA,YAClF;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,SAAS,CAAE,QAAQ,SAAU;AAAA,YAC7B,UAAU,CAAE,2BAA4B;AAAA,YACxC,aAAa;AAAA,YACb,iBAAiB,CAAE;AAAA,cACjB,UAAU,CAAE,UAAU,IAAK;AAAA,YAC7B,GAAG;AAAA,cACD,UAAU;AAAA,cACV,YAAY;AAAA,gBACV,MAAM,CAAE,YAAY,SAAS,QAAS;AAAA,cACxC;AAAA,YACF,GAAG;AAAA,cACD,UAAU;AAAA,cACV,YAAY;AAAA,gBACV,MAAM;AAAA,cACR;AAAA,YACF,CAAE;AAAA,UACJ;AAAA,UACA,eAAe;AAAA,YACb,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,gBAAgB,iBAAiB,iBAAiB,gBAAgB,mBAAoB;AAAA,YACnG;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,SAAS,CAAE,QAAQ,SAAU;AAAA,YAC7B,UAAU,CAAE,wBAAyB;AAAA,YACrC,aAAa;AAAA,YACb,iBAAiB,CAAE;AAAA,cACjB,UAAU,CAAE,UAAU,IAAK;AAAA,YAC7B,GAAG;AAAA,cACD,UAAU;AAAA,cACV,YAAY;AAAA,gBACV,MAAM,CAAE,SAAS,UAAU,OAAQ;AAAA,cACrC;AAAA,YACF,GAAG;AAAA,cACD,UAAU;AAAA,cACV,YAAY;AAAA,gBACV,MAAM;AAAA,cACR;AAAA,YACF,CAAE;AAAA,UACJ;AAAA,UACA,YAAY;AAAA,YACV,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,UAAU,CAAE,KAAM;AAAA,YAClB,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,MAAM;AAAA,YACJ,MAAM;AAAA,YACN,YAAY;AAAA,YACZ,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE;AAAA,cACjB,UAAU,CAAE,WAAW,SAAS,MAAM,SAAS,cAAc,YAAY,UAAU,UAAU,QAAQ,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,UAAU,MAAM,UAAU,MAAM,MAAM,WAAW,IAAK;AAAA,YACjM,GAAG;AAAA,cACD,UAAU;AAAA,cACV,YAAY;AAAA,gBACV,KAAK;AAAA,cACP;AAAA,YACF,CAAE;AAAA,UACJ;AAAA,UACA,MAAM;AAAA,YACJ,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,OAAQ;AAAA,UAC7B;AAAA,UACA,QAAQ;AAAA,YACN,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,iBAAiB,gBAAgB,gBAAgB,mBAAoB;AAAA,YACnG;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,SAAS,CAAE,SAAU;AAAA,YACrB,UAAU,CAAE,QAAS;AAAA,YACrB,aAAa;AAAA,YACb,iBAAiB,CAAE;AAAA,cACjB,UAAU,CAAE,UAAU,IAAK;AAAA,YAC7B,GAAG;AAAA,cACD,UAAU;AAAA,cACV,YAAY;AAAA,gBACV,MAAM,CAAE,YAAY,QAAS;AAAA,cAC/B;AAAA,YACF,GAAG;AAAA,cACD,UAAU;AAAA,cACV,YAAY;AAAA,gBACV,MAAM;AAAA,cACR;AAAA,YACF,CAAE;AAAA,UACJ;AAAA,UACA,cAAc;AAAA,YACZ,MAAM;AAAA,YACN,YAAY;AAAA,YACZ,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE;AAAA,cACjB,UAAU,CAAE,WAAW,SAAS,MAAM,SAAS,cAAc,YAAY,UAAU,UAAU,QAAQ,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,UAAU,MAAM,UAAU,MAAM,MAAM,WAAW,IAAK;AAAA,YACjM,GAAG;AAAA,cACD,UAAU;AAAA,cACV,YAAY;AAAA,gBACV,KAAK;AAAA,cACP;AAAA,YACF,CAAE;AAAA,UACJ;AAAA,UACA,aAAa;AAAA,YACX,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,kBAAkB,iBAAiB,iBAAiB,iBAAiB,iBAAiB,mBAAoB;AAAA,YACvH;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,UAAU,CAAE,UAAW;AAAA,YACvB,aAAa;AAAA,UACf;AAAA,UACA,OAAO;AAAA,YACL,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,iBAAiB,gBAAgB,iBAAiB,qBAAqB,cAAe;AAAA,YACpH;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,SAAS;AAAA,YACT,UAAU,CAAE,qBAAsB;AAAA,YAClC,aAAa;AAAA,YACb,iBAAiB,CAAE;AAAA,cACjB,UAAU,CAAE,UAAU,IAAK;AAAA,YAC7B,GAAG;AAAA,cACD,UAAU;AAAA,cACV,YAAY;AAAA,gBACV,MAAM,CAAE,SAAS,QAAS;AAAA,cAC5B;AAAA,YACF,CAAE;AAAA,UACJ;AAAA,UACA,YAAY;AAAA,YACV,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,yBAAyB,iBAAiB,iBAAiB,iBAAiB,qBAAqB,kBAAmB;AAAA,YACjI;AAAA,YACA,OAAO;AAAA,cACL,KAAK,CAAE,OAAQ;AAAA,YACjB;AAAA,YACA,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB;AAAA,cACf,UAAU,CAAE,MAAM,MAAM,UAAW;AAAA,YACrC;AAAA,UACF;AAAA,UACA,OAAO;AAAA,YACL,UAAU,CAAE,QAAS;AAAA,YACrB,MAAM;AAAA,YACN,aAAa;AAAA,UACf;AAAA,UACA,QAAQ;AAAA,YACN,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,UAAU,CAAE,uBAAuB,4BAA4B,gBAAiB;AAAA,YAChF,aAAa;AAAA,YACb,iBAAiB;AAAA,cACf,UAAU,CAAE,WAAW,OAAQ;AAAA,YACjC;AAAA,UACF;AAAA,UACA,UAAU;AAAA,YACR,MAAM;AAAA,YACN,aAAa;AAAA,UACf;AAAA,UACA,KAAK;AAAA,YACH,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,yBAAyB,iBAAiB,iBAAiB,cAAc,iBAAiB,iBAAiB,mBAAoB;AAAA,YAC5I;AAAA,YACA,OAAO;AAAA,cACL,KAAK,CAAE,QAAQ,gBAAgB,aAAa,UAAW;AAAA,YACzD;AAAA,YACA,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,SAAS,CAAE,YAAY,QAAQ,YAAY,OAAQ;AAAA,YACnD,UAAU,CAAE,IAAK;AAAA,YACjB,aAAa;AAAA,UACf;AAAA,UACA,UAAU;AAAA,YACR,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,yBAAyB,iBAAiB,mBAAoB;AAAA,YAC3E;AAAA,YACA,OAAO;AAAA,cACL,KAAK,CAAE,KAAM;AAAA,YACf;AAAA,YACA,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,SAAS,CAAE,QAAQ,SAAS,UAAW;AAAA,YACvC,UAAU,CAAE,SAAS,SAAS,OAAQ;AAAA,YACtC,aAAa;AAAA,UACf;AAAA,UACA,WAAW;AAAA,YACT,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,gBAAgB,iBAAiB,iBAAiB,gBAAgB,iBAAiB,iBAAiB,iBAAiB,aAAa,mBAAoB;AAAA,YACpL;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,SAAS,CAAE,KAAM;AAAA,YACjB,UAAU,CAAE,IAAK;AAAA,YACjB,aAAa;AAAA,UACf;AAAA,UACA,WAAW;AAAA,YACT,MAAM;AAAA,YACN,YAAY;AAAA,cACV,UAAU,CAAE,iBAAiB,eAAgB;AAAA,cAC7C,SAAS,CAAE,kBAAkB,oBAAoB,qBAAqB,iBAAiB,eAAgB;AAAA,YACzG;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,UACf;AAAA,UACA,QAAQ;AAAA,YACN,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB;AAAA,cACf,UAAU,CAAE,SAAS,QAAQ,SAAU;AAAA,YACzC;AAAA,UACF;AAAA,UACA,WAAW;AAAA,YACT,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,yBAAyB,qBAAqB,kBAAkB,iBAAiB,iBAAiB,oBAAoB,mBAAoB;AAAA,YACvJ;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,UAAU,CAAE,sBAAuB;AAAA,YACnC,aAAa;AAAA,YACb,iBAAiB;AAAA,cACf,UAAU;AAAA,cACV,YAAY;AAAA,gBACV,MAAM;AAAA,cACR;AAAA,YACF;AAAA,UACF;AAAA,UACA,SAAS;AAAA,YACP,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,MAAM;AAAA,YACN,aAAa;AAAA,UACf;AAAA,UACA,aAAa;AAAA,YACX,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,MAAM;AAAA,YACN,aAAa;AAAA,UACf;AAAA,UACA,QAAQ;AAAA,YACN,UAAU,CAAE,QAAS;AAAA,YACrB,MAAM;AAAA,YACN,aAAa;AAAA,UACf;AAAA,UACA,WAAW;AAAA,YACT,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,oBAAoB,iBAAiB,iBAAiB,iBAAiB,kBAAkB,mBAAoB;AAAA,YAC3I;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,UAAU,CAAE,IAAK;AAAA,YACjB,aAAa;AAAA,YACb,iBAAiB,CAAE,IAAK;AAAA,UAC1B;AAAA,UACA,QAAQ;AAAA,YACN,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,kBAAkB,oBAAoB,iBAAiB,qBAAqB,iBAAiB,eAAgB;AAAA,cACxH,UAAU,CAAE,eAAgB;AAAA,YAC9B;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,UAAU,CAAE,qBAAsB;AAAA,YAClC,aAAa;AAAA,UACf;AAAA,UACA,YAAY;AAAA,YACV,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,kBAAkB,iBAAiB,iBAAiB,qBAAqB,iBAAiB,eAAgB;AAAA,cACrH,UAAU,CAAE,eAAgB;AAAA,YAC9B;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,UAAU,CAAE,sBAAuB;AAAA,YACnC,aAAa;AAAA,YACb,iBAAiB;AAAA,cACf,UAAU;AAAA,cACV,YAAY;AAAA,gBACV,MAAM,CAAE,QAAQ,KAAM;AAAA,cACxB;AAAA,YACF;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,YACN,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,UAAU,CAAE,QAAS;AAAA,YACrB,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,WAAW;AAAA,YACT,MAAM;AAAA,YACN,aAAa;AAAA,UACf;AAAA,UACA,QAAQ;AAAA,YACN,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,mBAAoB;AAAA,cAC/B,UAAU,CAAE,cAAe;AAAA,YAC7B;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,UAAU;AAAA,cAC3B,UAAU;AAAA,cACV,YAAY;AAAA,gBACV,MAAM,CAAE,YAAY,SAAS,QAAS;AAAA,cACxC;AAAA,YACF,GAAG;AAAA,cACD,UAAU;AAAA,cACV,YAAY;AAAA,gBACV,MAAM;AAAA,cACR;AAAA,YACF,CAAE;AAAA,UACJ;AAAA,UACA,KAAK;AAAA,YACH,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,iBAAiB,gBAAgB,iBAAiB,mBAAoB;AAAA,YACpG;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,SAAS,CAAE,SAAU;AAAA,YACrB,aAAa;AAAA,YACb,iBAAiB,CAAE;AAAA,cACjB,UAAU,CAAE,UAAU,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAK;AAAA,YACjE,GAAG;AAAA,cACD,UAAU;AAAA,cACV,YAAY;AAAA,gBACV,MAAM;AAAA,cACR;AAAA,YACF,GAAG;AAAA,cACD,UAAU;AAAA,cACV,YAAY;AAAA,gBACV,MAAM;AAAA,cACR;AAAA,YACF,CAAE;AAAA,UACJ;AAAA,UACA,OAAO;AAAA,YACL,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,iBAAiB,mBAAoB;AAAA,YACnE;AAAA,YACA,OAAO;AAAA,cACL,KAAK,CAAE,YAAY,KAAM;AAAA,YAC3B;AAAA,YACA,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,SAAS;AAAA,YACT,UAAU,CAAE,OAAQ;AAAA,YACpB,aAAa;AAAA,UACf;AAAA,UACA,SAAS;AAAA,YACP,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,yBAAyB,iBAAiB,cAAc,wBAAwB,oBAAoB,mBAAoB;AAAA,YACrI;AAAA,YACA,OAAO;AAAA,cACL,KAAK,CAAE,KAAM;AAAA,YACf;AAAA,YACA,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,MAAM,IAAK;AAAA,UAChC;AAAA,UACA,UAAU;AAAA,YACR,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,SAAU;AAAA,UAC/B;AAAA,UACA,MAAM;AAAA,YACJ,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,SAAS;AAAA,YACT,UAAU,CAAE,IAAK;AAAA,YACjB,aAAa;AAAA,UACf;AAAA,UACA,SAAS;AAAA,YACP,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,yBAAyB,qBAAqB,kBAAkB,iBAAiB,iBAAiB,oBAAoB,mBAAoB;AAAA,YACvJ;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,UAAU,CAAE,sBAAsB,uBAAuB,0BAA0B,qBAAqB,qBAAqB,qBAAqB,UAAW;AAAA,YAC7J,aAAa;AAAA,UACf;AAAA,UACA,OAAO;AAAA,YACL,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,UACf;AAAA,UACA,SAAS;AAAA,YACP,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,yBAAyB,iBAAiB,oBAAoB,mBAAoB;AAAA,YAC/F;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,UAAU,CAAE,sBAAuB;AAAA,YACnC,aAAa;AAAA,YACb,iBAAiB,CAAE,MAAM,IAAK;AAAA,UAChC;AAAA,UACA,SAAS;AAAA,YACP,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,iBAAiB,mBAAoB;AAAA,YAClD;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,SAAS;AAAA,YACT,aAAa;AAAA,UACf;AAAA,UACA,MAAM;AAAA,YACJ,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,yBAAyB,wBAAwB,iBAAiB,iBAAiB,oBAAoB,mBAAoB;AAAA,YACxI;AAAA,YACA,OAAO;AAAA,cACL,KAAK,CAAE,UAAW;AAAA,YACpB;AAAA,YACA,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,YACb,iBAAiB,CAAE,MAAM,IAAK;AAAA,UAChC;AAAA,UACA,UAAU;AAAA,YACR,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,yBAAyB,iBAAiB,iBAAiB,cAAc,wBAAwB,iBAAiB,iBAAiB,iBAAiB,oBAAoB,mBAAoB;AAAA,YACzM;AAAA,YACA,OAAO;AAAA,cACL,KAAK,CAAE,YAAY,KAAM;AAAA,YAC3B;AAAA,YACA,UAAU,CAAE,QAAS;AAAA,YACrB,SAAS;AAAA,YACT,aAAa;AAAA,UACf;AAAA,UACA,UAAU;AAAA,YACR,MAAM;AAAA,YACN,YAAY;AAAA,cACV,SAAS,CAAE,gBAAgB,iBAAiB,iBAAiB,cAAc,iBAAiB,gBAAgB,mBAAoB;AAAA,YAClI;AAAA,YACA,OAAO;AAAA,YACP,UAAU,CAAE,UAAU,UAAW;AAAA,YACjC,SAAS,CAAE,SAAS,MAAO;AAAA,YAC3B,aAAa;AAAA,YACb,iBAAiB,CAAE,MAAM;AAAA,cACvB,UAAU;AAAA,cACV,YAAY;AAAA,gBACV,MAAM;AAAA,cACR;AAAA,YACF,CAAE;AAAA,UACJ;AAAA,UACA,QAAQ;AAAA,YACN,MAAM;AAAA,YACN,aAAa;AAAA,UACf;AAAA,UACA,QAAQ;AAAA,YACN,UAAU,CAAE,QAAS;AAAA,YACrB,MAAM;AAAA,YACN,aAAa;AAAA,UACf;AAAA,QACF;AACA,oBAAY,mBAAmB;AAC/B,oBAAY,wBAAwB,CAAE;AAAA,UACpC,UAAU,CAAE,QAAQ,QAAQ,WAAW,OAAO,YAAY,YAAY,MAAM,WAAW,MAAM,QAAQ,QAAQ,UAAU,SAAS,UAAU,QAAQ,OAAO,QAAQ,QAAQ,SAAS,YAAY,YAAY,SAAS,WAAW,YAAY,UAAU,UAAU,SAAS,YAAY,YAAY,SAAS,OAAQ;AAAA,QAClT,GAAG;AAAA,UACD,UAAU;AAAA,UACV,YAAY;AAAA,YACV,MAAM;AAAA,UACR;AAAA,QACF,GAAG;AAAA,UACD,UAAU;AAAA,UACV,YAAY;AAAA,YACV,MAAM,CAAE,SAAS,QAAQ,YAAY,QAAQ,UAAU,SAAS,UAAU,YAAY,SAAS,SAAS,UAAU,QAAQ,MAAO;AAAA,UACnI;AAAA,QACF,GAAG;AAAA,UACD,UAAU;AAAA,UACV,YAAY;AAAA,YACV,MAAM;AAAA,UACR;AAAA,QACF,GAAG;AAAA,UACD,UAAU;AAAA,UACV,YAAY;AAAA,YACV,MAAM;AAAA,UACR;AAAA,QACF,GAAG;AAAA,UACD,UAAU;AAAA,UACV,YAAY;AAAA,YACV,MAAM,CAAE,WAAW,YAAY,OAAQ;AAAA,UACzC;AAAA,QACF,GAAG;AAAA,UACD,UAAU;AAAA,UACV,WAAW,SAASC,WAAU,OAAO;AACnC,gBAAI,EAAE,iBAAiB,IAAI,sBAAsB;AAC/C,sBAAQ,IAAI,MAAM,gBAAgB,KAAK;AAAA,YACzC;AACA,mBAAO,OAAO,MAAM,KAAK,MAAM,CAAC,IAAI;AAAA,UACtC;AAAA,UACA,YAAY;AAAA,YACV,UAAU;AAAA,UACZ;AAAA,QACF,GAAG;AAAA,UACD,UAAU,CAAE,YAAY,UAAU,QAAQ,QAAQ,WAAW,iBAAiB,uBAAuB,eAAe,oBAAoB,qBAAqB,qBAAqB,kBAAkB,gBAAgB,WAAW,WAAW,WAAW,WAAW,WAAW,kBAAkB,WAAW,WAAW,eAAe,gBAAgB,YAAY,gBAAgB,sBAAsB,eAAe,UAAU,gBAAgB,UAAU,SAAS,aAAa,kBAAkB,UAAU,QAAQ,gBAAgB,aAAa,WAAW,YAAY,SAAS,WAAW,kBAAkB,cAAc,QAAQ,UAAU,MAAO;AAAA,QACpnB,CAAE;AACF,oBAAY,yBAAyB,CAAE;AAAA,UACrC,UAAU;AAAA,UACV,YAAY;AAAA,YACV,MAAM;AAAA,UACR;AAAA,QACF,GAAG;AAAA,UACD,UAAU;AAAA,UACV,YAAY;AAAA,YACV,KAAK;AAAA,UACP;AAAA,QACF,GAAG;AAAA,UACD,UAAU,CAAE,QAAQ,WAAW,UAAU,OAAO,KAAK,OAAO,cAAc,OAAO,OAAO,UAAU,QAAQ,SAAS,SAAS,SAAS,SAAS,MAAM,MAAM,UAAU,SAAS,KAAK,QAAQ,KAAK,OAAO,QAAQ,QAAQ,QAAQ,OAAO,QAAQ,OAAO,OAAO,OAAO,KAAK,KAAK,KAAK,QAAQ,QAAQ,MAAM,MAAM,OAAO,OAAO,MAAM,OAAO,MAAM,IAAK;AAAA,QACrV,CAAE;AACF,oBAAY,yBAAyB;AAAA,UACnC,GAAG,SAAS,EAAE,QAAQ;AACpB,gBAAI,OAAO,OAAO,MAAM,MAAM,OAAO;AACrC,gBAAI,KAAK,iBAAiB,8BAA8B;AACtD,qBAAO;AAAA,YACT;AACA,gBAAI,KAAK,KAAK,QAAQ;AACpB,qBAAO;AAAA,YACT;AACA,mBAAO;AAAA,UACT;AAAA,UACA,MAAM,SAAS,KAAK,QAAQ;AAC1B,gBAAI,OAAO,OAAO;AAClB,mBAAO,CAAC,KAAK;AAAA,UACf;AAAA,UACA,QAAQ,SAAS,OAAO,QAAQ;AAC9B,gBAAI,OAAO,OAAO,MAAM,OAAO,OAAO,MAAM,MAAM,OAAO;AACzD,gBAAI,KAAK,aAAa,MAAM,MAAM,QAAQ;AACxC,qBAAO,SAAS;AAAA,YAClB;AACA,mBAAO;AAAA,UACT;AAAA,UACA,KAAK,SAAS,IAAI,QAAQ;AACxB,gBAAI,OAAO,OAAO,MAAM,OAAO,OAAO,MAAM,MAAM,OAAO;AACzD,oBAAQ,KAAK,KAAK;AAAA,cACjB,KAAK;AACJ,uBAAO;AAAA,cAER,KAAK;AACJ,uBAAO,SAAS,kBAAkB,SAAS;AAAA,cAE5C;AACC,uBAAO,SAAS,kBAAkB,SAAS;AAAA,YAC7C;AAAA,UACF;AAAA,UACA,OAAO,SAAS,MAAM,QAAQ;AAC5B,gBAAI,OAAO,OAAO,MAAM,OAAO,OAAO,MAAM,MAAM,OAAO;AACzD,oBAAQ,KAAK,MAAM;AAAA,cAClB,KAAK;AAAA,cACL,KAAK;AACJ,uBAAO;AAAA,cAER,KAAK;AACJ,oBAAI,SAAS,YAAY,KAAK,aAAa,cAAc,GAAG;AAC1D,yBAAO;AAAA,gBACT;AACA,uBAAO;AAAA,cAER,KAAK;AACJ,uBAAO,SAAS;AAAA,cAEjB,KAAK;AACJ,uBAAO,SAAS,cAAc,SAAS,eAAe,SAAS;AAAA,cAEhE,KAAK;AACJ,uBAAO,SAAS,cAAc,SAAS;AAAA,cAExC,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACJ,uBAAO,SAAS;AAAA,cAEjB;AACC,uBAAO;AAAA,YACT;AAAA,UACF;AAAA,UACA,IAAI,SAAS,GAAG,QAAQ;AACtB,gBAAI,OAAO,OAAO,MAAM,MAAM,OAAO;AACrC,gBAAI,0BAA0B,IAAI,MAAM,gBAAgB,MAAM,cAAc;AAC5E,gBAAI,yBAAyB;AAC3B,qBAAO;AAAA,YACT;AACA,mBAAO;AAAA,UACT;AAAA,UACA,MAAM,SAAS,KAAK,QAAQ;AAC1B,gBAAI,OAAO,OAAO;AAClB,gBAAI,KAAK,aAAa,MAAM,MAAM,WAAW;AAC3C,qBAAO;AAAA,YACT;AACA,mBAAO;AAAA,UACT;AAAA,UACA,QAAQ,SAAS,OAAO,QAAQ;AAC9B,gBAAI,OAAO,OAAO;AAClB,gBAAI,mBAAmB,IAAI,MAAM,gBAAgB,MAAM,uDAAuD;AAC9G,mBAAO,CAAC;AAAA,UACV;AAAA,UACA,QAAQ,SAAS,OAAO,QAAQ;AAC9B,gBAAI,OAAO,OAAO,MAAM,OAAO,OAAO;AACtC,mBAAO,CAAC,KAAK,YAAY,KAAK,QAAQ,KAAK,SAAS;AAAA,UACtD;AAAA,UACA,KAAK,SAAS,IAAI,QAAQ;AACxB,gBAAI,OAAO,OAAO,MAAM,MAAM,OAAO;AACrC,gBAAI,KAAK,cAAc,KAAK,WAAW,iBAAiB,8BAA8B;AACpF,qBAAO;AAAA,YACT;AACA,mBAAO;AAAA,UACT;AAAA,QACF;AACA,oBAAY,cAAc;AAAA,UACxB,QAAQ,CAAE,UAAU,YAAY,UAAU,YAAY,QAAQ,OAAO,WAAW,YAAY,oBAAoB,iBAAiB,UAAU,eAAe,SAAS,aAAa,aAAa,UAAU,cAAc,UAAU,UAAU,OAAO,YAAY,WAAW,SAAS,WAAW,QAAQ,UAAW;AAAA,QAChT;AACA,YAAI,uBAAuB;AAC3B,iBAAS,cAAc,MAAM;AAC3B,cAAI,WAAW;AACf,cAAI,QAAQ,qBAAqB,KAAK,IAAI;AAC1C,cAAI,SAAS,MAAM,UAAU;AAC3B,uBAAWjM,eAAc,MAAM,QAAQ;AAAA,UACzC;AACA,iBAAO;AAAA,QACT;AACA,YAAI,yBAAyB;AAC7B,iBAAS,gBAAgB,MAAM;AAC7B,iBAAO,CAAC,CAAC,4BAA4B,IAAI,EAAE;AAAA,QAC7C;AACA,YAAI,4BAA4B;AAChC,iBAAS,OAAO,MAAM;AACpB,iBAAO,2BAA2B,IAAI;AACtC,iBAAO,sBAAsB,IAAI;AAAA,QACnC;AACA,YAAI,iBAAiB;AACrB,iBAAS,aAAa,MAAM;AAC1B,cAAI,UAAU,kBAAkB,UAAU,IAAI;AAC9C,cAAI,CAAC,WAAW,CAAC,MAAM,QAAQ,QAAQ,aAAa,GAAG;AACrD,mBAAO,CAAC;AAAA,UACV;AACA,iBAAO,mBAAmB,QAAQ,aAAa;AAAA,QACjD;AACA,YAAI,wBAAwB;AAC5B,iBAAS,gBAAgB,MAAM;AAC7B,cAAI,UAAU,kBAAkB,UAAU,IAAI;AAC9C,cAAI,CAAC,WAAW,CAAC,MAAM,QAAQ,QAAQ,eAAe,GAAG;AACvD,mBAAO;AAAA,UACT;AACA,iBAAO,mBAAmB,QAAQ,eAAe;AAAA,QACnD;AACA,YAAI,2BAA2B;AAC/B,iBAAS,cAAc,MAAM;AAC3B,cAAI,UAAU,kBAAkB,UAAU,IAAI;AAC9C,cAAI,CAAC,WAAW,CAAC,MAAM,QAAQ,QAAQ,aAAa,GAAG;AACrD,mBAAO;AAAA,UACT;AACA,iBAAO,mBAAmB,QAAQ,aAAa;AAAA,QACjD;AACA,YAAI,yBAAyB;AAC7B,iBAAS,kBAAkB,MAAM,MAAM;AACrC,cAAI;AACJ,cAAI;AACJ,cAAI,QAAQ,KAAK,aAAa,IAAI;AAClC,cAAI,WAAW,kBAAkB,UAAU,IAAI;AAC/C,cAAI,MAAM,uBAAuB,IAAI;AACrC,cAAI,CAAC,UAAU;AACb,mBAAO;AAAA,UACT;AACA,cAAI,SAAS,eAAe,CAAC,SAAS,MAAM,KAAK,MAAM,KAAK;AAC1D,mBAAO;AAAA,UACT;AACA,kBAAQ,SAAS,MAAM;AAAA,YACtB,KAAK;AACJ,qBAAO,CAAE,QAAQ,OAAQ,EAAE,SAAS,MAAM,YAAY,CAAC;AAAA,YAExD,KAAK;AACJ,qBAAO,OAAO,UAAU,YAAY,SAAS,OAAO,SAAS,MAAM,YAAY,CAAC;AAAA,YAEjF,KAAK;AACJ,qBAAO,mBAAmB,KAAK;AAC/B,qBAAO,KAAK,OAAO,SAAS,QAAQ,OAAO;AACzC,uBAAO,UAAU,SAAS,OAAO,SAAS,KAAK;AAAA,cACjD,GAAG,KAAK,WAAW,CAAC;AAAA,YAErB,KAAK;AACJ,qBAAO,CAAC,EAAE,SAAS,IAAI,eAAe,KAAK;AAAA,YAE5C,KAAK;AACJ,qBAAO,mBAAmB,KAAK;AAC/B,qBAAO,KAAK,KAAK,SAAS,OAAO;AAC/B,uBAAO,IAAI,eAAe,KAAK;AAAA,cACjC,CAAC;AAAA,YAEF,KAAK;AACJ,qBAAO,MAAM,KAAK,MAAM;AAAA,YAEzB,KAAK;AACJ,0BAAY,MAAM,MAAM,4BAA4B;AACpD,qBAAO,CAAC,EAAE,cAAc,UAAU,CAAC,KAAK,UAAU,CAAC;AAAA,YAEpD,KAAK;AACJ,kBAAI,WAAW,OAAO,SAAS,aAAa,cAAc,SAAS,WAAW;AAC9E,qBAAO,gBAAgB,KAAK,KAAK,KAAK,SAAS,KAAK,KAAK;AAAA,UAC3D;AAAA,QACF;AACA,YAAI,8BAA8B;AAClC,iBAAS,aAAa,KAAK;AACzB,cAAI,iBAAiB,kBAAkB,UAAU,GAAG;AACpD,iBAAO,CAAC,CAAC;AAAA,QACX;AACA,YAAI,wBAAwB;AAC5B,iBAAS,qBAAqB,MAAM,SAAS,aAAa;AACxD,cAAI,gBAAgB,mBAAmB,YAAY,KAAK,MAAM,CAAC,EAAE,OAAO,SAAS,MAAM;AACrF,mBAAO,sBAAsB,IAAI,MAAM;AAAA,UACzC,CAAC;AACD,cAAI,cAAc,SAAS,GAAG;AAC5B,iBAAK,KAAK,aAAa;AACvB,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,gCAAgC;AACpC,iBAAS,wBAAwB,MAAM,SAAS,aAAa;AAC3D,cAAI,UAAU,CAAC;AACf,cAAI,OAAO,iBAAiB,WAAW;AACvC,cAAIgI,SAAQ,YAAY;AACxB,cAAI,UAAU,qBAAqB,IAAI;AACvC,cAAI,MAAM,QAAQ,QAAQ,IAAI,CAAC,GAAG;AAChC,sBAAU,qBAAqB,QAAQ,IAAI,EAAE,OAAO,OAAO,CAAC;AAAA,UAC9D;AACA,cAAI,QAAQ,SAAS;AACnB,qBAAS,OAAO,GAAG,OAAOA,OAAM,QAAQ,QAAQ;AAC9C,kBAAI,WAAWA,OAAM,IAAI;AACzB,kBAAI,sBAAsB,QAAQ,KAAK,CAAC,QAAQ,SAAS,QAAQ,GAAG;AAClE,wBAAQ,KAAK,WAAW,OAAO,YAAY,KAAK,QAAQ,IAAI,GAAG;AAAA,cACjE;AAAA,YACF;AAAA,UACF;AACA,cAAI,QAAQ,QAAQ;AAClB,iBAAK,KAAK,OAAO;AACjB,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,qCAAqC;AACzC,iBAAS,yBAAyB,MAAM;AACtC,cAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AACnF,cAAI,wBAAwB,QAAQ,eAAe,gBAAgB,0BAA0B,SAAS,OAAO,uBAAuB,uBAAuB,QAAQ,aAAa,cAAc,yBAAyB,SAAS,CAAC,IAAI;AACrO,cAAI8D,WAAU,KAAK,SAAS,YAAY;AACxC,cAAI,YAAY,IAAI,SAAS,GAAG;AAC9B,mBAAO,EAAE,YAAY;AAAA,UACvB,CAAC,EAAE,SAASA,QAAO,GAAG;AACpB,mBAAO;AAAA,UACT;AACA,cAAI,iBAAiB,oCAAoC,MAAM,aAAa;AAC5E,cAAI,eAAe,QAAQ;AACzB,iBAAK,KAAK,cAAc;AACxB,gBAAI,CAAC,mBAAmB,MAAM,IAAI,GAAG;AACnC,qBAAO;AAAA,YACT;AACA,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,qCAAqC;AACzC,iBAAS,yBAAyB,MAAM,SAAS;AAC/C,oBAAU,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAC;AAC9C,cAAI,OAAO,KAAK,aAAa,mBAAmB;AAChD,cAAI,UAAU,KAAK,aAAa,mBAAmB;AACnD,cAAI,SAAS,KAAK,aAAa,cAAc;AAC7C,cAAI,cAAc,KAAK,aAAa,cAAc;AAClD,cAAI,CAAC,eAAe,WAAW,SAAS;AACtC,mBAAO;AAAA,UACT;AACA,cAAI,MAAM,uBAAuB,IAAI;AACrC,mBAAS,mBAAmB,OAAO;AACjC,gBAAI,MAAM,KAAK,MAAM,IAAI;AACvB,qBAAO,kBAAkB,UAAU,mBAAmB,EAAE;AAAA,YAC1D;AACA,gBAAI,QAAQ,SAAS,IAAI,eAAe,KAAK;AAC7C,gBAAI,OAAO;AACT,qBAAO,MAAM,aAAa,MAAM,MAAM,WAAW,MAAM,aAAa,WAAW,MAAM,eAAe,MAAM,aAAa,WAAW,MAAM,YAAY,mBAAmB,KAAK,aAAa,kBAAkB,CAAC,EAAE,QAAQ,KAAK,IAAI;AAAA,YACjO;AACA;AAAA,UACF;AACA,cAAI,QAAQ,QAAQ,IAAI,MAAM,MAAM,SAAS;AAC3C,iBAAK,KAAK,mBAAmB,IAAI,CAAC;AAClC,mBAAO,mBAAmB,IAAI;AAAA,UAChC;AACA,iBAAO;AAAA,QACT;AACA,YAAI,qCAAqC;AACzC,iBAAS,uBAAuB,MAAM,SAAS,aAAa;AAC1D,iBAAO,YAAY,KAAK,aAAa,MAAM;AAAA,QAC7C;AACA,YAAI,oCAAoC;AACxC,iBAAS,2BAA2B,MAAM;AACxC,cAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AACnF,cAAI,cAAc,UAAU,SAAS,IAAI,UAAU,CAAC,IAAI;AACxD,cAAI,wBAAwB,QAAQ,0BAA0B,2BAA2B,0BAA0B,SAAS,CAAC,IAAI;AACjI,cAAI,iBAAiB,oBAAoB,aAAa,wBAAwB;AAC9E,cAAI,aAAa,eAAe,OAAO,SAAS,UAAU;AACxD,gBAAI,CAAC,YAAY,UAAU,SAAS,QAAQ,GAAG;AAC7C,qBAAO;AAAA,YACT;AACA,mBAAO,iBAAiB,YAAY,KAAK,QAAQ,CAAC,MAAM;AAAA,UAC1D,CAAC;AACD,cAAI,WAAW,WAAW,GAAG;AAC3B,mBAAO;AAAA,UACT;AACA,eAAK,KAAK,UAAU;AACpB,cAAI,iBAAiB,iBAAiB,qBAAqB,WAAW,CAAC,MAAM;AAC7E,iBAAO,iBAAiB,SAAS;AAAA,QACnC;AACA,iBAAS,oBAAoB,aAAa,0BAA0B;AAClE,cAAI,OAAO,iBAAiB,WAAW;AACvC,cAAI,WAAW,kBAAkB,UAAU,IAAI;AAC/C,cAAI,UAAU;AACZ,mBAAO,SAAS,mBAAmB,CAAC;AAAA,UACtC;AACA,cAAI,YAAY,YAAY,MAAM;AAClC,cAAI,yBAAyB,SAAS,SAAS,GAAG;AAChD,mBAAO,CAAC;AAAA,UACV;AACA,iBAAO,CAAE,cAAc,iBAAkB;AAAA,QAC3C;AACA,YAAI,wCAAwC;AAC5C,YAAI,oBAAoB,CAAC;AACzB,QAAAzR,UAAS,mBAAmB;AAAA,UAC1B,oBAAoB,SAAS6R,sBAAqB;AAChD,mBAAO;AAAA,UACT;AAAA,UACA,uCAAuC,SAASC,yCAAwC;AACtF,mBAAO;AAAA,UACT;AAAA,UACA,gBAAgB,SAASC,kBAAiB;AACxC,mBAAO;AAAA,UACT;AAAA,UACA,0BAA0B,SAASC,4BAA2B;AAC5D,mBAAO;AAAA,UACT;AAAA,UACA,oBAAoB,SAASC,sBAAqB;AAChD,mBAAO;AAAA,UACT;AAAA,UACA,mBAAmB,SAASC,qBAAoB;AAC9C,mBAAO;AAAA,UACT;AAAA,QACF,CAAC;AACD,iBAAS,yBAAyB,MAAM;AACtC,cAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AACnF,cAAI,cAAc,UAAU,SAAS,IAAI,UAAU,CAAC,IAAI;AACxD,cAAI,UAAU,CAAC;AACf,cAAIvE,SAAQ,YAAY;AACxB,cAAIA,OAAM,QAAQ;AAChB,gBAAI,OAAO,0BAA0B,WAAW;AAChD,gBAAI,WAAW,sBAAsB,IAAI;AACzC,gBAAI,UAAU,yBAAyB,WAAW;AAClD,gBAAI,MAAM,QAAQ,QAAQ,IAAI,CAAC,GAAG;AAChC,yBAAW,qBAAqB,QAAQ,IAAI,GAAG,QAAQ;AAAA,YACzD;AACA,gBAAI,QAAQ,UAAU;AACpB,uBAAS,OAAO,GAAG,IAAI,SAAS,QAAQ,OAAO,GAAG,QAAQ;AACxD,oBAAI,OAAO,SAAS,IAAI;AACxB,oBAAI,CAAC,YAAY,KAAK,IAAI,KAAK,EAAE,QAAQ,iBAAiB,OAAO,QAAQ,cAAc,IAAI,MAAM,cAAc;AAC7G,0BAAQ,KAAK,IAAI;AAAA,gBACnB;AAAA,cACF;AAAA,YACF;AAAA,UACF;AACA,cAAI,QAAQ,QAAQ;AAClB,iBAAK,KAAK,OAAO;AACjB,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,sCAAsC;AAC1C,iBAAS,cAAc,aAAa,UAAU;AAC5C,cAAI,aAAa,CAAC;AAClB,cAAI,gBAAgB,0BAA0B,WAAW;AACzD,cAAI,SAAS,SAASwE,QAAOC,OAAM;AACjC,gBAAI,eAAe,cAAcA,KAAI;AACrC,gBAAI,OAAO,iBAAiB,cAAc;AAAA,cACxC,kBAAkB;AAAA,YACpB,CAAC;AACD,gBAAI,CAAC,QAAQ,CAAE,SAAS,UAAW,EAAE,SAAS,IAAI,KAAK,SAAS,KAAK,SAAS,cAAc;AAC1F,qBAAO,iBAAiB;AAAA,YAC1B,CAAC,GAAG;AACF,4BAAc,KAAK,MAAM,eAAe,mBAAmB,aAAa,QAAQ,CAAC;AAAA,YACnF,WAAW,MAAM;AACf,yBAAW,KAAK,IAAI;AAAA,YACtB;AAAA,UACF;AACA,mBAAS,OAAO,GAAG,OAAO,cAAc,QAAQ,QAAQ;AACtD,mBAAO,IAAI;AAAA,UACb;AACA,iBAAO;AAAA,QACT;AACA,iBAAS,wBAAwB,aAAa,MAAM,UAAU,YAAY;AACxE,cAAI,aAAa,SAAS;AAC1B,cAAI,YAAY;AACd,gBAAI,iBAAiB,CAAE,QAAQ,UAAU,SAAS,OAAO,KAAM;AAC/D,gBAAI,YAAY,MAAM,aAAa,WAAW,eAAe,SAAS,YAAY,MAAM,IAAI,KAAK,WAAW,SAAS,WAAW,GAAG;AACjI,yBAAW,SAAS,OAAO,SAAS,cAAc;AAChD,uBAAO,iBAAiB;AAAA,cAC1B,CAAC;AAAA,YACH;AACA,gBAAI,qBAAqB,CAAE,WAAW,QAAQ,QAAQ,QAAS;AAC/D,gBAAI,gBAAgB,YAAY,KAAK,eAAe;AACpD,gBAAI,WAAW,iBAAiB,cAAc,YAAY,MAAM;AAChE,gBAAI,aAAa,YAAY,KAAK,eAAe,KAAK,WAAW,YAAY;AAC7E,uBAAW,SAAS,OAAO,SAAS,cAAc;AAChD,qBAAO,CAAC,mBAAmB,SAAS,YAAY,KAAK,YAAY,iBAAiB;AAAA,YACpF,CAAC;AAAA,UACH;AACA,mBAAS,OAAO,GAAG,OAAO,WAAW,QAAQ,QAAQ;AACnD,gBAAI,YAAY,WAAW,IAAI;AAC/B,gBAAI,SAAS,SAAS,SAAS,GAAG;AAChC,yBAAW,SAAS,OAAO,SAAS,cAAc;AAChD,uBAAO,iBAAiB;AAAA,cAC1B,CAAC;AACD,kBAAI,CAAC,YAAY;AACf,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AACA,cAAI,SAAS,QAAQ;AACnB,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,iBAAS,6BAA6B,MAAM,SAAS,aAAa;AAChE,cAAI,cAAc,WAAW,MAAM,QAAQ,QAAQ,WAAW,IAAI,QAAQ,cAAc,CAAC;AACzF,cAAI,OAAO,0BAA0B,aAAa;AAAA,YAChD,MAAM;AAAA,UACR,CAAC;AACD,cAAI,WAAW,uBAAuB,IAAI;AAC1C,cAAI,aAAa,MAAM;AACrB,mBAAO;AAAA,UACT;AACA,cAAI,aAAa,cAAc,aAAa,QAAQ;AACpD,cAAI,UAAU,wBAAwB,aAAa,MAAM,UAAU,UAAU;AAC7E,cAAI,CAAC,SAAS;AACZ,mBAAO;AAAA,UACT;AACA,eAAK,KAAK,OAAO;AACjB,cAAI,YAAY,SAAS,IAAI,KAAK,CAAC,4BAA4B,aAAa,OAAO,IAAI,KAAK,CAAC,WAAW,WAAW,CAAC,YAAY,QAAQ,WAAW,KAAK,CAAC,eAAe,MAAM,WAAW,EAAE,SAAS;AAClM,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,0CAA0C;AAC9C,iBAAS,kBAAkB,aAAa,eAAe,YAAY,gBAAgB;AACjF,cAAI,gBAAgB,0BAA0B,WAAW;AACzD,cAAI,CAAC,YAAY;AACf,yBAAa,yBAAyB,aAAa;AAAA,UACrD;AACA,cAAI,CAAC,YAAY;AACf,mBAAO;AAAA,UACT;AACA,cAAI,QAAQ,iBAAiB,cAAc,YAAY;AACvD,iBAAO,OAAO;AACZ,gBAAI,aAAa,iBAAiB,KAAK;AACvC,gBAAI,WAAW,SAAS,OAAO,KAAK,eAAe,SAAS;AAC1D,kBAAI,cAAc,SAAS,aAAa,GAAG;AACzC,2BAAW,KAAK,aAAa;AAAA,cAC/B;AACA,sBAAQ,MAAM;AACd;AAAA,YACF;AACA,gBAAI,WAAW,SAAS,UAAU,GAAG;AACnC,qBAAO;AAAA,YACT,WAAW,cAAc,CAAC,CAAE,gBAAgB,MAAO,EAAE,SAAS,UAAU,GAAG;AACzE,qBAAO;AAAA,YACT;AACA,oBAAQ,MAAM;AAAA,UAChB;AACA,iBAAO;AAAA,QACT;AACA,iBAAS,cAAc,SAAS;AAC9B,cAAI,SAAS,CAAC,GAAG,IAAI;AACrB,iBAAO,SAAS;AACd,gBAAI,QAAQ,aAAa,IAAI,GAAG;AAC9B,kBAAI7P,MAAK,wBAAwB,QAAQ,aAAa,IAAI,CAAC;AAC3D,kBAAI,MAAM,uBAAuB,OAAO;AACxC,kBAAI,IAAI,cAAc,eAAe,OAAOA,KAAI,GAAG,CAAC;AACpD,kBAAI,GAAG;AACL,uBAAO,KAAK,CAAC;AAAA,cACf;AAAA,YACF;AACA,sBAAU,QAAQ;AAAA,UACpB;AACA,iBAAO,OAAO,SAAS,SAAS;AAAA,QAClC;AACA,iBAAS,2BAA2B,MAAM,SAAS,aAAa;AAC9D,cAAI,gBAAgB,WAAW,MAAM,QAAQ,QAAQ,aAAa,IAAI,QAAQ,gBAAgB,CAAC;AAC/F,cAAI,iBAAiB,kBAAkB,aAAa,aAAa;AACjE,cAAI,CAAC,gBAAgB;AACnB,mBAAO;AAAA,UACT;AACA,cAAI,SAAS,cAAc,IAAI;AAC/B,cAAI,QAAQ;AACV,qBAAS,OAAO,GAAG,IAAI,OAAO,QAAQ,OAAO,GAAG,QAAQ;AACtD,+BAAiB,kBAAkB,2BAA2B,OAAO,IAAI,CAAC,GAAG,eAAe,gBAAgB,IAAI;AAChH,kBAAI,CAAC,gBAAgB;AACnB,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AACA,eAAK,KAAK,cAAc;AACxB,iBAAO;AAAA,QACT;AACA,YAAI,wCAAwC;AAC5C,iBAAS,4BAA4B,MAAM;AACzC,cAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AACnF,cAAI,OAAO,iBAAiB,IAAI;AAChC,cAAI,iBAAiB,QAAQ,kBAAkB,CAAC;AAChD,cAAI,eAAe,SAAS,IAAI,GAAG;AACjC,mBAAO;AAAA,UACT;AACA,cAAI,QAAQ,SAAS,kBAAkB,SAAS,QAAQ;AACtD,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,wCAAwC;AAC5C,iBAAS,4BAA4B,MAAM,SAAS,aAAa;AAC/D,cAAI,mBAAmB,YAAY,UAAU,OAAO,SAAS,MAAM;AACjE,gBAAIkL,aAAY,kBAAkB,UAAU,IAAI;AAChD,gBAAI,CAAC,sBAAsB,IAAI,GAAG;AAChC,qBAAO;AAAA,YACT;AACA,gBAAI,eAAeA,WAAU;AAC7B,gBAAI,QAAQ,YAAY,MAAM,UAAU;AACtC,qBAAO,CAAC,CAAC;AAAA,YACX;AACA,mBAAO,CAAC,iBAAiB,MAAM,aAAa,UAAU;AAAA,UACxD,CAAC;AACD,cAAI,iBAAiB,QAAQ;AAC3B,iBAAK,KAAK,gBAAgB;AAC1B,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,yCAAyC;AAC7C,iBAAS,sBAAsB,MAAM,SAAS;AAC5C,oBAAU,MAAM,QAAQ,QAAQ,KAAK,IAAI,QAAQ,QAAQ,CAAC;AAC1D,cAAI,UAAU,CAAC,GAAG,SAAS;AAC3B,cAAI,MAAME,SAAQ,4BAA4B,IAAI;AAClD,mBAASnN,KAAI,GAAG,IAAImN,OAAM,QAAQnN,KAAI,GAAGA,MAAK;AAC5C,mBAAOmN,OAAMnN,EAAC,EAAE;AAChB,gBAAI,QAAQ,QAAQ,IAAI,MAAM,MAAM,OAAO,KAAK,IAAI,KAAK,CAAC,sBAAsB,IAAI,GAAG;AACrF,sBAAQ,KAAK,IAAI;AAAA,YACnB;AAAA,UACF;AACA,cAAI,QAAQ,QAAQ;AAClB,iBAAK,KAAK,OAAO;AACjB,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,mCAAmC;AACvC,iBAAS,2BAA2B,MAAM,SAAS;AACjD,oBAAU,MAAM,QAAQ,QAAQ,KAAK,IAAI,QAAQ,QAAQ,CAAC;AAC1D,cAAI,cAAc;AAClB,cAAI,aAAa;AACjB,cAAI,UAAU,CAAC;AACf,cAAI,SAAS;AACb,cAAImN,SAAQ,4BAA4B,IAAI;AAC5C,cAAI,YAAY,CAAE,mBAAoB;AACtC,cAAI,YAAY;AAAA,YACd,iBAAiB,SAAS,eAAe;AACvC,qBAAO,KAAK,aAAa,eAAe,MAAM,WAAW,KAAK,aAAa,eAAe,MAAM;AAAA,YAClG;AAAA,YACA,gBAAgB,SAAS,cAAc;AACrC,kBAAI,CAAC,4BAA4B,MAAM,cAAc,GAAG;AACtD,8BAAc,iBAAiB,OAAO,KAAK,aAAa,cAAc,GAAG,GAAG;AAC5E,6BAAa;AAAA,cACf;AACA;AAAA,YACF;AAAA,YACA,aAAa,SAAS,WAAW;AAC/B,qBAAO,KAAK,aAAa,eAAe,MAAM;AAAA,YAChD;AAAA,YACA,oBAAoB,SAAS,kBAAkB;AAC7C,kBAAI,CAAC,4BAA4B,MAAM,kBAAkB,GAAG;AAC1D,8BAAc,qBAAqB,OAAO,KAAK,aAAa,kBAAkB,GAAG,GAAG;AACpF,6BAAa;AAAA,cACf;AACA;AAAA,YACF;AAAA,YACA,mBAAmB,SAAS,iBAAiB;AAC3C,kBAAI,CAAC,4BAA4B,MAAM,iBAAiB,GAAG;AACzD,8BAAc,oBAAoB,OAAO,KAAK,aAAa,iBAAiB,GAAG,GAAG;AAClF,6BAAa;AAAA,cACf;AAAA,YACF;AAAA,UACF;AACA,mBAAS,OAAO,GAAG,IAAIA,OAAM,QAAQ,OAAO,GAAG,QAAQ;AACrD,gBAAI,OAAOA,OAAM,IAAI;AACrB,gBAAI,WAAW,KAAK;AACpB,gBAAI,CAAC,UAAU,SAAS,QAAQ,KAAK,QAAQ,QAAQ,QAAQ,MAAM,MAAM,OAAO,KAAK,QAAQ,MAAM,UAAU,QAAQ,IAAI,UAAU,QAAQ,EAAE,IAAI,SAAS,CAAC,4BAA4B,MAAM,QAAQ,GAAG;AACtM,sBAAQ,KAAK,GAAG,OAAO,UAAU,IAAI,EAAE,OAAO,KAAK,WAAW,GAAG,CAAC;AAAA,YACpE;AAAA,UACF;AACA,cAAI,aAAa;AACf,iBAAK,KAAK;AAAA,cACR;AAAA,cACA;AAAA,YACF,CAAC;AACD,mBAAO;AAAA,UACT;AACA,cAAI,QAAQ,QAAQ;AAClB,iBAAK,KAAK,OAAO;AACjB,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,yCAAyC;AAC7C,iBAAS,qBAAqB,MAAM,SAAS,aAAa;AACxD,iBAAO,mBAAmB,YAAY,KAAK,MAAM,CAAC,EAAE,SAAS;AAAA,QAC/D;AACA,YAAI,gCAAgC;AACpC,iBAAS,+BAA+B,MAAM,SAAS,aAAa;AAClE,cAAI,cAAc,8BAA8B,EAAE,OAAO,SAAS,MAAM;AACtE,mBAAO,YAAY,QAAQ,IAAI;AAAA,UACjC,CAAC;AACD,eAAK,KAAK,WAAW;AACrB,iBAAO,YAAY,SAAS;AAAA,QAC9B;AACA,YAAI,6CAA6C;AACjD,iBAAS,sBAAsB,MAAM;AACnC,cAAI,OAAO,KAAK,aAAa,MAAM;AACnC,cAAI,SAAS,MAAM;AACjB,mBAAO;AAAA,UACT;AACA,cAAI,WAAW,sBAAsB,IAAI;AACzC,iBAAO,aAAa,YAAY,aAAa;AAAA,QAC/C;AACA,YAAI,mCAAmC;AACvC,iBAAS,oBAAoB,MAAM,SAAS,aAAa;AACvD,cAAI,WAAW,mBAAmB,YAAY,KAAK,MAAM,CAAC;AAC1D,cAAI,aAAa,SAAS,MAAM,SAAS,MAAM;AAC7C,mBAAO,CAAC,sBAAsB,MAAM;AAAA,cAClC,eAAe;AAAA,YACjB,CAAC;AAAA,UACH,CAAC;AACD,cAAI,YAAY;AACd,iBAAK,KAAK,QAAQ;AAClB,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,+BAA+B;AACnC,iBAAS,2BAA2B,MAAM,SAAS,aAAa;AAC9D,iBAAO,qBAAqB,WAAW;AAAA,QACzC;AACA,YAAI,wCAAwC;AAC5C,iBAAS,gCAAgC,MAAM,SAAS,aAAa;AACnE,cAAI,OAAO,iBAAiB,aAAa;AAAA,YACvC,YAAY;AAAA,UACd,CAAC;AACD,eAAK,KAAK,IAAI;AACd,cAAI;AACJ,cAAI;AACJ,cAAI;AACF,qBAAS,iBAAiB,mBAAmB,WAAW,CAAC,EAAE,YAAY;AACvE,sBAAU,iBAAiB,gCAAgC,WAAW,CAAC,EAAE,YAAY;AAAA,UACvF,SAAS,GAAG;AACV,mBAAO;AAAA,UACT;AACA,cAAI,CAAC,WAAW,CAAC,QAAQ;AACvB,mBAAO;AAAA,UACT;AACA,cAAI,CAAC,WAAW,QAAQ;AACtB,mBAAO;AAAA,UACT;AACA,cAAI,CAAC,QAAQ,SAAS,MAAM,GAAG;AAC7B,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,8CAA8C;AAClD,iBAAS,wBAAwB,MAAM,SAAS,aAAa;AAC3D,iBAAO,4BAA4B,iBAAiB,WAAW,CAAC;AAAA,QAClE;AACA,YAAI,mCAAmC;AACvC,YAAI,yCAAyC;AAAA,UAC3C,SAAS;AAAA,UACT,OAAO;AAAA,UACP,KAAK;AAAA,UACL,SAAS;AAAA,QACX;AACA,YAAI,qCAAqC;AAAA,UACvC,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,eAAe;AAAA,UACf,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,YAAY;AAAA,UACZ,QAAQ;AAAA,UACR,QAAQ;AAAA,QACV;AACA,iBAAS,uBAAuB,MAAM;AACpC,cAAI,YAAY,KAAK,SAAS,YAAY;AAC1C,iBAAO,uCAAuC,SAAS,KAAK;AAAA,QAC9D;AACA,iBAAS,oBAAoB,MAAM,SAAS;AAC1C,cAAI,OAAO,0BAA0B,IAAI;AACzC,cAAI,CAAC,MAAM;AACT,mBAAO;AAAA,UACT;AACA,iBAAO,mCAAmC,IAAI,KAAK,QAAQ,MAAM,SAAS,IAAI,KAAK;AAAA,QACrF;AACA,iBAAS,iCAAiC,MAAM,SAAS;AACvD,iBAAO,oBAAoB,MAAM,OAAO,KAAK,uBAAuB,IAAI;AAAA,QAC1E;AACA,YAAI,8CAA8C;AAClD,YAAI,gBAAgB,CAAC;AACrB,QAAA3N,UAAS,eAAe;AAAA,UACtB,aAAa,SAASqS,eAAc;AAClC,mBAAO;AAAA,UACT;AAAA,UACA,iBAAiB,SAASC,mBAAkB;AAC1C,mBAAO;AAAA,UACT;AAAA,UACA,YAAY,SAASC,cAAa;AAChC,mBAAO;AAAA,UACT;AAAA,UACA,UAAU,SAASC,YAAW;AAC5B,mBAAO;AAAA,UACT;AAAA,UACA,gBAAgB,SAASC,kBAAiB;AACxC,mBAAO;AAAA,UACT;AAAA,UACA,YAAY,SAASC,cAAa;AAChC,mBAAO;AAAA,UACT;AAAA,UACA,aAAa,SAASC,eAAc;AAClC,mBAAO;AAAA,UACT;AAAA,UACA,UAAU,SAASC,YAAW;AAC5B,mBAAO;AAAA,UACT;AAAA,UACA,aAAa,SAASC,eAAc;AAClC,mBAAO;AAAA,UACT;AAAA,UACA,SAAS,SAAS7J,WAAU;AAC1B,mBAAO;AAAA,UACT;AAAA,UACA,QAAQ,SAAS8J,UAAS;AACxB,mBAAO;AAAA,UACT;AAAA,UACA,UAAU,SAASC,YAAW;AAC5B,mBAAO;AAAA,UACT;AAAA,QACF,CAAC;AACD,iBAAS,YAAY,UAAU;AAC7B,cAAI,UAAU,WAAW,WAAW;AACpC,cAAI,QAAQ,CAAC;AACb,eAAK,WAAW,GAAG,YAAY,SAAS,KAAK,QAAQ,WAAW,WAAW,YAAY;AACrF,iBAAK,YAAY,GAAG,aAAa,SAAS,KAAK,QAAQ,EAAE,MAAM,QAAQ,YAAY,YAAY,aAAa;AAC1G,oBAAM,KAAK,SAAS,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAAA,YACrD;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AACA,YAAI,wBAAwB;AAC5B,iBAAS,mBAAmB,YAAY,UAAU,WAAW;AAC3D,cAAI,WAAW,eAAe,QAAQ,gBAAgB;AACtD,cAAI,YAAY,eAAe,QAAQ,wBAAwB;AAC/D,cAAI,YAAY,UAAU,SAAS,CAAC,EAAE,SAAS,CAAC;AAChD,cAAI,UAAU,UAAU,UAAU;AAClC,cAAI,cAAc,UAAU,aAAa,SAAS;AAClD,cAAI,eAAe,SAAS,WAAW,MAAM,KAAK,UAAU,YAAY,IAAI,UAAU,SAAS,UAAU;AACzG,cAAI,UAAU,eAAe;AAC7B,cAAI,WAAW,SAAS,IAAI;AAC5B,cAAI,WAAW,SAAS,IAAI;AAC5B,cAAI,SAAS,eAAe,QAAQ,SAAS,IAAI;AACjD,cAAI,SAAS,eAAe,QAAQ,IAAI,SAAS;AACjD,cAAI;AACJ,cAAI,QAAQ,CAAC;AACb,mBAAS,MAAM,UAAU,OAAO,UAAU,CAAC,SAAS,OAAO;AACzD,qBAAS,MAAM,UAAU,OAAO,QAAQ,OAAO;AAC7C,kBAAI,OAAO,UAAU,GAAG,IAAI,UAAU,GAAG,EAAE,GAAG,IAAI;AAClD,kBAAI,CAAC,MAAM;AACT;AAAA,cACF;AACA,kBAAI,QAAQ,IAAI,MAAM,gBAAgB,IAAI;AAC1C,kBAAI,MAAM,QAAQ,GAAG;AACnB,0BAAU,MAAM,QAAQ;AACxB;AAAA,cACF;AACA,oBAAM,KAAK,IAAI;AAAA,YACjB;AAAA,UACF;AACA,qBAAW,WAAW,CAAC,GAAG,OAAO,MAAM,OAAO,SAAS,CAAC;AACxD,gBAAM,QAAQ,SAAS,WAAW;AAChC,gBAAIC,SAAQ,IAAI,MAAM,gBAAgB,SAAS;AAC/C,YAAAA,OAAM,QAAQ,IAAI;AAAA,UACpB,CAAC;AACD,iBAAO;AAAA,QACT;AACA,iBAAS,WAAW,MAAM,WAAW;AACnC,cAAI,KAAK,aAAa,SAAS,GAAG;AAChC,gBAAI,UAAU,eAAe,MAAM,SAAS;AAC5C,gBAAI,QAAQ,OAAO,SAAS,QAAQ;AAClC,qBAAO;AAAA,YACT,CAAC,EAAE,QAAQ;AACT,qBAAO;AAAA,YACT;AAAA,UACF;AACA,cAAI,CAAC,WAAW;AACd,wBAAY,gBAAgB,gBAAgB,MAAM,OAAO,CAAC;AAAA,UAC5D;AACA,cAAI,WAAW,0BAA0B,MAAM,SAAS;AACxD,cAAI,aAAa,mBAAmB,OAAO,UAAU,SAAS;AAC9D,cAAI,aAAa,mBAAmB,OAAO,UAAU,SAAS;AAC9D,iBAAO,CAAC,EAAE,OAAO,YAAY,UAAU,EAAE,QAAQ;AAAA,QACnD;AACA,YAAI,sBAAsB;AAC1B,iBAAS,WAAW,MAAM;AACxB,cAAI,CAAC,KAAK,SAAS,UAAU,CAAC,KAAK,YAAY,KAAK,GAAG;AACrD,mBAAO;AAAA,UACT;AACA,cAAI,OAAO,KAAK,aAAa,MAAM;AACnC,cAAI,sBAAsB,IAAI,GAAG;AAC/B,mBAAO,CAAE,QAAQ,UAAW,EAAE,SAAS,IAAI;AAAA,UAC7C,OAAO;AACL,mBAAO,KAAK,SAAS,YAAY,MAAM;AAAA,UACzC;AAAA,QACF;AACA,YAAI,uBAAuB;AAC3B,iBAAS,YAAY,MAAM;AACzB,cAAI,QAAQ,KAAK,aAAa,MAAM,KAAK,IAAI,YAAY;AACzD,eAAK,SAAS,kBAAkB,SAAS,WAAW,CAAC,qBAAqB,IAAI,GAAG;AAC/E,mBAAO;AAAA,UACT;AACA,cAAI,KAAK,aAAa,iBAAiB,MAAM,UAAU,gBAAgB,MAAM,0BAA0B,GAAG;AACxG,mBAAO;AAAA,UACT;AACA,cAAI,SAAS,UAAU,SAAS,cAAc,SAAS,SAAS;AAC9D,mBAAO;AAAA,UACT;AACA,cAAI,sBAAsB,IAAI,MAAM,YAAY;AAC9C,mBAAO;AAAA,UACT;AACA,cAAI,KAAK,aAAa,WAAW,MAAM,KAAK;AAC1C,mBAAO;AAAA,UACT;AACA,cAAI,KAAK,aAAa,SAAS,GAAG;AAChC,mBAAO;AAAA,UACT;AACA,cAAI,KAAK,SAAS,KAAK,SAAS,KAAK,SAAS;AAC5C,mBAAO;AAAA,UACT;AACA,mBAAS,aAAa,GAAG,cAAc,KAAK,SAAS,QAAQ,aAAa,aAAa,cAAc;AACnG,gBAAI,KAAK,SAAS,UAAU,EAAE,SAAS,YAAY,MAAM,YAAY;AACnE,qBAAO;AAAA,YACT;AAAA,UACF;AACA,cAAI,QAAQ;AACZ,cAAI,YAAY,KAAK,KAAK;AAC1B,cAAI,KAAK;AACT,cAAI,YAAY;AAChB,mBAAS,WAAW,GAAG,WAAW,WAAW,YAAY;AACvD,kBAAM,KAAK,KAAK,QAAQ;AACxB,qBAAS,YAAY,GAAG,aAAa,IAAI,MAAM,QAAQ,YAAY,YAAY,aAAa;AAC1F,qBAAO,IAAI,MAAM,SAAS;AAC1B,kBAAI,KAAK,SAAS,YAAY,MAAM,MAAM;AACxC,uBAAO;AAAA,cACT;AACA,kBAAI,CAAC,cAAc,KAAK,gBAAgB,KAAK,eAAe,KAAK,iBAAiB,KAAK,eAAe;AACpG,4BAAY;AAAA,cACd;AACA,kBAAI,KAAK,aAAa,OAAO,KAAK,KAAK,aAAa,SAAS,KAAK,KAAK,aAAa,MAAM,GAAG;AAC3F,uBAAO;AAAA,cACT;AACA,kBAAI,CAAE,gBAAgB,WAAY,EAAE,UAAU,KAAK,aAAa,MAAM,KAAK,IAAI,YAAY,CAAC,GAAG;AAC7F,uBAAO;AAAA,cACT;AACA,kBAAI,KAAK,SAAS,WAAW,KAAK,KAAK,SAAS,CAAC,EAAE,SAAS,YAAY,MAAM,QAAQ;AACpF,uBAAO;AAAA,cACT;AACA;AAAA,YACF;AAAA,UACF;AACA,cAAI,KAAK,qBAAqB,OAAO,EAAE,QAAQ;AAC7C,mBAAO;AAAA,UACT;AACA,cAAI,YAAY,GAAG;AACjB,mBAAO;AAAA,UACT;AACA,cAAI,YAAY,KAAK,KAAK,KAAK,KAAK,YAAY,CAAC,CAAC;AAClD,cAAI,UAAU,MAAM,WAAW,KAAK,UAAU,MAAM,CAAC,EAAE,YAAY,GAAG;AACpE,mBAAO;AAAA,UACT;AACA,cAAI,UAAU,MAAM,UAAU,GAAG;AAC/B,mBAAO;AAAA,UACT;AACA,cAAI,WAAW;AACb,mBAAO;AAAA,UACT;AACA,cAAI,SAAS;AACb,eAAK,WAAW,GAAG,WAAW,WAAW,YAAY;AACnD,kBAAM,KAAK,KAAK,QAAQ;AACxB,gBAAI,WAAW,YAAYvU,QAAO,iBAAiB,GAAG,EAAE,iBAAiB,kBAAkB,GAAG;AAC5F,qBAAO;AAAA,YACT,OAAO;AACL,wBAAUA,QAAO,iBAAiB,GAAG,EAAE,iBAAiB,kBAAkB;AAAA,YAC5E;AACA,gBAAI,WAAW,YAAYA,QAAO,iBAAiB,GAAG,EAAE,iBAAiB,kBAAkB,GAAG;AAC5F,qBAAO;AAAA,YACT,OAAO;AACL,wBAAUA,QAAO,iBAAiB,GAAG,EAAE,iBAAiB,kBAAkB;AAAA,YAC5E;AAAA,UACF;AACA,cAAI,aAAa,IAAI;AACnB,mBAAO;AAAA,UACT;AACA,cAAI,gCAAgC,IAAI,EAAE,QAAQ,0BAA0BA,OAAM,EAAE,QAAQ,MAAK;AAC/F,mBAAO;AAAA,UACT;AACA,cAAI,QAAQ,IAAI;AACd,mBAAO;AAAA,UACT;AACA,cAAI,KAAK,cAAc,+BAA+B,GAAG;AACvD,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,wBAAwB;AAC5B,iBAAS,SAAS,MAAM;AACtB,cAAI,yBAAyB,IAAI,KAAK,sBAAsB,IAAI,GAAG;AACjE,mBAAO;AAAA,UACT;AACA,cAAI,KAAK,aAAa,IAAI,GAAG;AAC3B,gBAAI8D,MAAK,wBAAwB,KAAK,aAAa,IAAI,CAAC;AACxD,mBAAO,CAAC,CAAC5D,UAAS,cAAc,cAAc,OAAO4D,KAAI,IAAI,CAAC;AAAA,UAChE;AACA,iBAAO;AAAA,QACT;AACA,YAAI,oBAAoB;AACxB,iBAAS,cAAc,KAAK,UAAU,WAAW,UAAU;AACzD,cAAI;AACJ,cAAI,OAAO,UAAU,SAAS,CAAC,IAAI,UAAU,SAAS,CAAC,EAAE,SAAS,CAAC,IAAI;AACvE,cAAI,CAAC,MAAM;AACT,mBAAO,CAAC;AAAA,UACV;AACA,cAAI,OAAO,aAAa,YAAY;AAClC,qBAAS,SAAS,MAAM,UAAU,SAAS;AAC3C,gBAAI,WAAW,MAAM;AACnB,qBAAO,CAAE,IAAK;AAAA,YAChB;AAAA,UACF;AACA,mBAAS,cAAc,KAAK;AAAA,YAC1B,GAAG,SAAS,IAAI,IAAI;AAAA,YACpB,GAAG,SAAS,IAAI,IAAI;AAAA,UACtB,GAAG,WAAW,QAAQ;AACtB,iBAAO,QAAQ,IAAI;AACnB,iBAAO;AAAA,QACT;AACA,iBAASwQ,UAAS,KAAK,UAAU,WAAW,UAAU;AACpD,cAAI,MAAM,QAAQ,QAAQ,GAAG;AAC3B,uBAAW;AACX,wBAAY;AACZ,uBAAW;AAAA,cACT,GAAG;AAAA,cACH,GAAG;AAAA,YACL;AAAA,UACF;AACA,cAAI,OAAO,QAAQ,UAAU;AAC3B,oBAAQ,KAAK;AAAA,cACZ,KAAK;AACJ,sBAAM;AAAA,kBACJ,GAAG;AAAA,kBACH,GAAG;AAAA,gBACL;AACA;AAAA,cAED,KAAK;AACJ,sBAAM;AAAA,kBACJ,GAAG;AAAA,kBACH,GAAG;AAAA,gBACL;AACA;AAAA,cAED,KAAK;AACJ,sBAAM;AAAA,kBACJ,GAAG;AAAA,kBACH,GAAG;AAAA,gBACL;AACA;AAAA,cAED,KAAK;AACJ,sBAAM;AAAA,kBACJ,GAAG;AAAA,kBACH,GAAG;AAAA,gBACL;AACA;AAAA,YACF;AAAA,UACF;AACA,iBAAO,cAAc,KAAK;AAAA,YACxB,GAAG,SAAS,IAAI,IAAI;AAAA,YACpB,GAAG,SAAS,IAAI,IAAI;AAAA,UACtB,GAAG,WAAW,QAAQ;AAAA,QACxB;AACA,YAAI,mBAAmBA;AACvB,iBAAS,qBAAqB,MAAM;AAClC,cAAI,SAAS,gBAAgB,IAAI;AACjC,cAAI,WAAW,OAAO,CAAC;AACvB,cAAI,OAAO,UAAU,KAAK,SAAS,UAAU,KAAK,KAAK,KAAK,UAAU,GAAG;AACvE,mBAAO;AAAA,UACT;AACA,iBAAO,SAAS,OAAO,SAAS,KAAK,MAAMvS,IAAG;AAC5C,mBAAO,OAAO,SAAS,SAASA,KAAI,CAAC,KAAK,SAASA,KAAI,CAAC,MAAM;AAAA,UAChE,GAAG,KAAK;AAAA,QACV;AACA,YAAI,iCAAiC;AACrC,iBAAS,mBAAmB,MAAM;AAChC,cAAI,CAAC,iBAAiB7B,SAAQ,GAAG;AAC/B,mBAAO;AAAA,UACT;AACA,iBAAO,KAAK,SAAS,YAAY,MAAM;AAAA,QACzC;AACA,YAAI,+BAA+B;AACnC,iBAAS,2BAA2B,MAAM;AACxC,iBAAO,CAAC,EAAE,KAAK,WAAW,KAAK,YAAY,KAAK,QAAQ,YAAY,MAAM,wBAAwB,KAAK,OAAO,EAAE,YAAY;AAAA,QAC9H;AACA,YAAI,wCAAwC;AAC5C,iBAAS,mBAAmB,MAAM,SAAS;AACzC,cAAI,QAAQ,KAAK,aAAa,OAAO,EAAE,YAAY;AACnD,iBAAO,QAAQ,OAAO,QAAQ,KAAK,MAAM;AAAA,QAC3C;AACA,YAAI,+BAA+B;AACnC,iBAAS,oBAAoB,MAAM;AACjC,cAAI,WAAW,CAAC;AAChB,cAAI,QAAQ,sBAAsB,IAAI;AACtC,cAAI,YAAY,gBAAgB,IAAI;AACpC,gBAAM,QAAQ,SAAS,MAAM;AAC3B,gBAAI,oBAAoB,IAAI,KAAK,qBAAqB,IAAI,KAAK,CAAC,eAAe,IAAI,GAAG;AACpF,kBAAI,aAAa,oBAAoB,MAAM,SAAS,EAAE,KAAK,SAAS,QAAQ;AAC1E,uBAAO,WAAW,QAAQ,CAAC,CAAC,oBAAoB,MAAM;AAAA,cACxD,CAAC;AACD,kBAAI,CAAC,YAAY;AACf,yBAAS,KAAK,IAAI;AAAA,cACpB;AAAA,YACF;AAAA,UACF,CAAC;AACD,cAAI,SAAS,QAAQ;AACnB,iBAAK,aAAa,QAAQ;AAC1B,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,iCAAiC;AACrC,iBAAS,sBAAsB,MAAM;AACnC,cAAI,QAAQ,CAAC;AACb,cAAI,cAAc,CAAC;AACnB,cAAI,WAAW,CAAC;AAChB,mBAAS,WAAW,GAAG,WAAW,KAAK,KAAK,QAAQ,YAAY;AAC9D,gBAAI,MAAM,KAAK,KAAK,QAAQ;AAC5B,qBAAS,YAAY,GAAG,YAAY,IAAI,MAAM,QAAQ,aAAa;AACjE,oBAAM,KAAK,IAAI,MAAM,SAAS,CAAC;AAAA,YACjC;AAAA,UACF;AACA,cAAI,MAAM,MAAM,OAAO,SAAS,MAAM,MAAM;AAC1C,gBAAI,KAAK,aAAa,IAAI,GAAG;AAC3B,mBAAK,KAAK,KAAK,aAAa,IAAI,CAAC;AAAA,YACnC;AACA,mBAAO;AAAA,UACT,GAAG,CAAC,CAAC;AACL,gBAAM,QAAQ,SAAS,MAAM;AAC3B,gBAAI,SAAS;AACb,gBAAI,aAAa;AACjB,gBAAI,CAAC,KAAK,aAAa,SAAS,GAAG;AACjC;AAAA,YACF;AACA,gBAAI,cAAc,KAAK,aAAa,SAAS,EAAE,KAAK;AACpD,gBAAI,CAAC,aAAa;AAChB,qBAAO,YAAY,KAAK,IAAI;AAAA,YAC9B;AACA,gBAAI,UAAU,mBAAmB,WAAW;AAC5C,gBAAI,QAAQ,WAAW,GAAG;AACxB,kBAAI,KAAK,aAAa,IAAI,GAAG;AAC3B,yBAAS,QAAQ,QAAQ,KAAK,aAAa,IAAI,EAAE,KAAK,CAAC,MAAM;AAAA,cAC/D;AACA,2BAAa,QAAQ,KAAK,SAAS,QAAQ;AACzC,uBAAO,CAAC,IAAI,SAAS,MAAM;AAAA,cAC7B,CAAC;AACD,kBAAI,UAAU,YAAY;AACxB,yBAAS,KAAK,IAAI;AAAA,cACpB;AAAA,YACF;AAAA,UACF,CAAC;AACD,cAAI,SAAS,SAAS,GAAG;AACvB,iBAAK,aAAa,QAAQ;AAC1B,mBAAO;AAAA,UACT;AACA,cAAI,YAAY,QAAQ;AACtB,iBAAK,aAAa,WAAW;AAC7B,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,mCAAmC;AACvC,iBAAS,uBAAuB,MAAM;AACpC,cAAI,QAAQ,sBAAsB,IAAI;AACtC,cAAI,cAAc;AAClB,cAAI,gBAAgB,CAAC;AACrB,gBAAM,QAAQ,SAAS,MAAM;AAC3B,gBAAI,WAAW,KAAK,aAAa,SAAS;AAC1C,gBAAI,UAAU;AACZ,8BAAgB,cAAc,OAAO,SAAS,MAAM,KAAK,CAAC;AAAA,YAC5D;AACA,gBAAI,YAAY,KAAK,aAAa,iBAAiB;AACnD,gBAAI,WAAW;AACb,8BAAgB,cAAc,OAAO,UAAU,MAAM,KAAK,CAAC;AAAA,YAC7D;AAAA,UACF,CAAC;AACD,cAAI,UAAU,MAAM,OAAO,SAAS,MAAM;AACxC,gBAAI,iBAAiB,KAAK,WAAW,MAAM,IAAI;AAC7C,qBAAO;AAAA,YACT;AACA,mBAAO,KAAK,SAAS,YAAY,MAAM,QAAQ,CAAE,aAAa,cAAe,EAAE,QAAQ,KAAK,aAAa,MAAM,CAAC,MAAM;AAAA,UACxH,CAAC;AACD,cAAI,YAAY,gBAAgB,IAAI;AACpC,cAAI,MAAM;AACV,kBAAQ,QAAQ,SAAS,QAAQ;AAC/B,gBAAI,OAAO,aAAa,IAAI,KAAK,cAAc,SAAS,OAAO,aAAa,IAAI,CAAC,GAAG;AAClF;AAAA,YACF;AACA,gBAAI,MAAM,0BAA0B,QAAQ,SAAS;AACrD,gBAAI,UAAU;AACd,gBAAI,yBAAyB,MAAM,GAAG;AACpC,wBAAU,iBAAiB,QAAQ,KAAK,SAAS,EAAE,KAAK,SAAS,MAAM;AACrE,uBAAO,CAAC,yBAAyB,IAAI,KAAK,oBAAoB,MAAM,SAAS,EAAE,SAAS,MAAM;AAAA,cAChG,CAAC;AAAA,YACH;AACA,gBAAI,CAAC,WAAW,sBAAsB,MAAM,GAAG;AAC7C,wBAAU,iBAAiB,SAAS,KAAK,SAAS,EAAE,KAAK,SAAS,MAAM;AACtE,uBAAO,CAAC,sBAAsB,IAAI,KAAK,oBAAoB,MAAM,SAAS,EAAE,SAAS,MAAM;AAAA,cAC7F,CAAC;AAAA,YACH;AACA,gBAAI,CAAC,SAAS;AACZ,0BAAY,aAAa,MAAM;AAAA,YACjC;AACA,kBAAM,OAAO;AAAA,UACf,CAAC;AACD,iBAAO,MAAM,OAAO;AAAA,QACtB;AACA,YAAI,qCAAqC;AACzC,iBAAS,sBAAsB,MAAM,SAAS,aAAa;AACzD,cAAI,YAAY,CAAE,UAAU,QAAQ,SAAS,YAAY,SAAS,UAAW;AAC7E,cAAI,CAAC,UAAU,SAAS,KAAK,SAAS,YAAY,CAAC,KAAK,4BAA4B,WAAW,GAAG;AAChG,gBAAI,SAASF,QAAO,iBAAiB,IAAI;AACzC,gBAAI,OAAO,iBAAiB,SAAS,MAAM,QAAQ;AACjD,qBAAO;AAAA,YACT,WAAW,OAAO,iBAAiB,YAAY,MAAM,UAAU;AAC7D,kBAAI,SAAS,4BAA4B,IAAI;AAC7C,kBAAI,cAAc,UAAUA,QAAO,iBAAiB,MAAM;AAC1D,kBAAI,CAAC,eAAe,YAAY,iBAAiB,YAAY,MAAM,UAAU;AAC3E,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AACA,YAAI,kCAAkC;AACtC,YAAI,gBAAgB,CAAC;AACrB,QAAAuB,UAAS,eAAe;AAAA,UACtB,OAAO,SAASsN,SAAQ;AACtB,mBAAO;AAAA,UACT;AAAA,UACA,mBAAmB,SAAS2F,qBAAoB;AAC9C,mBAAO;AAAA,UACT;AAAA,UACA,iBAAiB,SAASC,mBAAkB;AAC1C,mBAAO;AAAA,UACT;AAAA,UACA,mBAAmB,SAASC,qBAAoB;AAC9C,mBAAO;AAAA,UACT;AAAA,UACA,mBAAmB,SAASC,qBAAoB;AAC9C,mBAAO;AAAA,UACT;AAAA,UACA,eAAe,SAASC,iBAAgB;AACtC,mBAAO;AAAA,UACT;AAAA,UACA,oBAAoB,SAASC,sBAAqB;AAChD,mBAAO;AAAA,UACT;AAAA,UACA,oBAAoB,SAASC,sBAAqB;AAChD,mBAAO;AAAA,UACT;AAAA,UACA,aAAa,SAASC,eAAc;AAClC,mBAAO;AAAA,UACT;AAAA,UACA,oBAAoB,SAASC,sBAAqB;AAChD,mBAAO;AAAA,UACT;AAAA,UACA,uBAAuB,SAASC,yBAAwB;AACtD,mBAAO;AAAA,UACT;AAAA,UACA,cAAc,SAASC,gBAAe;AACpC,mBAAO;AAAA,UACT;AAAA,UACA,qBAAqB,SAASC,uBAAsB;AAClD,mBAAO;AAAA,UACT;AAAA,UACA,uBAAuB,SAASC,yBAAwB;AACtD,mBAAO;AAAA,UACT;AAAA,UACA,gBAAgB,SAASC,kBAAiB;AACxC,mBAAO;AAAA,UACT;AAAA,QACF,CAAC;AACD,iBAAS,kBAAkB,MAAM;AAC/B,cAAI,KAAK,OAAOrV,QAAO,YAAY;AACjC,mBAAO;AAAA,UACT;AACA,cAAI,KAAK,MAAMA,QAAO,aAAa;AACjC,mBAAO;AAAA,UACT;AACA,cAAI,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,OAAO,KAAK,QAAQ,CAAC,GAAGA,QAAO,aAAa,CAAC;AAC7E,cAAI,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,MAAM,KAAK,SAAS,CAAC,GAAGA,QAAO,cAAc,CAAC;AAC9E,iBAAO;AAAA,YACL;AAAA,YACA;AAAA,UACF;AAAA,QACF;AACA,YAAI,+BAA+B;AACnC,iBAAS,UAAUkO,QAAO;AACxB,iBAAOA,OAAM,iBAAiB,aAAa,EAAE,MAAM,OAAO,EAAE,IAAI,SAAS,MAAM;AAC7E,mBAAO,KAAK,KAAK,EAAE,YAAY;AAAA,UACjC,CAAC;AAAA,QACH;AACA,iBAAS,kBAAkB,MAAM,cAAc;AAC7C,cAAI,YAAYlO,QAAO,iBAAiB,IAAI;AAC5C,cAAI,UAAU,iBAAiB,kBAAkB,MAAM,QAAQ;AAC7D,mBAAO;AAAA,UACT;AACA,cAAI,YAAY,CAAE,iBAAiB,cAAc,SAAU,EAAE,OAAO,SAAS,QAAQsV,OAAM;AACzF,gBAAI,YAAY,IAAI,cAAc;AAClC,sBAAU,YAAY,UAAU,iBAAiBA,QAAO,QAAQ,CAAC;AACjE,mBAAO,UAAU,UAAU,iBAAiBA,QAAO,QAAQ,MAAM,UAAU,WAAW,UAAU,iBAAiBA,QAAO,QAAQ,CAAC,IAAI,KAAK,UAAU,UAAU;AAAA,UAChK,GAAG,KAAK;AACR,cAAI,WAAW;AACb,mBAAO;AAAA,UACT;AACA,cAAI,cAActV,QAAO,iBAAiB,YAAY;AACtD,cAAI,UAAU,SAAS,EAAE,CAAC,MAAM,UAAU,WAAW,EAAE,CAAC,GAAG;AACzD,mBAAO;AAAA,UACT;AACA,cAAI,WAAW,CAAE,wBAAwB,yBAAyB,eAAe,cAAc,WAAY,EAAE,OAAO,SAAS,QAAQ,SAAS;AAC5I,mBAAO,UAAU,UAAU,iBAAiB,OAAO,MAAM,YAAY,iBAAiB,OAAO;AAAA,UAC/F,GAAG,KAAK;AACR,cAAI,OAAO,UAAU,iBAAiB,iBAAiB;AACvD,cAAI,KAAK,MAAM,GAAG,EAAE,SAAS,GAAG;AAC9B,uBAAW,YAAY,SAAS,YAAY,iBAAiB,iBAAiB;AAAA,UAChF;AACA,iBAAO;AAAA,QACT;AACA,YAAI,8BAA8B;AAClC,iBAAS,cAAc,KAAK;AAC1B,cAAI,gBAAgB,0BAA0B,GAAG;AACjD,cAAI,cAAc,+BAA+B,GAAG;AACpD,cAAI,CAAC,eAAe,YAAY,UAAU,GAAG;AAC3C,mBAAO,CAAE,aAAc;AAAA,UACzB;AACA,cAAI,YAAY,KAAK,SAAS,OAAO;AACnC,mBAAO,UAAU;AAAA,UACnB,CAAC,GAAG;AACF,mBAAO;AAAA,UACT;AACA,sBAAY,OAAO,GAAG,GAAG,aAAa;AACtC,iBAAO;AAAA,QACT;AACA,YAAI,yBAAyB;AAC7B,iBAAS,kBAAkB,KAAK;AAC9B,cAAI,YAAY,uBAAuB,GAAG;AAC1C,cAAI,aAAa,UAAU,WAAW,GAAG;AACvC,mBAAO,UAAU,CAAC;AAAA,UACpB;AACA,cAAI,aAAa,UAAU,SAAS,GAAG;AACrC,gBAAI,gBAAgB,UAAU,MAAM;AACpC,gBAAI;AACJ,sBAAU,QAAQ,SAAS,UAAU4C,QAAO;AAC1C,kBAAIA,WAAU,GAAG;AACf;AAAA,cACF;AACA,kBAAI,QAAQ,UAAUA,SAAQ,CAAC,GAAG,QAAQ,UAAUA,MAAK;AACzD,uBAAS,MAAM,MAAM,SAAS,SAAS,cAAc;AACnD,uBAAO,YAAY,MAAM,YAAY;AAAA,cACvC,CAAC,KAAK,cAAc,SAAS,GAAG;AAAA,YAClC,CAAC;AACD,gBAAI,CAAC,QAAQ;AACX,sCAAwB,IAAI,WAAW,uBAAuB;AAC9D,qBAAO;AAAA,YACT;AACA,mBAAO,UAAU,CAAC;AAAA,UACpB;AACA,kCAAwB,IAAI,WAAW,iBAAiB;AACxD,iBAAO;AAAA,QACT;AACA,YAAI,8BAA8B;AAClC,iBAAS,cAAc,SAAS,SAAS;AACvC,cAAI,QAAQ,QAAQ;AACpB,cAAI,KAAK,IAAI,SAAS,QAAQ,MAAM,QAAQ,QAAQ;AACpD,cAAI,KAAK,IAAI,SAAS,QAAQ,QAAQ,QAAQ,QAAQ;AACtD,cAAI,KAAK,IAAI,SAAS,QAAQ,OAAO,QAAQ,QAAQ;AACrD,cAAI,IAAI,QAAQ,QAAQ,QAAQ,SAAS,IAAI,QAAQ;AACrD,iBAAO,IAAI,cAAc,GAAG,GAAG,GAAG,CAAC;AAAA,QACrC;AACA,YAAI,yBAAyB;AAC7B,iBAAS,mBAAmB,eAAe,QAAQ;AACjD,cAAI,aAAa,cAAc,eAAe,EAAE,CAAC;AACjD,cAAI,oBAAoB,mCAAmC,WAAW,MAAM,WAAW,GAAG;AAC1F,cAAI,mBAAmB;AACrB,qBAASb,KAAI,GAAGA,KAAI,kBAAkB,QAAQA,MAAK;AACjD,kBAAI,kBAAkBA,EAAC,MAAM,iBAAiB,kBAAkBA,EAAC,MAAM,QAAQ;AAC7E,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AACA,iBAAS,0BAA0B,UAAU,UAAU,aAAa;AAClE,cAAI,WAAW,GAAG;AAChB,qBAASA,KAAI,WAAW,GAAGA,MAAK,GAAGA,MAAK;AACtC,kBAAI,QAAQ,SAASA,EAAC;AACtB,kBAAI,mBAAmB,aAAa,KAAK,GAAG;AAC1C,uBAAO;AAAA,cACT,OAAO;AACL,yBAAS,OAAOA,IAAG,CAAC;AAAA,cACtB;AAAA,YACF;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AACA,iBAAS,mBAAmB,UAAU;AACpC,cAAI,YAAY,SAAS,QAAQ7B,UAAS,IAAI;AAC9C,cAAI,UAAU;AACd,cAAI,kBAAkB,YAAY,KAAK,cAAc;AACrD,cAAI,mBAAmB,CAAC,0BAA0BA,UAAS,eAAe,KAAK,iCAAiCF,QAAO,iBAAiBE,UAAS,eAAe,CAAC,EAAE,UAAU,GAAG;AAC9K,gBAAI,YAAY,GAAG;AACjB,sBAAQ,OAAO,WAAW,CAAC;AAAA,YAC7B;AACA,oBAAQ,OAAO,SAAS,QAAQA,UAAS,eAAe,GAAG,CAAC;AAC5D,oBAAQ,KAAKA,UAAS,IAAI;AAAA,UAC5B;AACA,iBAAO;AAAA,QACT;AACA,iBAAS,mBAAmB,KAAK;AAC/B,cAAI,WAAW,4BAA4B,GAAG;AAC9C,cAAI,aAAa,MAAM;AACrB,mBAAO;AAAA,UACT;AACA,qBAAW,0CAA0C,UAAU,GAAG;AAClE,qBAAW,mBAAmB,QAAQ;AACtC,cAAI,WAAW,SAAS,QAAQ,GAAG;AACnC,cAAI,0BAA0B,UAAU,UAAU,GAAG,GAAG;AACtD,oCAAwB,IAAI,WAAW,WAAW;AAClD,mBAAO;AAAA,UACT;AACA,iBAAO,aAAa,KAAK,WAAW;AAAA,QACtC;AACA,YAAI,+BAA+B;AACnC,iBAAS,oBAAoB,MAAM;AACjC,cAAI,SAAS,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC,GAAG,WAAW,OAAO,UAAU,WAAW,OAAO;AACnI,cAAIgO,SAAQlO,QAAO,iBAAiB,IAAI;AACxC,cAAI,aAAakO,OAAM,iBAAiB,aAAa;AACrD,cAAI,eAAe,QAAQ;AACzB,mBAAO,CAAC;AAAA,UACV;AACA,cAAI,cAAcA,OAAM,iBAAiB,WAAW;AACpD,cAAI,WAAW,SAAS,WAAW;AACnC,yBAAe,MAAM,QAAQ,MAAM,OAAO,uCAAuC,OAAO,WAAW,CAAC;AACpG,cAAI,eAAe,CAAC;AACpB,cAAI,UAAU,iBAAiB,UAAU;AACzC,kBAAQ,QAAQ,SAAS,QAAQ;AAC/B,gBAAI,WAAW,OAAO,UAAU,SAAS,OAAO;AAChD,uBAAW,YAAYA,OAAM,iBAAiB,OAAO;AACrD,gBAAI,UAAU,eAAe,QAAQ,CAAC,GAAG,UAAU,QAAQ,CAAC,GAAG,UAAU,QAAQ,CAAC,GAAG,WAAW,QAAQ,CAAC,GAAG,aAAa,aAAa,SAAS,IAAI;AACnJ,iBAAK,CAAC,YAAY,cAAc,WAAW,cAAc,CAAC,YAAY,aAAa,WAAW,WAAW;AACvG,kBAAI,UAAU,gBAAgB;AAAA,gBAC5B;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA;AAAA,cACF,CAAC;AACD,2BAAa,KAAK,OAAO;AAAA,YAC3B;AAAA,UACF,CAAC;AACD,iBAAO;AAAA,QACT;AACA,iBAAS,iBAAiB,YAAY;AACpC,cAAI,UAAU;AAAA,YACZ,QAAQ,CAAC;AAAA,UACX;AACA,cAAIjM,OAAM,WAAW,KAAK;AAC1B,cAAI,UAAU,CAAE,OAAQ;AACxB,cAAI,CAACA,MAAK;AACR,mBAAO,CAAC;AAAA,UACV;AACA,iBAAOA,MAAK;AACV,gBAAI,aAAaA,KAAI,MAAM,uBAAuB,KAAKA,KAAI,MAAM,UAAU,KAAKA,KAAI,MAAM,cAAc;AACxG,gBAAI,aAAaA,KAAI,MAAM,gBAAgB,KAAKA,KAAI,MAAM,MAAM;AAChE,gBAAI,YAAY;AACd,6BAAe,CAAC,QAAQ,UAAU,8CAA8C,OAAO,UAAU,CAAC;AAClG,cAAAA,OAAMA,KAAI,QAAQ,WAAW,CAAC,GAAG,EAAE,EAAE,KAAK;AAC1C,sBAAQ,WAAW,WAAW,CAAC;AAAA,YACjC,WAAW,YAAY;AACrB,6BAAe,QAAQ,OAAO,SAAS,GAAG,wCAAwC,OAAO,UAAU,CAAC;AACpG,cAAAA,OAAMA,KAAI,QAAQ,WAAW,CAAC,GAAG,EAAE,EAAE,KAAK;AAC1C,kBAAI,YAAY,YAAY,WAAW,CAAC,EAAE,CAAC,MAAM,MAAM,MAAM,MAAM,WAAW,CAAC,CAAC;AAChF,sBAAQ,OAAO,KAAK,SAAS;AAAA,YAC/B,WAAWA,KAAI,CAAC,MAAM,KAAK;AACzB,6BAAe,QAAQ,OAAO,UAAU,GAAG,uCAAuC,OAAO,UAAU,CAAC;AACpG,wBAAU;AAAA,gBACR,QAAQ,CAAC;AAAA,cACX;AACA,sBAAQ,KAAK,OAAO;AACpB,cAAAA,OAAMA,KAAI,OAAO,CAAC,EAAE,KAAK;AAAA,YAC3B,OAAO;AACL,oBAAM,IAAI,MAAM,mCAAmC,OAAO,UAAU,CAAC;AAAA,YACvE;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AACA,iBAAS,gBAAgB,QAAQ;AAC/B,cAAI,WAAW,OAAO,UAAU,UAAU,OAAO,SAAS,UAAU,OAAO,SAAS,aAAa,OAAO,YAAY,WAAW,OAAO;AACtI,cAAI,UAAU,cAAc,UAAU,YAAY;AAChD,mBAAO,IAAI,cAAc,GAAG,GAAG,GAAG,CAAC;AAAA,UACrC;AACA,cAAI,cAAc,IAAI,cAAc;AACpC,sBAAY,YAAY,QAAQ;AAChC,sBAAY,SAAS,kBAAkB,YAAY,QAAQ;AAC3D,iBAAO;AAAA,QACT;AACA,iBAAS,kBAAkB,YAAY,UAAU;AAC/C,cAAI,eAAe,aAAa;AAChC,iBAAO,SAAQ,eAAe;AAAA,QAChC;AACA,YAAI,iCAAiC;AACrC,iBAAS,qBAAqB,KAAK,OAAO,SAAS;AACjD,cAAI,WAAW,QAAQ,SAAS,CAAC,0BAA0B,KAAK,KAAK,KAAK,QAAQ,UAAU;AAC5F,cAAI,UAAU;AACZ,oCAAwB,IAAI,WAAW,sBAAsB;AAAA,UAC/D;AACA,iBAAO;AAAA,QACT;AACA,iBAAS,mBAAmB,KAAK;AAC/B,cAAI,SAAS,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AAClF,cAAI,qBAAqB,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AAC7F,cAAI,WAAW,+BAA+B,KAAK;AAAA,YACjD,UAAU;AAAA,UACZ,CAAC;AACD,cAAI,WAAW,6BAA6B,GAAG;AAC/C,WAAC,YAAY,CAAC,GAAG,KAAK,SAAS,OAAO;AACpC,gBAAI,aAAajC,QAAO,iBAAiB,KAAK;AAC9C,gBAAI,UAAU,iCAAiC,UAAU;AACzD,gBAAI,qBAAqB,KAAK,OAAO,OAAO,KAAK,0BAA0B,OAAO,UAAU,GAAG;AAC7F,yBAAW;AACX,qBAAO,KAAK,KAAK;AACjB,qBAAO;AAAA,YACT;AACA,gBAAI,QAAQ,UAAU,GAAG;AACvB,qBAAO,KAAK,KAAK;AACjB,uBAAS,KAAK,OAAO;AACrB,qBAAO,QAAQ,UAAU;AAAA,YAC3B,OAAO;AACL,qBAAO;AAAA,YACT;AAAA,UACF,CAAC;AACD,cAAI,aAAa,QAAQ,aAAa,MAAM;AAC1C,mBAAO;AAAA,UACT;AACA,mBAAS,KAAK,IAAI,cAAc,KAAK,KAAK,KAAK,CAAC,CAAC;AACjD,cAAI,SAAS,SAAS,OAAO,sBAAsB;AACnD,iBAAO;AAAA,QACT;AACA,YAAI,+BAA+B;AACnC,iBAAS,YAAY,SAAS,SAAS;AACrC,cAAI,CAAC,WAAW,CAAC,SAAS;AACxB,mBAAO;AAAA,UACT;AACA,cAAI,QAAQ,QAAQ,GAAG;AACrB,sBAAU,uBAAuB,SAAS,OAAO;AAAA,UACnD;AACA,cAAI,KAAK,QAAQ,qBAAqB;AACtC,cAAI,KAAK,QAAQ,qBAAqB;AACtC,kBAAQ,KAAK,IAAI,IAAI,EAAE,IAAI,SAAQ,KAAK,IAAI,IAAI,EAAE,IAAI;AAAA,QACxD;AACA,YAAI,uBAAuB;AAC3B,iBAAS,WAAW,MAAM;AACxB,cAAI,CAAC,MAAM;AACT,mBAAO;AAAA,UACT;AACA,cAAI,QAAQ,2BAA2B,IAAI;AAC3C,cAAI,SAAS,MAAM,aAAa,UAAU,MAAM,aAAa,MAAM;AACjE,mBAAO,MAAM;AAAA,UACf;AACA,cAAI,YAAYA,QAAO,iBAAiB,IAAI;AAC5C,cAAI,UAAU,UAAU,iBAAiB,SAAS;AAClD,cAAI,eAAe,UAAU,WAAW,KAAK,aAAa;AAC1D,cAAI,OAAO;AACT,kBAAM,WAAW;AAAA,UACnB;AACA,iBAAO;AAAA,QACT;AACA,iBAAS,mBAAmB,MAAM,GAAG,SAAS;AAC5C,cAAI,YAAYA,QAAO,iBAAiB,IAAI;AAC5C,cAAI,UAAU,IAAI,cAAc;AAChC,kBAAQ,YAAY,UAAU,iBAAiB,OAAO,CAAC;AACvD,cAAI,UAAU,WAAW,IAAI;AAC7B,kBAAQ,QAAQ,QAAQ,QAAQ;AAChC,cAAI,QAAQ,UAAU,GAAG;AACvB,mBAAO;AAAA,UACT;AACA,cAAI,CAAC,SAAS;AACZ,sBAAU,6BAA6B,MAAM,CAAC,CAAC;AAAA,UACjD;AACA,cAAI,YAAY,MAAM;AACpB,gBAAI,SAAS,wBAAwB,IAAI,SAAS;AAClD,oCAAwB,IAAI,WAAW,MAAM;AAC7C,mBAAO;AAAA,UACT;AACA,iBAAO,uBAAuB,SAAS,OAAO;AAAA,QAChD;AACA,YAAI,+BAA+B;AACnC,iBAAS,sBAAsB,IAAI,IAAI,UAAU,QAAQ;AACvD,cAAI,WAAW,qBAAqB,IAAI,EAAE;AAC1C,cAAI,cAAc,UAAU,KAAK,KAAK,WAAW,EAAE,IAAI,KAAK,MAAM,CAAC,UAAU,KAAK,KAAK,WAAW,EAAE,IAAI,KAAK;AAC7G,cAAI,wBAAwB,cAAc,MAAM;AAChD,iBAAO;AAAA,YACL,SAAS,WAAW;AAAA,YACpB,eAAe;AAAA,YACf;AAAA,UACF;AAAA,QACF;AACA,YAAI,mCAAmC;AACvC,YAAI,mBAAmB,gBAAgB,SAAS,kBAAkB,MAAM,QAAQ;AAC9E,cAAIkO,SAAQlO,QAAO,iBAAiB,MAAM,MAAM;AAChD,cAAI,kBAAkB,iCAAiCkO,MAAK;AAC5D,iBAAOA,OAAM,iBAAiB,SAAS,MAAM,UAAUA,OAAM,iBAAiB,UAAU,MAAM,cAAc,SAASA,OAAM,iBAAiB,OAAO,CAAC,MAAM,KAAK,SAASA,OAAM,iBAAiB,QAAQ,CAAC,MAAM,MAAM,gBAAgB,UAAU,KAAKA,OAAM,iBAAiB,kBAAkB,MAAM;AAAA,QACpS,CAAC;AACD,iBAAS,sBAAsB,MAAM,SAAS,aAAa;AACzD,cAAI,CAAC,mBAAmB,MAAM,KAAK,GAAG;AACpC,mBAAO;AAAA,UACT;AACA,cAAI,gBAAgB,QAAQ,eAAe,eAAe,QAAQ,cAAc,YAAY,QAAQ,WAAW,aAAa,QAAQ,YAAY,cAAc,QAAQ,aAAa,gBAAgB,QAAQ,eAAe,qBAAqB,QAAQ;AACvP,cAAI,cAAc,wBAAwB,aAAa,OAAO,IAAI;AAClE,cAAI,0BAA0B,oBAAoB,aAAa;AAAA,YAC7D,QAAQ;AAAA,UACV,CAAC,KAAK,iBAAiB,uBAAuB,aAAa;AAAA,YACzD,QAAQ;AAAA,UACV,CAAC,CAAC,MAAM;AACR,cAAI,2BAA2B,eAAe;AAC5C,iBAAK,KAAK;AAAA,cACR,YAAY;AAAA,YACd,CAAC;AACD,mBAAO;AAAA,UACT;AACA,cAAI,UAAU,CAAC;AACf,cAAI,UAAU,6BAA6B,MAAM,SAAS,kBAAkB;AAC5E,cAAI,UAAU,6BAA6B,MAAM,OAAO,OAAO;AAC/D,cAAI,eAAe,+BAA+B,MAAM;AAAA,YACtD,UAAU;AAAA,UACZ,CAAC;AACD,cAAI,YAAYlO,QAAO,iBAAiB,IAAI;AAC5C,cAAI,WAAW,WAAW,UAAU,iBAAiB,WAAW,CAAC;AACjE,cAAI,aAAa,UAAU,iBAAiB,aAAa;AACzD,cAAI,OAAO,WAAW,UAAU,KAAK,aAAa,eAAe;AACjE,cAAI,WAAW;AACf,cAAI,aAAa,WAAW,GAAG;AAC7B,uBAAW,qBAAqB,SAAS,OAAO;AAAA,UAClD,WAAW,WAAW,SAAS;AAC7B,gBAAI,cAAc,CAAC,EAAE,OAAO,mBAAmB,YAAY,GAAG,CAAE,OAAQ,CAAC,EAAE,OAAO,sBAAsB;AACxG,gBAAI,aAAa,qBAAqB,SAAS,WAAW;AAC1D,gBAAI,aAAa,qBAAqB,aAAa,OAAO;AAC1D,uBAAW,KAAK,IAAI,YAAY,UAAU;AAAA,UAC5C;AACA,cAAI,SAAS,KAAK,KAAK,WAAW,EAAE,IAAI;AACxC,cAAI,cAAc,QAAQ,SAAS,cAAc,CAAC,QAAQ,SAAS;AACnE,cAAI,SAAS,cAAc,cAAc,SAAS,cAAc,OAAO,WAAW,OAAO,UAAU,eAAe,OAAO,cAAc,eAAe,OAAO;AAC7J,cAAI,UAAU,WAAW;AACzB,cAAIiO,cAAa,KAAK;AACtB,iBAAOA,aAAY;AACjB,gBAAI,iBAAiBA,aAAY,SAAS,KAAK,iBAAiBA,aAAY,QAAQ,GAAG;AACrF,mBAAK,KAAK;AAAA,gBACR,YAAY;AAAA,cACd,CAAC;AACD,mBAAK,aAAaA,WAAU;AAC5B,qBAAO;AAAA,YACT;AACA,YAAAA,cAAaA,YAAW;AAAA,UAC1B;AACA,cAAI,OAAO,iBAAiB,YAAY,WAAW,gBAAgB,OAAO,iBAAiB,YAAY,WAAW,cAAc;AAC9H,mBAAO;AAAA,UACT;AACA,cAAI,kBAAkB,KAAK,MAAM,WAAW,GAAG,IAAI;AACnD,cAAI;AACJ,cAAI,YAAY,MAAM;AACpB,sBAAU,wBAAwB,IAAI,SAAS;AAAA,UACjD;AACA,cAAI,aAAa,oBAAoB;AACrC,cAAI,mBAAmB,YAAY,WAAW;AAC9C,cAAI,YAAY;AACd,sBAAU,wBAAwB,IAAI,WAAW,YAAY;AAAA,UAC/D,WAAW,oBAAoB,CAAC,cAAc;AAC5C,sBAAU;AAAA,UACZ;AACA,cAAI,QAAQ;AAAA,YACV,SAAS,UAAU,QAAQ,YAAY,IAAI;AAAA,YAC3C,SAAS,UAAU,QAAQ,YAAY,IAAI;AAAA,YAC3C,eAAe;AAAA,YACf,UAAU,GAAG,QAAQ,WAAW,KAAK,IAAI,QAAQ,CAAC,GAAG,MAAM,EAAE,OAAO,UAAU,KAAK;AAAA,YACnF,YAAY,OAAO,SAAS;AAAA,YAC5B,YAAY;AAAA,YACZ,uBAAuB,WAAW;AAAA,UACpC;AACA,eAAK,KAAK,KAAK;AACf,cAAI,YAAY,QAAQ,YAAY,QAAQ,cAAc,oBAAoB,CAAC,gBAAgB,CAAC,SAAS;AACvG,sBAAU;AACV,oCAAwB,MAAM;AAC9B,iBAAK,aAAa,OAAO;AACzB,mBAAO;AAAA,UACT;AACA,cAAI,CAAC,SAAS;AACZ,iBAAK,aAAa,OAAO;AAAA,UAC3B;AACA,iBAAO;AAAA,QACT;AACA,YAAI,kCAAkC;AACtC,iBAAS,aAAa,QAAQ,SAAS;AACrC,cAAI,QAAQ,OAAO,qBAAqB;AACxC,cAAI,QAAQ,QAAQ,qBAAqB;AACzC,kBAAQ,KAAK,IAAI,OAAO,KAAK,IAAI,SAAQ,KAAK,IAAI,OAAO,KAAK,IAAI;AAAA,QACpE;AACA,YAAI,aAAa,CAAE,SAAS,aAAa,SAAS,QAAQ,QAAQ,cAAe;AACjF,iBAAS,SAAS,KAAK;AACrB,cAAI,UAAUjO,QAAO,iBAAiB,GAAG,EAAE,iBAAiB,SAAS;AACrE,iBAAO,WAAW,QAAQ,OAAO,MAAM,MAAM,QAAQ,OAAO,GAAG,CAAC,MAAM;AAAA,QACxE;AACA,iBAAS,wBAAwB,MAAM;AACrC,cAAI,SAAS,IAAI,GAAG;AAClB,mBAAO;AAAA,UACT;AACA,cAAI,cAAc,4BAA4B,IAAI;AAClD,iBAAO,YAAY,aAAa,KAAK,CAAC,SAAS,WAAW,GAAG;AAC3D,0BAAc,4BAA4B,WAAW;AAAA,UACvD;AACA,eAAK,aAAa,CAAE,WAAY,CAAC;AACjC,cAAI,4BAA4B,MAAM,WAAW,GAAG;AAClD,mBAAO;AAAA,UACT,OAAO;AACL,gBAAI,WAAW;AACf,wBAAY,6BAA6B,IAAI;AAC7C,0BAAc,6BAA6B,WAAW;AACtD,gBAAI,CAAC,aAAa,CAAC,aAAa;AAC9B,qBAAO;AAAA,YACT;AACA,gBAAI,WAAW,aAAa,WAAW,WAAW;AAClD,gBAAI,aAAa,GAAG;AAClB,qBAAO;AAAA,YACT,WAAW,YAAY,GAAG;AACxB,sCAAwB,IAAI,WAAW,YAAY;AACnD,mBAAK,KAAK;AAAA,gBACR,YAAY,wBAAwB,IAAI,SAAS;AAAA,cACnD,CAAC;AACD,sCAAwB,MAAM;AAC9B,qBAAO;AAAA,YACT;AACA,wBAAY,6BAA6B,IAAI;AAC7C,0BAAc,6BAA6B,WAAW;AACtD,gBAAI,CAAC,aAAa,CAAC,eAAe,aAAa,WAAW,WAAW,KAAK,GAAG;AAC3E,kBAAI;AACJ,kBAAI,CAAC,aAAa,CAAC,aAAa;AAC9B,yBAAS,wBAAwB,IAAI,SAAS;AAAA,cAChD,OAAO;AACL,yBAAS;AAAA,cACX;AACA,sCAAwB,IAAI,WAAW,MAAM;AAC7C,mBAAK,KAAK;AAAA,gBACR,YAAY,wBAAwB,IAAI,SAAS;AAAA,cACnD,CAAC;AACD,sCAAwB,MAAM;AAC9B,qBAAO;AAAA,YACT;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AACA,YAAI,sCAAsC;AAC1C,iBAAS,gCAAgC,MAAM,SAAS,aAAa;AACnE,cAAI,YAAY,MAAM,aAAa,SAAS;AAC1C,mBAAO;AAAA,UACT;AACA,cAAI,SAAS,CAAE,QAAQ,UAAU,UAAU,KAAM;AACjD,cAAI,MAAM,CAAE,QAAQ,UAAU,KAAM;AACpC,cAAI,kBAAkB;AAAA,YACpB,MAAM,CAAE,QAAQ,UAAU,MAAO;AAAA,YACjC,OAAO,CAAE,QAAQ,UAAU,OAAQ;AAAA,YACnC,UAAU,CAAE,QAAQ,UAAU,OAAQ;AAAA,YACtC,kBAAkB,CAAE,MAAO;AAAA,YAC3B,KAAK,CAAE,QAAQ,UAAU,KAAM;AAAA,YAC/B,oBAAoB,CAAE,QAAQ,UAAU,KAAM;AAAA,YAC9C,gBAAgB,CAAE,QAAQ,UAAU,KAAM;AAAA,YAC1C,iBAAiB,CAAE,QAAQ,UAAU,KAAM;AAAA,YAC3C,aAAa,CAAE,QAAQ,UAAU,KAAM;AAAA,YACvC,oBAAoB,CAAE,QAAQ,UAAU,KAAM;AAAA,YAC9C,oBAAoB,CAAE,QAAQ,UAAU,KAAM;AAAA,YAC9C,iBAAiB,CAAE,QAAQ,UAAU,KAAM;AAAA,YAC3C,aAAa;AAAA,YACb,UAAU,CAAE,QAAQ,UAAU,SAAS,KAAM;AAAA,YAC7C,gBAAgB;AAAA,YAChB,eAAe;AAAA,YACf,UAAU;AAAA,YACV,sBAAsB;AAAA,YACtB,YAAY;AAAA,YACZ,cAAc;AAAA,YACd,aAAa;AAAA,YACb,gBAAgB,CAAE,QAAQ,UAAU,UAAW;AAAA,YAC/C,oBAAoB,CAAE,QAAQ,UAAU,UAAW;AAAA,YACnD;AAAA,YACA,OAAO;AAAA,YACP,MAAM;AAAA,UACR;AACA,cAAI,QAAQ,OAAO,MAAM,UAAU;AACjC,mBAAO,KAAK,OAAO,EAAE,QAAQ,SAAS,KAAK;AACzC,kBAAI,CAAC,gBAAgB,GAAG,GAAG;AACzB,gCAAgB,GAAG,IAAI,CAAC;AAAA,cAC1B;AACA,8BAAgB,GAAG,IAAI,gBAAgB,GAAG,EAAE,OAAO,QAAQ,GAAG,CAAC;AAAA,YACjE,CAAC;AAAA,UACH;AACA,cAAI,mBAAmB,YAAY,KAAK,cAAc;AACtD,cAAI,oBAAoB,iBAAiB,MAAM,MAAM,EAAE,IAAI,SAAS,MAAM;AACxE,mBAAO,KAAK,YAAY;AAAA,UAC1B,CAAC;AACD,cAAI,cAAc,kBAAkB,kBAAkB,SAAS,CAAC;AAChE,cAAI,cAAc,WAAW,SAAS,WAAW,GAAG;AAClD,mBAAO;AAAA,UACT;AACA,cAAI,eAAe,gBAAgB,WAAW;AAC9C,cAAIyD,QAAO,YAAY,QAAQ,MAAM,IAAI,iBAAiB,YAAY,KAAK,MAAM,CAAC,EAAE,YAAY,IAAI;AACpG,UAAAA,QAAO,yBAAyB,EAAE,SAASA,KAAI,IAAIA,QAAO;AAC1D,cAAI,OAAO,iBAAiB,aAAa;AACvC,mBAAOA,UAAS;AAAA,UAClB;AACA,iBAAO,aAAa,SAASA,KAAI;AAAA,QACnC;AACA,YAAI,4CAA4C;AAChD,iBAAS,0BAA0B,MAAM,SAAS,aAAa;AAC7D,cAAI,gBAAgB,YAAY,KAAK,cAAc,KAAK;AACxD,iBAAO,8BAA8B,eAAe,OAAO;AAAA,QAC7D;AACA,YAAI,sCAAsC;AAC1C,iBAAS,4BAA4B,MAAM;AACzC,cAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AACnF,cAAI,QAAQ,UAAU,SAAS,IAAI,UAAU,CAAC,IAAI;AAClD,cAAI,CAAC,QAAQ,aAAa,OAAO,QAAQ,cAAc,UAAU;AAC/D,kBAAM,IAAI,UAAU,kEAAkE;AAAA,UACxF;AACA,cAAI,CAAC,MAAM,QAAQ,QAAQ,SAAS,GAAG;AACrC,iBAAK,KAAK;AAAA,cACR,YAAY;AAAA,YACd,CAAC;AACD,mBAAO;AAAA,UACT;AACA,cAAIuL,aAAY,MAAM,KAAK,QAAQ,SAAS;AAC5C,cAAI,mBAAmB,CAAC,iBAAiBA,UAAS;AAClD,cAAI,kBAAkB;AACpB,iBAAK,KAAK;AAAA,cACR,YAAY;AAAA,YACd,CAAC;AACD,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,0CAA0C;AAC9C,iBAAS,gBAAgB,SAAS;AAChC,cAAI,kBAAkB,QAAQ,KAAK,SAAS,aAAa;AACvD,mBAAO,YAAY,WAAW;AAAA,UAChC,CAAC;AACD,cAAI,iBAAiB;AACnB,oBAAQ,QAAQ,SAAS,QAAQ;AAC/B,qBAAO,SAAS;AAAA,YAClB,CAAC;AAAA,UACH;AACA,iBAAO;AAAA,QACT;AACA,YAAI,+BAA+B;AACnC,iBAAS,cAAc,MAAM,SAAS,aAAa;AACjD,cAAI,CAAC,WAAW,CAAC,QAAQ,YAAY,OAAO,QAAQ,aAAa,UAAU;AACzE,kBAAM,IAAI,UAAU,yDAAyD;AAAA,UAC/E;AACA,cAAI,eAAe,kCAAkC,aAAa,QAAQ,UAAU,SAAS,OAAO;AAClG,mBAAO,mBAAmB,MAAM,YAAY,IAAI;AAAA,UAClD,CAAC;AACD,eAAK,aAAa,aAAa,IAAI,SAAS,OAAO;AACjD,mBAAO,MAAM;AAAA,UACf,CAAC,CAAC;AACF,iBAAO,aAAa,SAAS;AAAA,QAC/B;AACA,YAAI,kCAAkC;AACtC,iBAAS,uBAAuB,MAAM,SAAS,aAAa;AAC1D,cAAI;AACF,mBAAO,iBAAiB,qBAAqB,WAAW,CAAC,MAAM;AAAA,UACjE,SAAS,GAAG;AACV,mBAAO;AAAA,UACT;AAAA,QACF;AACA,YAAI,oCAAoC;AACxC,iBAAS,0BAA0B,GAAG,SAAS,aAAa;AAC1D,iBAAO,iBAAiB,aAAa,QAAQ,OAAO;AAAA,QACtD;AACA,YAAI,sCAAsC;AAC1C,iBAAS,qBAAqB,SAAS;AACrC,iBAAO,QAAQ,OAAO,SAAS,aAAa;AAC1C,mBAAO,YAAY,SAAS;AAAA,UAC9B,CAAC;AAAA,QACH;AACA,YAAI,kCAAkC;AACtC,iBAAS,wBAAwB,MAAM,SAAS,aAAa;AAC3D,cAAI,CAAC,WAAW,CAAC,QAAQ,YAAY,OAAO,QAAQ,aAAa,UAAU;AACzE,kBAAM,IAAI,UAAU,4DAA4D;AAAA,UAClF;AACA,cAAI,MAAM,uBAAuB,QAAQ;AACzC,cAAI,cAAc,IAAI,GAAG,GAAG;AAC1B,iBAAK,KAAK,SAAS;AACnB;AAAA,UACF;AACA,wBAAc,IAAI,KAAK,IAAI;AAC3B,cAAI,OAAO,kCAAkC,IAAI,MAAM,CAAC,GAAG,QAAQ,UAAU,SAAS,KAAK;AACzF,mBAAO,mBAAmB,IAAI,UAAU;AAAA,UAC1C,CAAC;AACD,cAAI,OAAO,QAAQ,sBAAsB,UAAU;AACjD,mBAAO,KAAK,OAAO,SAAS,KAAK;AAC/B,qBAAO,IAAI,WAAW,aAAa,MAAM,KAAK,CAAC,wBAAwB,KAAK,QAAQ,iBAAiB;AAAA,YACvG,CAAC;AAAA,UACH;AACA,eAAK,aAAa,KAAK,OAAO,SAAS,KAAK;AAC1C,mBAAO,QAAQ;AAAA,UACjB,CAAC,EAAE,IAAI,SAAS,KAAK;AACnB,mBAAO,IAAI;AAAA,UACb,CAAC,CAAC;AACF,iBAAO,KAAK,UAAU;AAAA,QACxB;AACA,YAAI,qCAAqC;AACzC,YAAI,UAAU;AACd,iBAAS,aAAa,UAAU,UAAU;AACxC,qBAAW,SAAS,MAAM,GAAG,SAAS,SAAS,CAAC;AAChD,cAAI,UAAU;AACZ,uBAAW,SAAS,OAAO,QAAQ;AAAA,UACrC;AACA,iBAAO,SAAS,KAAK,OAAO;AAAA,QAC9B;AACA,iBAAS,kBAAkB,SAAS;AAClC,cAAI,QAAQ,SAAS,GAAG;AACtB,mBAAO;AAAA,UACT;AACA,cAAI,aAAa,QAAQ,KAAK,SAAS,QAAQ;AAC7C,mBAAO,CAAC,OAAO,KAAK;AAAA,UACtB,CAAC;AACD,cAAI,eAAe,WAAW,KAAK,aAAa,IAAI,SAAS,SAAS;AACpE,mBAAO,SAAS,CAAC,GAAG,SAAS;AAAA,cAC3B,UAAU,aAAa,WAAW,KAAK,UAAU,QAAQ,QAAQ;AAAA,YACnE,CAAC;AAAA,UACH,CAAC;AACD,cAAI,gBAAgB,QAAQ,OAAO,SAAS,QAAQ;AAClD,mBAAO,OAAO,QAAQ,OAAO,KAAK,gBAAgB,OAAO,KAAK;AAAA,UAChE,CAAC;AACD,wBAAc,QAAQ,SAAS,QAAQ;AACrC,mBAAO,KAAK,eAAe,OAAO,KAAK,aAAa,IAAI,SAAS,SAAS;AACxE,qBAAO,SAAS,CAAC,GAAG,SAAS;AAAA,gBAC3B,UAAU,aAAa,OAAO,KAAK,UAAU,QAAQ,QAAQ;AAAA,cAC/D,CAAC;AAAA,YACH,CAAC;AAAA,UACH,CAAC;AACD,mBAAS,cAAc,QAAQ;AAC7B,gBAAI,OAAO,aAAa,OAAO,KAAK,QAAQ;AAC5C,gBAAI,UAAU,aAAa,KAAK,SAAS,UAAU;AACjD,qBAAO,SAAS,aAAa;AAAA,YAC/B,CAAC;AACD,mBAAO,aAAa,QAAQ,OAAO;AAAA,UACrC;AACA,mBAAS,wBAAwBpM,QAAO,QAAQ;AAC9C,gBAAI;AACJ,aAAC,gBAAgB,cAAc,OAAO,MAAM,eAAe,CAAEA,QAAO,CAAE,EAAE,OAAO,mBAAmB,OAAO,KAAK,YAAY,CAAC,CAAC;AAAA,UAC9H;AACA,cAAI,WAAW;AACf,iBAAO,cAAc,QAAQ;AAC3B,qBAAS,OAAO,GAAG,OAAO,cAAc,UAAU;AAChD,kBAAI,eAAe,cAAc,IAAI;AACrC,kBAAIA,SAAQ,cAAc,YAAY;AACtC,kBAAIA,WAAU,IAAI;AAChB,wCAAwBA,QAAO,YAAY;AAC3C,2BAAW;AACX,8BAAc,OAAO,MAAM,CAAC;AAAA,cAC9B,OAAO;AACL;AAAA,cACF;AAAA,YACF;AACA,gBAAI,CAAC,UAAU;AACb,oBAAM,IAAI,MAAM,uDAAuD;AAAA,YACzE;AAAA,UACF;AACA,kBAAQ,QAAQ,SAAS,QAAQ;AAC/B,gBAAI,OAAO,OAAO,KAAK,SAAS,KAAK,OAAO;AAC5C,gBAAI,UAAU,aAAa,KAAK,SAAS,UAAU;AACjD,qBAAO,SAAS,aAAa;AAAA,YAC/B,CAAC;AACD,gBAAIA,SAAQ,aAAa,QAAQ,OAAO;AACxC,yBAAa,OAAOA,QAAO,GAAG;AAAA,cAC5B,OAAO,aAAaA,MAAK,EAAE;AAAA,cAC3B;AAAA,YACF,CAAC;AAAA,UACH,CAAC;AACD,yBAAe,aAAa,OAAO,SAAS,SAAS;AACnD,mBAAO,QAAQ,QAAQ;AAAA,UACzB,CAAC;AACD,cAAI,SAAS,SAAS2S,QAAOC,OAAM;AACjC,gBAAI,SAAS,QAAQA,KAAI;AACzB,gBAAI,UAAU,aAAa,KAAK,SAAS,UAAU;AACjD,qBAAO,SAAS,WAAW;AAAA,YAC7B,CAAC;AACD,gBAAI5S,SAAQ,aAAa,QAAQ,OAAO;AACxC,gBAAI,YAAY,aAAaA,MAAK,EAAE;AACpC,gBAAI,YAAY,aAAaA,SAAQ,CAAC,EAAE;AACxC,gBAAI,YAAY,YAAY,GAAG;AAC7B,qBAAO,SAAS;AAAA,YAClB;AAAA,UACF;AACA,mBAAS,OAAO,GAAG,OAAO,QAAQ,QAAQ,QAAQ;AAChD,mBAAO,IAAI;AAAA,UACb;AACA,iBAAO;AAAA,QACT;AACA,YAAI,8BAA8B;AAClC,iBAAS,SAAS,OAAO;AACvB,cAAI,OAAO,MAAM,KAAK,MAAM;AAC5B,cAAI,QAAQ,KAAK,SAAS,SAAS,GAAG;AACpC,gBAAI,mBAAmB,MAAM,KAAK,YAAY;AAC9C,gBAAI,QAAQ,SAAS,kBAAkB,EAAE;AACzC,gBAAI,MAAM,KAAK,KAAK,QAAQ,KAAK,QAAQ,GAAG;AAC1C,qBAAO;AAAA,YACT;AACA,mBAAO;AAAA,UACT;AACA,cAAI,eAAe,MAAM,MAAM,SAAS,MAAM,OAAO;AACrD,cAAI,cAAc;AAChB,mBAAO,SAAS,aAAa,CAAC,GAAG,EAAE;AAAA,UACrC;AACA,iBAAO;AAAA,QACT;AACA,iBAAS,uBAAuB;AAC9B,cAAI,eAAe,cAAc,IAAI,cAAc;AACnD,cAAI,cAAc;AAChB,mBAAO;AAAA,UACT;AACA,cAAI,WAAW;AACf,cAAI,SAAS,kCAAkC,IAAI,MAAM,CAAC,GAAG,UAAU,SAAS,OAAO;AACrF,mBAAO,mBAAmB,MAAM,YAAY,IAAI;AAAA,UAClD,CAAC;AACD,yBAAe,OAAO,IAAI,SAAS,OAAO;AACxC,mBAAO;AAAA,cACL,UAAU,CAAE,aAAa,MAAM,UAAU,CAAE;AAAA,cAC3C,OAAO,SAAS,KAAK;AAAA,YACvB;AAAA,UACF,CAAC;AACD,eAAK,KAAK;AAAA,YACR;AAAA,UACF,CAAC;AACD,wBAAc,IAAI,gBAAgB,MAAM;AACxC,iBAAO;AAAA,QACT;AACA,YAAI,iCAAiC;AACrC,iBAAS,kBAAkB,GAAG,GAAG;AAC/B,cAAI,CAAC,KAAK,CAAC,GAAG;AACZ,mBAAO;AAAA,UACT;AACA,cAAI,SAAS,OAAO,oBAAoB,CAAC;AACzC,cAAI,SAAS,OAAO,oBAAoB,CAAC;AACzC,cAAI,OAAO,WAAW,OAAO,QAAQ;AACnC,mBAAO;AAAA,UACT;AACA,cAAI,SAAS,OAAO,MAAM,SAAS,UAAU;AAC3C,gBAAI,SAAS,EAAE,QAAQ;AACvB,gBAAI,SAAS,EAAE,QAAQ;AACvB,gBAAI,QAAQ,MAAM,MAAM,QAAQ,MAAM,GAAG;AACvC,qBAAO;AAAA,YACT;AACA,gBAAI,OAAO,WAAW,YAAY,OAAO,WAAW,UAAU;AAC5D,qBAAO,kBAAkB,QAAQ,MAAM;AAAA,YACzC;AACA,mBAAO,WAAW;AAAA,UACpB,CAAC;AACD,iBAAO;AAAA,QACT;AACA,iBAAS,+BAA+B,SAAS;AAC/C,cAAI,QAAQ,SAAS,GAAG;AACtB,mBAAO;AAAA,UACT;AACA,cAAI,oBAAoB,QAAQ,OAAO,SAAS,QAAQ;AACtD,gBAAI,SAAS,OAAO;AACpB,mBAAO,WAAW;AAAA,UACpB,CAAC;AACD,cAAI,gBAAgB,CAAC;AACrB,cAAI,UAAU,CAAC;AACf,cAAI,SAAS,SAAS6S,QAAO7S,QAAO;AAClC,gBAAI;AACJ,gBAAI,gBAAgB,kBAAkBA,MAAK;AAC3C,gBAAI,sBAAsB,cAAc,MAAM,OAAO,oBAAoB,MAAM,WAAW,oBAAoB;AAC9G,gBAAI,QAAQ,IAAI,GAAG;AACjB,qBAAO;AAAA,YACT;AACA,gBAAI,kBAAkB,kBAAkB,OAAO,SAAS,QAAQ,WAAW;AACzE,kBAAI,QAAQ,OAAO;AACnB,qBAAO,MAAM,SAAS,QAAQ,cAAcA;AAAA,YAC9C,CAAC;AACD,gBAAI,YAAY,gBAAgB,MAAM,SAAS,QAAQ;AACrD,kBAAI,QAAQ,OAAO;AACnB,qBAAO,kBAAkB,MAAM,UAAU,QAAQ;AAAA,YACnD,CAAC;AACD,gBAAI,gBAAgB,UAAU,CAAC,WAAW;AACxC,4BAAc,SAAS;AAAA,YACzB;AACA,0BAAc,eAAe,CAAC;AAC9B,aAAC,wBAAwB,cAAc,cAAc,KAAK,MAAM,uBAAuB,mBAAmB,gBAAgB,IAAI,SAAS,MAAM;AAC3I,qBAAO,KAAK,aAAa,CAAC;AAAA,YAC5B,CAAC,CAAC,CAAC;AACH,oBAAQ,IAAI,IAAI;AAChB,0BAAc,KAAK,aAAa;AAAA,UAClC;AACA,mBAASA,SAAQ,GAAGA,SAAQ,kBAAkB,QAAQA,UAAS;AAC7D,gBAAI,QAAQ,OAAOA,MAAK;AACxB,gBAAI,UAAU,YAAY;AACxB;AAAA,YACF;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AACA,YAAI,6CAA6C;AACjD,YAAI,kBAAkB,CAAC;AACvB,QAAArB,UAAS,iBAAiB;AAAA,UACxB,MAAM,SAAS,OAAO;AACpB,mBAAO;AAAA,UACT;AAAA,UACA,OAAO,SAASmU,SAAQ;AACtB,mBAAO;AAAA,UACT;AAAA,UACA,KAAK,SAAS,MAAM;AAClB,mBAAO;AAAA,UACT;AAAA,UACA,OAAO,SAAS,QAAQ;AACtB,mBAAO;AAAA,UACT;AAAA,UACA,SAAS,SAASxM,WAAU;AAC1B,mBAAO;AAAA,UACT;AAAA,UACA,WAAW,SAASyM,aAAY;AAC9B,mBAAO;AAAA,UACT;AAAA,UACA,OAAO,SAAS,QAAQ;AACtB,mBAAO;AAAA,UACT;AAAA,UACA,MAAM,SAASC,QAAO;AACpB,mBAAO;AAAA,UACT;AAAA,UACA,OAAO,SAASC,SAAQ;AACtB,mBAAOrP;AAAA,UACT;AAAA,QACF,CAAC;AACD,YAAI,gBAAgB,CAAC;AACrB,QAAAjF,UAAS,eAAe;AAAA,UACtB,gBAAgB,SAASuU,kBAAiB;AACxC,mBAAO;AAAA,UACT;AAAA,UACA,eAAe,SAASC,iBAAgB;AACtC,mBAAO;AAAA,UACT;AAAA,UACA,aAAa,SAASC,eAAc;AAClC,mBAAO;AAAA,UACT;AAAA,UACA,eAAe,SAASC,iBAAgB;AACtC,mBAAO;AAAA,UACT;AAAA,UACA,YAAY,SAASC,cAAa;AAChC,mBAAO;AAAA,UACT;AAAA,UACA,gBAAgB,SAASC,kBAAiB;AACxC,mBAAO;AAAA,UACT;AAAA,UACA,iBAAiB,SAASC,mBAAkB;AAC1C,mBAAO;AAAA,UACT;AAAA,QACF,CAAC;AACD,YAAI,oBAAoB,CAAE,YAAY,UAAU,UAAU,SAAS,UAAW;AAC9E,iBAAS,WAAW,aAAa;AAC/B,cAAI,gBAAgB,YAAY;AAChC,cAAI,OAAO,kBAAkB,WAAW;AACtC,mBAAO;AAAA,UACT;AACA,cAAI,YAAY,YAAY,MAAM;AAClC,cAAI,eAAe,YAAY,KAAK,eAAe;AACnD,cAAI,kBAAkB,SAAS,SAAS,KAAK,YAAY,QAAQ,UAAU,GAAG;AAC5E,4BAAgB;AAAA,UAClB,WAAW,cAAc;AACvB,4BAAgB,aAAa,YAAY,MAAM;AAAA,UACjD,WAAW,YAAY,QAAQ;AAC7B,4BAAgB,WAAW,YAAY,MAAM;AAAA,UAC/C,OAAO;AACL,4BAAgB;AAAA,UAClB;AACA,sBAAY,cAAc;AAC1B,iBAAO;AAAA,QACT;AACA,YAAI,sBAAsB;AAC1B,YAAIC,WAAU;AAAA,UACZ,MAAM;AAAA,UACN,OAAO;AAAA,UACP,KAAK;AAAA,UACL,OAAO;AAAA,UACP,SAAS;AAAA,UACT,WAAW;AAAA,UACX,OAAO;AAAA,UACP,MAAM;AAAA,UACN,OAAO7P;AAAA,QACT;AACA,iBAAS,kCAAkC,MAAM,SAAS,aAAa;AACrE,cAAI,UAAU,aAAa,sBAAsB,WAAW;AAC5D,cAAI,OAAO,aAAa,SAAS,aAAa,cAAc,SAAS;AAAA,YACnE,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,cAAc;AAAA,UAChB,CAAC,CAAC,EAAE,YAAY;AAChB,cAAI,CAAC,MAAM;AACT,mBAAO;AAAA,UACT;AACA,cAAI,YAAY;AAAA,YACd;AAAA,YACA,UAAU,YAAY,sBAAsB,MAAM,MAAM;AAAA,UAC1D;AACA,eAAK,KAAK,SAAS;AACnB,eAAK,aAAa,CAAE,IAAK,CAAC;AAC1B,iBAAO;AAAA,QACT;AACA,YAAI,gDAAgD;AACpD,iBAAS,4BAA4B,MAAM,SAAS,aAAa;AAC/D,cAAI,QAAQ,2BAA2B,aAAa,SAAS;AAC7D,iBAAO,MAAM,KAAK,SAAS,OAAO;AAChC,mBAAO,UAAU,KAAK,MAAM,WAAW,aAAa,MAAM,CAAC;AAAA,UAC7D,CAAC;AAAA,QACH;AACA,YAAI,yCAAyC;AAC7C,iBAAS,oBAAoB,MAAM,SAAS,aAAa;AACvD,cAAI,UAAU,YAAY,KAAK,SAAS,KAAK,IAAI,eAAe,QAAQ,MAAM,MAAM;AACpF,iBAAO,YAAY,MAAM,aAAa,CAAC,MAAM;AAAA,QAC/C;AACA,YAAI,gCAAgC;AACpC,iBAAS,oBAAoB,QAAQ;AACnC,kBAAQ,QAAQ;AAAA,YACf,KAAK;AACJ,qBAAO;AAAA,YAER,KAAK;AACJ,qBAAO;AAAA,YAER,KAAK;AACJ,qBAAO;AAAA,YAER,KAAK;AACJ,qBAAO;AAAA,UACT;AACA,mBAAS,SAAS,MAAM;AACxB,iBAAO,CAAC,MAAM,MAAM,IAAI,SAAS;AAAA,QACnC;AACA,iBAAS,iBAAiB,KAAK;AAC7B,cAAI,WAAW;AACf,cAAI,YAAY,IAAI,YAAY,KAAK;AACrC,cAAI,YAAY;AAChB,iBAAO,cAAc,aAAa,aAAa,QAAQ;AACrD,gBAAI,OAAO;AACX,kBAAM;AACN,gBAAI,IAAI,SAAS,WAAW,GAAG;AAC7B,qBAAO;AAAA,YACT;AACA,eAAG;AACD;AACA,0BAAY,IAAI,SAAS,IAAI,EAAE,YAAY,KAAK;AAAA,YAClD,SAAS,cAAc,MAAM,OAAO,IAAI,IAAI,SAAS;AACrD,uBAAW,IAAI,SAAS,IAAI;AAAA,UAC9B;AACA,iBAAO;AAAA,QACT;AACA,iBAAS,eAAe,MAAM;AAC5B,cAAI0H,SAAQlO,QAAO,iBAAiB,iBAAiB,IAAI,CAAC;AAC1D,iBAAO;AAAA,YACL,YAAY,oBAAoBkO,OAAM,iBAAiB,aAAa,CAAC;AAAA,YACrE,UAAU,SAASA,OAAM,iBAAiB,WAAW,CAAC;AAAA,YACtD,UAAUA,OAAM,iBAAiB,YAAY,MAAM;AAAA,UACrD;AAAA,QACF;AACA,iBAAS,cAAc,QAAQ,QAAQ,SAAS;AAC9C,iBAAO,QAAQ,OAAO,SAAS,KAAK,QAAQ;AAC1C,mBAAO,QAAQ,CAAC,OAAO,QAAQ,OAAO,WAAW,OAAO,OAAO,OAAO,cAAc,CAAC,OAAO,UAAU,OAAO,aAAa,OAAO,SAAS,OAAO,gBAAgB,CAAC,OAAO,UAAU,OAAO,YAAY,CAAC,OAAO;AAAA,UAChN,GAAG,KAAK;AAAA,QACV;AACA,iBAAS,mBAAmB,MAAM,SAAS,aAAa;AACtD,cAAI,WAAW,MAAM,KAAK,KAAK,WAAW,QAAQ;AAClD,cAAI,eAAe,SAAS,QAAQ,IAAI;AACxC,oBAAU,WAAW,CAAC;AACtB,cAAI,UAAU,QAAQ,WAAW,CAAC;AAClC,cAAIoI,eAAc,SAAS,MAAM,eAAe,CAAC,EAAE,KAAK,SAAS,KAAK;AACpE,mBAAO,IAAI,SAAS,YAAY,MAAM;AAAA,UACxC,CAAC;AACD,cAAI,cAAc,SAAS,MAAM,GAAG,YAAY,EAAE,QAAQ,EAAE,KAAK,SAAS,KAAK;AAC7E,mBAAO,IAAI,SAAS,YAAY,MAAM;AAAA,UACxC,CAAC;AACD,cAAI,YAAY,eAAe,IAAI;AACnC,cAAI,YAAYA,eAAc,eAAeA,YAAW,IAAI;AAC5D,cAAI,YAAY,cAAc,eAAe,WAAW,IAAI;AAC5D,cAAI,CAAC,aAAa,CAAC,cAAc,WAAW,WAAW,OAAO,GAAG;AAC/D,mBAAO;AAAA,UACT;AACA,cAAI,aAAa,wBAAwB,aAAa,YAAY;AAClE,cAAI,cAAc,WAAW,SAAS,YAAY,MAAM,cAAc;AACpE,mBAAO;AAAA,UACT;AACA,cAAI,aAAa,CAAC,cAAc,WAAW,WAAW,OAAO,GAAG;AAC9D,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,gCAAgC;AACpC,YAAI,gBAAgB,+BAA+B,UAAU;AAC7D,YAAI,wBAAwB,CAAE,SAAS,OAAO,QAAS;AACvD,iBAAS,SAAS,aAAa,SAAS;AACtC,cAAI,OAAO,YAAY;AACvB,cAAI,OAAO,iBAAiB,WAAW;AACvC,cAAI,YAAY,KAAK,aAAa,WAAW,KAAK,IAAI,YAAY,EAAE,KAAK;AACzE,cAAI,CAAE,aAAa,QAAS,EAAE,SAAS,QAAQ,KAAK,sBAAsB,SAAS,IAAI,GAAG;AACxF,mBAAO;AAAA,UACT;AACA,cAAI,cAAc,SAAS,IAAI,GAAG;AAChC,mBAAO;AAAA,UACT;AACA,cAAI,QAAQ,iBAAiB,iBAAiB,aAAa,QAAQ,aAAa,GAAG;AACjF,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,iBAAS,mBAAmB,aAAa,SAAS;AAChD,cAAI,OAAO,YAAY;AACvB,cAAI,SAAS,aAAa,OAAO,KAAK,qBAAqB,YAAY,UAAU,KAAK,iCAAiC,YAAY,YAAY,MAAM,KAAK,CAAC,mBAAmB,MAAM,IAAI,GAAG;AACzL,gBAAI,QAAQ;AACZ,mBAAO,OAAO;AACZ,oBAAM,uBAAuB;AAC7B,sBAAQ,MAAM;AAAA,YAChB;AACA,mBAAO,CAAC;AAAA,UACV,WAAW,SAASpW,UAAS,QAAQ,oBAAoB,MAAM,IAAI,GAAG;AACpE,mBAAO,CAAE,WAAY;AAAA,UACvB,OAAO;AACL,mBAAO,YAAY,SAAS,OAAO,SAAS,QAAQ;AAClD,kBAAI,aAAa,OAAO;AACxB,qBAAO,WAAW,aAAa;AAAA,YACjC,CAAC,EAAE,IAAI,SAASqU,QAAO;AACrB,qBAAO,mBAAmBA,QAAO,OAAO;AAAA,YAC1C,CAAC,EAAE,OAAO,SAAS,GAAG,GAAG;AACvB,qBAAO,EAAE,OAAO,CAAC;AAAA,YACnB,GAAG,CAAC,CAAC;AAAA,UACP;AAAA,QACF;AACA,iBAAS,eAAe,MAAM,SAAS,aAAa;AAClD,cAAI,kBAAkB,cAAc,IAAI,iBAAiB;AACzD,cAAI,iBAAiB;AACnB,mBAAO,CAAC,gBAAgB,SAAS,WAAW;AAAA,UAC9C;AACA,cAAI,OAAO,IAAI;AACf,4BAAkB,mBAAmB,KAAK,CAAC,GAAG,OAAO,EAAE,IAAI,SAAS,OAAO;AACzE,mBAAO,MAAM,UAAU,CAAC,MAAM,OAAO,wBAAwB,MAAM,OAAO,eAAerU,UAAS,MAAM;AACtG,sBAAQ,MAAM;AAAA,YAChB;AACA,mBAAO;AAAA,UACT,CAAC,EAAE,OAAO,SAAS,OAAO0C,QAAOsD,QAAO;AACtC,mBAAOA,OAAM,QAAQ,KAAK,MAAMtD;AAAA,UAClC,CAAC;AACD,wBAAc,IAAI,mBAAmB,eAAe;AACpD,iBAAO,CAAC,gBAAgB,SAAS,WAAW;AAAA,QAC9C;AACA,YAAI,0BAA0B;AAC9B,iBAAS,iBAAiB,MAAM;AAC9B,cAAIvC,UAAS,iCAAiC,MAAM,MAAM;AAC1D,cAAIA,SAAQ;AACV,mBAAO,mBAAmBA,SAAQ,IAAI,KAAK;AAAA,UAC7C;AACA,iBAAO;AAAA,QACT;AACA,YAAI,6BAA6B;AACjC,iBAAS,sBAAsB,SAAS;AACtC,cAAI,SAAS,CAAC;AACd,kBAAQ,QAAQ,SAAS,GAAG;AAC1B,mBAAO,EAAE,IAAI,IAAI,OAAO,EAAE,IAAI,MAAM,SAAS,EAAE,OAAO,EAAE,IAAI,IAAI;AAAA,UAClE,CAAC;AACD,kBAAQ,QAAQ,SAAS,GAAG;AAC1B,cAAE,SAAS,CAAC,CAAC,OAAO,EAAE,IAAI;AAAA,UAC5B,CAAC;AACD,iBAAO;AAAA,QACT;AACA,YAAI,mCAAmC;AACvC,iBAAS,yBAAyB,MAAM,SAAS,OAAO;AACtD,cAAI,QAAQ,iBAAiB,MAAM,KAAK,OAAO,CAAC,EAAE,YAAY;AAC9D,eAAK,KAAK,KAAK;AACf,iBAAO;AAAA,QACT;AACA,YAAI,sCAAsC;AAC1C,iBAAS,kBAAkB,MAAM,SAAS,aAAa;AACrD,iBAAO,CAAC,CAAC,iBAAiB,uBAAuB,WAAW,CAAC;AAAA,QAC/D;AACA,YAAI,8BAA8B;AAClC,iBAAS,uBAAuB,MAAM,SAAS,aAAa;AAC1D,cAAI;AACF,mBAAO,CAAC,CAAC,iBAAiB,4BAA4B,WAAW,CAAC;AAAA,UACpE,SAAS,GAAG;AACV,mBAAO;AAAA,UACT;AAAA,QACF;AACA,YAAI,mCAAmC;AACvC,iBAAS,2BAA2B,MAAM,SAAS;AACjD,cAAI,uBAAuB,QAAQ,cAAc,OAAO,SAAS,UAAU;AACzE,gBAAI,KAAK,MAAM,oBAAoB,QAAQ,MAAM,aAAa;AAC5D,qBAAO;AAAA,YACT;AAAA,UACF,CAAC;AACD,cAAI,qBAAqB,SAAS,GAAG;AACnC,iBAAK,KAAK,oBAAoB;AAC9B,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,wCAAwC;AAC5C,iBAAS,sBAAsB;AAC7B,cAAI,QAAQH,UAAS;AACrB,iBAAO,CAAC,CAAC,iBAAiB,KAAK;AAAA,QACjC;AACA,YAAI,iCAAiC;AACrC,iBAAS,iBAAiB;AACxB,iBAAO;AAAA,QACT;AACA,YAAI,0BAA0B;AAC9B,iBAAS,eAAe,MAAM,SAAS,aAAa;AAClD,cAAI,YAAY,YAAY,MAAM;AAClC,cAAI,CAAC,CAAE,OAAO,SAAS,MAAO,EAAE,SAAS,SAAS,GAAG;AACnD,mBAAO;AAAA,UACT;AACA,iBAAO,YAAY,QAAQ,KAAK;AAAA,QAClC;AACA,YAAI,2BAA2B;AAC/B,iBAAS,mBAAmB,MAAM;AAChC,iBAAO,mBAAmB,MAAM,KAAK,KAAK,CAAC,qBAAqB,IAAI;AAAA,QACtE;AACA,YAAI,gCAAgC;AACpC,iBAAS,0BAA0B,MAAM,SAAS,aAAa;AAC7D,cAAI,YAAY,YAAY,MAAM;AAClC,cAAIuD,SAAQ,YAAY,KAAK,MAAM,KAAK,IAAI,YAAY;AACxD,cAAI,SAAS,YAAY,KAAK,OAAO;AACrC,cAAI,QAAQ;AACV,iBAAK,KAAK;AAAA,cACR,YAAY;AAAA,YACd,CAAC;AAAA,UACH;AACA,cAAI,cAAc,WAAW,CAAE,UAAU,OAAQ,EAAE,SAASA,KAAI,GAAG;AACjE,mBAAO,WAAW;AAAA,UACpB;AACA,iBAAO;AAAA,QACT;AACA,YAAI,wCAAwC;AAC5C,iBAAS,2BAA2B,MAAM,SAAS,aAAa;AAC9D,cAAI,OAAO,iBAAiB,WAAW;AACvC,cAAI,gBAAgB,0BAA0B,WAAW;AACzD,cAAI,CAAE,gBAAgB,MAAO,EAAE,SAAS,IAAI,GAAG;AAC7C,iBAAK,KAAK;AAAA,cACR;AAAA,YACF,CAAC;AACD,mBAAO;AAAA,UACT;AACA,cAAI,CAAC,CAAE,gBAAgB,MAAO,EAAE,SAAS,aAAa,GAAG;AACvD,mBAAO;AAAA,UACT;AACA,cAAI,gBAAgB,8BAA8B,EAAE,KAAK,SAAS,MAAM;AACtE,mBAAO,YAAY,QAAQ,IAAI;AAAA,UACjC,CAAC;AACD,cAAI,YAAY,qBAAqB,WAAW;AAChD,cAAI;AACJ,cAAI,iBAAiB,CAAC,WAAW;AAC/B,yBAAa;AAAA,UACf,WAAW,CAAC,iBAAiB,WAAW;AACtC,yBAAa;AAAA,UACf,OAAO;AACL,yBAAa;AAAA,UACf;AACA,eAAK,KAAK;AAAA,YACR;AAAA,YACA;AAAA,UACF,CAAC;AACD,iBAAO;AAAA,QACT;AACA,YAAI,uCAAuC;AAC3C,iBAAS,yBAAyB,MAAM,SAAS,aAAa;AAC5D,cAAI,CAAC,YAAY,UAAU;AACzB,mBAAO;AAAA,UACT;AACA,cAAI,YAAY,YAAY,SAAS,KAAK,SAAS,QAAQ;AACzD,gBAAI9C,SAAQ,OAAO;AACnB,mBAAOA,OAAM,aAAa;AAAA,UAC5B,CAAC;AACD,cAAI,CAAC,WAAW;AACd,iBAAK,KAAK;AAAA,cACR,YAAY;AAAA,YACd,CAAC;AACD,mBAAO;AAAA,UACT;AACA,cAAI;AACF,gBAAI,wBAAwB,SAAS,MAAM,IAAI;AAC7C,mBAAK,KAAK;AAAA,gBACR,YAAY;AAAA,cACd,CAAC;AACD,qBAAO;AAAA,YACT;AAAA,UACF,SAAS,GAAG;AACV,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,uCAAuC;AAC3C,iBAAS,2BAA2B,MAAM,SAAS,aAAa,UAAU;AACxE,cAAI,SAAS,YAAY,CAAC,GAAG,eAAe,OAAO,OAAO,QAAQ,iBAAiB,SAAS,SAAS;AACrG,cAAI,SAAS,WAAW,CAAC,GAAG,wBAAwB,OAAO,iBAAiB,kBAAkB,0BAA0B,SAAS,IAAI;AACrI,cAAI,CAAC,SAAS,CAAC,MAAM,QAAQ;AAC3B,mBAAO;AAAA,UACT;AACA,cAAI,WAAW;AACf,cAAI,kBAAkB,CAAC;AACvB,cAAI,+BAA+B,qBAAqB,KAAK;AAC7D,cAAI,SAAS,SAAS4V,UAAS;AAC7B,gBAAI,MAAM,cAAc,IAAI;AAC5B,gBAAI,wBAAwB,6BAA6B,GAAG,GAAGxI,QAAO,sBAAsB,MAAM,QAAQ,sBAAsB;AAChI,gBAAI,mBAAmB,MAAM,OAAO,0BAA0B;AAC9D,gBAAI,CAAC,iBAAiB,QAAQ;AAC5B,qBAAO;AAAA,YACT;AACA,6BAAiB,QAAQ,SAAS,QAAQ;AACxC,kBAAI,WAAW,OAAO;AACtB,oBAAM,KAAK,QAAQ,EAAE,QAAQ,SAAS,SAAS;AAC7C,oBAAI,SAAS,uBAAuB,OAAO;AAC3C,oBAAI,UAAU,QAAQ,aAAa,YAAY,MAAM,QAAQ;AAC3D,sBAAI,OAAO,MAAM,KAAKA,MAAK,iBAAiB,QAAQ,YAAY,CAAC,KAAK,CAAC;AACvE,oCAAkB,gBAAgB,OAAO,IAAI;AAAA,gBAC/C;AACA,2BAAW,YAAY;AAAA,cACzB,CAAC;AAAA,YACH,CAAC;AAAA,UACH;AACA,mBAAS,OAAO,GAAG,gBAAgB,OAAO,KAAK,4BAA4B,GAAG,OAAO,cAAc,QAAQ,QAAQ;AACjH,gBAAI,QAAQ,OAAO;AACnB,gBAAI,UAAU,YAAY;AACxB;AAAA,YACF;AAAA,UACF;AACA,cAAI,CAAC,UAAU;AACb,mBAAO;AAAA,UACT;AACA,cAAI,gBAAgB,QAAQ;AAC1B,iBAAK,aAAa,eAAe;AAAA,UACnC;AACA,iBAAO;AACP,mBAAS,qBAAqB,gBAAgB;AAC5C,mBAAO,eAAe,OAAO,SAAS,KAAK,QAAQ;AACjD,kBAAI,QAAQ,OAAO,OAAOA,QAAO,OAAO,MAAM,WAAW,OAAO;AAChE,kBAAI,MAAM,WAAW,WAAW;AAChC,kBAAI,CAAC,IAAI,GAAG,GAAG;AACb,oBAAI,GAAG,IAAI;AAAA,kBACT,MAAMA;AAAA,kBACN,OAAO,CAAC;AAAA,gBACV;AAAA,cACF;AACA,kBAAI,CAAC,SAAS,CAAC,MAAM,UAAU;AAC7B,uBAAO;AAAA,cACT;AACA,kBAAI,QAAQ,MAAM,KAAK,MAAM,QAAQ;AACrC,kBAAI,GAAG,EAAE,QAAQ,IAAI,GAAG,EAAE,MAAM,OAAO,KAAK;AAC5C,qBAAO;AAAA,YACT,GAAG,CAAC,CAAC;AAAA,UACP;AACA,mBAAS,2BAA2B,QAAQ;AAC1C,gBAAItK,QAAO,OAAO,MAAM,UAAU,OAAO;AACzC,gBAAIA,UAAS,GAAG;AACd,qBAAO;AAAA,YACT;AACA,mBAAO,4BAA4B,KAAK,OAAO,KAAK,2BAA2B,KAAK,OAAO;AAAA,UAC7F;AACA,mBAAS,uBAAuB,QAAQ;AACtC,gBAAI,eAAe,OAAO,cAAcyK,SAAQ,OAAO;AACvD,gBAAI,CAAC,gBAAgBA,OAAM,UAAU,GAAG;AACtC,qBAAO;AAAA,YACT;AACA,gBAAI,iBAAiBA,OAAM,aAAaA,OAAM,mBAAmBA,OAAM,eAAe;AACtF,gBAAI,CAAC,gBAAgB;AACnB,qBAAO;AAAA,YACT;AACA,gBAAI,YAAY,eAAe,MAAM,qGAAqG;AAC1I,gBAAI,CAAC,WAAW;AACd,qBAAO;AAAA,YACT;AACA,gBAAI,WAAW,eAAe,WAAW,CAAC,GAAG,cAAc,SAAS,CAAC,GAAG,mBAAmB,SAAS,CAAC;AACrG,gBAAIsI,WAAU,qBAAqB,aAAa,gBAAgB;AAChE,gBAAI,CAACA,UAAS;AACZ,qBAAO;AAAA,YACT;AACA,YAAAA,WAAU,KAAK,IAAIA,QAAO;AAC1B,gBAAI,KAAK,IAAIA,WAAU,GAAG,IAAI,OAAO,iBAAiB;AACpD,qBAAO;AAAA,YACT;AACA,mBAAO,KAAK,IAAIA,WAAU,EAAE,IAAI,MAAM;AAAA,UACxC;AACA,mBAAS,qBAAqB,mBAAmB,kBAAkB;AACjE,oBAAQ,mBAAmB;AAAA,cAC1B,KAAK;AAAA,cACL,KAAK;AACJ,uBAAO,kBAAkB,gBAAgB;AAAA,cAE1C,KAAK;AACJ,oBAAI,wBAAwB,iBAAiB,MAAM,GAAG,EAAE,IAAI,SAAS,OAAO;AAC1E,yBAAO,MAAM,KAAK;AAAA,gBACpB,CAAC,GAAG,yBAAyB,eAAe,uBAAuB,CAAC,GAAG,IAAI,uBAAuB,CAAC,GAAG,gBAAgB,uBAAuB,CAAC;AAC9I,oBAAI,SAAS,CAAC,MAAM,GAAG;AACrB;AAAA,gBACF;AACA,uBAAO,kBAAkB,aAAa;AAAA,cAEvC,KAAK;AAAA,cACL,KAAK;AACJ,uBAAO,qCAAqC,gBAAgB;AAAA,cAE7D;AACC;AAAA,YACF;AAAA,UACF;AACA,mBAAS,kBAAkB,eAAe;AACxC,gBAAI,SAAS,cAAc,MAAM,qBAAqB,KAAK,CAAC,GAAG,SAAS,eAAe,QAAQ,CAAC,GAAG,OAAO,OAAO,CAAC;AAClH,gBAAI,CAAC,MAAM;AACT;AAAA,YACF;AACA,gBAAI,QAAQ,WAAW,cAAc,QAAQ,MAAM,EAAE,CAAC;AACtD,oBAAQ,MAAM;AAAA,cACb,KAAK;AACJ,uBAAO,gBAAgB,KAAK;AAAA,cAE7B,KAAK;AACJ,uBAAO,iBAAiB,KAAK;AAAA,cAE9B,KAAK;AACJ,uBAAO,iBAAiB,KAAK;AAAA,cAE9B,KAAK;AAAA,cACL;AACC,uBAAO,SAAS,KAAK;AAAA,YACvB;AAAA,UACF;AACA,mBAAS,qCAAqC,kBAAkB;AAC9D,gBAAI,SAAS,iBAAiB,MAAM,GAAG;AACvC,gBAAI,OAAO,UAAU,GAAG;AACtB,kBAAI,UAAU,eAAe,QAAQ,CAAC,GAAG,IAAI,QAAQ,CAAC,GAAG,KAAK,QAAQ,CAAC;AACvE,kBAAI,UAAU,KAAK,MAAM,WAAW,EAAE,GAAG,WAAW,CAAC,CAAC;AACtD,qBAAO,gBAAgB,OAAO;AAAA,YAChC;AACA,gBAAI,OAAO,WAAW,OAAO,CAAC,CAAC;AAC/B,gBAAI,IAAI,KAAK,KAAK,IAAI;AACtB,gBAAI,OAAO,KAAK,IAAI,CAAC;AACrB,gBAAI,iBAAiB,KAAK,KAAK,WAAW,OAAO,CAAC,CAAC,IAAI,IAAI;AAC3D,mBAAO,gBAAgB,cAAc;AAAA,UACvC;AACA,mBAAS,gBAAgB,SAAS;AAChC,mBAAO,KAAK,MAAM,WAAW,MAAM,KAAK,GAAG;AAAA,UAC7C;AACA,mBAAS,iBAAiB,MAAM;AAC9B,mBAAO,OAAO;AACd,gBAAI,OAAO,GAAG;AACZ,sBAAQ;AAAA,YACV;AACA,mBAAO,KAAK,MAAM,OAAO,MAAM,GAAG;AAAA,UACpC;AACA,mBAAS,iBAAiB,MAAM;AAC9B,mBAAO,KAAK,MAAM,OAAO,IAAI,KAAK;AAAA,UACpC;AAAA,QACF;AACA,YAAI,wCAAwC;AAC5C,iBAAS,0BAA0B,MAAM,SAAS,aAAa;AAC7D,cAAI,SAAS,WAAW,CAAC,GAAG,sBAAsB,OAAO,cAAc,eAAe,wBAAwB,SAAS,IAAI,qBAAqB,oBAAoB,OAAO,YAAY,aAAa,sBAAsB,SAAS,QAAQ;AAC3O,cAAI,UAAU,YAAY,KAAK,SAAS,KAAK;AAC7C,cAAI,CAAC,SAAS;AACZ,mBAAO;AAAA,UACT;AACA,cAAI,SAAS,QAAQ,MAAM,MAAM,EAAE,OAAO,SAAS,KAAK,MAAM;AAC5D,gBAAI,eAAe,KAAK,KAAK;AAC7B,gBAAI,CAAC,cAAc;AACjB,qBAAO;AAAA,YACT;AACA,gBAAI,sBAAsB,aAAa,MAAM,GAAG,GAAG,uBAAuB,eAAe,qBAAqB,CAAC,GAAG,MAAM,qBAAqB,CAAC,GAAG,QAAQ,qBAAqB,CAAC;AAC/K,gBAAI,CAAC,OAAO,CAAC,OAAO;AAClB,qBAAO;AAAA,YACT;AACA,gBAAI,aAAa,IAAI,YAAY,EAAE,KAAK;AACxC,gBAAI,eAAe,MAAM,YAAY,EAAE,KAAK;AAC5C,gBAAI,eAAe,mBAAmB,iBAAiB,OAAO;AAC5D,6BAAe;AAAA,YACjB;AACA,gBAAI,eAAe,mBAAmB,WAAW,YAAY,IAAI,GAAG;AAClE,qBAAO;AAAA,YACT;AACA,gBAAI,UAAU,IAAI;AAClB,mBAAO;AAAA,UACT,GAAG,CAAC,CAAC;AACL,cAAI,cAAc,OAAO,eAAe,KAAK,WAAW,OAAO,eAAe,CAAC,IAAI,YAAY;AAC7F,mBAAO;AAAA,UACT;AACA,cAAI,CAAC,cAAc,OAAO,eAAe,MAAM,MAAM;AACnD,iBAAK,KAAK,kBAAkB;AAC5B,mBAAO;AAAA,UACT;AACA,cAAI,OAAO,eAAe,KAAK,WAAW,OAAO,eAAe,CAAC,IAAI,cAAc;AACjF,iBAAK,KAAK,eAAe;AACzB,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,uCAAuC;AAC3C,iBAAS,iBAAiB,SAAS;AACjC,cAAI,YAAY,CAAC;AACjB,iBAAO,QAAQ,OAAO,SAAS,GAAG;AAChC,gBAAI,UAAU,QAAQ,EAAE,IAAI,MAAM,IAAI;AACpC,wBAAU,KAAK,EAAE,IAAI;AACrB,qBAAO;AAAA,YACT;AACA,mBAAO;AAAA,UACT,CAAC;AAAA,QACH;AACA,YAAI,6BAA6B;AACjC,iBAAS,oBAAoB,MAAM;AACjC,cAAI1S,MAAK,KAAK,aAAa,IAAI,EAAE,KAAK;AACtC,cAAI,CAACA,KAAI;AACP,mBAAO;AAAA,UACT;AACA,cAAIiK,QAAO,uBAAuB,IAAI;AACtC,cAAI,gBAAgB,MAAM,KAAKA,MAAK,iBAAiB,QAAQ,OAAO,wBAAwBjK,GAAE,GAAG,IAAI,CAAC,CAAC,EAAE,OAAO,SAAS,WAAW;AAClI,mBAAO,cAAc;AAAA,UACvB,CAAC;AACD,cAAI,cAAc,QAAQ;AACxB,iBAAK,aAAa,aAAa;AAAA,UACjC;AACA,eAAK,KAAKA,GAAE;AACZ,iBAAO,cAAc,WAAW;AAAA,QAClC;AACA,YAAI,gCAAgC;AACpC,iBAAS,gBAAgB,SAAS;AAChC,cAAI,OAAO,CAAC;AACZ,iBAAO,QAAQ,OAAO,SAAS,GAAG;AAChC,gBAAI,CAAC,EAAE,MAAM;AACX,qBAAO;AAAA,YACT;AACA,gBAAI,MAAM,EAAE,KAAK,YAAY;AAC7B,gBAAI,CAAC,KAAK,GAAG,GAAG;AACd,mBAAK,GAAG,IAAI;AACZ,gBAAE,eAAe,CAAC;AAClB,qBAAO;AAAA,YACT;AACA,iBAAK,GAAG,EAAE,aAAa,KAAK,EAAE,aAAa,CAAC,CAAC;AAC7C,mBAAO;AAAA,UACT,CAAC,EAAE,IAAI,SAAS,GAAG;AACjB,cAAE,SAAS,CAAC,CAAC,EAAE,aAAa;AAC5B,mBAAO;AAAA,UACT,CAAC;AAAA,QACH;AACA,YAAI,2BAA2B;AAC/B,iBAAS,mBAAmB,MAAM;AAChC,cAAI,mBAAmB,MAAM,KAAK,GAAG;AACnC,iBAAK,KAAK,KAAK,aAAa,WAAW,CAAC;AACxC,iBAAK,aAAa,CAAE,IAAK,CAAC;AAAA,UAC5B;AACA,iBAAO;AAAA,QACT;AACA,YAAI,8BAA8B;AAClC,iBAAS,yBAAyB,MAAM,SAAS,aAAa;AAC5D,cAAI,mBAAmB,YAAY;AACnC,cAAI,CAAC,kBAAkB;AACrB,mBAAO;AAAA,UACT;AACA,cAAI,0BAA0B,iBAAiB,OAAO,SAAS,IAAI;AACjE,mBAAO,OAAO;AAAA,UAChB,CAAC;AACD,iBAAO,wBAAwB,SAAS;AAAA,QAC1C;AACA,YAAI,qCAAqC;AACzC,iBAAS,0BAA0B,MAAM,SAAS,aAAa;AAC7D,cAAI,4BAA4B,CAAE,UAAU,YAAY,SAAS,UAAU,UAAW;AACtF,cAAI,mBAAmB,YAAY;AACnC,cAAI,CAAC,oBAAoB,CAAC,iBAAiB,QAAQ;AACjD,mBAAO;AAAA,UACT;AACA,cAAI,eAAe,iBAAiB,OAAO,SAAS,KAAK,QAAQ;AAC/D,gBAAI,KAAK,OAAO;AAChB,gBAAI,YAAY,GAAG,SAAS,YAAY;AACxC,gBAAI,0BAA0B,SAAS,SAAS,GAAG;AACjD,kBAAI,KAAK,EAAE;AAAA,YACb;AACA,mBAAO;AAAA,UACT,GAAG,CAAC,CAAC;AACL,eAAK,aAAa,YAAY;AAC9B,cAAI,aAAa,UAAU,sBAAsB,GAAG;AAClD,mBAAO;AAAA,UACT;AACA,iBAAO,aAAa,WAAW;AAAA,QACjC;AACA,YAAI,sCAAsC;AAC1C,iBAAS,yBAAyB,MAAM,SAAS,aAAa;AAC5D,cAAI,YAAY,QAAQ,iBAAiB,KAAK,kBAAkB,WAAW,GAAG;AAC5E,mBAAO;AAAA,UACT;AACA,cAAI,eAAe,YAAY;AAC/B,cAAI,WAAW,SAAS,YAAY,KAAK,UAAU,GAAG,EAAE;AACxD,qBAAW,CAAC,MAAM,QAAQ,IAAI,WAAW;AACzC,iBAAO,WAAW,gBAAgB,YAAY,IAAI;AAClD,mBAAS,kBAAkB,OAAO;AAChC,gBAAI,kBAAkB,MAAM,KAAK,iBAAiB;AAClD,gBAAI,oBAAoB,UAAU,oBAAoB,IAAI;AACxD,qBAAO;AAAA,YACT;AACA,gBAAI,oBAAoB,SAAS;AAC/B,qBAAO;AAAA,YACT;AACA,gBAAI,WAAW,gBAAgB,YAAY,QAAQ,mBAAmB;AACtE,gBAAI,CAAC,UAAU;AACb,qBAAO;AAAA,YACT;AACA,mBAAO,kBAAkB,QAAQ;AAAA,UACnC;AAAA,QACF;AACA,YAAI,qCAAqC;AACzC,iBAAS,2BAA2B,MAAM,SAAS,aAAa;AAC9D,cAAI,mBAAmB,YAAY,iBAAiB,IAAI,SAAS,QAAQ;AACvE,gBAAI,aAAa,OAAO;AACxB,mBAAO;AAAA,UACT,CAAC;AACD,cAAI,CAAC,oBAAoB,CAAC,iBAAiB,QAAQ;AACjD,mBAAO;AAAA,UACT;AACA,cAAI,sBAAsB,GAAG;AAC3B,iBAAK,aAAa,gBAAgB;AAClC,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,wCAAwC;AAC5C,iBAAS,wBAAwB,MAAM,SAAS,aAAa;AAC3D,cAAI,WAAW,YAAY,KAAK,UAAU;AAC1C,cAAI,eAAe,qBAAqB,WAAW,KAAK,WAAW;AACnE,cAAI,CAAC,cAAc;AACjB,mBAAO;AAAA,UACT;AACA,cAAI;AACF,mBAAO,CAAC,gCAAgC,WAAW;AAAA,UACrD,SAAS,GAAG;AACV,mBAAO;AAAA,UACT;AAAA,QACF;AACA,YAAI,qCAAqC;AACzC,iBAAS,6BAA6B,MAAM,SAAS,aAAa;AAChE,cAAI,4BAA4B,CAAE,UAAU,YAAY,SAAS,UAAU,UAAW;AACtF,cAAI,mBAAmB,YAAY;AACnC,cAAI,CAAC,oBAAoB,CAAC,iBAAiB,QAAQ;AACjD,mBAAO;AAAA,UACT;AACA,cAAI,eAAe,iBAAiB,OAAO,SAAS,KAAK,QAAQ;AAC/D,gBAAI,KAAK,OAAO;AAChB,gBAAI,YAAY,GAAG,SAAS,YAAY;AACxC,gBAAI,CAAC,0BAA0B,SAAS,SAAS,GAAG;AAClD,kBAAI,KAAK,EAAE;AAAA,YACb;AACA,mBAAO;AAAA,UACT,GAAG,CAAC,CAAC;AACL,eAAK,aAAa,YAAY;AAC9B,cAAI,aAAa,SAAS,KAAK,sBAAsB,GAAG;AACtD,mBAAO;AAAA,UACT;AACA,iBAAO,aAAa,WAAW;AAAA,QACjC;AACA,YAAI,0CAA0C;AAC9C,iBAAS,2BAA2B,MAAM;AACxC,cAAI,YAAY,+BAA+B,UAAU;AACzD,cAAI,SAAS,4BAA4B,IAAI;AAC7C,cAAI,WAAW,iBAAiB,IAAI;AACpC,eAAK,KAAK;AAAA,YACR,MAAM;AAAA,UACR,CAAC;AACD,iBAAO,QAAQ;AACb,gBAAI,OAAO,OAAO,aAAa,MAAM;AACrC,gBAAI,CAAC,QAAQ,OAAO,SAAS,YAAY,MAAM,QAAQ;AACrD,qBAAO,sBAAsB,MAAM;AAAA,YACrC;AACA,gBAAI,QAAQ,UAAU,SAAS,IAAI,KAAK,EAAE,SAAS,UAAU,aAAa,kBAAkB;AAC1F,qBAAO;AAAA,YACT;AACA,qBAAS,4BAA4B,MAAM;AAAA,UAC7C;AACA,iBAAO;AAAA,QACT;AACA,YAAI,yCAAyC;AAC7C,iBAAS,qBAAqB,OAAO;AACnC,cAAI,qBAAqB,KAAK,GAAG;AAC/B,mBAAO;AAAA,UACT;AACA,cAAI,CAAC,MAAM,UAAU;AACnB,gBAAI,MAAM,MAAM,aAAa,GAAG;AAC9B,oBAAM,IAAI,MAAM,2BAA2B;AAAA,YAC7C;AACA,mBAAO;AAAA,UACT;AACA,iBAAO,MAAM,SAAS,KAAK,SAAS,OAAO;AACzC,mBAAO,qBAAqB,KAAK;AAAA,UACnC,CAAC;AAAA,QACH;AACA,iBAAS,0BAA0B,MAAM,SAAS,aAAa;AAC7D,cAAI,CAAC,YAAY,UAAU;AACzB,mBAAO;AAAA,UACT;AACA,cAAI;AACF,mBAAO,CAAC,YAAY,SAAS,KAAK,SAAS,OAAO;AAChD,qBAAO,qBAAqB,KAAK;AAAA,YACnC,CAAC;AAAA,UACH,SAAS,GAAG;AACV,mBAAO;AAAA,UACT;AAAA,QACF;AACA,YAAI,wCAAwC;AAC5C,iBAAS,iBAAiB,MAAM,SAAS,aAAa;AACpD,cAAI,WAAW,SAAS,YAAY,KAAK,UAAU,GAAG,EAAE;AACxD,iBAAO,MAAM,QAAQ,IAAI,OAAO,YAAY;AAAA,QAC9C;AACA,YAAI,4BAA4B;AAChC,iBAAS,sBAAsB,MAAM,SAAS,aAAa;AACzD,cAAI,MAAM,YAAY,KAAK,KAAK;AAChC,cAAI,cAAc;AAClB,iBAAO,OAAO,QAAQ,YAAY,YAAY,KAAK,GAAG;AAAA,QACxD;AACA,YAAI,mCAAmC;AACvC,iBAAS,0BAA0B,MAAM,SAAS,aAAa;AAC7D,cAAI,CAAE,QAAQ,cAAe,EAAE,SAAS,iBAAiB,WAAW,CAAC,GAAG;AACtE,mBAAO;AAAA,UACT;AACA,cAAI,cAAc,gBAAgB,aAAa,QAAQ,cAAc;AACrE,cAAI,CAAC,aAAa;AAChB,mBAAO;AAAA,UACT;AACA,cAAI,cAAc,wBAAwB,aAAa,IAAI,EAAE,YAAY;AACzE,cAAI,gBAAgB,IAAI;AACtB,mBAAO;AAAA,UACT;AACA,iBAAO,gBAAgB,gCAAgC,WAAW,EAAE,YAAY;AAAA,QAClF;AACA,YAAI,uCAAuC;AAC3C,iBAAS,iBAAiB,MAAM,SAAS,aAAa;AACpD,cAAI,YAAY,KAAK,IAAI,GAAG;AAC1B,gBAAI,CAAC,YAAY,YAAY;AAC3B,qBAAO;AAAA,YACT;AACA,gBAAIiK,QAAO,uBAAuB,YAAY,UAAU;AACxD,gBAAIjK,MAAK,wBAAwB,YAAY,KAAK,IAAI,CAAC;AACvD,gBAAI,SAAS,MAAM,KAAKiK,MAAK,iBAAiB,cAAc,OAAOjK,KAAI,IAAI,CAAC,CAAC;AAC7E,gBAAI,OAAO,QAAQ;AACjB,kBAAI;AACF,uBAAO,OAAO,KAAK,SAAS,QAAQ;AAClC,sBAAI,CAAC,mBAAmB,MAAM,GAAG;AAC/B,2BAAO;AAAA,kBACT,OAAO;AACL,2BAAO,CAAC,CAAC,wBAAwB,MAAM;AAAA,kBACzC;AAAA,gBACF,CAAC;AAAA,cACH,SAAS,GAAG;AACV,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AACA,YAAI,4BAA4B;AAChC,iBAAS,wBAAwB,MAAM,SAAS,aAAa;AAC3D,cAAI,aAAa,uBAAuB,WAAW,GAAG,SAAS,KAAK,aAAa,OAAO;AACxF,cAAI,CAAC,YAAY;AACf,mBAAO;AAAA,UACT;AACA,cAAI,CAAC,QAAQ;AACX,qBAAS;AACT,gBAAI,KAAK,aAAa,kBAAkB,GAAG;AACzC,kBAAI2K,OAAM,eAAe,MAAM,kBAAkB;AACjD,uBAASA,KAAI,IAAI,SAAS,OAAO;AAC/B,uBAAO,QAAQ,wBAAwB,KAAK,IAAI;AAAA,cAClD,CAAC,EAAE,KAAK,EAAE;AAAA,YACZ;AAAA,UACF;AACA,iBAAO,iBAAiB,MAAM,MAAM,iBAAiB,UAAU;AAAA,QACjE;AACA,YAAI,sCAAsC;AAC1C,iBAAS,4BAA4B,MAAM,SAAS,aAAa;AAC/D,cAAI,YAAY,QAAQ,IAAI,GAAG;AAC7B,gBAAI,CAAC,YAAY,YAAY;AAC3B,qBAAO;AAAA,YACT;AACA,gBAAIV,QAAO,uBAAuB,IAAI;AACtC,gBAAIjK,MAAK,wBAAwB,KAAK,aAAa,IAAI,CAAC;AACxD,gBAAI,SAASiK,MAAK,cAAc,cAAc,OAAOjK,KAAI,IAAI,CAAC;AAC9D,gBAAI,UAAU,CAAC,mBAAmB,QAAQ,IAAI,GAAG;AAC/C,kBAAI;AACJ,kBAAI;AACF,uBAAO,gCAAgC,WAAW,EAAE,KAAK;AAAA,cAC3D,SAAS,GAAG;AACV,uBAAO;AAAA,cACT;AACA,kBAAI,cAAc,SAAS;AAC3B,qBAAO;AAAA,YACT;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AACA,YAAI,yCAAyC;AAC7C,iBAAS,iBAAiB,MAAM,SAAS,aAAa;AACpD,cAAI;AACF,gBAAI,SAAS,gBAAgB,aAAa,OAAO;AACjD,gBAAI,QAAQ;AACV,qBAAO,CAAC,CAAC,gCAAgC,QAAQ;AAAA,gBAC/C,kBAAkB;AAAA,cACpB,CAAC;AAAA,YACH;AACA,mBAAO;AAAA,UACT,SAAS,GAAG;AACV,mBAAO;AAAA,UACT;AAAA,QACF;AACA,YAAI,4BAA4B;AAChC,iBAAS,kBAAkB,SAAS,aAAa;AAC/C,cAAI,qBAAqB,aAAa,WAAW;AACjD,cAAI,iBAAiB,aAAa,OAAO;AACzC,cAAI,CAAC,sBAAsB,CAAC,gBAAgB;AAC1C,mBAAO;AAAA,UACT;AACA,iBAAO,mBAAmB,SAAS,cAAc;AAAA,QACnD;AACA,iBAAS,aAAa7B,MAAK;AACzB,cAAI,eAAe,uBAAuBA,MAAK;AAAA,YAC7C,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,cAAc;AAAA,UAChB,CAAC;AACD,iBAAO,iBAAiB,YAAY;AAAA,QACtC;AACA,iBAAS,iCAAiC,MAAM,SAAS,aAAa;AACpE,cAAI,SAAS,WAAW,CAAC,GAAG,iBAAiB,OAAO,gBAAgB,qBAAqB,OAAO;AAChG,cAAI,UAAU,wBAAwB,IAAI,EAAE,YAAY;AACxD,cAAI,+BAA+B,OAAO,IAAI,GAAG;AAC/C,mBAAO;AAAA,UACT;AACA,cAAI,aAAa,2BAA2B,WAAW;AACvD,cAAI,kBAAkB,WAAW,OAAO,SAAS,WAAW;AAC1D,mBAAO,CAAC,yBAAyB,WAAW,gBAAgB,kBAAkB;AAAA,UAChF,CAAC,EAAE,IAAI,SAAS,WAAW;AACzB,mBAAO,UAAU,WAAW;AAAA,UAC9B,CAAC,EAAE,KAAK,EAAE;AACV,cAAI,cAAc,iBAAiB,eAAe,EAAE,YAAY;AAChE,cAAI,CAAC,aAAa;AAChB,mBAAO;AAAA,UACT;AACA,cAAI,+BAA+B,WAAW,IAAI,GAAG;AACnD,gBAAI,kBAAkB,aAAa,OAAO,GAAG;AAC3C,qBAAO;AAAA,YACT;AACA,mBAAO;AAAA,UACT;AACA,iBAAO,kBAAkB,aAAa,OAAO;AAAA,QAC/C;AACA,YAAI,+CAA+C;AACnD,iBAAS,sBAAsB,MAAM;AACnC,cAAI6B,MAAK,wBAAwB,KAAK,aAAa,IAAI,CAAC;AACxD,cAAI,SAAS,KAAK;AAClB,cAAIiK,QAAO,uBAAuB,IAAI;AACtC,UAAAA,QAAOA,MAAK,mBAAmBA;AAC/B,cAAI,SAAS,MAAM,KAAKA,MAAK,iBAAiB,cAAc,OAAOjK,KAAI,IAAI,CAAC,CAAC;AAC7E,cAAI,OAAO,QAAQ;AACjB,qBAAS,OAAO,OAAO,SAAS,QAAQ;AACtC,qBAAO,mBAAmB,MAAM;AAAA,YAClC,CAAC;AAAA,UACH;AACA,iBAAO,QAAQ;AACb,gBAAI,OAAO,SAAS,YAAY,MAAM,WAAW,OAAO,QAAQ,MAAM,MAAM,IAAI;AAC9E,qBAAO,KAAK,MAAM;AAAA,YACpB;AACA,qBAAS,OAAO;AAAA,UAClB;AACA,eAAK,aAAa,MAAM;AACxB,cAAI,OAAO,SAAS,GAAG;AACrB,gBAAI,kBAAkB,OAAO,OAAO,SAAS,QAAQ;AACnD,qBAAO,mBAAmB,QAAQ,IAAI;AAAA,YACxC,CAAC;AACD,gBAAI,gBAAgB,SAAS,GAAG;AAC9B,qBAAO;AAAA,YACT;AACA,gBAAI,aAAa,eAAe,MAAM,iBAAiB;AACvD,mBAAO,CAAC,WAAW,SAAS,gBAAgB,CAAC,CAAC,IAAI,SAAS;AAAA,UAC7D;AACA,iBAAO;AAAA,QACT;AACA,YAAI,kCAAkC;AACtC,iBAAS,kBAAkB,MAAM,SAAS,aAAa;AACrD,cAAI,aAAa,uBAAuB,WAAW;AACnD,cAAI,QAAQ,mBAAmB,WAAW;AAC1C,cAAI,kBAAkB,YAAY,KAAK,kBAAkB;AACzD,iBAAO,CAAC,cAAc,CAAC,EAAE,SAAS;AAAA,QACpC;AACA,YAAI,8BAA8B;AAClC,iBAAS,sBAAsB,SAAS;AACtC,cAAI,kBAAkB,CAAC;AACvB,iBAAO,QAAQ,OAAO,SAAS,eAAe;AAC5C,gBAAI,YAAY,SAAS2S,WAAU,YAAY;AAC7C,qBAAO,cAAc,KAAK,SAAS,WAAW,KAAK,QAAQ,cAAc,KAAK,mBAAmB,WAAW,KAAK;AAAA,YACnH;AACA,gBAAI,gBAAgB,gBAAgB,KAAK,SAAS;AAClD,gBAAI,eAAe;AACjB,4BAAc,SAAS;AACvB,4BAAc,aAAa,KAAK,cAAc,aAAa,CAAC,CAAC;AAC7D,qBAAO;AAAA,YACT;AACA,4BAAgB,KAAK,aAAa;AAClC,0BAAc,eAAe,CAAC;AAC9B,mBAAO;AAAA,UACT,CAAC;AAAA,QACH;AACA,YAAI,mCAAmC;AACvC,iBAAS,yBAAyB,MAAM,SAAS,aAAa;AAC5D,cAAI,OAAO,iBAAiB,IAAI;AAChC,cAAI,kBAAkB,gCAAgC,WAAW;AACjE,4BAAkB,kBAAkB,gBAAgB,YAAY,IAAI;AACpE,eAAK,KAAK;AAAA,YACR;AAAA,YACA,gBAAgB;AAAA,UAClB,CAAC;AACD,eAAK,aAAa,CAAE,IAAK,CAAC;AAC1B,iBAAO;AAAA,QACT;AACA,YAAI,sCAAsC;AAC1C,iBAAS,SAAS,OAAO;AACvB,kBAAQ,SAAS,IAAI,KAAK,MAAM;AAAA,QAClC;AACA,iBAAS,gBAAgB,MAAM,SAAS,aAAa;AACnD,cAAIC,UAAS,OAAOxW,cAAa,cAAc,iBAAiBA,SAAQ,IAAI;AAC5E,cAAI,QAAQ,WAAW,SAAS,UAAU,KAAK,QAAQ,WAAW,SAAS,MAAM,KAAK,SAAS,YAAY,KAAK,UAAU,CAAC,KAAK,CAAC,SAAS,YAAY,KAAK,MAAM,CAAC,KAAK,CAACwW,SAAQ;AAC9K,iBAAK,KAAK;AAAA,cACR,YAAY;AAAA,YACd,CAAC;AACD,mBAAO;AAAA,UACT;AACA,cAAI,UAAU,QAAQ,WAAW,KAAK,SAAS,MAAM;AACnD,mBAAO,SAAS,YAAY,KAAK,IAAI,CAAC;AAAA,UACxC,CAAC;AACD,cAAI,CAAC,SAAS;AACZ,iBAAK,KAAK;AAAA,cACR,YAAY;AAAA,YACd,CAAC;AACD,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,4BAA4B;AAChC,iBAAS,kBAAkB,MAAM,SAAS,aAAa;AACrD,cAAI,UAAU,CAAC;AACf,kBAAQ,WAAW,QAAQ,SAAS,UAAU;AAC5C,gBAAI,UAAU,YAAY,KAAK,QAAQ;AACvC,gBAAI,OAAO,YAAY,UAAU;AAC/B;AAAA,YACF;AACA,gBAAI,cAAc,sBAAsB,OAAO;AAC/C,gBAAI,cAAc,QAAQ,QAAQ,CAAC,QAAQ,MAAM,IAAI,qBAAqB,EAAE,SAAS,WAAW,IAAI,CAAC,oBAAoB,WAAW;AACpI,gBAAI,gBAAgB,MAAM,eAAe,YAAY,MAAM,CAAC,iBAAiB,OAAO,GAAG;AACrF,sBAAQ,KAAK,WAAW,OAAO,YAAY,KAAK,QAAQ,IAAI,GAAG;AAAA,YACjE;AAAA,UACF,CAAC;AACD,cAAI,QAAQ,QAAQ;AAClB,iBAAK,KAAK,OAAO;AACjB,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,8BAA8B;AAClC,iBAAS,wBAAwB,MAAM,SAAS,OAAO;AACrD,cAAI,mBAAmB,sBAAsB,MAAM,KAAK,MAAM,CAAC;AAC/D,cAAI,sBAAsB,sBAAsB,MAAM,KAAK,UAAU,CAAC;AACtE,iBAAO,qBAAqB;AAAA,QAC9B;AACA,YAAI,qCAAqC;AACzC,iBAAS,eAAe,MAAM;AAC5B,cAAI,SAAS,4BAA4B,IAAI;AAC7C,cAAI,gBAAgB,OAAO,SAAS,YAAY;AAChD,cAAI,aAAa,0BAA0B,MAAM;AACjD,cAAI,kBAAkB,SAAS,CAAE,gBAAgB,QAAQ,IAAK,EAAE,SAAS,UAAU,GAAG;AACpF,qBAAS,4BAA4B,MAAM;AAC3C,4BAAgB,OAAO,SAAS,YAAY;AAC5C,yBAAa,0BAA0B,MAAM;AAAA,UAC/C;AACA,cAAI,kBAAkB,MAAM;AAC1B,mBAAO;AAAA,UACT;AACA,cAAI,CAAC,cAAc,CAAE,gBAAgB,QAAQ,MAAO,EAAE,SAAS,UAAU,GAAG;AAC1E,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,0BAA0B;AAC9B,iBAAS,iBAAiB,MAAM;AAC9B,cAAI,SAAS,4BAA4B,IAAI;AAC7C,cAAI,CAAC,QAAQ;AACX,mBAAO;AAAA,UACT;AACA,cAAI,gBAAgB,OAAO,SAAS,YAAY;AAChD,cAAI,cAAc,OAAO,aAAa,MAAM,KAAK,IAAI,YAAY;AACjE,cAAI,CAAE,gBAAgB,QAAQ,MAAO,EAAE,SAAS,UAAU,GAAG;AAC3D,mBAAO;AAAA,UACT;AACA,cAAI,cAAc,sBAAsB,UAAU,GAAG;AACnD,iBAAK,KAAK;AAAA,cACR,YAAY;AAAA,YACd,CAAC;AACD,mBAAO;AAAA,UACT;AACA,iBAAO,CAAE,MAAM,IAAK,EAAE,SAAS,aAAa;AAAA,QAC9C;AACA,YAAI,4BAA4B;AAChC,iBAAS,oBAAoB,MAAM,SAAS,aAAa;AACvD,cAAI,gBAAgB,CAAE,cAAc,QAAQ,MAAO;AACnD,cAAI,OAAO;AAAA,YACT,UAAU,CAAC;AAAA,YACX,qBAAqB;AAAA,UACvB;AACA,cAAI,UAAU,YAAY,SAAS,OAAO,SAAS,UAAU,OAAO;AAClE,gBAAI,aAAa,MAAM;AACvB,gBAAI,WAAW,SAAS,YAAY,MAAM,SAAS,iBAAiB,UAAU,MAAM,MAAM;AACxF,qBAAO,SAAS,OAAO,MAAM,QAAQ;AAAA,YACvC;AACA,mBAAO,SAAS,OAAO,KAAK;AAAA,UAC9B,GAAG,CAAC,CAAC;AACL,cAAI,SAAS,QAAQ,OAAO,SAAS,KAAK,WAAW;AACnD,gBAAI,aAAa,UAAU;AAC3B,gBAAI1D,WAAU,WAAW,SAAS,YAAY;AAC9C,gBAAI,WAAW,aAAa,KAAK,mBAAmB,YAAY,MAAM,KAAK,GAAG;AAC5E,kBAAI,gBAAgB,0BAA0B,UAAU;AACxD,kBAAIA,aAAY,QAAQA,aAAY,QAAQ,eAAe;AACzD,oBAAI,CAAC,cAAc,SAAS,aAAa,GAAG;AAC1C,sBAAI,SAAS,KAAK,UAAU;AAAA,gBAC9B;AAAA,cACF;AAAA,YACF,WAAW,WAAW,aAAa,KAAK,WAAW,UAAU,KAAK,MAAM,IAAI;AAC1E,kBAAI,sBAAsB;AAAA,YAC5B;AACA,mBAAO;AAAA,UACT,GAAG,IAAI;AACP,cAAI,OAAO,SAAS,QAAQ;AAC1B,iBAAK,aAAa,OAAO,QAAQ;AAAA,UACnC;AACA,iBAAO,CAAC,CAAC,OAAO,SAAS,UAAU,OAAO;AAAA,QAC5C;AACA,YAAI,gCAAgC;AACpC,iBAAS,sBAAsB,MAAM,SAAS,aAAa;AACzD,cAAI,sBAAsB;AAC1B,cAAI,qBAAqB;AACzB,cAAI,UAAU;AACd,cAAI,WAAW,CAAC;AAChB,cAAI,eAAe,CAAC;AACpB,cAAI,WAAW,CAAC;AAChB,sBAAY,SAAS,QAAQ,SAAS,OAAO;AAC3C,gBAAI,aAAa,MAAM;AACvB,gBAAI,WAAW,aAAa,KAAK,WAAW,UAAU,KAAK,MAAM,IAAI;AACnE,oCAAsB;AACtB;AAAA,YACF;AACA,gBAAI,WAAW,aAAa,KAAK,CAAC,mBAAmB,YAAY,MAAM,KAAK,GAAG;AAC7E;AAAA,YACF;AACA,sBAAU;AACV,gBAAI,OAAO,WAAW,SAAS,YAAY,MAAM;AACjD,gBAAI,OAAO,iBAAiB,KAAK;AACjC,gBAAI,iBAAiB,SAAS;AAC9B,gBAAI,CAAC,QAAQ,CAAC,gBAAgB;AAC5B,uBAAS,KAAK,UAAU;AAAA,YAC1B;AACA,gBAAI,QAAQ,CAAC,gBAAgB;AAC3B,2BAAa,KAAK,UAAU;AAC5B,kBAAI,CAAC,SAAS,SAAS,IAAI,GAAG;AAC5B,yBAAS,KAAK,IAAI;AAAA,cACpB;AAAA,YACF;AACA,gBAAI,gBAAgB;AAClB,mCAAqB;AAAA,YACvB;AAAA,UACF,CAAC;AACD,cAAI,uBAAuB,SAAS,QAAQ;AAC1C,iBAAK,aAAa,QAAQ;AAC1B,mBAAO;AAAA,UACT;AACA,cAAI,WAAW,oBAAoB;AACjC,mBAAO;AAAA,UACT;AACA,eAAK,aAAa,YAAY;AAC9B,eAAK,KAAK;AAAA,YACR,YAAY;AAAA,YACZ,OAAO,SAAS,KAAK,IAAI;AAAA,UAC3B,CAAC;AACD,iBAAO;AAAA,QACT;AACA,YAAI,kCAAkC;AACtC,iBAAS,0BAA0B,MAAM,SAAS,aAAa;AAC7D,cAAIrB,YAAW,YAAY;AAC3B,cAAI,CAACA,aAAY,CAACA,UAAS,QAAQ;AACjC,mBAAO;AAAA,UACT;AACA,cAAI,QAAQ,OAAO,QAAQ,OAAO;AAClC,mBAAS5P,KAAI,GAAGA,KAAI4P,UAAS,QAAQ5P,MAAK;AACxC,wBAAY4P,UAAS5P,EAAC,EAAE,MAAM,SAAS,YAAY;AACnD,gBAAI,cAAc,MAAM;AACtB,sBAAQ;AAAA,YACV;AACA,gBAAI,SAAS,cAAc,MAAM;AAC/B,qBAAO;AAAA,YACT;AACA,gBAAI,cAAc,MAAM;AACtB,sBAAQ;AAAA,YACV;AAAA,UACF;AACA,iBAAO,SAAS;AAAA,QAClB;AACA,YAAI,sCAAsC;AAC1C,iBAAS,gBAAgB,MAAM,SAAS,aAAa;AACnD,cAAI,SAAS,2BAA2B,aAAa,OAAO;AAC5D,cAAI,cAAc,OAAO,KAAK,SAAS,OAAO;AAC5C,oBAAQ,MAAM,KAAK,MAAM,KAAK,IAAI,YAAY,MAAM;AAAA,UACtD,CAAC;AACD,iBAAO,cAAc,QAAQ;AAAA,QAC/B;AACA,YAAI,2BAA2B;AAC/B,iBAAS,oBAAoB,MAAM,SAAS;AAC1C,cAAIqC,WAAU,KAAK,MAAM;AACzB,cAAI,iBAAiB,OAAO,OAAO;AAAA,YACjC,aAAa;AAAA,YACb,SAAS;AAAA,UACX,GAAG,OAAO,GAAG,cAAc,eAAe,aAAac,WAAU,eAAe;AAChF,cAAIyR,SAAQ,WAAW,WAAW;AAChC,YAAAA,SAAQ,WAAW,WAAW;AAC5B,cAAAA,SAAQ;AACR,cAAAvS,SAAQ,cAAc,QAAQ,MAAM;AAAA,YACtC,GAAG,CAAC;AAAA,UACN,GAAGc,QAAO;AACV,uBAAa,KAAK,eAAe,YAAY,MAAM,QAAQ,WAAW;AACpE,gBAAIyR,WAAU,MAAM;AAClB,2BAAaA,MAAK;AAClB,cAAAvS,SAAQ,IAAI;AAAA,YACd;AAAA,UACF,CAAC;AAAA,QACH;AACA,YAAI,gCAAgC;AACpC,iBAAS,wBAAwB,MAAM,SAAS;AAC9C,cAAI,CAAC,KAAK,UAAU;AAClB,oBAAQ,KAAK,8CAA8C;AAC3D,mBAAO;AAAA,UACT;AACA,cAAI,wBAAwB,QAAQ,iBAAiB,kBAAkB,0BAA0B,SAAS,IAAI;AAC9G,cAAI,mBAAmB,oBAAoB,IAAI;AAC/C,cAAI,oBAAoB,mBAAmB,CAAC,KAAK,aAAa,MAAM,GAAG;AACrE,mBAAO;AAAA,UACT;AACA,cAAI,CAAC,KAAK,aAAa,UAAU,GAAG;AAClC,mBAAO;AAAA,UACT;AACA,iBAAO;AACP,mBAAS,oBAAoB,KAAK;AAChC,gBAAI,CAAC,IAAI,YAAY;AACnB,qBAAO;AAAA,YACT;AACA,gBAAI,gBAAgB,iBAAiB,IAAI,UAAU;AACnD,gBAAI,CAAC,eAAe;AAClB,qBAAO,KAAK,IAAI,IAAI,YAAY,IAAI,eAAe,EAAE;AAAA,YACvD;AACA,gBAAI,cAAc,WAAW,GAAG;AAC9B,qBAAO,KAAK,IAAI,IAAI,WAAW,cAAc,CAAC,CAAC;AAAA,YACjD;AACA,mBAAO,KAAK,IAAI,cAAc,CAAC,IAAI,cAAc,CAAC,CAAC;AAAA,UACrD;AACA,mBAAS,iBAAiB,KAAK;AAC7B,gBAAI4J,SAAQ,IAAI,MAAM,SAAS;AAC/B,gBAAI,CAACA,QAAO;AACV;AAAA,YACF;AACA,gBAAI,SAAS,eAAeA,QAAO,CAAC,GAAG,QAAQ,OAAO,CAAC;AACvD,gBAAI,SAAS,MAAM,MAAM,GAAG;AAC5B,mBAAO,OAAO,IAAI,SAASO,QAAO;AAChC,kBAAI,IAAI,KAAKA,MAAK,GAAG;AACnB,uBAAO,2BAA2BA,MAAK;AAAA,cACzC;AACA,qBAAO,WAAWA,MAAK;AAAA,YACzB,CAAC;AAAA,UACH;AACA,mBAAS,2BAA2B,QAAQ;AAC1C,gBAAI,QAAQ,OAAO,MAAM,GAAG;AAC5B,gBAAI,OAAO;AACX,gBAAI,OAAO;AACX,mBAAO,MAAM,SAAS,GAAG;AACvB,sBAAQ,OAAO,SAAS,MAAM,IAAI,GAAG,EAAE;AACvC,sBAAQ;AAAA,YACV;AACA,mBAAO,WAAW,IAAI;AAAA,UACxB;AAAA,QACF;AACA,YAAI,qCAAqC;AACzC,iBAAS,uBAAuB,MAAM,aAAa;AACjD,cAAI,SAAS;AACb,cAAIW,SAAQ,YAAY;AACxB,cAAIA,OAAM,QAAQ;AAChB,qBAAS,OAAO,GAAG,IAAIA,OAAM,QAAQ,OAAO,GAAG,QAAQ;AACrD,kBAAI,OAAO,KAAKA,OAAM,IAAI,CAAC,GAAG;AAC5B,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AACA,YAAI,oCAAoC;AACxC,iBAAS,uBAAuB,MAAM;AACpC,iBAAO,0BAA0B,MAAM;AAAA,YACrC,MAAM;AAAA,YACN,UAAU;AAAA,UACZ,CAAC,MAAM;AAAA,QACT;AACA,YAAI,oCAAoC;AACxC,iBAAS,mBAAmB,MAAM;AAChC,cAAI,SAAS;AACb,cAAI,KAAK,cAAc,GAAG;AACxB,gBAAIA,SAAQ,4BAA4B,IAAI;AAC5C,qBAASnN,KAAI,GAAG,IAAImN,OAAM,QAAQnN,KAAI,GAAGA,MAAK;AAC5C,kBAAI,OAAO,KAAKmN,OAAMnN,EAAC,EAAE,IAAI,GAAG;AAC9B,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AACA,YAAI,gCAAgC;AACpC,iBAAS,mBAAmB,IAAI;AAC9B,cAAI,CAAC,IAAI;AACP,mBAAO;AAAA,UACT;AACA,cAAI,GAAG,aAAa,aAAa,MAAM,QAAQ;AAC7C,mBAAO;AAAA,UACT;AACA,iBAAO,mBAAmB,4BAA4B,EAAE,CAAC;AAAA,QAC3D;AACA,iBAAS,uBAAuB,MAAM;AACpC,iBAAO,mBAAmB,4BAA4B,IAAI,CAAC;AAAA,QAC7D;AACA,YAAI,oCAAoC;AACxC,iBAAS,4BAA4B,MAAM,aAAa;AACtD,cAAI,OAAO,0BAA0B,aAAa;AAAA,YAChD,MAAM;AAAA,UACR,CAAC;AACD,iBAAO,CAAC,CAAC,uBAAuB,IAAI;AAAA,QACtC;AACA,YAAI,yCAAyC;AAC7C,iBAAS,0BAA0B,MAAM,aAAa;AACpD,cAAI,OAAO,0BAA0B,WAAW;AAChD,iBAAO,CAAC,CAAC,yBAAyB,IAAI;AAAA,QACxC;AACA,YAAI,uCAAuC;AAC3C,iBAAS,oBAAoB,MAAM,aAAa;AAC9C,cAAI,gBAAgB,YAAY,KAAK,cAAc;AACnD,cAAI,CAAC,iBAAiB,iBAAiB,aAAa,MAAM,IAAI;AAC5D,mBAAO;AAAA,UACT;AACA,cAAI,YAAY,YAAY,MAAM;AAClC,cAAI,CAAE,YAAY,SAAS,QAAS,EAAE,SAAS,SAAS,MAAM,OAAO;AACnE,mBAAO;AAAA,UACT;AACA,cAAI,qBAAqB,CAAE,UAAU,SAAS,UAAU,QAAS;AACjE,cAAI,cAAc,WAAW,mBAAmB,SAAS,YAAY,MAAM,IAAI,GAAG;AAChF,mBAAO;AAAA,UACT;AACA,cAAI,eAAe,YAAY,KAAK,eAAe,KAAK;AACxD,cAAI,YAAY,QAAQ,UAAU,KAAK,aAAa,YAAY,MAAM,QAAQ;AAC5E,mBAAO;AAAA,UACT;AACA,cAAI,OAAO,YAAY,KAAK,MAAM;AAClC,cAAI,WAAW,YAAY,KAAK,UAAU;AAC1C,cAAI,aAAa,QAAQ,MAAM;AAC7B,gBAAI,UAAU,kBAAkB,UAAU,IAAI;AAC9C,gBAAI,YAAY,UAAU,QAAQ,SAAS,UAAU;AACnD,qBAAO;AAAA,YACT;AAAA,UACF;AACA,cAAI,aAAa,QAAQ,YAAY,cAAc,CAAC,mBAAmB,YAAY,YAAY,KAAK,KAAK,CAAC,mBAAmB,YAAY,YAAY,IAAI,GAAG;AAC1J,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,+BAA+B;AACnC,iBAAS,mBAAmB,MAAM,aAAa,UAAU;AACvD,iBAAO,SAAS;AAAA,QAClB;AACA,YAAI,+BAA+B;AACnC,iBAAS,cAAc,MAAM,aAAa,UAAU;AAClD,cAAI,6BAA6B,MAAM,aAAa,QAAQ,GAAG;AAC7D,mBAAO,CAAC,CAAC,KAAK,cAAc,SAAS;AAAA,UACvC;AACA,iBAAO;AAAA,QACT;AACA,YAAI,yBAAyB;AAC7B,iBAAS,qBAAqB,MAAM,aAAa;AAC/C,cAAI,qBAAqB,YAAY,OAAO,YAAY,mBAAmB,UAAU,YAAY,mBAAmB;AACpH,cAAI,cAAc,UAAU;AAC1B,mBAAO;AAAA,UACT;AACA,cAAI,cAAc,YAAY,CAAC,KAAK,QAAQ,QAAQ;AAClD,mBAAO;AAAA,UACT;AACA,cAAI,eAAe,CAAE,UAAU,SAAS,SAAS,YAAY,SAAS,OAAQ;AAC9E,cAAI,cAAc,WAAW,aAAa,SAAS,SAAS,GAAG;AAC7D,mBAAO;AAAA,UACT;AACA,cAAI,oBAAoB,WAAW,GAAG;AACpC,mBAAO;AAAA,UACT;AACA,cAAI,eAAe,CAAE,SAAS,UAAU,UAAW;AACnD,cAAI,aAAa,SAAS,SAAS,GAAG;AACpC,gBAAImM,SAAQlO,QAAO,iBAAiB,IAAI;AACxC,gBAAI,aAAa,SAASkO,OAAM,iBAAiB,aAAa,GAAG,EAAE;AACnE,gBAAI,YAAY;AACd,kBAAI,OAAO,KAAK,sBAAsB;AACtC,qBAAO;AAAA,gBACL,KAAK,KAAK;AAAA,gBACV,QAAQ,KAAK;AAAA,gBACb,MAAM,KAAK,OAAO;AAAA,gBAClB,OAAO,KAAK,QAAQ;AAAA,cACtB;AACA,kBAAI,CAAC,0BAA0B,MAAM,IAAI,GAAG;AAC1C,uBAAO;AAAA,cACT;AAAA,YACF;AACA,mBAAO;AAAA,UACT;AACA,cAAI,kBAAkB,wBAAwB,aAAa,OAAO;AAClE,cAAI,cAAc,WAAW,iBAAiB;AAC5C,gBAAI,YAAY,mBAAmB;AACnC,gBAAI,gBAAgB,kBAAkB,2BAA2B,eAAe,IAAI;AACpF,gBAAI,UAAU,SAAS;AACrB,kBAAI,MAAM,uBAAuB,SAAS;AAC1C,kBAAI,kBAAkB,IAAI,eAAe,UAAU,OAAO;AAC1D,kBAAI,yBAAyB,mBAAmB,2BAA2B,eAAe;AAC1F,kBAAI,0BAA0B,oBAAoB,sBAAsB,GAAG;AACzE,uBAAO;AAAA,cACT;AAAA,YACF;AACA,gBAAIhD,SAAQ;AACZ,gBAAI,kBAAkB,2BAA2B,eAAeA,MAAK,EAAE,CAAC;AACxE,gBAAI,mBAAmB,oBAAoB,eAAe,GAAG;AAC3D,qBAAO;AAAA,YACT;AAAA,UACF;AACA,cAAI,yBAAyB,CAAC;AAC9B,cAAI,eAAe;AACnB,iBAAO,cAAc;AACnB,gBAAI,aAAa,MAAM,IAAI;AACzB,kBAAI,kBAAkB,4BAA4B,YAAY,EAAE,OAAO,SAAS,SAAS;AACvF,uBAAO,mBAAmB,QAAQ,aAAa,iBAAiB,KAAK,EAAE,EAAE,SAAS,aAAa,MAAM,EAAE;AAAA,cACzG,CAAC,EAAE,IAAI,SAAS,SAAS;AACvB,uBAAO,2BAA2B,OAAO;AAAA,cAC3C,CAAC;AACD,qCAAuB,KAAK,MAAM,wBAAwB,mBAAmB,eAAe,CAAC;AAAA,YAC/F;AACA,2BAAe,aAAa;AAAA,UAC9B;AACA,cAAI,uBAAuB,SAAS,KAAK,uBAAuB,MAAM,mBAAmB,GAAG;AAC1F,mBAAO;AAAA,UACT;AACA,cAAI,cAAc,wBAAwB,aAAa,OAAO,IAAI;AAClE,cAAI,uBAAuB;AAAA,YACzB,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,cAAc;AAAA,UAChB;AACA,cAAI,CAAC,eAAe,CAAC,uBAAuB,aAAa,oBAAoB,GAAG;AAC9E,mBAAO;AAAA,UACT;AACA,cAAIqD,SAAQrO,UAAS,YAAY;AACjC,cAAI,aAAa,YAAY;AAC7B,mBAAS0C,SAAQ,GAAGA,SAAQ,WAAW,QAAQA,UAAS;AACtD,gBAAI,QAAQ,WAAWA,MAAK;AAC5B,gBAAI,MAAM,WAAW,aAAa,KAAK,iBAAiB,MAAM,WAAW,SAAS,MAAM,IAAI;AAC1F,cAAA2L,OAAM,mBAAmB,MAAM,UAAU;AAAA,YAC3C;AAAA,UACF;AACA,cAAI,QAAQA,OAAM,eAAe;AACjC,mBAAS,SAAS,GAAG,SAAS,MAAM,QAAQ,UAAU;AACpD,gBAAI,0BAA0B,MAAM,MAAM,GAAG,IAAI,GAAG;AAClD,qBAAO;AAAA,YACT;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AACA,YAAI,iCAAiC;AACrC,iBAAS,sBAAsB,MAAM;AACnC,cAAI,sBAAsB,IAAI,GAAG;AAC/B,gBAAI,aAAa,gBAAgB,IAAI;AACrC,mBAAO,WAAW,UAAU,KAAK,WAAW,CAAC,EAAE,UAAU,KAAK,WAAW,CAAC,EAAE,UAAU,KAAK,WAAW,CAAC,EAAE,UAAU;AAAA,UACrH;AACA,iBAAO;AAAA,QACT;AACA,YAAI,mCAAmC;AACvC,iBAAS,iBAAiB,MAAM;AAC9B,iBAAO,sBAAsB,IAAI;AAAA,QACnC;AACA,YAAI,6BAA6B;AACjC,iBAAS,yBAAyB,MAAM;AACtC,cAAIzK,MAAK,KAAK,aAAa,IAAI,EAAE,KAAK;AACtC,cAAI,aAAa,SAAS,OAAO,wBAAwBA,GAAE,GAAG,IAAI;AAClE,cAAI,iBAAiB,MAAM,KAAK,uBAAuB,IAAI,EAAE,iBAAiB,UAAU,CAAC;AACzF,iBAAO,CAAC,0BAA0B,IAAI,KAAK,eAAe,KAAK,oBAAoB;AAAA,QACrF;AACA,YAAI,sCAAsC;AAC1C,iBAAS,uBAAuB,MAAM;AACpC,iBAAO,0BAA0B,IAAI;AAAA,QACvC;AACA,YAAI,oCAAoC;AACxC,iBAAS,uBAAuB,MAAM;AACpC,cAAIA,MAAK,KAAK,aAAa,IAAI,EAAE,KAAK;AACtC,cAAI,aAAa,SAAS,OAAO,wBAAwBA,GAAE,GAAG,IAAI;AAClE,cAAI,iBAAiB,MAAM,KAAK,uBAAuB,IAAI,EAAE,iBAAiB,UAAU,CAAC;AACzF,iBAAO,CAAC,0BAA0B,IAAI,KAAK,eAAe,MAAM,SAAS,KAAK;AAC5E,mBAAO,CAAC,qBAAqB,GAAG;AAAA,UAClC,CAAC;AAAA,QACH;AACA,YAAI,oCAAoC;AACxC,iBAAS,6BAA6B,MAAM,aAAa,UAAU;AACjE,iBAAO,CAAC,SAAS,aAAa,CAAC,SAAS,aAAa,SAAS,mBAAmB,QAAQ,SAAS,mBAAmB,SAAS;AAAA,QAChI;AACA,YAAI,0CAA0C;AAC9C,iBAAS,yBAAyB,MAAM;AACtC,cAAI,QAAQ,KAAK,aAAa,OAAO;AACrC,iBAAO,CAAC,CAAC,iBAAiB,KAAK;AAAA,QACjC;AACA,YAAI,uCAAuC;AAC3C,iBAAS,eAAe,MAAM;AAC5B,cAAI;AACJ,cAAI,KAAK,aAAa,MAAM,GAAG;AAC7B,4BAAgB,KAAK,aAAa,MAAM,EAAE,MAAM,MAAM,EAAE,OAAO,IAAI,QAAQ,KAAK,WAAW;AAAA,UAC7F;AACA,cAAI,iBAAiB,cAAc,SAAS,GAAG;AAC7C,mBAAO,cAAc,SAAS,SAAS;AAAA,UACzC,OAAO;AACL,mBAAO,IAAI,QAAQ,KAAK,aAAa,IAAI,MAAM;AAAA,UACjD;AAAA,QACF;AACA,YAAI,0BAA0B;AAC9B,iBAAS,oBAAoB,MAAM,aAAa;AAC9C,cAAI;AACF,gBAAI,YAAY,YAAY,MAAM;AAClC,gBAAI,cAAc,OAAO;AACvB,qBAAO;AAAA,YACT;AACA,mBAAO,CAAC,CAAC,gBAAgB,aAAa,KAAK;AAAA,UAC7C,SAAS,GAAG;AACV,mBAAO;AAAA,UACT;AAAA,QACF;AACA,YAAI,gCAAgC;AACpC,iBAAS,qBAAqB,MAAM,aAAa;AAC/C,iBAAO,CAAC,8BAA8B,MAAM,WAAW;AAAA,QACzD;AACA,YAAI,iCAAiC;AACrC,iBAAS,iCAAiC,MAAM,aAAa;AAC3D,cAAI,aAAa,CAAC,CAAC,gCAAgC,WAAW;AAC9D,cAAI,CAAC,YAAY;AACf,mBAAO;AAAA,UACT;AACA,cAAI,OAAO,iBAAiB,IAAI;AAChC,cAAI,QAAQ,SAAS,QAAQ;AAC3B,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,+CAA+C;AACnD,iBAAS,8BAA8B,MAAM;AAC3C,iBAAO,kCAAkC,IAAI;AAAA,QAC/C;AACA,YAAI,4CAA4C;AAChD,iBAAS,gCAAgC,MAAM,aAAa;AAC1D,cAAI,OAAO,iBAAiB,IAAI;AAChC,cAAI,CAAC,MAAM;AACT,mBAAO;AAAA,UACT;AACA,cAAI,cAAc,+BAA+B,QAAQ;AACzD,cAAI,eAAe,YAAY,SAAS,IAAI;AAC5C,cAAI,CAAC,cAAc;AACjB,mBAAO;AAAA,UACT;AACA,cAAI,4BAA4B,oDAAoD;AACpF,cAAI,CAAC,0BAA0B,SAAS,IAAI,GAAG;AAC7C,mBAAO;AAAA,UACT;AACA,cAAI,CAAC,iBAAiB,uBAAuB,WAAW,CAAC,KAAK,CAAC,iBAAiB,4BAA4B,IAAI,CAAC,GAAG;AAClH,mBAAO;AAAA,UACT;AACA,cAAI,CAAC,iBAAiB,wBAAwB,WAAW,CAAC,GAAG;AAC3D,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,8CAA8C;AAClD,iBAAS,aAAa,MAAM,aAAa;AACvC,cAAI,YAAY,MAAM,aAAa,WAAW,YAAY,QAAQ,MAAM,MAAM,OAAO;AACnF,mBAAO;AAAA,UACT;AACA,cAAIL,QAAO,YAAY,KAAK,MAAM,EAAE,YAAY;AAChD,iBAAO,CAAE,UAAU,SAAS,UAAU,UAAU,OAAQ,EAAE,SAASA,KAAI,MAAM;AAAA,QAC/E;AACA,YAAI,wBAAwB;AAC5B,iBAAS,8BAA8B,MAAM,aAAa;AACxD,cAAI,oBAAoB;AACxB,iBAAO,KAAK,aAAa,MAAM,KAAK,CAAC,wBAAwB,aAAa,iBAAiB;AAAA,QAC7F;AACA,YAAI,4CAA4C;AAChD,iBAAS,sBAAsB,MAAM,aAAa;AAChD,cAAI,0CAA0C,CAAE,WAAW,SAAS,QAAQ,OAAO,SAAU,EAAE,KAAK,GAAG;AACvG,mBAAS,uBAAuB,qBAAqB;AACnD,mBAAO,CAAC,wBAAwB,qBAAqB,uCAAuC;AAAA,UAC9F;AACA,mBAAS,kBAAkB,cAAc;AACvC,gBAAI,aAAa,aAAa;AAC9B,gBAAI,iBAAiB,+BAA+B,UAAU;AAC9D,gBAAI,OAAO,iBAAiB,UAAU;AACtC,gBAAI,CAAC,MAAM;AACT,qBAAO;AAAA,YACT;AACA,gBAAI,YAAY,WAAW,SAAS,YAAY;AAChD,gBAAI,cAAc,YAAY,cAAc,UAAU;AACpD,qBAAO,uBAAuB,YAAY;AAAA,YAC5C;AACA,gBAAI,cAAc,aAAa,cAAc,QAAQ;AACnD,kBAAI,kBAAkB,gCAAgC,YAAY;AAClE,qBAAO,CAAC,CAAC;AAAA,YACX;AACA,mBAAO,eAAe,QAAQ,IAAI,KAAK,KAAK,SAAS;AAAA,UACvD;AACA,iBAAO,kBAAkB,WAAW,KAAK,mBAAmB,MAAM,IAAI;AAAA,QACxE;AACA,YAAI,kCAAkC;AACtC,iBAAS,kBAAkB,MAAM;AAC/B,iBAAO,CAAC,sBAAsB,IAAI,KAAK,CAAC,qBAAqB,IAAI;AAAA,QACnE;AACA,YAAI,+BAA+B;AACnC,iBAAS,uBAAuB,MAAM;AACpC,cAAI,SAAS,iBAAiB,KAAK,WAAW;AAC9C,cAAI,OAAO,KAAK,aAAa,MAAM;AACnC,cAAI,QAAQ,SAAS,QAAQ;AAC3B,mBAAO;AAAA,UACT;AACA,cAAI,CAAC,QAAQ;AACX,mBAAO;AAAA,UACT;AACA,cAAI,CAAC,mBAAmB,MAAM,KAAK,GAAG;AACpC,mBAAO;AAAA,UACT;AACA,iBAAO,yBAAyB,IAAI;AAAA,QACtC;AACA,YAAI,qCAAqC;AACzC,iBAAS,yBAAyB,MAAM,aAAa;AACnD,cAAI,OAAO,iBAAiB,WAAW;AACvC,cAAI,CAAC,MAAM;AACT,mBAAO;AAAA,UACT;AACA,iBAAO,CAAC,CAAC,kBAAkB,UAAU,IAAI,EAAE;AAAA,QAC7C;AACA,YAAI,qCAAqC;AACzC,iBAAS,uBAAuB,MAAM;AACpC,cAAI,CAAC,KAAK,YAAY;AACpB,mBAAO;AAAA,UACT;AACA,cAAI,KAAK,aAAa,QAAQ,KAAK,KAAK,aAAa,OAAO,GAAG;AAC7D,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,oCAAoC;AACxC,iBAAS,mBAAmB,MAAM,aAAa;AAC7C,cAAI,CAAC,YAAY,QAAQ,MAAM,GAAG;AAChC,mBAAO;AAAA,UACT;AACA,cAAI,CAAC,YAAY,KAAK,MAAM,EAAE,KAAK,GAAG;AACpC,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,gCAAgC;AACpC,iBAAS,uBAAuB,MAAM,aAAa;AACjD,cAAI,OAAO,0BAA0B,WAAW;AAChD,cAAI,CAAC,QAAQ,CAAE,QAAQ,cAAe,EAAE,SAAS,IAAI,GAAG;AACtD,mBAAO;AAAA,UACT;AACA,cAAI,SAAS,mBAAmB,IAAI,KAAK,CAAC,GAAG,yBAAyB,OAAO;AAC7E,cAAI,0BAA0B,qBAAqB,WAAW,GAAG;AAC/D,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,4CAA4C;AAChD,iBAAS,sBAAsB,MAAM,aAAa;AAChD,cAAI,wBAAwB,yBAAyB,WAAW,GAAG,gBAAgB,sBAAsB;AACzG,cAAI,iBAAiB,cAAc,WAAW,GAAG;AAC/C,mBAAO;AAAA,UACT;AACA,cAAI,0BAA0B,WAAW,MAAM,cAAc,2BAA2B,aAAa,4BAA4B,EAAE,QAAQ;AACzI,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,mCAAmC;AACvC,iBAAS,cAAc,MAAM;AAC3B,iBAAO,CAAC,KAAK,aAAa,MAAM;AAAA,QAClC;AACA,YAAI,0BAA0B;AAC9B,iBAAS,eAAe,MAAM,aAAa;AACzC,iBAAO,YAAY,MAAM,aAAa;AAAA,QACxC;AACA,YAAI,2BAA2B;AAC/B,iBAAS,kBAAkB,MAAM;AAC/B,cAAIkO,YAAW,MAAM,KAAK,KAAK,WAAW,UAAU;AACpD,cAAI,WAAW,KAAK,YAAY,KAAK;AACrC,cAAI,aAAa;AACjB,cAAI,SAAS,WAAW,MAAM,SAAS,MAAM,UAAU,KAAK,CAAC,GAAG,UAAU,GAAG;AAC3E,mBAAO;AAAA,UACT;AACA,cAAI,gBAAgBA,UAAS,MAAMA,UAAS,QAAQ,IAAI,IAAI,CAAC,EAAE,OAAO,SAAS,KAAK;AAClF,mBAAO,IAAI,SAAS,YAAY,MAAM,OAAO,IAAI,YAAY,KAAK,MAAM;AAAA,UAC1E,CAAC;AACD,iBAAO,cAAc,WAAW;AAAA,QAClC;AACA,YAAI,+BAA+B;AACnC,iBAAS,iCAAiC,MAAM,aAAa;AAC3D,cAAI,CAAC,CAAC,mBAAmB,MAAM,EAAE,MAAM,OAAO;AAC5C,mBAAO;AAAA,UACT;AACA,cAAI,OAAO,0BAA0B,WAAW;AAChD,cAAI,kBAAkB,UAAU,SAAS,cAAc,SAAS,IAAI,GAAG;AACrE,gBAAI,gBAAgB,aAAa,oBAAoB,GAAG;AACtD,qBAAO;AAAA,YACT;AACA,gBAAI7N,MAAK,YAAY,KAAK,IAAI;AAC9B,gBAAIA,KAAI;AACN,kBAAI,MAAM,sBAAsB,IAAI;AACpC,kBAAI,QAAQ,MAAM,KAAK,IAAI,iBAAiB,gBAAgB,OAAOA,KAAI,uBAAuB,EAAE,OAAOA,KAAI,IAAI,CAAC,CAAC;AACjH,kBAAI,gBAAgB,MAAM,KAAK,SAAS,IAAI;AAC1C,oBAAI,QAAQ,mBAAmB,GAAG,aAAa,MAAM,CAAC;AACtD,uBAAO,MAAM,SAAS,UAAU;AAAA,cAClC,CAAC;AACD,kBAAI,eAAe;AACjB,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AACA,cAAI,qBAAqB,2BAA2B,aAAa,GAAG;AACpE,cAAI,qBAAqB,mBAAmB,KAAK,SAAS,KAAK;AAC7D,mBAAO,4BAA4B,KAAK,MAAM,IAAI;AAAA,UACpD,CAAC;AACD,cAAI,CAAC,oBAAoB;AACvB,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,YAAI,8CAA8C;AAClD,iBAAS,gBAAgB,MAAM;AAC7B,iBAAO,qBAAqB,IAAI,KAAK,qBAAqB,IAAI;AAAA,QAChE;AACA,YAAI,4BAA4B;AAChC,iBAAS,mBAAmB,MAAM;AAChC,iBAAO,KAAK,cAAc,YAAY,SAAS,KAAK,cAAc,YAAY;AAAA,QAChF;AACA,YAAI,gCAAgC;AACpC,iBAAS,uBAAuB,MAAM;AACpC,cAAI,mBAAmB,sBAAsB,KAAK,aAAa,MAAM,CAAC;AACtE,cAAI,sBAAsB,sBAAsB,KAAK,aAAa,UAAU,CAAC;AAC7E,iBAAO,oBAAoB,gBAAgB,KAAK,oBAAoB,mBAAmB;AAAA,QACzF;AACA,YAAI,oCAAoC;AACxC,YAAI,sBAAsB;AAAA,UACxB,yBAAyB;AAAA,UACzB,8BAA8B;AAAA,UAC9B,8BAA8B;AAAA,UAC9B,8BAA8B;AAAA,UAC9B,6BAA6B;AAAA,UAC7B,iCAAiC;AAAA,UACjC,+BAA+B;AAAA,UAC/B,mCAAmC;AAAA,UACnC,iCAAiC;AAAA,UACjC,iCAAiC;AAAA,UACjC,kCAAkC;AAAA,UAClC,4BAA4B;AAAA,UAC5B,kCAAkC;AAAA,UAClC,yBAAyB;AAAA,UACzB,sCAAsC;AAAA,UACtC,4BAA4B;AAAA,UAC5B,wBAAwB;AAAA,UACxB,iCAAiC;AAAA,UACjC,uCAAuC;AAAA,UACvC,4BAA4B;AAAA,UAC5B,uCAAuC;AAAA,UACvC,0BAA0B;AAAA,UAC1B,wBAAwB;AAAA,UACxB,iCAAiC;AAAA,UACjC,wBAAwB;AAAA,UACxB,0BAA0B;AAAA,UAC1B,4BAA4B;AAAA,UAC5B,8BAA8B;AAAA,UAC9B,2BAA2B;AAAA,UAC3B,2BAA2B;AAAA,UAC3B,+BAA+B;AAAA,UAC/B,qCAAqC;AAAA,UACrC,+BAA+B;AAAA,UAC/B,mCAAmC;AAAA,UACnC,wBAAwB;AAAA,UACxB,2BAA2B;AAAA,UAC3B,6BAA6B;AAAA,UAC7B,+BAA+B;AAAA,UAC/B,2BAA2B;AAAA,UAC3B,8BAA8B;AAAA,UAC9B,uBAAuB;AAAA,UACvB,0BAA0B;AAAA,UAC1B,sCAAsC;AAAA,UACtC,yCAAyC;AAAA,UACzC,kCAAkC;AAAA,UAClC,yBAAyB;AAAA,UACzB,yBAAyB;AAAA,UACzB,mBAAmB;AAAA,UACnB,sBAAsB;AAAA,UACtB,4BAA4B;AAAA,UAC5B,+BAA+B;AAAA,UAC/B,uBAAuB;AAAA,UACvB,4BAA4B;AAAA,UAC5B,iCAAiC;AAAA,UACjC,0BAA0B;AAAA,UAC1B,mBAAmB;AAAA,UACnB,oBAAoB;AAAA,UACpB,yBAAyB;AAAA,UACzB,iCAAiC;AAAA,UACjC,gCAAgC;AAAA,UAChC,gCAAgC;AAAA,UAChC,iCAAiC;AAAA,UACjC,gCAAgC;AAAA,UAChC,sBAAsB;AAAA,UACtB,yBAAyB;AAAA,UACzB,oBAAoB;AAAA,UACpB,uBAAuB;AAAA,UACvB,8BAA8B;AAAA,UAC9B,+BAA+B;AAAA,UAC/B,8BAA8B;AAAA,UAC9B,iCAAiC;AAAA,UACjC,8BAA8B;AAAA,UAC9B,mCAAmC;AAAA,UACnC,kCAAkC;AAAA,UAClC,iCAAiC;AAAA,UACjC,qBAAqB;AAAA,UACrB,4BAA4B;AAAA,UAC5B,gCAAgC;AAAA,UAChC,qBAAqB;AAAA,UACrB,+BAA+B;AAAA,UAC/B,kCAAkC;AAAA,UAClC,qBAAqB;AAAA,UACrB,wCAAwC;AAAA,UACxC,2BAA2B;AAAA,UAC3B,uBAAuB;AAAA,UACvB,4BAA4B;AAAA,UAC5B,+BAA+B;AAAA,UAC/B,qBAAqB;AAAA,UACrB,uBAAuB;AAAA,UACvB,8BAA8B;AAAA,UAC9B,mBAAmB;AAAA,UACnB,qBAAqB;AAAA,UACrB,yBAAyB;AAAA,UACzB,2BAA2B;AAAA,UAC3B,+BAA+B;AAAA,UAC/B,oBAAoB;AAAA,UACpB,yBAAyB;AAAA,UACzB,8BAA8B;AAAA,UAC9B,6BAA6B;AAAA,UAC7B,6BAA6B;AAAA,UAC7B,gCAAgC;AAAA,UAChC,yBAAyB;AAAA,UACzB,6BAA6B;AAAA,UAC7B,kCAAkC;AAAA,UAClC,gCAAgC;AAAA,UAChC,wBAAwB;AAAA,UACxB,kBAAkB;AAAA,UAClB,0BAA0B;AAAA,UAC1B,4BAA4B;AAAA,UAC5B,sBAAsB;AAAA,UACtB,+BAA+B;AAAA,UAC/B,6BAA6B;AAAA,UAC7B,6BAA6B;AAAA,UAC7B,mCAAmC;AAAA,UACnC,gCAAgC;AAAA,UAChC,mBAAmB;AAAA,UACnB,0BAA0B;AAAA,UAC1B,wCAAwC;AAAA,UACxC,qCAAqC;AAAA,UACrC,wBAAwB;AAAA,UACxB,uCAAuC;AAAA,UACvC,iBAAiB;AAAA,UACjB,qCAAqC;AAAA,UACrC,2BAA2B;AAAA,UAC3B,wBAAwB;AAAA,UACxB,8BAA8B;AAAA,UAC9B,8BAA8B;AAAA,UAC9B,6BAA6B;AAAA,UAC7B,yBAAyB;AAAA,UACzB,qCAAqC;AAAA,UACrC,4BAA4B;AAAA,UAC5B,mBAAmB;AAAA,UACnB,oBAAoB;AAAA,UACpB,wBAAwB;AAAA,UACxB,uCAAuC;AAAA,UACvC,qBAAqB;AAAA,UACrB,yBAAyB;AAAA,UACzB,yBAAyB;AAAA,UACzB,6BAA6B;AAAA,QAC/B;AACA,YAAI,gCAAgC;AACpC,iBAAS,YAAY,QAAQ;AAC3B,eAAK,KAAK,OAAO;AACjB,eAAK,OAAO;AACZ,eAAK,eAAe,CAAC;AACrB,eAAK,SAAS;AAAA,QAChB;AACA,YAAI,uBAAuB;AAC3B,iBAAS,uBAAuB,MAAM;AACpC,cAAI,OAAO,SAAS,UAAU;AAC5B,gBAAI,8BAA8B,IAAI,GAAG;AACvC,qBAAO,8BAA8B,IAAI;AAAA,YAC3C;AACA,gBAAI,wBAAwB,KAAK,IAAI,GAAG;AACtC,qBAAO,IAAI,SAAS,YAAY,OAAO,GAAG,EAAE;AAAA,YAC9C;AACA,kBAAM,IAAI,eAAe,4DAA4D,OAAO,IAAI,CAAC;AAAA,UACnG;AACA,iBAAO;AAAA,QACT;AACA,iBAAS,mBAAmB;AAC1B,cAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AACnF,cAAI,MAAM,QAAQ,OAAO,KAAK,QAAQ,OAAO,MAAM,UAAU;AAC3D,sBAAU;AAAA,cACR,OAAO;AAAA,YACT;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AACA,iBAAS,MAAM,MAAM;AACnB,cAAI,MAAM;AACR,iBAAK,KAAK,KAAK;AACf,iBAAK,UAAU,IAAI;AAAA,UACrB;AAAA,QACF;AACA,cAAM,UAAU,UAAU;AAC1B,cAAM,UAAU,MAAM,SAAS,IAAI,MAAM,SAAS,UAAUM,UAAS,QAAQ;AAC3E,oBAAU,WAAW,CAAC;AACtB,cAAI,UAAU,QAAQ,eAAe,SAAS,IAAI,QAAQ,UAAU,KAAK;AACzE,cAAI,eAAe,KAAK,WAAW,QAAQ,OAAO;AAClD,cAAI,SAAS;AACX,gBAAI,cAAc,IAAI,qBAAqB,IAAI;AAC/C,gBAAI,SAAS,qBAAqB,aAAa,SAASA,UAAS,MAAM;AACvE,gBAAI;AACJ,gBAAI;AACF,uBAAS,KAAK,SAAS,KAAK,QAAQ,KAAK,YAAY,cAAc,MAAM,QAAQ;AAAA,YACnF,SAAS,GAAG;AACV,kBAAI,QAAQ,KAAK,YAAY;AAC3B,kBAAE,YAAY,IAAI,mBAAmB,KAAK,UAAU,EAAE,OAAO;AAAA,cAC/D;AACA,qBAAO,CAAC;AACR;AAAA,YACF;AACA,gBAAI,CAAC,OAAO,SAAS;AACnB,0BAAY,SAAS;AACrB,cAAAA,SAAQ,WAAW;AAAA,YACrB;AAAA,UACF,OAAO;AACL,YAAAA,SAAQ,IAAI;AAAA,UACd;AAAA,QACF;AACA,cAAM,UAAU,UAAU,SAAS,QAAQ,MAAM,SAAS,UAAU;AAClE,oBAAU,WAAW,CAAC;AACtB,cAAI,WAAW,SAAS,mBAAmB,SAAS,SAAS,UAAU,qBAAqB,SAAS,KAAK,UAAU;AACpH,cAAI,CAAC,SAAS;AACZ,mBAAO;AAAA,UACT;AACA,cAAI,eAAe,KAAK,WAAW,QAAQ,OAAO;AAClD,cAAI,cAAc,IAAI,qBAAqB,IAAI;AAC/C,cAAI,SAAS,qBAAqB,aAAa,OAAO;AACtD,iBAAO,QAAQ,SAAS,QAAQ;AAC9B,kBAAM,IAAI,MAAM,mDAAmD;AAAA,UACrE;AACA,cAAI;AACJ,cAAI;AACF,qBAAS,KAAK,SAAS,KAAK,QAAQ,KAAK,YAAY,cAAc,MAAM,QAAQ;AAAA,UACnF,SAAS,GAAG;AACV,gBAAI,QAAQ,KAAK,YAAY;AAC3B,gBAAE,YAAY,IAAI,mBAAmB,KAAK,UAAU,EAAE,OAAO;AAAA,YAC/D;AACA,kBAAM;AAAA,UACR;AACA,sBAAY,SAAS;AACrB,iBAAO;AAAA,QACT;AACA,cAAM,UAAU,YAAY,SAAS,UAAU,MAAM;AACnD,cAAI,SAAS;AACb,cAAI,CAAC,KAAK,YAAY,8BAA8B,KAAK,QAAQ,GAAG;AAClE,iBAAK,iBAAiB;AAAA,UACxB;AACA,cAAI,KAAK,eAAe,SAAS,GAAG;AAClC,iBAAK,UAAU,KAAK;AAAA,UACtB;AACA,cAAI,KAAK,eAAe,SAAS,GAAG;AAClC,gBAAI,KAAK,gBAAgB;AACvB,mBAAK,UAAU,iBAAiB,KAAK,OAAO;AAAA,YAC9C,OAAO;AACL,mBAAK,UAAU,KAAK;AAAA,YACtB;AAAA,UACF;AACA,WAAE,YAAY,OAAQ,EAAE,OAAO,SAAS,MAAM;AAC5C,mBAAO,KAAK,eAAe,IAAI;AAAA,UACjC,CAAC,EAAE,QAAQ,SAAS,MAAM;AACxB,mBAAO,OAAO,IAAI,IAAI,uBAAuB,KAAK,IAAI,CAAC;AAAA,UACzD,CAAC;AAAA,QACH;AACA,cAAM,UAAU,aAAa,SAAS,WAAW,SAAS;AACxD,cAAI,KAAK,gBAAgB;AACvB,mBAAO,mBAAmB,KAAK,SAAS,iBAAiB,WAAW,CAAC,CAAC,CAAC;AAAA,UACzE,OAAO;AACL,mBAAO,WAAW,KAAK;AAAA,UACzB;AAAA,QACF;AACA,YAAI,gBAAgB;AACpB,iBAAS,WAAW,OAAO;AACzB,eAAK,KAAK,MAAM;AAChB,eAAK,SAAS,kBAAkB;AAChC,eAAK,YAAY,MAAM;AACvB,eAAK,SAAS;AACd,eAAK,QAAQ,CAAC;AAAA,QAChB;AACA,YAAI,sBAAsB;AAC1B,iBAAS,KAAK,MAAM,aAAa;AAC/B,eAAK,SAAS;AACd,eAAK,KAAK,KAAK;AACf,eAAK,WAAW,KAAK,YAAY;AACjC,cAAI,KAAK,QAAQ;AACf,2BAAe,kBAAkB,OAAO,SAAS,KAAK,MAAM,GAAG,UAAU,OAAO,KAAK,QAAQ,wBAAwB,CAAC;AACtH,iBAAK,SAAS,KAAK;AAAA,UACrB;AACA,eAAK,gBAAgB,OAAO,KAAK,kBAAkB,YAAY,KAAK,gBAAgB;AACpF,eAAK,UAAU,OAAO,KAAK,YAAY,YAAY,KAAK,UAAU;AAClE,eAAK,YAAY,OAAO,KAAK,cAAc,YAAY,KAAK,YAAY;AACxE,eAAK,eAAe,OAAO,KAAK,iBAAiB,YAAY,KAAK,eAAe;AACjF,eAAK,MAAM,KAAK,OAAO,CAAC;AACxB,eAAK,MAAM,KAAK,OAAO,CAAC;AACxB,eAAK,OAAO,KAAK,QAAQ,CAAC;AAC1B,eAAK,OAAO,KAAK,QAAQ,CAAC;AAC1B,eAAK,UAAU,KAAK,UAAU,OAAO;AACrC,cAAI,KAAK,SAAS;AAChB,iBAAK,UAAU,uBAAuB,KAAK,OAAO;AAAA,UACpD;AAAA,QACF;AACA,aAAK,UAAU,UAAU,SAAS,YAAY;AAC5C,iBAAO;AAAA,QACT;AACA,aAAK,UAAU,SAAS,SAAS,OAAO,UAAU;AAChD,cAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AACnF,cAAI,YAAY,uBAAuB,KAAK;AAC5C,cAAI,UAAU,qBAAqB,KAAK;AACxC,cAAI,kBAAkB,yBAAyB,KAAK;AACpD,cAAI,gBAAgB,uBAAuB,KAAK;AAChD,cAAI,QAAQ,kBAAkB;AAC5B,sCAA0B,KAAK,SAAS;AAAA,UAC1C;AACA,cAAI,WAAWgG,gBAAe,KAAK,UAAU,QAAQ;AACrD,cAAI,KAAK,eAAe;AACtB,gBAAI,QAAQ,kBAAkB;AAC5B,wCAA0B,KAAK,eAAe;AAAA,YAChD;AACA,uBAAW,SAAS,OAAO,SAAS,SAAS;AAC3C,qBAAO,CAAC,kBAAkB,QAAQ,UAAU;AAAA,YAC9C,CAAC;AACD,gBAAI,QAAQ,kBAAkB;AAC5B,wCAA0B,KAAK,aAAa;AAC5C,wCAA0B,QAAQ,UAAU,KAAK,KAAK,8BAA8B,iBAAiB,aAAa;AAAA,YACpH;AAAA,UACF;AACA,cAAI,QAAQ,kBAAkB;AAC5B,sCAA0B,KAAK,OAAO;AACtC,sCAA0B,QAAQ,UAAU,KAAK,KAAK,WAAW,WAAW,OAAO;AAAA,UACrF;AACA,iBAAO;AAAA,QACT;AACA,aAAK,UAAU,YAAY,SAAS,UAAU3G,OAAM,MAAM,SAAS,UAAUW,UAAS,QAAQ;AAC5F,cAAI,QAAQ;AACZ,cAAI,aAAa,cAAc;AAC/B,eAAKX,KAAI,EAAE,QAAQ,SAAS,GAAG;AAC7B,gBAAI,SAAS,MAAM,OAAO,OAAO,EAAE,MAAM,CAAC;AAC1C,gBAAI,SAAS,yBAAyB,QAAQ,MAAM,IAAI,OAAO;AAC/D,uBAAW,MAAM,SAAS,KAAK,KAAK;AAClC,qBAAO,IAAI,MAAM,QAAQ,UAAU,KAAK,GAAG;AAAA,YAC7C,CAAC;AAAA,UACH,CAAC;AACD,qBAAW,KAAK,SAAS,SAAS;AAChC,sBAAU,QAAQ,OAAO,SAAS,QAAQ;AACxC,qBAAO;AAAA,YACT,CAAC;AACD,YAAAW,SAAQ;AAAA,cACN,MAAMX;AAAA,cACN;AAAA,YACF,CAAC;AAAA,UACH,CAAC,EAAE,OAAO,EAAE,MAAM;AAAA,QACpB;AACA,aAAK,UAAU,gBAAgB,SAAS,cAAcA,OAAM,MAAM,SAAS,UAAU;AACnF,cAAI,QAAQ;AACZ,cAAI,UAAU,CAAC;AACf,eAAKA,KAAI,EAAE,QAAQ,SAAS,GAAG;AAC7B,gBAAI,SAAS,MAAM,OAAO,OAAO,EAAE,MAAM,CAAC;AAC1C,gBAAI,SAAS,yBAAyB,QAAQ,MAAM,IAAI,OAAO;AAC/D,oBAAQ,KAAK,OAAO,QAAQ,MAAM,QAAQ,QAAQ,CAAC;AAAA,UACrD,CAAC;AACD,oBAAU,QAAQ,OAAO,SAAS,QAAQ;AACxC,mBAAO;AAAA,UACT,CAAC;AACD,iBAAO;AAAA,YACL,MAAMA;AAAA,YACN;AAAA,UACF;AAAA,QACF;AACA,aAAK,UAAU,MAAM,SAAS,KAAK,UAAU;AAC3C,cAAI,SAAS;AACb,cAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AACnF,cAAIW,WAAU,UAAU,SAAS,IAAI,UAAU,CAAC,IAAI;AACpD,cAAI,SAAS,UAAU,SAAS,IAAI,UAAU,CAAC,IAAI;AACnD,cAAI,QAAQ,kBAAkB;AAC5B,iBAAK,kBAAkB;AAAA,UACzB;AACA,cAAI,IAAI,cAAc;AACtB,cAAI,aAAa,IAAI,oBAAoB,IAAI;AAC7C,cAAI;AACJ,cAAI;AACF,oBAAQ,KAAK,oBAAoB,UAAU,OAAO;AAAA,UACpD,SAAS,OAAO;AACd,mBAAO,IAAI,aAAa;AAAA,cACtB,OAAO;AAAA,cACP,QAAQ,KAAK;AAAA,YACf,CAAC,CAAC;AACF;AAAA,UACF;AACA,cAAI,QAAQ,kBAAkB;AAC5B,iBAAK,sBAAsB,KAAK;AAAA,UAClC;AACA,gBAAM,QAAQ,SAAS,MAAM;AAC3B,cAAE,MAAM,SAAS,aAAa,YAAY;AACxC,kBAAI,aAAa,cAAc;AAC/B,eAAE,OAAO,OAAO,MAAO,EAAE,QAAQ,SAASX,OAAM;AAC9C,2BAAW,MAAM,SAAS,KAAK,KAAK;AAClC,yBAAO,UAAUA,OAAM,MAAM,SAAS,UAAU,KAAK,GAAG;AAAA,gBAC1D,CAAC;AAAA,cACH,CAAC;AACD,yBAAW,KAAK,SAAS,SAAS;AAChC,oBAAI,SAAS,UAAU,OAAO;AAC9B,oBAAI,QAAQ;AACV,yBAAO,OAAO,IAAI,mBAAmB,KAAK,YAAY,OAAO;AAC7D,6BAAW,MAAM,KAAK,MAAM;AAC5B,sBAAI,OAAO,cAAc;AACvB,qBAAE,OAAO,KAAM,EAAE,QAAQ,SAASA,OAAM;AACtC,6BAAOA,KAAI,EAAE,QAAQ,SAAS,aAAa;AACzC,4BAAI,YAAY,WAAW,OAAO;AAChC,sCAAY,SAAS;AAAA,wBACvB;AAAA,sBACF,CAAC;AAAA,oBACH,CAAC;AACD,2BAAO,KAAK,QAAQ,SAAS,aAAa;AACxC,0BAAI,YAAY,WAAW,MAAM;AAC/B,oCAAY,SAAS;AAAA,sBACvB;AAAA,oBACF,CAAC;AAAA,kBACH;AAAA,gBACF;AACA,4BAAY;AAAA,cACd,CAAC,EAAE,OAAO,EAAE,SAAS,MAAM;AACzB,uBAAO,WAAW,IAAI;AAAA,cACxB,CAAC;AAAA,YACH,CAAC;AAAA,UACH,CAAC;AACD,YAAE,MAAM,SAASoC,WAAU;AACzB,mBAAO,WAAWA,WAAU,CAAC;AAAA,UAC/B,CAAC;AACD,cAAI,QAAQ,kBAAkB;AAC5B,iBAAK,oBAAoB;AAAA,UAC3B;AACA,YAAE,KAAK,WAAW;AAChB,mBAAOzB,SAAQ,UAAU;AAAA,UAC3B,CAAC,EAAE,OAAO,EAAE,SAAS,OAAO;AAC1B,mBAAO,OAAO,KAAK;AAAA,UACrB,CAAC;AAAA,QACH;AACA,aAAK,UAAU,UAAU,SAAS,SAAS,UAAU;AACnD,cAAI,SAAS;AACb,cAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AACnF,cAAI,QAAQ,kBAAkB;AAC5B,iBAAK,kBAAkB;AAAA,UACzB;AACA,cAAI,aAAa,IAAI,oBAAoB,IAAI;AAC7C,cAAI;AACJ,cAAI;AACF,oBAAQ,KAAK,oBAAoB,UAAU,OAAO;AAAA,UACpD,SAAS,OAAO;AACd,kBAAM,IAAI,aAAa;AAAA,cACrB,OAAO;AAAA,cACP,QAAQ,KAAK;AAAA,YACf,CAAC;AAAA,UACH;AACA,cAAI,QAAQ,kBAAkB;AAC5B,iBAAK,sBAAsB,KAAK;AAAA,UAClC;AACA,gBAAM,QAAQ,SAAS,MAAM;AAC3B,gBAAI,UAAU,CAAC;AACf,aAAE,OAAO,OAAO,MAAO,EAAE,QAAQ,SAASX,OAAM;AAC9C,sBAAQ,KAAK,OAAO,cAAcA,OAAM,MAAM,SAAS,QAAQ,CAAC;AAAA,YAClE,CAAC;AACD,gBAAI,SAAS,UAAU,OAAO;AAC9B,gBAAI,QAAQ;AACV,qBAAO,OAAO,KAAK,aAAa,IAAI,mBAAmB,KAAK,YAAY,OAAO,IAAI;AACnF,yBAAW,MAAM,KAAK,MAAM;AAC5B,kBAAI,OAAO,cAAc;AACvB,iBAAE,OAAO,KAAM,EAAE,QAAQ,SAASA,OAAM;AACtC,yBAAOA,KAAI,EAAE,QAAQ,SAAS,aAAa;AACzC,wBAAI,YAAY,WAAW,OAAO;AAChC,kCAAY,SAAS;AAAA,oBACvB;AAAA,kBACF,CAAC;AAAA,gBACH,CAAC;AACD,uBAAO,KAAK,QAAQ,SAAS,aAAa;AACxC,sBAAI,YAAY,WAAW,MAAM;AAC/B,gCAAY,SAAS;AAAA,kBACvB;AAAA,gBACF,CAAC;AAAA,cACH;AAAA,YACF;AAAA,UACF,CAAC;AACD,cAAI,QAAQ,kBAAkB;AAC5B,iBAAK,oBAAoB;AAAA,UAC3B;AACA,iBAAO;AAAA,QACT;AACA,aAAK,UAAU,oBAAoB,SAAS,oBAAoB;AAC9D,eAAK,aAAa,qBAAqB,KAAK;AAC5C,eAAK,WAAW,mBAAmB,KAAK;AACxC,eAAK,mBAAmB,0BAA0B,KAAK;AACvD,eAAK,iBAAiB,wBAAwB,KAAK;AAAA,QACrD;AACA,aAAK,UAAU,wBAAwB,SAAS,sBAAsB,OAAO;AAC3E,sBAAY,YAAY,MAAM,QAAQ,MAAM,0BAA0B,YAAY,IAAI,IAAI;AAC1F,oCAA0B,KAAK,KAAK,gBAAgB;AAAA,QACtD;AACA,aAAK,UAAU,sBAAsB,SAAS,sBAAsB;AAClE,oCAA0B,KAAK,KAAK,cAAc;AAClD,oCAA0B,KAAK,KAAK,QAAQ;AAC5C,oCAA0B,QAAQ,eAAe,KAAK,IAAI,KAAK,kBAAkB,KAAK,cAAc;AACpG,oCAA0B,QAAQ,UAAU,KAAK,IAAI,KAAK,YAAY,KAAK,QAAQ;AAAA,QACrF;AACA,iBAAS,UAAU,SAAS;AAC1B,cAAI,QAAQ,QAAQ;AAClB,gBAAI,aAAa;AACjB,gBAAI,SAAS,CAAC;AACd,oBAAQ,QAAQ,SAAS,GAAG;AAC1B,kBAAI,MAAM,EAAE,QAAQ,OAAO,SAAS,SAAS;AAC3C,uBAAO;AAAA,cACT,CAAC;AACD,qBAAO,EAAE,IAAI,IAAI;AACjB,kBAAI,IAAI,QAAQ;AACd,6BAAa;AAAA,cACf;AAAA,YACF,CAAC;AACD,gBAAI,YAAY;AACd,qBAAO;AAAA,YACT;AACA,mBAAO;AAAA,UACT;AAAA,QACF;AACA,aAAK,UAAU,sBAAsB,SAAS,oBAAoB,UAAU,SAAS;AACnF,cAAI,SAAS;AACb,cAAI,mBAAmB,wBAAwB,KAAK;AACpD,cAAI,iBAAiB,sBAAsB,KAAK;AAChD,cAAI,QAAQ,KAAK,OAAO,UAAU,OAAO;AACzC,cAAI,QAAQ,kBAAkB;AAC5B,sCAA0B,KAAK,gBAAgB;AAAA,UACjD;AACA,kBAAQ,MAAM,OAAO,SAAS,MAAM;AAClC,mBAAO,OAAO,QAAQ,KAAK,YAAY,MAAM,QAAQ;AAAA,UACvD,CAAC;AACD,cAAI,QAAQ,kBAAkB;AAC5B,sCAA0B,KAAK,cAAc;AAC7C,sCAA0B,QAAQ,UAAU,KAAK,KAAK,YAAY,kBAAkB,cAAc;AAAA,UACpG;AACA,iBAAO;AAAA,QACT;AACA,iBAAS,gBAAgB,OAAO;AAC9B,iBAAO,uBAAuB,KAAK,EAAE,IAAI,SAAS,GAAG;AACnD,gBAAI,SAAS,MAAM,OAAO,OAAO,EAAE,MAAM,CAAC;AAC1C,mBAAO,UAAU,OAAO,OAAO,UAAU,aAAa,SAAS;AAAA,UACjE,CAAC,EAAE,OAAO,OAAO;AAAA,QACnB;AACA,iBAAS,iBAAiB,OAAO,SAAS;AACxC,cAAI,eAAe,CAAC;AACpB,gBAAM,QAAQ,SAAS,YAAY;AACjC,gBAAI,SAAS,uBAAuB,UAAU;AAC9C,mBAAO,QAAQ,SAAS,aAAa;AACnC,kBAAI,YAAY,OAAO,SAAS;AAC9B,4BAAY,OAAO,WAAW;AAC9B,6BAAa,KAAK,WAAW;AAAA,cAC/B;AAAA,YACF,CAAC;AAAA,UACH,CAAC;AACD,iBAAO;AAAA,QACT;AACA,iBAAS,aAAa,QAAQ;AAC5B,iBAAO,OAAO,OAAO,SAAS,QAAQ;AACpC,mBAAO,OAAO,aAAa;AAAA,UAC7B,CAAC;AAAA,QACH;AACA,iBAAS,cAAc,QAAQ;AAC7B,cAAI,cAAc,CAAE,OAAO,OAAO,MAAO;AACzC,cAAI,QAAQ,OAAO,MAAM,OAAO,SAAS,QAAQ;AAC/C,gBAAI,SAAS;AACb,wBAAY,QAAQ,SAASA,OAAM;AACjC,qBAAOA,KAAI,IAAI,aAAa,OAAOA,KAAI,CAAC;AACxC,wBAAU,OAAOA,KAAI,EAAE;AAAA,YACzB,CAAC;AACD,mBAAO,SAAS;AAAA,UAClB,CAAC;AACD,cAAI,OAAO,aAAa,MAAM,QAAQ;AACpC,oBAAQ,CAAE,MAAM,OAAO,SAAS,GAAG,GAAG;AACpC,kBAAI,GAAG;AACL,4BAAY,QAAQ,SAASA,OAAM;AACjC,oBAAEA,KAAI,EAAE,KAAK,MAAM,EAAEA,KAAI,GAAG,EAAEA,KAAI,CAAC;AAAA,gBACrC,CAAC;AACD,uBAAO;AAAA,cACT;AAAA,YACF,CAAC,CAAE;AAAA,UACL;AACA,iBAAO;AAAA,QACT;AACA,aAAK,UAAU,QAAQ,SAAS,MAAM,QAAQ,SAAS;AACrD,cAAI,cAAc,gBAAgB,IAAI;AACtC,cAAI,SAAS,KAAK;AAClB,sBAAY,QAAQ,SAAS,QAAQ;AACnC,gBAAI,gBAAgB,iBAAiB,OAAO,OAAO,OAAO,EAAE;AAC5D,gBAAI,SAAS,yBAAyB,QAAQ,QAAQ,OAAO;AAC7D,gBAAI,eAAe,OAAO,MAAM,eAAe,MAAM;AACrD,0BAAc,QAAQ,SAAS,MAAM;AACnC,qBAAO,KAAK;AACZ,kBAAI,aAAa,QAAQ,IAAI,MAAM,IAAI;AACrC,qBAAK,WAAW;AAAA,cAClB;AAAA,YACF,CAAC;AAAA,UACH,CAAC;AACD,iBAAO,QAAQ,cAAc,MAAM;AACnC,iBAAO;AAAA,QACT;AACA,aAAK,UAAU,YAAY,SAAS,WAAW,MAAM;AACnD,cAAI,KAAK,eAAe,UAAU,GAAG;AACnC,iBAAK,WAAW,KAAK;AAAA,UACvB;AACA,cAAI,KAAK,eAAe,eAAe,GAAG;AACxC,iBAAK,gBAAgB,OAAO,KAAK,kBAAkB,YAAY,KAAK,gBAAgB;AAAA,UACtF;AACA,cAAI,KAAK,eAAe,SAAS,GAAG;AAClC,iBAAK,UAAU,OAAO,KAAK,YAAY,YAAY,KAAK,UAAU;AAAA,UACpE;AACA,cAAI,KAAK,eAAe,WAAW,GAAG;AACpC,iBAAK,YAAY,OAAO,KAAK,cAAc,YAAY,KAAK,YAAY;AAAA,UAC1E;AACA,cAAI,KAAK,eAAe,cAAc,GAAG;AACvC,iBAAK,eAAe,OAAO,KAAK,iBAAiB,YAAY,KAAK,eAAe;AAAA,UACnF;AACA,cAAI,KAAK,eAAe,KAAK,GAAG;AAC9B,iBAAK,MAAM,KAAK;AAAA,UAClB;AACA,cAAI,KAAK,eAAe,KAAK,GAAG;AAC9B,iBAAK,MAAM,KAAK;AAAA,UAClB;AACA,cAAI,KAAK,eAAe,MAAM,GAAG;AAC/B,iBAAK,OAAO,KAAK;AAAA,UACnB;AACA,cAAI,KAAK,eAAe,MAAM,GAAG;AAC/B,iBAAK,OAAO,KAAK;AAAA,UACnB;AACA,cAAI,KAAK,eAAe,SAAS,GAAG;AAClC,iBAAK,UAAU,uBAAuB,KAAK,OAAO;AAAA,UACpD;AACA,cAAI,KAAK,QAAQ;AACf,2BAAe,kBAAkB,OAAO,SAAS,KAAK,MAAM,GAAG,UAAU,OAAO,KAAK,QAAQ,wBAAwB,CAAC;AACtH,iBAAK,SAAS,KAAK;AAAA,UACrB;AAAA,QACF;AACA,YAAI,eAAe;AACnB,YAAI,MAAM,WAAW,YAAY,CAAC;AAClC,YAAI,WAAW;AACf,iBAAS,mBAAmB;AAC1B,cAAIzD,QAAO,QAAQ;AACjB,mBAAOA,QAAO;AAAA,UAChB;AACA,cAAIA,QAAO,YAAYA,QAAO,SAAS,QAAQ;AAC7C,mBAAOA,QAAO,SAAS;AAAA,UACzB;AAAA,QACF;AACA,iBAAS,wBAAwB,QAAQ;AACvC,cAAI4O;AACJ,cAAI,QAAQ;AACV,YAAAA,UAAS1H,eAAc,MAAM;AAC7B,YAAA0H,QAAO,UAAU,OAAO;AAAA,UAC1B,OAAO;AACL,YAAAA,UAAS,CAAC;AAAA,UACZ;AACA,UAAAA,QAAO,WAAWA,QAAO,YAAY;AACrC,UAAAA,QAAO,SAASA,QAAO,UAAU;AACjC,cAAI,CAACA,QAAO,gBAAgB;AAC1B,gBAAI,gBAAgB,iBAAiB;AACrC,YAAAA,QAAO,iBAAiB,gBAAgB,CAAE,aAAc,IAAI,CAAC;AAAA,UAC/D;AACA,UAAAA,QAAO,QAAQA,QAAO,SAAS,CAAC;AAChC,UAAAA,QAAO,SAASA,QAAO,UAAU,CAAC;AAClC,UAAAA,QAAO,OAAO,SAAS;AAAA,YACrB,QAAQ,CAAC;AAAA,YACT,OAAO,CAAC;AAAA,UACV,GAAGA,QAAO,IAAI;AACd,iBAAOA;AAAA,QACT;AACA,iBAAS,eAAe,YAAY,QAAQ,QAAQ;AAClD,cAAI7M,IAAG;AACP,eAAKA,KAAI,GAAG,IAAI,WAAW,QAAQA,KAAI,GAAGA,MAAK;AAC7C,mBAAO,MAAM,EAAE,WAAWA,EAAC,CAAC;AAAA,UAC9B;AAAA,QACF;AACA,YAAI,mBAAmB,SAAS6U,kBAAiB,GAAG,GAAG;AACrD,cAAI,OAAO,EAAE,MAAM,OAAO,EAAE;AAC5B,cAAI,OAAO,SAAS,YAAY,SAAS,KAAK,IAAI,GAAG;AACnD,mBAAO,IAAI,SAAS,EAAE,QAAQ,IAAI;AAAA,UACpC;AACA,cAAI,OAAO,SAAS,YAAY,SAAS,KAAK,IAAI,GAAG;AACnD,mBAAO,IAAI,SAAS,EAAE,QAAQ,IAAI;AAAA,UACpC;AACA,iBAAO,SAAS,CAAC,GAAG,GAAG;AAAA,YACrB,UAAU;AAAA,cACR,MAAM,QAAQ,EAAE,SAAS;AAAA,cACzB,MAAM,QAAQ,EAAE,SAAS;AAAA,cACzB,YAAY,QAAQ,EAAE,SAAS,UAAU,MAAM,WAAW,SAAS,CAAC,GAAG,EAAE,SAAS,YAAY,EAAE,UAAU,IAAI,EAAE;AAAA,YAClH;AAAA,UACF,CAAC;AAAA,QACH;AACA,YAAI,kBAAkB,SAASC,iBAAgB,GAAG,GAAG;AACnD,cAAI,OAAO,EAAE,MAAM,cAAc,EAAE;AACnC,cAAI,OAAO,SAAS,YAAY,SAAS,KAAK,IAAI,GAAG;AACnD,mBAAO,IAAI,SAAS,EAAE,QAAQ,IAAI;AAAA,UACpC;AACA,cAAI,OAAO,gBAAgB,YAAY,SAAS,KAAK,WAAW,GAAG;AACjE,0BAAc,IAAI,SAAS,EAAE,QAAQ,WAAW;AAAA,UAClD;AACA,iBAAO,SAAS,CAAC,GAAG,GAAG;AAAA,YACrB,MAAM,QAAQ,EAAE;AAAA,YAChB,aAAa,eAAe,EAAE;AAAA,UAChC,CAAC;AAAA,QACH;AACA,YAAI,sBAAsB,SAASC,qBAAoB,GAAG,GAAG;AAC3D,cAAI,iBAAiB,EAAE;AACvB,cAAI,OAAO,mBAAmB,YAAY,SAAS,KAAK,cAAc,GAAG;AACvE,6BAAiB,IAAI,SAAS,EAAE,QAAQ,cAAc;AAAA,UACxD;AACA,iBAAO,SAAS,CAAC,GAAG,GAAG;AAAA,YACrB,gBAAgB,kBAAkB,EAAE;AAAA,UACtC,CAAC;AAAA,QACH;AACA,YAAI,uBAAuB,SAASC,sBAAqB,GAAG,GAAG;AAC7D,cAAI,OAAO,MAAM,YAAY,SAAS,KAAK,CAAC,GAAG;AAC7C,gBAAI,IAAI,SAAS,EAAE,QAAQ,CAAC;AAAA,UAC9B;AACA,iBAAO,KAAK;AAAA,QACd;AACA,YAAI,SAAQ,WAAW;AACrB,mBAASC,OAAM,QAAQ;AACrB,4BAAgB,MAAMA,MAAK;AAC3B,iBAAK,OAAO;AACZ,iBAAK,gBAAgB;AACrB,iBAAK,YAAY;AACjB,iBAAK,MAAM;AACX,iBAAK,iBAAiB;AAAA,UACxB;AACA,uBAAaA,QAAO,CAAE;AAAA,YACpB,KAAK;AAAA,YACL,OAAO,SAAS,oBAAoB;AAClC,kBAAI,KAAK,gBAAgB;AACvB;AAAA,cACF;AACA,kBAAIC,UAAS;AAAA,gBACX,QAAQ,CAAC;AAAA,gBACT,OAAO,CAAC;AAAA,gBACR,kBAAkB,CAAC;AAAA,gBACnB,2BAA2B;AAAA,gBAC3B,MAAM,KAAK;AAAA,cACb;AACA,kBAAI,WAAW,OAAO,KAAK,KAAK,KAAK,MAAM;AAC3C,uBAAS,OAAO,GAAG,OAAO,SAAS,QAAQ,QAAQ;AACjD,oBAAInT,MAAK,SAAS,IAAI;AACtB,oBAAI,SAAS,KAAK,KAAK,OAAOA,GAAE;AAChC,oBAAI,mBAAmB,OAAO,UAAU,OAAO,iBAAiB,MAAM,OAAO,iBAAiB,MAAM,aAAa,iBAAiB;AAClI,gBAAAmT,QAAO,OAAOnT,GAAE,IAAI;AAAA,kBAClB;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AACA,kBAAI,UAAU,OAAO,KAAK,KAAK,KAAK,KAAK;AACzC,uBAAS,OAAO,GAAG,OAAO,QAAQ,QAAQ,QAAQ;AAChD,oBAAI,MAAM,QAAQ,IAAI;AACtB,oBAAI,QAAQ,KAAK,KAAK,MAAM,GAAG;AAC/B,oBAAI,cAAc,MAAM,aAAa,OAAO,MAAM;AAClD,gBAAAmT,QAAO,MAAM,GAAG,IAAI;AAAA,kBAClB;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AACA,kBAAI,mBAAmB,OAAO,KAAK,KAAK,KAAK,gBAAgB;AAC7D,uBAAS,OAAO,GAAG,OAAO,iBAAiB,QAAQ,QAAQ;AACzD,oBAAIxT,QAAO,iBAAiB,IAAI;AAChC,oBAAI,kBAAkB,KAAK,KAAK,iBAAiBA,KAAI;AACrD,oBAAI,iBAAiB,gBAAgB;AACrC,gBAAAwT,QAAO,iBAAiBxT,KAAI,IAAI;AAAA,kBAC9B;AAAA,gBACF;AAAA,cACF;AACA,cAAAwT,QAAO,4BAA4B,KAAK,KAAK;AAC7C,mBAAK,iBAAiBA;AAAA,YACxB;AAAA,UACF,GAAG;AAAA,YACD,KAAK;AAAA,YACL,OAAO,SAAS,eAAe;AAC7B,kBAAIC,iBAAgB,KAAK;AACzB,kBAAI,CAACA,gBAAe;AAClB;AAAA,cACF;AACA,mBAAK,YAAYA,cAAa;AAAA,YAChC;AAAA,UACF,GAAG;AAAA,YACD,KAAK;AAAA,YACL,OAAO,SAAS,kBAAkB,QAAQ;AACxC,kBAAIvU,QAAO,OAAO,KAAK,MAAM;AAC7B,uBAAS,OAAO,GAAG,OAAOA,MAAK,QAAQ,QAAQ;AAC7C,oBAAImB,MAAKnB,MAAK,IAAI;AAClB,oBAAI,CAAC,KAAK,KAAK,OAAOmB,GAAE,GAAG;AACzB,wBAAM,IAAI,MAAM,uCAAuC,OAAOA,KAAI,GAAG,CAAC;AAAA,gBACxE;AACA,qBAAK,KAAK,OAAOA,GAAE,IAAI,iBAAiB,KAAK,KAAK,OAAOA,GAAE,GAAG,OAAOA,GAAE,CAAC;AAAA,cAC1E;AAAA,YACF;AAAA,UACF,GAAG;AAAA,YACD,KAAK;AAAA,YACL,OAAO,SAAS,iBAAiB,OAAO;AACtC,kBAAInB,QAAO,OAAO,KAAK,KAAK;AAC5B,uBAAS,OAAO,GAAG,OAAOA,MAAK,QAAQ,QAAQ;AAC7C,oBAAImB,MAAKnB,MAAK,IAAI;AAClB,oBAAI,CAAC,KAAK,KAAK,MAAMmB,GAAE,GAAG;AACxB,wBAAM,IAAI,MAAM,sCAAsC,OAAOA,KAAI,GAAG,CAAC;AAAA,gBACvE;AACA,qBAAK,KAAK,MAAMA,GAAE,IAAI,gBAAgB,KAAK,KAAK,MAAMA,GAAE,GAAG,MAAMA,GAAE,CAAC;AAAA,cACtE;AAAA,YACF;AAAA,UACF,GAAG;AAAA,YACD,KAAK;AAAA,YACL,OAAO,SAAS,uBAAuB,UAAU;AAC/C,kBAAInB,QAAO,OAAO,KAAK,QAAQ;AAC/B,uBAAS,OAAO,GAAG,OAAOA,MAAK,QAAQ,QAAQ;AAC7C,oBAAI,MAAMA,MAAK,IAAI;AACnB,oBAAI,CAAC,KAAK,KAAK,iBAAiB,GAAG,GAAG;AACpC,wBAAM,IAAI,MAAM,gDAAgD,OAAO,KAAK,GAAG,CAAC;AAAA,gBAClF;AACA,qBAAK,KAAK,iBAAiB,GAAG,IAAI,oBAAoB,KAAK,KAAK,iBAAiB,GAAG,GAAG,SAAS,GAAG,CAAC;AAAA,cACtG;AAAA,YACF;AAAA,UACF,GAAG;AAAA,YACD,KAAK;AAAA,YACL,OAAO,SAAS,YAAYsU,SAAQ;AAClC,mBAAK,kBAAkB;AACvB,kBAAIA,QAAO,QAAQ;AACjB,qBAAK,kBAAkBA,QAAO,MAAM;AAAA,cACtC;AACA,kBAAIA,QAAO,OAAO;AAChB,qBAAK,iBAAiBA,QAAO,KAAK;AAAA,cACpC;AACA,kBAAIA,QAAO,kBAAkB;AAC3B,qBAAK,uBAAuBA,QAAO,kBAAkB,kBAAkB;AAAA,cACzE;AACA,kBAAIA,QAAO,2BAA2B;AACpC,qBAAK,KAAK,4BAA4B,qBAAqB,KAAK,KAAK,2BAA2BA,QAAO,yBAAyB;AAAA,cAClI;AACA,kBAAIA,QAAO,MAAM;AACf,qBAAK,OAAOA,QAAO;AAAA,cACrB;AAAA,YACF;AAAA,UACF,GAAG;AAAA,YACD,KAAK;AAAA,YACL,OAAO,SAAS,kBAAkB,gBAAgB;AAChD,kBAAI,gBAAgB,iBAAiB;AACrC,mBAAK,iBAAiB,CAAC;AACvB,kBAAI,aAAa,2BAA2B,cAAc,GAAG;AAC7D,kBAAI;AACF,qBAAK,WAAW,EAAE,GAAG,EAAE,SAAS,WAAW,EAAE,GAAG,QAAQ;AACtD,sBAAIlM,UAAS,OAAO;AACpB,sBAAIA,YAAW,kBAAkB,YAAY;AAC3C,yBAAK,iBAAiB,CAAE,GAAI;AAC5B;AAAA,kBACF,WAAWA,YAAW,kBAAkB,YAAY;AAClD,yBAAK,eAAe,KAAKA,OAAM;AAAA,kBACjC,WAAW,eAAe;AACxB,yBAAK,eAAe,KAAK,aAAa;AAAA,kBACxC;AAAA,gBACF;AAAA,cACF,SAASnJ,MAAK;AACZ,2BAAW,EAAEA,IAAG;AAAA,cAClB,UAAE;AACA,2BAAW,EAAE;AAAA,cACf;AAAA,YACF;AAAA,UACF,GAAG;AAAA,YACD,KAAK;AAAA,YACL,OAAO,SAAS,QAAQ;AACtB,kBAAI,SAAS,wBAAwB,KAAK,aAAa;AACvD,mBAAK,OAAO,OAAO,QAAQ;AAC3B,mBAAK,WAAW,OAAO;AACvB,mBAAK,WAAW,CAAC;AACjB,mBAAK,QAAQ,CAAC;AACd,mBAAK,SAAS,CAAC;AACf,mBAAK,QAAQ;AACb,mBAAK,cAAc;AACnB,mBAAK,aAAa,CAAE,cAAe;AACnC,mBAAK,SAAS,OAAO;AACrB,mBAAK,iBAAiB,OAAO;AAC7B,6BAAe,OAAO,OAAO,MAAM,SAAS;AAC5C,6BAAe,OAAO,QAAQ,MAAM,UAAU;AAC9C,mBAAK,OAAO,CAAC;AACb,mBAAK,KAAK,SAAS,OAAO,QAAQ,OAAO,KAAK,UAAU,CAAC;AACzD,mBAAK,KAAK,QAAQ,OAAO,QAAQ,OAAO,KAAK,SAAS,CAAC;AACvD,mBAAK,KAAK,mBAAmB,OAAO,QAAQ,OAAO,KAAK,oBAAoB,CAAC;AAC7E,mBAAK,KAAK,4BAA4B,OAAO,QAAQ,OAAO,KAAK,6BAA6B;AAC9F,mBAAK,mBAAmB;AAAA,YAC1B;AAAA,UACF,GAAG;AAAA,YACD,KAAK;AAAA,YACL,OAAO,SAAS,gBAAgB,SAAS;AACvC,mBAAK,SAAS,QAAQ,EAAE,IAAI,QAAQ;AAAA,YACtC;AAAA,UACF,GAAG;AAAA,YACD,KAAK;AAAA,YACL,OAAO,SAAS,QAAQ,MAAM;AAC5B,kBAAI,KAAK,UAAU;AACjB,qBAAK,KAAK,MAAM,KAAK,EAAE,IAAI,KAAK;AAAA,cAClC;AACA,kBAAI,QAAQ,KAAK,QAAQ,KAAK,EAAE;AAChC,kBAAI,OAAO;AACT,sBAAM,UAAU,IAAI;AAAA,cACtB,OAAO;AACL,qBAAK,MAAM,KAAK,IAAI,aAAa,MAAM,IAAI,CAAC;AAAA,cAC9C;AAAA,YACF;AAAA,UACF,GAAG;AAAA,YACD,KAAK;AAAA,YACL,OAAO,SAAS,SAAS,MAAM;AAC7B,kBAAI,WAAW,KAAK;AACpB,kBAAI,QAAQ,QAAQ,MAAM,UAAU;AAClC,qBAAK,KAAK,OAAO,KAAK,EAAE,IAAI;AAC5B,oBAAI,QAAQ,SAAS,QAAQ,MAAM,UAAU;AAC3C,yBAAO,KAAK,SAAS,QAAQ,EAAE,OAAO,SAAS,MAAM;AACnD,2BAAO,SAAS,SAAS,eAAe,IAAI,KAAK,OAAO,SAAS,SAAS,IAAI,MAAM;AAAA,kBACtF,CAAC,EAAE,QAAQ,SAAS,MAAM;AACxB,wBAAI,SAAS,SAAS,IAAI,EAAE,QAAQ,UAAU,MAAM,GAAG;AACrD,+BAAS,SAAS,IAAI,IAAI,IAAI,SAAS,YAAY,SAAS,SAAS,IAAI,IAAI,GAAG,EAAE;AAAA,oBACpF;AAAA,kBACF,CAAC;AAAA,gBACH;AAAA,cACF;AACA,kBAAI,KAAK,OAAO,KAAK,EAAE,GAAG;AACxB,qBAAK,OAAO,KAAK,EAAE,EAAE,UAAU,IAAI;AAAA,cACrC,OAAO;AACL,qBAAK,OAAO,KAAK,EAAE,IAAI,IAAI,cAAc,IAAI;AAAA,cAC/C;AAAA,YACF;AAAA,UACF,GAAG;AAAA,YACD,KAAK;AAAA,YACL,OAAO,SAAS,IAAI,UAAU,SAASwC,UAAS,QAAQ;AACtD,mBAAK,iBAAiB,OAAO;AAC7B,kBAAI,eAAe,CAAC;AACpB,kBAAI,gBAAgB,cAAc,KAAK,OAAO,UAAU,OAAO;AAC/D,kBAAI,cAAc,cAAc;AAChC,kBAAI,gBAAgB,cAAc;AAClC,kBAAI,gBAAgB,cAAc;AAClC,0BAAY,QAAQ,SAAS,OAAO;AAClC,8BAAc,MAAM,gBAAgB,OAAO,UAAU,OAAO,CAAC;AAAA,cAC/D,CAAC;AACD,kBAAI,iBAAiB,cAAc;AACnC,kBAAI,cAAc,QAAQ;AACxB,+BAAe,MAAM,SAASyB,WAAU;AACtC,kCAAgB,OAAO,EAAE,KAAK,SAAS,QAAQ;AAC7C,2BAAOA,UAAS,MAAM;AAAA,kBACxB,CAAC,EAAE,OAAO,EAAE,SAAS,MAAM;AACzB,4BAAQ,KAAK,kCAAmC,IAAI;AACpD,oBAAAA,UAAS,MAAM;AAAA,kBACjB,CAAC;AAAA,gBACH,CAAC;AAAA,cACH;AACA,kBAAI,+BAA+B,cAAc;AACjD,2CAA6B,MAAM,aAAa;AAChD,2CAA6B,MAAM,cAAc;AACjD,2CAA6B,KAAK,SAAS,6BAA6B;AACtE,oBAAI,kBAAkB,4BAA4B,IAAI;AACtD,oBAAI,mBAAmB,gBAAgB,QAAQ;AAC7C,sBAAI,SAAS,gBAAgB,CAAC;AAC9B,sBAAI,QAAQ;AACV,+BAAW,SAAS,CAAC,GAAG,UAAU,MAAM;AAAA,kBAC1C;AAAA,gBACF;AACA,oBAAI,kBAAkB,4BAA4B,CAAC;AACnD,oBAAI,CAAC,cAAc,QAAQ;AACzB,sBAAI,eAAe;AACnB,kBAAAzB,SAAQ,gBAAgB,OAAO,SAAS,QAAQ;AAC9C,2BAAO,CAAC,CAAC;AAAA,kBACX,CAAC,CAAC;AACF;AAAA,gBACF;AACA,oBAAI,kBAAkB,cAAc;AACpC,8BAAc,QAAQ,SAAS,OAAO;AACpC,sBAAI,eAAe,gBAAgB,OAAO,UAAU,OAAO;AAC3D,kCAAgB,MAAM,YAAY;AAAA,gBACpC,CAAC;AACD,gCAAgB,KAAK,SAAS,kBAAkB;AAC9C,sBAAI,eAAe;AACnB,kBAAAA,SAAQ,gBAAgB,OAAO,gBAAgB,EAAE,OAAO,SAAS,QAAQ;AACvE,2BAAO,CAAC,CAAC;AAAA,kBACX,CAAC,CAAC;AAAA,gBACJ,CAAC,EAAE,OAAO,EAAE,MAAM;AAAA,cACpB,CAAC,EAAE,OAAO,EAAE,MAAM;AAAA,YACpB;AAAA,UACF,GAAG;AAAA,YACD,KAAK;AAAA,YACL,OAAO,SAAS,MAAM,SAAS,SAAS;AACtC,kBAAI,QAAQ,KAAK;AACjB,qBAAO,QAAQ,IAAI,SAAS,YAAY;AACtC,oBAAI,QAAQ,gBAAgB,OAAO,MAAM,WAAW,EAAE;AACtD,oBAAI,CAAC,OAAO;AACV,wBAAM,IAAI,MAAM,wEAAwE;AAAA,gBAC1F;AACA,uBAAO,MAAM,MAAM,YAAY,OAAO;AAAA,cACxC,CAAC;AAAA,YACH;AAAA,UACF,GAAG;AAAA,YACD,KAAK;AAAA,YACL,OAAO,SAASiE,SAAQ,QAAQ;AAC9B,qBAAO,KAAK,MAAM,KAAK,SAAS,OAAO;AACrC,uBAAO,MAAM,OAAO;AAAA,cACtB,CAAC;AAAA,YACH;AAAA,UACF,GAAG;AAAA,YACD,KAAK;AAAA,YACL,OAAO,SAAS8O,kBAAiB,SAAS;AACxC,kBAAI,SAAS;AACb,kBAAI,OAAO,CAAC;AACZ,kBAAI,UAAU,CAAC;AACf,qBAAO,MAAM,QAAQ,SAAS,OAAO;AACnC,wBAAQ,KAAK,MAAM,EAAE;AACrB,sBAAM,KAAK,QAAQ,SAAS,KAAK;AAC/B,sBAAI,CAAC,KAAK,SAAS,GAAG,GAAG;AACvB,yBAAK,KAAK,GAAG;AAAA,kBACf;AAAA,gBACF,CAAC;AAAA,cACH,CAAC;AACD,kBAAI,QAAQ,QAAQ,OAAO,MAAM,UAAU;AACzC,oBAAI,MAAM,QAAQ,QAAQ,OAAO,GAAG;AAClC,sBAAI,SAAS,QAAQ,QAAQ,KAAK,SAAS,OAAO;AAChD,2BAAO,KAAK,SAAS,KAAK;AAAA,kBAC5B,CAAC;AACD,sBAAI,UAAU,QAAQ,QAAQ,KAAK,SAAS,OAAO;AACjD,2BAAO,QAAQ,SAAS,KAAK;AAAA,kBAC/B,CAAC;AACD,sBAAI,UAAU,SAAS;AACrB,0BAAM,IAAI,MAAM,uCAAuC;AAAA,kBACzD;AACA,sBAAI,SAAS;AACX,4BAAQ,UAAU;AAAA,sBAChB,MAAM;AAAA,sBACN,QAAQ,QAAQ;AAAA,oBAClB;AAAA,kBACF,OAAO;AACL,4BAAQ,UAAU;AAAA,sBAChB,MAAM;AAAA,sBACN,QAAQ,QAAQ;AAAA,oBAClB;AAAA,kBACF;AAAA,gBACF;AACA,oBAAI,OAAO,QAAQ;AACnB,oBAAI,KAAK,SAAS,CAAC,KAAK,QAAQ;AAC9B,uBAAK,SAAS,KAAK;AACnB,yBAAO,KAAK;AAAA,gBACd;AACA,oBAAI,CAAC,MAAM,QAAQ,KAAK,MAAM,KAAK,KAAK,OAAO,WAAW,GAAG;AAC3D,wBAAM,IAAI,MAAM,0CAA0C;AAAA,gBAC5D;AACA,oBAAI,CAAE,QAAQ,OAAQ,EAAE,SAAS,KAAK,IAAI,GAAG;AAC3C,uBAAK,OAAO;AACZ,uBAAK,OAAO,QAAQ,SAAS,QAAQ;AACnC,wBAAI,CAAC,QAAQ,SAAS,MAAM,GAAG;AAC7B,4BAAM,IAAI,MAAM,mBAAmB,SAAS,sBAAsB;AAAA,oBACpE;AAAA,kBACF,CAAC;AAAA,gBACH,WAAW,CAAE,OAAO,QAAQ,MAAO,EAAE,SAAS,KAAK,IAAI,GAAG;AACxD,uBAAK,OAAO;AACZ,sBAAI,gBAAgB,KAAK,OAAO,OAAO,SAAS,KAAK;AACnD,2BAAO,CAAC,KAAK,SAAS,GAAG;AAAA,kBAC3B,CAAC;AACD,sBAAI,cAAc,WAAW,GAAG;AAC9B,gCAAY,0BAA0B,cAAc,KAAK,MAAM,IAAI,GAAG;AAAA,kBACxE;AAAA,gBACF,OAAO;AACL,wBAAM,IAAI,MAAM,yBAA0B,OAAO,KAAK,MAAM,GAAI,CAAC;AAAA,gBACnE;AAAA,cACF;AACA,kBAAI,QAAQ,QAAQ,KAAK,MAAM,UAAU;AACvC,uBAAO,KAAK,QAAQ,KAAK,EAAE,QAAQ,SAAS,QAAQ;AAClD,sBAAI,CAAC,QAAQ,SAAS,MAAM,GAAG;AAC7B,0BAAM,IAAI,MAAM,mBAAmB,SAAS,oBAAoB;AAAA,kBAClE;AAAA,gBACF,CAAC;AAAA,cACH;AACA,qBAAO;AAAA,YACT;AAAA,UACF,GAAG;AAAA,YACD,KAAK;AAAA,YACL,OAAO,SAAS,YAAY,UAAU;AACpC,kBAAI,WAAW;AAAA,gBACb,OAAO,KAAK;AAAA,gBACZ,aAAa,KAAK;AAAA,cACpB;AACA,kBAAI,YAAY,SAAS,eAAe,OAAO,KAAK,SAAS,SAAS,OAAO,SAAS,UAAU,UAAU;AACxG,qBAAK,QAAQ,SAAS;AAAA,cACxB;AACA,kBAAI,YAAY,SAAS,eAAe,aAAa,KAAK,SAAS,eAAe,OAAO,SAAS,gBAAgB,UAAU;AAC1H,qBAAK,cAAc,SAAS;AAAA,cAC9B;AACA,mBAAK,mBAAmB,QAAQ;AAAA,YAClC;AAAA,UACF,GAAG;AAAA,YACD,KAAK;AAAA,YACL,OAAO,SAAS,qBAAqB;AACnC,kBAAI,SAAS;AACb,kBAAI,WAAW,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI;AACnF,kBAAIvM,YAAW,IAAI,QAAQ,MAAM,sBAAsB,KAAK,CAAE,KAAM,GAAG,CAAC;AACxE,mBAAK,MAAM,QAAQ,SAAS,OAAO;AACjC,oBAAI,CAAC,OAAO,KAAK,MAAM,MAAM,EAAE,GAAG;AAChC,yBAAO,KAAK,MAAM,MAAM,EAAE,IAAI,CAAC;AAAA,gBACjC;AACA,oBAAI,WAAW,OAAO,KAAK,MAAM,MAAM,EAAE;AACzC,oBAAI,OAAO,SAAS,YAAY,YAAY,YAAY,SAAS,YAAY,WAAW,UAAU,MAAM,IAAIA,QAAO,GAAG;AACpH,2BAAS,UAAU,WAAW,QAAQ,MAAM,IAAIA,QAAO;AAAA,gBACzD;AAAA,cACF,CAAC;AAAA,YACH;AAAA,UACF,GAAG;AAAA,YACD,KAAK;AAAA,YACL,OAAO,SAAS,sBAAsB;AACpC,mBAAK,MAAM;AACX,mBAAK,aAAa;AAAA,YACpB;AAAA,UACF,CAAE,CAAC;AACH,iBAAOoM;AAAA,QACT,GAAE;AACF,iBAAS,cAAc,OAAO,UAAU,SAAS;AAC/C,cAAI,OAAO;AAAA,YACT,KAAK,CAAC;AAAA,YACN,OAAO,CAAC;AAAA,UACV;AACA,cAAI,aAAa,MAAM,OAAO,SAAS,KAAK,OAAO;AACjD,gBAAI,CAAC,wBAAwB,OAAO,UAAU,OAAO,GAAG;AACtD,qBAAO;AAAA,YACT;AACA,gBAAI,MAAM,SAAS;AACjB,kBAAI,MAAM,KAAK,KAAK;AACpB,qBAAO;AAAA,YACT;AACA,gBAAI,IAAI,KAAK,KAAK;AAClB,mBAAO;AAAA,UACT,GAAG,IAAI;AACP,iBAAO;AAAA,QACT;AACA,iBAAS,gBAAgB,OAAO,UAAU,SAAS;AACjD,cAAI,QAAQ,kBAAkB;AAC5B,sCAA0B,KAAK,qBAAqB,MAAM,EAAE;AAAA,UAC9D;AACA,iBAAO,SAAS5S,UAAS,QAAQ;AAC/B,kBAAM,IAAI,UAAU,SAAS,SAAS,YAAY;AAChD,cAAAA,SAAQ,UAAU;AAAA,YACpB,GAAG,SAAS,MAAM;AAChB,kBAAI,CAAC,QAAQ,OAAO;AAClB,oBAAI,YAAY,OAAO,OAAO,IAAI,oBAAoB,KAAK,GAAG;AAAA,kBAC5D,QAAQ,kBAAkB;AAAA,kBAC1B,aAAa;AAAA,kBACb,SAAS,KAAK;AAAA,kBACd,OAAO,KAAK;AAAA,kBACZ,OAAO;AAAA,kBACP,WAAW,KAAK;AAAA,gBAClB,CAAC;AACD,gBAAAA,SAAQ,SAAS;AAAA,cACnB,OAAO;AACL,uBAAO,IAAI;AAAA,cACb;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF;AACA,iBAAS,WAAW,QAAQ,QAAQwG,UAAS;AAC3C,cAAI,QAAQ,OAAO,OAAO,cAAc,OAAO,aAAa,OAAO,OAAO;AAC1E,iBAAO,kBAAkB,cAAc,QAAQ,OAAOA,YAAW,IAAI,QAAQ,UAAU,GAAG,IAAI,QAAQ,YAAY,GAAG,CAAC,KAAK,MAAM,SAAS,kBAAkB,mBAAmB,WAAW,KAAK,QAAQ,SAAS,OAAO,WAAW,mBAAmB,IAAI,IAAI;AAAA,QAC/P;AACA,YAAI,gBAAgB;AACpB,iBAAS,gBAAgB,YAAYW,QAAO;AAC1C,cAAI,kBAAkBA,MAAK,GAAG;AAC5B;AAAA,UACF;AACA,cAAI,KAAK,gBAAgB,YAAY,QAAQA,MAAK;AAClD,cAAI,CAAC,IAAI;AACP,uBAAW,KAAK;AAAA,cACd,MAAMA;AAAA,cACN,SAAS,CAAC;AAAA,cACV,SAAS,CAAC;AAAA,YACZ,CAAC;AAAA,UACH;AAAA,QACF;AACA,iBAAS,wBAAwB,UAAU9H,OAAM,eAAe;AAC9D,mBAAS,SAAS,SAAS,UAAU,CAAC;AACtC,cAAI,QAAQ8H;AACZ,cAAI,SAASrL,UAAS,iBAAiB,cAAc,MAAM,CAAC;AAC5D,oBAAW,UAAS6B,KAAI,GAAG,IAAI,OAAO,QAAQA,KAAI,GAAGA,MAAK;AACxD,YAAAwJ,SAAQ,OAAOxJ,EAAC;AAChB,qBAAS,IAAI,GAAG,KAAK,SAAS,OAAO,QAAQ,IAAI,IAAI,KAAK;AACxD,kBAAI,SAAS,OAAO,CAAC,EAAE,SAASwJ,QAAO;AACrC,yBAAS,OAAO,CAAC,EAAE9H,KAAI,EAAE,KAAK,aAAa;AAC3C,sBAAM;AAAA,cACR;AAAA,YACF;AACA,qBAAS;AAAA,cACP,MAAM8H;AAAA,cACN,SAAS,CAAC;AAAA,cACV,SAAS,CAAC;AAAA,YACZ;AACA,gBAAI,eAAe;AACjB,qBAAO9H,KAAI,EAAE,KAAK,aAAa;AAAA,YACjC;AACA,qBAAS,OAAO,KAAK,MAAM;AAAA,UAC7B;AAAA,QACF;AACA,iBAAS,iBAAiB,UAAU;AAClC,cAAI,YAAY,QAAQ,QAAQ,MAAM,YAAY,oBAAoBzD,QAAO,UAAU;AACrF,gBAAI,oBAAoBA,QAAO,MAAM;AACnC,qBAAO;AAAA,gBACL,SAAS,CAAE,QAAS;AAAA,gBACpB,SAAS,CAAC;AAAA,cACZ;AAAA,YACF;AACA,gBAAI,SAAS,eAAe,SAAS,KAAK,SAAS,eAAe,SAAS,GAAG;AAC5E,qBAAO;AAAA,gBACL,SAAS,SAAS,WAAW,CAAC,SAAS,QAAQ,SAAS,SAAS,UAAU,CAAEE,SAAS;AAAA,gBACtF,SAAS,SAAS,WAAW,CAAC;AAAA,cAChC;AAAA,YACF;AACA,gBAAI,SAAS,WAAW,CAAC,SAAS,QAAQ;AACxC,qBAAO;AAAA,gBACL,SAAS;AAAA,gBACT,SAAS,CAAC;AAAA,cACZ;AAAA,YACF;AAAA,UACF;AACA,cAAI,OAAO,aAAa,UAAU;AAChC,mBAAO;AAAA,cACL,SAAS,CAAE,QAAS;AAAA,cACpB,SAAS,CAAC;AAAA,YACZ;AAAA,UACF;AACA,iBAAO;AAAA,YACL,SAAS,CAAEA,SAAS;AAAA,YACpB,SAAS,CAAC;AAAA,UACZ;AAAA,QACF;AACA,iBAAS,mBAAmB,UAAUuD,OAAM;AAC1C,cAAI,MAAM,SAAS,CAAC,GAAG;AACvB,mBAAS1B,KAAI,GAAG,IAAI,SAAS0B,KAAI,EAAE,QAAQ1B,KAAI,GAAGA,MAAK;AACrD,mBAAO,SAAS0B,KAAI,EAAE1B,EAAC;AACvB,gBAAI,OAAO,SAAS,UAAU;AAC5B,yBAAW,MAAM,KAAK7B,UAAS,iBAAiB,IAAI,CAAC;AACrD,uBAAS,OAAO,OAAO,SAAS,IAAI,SAAS,MAAM;AACjD,uBAAO,2BAA2B,IAAI;AAAA,cACxC,CAAC,CAAC;AACF;AAAA,YACF,WAAW,QAAQ,KAAK,UAAU,EAAE,gBAAgBF,QAAO,OAAO;AAChE,kBAAI,KAAK,SAAS,GAAG;AACnB,wCAAwB,UAAUyD,OAAM,IAAI;AAAA,cAC9C,OAAO;AACL,2BAAW,MAAM,KAAKvD,UAAS,iBAAiB,KAAK,CAAC,CAAC,CAAC;AACxD,yBAAS,OAAO,OAAO,SAAS,IAAI,SAAS,MAAM;AACjD,yBAAO,2BAA2B,IAAI;AAAA,gBACxC,CAAC,CAAC;AAAA,cACJ;AAAA,YACF,WAAW,gBAAgBF,QAAO,MAAM;AACtC,kBAAI,KAAK,2BAA2BA,QAAO,MAAM;AAC/C,uBAAO,KAAK,SAAS,SAAS,CAAC,CAAC;AAAA,cAClC,OAAO;AACL,uBAAO,KAAK,2BAA2B,IAAI,CAAC;AAAA,cAC9C;AAAA,YACF;AAAA,UACF;AACA,iBAAO,OAAO,OAAO,SAAS,GAAG;AAC/B,mBAAO;AAAA,UACT,CAAC;AAAA,QACH;AACA,iBAAS,gBAAgB,UAAU;AACjC,cAAI,SAAS,QAAQ,WAAW,GAAG;AACjC,gBAAI,SAAS,OAAO,WAAW,GAAG;AAChC,kBAAI,MAAM,aAAa,UAAU,IAAI,UAAU;AAC/C,qBAAO,IAAI,MAAM,sCAAsC,MAAM,UAAU;AAAA,YACzE;AACA,qBAAS,OAAO,QAAQ,SAASuL,QAAOxJ,IAAG;AACzC,kBAAIwJ,OAAM,QAAQ,WAAW,GAAG;AAC9B,uBAAO,IAAI,MAAM,uDAAuDxJ,EAAC;AAAA,cAC3E;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF;AACA,iBAAS,aAAa,QAAQ;AAC5B,cAAI,UAAU,OAAO,SAAS,UAAU,OAAO;AAC/C,cAAI,YAAY,MAAM,KAAK,OAAO,EAAE,OAAO,MAAM,KAAK,OAAO,CAAC;AAC9D,mBAASA,KAAI,GAAGA,KAAI,UAAU,QAAQ,EAAEA,IAAG;AACzC,gBAAI,OAAO,UAAUA,EAAC;AACtB,gBAAI,gBAAgB/B,QAAO,SAAS;AAClC,qBAAO,KAAK,cAAc;AAAA,YAC5B;AACA,gBAAI,gBAAgBA,QAAO,UAAU;AACnC,qBAAO,KAAK;AAAA,YACd;AAAA,UACF;AACA,iBAAOE,UAAS;AAAA,QAClB;AACA,iBAAS,QAAQ,MAAM;AACrB,cAAI,SAAS;AACb,eAAK,SAAS,CAAC;AACf,eAAK,YAAY,QAAQ,OAAO,KAAK,cAAc,YAAY,KAAK,YAAY;AAChF,eAAK,YAAY,QAAQ,OAAO,KAAK,cAAc,YAAY,KAAK,YAAY;AAChF,eAAK,qBAAqB,QAAQ,QAAQ,KAAK,kBAAkB,MAAM,WAAW,KAAK,qBAAqB,CAAC;AAC7G,eAAK,OAAO;AACZ,iBAAO,iBAAiB,IAAI;AAC5B,eAAK,WAAW,2BAA2B,aAAa,IAAI,CAAC;AAC7D,eAAK,UAAU,KAAK;AACpB,eAAK,UAAU,KAAK;AACpB,eAAK,UAAU,mBAAmB,MAAM,SAAS;AACjD,eAAK,UAAU,mBAAmB,MAAM,SAAS;AACjD,UAAAkK,gBAAe,iBAAiB,IAAI,EAAE,QAAQ,SAASmB,QAAO;AAC5D,gBAAI,2BAA2BA,QAAO,MAAM,GAAG;AAC7C,8BAAgB,OAAO,QAAQA,OAAM,UAAU;AAAA,YACjD;AAAA,UACF,CAAC;AACD,cAAI,KAAK,QAAQ,WAAW,KAAK,KAAK,QAAQ,CAAC,EAAE,eAAerL,UAAS,iBAAiB;AACxF,iBAAK,OAAO;AAAA,UACd;AACA,cAAI,OAAO,gBAAgB,IAAI;AAC/B,cAAI,gBAAgB,OAAO;AACzB,kBAAM;AAAA,UACR;AACA,cAAI,CAAC,MAAM,QAAQ,KAAK,OAAO,GAAG;AAChC,iBAAK,UAAU,MAAM,KAAK,KAAK,OAAO;AAAA,UACxC;AACA,eAAK,QAAQ,KAAK,mBAAmB;AAAA,QACvC;AACA,YAAI,kBAAkB;AACtB,YAAI,kBAAkB,CAAC;AACvB,QAAAqB,UAAS,iBAAiB;AAAA,UACxB,mBAAmB,SAAS,oBAAoB;AAC9C,mBAAO,qBAAqB;AAAA,UAC9B;AAAA,UACA,KAAK,SAAS,MAAM;AAClB,mBAAO,KAAK,SAAS;AAAA,UACvB;AAAA,UACA,gBAAgB,SAAS,iBAAiB;AACxC,mBAAO,aAAa,SAAS;AAAA,UAC/B;AAAA,UACA,SAAS,SAAS,UAAU;AAC1B,mBAAO,UAAU,SAAS;AAAA,UAC5B;AAAA,QACF,CAAC;AACD,YAAI,uBAAuB,WAAW,YAAY,CAAC;AACnD,YAAI,OAAO,WAAW,YAAY,CAAC;AACnC,YAAI,eAAe,WAAW,oBAAoB,CAAC;AACnD,YAAI,YAAY,WAAW,iBAAiB,CAAC;AAC7C,YAAI,cAAc,WAAW,oBAAoB,CAAC;AAClD,YAAI,aAAa,WAAW,mBAAmB,CAAC;AAChD,YAAI,mBAAmB,WAAW,yBAAyB,CAAC;AAC5D,YAAI,EAAE,aAAavB,UAAS;AAC1B,sBAAY,SAAS,EAAE,SAAS;AAAA,QAClC;AACA,YAAI,EAAE,iBAAiBA,UAAS;AAC9B,UAAAA,QAAO,cAAc,WAAW;AAAA,QAClC;AACA,YAAIA,QAAO,aAAa;AACtB,cAAI,EAAE,UAAUA,QAAO,YAAY,YAAY;AAC7C,mBAAO,eAAeA,QAAO,YAAY,WAAW,QAAQ;AAAA,cAC1D,OAAO,MAAM,UAAU;AAAA,YACzB,CAAC;AAAA,UACH;AACA,cAAI,EAAE,YAAYA,QAAO,YAAY,YAAY;AAC/C,mBAAO,eAAeA,QAAO,YAAY,WAAW,UAAU;AAAA,cAC5D,OAAO,MAAM,UAAU;AAAA,YACzB,CAAC;AAAA,UACH;AAAA,QACF;AACA,iBAAS,QAAQoE,UAAS,QAAQ;AAChC,UAAAA,WAAUA,YAAW,SAAS,MAAM;AAAA,UAAC;AACrC,mBAAS,UAAU,IAAI;AACvB,cAAI,CAAC,IAAI,QAAQ;AACf,kBAAM,IAAI,MAAM,qBAAqB;AAAA,UACvC;AACA,cAAI,IAAI,IAAI,MAAM,MAAM;AACxB,cAAI,gBAAgB,CAAC;AACrB,iBAAO,KAAK,IAAI,OAAO,EAAE,QAAQ,SAAS,KAAK;AAC7C,cAAE,MAAM,SAAS,KAAK;AACpB,kBAAI,MAAM,SAAS,KAAK,MAAM;AAC5B,8BAAc,KAAK,IAAI;AACvB,oBAAI;AAAA,cACN;AACA,kBAAI;AACF,oBAAI,QAAQ,GAAG,EAAE,QAAQ,KAAK,GAAG;AAAA,cACnC,SAAS,MAAM;AACb,oBAAI,IAAI;AAAA,cACV;AAAA,YACF,CAAC;AAAA,UACH,CAAC;AACD,cAAI,gBAAgB,IAAI,MAAM,iBAAiBlE,UAAS,IAAI;AAC5D,cAAI,MAAM,iBAAiB,eAAe,eAAe,EAAE,QAAQ,SAAS,MAAM;AAChF,cAAE,MAAM,SAAS,KAAK,KAAK;AACzB,qBAAO,IAAI,MAAM,mBAAmB,KAAK,YAAY;AAAA,gBACnD,SAAS;AAAA,cACX,GAAG,KAAK,GAAG;AAAA,YACb,CAAC;AAAA,UACH,CAAC;AACD,YAAE,KAAK,SAAS,SAAS;AACvB,gBAAI,cAAc,WAAW,GAAG;AAC9B,cAAAkE,SAAQ,OAAO;AAAA,YACjB,OAAO;AACL,qBAAO,aAAa;AAAA,YACtB;AAAA,UACF,CAAC,EAAE,OAAO,EAAE,MAAM;AAAA,QACpB;AACA,YAAI,kBAAkB;AACtB,YAAI,YAAY,CAAC;AACjB,YAAI;AACJ,iBAAS,YAAY,cAAc;AACjC,iBAAO,UAAU,eAAe,YAAY;AAAA,QAC9C;AACA,iBAAS,YAAY,WAAW;AAC9B,cAAI,OAAO,cAAc,YAAY,UAAU,SAAS,GAAG;AACzD,mBAAO,UAAU,SAAS;AAAA,UAC5B;AACA,cAAI,OAAO,cAAc,YAAY;AACnC,mBAAO;AAAA,UACT;AACA,iBAAO;AAAA,QACT;AACA,iBAAS,YAAY,MAAM,IAAI,WAAW;AACxC,oBAAU,IAAI,IAAI;AAClB,cAAI,WAAW;AACb,8BAAkB;AAAA,UACpB;AAAA,QACF;AACA,iBAAS,WAAW,MAAM;AACxB,cAAI;AACJ,mBAAS,IAAI;AACb,cAAI,CAAC,QAAQ;AACX,kBAAM,IAAI,MAAM,qBAAqB;AAAA,UACvC;AACA,cAAI,KAAK,cAAc,KAAK,KAAK;AAC/B,gBAAI,cAAc,KAAK,cAAc,KAAK;AAC1C,gBAAI,CAAC,2BAA2B,KAAK,WAAW,GAAG;AACjD,oBAAM,IAAI,MAAM,8BAA8B,OAAO,WAAW,CAAC;AAAA,YACnE;AACA,gBAAI,qBAAqB,YAAY,MAAM,GAAG,GAAG,sBAAsB,eAAe,oBAAoB,CAAC,GAAGwG,WAAU,oBAAoB,CAAC,GAAG,SAAS,oBAAoB,CAAC;AAC9K,gBAAI,qBAAqBA,SAAQ,MAAM,GAAG,EAAE,IAAI,MAAM,GAAG,sBAAsB,eAAe,oBAAoB,CAAC,GAAG,QAAQ,oBAAoB,CAAC,GAAG,QAAQ,oBAAoB,CAAC,GAAGwM,SAAQ,oBAAoB,CAAC;AACnN,gBAAI,qBAAqB,IAAI,QAAQ,MAAM,GAAG,GAAG,sBAAsB,eAAe,oBAAoB,CAAC,GAAG,aAAa,oBAAoB,CAAC,GAAG,YAAY,oBAAoB,CAAC;AACpL,gBAAI,wBAAwB,WAAW,MAAM,GAAG,EAAE,IAAI,MAAM,GAAG,yBAAyB,eAAe,uBAAuB,CAAC,GAAG,WAAW,uBAAuB,CAAC,GAAG,WAAW,uBAAuB,CAAC,GAAG,WAAW,uBAAuB,CAAC;AACjP,gBAAI,UAAU,YAAY,WAAW,SAAS,aAAa,SAAS,WAAWA,UAAS,UAAU,YAAY,UAAU,YAAYA,WAAU,YAAY,UAAU,WAAW,WAAW;AACxL,oBAAM,IAAI,MAAM,sBAAsB,OAAO,aAAa,8CAA8C,EAAE,OAAO,IAAI,OAAO,CAAC;AAAA,YAC/H;AAAA,UACF;AACA,cAAI,KAAK,aAAa,OAAO,KAAK,aAAa,cAAc,YAAY,KAAK,QAAQ,IAAI;AACxF,mBAAO,WAAW,KAAK;AAAA,UACzB;AACA,cAAI,KAAK,QAAQ;AACf,gBAAI,CAAC,MAAM,QAAQ,KAAK,MAAM,GAAG;AAC/B,oBAAM,IAAI,UAAU,kCAAkC;AAAA,YACxD;AACA,iBAAK,OAAO,QAAQ,SAAS,QAAQ;AACnC,kBAAI,CAAC,OAAO,IAAI;AACd,sBAAM,IAAI,UAAU,oBAAoB,OAAO,KAAK,UAAU,MAAM,GAAG,oEAAoE,CAAC;AAAA,cAC9I;AACA,qBAAO,SAAS,MAAM;AAAA,YACxB,CAAC;AAAA,UACH;AACA,cAAI,gBAAgB,CAAC;AACrB,cAAI,KAAK,OAAO;AACd,gBAAI,CAAC,MAAM,QAAQ,KAAK,KAAK,GAAG;AAC9B,oBAAM,IAAI,UAAU,iCAAiC;AAAA,YACvD;AACA,iBAAK,MAAM,QAAQ,SAAS,OAAO;AACjC,kBAAI,CAAC,MAAM,IAAI;AACb,sBAAM,IAAI,UAAU,mBAAmB,OAAO,KAAK,UAAU,KAAK,GAAG,mEAAmE,CAAC;AAAA,cAC3I;AACA,4BAAc,KAAK,MAAM,EAAE;AAC3B,qBAAO,QAAQ,KAAK;AAAA,YACtB,CAAC;AAAA,UACH;AACA,cAAI,KAAK,mBAAmB;AAC1B,mBAAO,MAAM,QAAQ,SAAS,OAAO;AACnC,kBAAI,cAAc,SAAS,MAAM,EAAE,MAAM,OAAO;AAC9C,sBAAM,UAAU;AAAA,cAClB;AAAA,YACF,CAAC;AAAA,UACH;AACA,cAAI,OAAO,KAAK,aAAa,aAAa;AACxC,mBAAO,YAAY,KAAK,QAAQ;AAAA,UAClC,OAAO;AACL,mBAAO,mBAAmB;AAAA,UAC5B;AACA,cAAI,KAAK,YAAY;AACnB,mBAAO,aAAa,KAAK;AAAA,UAC3B;AACA,cAAI,KAAK,QAAQ;AACf,mBAAO,YAAY,KAAK,MAAM;AAAA,UAChC;AACA,cAAI,KAAK,WAAW;AAClB,+BAAmB,KAAK,SAAS;AAAA,UACnC;AACA,cAAI,KAAK,QAAQ;AACf,mBAAO,SAAS;AAAA,UAClB;AACA,cAAI,KAAK,gBAAgB;AACvB,gBAAI,CAAC,MAAM,QAAQ,KAAK,cAAc,GAAG;AACvC,oBAAM,IAAI,UAAU,2CAA2C;AAAA,YACjE;AACA,gBAAI,KAAK,eAAe,SAAS,GAAG,GAAG;AACrC,oBAAM,IAAI,MAAM,4BAA4B,OAAO,kBAAkB,YAAY,WAAW,CAAC;AAAA,YAC/F;AACA,mBAAO,kBAAkB,KAAK,cAAc;AAAA,UAC9C;AAAA,QACF;AACA,YAAI,oBAAoB;AACxB,iBAAS,gBAAgB,cAAc;AACrC,uBAAa,gBAAgB,YAAY;AAAA,QAC3C;AACA,iBAAS,SAAS,MAAM;AACtB,iBAAO,QAAQ,CAAC;AAChB,cAAI,gBAAgB,CAAC,KAAK,SAAS,IAAI,OAAO,QAAQ,IAAI,OAAO,MAAM,OAAO,SAAS,MAAM;AAC3F,mBAAO,CAAC,CAAC,KAAK,OAAO,SAAS,KAAK;AACjC,qBAAO,KAAK,KAAK,QAAQ,GAAG,MAAM;AAAA,YACpC,CAAC,EAAE;AAAA,UACL,CAAC;AACD,cAAI,WAAW,IAAI,OAAO,KAAK,SAAS,CAAC;AACzC,iBAAO,cAAc,IAAI,SAAS,cAAc;AAC9C,gBAAI,KAAK,SAAS,aAAa,EAAE,KAAK,CAAC;AACvC,mBAAO;AAAA,cACL,QAAQ,aAAa;AAAA,cACrB,aAAa,GAAG;AAAA,cAChB,MAAM,GAAG;AAAA,cACT,SAAS,GAAG;AAAA,cACZ,MAAM,aAAa;AAAA,YACrB;AAAA,UACF,CAAC;AAAA,QACH;AACA,YAAI,oBAAoB;AACxB,iBAASC,YAAW;AAClB,cAAI,cAAc,IAAI,mBAAmB,GAAG;AAC1C,YAAAnX,YAAW;AAAA,UACb;AACA,cAAI,cAAc,IAAI,iBAAiB,GAAG;AACxC,YAAAF,UAAS;AAAA,UACX;AACA,cAAI,aAAa,QAAQ,SAAS,IAAI;AACpC,mBAAO,GAAG,MAAM;AAAA,UAClB,CAAC;AACD,wBAAc,MAAM;AACpB,cAAI,QAAQ;AACZ,cAAI,gBAAgB;AACpB,cAAI,eAAe;AAAA,QACrB;AACA,YAAI,mBAAmBqX;AACvB,iBAAS,SAAS,UAAU,SAASjT,UAAS,QAAQ;AACpD,cAAI;AACF,uBAAW,IAAI,gBAAgB,QAAQ;AACvC,gBAAI,QAAQ,SAAS;AACrB,gBAAI,gBAAgB,iBAAiB,SAAS,QAAQ;AAAA,UACxD,SAAS,GAAG;AACV,6BAAiB;AACjB,mBAAO,OAAO,CAAC;AAAA,UACjB;AACA,cAAI,IAAI,cAAc;AACtB,cAAI,SAAS,IAAI;AACjB,cAAI,QAAQ,kBAAkB;AAC5B,sCAA0B,WAAW;AAAA,UACvC;AACA,cAAI,SAAS,OAAO,UAAU,QAAQ,YAAY,OAAO;AACvD,cAAE,MAAM,SAAS,KAAK,KAAK;AACzB,kDAAoC,UAAU,SAAS,SAAS,MAAM,KAAK,GAAG;AAAA,YAChF,CAAC;AAAA,UACH;AACA,YAAE,MAAM,SAAS,KAAK,KAAK;AACzB,mBAAO,IAAI,UAAU,SAAS,KAAK,GAAG;AAAA,UACxC,CAAC;AACD,YAAE,KAAK,SAAS,OAAO;AACrB,gBAAI;AACF,kBAAI,QAAQ,kBAAkB;AAC5B,0CAA0B,SAAS;AAAA,cACrC;AACA,kBAAI,UAAU,sBAAsB,MAAM,IAAI,SAAS,UAAU;AAC/D,uBAAO;AAAA,kBACL,SAAS;AAAA,gBACX;AAAA,cACF,CAAC,CAAC;AACF,kBAAI,SAAS,WAAW;AACtB,0BAAU,OAAO,MAAM,SAAS,OAAO;AACvC,wBAAQ,QAAQ,wBAAwB;AACxC,0BAAU,QAAQ,IAAI,uBAAuB;AAAA,cAC/C;AACA,kBAAI;AACF,gBAAAA,SAAQ,SAAS,gBAAgB;AAAA,cACnC,SAAS,GAAG;AACV,iCAAiB;AACjB,4BAAY,CAAC;AAAA,cACf;AAAA,YACF,SAAS,GAAG;AACV,+BAAiB;AACjB,qBAAO,CAAC;AAAA,YACV;AAAA,UACF,CAAC,EAAE,OAAO,EAAE,SAAS,GAAG;AACtB,6BAAiB;AACjB,mBAAO,CAAC;AAAA,UACV,CAAC;AAAA,QACH;AACA,YAAI,oBAAoB;AACxB,iBAAS,WAAW,OAAO,WAAW,UAAU;AAC9C,cAAIA,WAAU;AACd,cAAI,SAAS,SAAS,QAAQ,MAAM;AAClC,gBAAI,gBAAgB,UAAU,OAAO;AACnC,qBAAO,IAAI,MAAM,IAAI;AAAA,YACvB;AACA,qBAAS,IAAI;AAAA,UACf;AACA,cAAI,WAAW,SAAS,MAAM,WAAW,CAAC;AAC1C,cAAI,SAAS,eAAe,SAAS,KAAK,CAAC,SAAS,QAAQ,QAAQ;AAClE,qBAAS,UAAU,CAAElE,SAAS;AAAA,UAChC;AACA,cAAI,UAAU,SAAS,MAAM,WAAW,CAAC;AACzC,kBAAQ,MAAM,SAAS;AAAA,YACtB,KAAK;AACJ,qBAAO,kBAAkB,UAAU,SAAS,SAAS,SAAS,UAAU;AACtE,gBAAAkE,SAAQ,OAAO;AACf,yBAAS;AAAA,cACX,GAAG,MAAM;AAAA,YAEV,KAAK;AACJ,qBAAO,gBAAgBA,UAAS,MAAM;AAAA,YAEvC;AACC,kBAAI,IAAI,UAAU,IAAI,OAAO,YAAY,IAAI,OAAO,SAAS,MAAM,OAAO,GAAG;AAC3E,uBAAO,IAAI,OAAO,SAAS,MAAM,OAAO,EAAE,OAAO,QAAQ;AAAA,cAC3D;AAAA,UACF;AAAA,QACF;AACA,YAAIpE,QAAO,QAAQA,SAAQ;AACzB,uBAAa,UAAU,aAAa,UAAU;AAC9C,uBAAa,UAAU,YAAY,SAAS,OAAO,WAAW,SAAS;AACrE,oBAAQ;AAAA,cACN,KAAK;AAAA,YACP,CAAC;AAAA,UACH,CAAC;AAAA,QACH;AACA,iBAAS,KAAK,QAAQ;AACpB,cAAI,SAAS,IAAI,cAAc,MAAM;AAAA,QACvC;AACA,YAAI,eAAe;AACnB,iBAAS,OAAO,MAAM;AACpB,eAAK,OAAO,KAAK;AACjB,eAAK,WAAW,KAAK;AACrB,eAAK,YAAY,CAAC;AAClB,eAAK,SAAS,QAAQ,SAAS,SAAS;AACtC,gBAAI,OAAO,gBAAgB,OAAO;AAAA,UACpC,CAAC;AAAA,QACH;AACA,eAAO,UAAU,MAAM,SAAS,OAAO;AACrC,iBAAO,KAAK,KAAK,MAAM,MAAM,SAAS;AAAA,QACxC;AACA,eAAO,UAAU,UAAU,SAAS,UAAU;AAC5C,iBAAO,KAAK,SAAS,MAAM,MAAM,SAAS;AAAA,QAC5C;AACA,eAAO,UAAU,UAAU,SAAS,SAAS,MAAM;AACjD,cAAI,IAAI,IAAI,MAAM,MAAM;AACxB,cAAI,OAAO;AACX,iBAAO,KAAK,KAAK,SAAS,EAAE,QAAQ,SAAS,KAAK;AAChD,cAAE,MAAM,SAAS,OAAO;AACtB,mBAAK,UAAU,GAAG,EAAE,QAAQ,KAAK;AAAA,YACnC,CAAC;AAAA,UACH,CAAC;AACD,YAAE,KAAK,IAAI;AAAA,QACb;AACA,eAAO,UAAU,MAAM,SAASsX,KAAI,MAAM;AACxC,eAAK,UAAU,KAAK,EAAE,IAAI;AAAA,QAC5B;AACA,iBAAS,eAAeC,SAAQ;AAC9B,cAAI,QAAQA,QAAO,EAAE,IAAI,IAAI,OAAOA,OAAM;AAAA,QAC5C;AACA,YAAI,kBAAkB;AACtB,iBAAS,QAAQ;AACf,cAAI,SAAS,IAAI;AACjB,cAAI,CAAC,QAAQ;AACX,kBAAM,IAAI,MAAM,qBAAqB;AAAA,UACvC;AACA,iBAAO,oBAAoB;AAC3B,yBAAe;AAAA,QACjB;AACA,YAAI,gBAAgB;AACpB,iBAAS,eAAe,QAAQ,OAAO;AACrC,cAAI,UAAU,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM,SAAY,UAAU,CAAC,IAAI,CAAC;AACnF,kBAAQ,WAAW,QAAQ,YAAY,IAAI,OAAO,YAAY;AAC9D,cAAI,gBAAgB,CAAC;AACrB,cAAI,EAAE,iBAAiB,gCAAgC;AACrD,oBAAQ,IAAI,4BAA4B,KAAK;AAAA,UAC/C;AACA,cAAI,QAAQ,iBAAiB,MAAM;AACnC,cAAI,CAAC,OAAO;AACV,kBAAM,IAAI,MAAM,mBAAmB,SAAS,GAAG;AAAA,UACjD;AACA,kBAAQ,OAAO,OAAO,OAAO;AAAA,YAC3B,eAAe;AAAA,cACb,OAAO;AAAA,YACT;AAAA,UACF,CAAC;AACD,cAAI,WAAW;AAAA,YACb,WAAW;AAAA,YACX,SAAS,CAAE,KAAM;AAAA,UACnB;AACA,cAAI,aAAa,MAAM,QAAQ,UAAU,OAAO;AAChD,mCAAyB,UAAU;AACnC,kCAAwB,UAAU;AAClC,cAAI,UAAU,yBAAyB,CAAE,UAAW,CAAC;AACrD,kBAAQ,WAAW,QAAQ,SAAS,QAAQ;AAC1C,mBAAO,OAAO,MAAM,QAAQ,SAAS,YAAY;AAC/C,yBAAW,iBAAiB,wBAAwB,UAAU;AAAA,YAChE,CAAC;AAAA,UACH,CAAC;AACD,iBAAO,SAAS,CAAC,GAAG,6BAA6B,GAAG,SAAS;AAAA,YAC3D,aAAa;AAAA,UACf,CAAC;AAAA,QACH;AACA,YAAI,2BAA2B;AAC/B,iBAAS,UAAU,WAAW;AAC5B,kBAAQ,MAAM;AAAA,YACb,KAAK,OAAO,cAAc;AAAA,YAC1B,KAAK,MAAM,QAAQ,SAAS;AAAA,YAC5B,MAAKvX,QAAO,QAAQ,qBAAqBA,QAAO;AAAA,YAChD,MAAKA,QAAO,YAAY,qBAAqBA,QAAO;AACnD,qBAAO;AAAA,YAER,KAAK,QAAQ,SAAS,MAAM;AAC3B,qBAAO;AAAA,YAER,KAAK,UAAU,YAAY;AAAA,YAC3B,KAAK,UAAU,YAAY;AAAA,YAC3B,KAAK,OAAO,UAAU,WAAW;AAChC,qBAAO;AAAA,YAER;AACC,qBAAO;AAAA,UACT;AAAA,QACF;AACA,YAAIwX,SAAQ,SAASC,SAAQ;AAAA,QAAC;AAC9B,iBAAS,mBAAmB,UAAU,SAAS,UAAU;AACvD,cAAI,UAAU,IAAI,UAAU,+BAA+B;AAC3D,cAAI,CAAC,UAAU,QAAQ,GAAG;AACxB,gBAAI,aAAa,QAAQ;AACvB,oBAAM;AAAA,YACR;AACA,uBAAW;AACX,sBAAU;AACV,uBAAWvX;AAAA,UACb;AACA,cAAI,QAAQ,OAAO,MAAM,UAAU;AACjC,gBAAI,aAAa,QAAQ;AACvB,oBAAM;AAAA,YACR;AACA,uBAAW;AACX,sBAAU,CAAC;AAAA,UACb;AACA,cAAI,OAAO,aAAa,cAAc,aAAa,QAAQ;AACzD,kBAAM;AAAA,UACR;AACA,iBAAO;AAAA,YACL,SAAS;AAAA,YACT;AAAA,YACA,UAAU,YAAYsX;AAAA,UACxB;AAAA,QACF;AACA,iBAAS,KAAK,UAAU,SAAS,UAAU;AACzC,cAAI,CAAC,IAAI,QAAQ;AACf,kBAAM,IAAI,MAAM,qBAAqB;AAAA,UACvC;AACA,cAAI,YAAYxX,WAAU,UAAUA,WAAU,cAAcA;AAC5D,cAAI,SAAS,CAAC,CAACE;AACf,cAAI,CAAC,aAAa,CAAC,QAAQ;AACzB,gBAAI,CAAC,YAAY,CAAC,SAAS,eAAe;AACxC,oBAAM,IAAI,MAAM,+JAA+J;AAAA,YACjL;AACA,gBAAI,CAAC,QAAQ;AACX,4BAAc,IAAI,qBAAqB,IAAI;AAC3C,cAAAA,YAAW,SAAS;AAAA,YACtB;AACA,gBAAI,CAAC,WAAW;AACd,4BAAc,IAAI,mBAAmB,IAAI;AACzC,cAAAF,UAASE,UAAS;AAAA,YACpB;AAAA,UACF;AACA,cAAI,OAAO,mBAAmB,UAAU,SAAS,QAAQ;AACzD,qBAAW,KAAK;AAChB,oBAAU,KAAK;AACf,qBAAW,KAAK;AAChB,kBAAQ,WAAW,QAAQ,YAAY,IAAI,OAAO,YAAY;AAC9D,cAAI,QAAQ,kBAAkB;AAC5B,gBAAI,MAAM,iBAAiB,MAAM;AAAA,UACnC;AACA,cAAI;AACJ,cAAI,SAASsX;AACb,cAAIpT,WAAUoT;AACd,cAAI,OAAO,YAAY,cAAc,aAAaA,QAAO;AACvD,gBAAI,IAAI,QAAQ,SAAS,UAAU,SAAS;AAC1C,uBAAS;AACT,cAAApT,WAAU;AAAA,YACZ,CAAC;AAAA,UACH;AACA,cAAI,IAAI,UAAU;AAChB,gBAAI,OAAO;AACX,qBAAS,IAAI;AACb,mBAAO,IAAI;AACX,mBAAO;AAAA,UACT;AACA,cAAI,WAAW;AACf,cAAI,UAAU,UAAU,SAAS,SAAS,YAAY,UAAU;AAC9D,gBAAI,UAAU,SAASsT,SAAQC,UAAS;AACtC,kBAAI,WAAW;AACf,uBAAS;AACT,kBAAI;AACF,yBAAS,MAAMA,QAAO;AAAA,cACxB,SAAS,GAAG;AACV,oBAAI,IAAI,CAAC;AAAA,cACX;AACA,cAAAvT,SAAQuT,QAAO;AAAA,YACjB;AACA,gBAAI,QAAQ,kBAAkB;AAC5B,kBAAI,MAAM,iBAAiB,IAAI;AAAA,YACjC;AACA,gBAAI;AACF,kBAAI,YAAY,YAAY,QAAQ,QAAQ;AAC5C,kBAAI,UAAU,UAAU,YAAY,SAAS,OAAO;AACpD,kBAAI,YAAY,QAAQ;AACtB,wBAAQ,OAAO;AAAA,cACjB;AAAA,YACF,SAASC,OAAM;AACb,kBAAI,WAAW;AACf,uBAAS;AACT,uBAASA,KAAI;AACb,qBAAOA,KAAI;AAAA,YACb;AAAA,UACF,GAAG,SAASA,OAAM;AAChB,gBAAI,WAAW;AACf,qBAASA,KAAI;AACb,mBAAOA,KAAI;AAAA,UACb,CAAC;AACD,iBAAO;AAAA,QACT;AACA,YAAI,cAAc;AAClB,iBAAS,MAAM,MAAM;AACnB,cAAI,IAAI,OAAO;AACb,kBAAM,IAAI,MAAM,+EAA+E;AAAA,UACjG;AACA,cAAI,QAAQ,2BAA2B,IAAI;AAC3C,cAAI,gBAAgB,iBAAiB,IAAI,KAAK;AAC9C,iBAAO,IAAI,MAAM,CAAC;AAAA,QACpB;AACA,YAAI,gBAAgB;AACpB,YAAI,aAAa,SAASC,YAAW,SAAS,SAAS,UAAU;AAC/D,kBAAQ,KAAK,8EAA8E;AAC3F,cAAI,OAAO,YAAY,YAAY;AACjC,uBAAW;AACX,sBAAU,CAAC;AAAA,UACb;AACA,cAAI,MAAM,0BAA0B,SAAS,OAAO;AACpD,mBAAS,SAAS,CAAC,GAAG,6BAA6B,GAAG;AAAA,YACpD,aAAa;AAAA,YACb,YAAY,IAAI;AAAA,YAChB,QAAQ,IAAI;AAAA,YACZ,YAAY,IAAI;AAAA,YAChB,cAAc,IAAI;AAAA,UACpB,CAAC,CAAC;AAAA,QACJ;AACA,YAAI,aAAa;AACjB,YAAI,mBAAmB,SAASC,kBAAiB,SAAS,SAAS,UAAU;AAC3E,cAAI,OAAO,YAAY,YAAY;AACjC,uBAAW;AACX,sBAAU,CAAC;AAAA,UACb;AACA,kBAAQ,cAAc,CAAE,YAAa;AACrC,cAAI,MAAM,0BAA0B,SAAS,OAAO;AACpD,mBAAS,SAAS,CAAC,GAAG,6BAA6B,GAAG;AAAA,YACpD,aAAa;AAAA,YACb,YAAY,IAAI;AAAA,UAClB,CAAC,CAAC;AAAA,QACJ;AACA,YAAI,oBAAoB;AACxB,YAAI,cAAc,SAASC,aAAY,SAAS,SAAS,UAAU;AACjE,cAAI,OAAO,YAAY,YAAY;AACjC,uBAAW;AACX,sBAAU,CAAC;AAAA,UACb;AACA,cAAI,CAAC,WAAW,CAAC,MAAM,QAAQ,OAAO,GAAG;AACvC,mBAAO,SAAS,OAAO;AAAA,UACzB;AACA,cAAI,qBAAqB,QAAQ,IAAI,SAAS,QAAQ;AACpD,gBAAI,oBAAoB,SAAS,CAAC,GAAG,MAAM;AAC3C,gBAAI,QAAQ,CAAE,UAAU,cAAc,cAAc,cAAe;AACnE,qBAAS,OAAO,GAAG,SAAS,OAAO,OAAO,OAAO,QAAQ,QAAQ;AAC/D,kBAAItU,QAAO,OAAO,IAAI;AACtB,kBAAI,kBAAkBA,KAAI,KAAK,MAAM,QAAQ,kBAAkBA,KAAI,CAAC,GAAG;AACrE,kCAAkBA,KAAI,IAAI,kBAAkBA,KAAI,EAAE,IAAI,SAAS,YAAY;AACzE,yBAAO,SAAS,CAAC,GAAG,YAAY;AAAA,oBAC9B,MAAM,WAAW,KAAK,OAAO;AAAA,kBAC/B,CAAC;AAAA,gBACH,CAAC;AAAA,cACH;AAAA,YACF;AACA,mBAAO;AAAA,UACT,CAAC;AACD,mBAAS,kBAAkB;AAAA,QAC7B;AACA,YAAI,cAAc;AAClB,YAAI,iBAAiB,SAASuU,gBAAe,SAAS,SAAS,UAAU;AACvE,cAAI,OAAO,YAAY,YAAY;AACjC,uBAAW;AACX,sBAAU,CAAC;AAAA,UACb;AACA,mBAAS,YAAY,MAAM;AACzB,gBAAI,MAAM,6BAA6B;AACvC,qBAAS;AAAA,cACP,KAAK;AAAA,cACL;AAAA,YACF,CAAC;AAAA,UACH;AACA,sBAAY,SAAS,SAAS,WAAW;AAAA,QAC3C;AACA,YAAI,kBAAkB;AACtB,YAAI,aAAa,SAASC,YAAW,SAAS,SAAS,UAAU;AAC/D,cAAI,OAAO,YAAY,YAAY;AACjC,uBAAW;AACX,sBAAU,CAAC;AAAA,UACb;AACA,cAAI,MAAM,0BAA0B,SAAS,OAAO;AACpD,cAAI,sBAAsB,SAASC,qBAAoB,QAAQ;AAC7D,mBAAO,MAAM,QAAQ,SAAS,YAAY;AACxC,yBAAW,iBAAiB,wBAAwB,UAAU;AAAA,YAChE,CAAC;AAAA,UACH;AACA,cAAI,WAAW,QAAQ,mBAAmB;AAC1C,cAAI,WAAW,QAAQ,mBAAmB;AAC1C,mBAAS,SAAS,CAAC,GAAG,6BAA6B,GAAG;AAAA,YACpD,aAAa;AAAA,YACb,YAAY,IAAI;AAAA,YAChB,QAAQ,IAAI;AAAA,YACZ,YAAY,IAAI;AAAA,YAChB,cAAc,IAAI;AAAA,UACpB,CAAC,CAAC;AAAA,QACJ;AACA,YAAI,aAAa;AACjB,YAAI,aAAa,SAASC,YAAW,SAAS,SAAS,UAAU;AAC/D,cAAI,OAAO,YAAY,YAAY;AACjC,uBAAW;AACX,sBAAU,CAAC;AAAA,UACb;AACA,cAAI,MAAM,0BAA0B,SAAS,OAAO;AACpD,mBAAS,SAAS,CAAC,GAAG,6BAA6B,GAAG;AAAA,YACpD,aAAa;AAAA,YACb,YAAY,IAAI;AAAA,YAChB,QAAQ,IAAI;AAAA,YACZ,YAAY,IAAI;AAAA,YAChB,cAAc,IAAI;AAAA,UACpB,CAAC,CAAC;AAAA,QACJ;AACA,YAAI,aAAa;AACjB,YAAI,YAAY;AAChB,YAAI,MAAM;AACV,YAAI,sBAAsB;AAC1B,YAAI,oBAAoB;AACxB,YAAI,cAAc;AAClB,YAAI,SAAS;AACb,YAAI,6BAA6B,IAAI,8BAA8B,CAAC;AACpE,YAAI,2BAA2B,OAAO;AAAA,UACpC,OAAO;AAAA,UACP,aAAa;AAAA,UACb,OAAO;AAAA,UACP,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,MAAM;AAAA,UACN,qBAAqB;AAAA,QACvB;AACA,YAAI,UAAU;AACd,YAAI,UAAU;AACd,YAAI,YAAY;AAChB,YAAI,iBAAiB;AACrB,YAAI,WAAW;AACf,YAAI,QAAQ;AACZ,YAAI,UAAU,CAAC;AACf,YAAI,iBAAiB;AACrB,YAAI,cAAc;AAClB,YAAI,cAAc;AAClB,YAAI,cAAc;AAClB,YAAI,QAAQ;AACZ,YAAI,YAAY;AAChB,YAAI,iBAAiB;AACrB,YAAI,MAAM;AACV,YAAI,QAAQ;AACZ,YAAI,WAAW;AACf,YAAI,UAAU;AACd,YAAI,QAAQ3R;AACZ,YAAI,YAAY,MAAM,UAAU;AAChC,YAAI,YAAY,aAAa,iBAAiB;AAC9C,YAAI,YAAY,UAAU,eAAe;AACzC,YAAI,YAAY,OAAO,WAAW;AAClC,YAAI,YAAY,MAAM,UAAU;AAChC,YAAI,YAAY,MAAM,YAAY,IAAI;AAAA,MACxC,GAAG;AACH;AACA,UAAI,MAAM;AAAA,QACR,MAAM;AAAA,QACN,MAAM;AAAA,UACJ,OAAO;AAAA,YACL,YAAY;AAAA,cACV,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,YAAY;AAAA,cACV,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,qBAAqB;AAAA,cACnB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,qBAAqB;AAAA,cACnB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,qBAAqB;AAAA,cACnB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,oBAAoB;AAAA,cAClB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,oBAAoB;AAAA,cAClB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,qBAAqB;AAAA,cACnB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,yBAAyB;AAAA,cACvB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,mBAAmB;AAAA,cACjB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,yBAAyB;AAAA,cACvB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,sBAAsB;AAAA,cACpB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,0BAA0B;AAAA,cACxB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,wBAAwB;AAAA,cACtB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,wBAAwB;AAAA,cACtB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,cAAc;AAAA,cACZ,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,aAAa;AAAA,cACX,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,0BAA0B;AAAA,cACxB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,qBAAqB;AAAA,cACnB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,sBAAsB;AAAA,cACpB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,yBAAyB;AAAA,cACvB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,mBAAmB;AAAA,cACjB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,iBAAiB;AAAA,cACf,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,sBAAsB;AAAA,cACpB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,wBAAwB;AAAA,cACtB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,OAAO;AAAA,cACL,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,eAAe;AAAA,cACb,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,QAAQ;AAAA,cACN,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,kBAAkB;AAAA,cAChB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,wBAAwB;AAAA,cACtB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,mBAAmB;AAAA,cACjB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,QAAQ;AAAA,cACN,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,kBAAkB;AAAA,cAChB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,uBAAuB;AAAA,cACrB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,qBAAqB;AAAA,cACnB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,gBAAgB;AAAA,cACd,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,iBAAiB;AAAA,cACf,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,sBAAsB;AAAA,cACpB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,yBAAyB;AAAA,cACvB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,8BAA8B;AAAA,cAC5B,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,2BAA2B;AAAA,cACzB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,gBAAgB;AAAA,cACd,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,sBAAsB;AAAA,cACpB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,eAAe;AAAA,cACb,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,iBAAiB;AAAA,cACf,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,kBAAkB;AAAA,cAChB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,iBAAiB;AAAA,cACf,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,mBAAmB;AAAA,cACjB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,0BAA0B;AAAA,cACxB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,gCAAgC;AAAA,cAC9B,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,aAAa;AAAA,cACX,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,uBAAuB;AAAA,cACrB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,qBAAqB;AAAA,cACnB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,mBAAmB;AAAA,cACjB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,+BAA+B;AAAA,cAC7B,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,oBAAoB;AAAA,cAClB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,OAAO;AAAA,cACL,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,gCAAgC;AAAA,cAC9B,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,uCAAuC;AAAA,cACrC,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,qCAAqC;AAAA,cACnC,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,8BAA8B;AAAA,cAC5B,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,gCAAgC;AAAA,cAC9B,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,qCAAqC;AAAA,cACnC,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,8BAA8B;AAAA,cAC5B,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,qBAAqB;AAAA,cACnB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,mBAAmB;AAAA,cACjB,MAAM;AAAA,cACN,aAAa;AAAA,YACf;AAAA,YACA,sBAAsB;AAAA,cACpB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,aAAa;AAAA,cACX,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,MAAM;AAAA,cACJ,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,UAAU;AAAA,cACR,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,SAAS;AAAA,cACP,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,gBAAgB;AAAA,cACd,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,uBAAuB;AAAA,cACrB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,iBAAiB;AAAA,cACf,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,sBAAsB;AAAA,cACpB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,qBAAqB;AAAA,cACnB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,cAAc;AAAA,cACZ,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,gBAAgB;AAAA,cACd,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,wBAAwB;AAAA,cACtB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,8BAA8B;AAAA,cAC5B,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,QAAQ;AAAA,cACN,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,gBAAgB;AAAA,cACd,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,oBAAoB;AAAA,cAClB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,+BAA+B;AAAA,cAC7B,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,eAAe;AAAA,cACb,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,yBAAyB;AAAA,cACvB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,aAAa;AAAA,cACX,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,eAAe;AAAA,cACb,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,UAAU;AAAA,cACR,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,wBAAwB;AAAA,cACtB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,sBAAsB;AAAA,cACpB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,iBAAiB;AAAA,cACf,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,mBAAmB;AAAA,cACjB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,qBAAqB;AAAA,cACnB,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,cAAc;AAAA,cACZ,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,YACA,iBAAiB;AAAA,cACf,aAAa;AAAA,cACb,MAAM;AAAA,YACR;AAAA,UACF;AAAA,UACA,QAAQ;AAAA,YACN,cAAc;AAAA,cACZ,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,kBACJ,UAAU;AAAA,kBACV,QAAQ;AAAA,gBACV;AAAA,cACF;AAAA,YACF;AAAA,YACA,qBAAqB;AAAA,cACnB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,kBACJ,UAAU;AAAA,kBACV,QAAQ;AAAA,gBACV;AAAA,cACF;AAAA,YACF;AAAA,YACA,qBAAqB;AAAA,cACnB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,kBACJ,UAAU;AAAA,kBACV,QAAQ;AAAA,gBACV;AAAA,gBACA,YAAY;AAAA,kBACV,UAAU;AAAA,kBACV,QAAQ;AAAA,gBACV;AAAA,cACF;AAAA,YACF;AAAA,YACA,qBAAqB;AAAA,cACnB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,kBACJ,UAAU;AAAA,kBACV,QAAQ;AAAA,gBACV;AAAA,gBACA,YAAY;AAAA,kBACV,UAAU;AAAA,kBACV,QAAQ;AAAA,gBACV;AAAA,cACF;AAAA,YACF;AAAA,YACA,oBAAoB;AAAA,cAClB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,wBAAwB;AAAA,cACtB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,YAAY;AAAA,cACd;AAAA,YACF;AAAA,YACA,sBAAsB;AAAA,cACpB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,kBACJ,UAAU;AAAA,kBACV,QAAQ;AAAA,gBACV;AAAA,cACF;AAAA,YACF;AAAA,YACA,0BAA0B;AAAA,cACxB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,kBACJ,UAAU;AAAA,kBACV,QAAQ;AAAA,gBACV;AAAA,gBACA,YAAY;AAAA,kBACV,UAAU;AAAA,kBACV,QAAQ;AAAA,gBACV;AAAA,cACF;AAAA,YACF;AAAA,YACA,wBAAwB;AAAA,cACtB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,kBACJ,UAAU;AAAA,kBACV,QAAQ;AAAA,gBACV;AAAA,cACF;AAAA,YACF;AAAA,YACA,wBAAwB;AAAA,cACtB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,YAAY;AAAA,gBACZ,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,yBAAyB;AAAA,cACvB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,yBAAyB;AAAA,cACvB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,kBACJ,UAAU;AAAA,kBACV,QAAQ;AAAA,gBACV;AAAA,gBACA,YAAY;AAAA,kBACV,MAAM;AAAA,kBACN,aAAa;AAAA,gBACf;AAAA,cACF;AAAA,YACF;AAAA,YACA,mBAAmB;AAAA,cACjB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,kBACJ,UAAU;AAAA,kBACV,QAAQ;AAAA,gBACV;AAAA,cACF;AAAA,YACF;AAAA,YACA,cAAc;AAAA,cACZ,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,6BAA6B;AAAA,cAC3B,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,kBACJ,UAAU;AAAA,kBACV,QAAQ;AAAA,gBACV;AAAA,gBACA,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,mBAAmB;AAAA,cACjB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,aAAa;AAAA,cACX,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,kBACJ,UAAU;AAAA,kBACV,QAAQ;AAAA,gBACV;AAAA,cACF;AAAA,YACF;AAAA,YACA,wBAAwB;AAAA,cACtB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,8BAA8B;AAAA,cAC5B,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,YAAY;AAAA,cACd;AAAA,YACF;AAAA,YACA,iBAAiB;AAAA,cACf,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,8BAA8B;AAAA,cAC5B,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,kBAAkB;AAAA,cAChB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,YAAY;AAAA,kBACV,SAAS;AAAA,kBACT,SAAS;AAAA,kBACT,YAAY;AAAA,kBACZ,SAAS;AAAA,kBACT,WAAW;AAAA,kBACX,SAAS;AAAA,kBACT,sBAAsB;AAAA,kBACtB,uBAAuB;AAAA,kBACvB,iBAAiB;AAAA,kBACjB,YAAY;AAAA,kBACZ,kBAAkB;AAAA,kBAClB,QAAQ;AAAA,kBACR,eAAe;AAAA,gBACjB;AAAA,cACF;AAAA,YACF;AAAA,YACA,sBAAsB;AAAA,cACpB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,YAAY;AAAA,kBACV,SAAS;AAAA,kBACT,YAAY;AAAA,kBACZ,SAAS;AAAA,kBACT,YAAY;AAAA,kBACZ,SAAS;AAAA,kBACT,WAAW;AAAA,gBACb;AAAA,cACF;AAAA,YACF;AAAA,YACA,4BAA4B;AAAA,cAC1B,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,sBAAsB;AAAA,cACpB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,YAAY;AAAA,cACV,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,qBAAqB;AAAA,cACnB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,sBAAsB;AAAA,cACpB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,qBAAqB;AAAA,cACnB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,wBAAwB;AAAA,cACtB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,YAAY;AAAA,cACd;AAAA,YACF;AAAA,YACA,qBAAqB;AAAA,cACnB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,YAAY;AAAA,cACd;AAAA,YACF;AAAA,YACA,0BAA0B;AAAA,cACxB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,2BAA2B;AAAA,cACzB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,YAAY;AAAA,cACd;AAAA,YACF;AAAA,YACA,yBAAyB;AAAA,cACvB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,wBAAwB;AAAA,cACtB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,YAAY;AAAA,cACd;AAAA,YACF;AAAA,YACA,wBAAwB;AAAA,cACtB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,iBAAiB;AAAA,cACf,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,4BAA4B;AAAA,cAC1B,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,iCAAiC;AAAA,cAC/B,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,0BAA0B;AAAA,cACxB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,UAAU;AAAA,cACR,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,mBAAmB;AAAA,cACjB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,uBAAuB;AAAA,cACrB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,kBAAkB;AAAA,cAChB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,YAAY;AAAA,cACd;AAAA,YACF;AAAA,YACA,sBAAsB;AAAA,cACpB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,yBAAyB;AAAA,cACvB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,YAAY;AAAA,cACd;AAAA,YACF;AAAA,YACA,kBAAkB;AAAA,cAChB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,YAAY;AAAA,cACd;AAAA,YACF;AAAA,YACA,+BAA+B;AAAA,cAC7B,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,kBAAkB;AAAA,cAChB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,YAAY;AAAA,cACd;AAAA,YACF;AAAA,YACA,cAAc;AAAA,cACZ,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,sBAAsB;AAAA,cACpB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,YAAY;AAAA,cACV,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,kBACJ,SAAS;AAAA,kBACT,QAAQ;AAAA,gBACV;AAAA,cACF;AAAA,YACF;AAAA,YACA,cAAc;AAAA,cACZ,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,qBAAqB;AAAA,cACnB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,QAAQ;AAAA,cACN,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,UAAU;AAAA,cACR,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,kBACJ,SAAS;AAAA,kBACT,cAAc;AAAA,gBAChB;AAAA,cACF;AAAA,YACF;AAAA,YACA,gBAAgB;AAAA,cACd,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,kBAAkB;AAAA,cAChB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,kBACJ,SAAS;AAAA,kBACT,cAAc;AAAA,gBAChB;AAAA,cACF;AAAA,YACF;AAAA,YACA,sBAAsB;AAAA,cACpB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,SAAS;AAAA,cACP,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,YAAY;AAAA,cACd;AAAA,YACF;AAAA,YACA,gBAAgB;AAAA,cACd,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,YAAY;AAAA,cACd;AAAA,YACF;AAAA,YACA,qBAAqB;AAAA,cACnB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,YAAY;AAAA,cACd;AAAA,YACF;AAAA,YACA,wBAAwB;AAAA,cACtB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,YAAY;AAAA,cACd;AAAA,YACF;AAAA,YACA,uBAAuB;AAAA,cACrB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,iBAAiB;AAAA,cACf,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,kBAAkB;AAAA,cAChB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,iBAAiB;AAAA,cACf,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,gCAAgC;AAAA,cAC9B,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,YAAY;AAAA,cACd;AAAA,YACF;AAAA,YACA,yBAAyB;AAAA,cACvB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,UAAU;AAAA,cACR,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,gBAAgB;AAAA,cACd,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,gBAAgB;AAAA,cACd,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,QAAQ;AAAA,cACN,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,aAAa;AAAA,cACX,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,YAAY;AAAA,gBACZ,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,sBAAsB;AAAA,cACpB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,uBAAuB;AAAA,cACrB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,qBAAqB;AAAA,cACnB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,gBAAgB;AAAA,cACd,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,cAAc;AAAA,cACZ,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,mBAAmB;AAAA,cACjB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,YAAY;AAAA,cACd;AAAA,YACF;AAAA,YACA,wBAAwB;AAAA,cACtB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,kBACJ,UAAU;AAAA,kBACV,QAAQ;AAAA,gBACV;AAAA,cACF;AAAA,YACF;AAAA,YACA,2BAA2B;AAAA,cACzB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,YAAY;AAAA,cACd;AAAA,YACF;AAAA,YACA,iBAAiB;AAAA,cACf,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,QAAQ;AAAA,cACN,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,YAAY;AAAA,cACd;AAAA,YACF;AAAA,YACA,WAAW;AAAA,cACT,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,oBAAoB;AAAA,cAClB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,YAAY;AAAA,cACd;AAAA,YACF;AAAA,YACA,gBAAgB;AAAA,cACd,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,iBAAiB;AAAA,cACf,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,kBACJ,QAAQ;AAAA,kBACR,WAAW;AAAA,gBACb;AAAA,cACF;AAAA,YACF;AAAA,YACA,wBAAwB;AAAA,cACtB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,kBACJ,SAAS;AAAA,kBACT,aAAa;AAAA,gBACf;AAAA,gBACA,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,yBAAyB;AAAA,cACvB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,kBACJ,QAAQ;AAAA,kBACR,WAAW;AAAA,gBACb;AAAA,cACF;AAAA,YACF;AAAA,YACA,mBAAmB;AAAA,cACjB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,kBACJ,QAAQ;AAAA,kBACR,WAAW;AAAA,gBACb;AAAA,cACF;AAAA,YACF;AAAA,YACA,mBAAmB;AAAA,cACjB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,kBACJ,QAAQ;AAAA,kBACR,WAAW;AAAA,gBACb;AAAA,cACF;AAAA,YACF;AAAA,YACA,uBAAuB;AAAA,cACrB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,kBACJ,SAAS;AAAA,kBACT,YAAY;AAAA,kBACZ,WAAW;AAAA,kBACX,MAAM;AAAA,gBACR;AAAA,cACF;AAAA,YACF;AAAA,YACA,aAAa;AAAA,cACX,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,qBAAqB;AAAA,cACnB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,uBAAuB;AAAA,cACrB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,kBACJ,SAAS;AAAA,kBACT,YAAY;AAAA,gBACd;AAAA,gBACA,YAAY;AAAA,cACd;AAAA,YACF;AAAA,YACA,iBAAiB;AAAA,cACf,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,eAAe;AAAA,cACb,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,wBAAwB;AAAA,cACtB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,eAAe;AAAA,cACb,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,iBAAiB;AAAA,cACf,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,mBAAmB;AAAA,cACjB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,YAAY;AAAA,gBACZ,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,qBAAqB;AAAA,cACnB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,YAAY;AAAA,cACd;AAAA,YACF;AAAA,YACA,kBAAkB;AAAA,cAChB,QAAQ;AAAA,cACR,UAAU;AAAA,gBACR,MAAM;AAAA,gBACN,MAAM;AAAA,gBACN,YAAY;AAAA,cACd;AAAA,YACF;AAAA,UACF;AAAA,UACA,kBAAkB;AAAA,YAChB,KAAK;AAAA,cACH,gBAAgB,SAAS,UAAU,IAAI;AACrC,oBAAI,MAAM;AACV,oBAAI,OAAO;AACX,oBAAI,MAAM;AACR,sBAAI,OAAO,KAAK,IAAI,KAAK,KAAK,SAAS;AACvC,yBAAO,KAAK,IAAI;AACd,4BAAQ,KAAK,MAAM,CAAC;AACpB,2BAAO,SAAS,MAAM,MAAM,IAAI,EAAE,KAAK,MAAM;AAAA,kBAC/C;AAAA,gBACF;AACA,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,YACA,MAAM;AAAA,cACJ,gBAAgB,SAAS,UAAU,IAAI;AACrC,oBAAI,MAAM;AACV,oBAAI,OAAO;AACX,oBAAI,MAAM;AACR,sBAAI,OAAO,KAAK,IAAI,KAAK,KAAK,SAAS;AACvC,yBAAO,KAAK,IAAI;AACd,4BAAQ,KAAK,MAAM,CAAC;AACpB,2BAAO,SAAS,MAAM,MAAM,IAAI,EAAE,KAAK,MAAM;AAAA,kBAC/C;AAAA,gBACF;AACA,uBAAO;AAAA,cACT;AAAA,YACF;AAAA,UACF;AAAA,UACA,2BAA2B,CAAC;AAAA,QAC9B;AAAA,QACA,OAAO,CAAE;AAAA,UACP,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,eAAe;AAAA,UACf,MAAM,CAAE,gBAAgB,eAAgB;AAAA,UACxC,KAAK,CAAC;AAAA,UACN,KAAK,CAAC;AAAA,UACN,MAAM,CAAE,YAAa;AAAA,QACvB,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,eAAe;AAAA,UACf,MAAM,CAAE,yBAAyB,UAAU,WAAW,WAAW,WAAW,cAAc,mBAAmB,KAAM;AAAA,UACnH,KAAK,CAAC;AAAA,UACN,KAAK,CAAE;AAAA,YACL,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,IAAI;AAAA,UACN,GAAG,cAAc,mBAAmB;AAAA,YAClC,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,SAAS;AAAA,UACT,MAAM,CAAE,YAAY,UAAU,SAAU;AAAA,UACxC,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,mBAAoB;AAAA,UAC3B,MAAM,CAAE,yBAAyB;AAAA,YAC/B,SAAS;AAAA,cACP,0BAA0B,CAAE,SAAS,UAAU,UAAU,MAAM,SAAS,UAAU,SAAS,SAAS,SAAS,UAAU,OAAO,OAAQ;AAAA,YACxI;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,QACJ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,eAAe;AAAA,UACf,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,YAAY,eAAgB;AAAA,UACpC,KAAK,CAAC;AAAA,UACN,KAAK,CAAE;AAAA,YACL,SAAS;AAAA,cACP,eAAe;AAAA,cACf,aAAa,CAAC;AAAA,YAChB;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,YAAY,UAAU,SAAU;AAAA,UACxC,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,oBAAoB,cAAc,mBAAmB;AAAA,YAC1D,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,YAAY,eAAgB;AAAA,UACpC,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,cAAc,mBAAmB;AAAA,YACtC,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,eAAe;AAAA,UACf,SAAS;AAAA,UACT,MAAM,CAAE,YAAY,UAAU,SAAU;AAAA,UACxC,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,kBAAmB;AAAA,UAC1B,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,eAAe;AAAA,UACf,MAAM,CAAE,uBAAuB,UAAU,WAAW,SAAU;AAAA,UAC9D,KAAK,CAAE,wBAAwB,sBAAsB,wBAAyB;AAAA,UAC9E,KAAK,CAAC;AAAA,UACN,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,YAAY,UAAU,WAAW,KAAM;AAAA,UAC/C,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,cAAc,mBAAmB;AAAA,YACtC,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAE,4BAA6B;AAAA,QACvC,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,YAAY,UAAU,SAAU;AAAA,UACxC,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,cAAc,mBAAmB;AAAA,YACtC,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,YAAY,UAAU,SAAU;AAAA,UACxC,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,cAAc,mBAAmB;AAAA,YACtC,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM,CAAE,YAAY,UAAU,SAAU;AAAA,UACxC,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,oBAAqB;AAAA,UAC5B,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,YAAY,UAAU,SAAU;AAAA,UACxC,KAAK,CAAC;AAAA,UACN,KAAK,CAAE;AAAA,YACL,SAAS;AAAA,cACP,aAAa,CAAE,oBAAoB,gBAAgB,QAAQ,QAAQ,WAAW,SAAS,WAAW,QAAQ,YAAY,UAAW;AAAA,YACnI;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,YAAY,UAAU,SAAU;AAAA,UACxC,KAAK,CAAC;AAAA,UACN,KAAK,CAAE;AAAA,YACL,SAAS;AAAA,cACP,eAAe,CAAE,YAAY,UAAW;AAAA,YAC1C;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM,CAAE,YAAY,UAAU,SAAU;AAAA,UACxC,KAAK,CAAC;AAAA,UACN,KAAK,CAAE;AAAA,YACL,SAAS;AAAA,cACP,gBAAgB,CAAE,UAAU,OAAO,YAAY,SAAS,YAAY,oBAAoB,eAAgB;AAAA,YAC1G;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,YAAY,UAAU,SAAU;AAAA,UACxC,KAAK,CAAC;AAAA,UACN,KAAK,CAAC;AAAA,UACN,MAAM,CAAE,gBAAgB,eAAe,gBAAgB,iBAAkB;AAAA,QAC3E,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM,CAAE,YAAY,eAAgB;AAAA,UACpC,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,sBAAuB;AAAA,UAC9B,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,YAAY,UAAU,WAAW,KAAM;AAAA,UAC/C,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,oBAAoB,cAAc,mBAAmB;AAAA,YAC1D,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAE,4BAA6B;AAAA,QACvC,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,YAAY,UAAU,SAAU;AAAA,UACxC,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,oBAAoB,cAAc,mBAAmB;AAAA,YAC1D,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,YAAY,eAAgB;AAAA,UACpC,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,oBAAoB,cAAc,mBAAmB;AAAA,YAC1D,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,SAAS;AAAA,UACT,MAAM,CAAE,YAAY,UAAU,SAAU;AAAA,UACxC,KAAK,CAAE;AAAA,YACL,SAAS,CAAC;AAAA,YACV,IAAI;AAAA,UACN,GAAG,mBAAoB;AAAA,UACvB,KAAK,CAAC;AAAA,UACN,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,SAAS;AAAA,UACT,MAAM,CAAE,YAAY,UAAU,SAAU;AAAA,UACxC,KAAK,CAAC;AAAA,UACN,KAAK,CAAE;AAAA,YACL,SAAS,CAAC;AAAA,YACV,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,eAAe;AAAA,UACf,MAAM,CAAE,sBAAsB,UAAU,WAAW,cAAc,iBAAkB;AAAA,UACnF,KAAK,CAAC;AAAA,UACN,KAAK,CAAC;AAAA,UACN,MAAM,CAAE,SAAU;AAAA,QACpB,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,SAAS;AAAA,UACT,MAAM,CAAE,aAAa,YAAY,SAAU;AAAA,UAC3C,KAAK,CAAE,sBAAsB,0BAA2B;AAAA,UACxD,KAAK,CAAC;AAAA,UACN,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM,CAAE,iBAAiB,YAAY,UAAW;AAAA,UAChD,KAAK,CAAE;AAAA,YACL,SAAS;AAAA,cACP,eAAe,CAAE,eAAe,kBAAkB,cAAe;AAAA,YACnE;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,KAAK,CAAC;AAAA,UACN,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,eAAe;AAAA,UACf,MAAM,CAAE,sBAAsB,UAAU,WAAW,cAAc,iBAAkB;AAAA,UACnF,KAAK,CAAC;AAAA,UACN,KAAK,CAAC;AAAA,UACN,MAAM,CAAE,cAAe;AAAA,QACzB,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,uBAAuB,UAAU,WAAW,cAAc,mBAAmB,KAAM;AAAA,UAC3F,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,2BAA2B,cAAc,mBAAmB;AAAA,YACjE,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,IAAI;AAAA,UACN,GAAG,qBAAsB;AAAA,UACzB,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,WAAW;AAAA,UACX,SAAS;AAAA,UACT,cAAc;AAAA,UACd,MAAM,CAAE,gBAAgB,UAAU,WAAW,cAAc,iBAAkB;AAAA,UAC7E,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,yBAAyB;AAAA,YAC9B,SAAS;AAAA,cACP,UAAU;AAAA,YACZ;AAAA,YACA,IAAI;AAAA,UACN,GAAG;AAAA,YACD,SAAS;AAAA,cACP,UAAU;AAAA,YACZ;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,SAAS;AAAA,UACT,eAAe;AAAA,UACf,MAAM,CAAE,aAAa,WAAW,SAAU;AAAA,UAC1C,KAAK,CAAC;AAAA,UACN,KAAK,CAAE;AAAA,YACL,SAAS;AAAA,cACP,eAAe;AAAA,cACf,cAAc;AAAA,cACd,WAAW;AAAA,cACX,YAAY;AAAA,cACZ,aAAa;AAAA,cACb,eAAe;AAAA,gBACb,QAAQ;AAAA,kBACN,UAAU;AAAA,gBACZ;AAAA,gBACA,OAAO;AAAA,kBACL,UAAU;AAAA,gBACZ;AAAA,cACF;AAAA,cACA,oBAAoB;AAAA,YACtB;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM,CAAE,iBAAiB,WAAW,YAAY,cAAe;AAAA,UAC/D,KAAK,CAAE;AAAA,YACL,SAAS;AAAA,cACP,iBAAiB;AAAA,YACnB;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,KAAK,CAAC;AAAA,UACN,MAAM,CAAC;AAAA,UACP,SAAS;AAAA,QACX,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,iBAAiB,UAAU,SAAU;AAAA,UAC7C,KAAK,CAAC;AAAA,UACN,KAAK,CAAC;AAAA,UACN,MAAM,CAAE,sBAAsB,cAAe;AAAA,QAC/C,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,iBAAiB,UAAU,SAAU;AAAA,UAC7C,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,QAAS;AAAA,UAChB,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,yBAAyB,UAAU,WAAW,KAAM;AAAA,UAC5D,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,eAAgB;AAAA,UACvB,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,eAAe;AAAA,UACf,MAAM,CAAE,eAAe,UAAU,SAAU;AAAA,UAC3C,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,qBAAsB;AAAA,UAC7B,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,eAAe;AAAA,UACf,MAAM,CAAE,eAAe,UAAU,SAAU;AAAA,UAC3C,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,mBAAoB;AAAA,UAC3B,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,eAAe;AAAA,UACf,MAAM,CAAE,eAAe,UAAU,SAAU;AAAA,UAC3C,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,cAAe;AAAA,UACtB,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,uBAAuB,eAAgB;AAAA,UAC/C,QAAQ;AAAA,UACR,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,oBAAoB,cAAc,mBAAmB;AAAA,YAC1D,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM,CAAE,WAAW,UAAW;AAAA,UAC9B,cAAc;AAAA,UACd,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,kBAAmB;AAAA,UAC1B,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,gBAAgB,iBAAiB,cAAe;AAAA,UACxD,KAAK,CAAC;AAAA,UACN,KAAK,CAAE;AAAA,YACL,SAAS,CAAC;AAAA,YACV,IAAI;AAAA,UACN,GAAG;AAAA,YACD,SAAS;AAAA,cACP,OAAO,CAAE,SAAU;AAAA,YACrB;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,aAAa,UAAU,SAAU;AAAA,UACzC,KAAK,CAAC;AAAA,UACN,KAAK,CAAC;AAAA,UACN,MAAM,CAAE,gBAAiB;AAAA,QAC3B,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,gBAAgB,UAAU,SAAU;AAAA,UAC5C,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,yBAA0B;AAAA,UACjC,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM,CAAE,iBAAiB,eAAe,eAAgB;AAAA,UACxD,KAAK,CAAE;AAAA,YACL,SAAS;AAAA,cACP,aAAa;AAAA,YACf;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,KAAK,CAAC;AAAA,UACN,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,yBAAyB,eAAgB;AAAA,UACjD,KAAK,CAAC;AAAA,UACN,KAAK,CAAC;AAAA,UACN,MAAM,CAAE,oBAAqB;AAAA,QAC/B,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM,CAAE,yBAAyB,UAAU,WAAW,WAAW,cAAc,iBAAkB;AAAA,UACjG,KAAK,CAAC;AAAA,UACN,KAAK,CAAE;AAAA,YACL,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,IAAI;AAAA,UACN,GAAG,cAAc,mBAAmB,qBAAsB;AAAA,UAC1D,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,iBAAiB,eAAgB;AAAA,UACzC,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,eAAgB;AAAA,UACvB,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,eAAe;AAAA,UACf,MAAM,CAAE,iBAAiB,gBAAgB,eAAe,eAAgB;AAAA,UACxE,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,gBAAiB;AAAA,UACxB,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,gBAAgB,UAAU,WAAW,KAAM;AAAA,UACnD,KAAK,CAAC;AAAA,UACN,KAAK,CAAE;AAAA,YACL,SAAS;AAAA,cACP,YAAY,CAAE,QAAQ,UAAW;AAAA,YACnC;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM,CAAE,gBAAgB,UAAU,WAAW,KAAM;AAAA,UACnD,KAAK,CAAC;AAAA,UACN,KAAK,CAAC;AAAA,UACN,MAAM,CAAE;AAAA,YACN,SAAS;AAAA,cACP,YAAY,CAAE,QAAQ,UAAW;AAAA,YACnC;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,QACJ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,gBAAgB,UAAU,WAAW,KAAM;AAAA,UACnD,KAAK,CAAE,mBAAoB;AAAA,UAC3B,KAAK,CAAC;AAAA,UACN,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,eAAe;AAAA,UACf,SAAS;AAAA,UACT,MAAM,CAAE,iBAAiB,YAAY,WAAW,eAAgB;AAAA,UAChE,KAAK,CAAE,8BAA+B;AAAA,UACtC,KAAK,CAAC;AAAA,UACN,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,yBAAyB,UAAU,WAAW,cAAc,mBAAmB,KAAM;AAAA,UAC7F,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,WAAW,cAAc,mBAAmB;AAAA,YACjD,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,IAAI;AAAA,UACN,GAAG,qBAAsB;AAAA,UACzB,MAAM,CAAE,iBAAkB;AAAA,QAC5B,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM,CAAE,yBAAyB,eAAgB;AAAA,UACjD,KAAK,CAAC;AAAA,UACN,KAAK,CAAC;AAAA,UACN,MAAM,CAAE;AAAA,YACN,SAAS;AAAA,cACP,gBAAgB;AAAA,YAClB;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,QACJ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,uBAAuB,UAAU,WAAW,cAAc,iBAAkB;AAAA,UACpF,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,wBAAwB;AAAA,YAC7B,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,IAAI;AAAA,UACN,GAAG,cAAc,mBAAmB;AAAA,YAClC,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,IAAI;AAAA,UACN,GAAG,qBAAsB;AAAA,UACzB,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,yBAAyB,UAAU,WAAW,cAAc,mBAAmB,KAAM;AAAA,UAC7F,KAAK,CAAC;AAAA,UACN,KAAK,CAAE;AAAA,YACL,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,IAAI;AAAA,UACN,GAAG,cAAc,mBAAmB;AAAA,YAClC,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,SAAS;AAAA,UACT,MAAM,CAAE,iBAAiB,WAAW,WAAW,cAAe;AAAA,UAC9D,KAAK,CAAC;AAAA,UACN,KAAK,CAAE;AAAA,YACL,SAAS;AAAA,cACP,gBAAgB;AAAA,cAChB,oBAAoB;AAAA,YACtB;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,aAAa,eAAgB;AAAA,UACrC,KAAK,CAAC;AAAA,UACN,KAAK,CAAC;AAAA,UACN,MAAM,CAAE,YAAa;AAAA,QACvB,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,aAAa,UAAU,WAAW,WAAW,cAAc,mBAAmB,KAAM;AAAA,UAC5F,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,kBAAkB,kBAAkB,cAAc,mBAAmB;AAAA,YAC1E,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,IAAI;AAAA,UACN,GAAG;AAAA,YACD,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,IAAI;AAAA,UACN,GAAG,qBAAsB;AAAA,UACzB,MAAM,CAAE,sBAAsB,uBAAwB;AAAA,QACxD,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,iBAAiB,eAAgB;AAAA,UACzC,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,uBAAwB;AAAA,UAC/B,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM,CAAE,iBAAiB,eAAgB;AAAA,UACzC,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,uBAAwB;AAAA,UAC/B,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,iBAAiB,eAAgB;AAAA,UACzC,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,uBAAwB;AAAA,UAC/B,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM,CAAE,iBAAiB,eAAgB;AAAA,UACzC,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,uBAAwB;AAAA,UAC/B,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM,CAAE,iBAAiB,eAAgB;AAAA,UACzC,KAAK,CAAC;AAAA,UACN,KAAK,CAAE;AAAA,YACL,SAAS;AAAA,cACP,UAAU;AAAA,cACV,mBAAmB;AAAA,YACrB;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM,CAAE,iBAAiB,eAAgB;AAAA,UACzC,KAAK,CAAC;AAAA,UACN,KAAK,CAAE;AAAA,YACL,SAAS;AAAA,cACP,UAAU;AAAA,cACV,mBAAmB;AAAA,YACrB;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM,CAAE,iBAAiB,eAAgB;AAAA,UACzC,KAAK,CAAC;AAAA,UACN,KAAK,CAAE;AAAA,YACL,SAAS;AAAA,cACP,UAAU;AAAA,YACZ;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM,CAAE,iBAAiB,eAAgB;AAAA,UACzC,KAAK,CAAE;AAAA,YACL,SAAS;AAAA,cACP,UAAU;AAAA,YACZ;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,KAAK,CAAC;AAAA,UACN,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM,CAAE,iBAAiB,eAAgB;AAAA,UACzC,SAAS;AAAA,UACT,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,oBAAqB;AAAA,UAC5B,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,eAAe;AAAA,UACf,MAAM,CAAE,aAAa,gBAAgB,UAAU,SAAU;AAAA,UACzD,KAAK,CAAE,oBAAqB;AAAA,UAC5B,KAAK,CAAC;AAAA,UACN,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM,CAAE,uBAAuB,UAAU,WAAW,WAAW,cAAc,mBAAmB,KAAM;AAAA,UACtG,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,oBAAoB,cAAc,mBAAmB;AAAA,YAC1D,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAE,mBAAoB;AAAA,QAC9B,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,iBAAiB,UAAU,SAAU;AAAA,UAC7C,KAAK,CAAC;AAAA,UACN,KAAK,CAAC;AAAA,UACN,MAAM,CAAE,gBAAiB;AAAA,QAC3B,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,iBAAiB,UAAU,SAAU;AAAA,UAC7C,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,UAAW;AAAA,UAClB,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,eAAe;AAAA,UACf,MAAM,CAAE,eAAe,UAAU,SAAU;AAAA,UAC3C,KAAK,CAAC;AAAA,UACN,KAAK,CAAC;AAAA,UACN,MAAM,CAAE,cAAe;AAAA,QACzB,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,eAAe;AAAA,UACf,MAAM,CAAE,sBAAsB,UAAU,YAAY,WAAW,WAAW,SAAU;AAAA,UACpF,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,cAAe;AAAA,UACtB,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,eAAe;AAAA,UACf,MAAM,CAAE,+BAA+B,eAAgB;AAAA,UACvD,KAAK,CAAC;AAAA,UACN,KAAK,CAAE;AAAA,YACL,SAAS;AAAA,cACP,cAAc;AAAA,cACd,YAAY;AAAA,YACd;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,eAAe;AAAA,UACf,MAAM,CAAE,+BAA+B,iBAAiB,KAAM;AAAA,UAC9D,KAAK,CAAC;AAAA,UACN,KAAK,CAAE;AAAA,YACL,SAAS;AAAA,cACP,cAAc;AAAA,YAChB;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,SAAS;AAAA,UACT,MAAM,CAAE,gBAAgB,UAAU,SAAU;AAAA,UAC5C,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,sBAAuB;AAAA,UAC9B,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,eAAe;AAAA,UACf,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,sBAAsB,UAAU,WAAW,cAAe;AAAA,UAClE,SAAS;AAAA,UACT,KAAK,CAAE;AAAA,YACL,SAAS;AAAA,cACP,iBAAiB;AAAA,YACnB;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,KAAK,CAAC;AAAA,UACN,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,yBAAyB,UAAU,WAAW,cAAc,iBAAkB;AAAA,UACtF,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,cAAc,mBAAmB;AAAA,YACtC,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,IAAI;AAAA,UACN,GAAG,qBAAsB;AAAA,UACzB,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,iBAAiB,UAAU,WAAW,cAAe;AAAA,UAC7D,KAAK,CAAE;AAAA,YACL,SAAS;AAAA,cACP,SAAS,CAAE;AAAA,gBACT,QAAQ;AAAA,gBACR,QAAQ;AAAA,cACV,GAAG;AAAA,gBACD,QAAQ;AAAA,gBACR,MAAM;AAAA,cACR,GAAG;AAAA,gBACD,QAAQ;AAAA,gBACR,MAAM;AAAA,cACR,GAAG;AAAA,gBACD,MAAM;AAAA,cACR,CAAE;AAAA,YACJ;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,KAAK,CAAC;AAAA,UACN,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM,CAAE,iBAAiB,eAAgB;AAAA,UACzC,KAAK,CAAE;AAAA,YACL,SAAS;AAAA,cACP,UAAU;AAAA,YACZ;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,KAAK,CAAC;AAAA,UACN,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM,CAAE,YAAY,eAAgB;AAAA,UACpC,KAAK,CAAC;AAAA,UACN,KAAK,CAAC;AAAA,UACN,MAAM,CAAE,wBAAwB,2BAA4B;AAAA,QAC9D,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM,CAAE,gBAAgB,eAAgB;AAAA,UACxC,KAAK,CAAC;AAAA,UACN,KAAK,CAAE;AAAA,YACL,SAAS;AAAA,cACP,eAAe;AAAA,YACjB;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,yBAAyB,UAAU,WAAW,cAAc,mBAAmB,KAAM;AAAA,UAC7F,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,cAAc,mBAAmB;AAAA,YACtC,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM,CAAE,cAAc,eAAgB;AAAA,UACtC,KAAK,CAAE,eAAe;AAAA,YACpB,SAAS;AAAA,cACP,QAAQ,CAAE,OAAO,OAAO,YAAY,UAAW;AAAA,YACjD;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,KAAK,CAAC;AAAA,UACN,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,SAAS;AAAA,UACT,MAAM,CAAE,gBAAgB,UAAU,SAAU;AAAA,UAC5C,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,qBAAqB,mBAAoB;AAAA,UAChD,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM,CAAE,aAAa,UAAU,WAAW,WAAW,cAAc,mBAAmB,KAAM;AAAA,UAC5F,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,kBAAkB,kBAAkB,cAAc,mBAAmB;AAAA,YAC1E,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,IAAI;AAAA,UACN,GAAG,qBAAsB;AAAA,UACzB,MAAM,CAAE,sBAAsB,uBAAwB;AAAA,QACxD,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM,CAAE,yBAAyB,UAAU,WAAW,cAAc,iBAAkB;AAAA,UACtF,KAAK,CAAC;AAAA,UACN,KAAK,CAAC;AAAA,UACN,MAAM,CAAE,QAAS;AAAA,QACnB,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,gBAAgB,eAAgB;AAAA,UACxC,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,WAAY;AAAA,UACnB,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,yBAAyB,UAAU,WAAW,cAAc,mBAAmB,KAAM;AAAA,UAC7F,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,uBAAuB,cAAc,mBAAmB;AAAA,YAC7D,SAAS;AAAA,cACP,WAAW;AAAA,YACb;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,UACF,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM,CAAE,gBAAgB,eAAgB;AAAA,UACxC,KAAK,CAAC;AAAA,UACN,KAAK,CAAE,UAAW;AAAA,UAClB,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM,CAAE,cAAc,eAAgB;AAAA,UACtC,KAAK,CAAC;AAAA,UACN,KAAK,CAAC;AAAA,UACN,MAAM,CAAE,sBAAuB;AAAA,QACjC,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,cAAc,gBAAgB,UAAU,WAAW,cAAc,iBAAkB;AAAA,UAC3F,KAAK,CAAE,eAAgB;AAAA,UACvB,KAAK,CAAC;AAAA,UACN,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,cAAc,gBAAgB,UAAU,WAAW,cAAc,iBAAkB;AAAA,UAC3F,KAAK,CAAE,eAAgB;AAAA,UACvB,KAAK,CAAC;AAAA,UACN,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,MAAM,CAAE,cAAc,UAAU,WAAW,cAAc,iBAAkB;AAAA,UAC3E,KAAK,CAAE,iBAAkB;AAAA,UACzB,KAAK,CAAC;AAAA,UACN,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,cAAc,UAAU,WAAW,cAAc,iBAAkB;AAAA,UAC3E,KAAK,CAAE,mBAAoB;AAAA,UAC3B,KAAK,CAAC;AAAA,UACN,MAAM,CAAC;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM,CAAE,gBAAgB,WAAW,SAAU;AAAA,UAC7C,KAAK,CAAC;AAAA,UACN,KAAK,CAAC;AAAA,UACN,MAAM,CAAE;AAAA,YACN,SAAS;AAAA,cACP,YAAY,CAAE,QAAQ,UAAW;AAAA,YACnC;AAAA,YACA,IAAI;AAAA,UACN,CAAE;AAAA,QACJ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,eAAe;AAAA,UACf,MAAM,CAAE,yBAAyB,UAAU,WAAW,cAAc,iBAAkB;AAAA,UACtF,KAAK,CAAC;AAAA,UACN,KAAK,CAAC;AAAA,UACN,MAAM,CAAE,SAAU;AAAA,QACpB,CAAE;AAAA,QACF,QAAQ,CAAE;AAAA,UACR,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,YACP,eAAe;AAAA,YACf,aAAa,CAAC;AAAA,UAChB;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,YACP,0BAA0B,CAAE,SAAS,UAAU,UAAU,MAAM,SAAS,UAAU,SAAS,SAAS,SAAS,UAAU,OAAO,OAAQ;AAAA,UACxI;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,YACP,aAAa,CAAE,oBAAoB,gBAAgB,QAAQ,QAAQ,WAAW,SAAS,WAAW,QAAQ,YAAY,UAAW;AAAA,UACnI;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,YACP,eAAe,CAAE,YAAY,UAAW;AAAA,UAC1C;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,YACP,gBAAgB,CAAE,UAAU,OAAO,YAAY,SAAS,YAAY,oBAAoB,eAAgB;AAAA,UAC1G;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS,CAAC;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS,CAAC;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS,CAAC;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,YACP,OAAO,CAAE,SAAU;AAAA,UACrB;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,YACP,eAAe;AAAA,YACf,cAAc;AAAA,YACd,WAAW;AAAA,YACX,YAAY;AAAA,YACZ,aAAa;AAAA,YACb,eAAe;AAAA,cACb,QAAQ;AAAA,gBACN,UAAU;AAAA,cACZ;AAAA,cACA,OAAO;AAAA,gBACL,UAAU;AAAA,cACZ;AAAA,YACF;AAAA,YACA,oBAAoB;AAAA,UACtB;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,OAAO;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,OAAO;AAAA,UACP,SAAS;AAAA,YACP,UAAU;AAAA,UACZ;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,OAAO;AAAA,UACP,SAAS;AAAA,YACP,UAAU;AAAA,UACZ;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,OAAO;AAAA,UACP,SAAS;AAAA,YACP,UAAU;AAAA,YACV,mBAAmB;AAAA,UACrB;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,OAAO;AAAA,UACP,SAAS;AAAA,YACP,UAAU;AAAA,YACV,mBAAmB;AAAA,UACrB;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,OAAO;AAAA,UACP,SAAS;AAAA,YACP,UAAU;AAAA,UACZ;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,YACP,gBAAgB;AAAA,UAClB;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,QACX,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,YACP,gBAAgB;AAAA,YAChB,oBAAoB;AAAA,UACtB;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,OAAO;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,YACP,YAAY,CAAE,QAAQ,UAAW;AAAA,UACnC;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,YACP,YAAY,CAAE,QAAQ,UAAW;AAAA,UACnC;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,YACP,aAAa;AAAA,UACf;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,YACP,iBAAiB;AAAA,UACnB;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,YACP,iBAAiB;AAAA,UACnB;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,YACP,cAAc;AAAA,YACd,YAAY;AAAA,UACd;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,YACP,cAAc;AAAA,UAChB;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,OAAO;AAAA,UACP,SAAS;AAAA,YACP,UAAU;AAAA,UACZ;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,OAAO;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,OAAO;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,YACP,UAAU;AAAA,UACZ;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,YACP,SAAS,CAAE;AAAA,cACT,QAAQ;AAAA,cACR,QAAQ;AAAA,YACV,GAAG;AAAA,cACD,QAAQ;AAAA,cACR,MAAM;AAAA,YACR,GAAG;AAAA,cACD,QAAQ;AAAA,cACR,MAAM;AAAA,YACR,GAAG;AAAA,cACD,MAAM;AAAA,YACR,CAAE;AAAA,UACJ;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,YACP,eAAe;AAAA,UACjB;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,OAAO;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,OAAO;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,OAAO;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,OAAO;AAAA,QACT,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,YACP,eAAe,CAAE,eAAe,kBAAkB,cAAe;AAAA,UACnE;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,YACP,WAAW;AAAA,UACb;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,YACP,WAAW;AAAA,UACb;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,YACP,WAAW;AAAA,UACb;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,YACP,WAAW;AAAA,UACb;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,SAAS;AAAA,YACP,SAAS;AAAA,cACP,YAAY;AAAA,gBACV,MAAM;AAAA,cACR;AAAA,YACF;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,SAAS;AAAA,YACP,SAAS;AAAA,cACP,YAAY;AAAA,gBACV,MAAM;AAAA,cACR;AAAA,YACF;AAAA,UACF;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,UACV,SAAS;AAAA,YACP,QAAQ,CAAE,OAAO,OAAO,YAAY,UAAW;AAAA,UACjD;AAAA,QACF,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,GAAG;AAAA,UACD,IAAI;AAAA,UACJ,UAAU;AAAA,QACZ,CAAE;AAAA,MACJ,CAAC;AAAA,IACH,GAAG,OAAO,WAAW,WAAW,SAAS,OAAI;AAAA;AAAA;;;;;;qBCtquB9B,SAAS4R,GAAKC,GAAAA;AAAAA,aAC5BA,IAAUA,KAAW,CAAA,GACd,IAAIC,QAAAA,SAAUC,GAASC,GAAAA;AAAAA,YACvBC,IAAU,IAAIC,kBACdC,IAAO,CAAA,GACPC,IAAM,CAAA,GACNC,IAAU,CAAA,GAEVC,IAAAA,WAAAA;AAAAA,iBAAAA,EACLC,IAA8B,MAAzBN,EAAQO,SAAO,MAAI,IACxBC,YAAYR,EAAQQ,YACpBD,QAAQP,EAAQO,QAChBZ,KAAKK,EAAQS,aACbC,MAAAA,WAAAA;AAAAA,mBAAYb,QAAQC,QAAQE,EAAQW,YAAAA;UAAAA,GACpCC,MAAAA,WAAAA;AAAAA,mBAAYf,QAAQC,QAAQE,EAAQW,YAAAA,EAAcE,KAAKC,KAAKC,KAAAA;UAAAA,GAC5DC,MAAAA,WAAAA;AAAAA,mBAAYnB,QAAQC,QAAQ,IAAImB,KAAK,CAACjB,EAAQK,QAAAA,CAAAA,CAAAA;UAAAA,GAC9Ca,OAAOb,GACPD,SAAS,EACRF,MAAAA,WAAAA;AAAAA,mBAAYA;UAAAA,GACZiB,SAAAA,WAAAA;AAAAA,mBAAehB;UAAAA,GACfiB,KAAAA,SAAKC,IAAAA;AAAAA,mBAAKjB,EAAQiB,GAAEC,YAAAA,CAAAA;UAAAA,GACpBC,KAAAA,SAAKF,IAAAA;AAAAA,mBAAKA,GAAEC,YAAAA,KAAiBlB;UAAAA,EAAAA,EAAAA;QAAAA;AAAAA,iBAmBpBoB,KAfXxB,EAAQyB,KAAK7B,EAAQ8B,UAAU,OAAO/B,GAAAA,IAAK,GAE3CK,EAAQ2B,SAAAA,WAAAA;AACP3B,YAAQ4B,sBAAAA,EAAwBC,QAAQ,gCAAA,SAAiCC,IAAGC,IAAKC,IAAAA;AAChF9B,cAAK+B,KAAKF,KAAMA,GAAIT,YAAAA,CAAAA,GACpBnB,EAAI8B,KAAK,CAACF,IAAKC,EAAAA,CAAAA,GACf5B,EAAQ2B,EAAAA,IAAO3B,EAAQ2B,EAAAA,IAAU3B,EAAQ2B,EAAAA,IAAAA,MAAQC,KAAUA;UAAAA,CAAAA,GAE5DlC,EAAQO,EAAAA,CAAAA;QAAAA,GAGTL,EAAQkC,UAAUnC,GAElBC,EAAQmC,kBAAuC,aAArBvC,EAAQwC,aAElBxC,EAAQQ,QACvBJ,GAAQqC,iBAAiBb,GAAG5B,EAAQQ,QAAQoB,CAAAA,CAAAA;AAG7CxB,UAAQsC,KAAK1C,EAAQ2C,QAAQ,IAAA;MAAA,CAAA;IAAA;;;;;AC5C/B;AAAA;AAAA;AAAA,WAAO,UAAU,KAAK,UAAU,KAAK,QAAQ,kBAAmB,WAAW;AAAA;AAAA;A;;;;;;;;;ACA3E;AAAA;AAAA;AAYA,KAAC,SAASC,SAAQ;AACjB;AAMA,UAAIA,QAAO,QAAQ;AAClB;AAAA,MACD;AAGA,UAAIC,KAAI,SAAS,UAAU,SAAS;AACnC,eAAO,IAAIA,GAAE,GAAG,KAAK,UAAU,OAAO;AAAA,MACvC;AAOA,MAAAA,GAAE,WAAW,SAAS,KAAK;AAE1B,eAAO,OAAO,QAAQ,IAAI;AAAA,MAC3B;AAGA,MAAAA,GAAE,OAAO,SAAS,KAAK;AACtB,YAAI,CAAC,KAAK;AACT,iBAAO,MAAM;AAAA,QACd;AAEA,eAAO,OAAO,QAAQ,YAAY,OAAO,QAAQ,aAC/C,WAAWC,UAAS,KAAK,GAAG,CAAC,KAAK,WAClC,OAAO;AAAA,MACV;AAGA,MAAAD,GAAE,UAAU,MAAM,WAAW,SAAS,KAAK;AAC1C,eAAOA,GAAE,KAAK,GAAG,MAAM;AAAA,MACxB;AAGA,eAAS,YAAY,KAAK;AACzB,YAAI,SAAS,IAAI,QACfE,QAAOF,GAAE,KAAK,GAAG;AAEnB,YAAIE,UAAS,cAAcF,GAAE,SAAS,GAAG,GAAG;AAC3C,iBAAO;AAAA,QACR;AAEA,YAAI,IAAI,aAAa,KAAK,QAAQ;AACjC,iBAAO;AAAA,QACR;AAEA,eAAOE,UAAS,WAAW,WAAW,KAAK,OAAO,WAAW,YAAY,SAAS,KAAM,SAAS,KAAM;AAAA,MACxG;AAOA,MAAAF,GAAE,gBAAgB,SAAS,KAAK;AAC/B,YAAI;AAEJ,YAAI,CAAC,OAAOA,GAAE,KAAK,GAAG,MAAM,YAAY,IAAI,YAAYA,GAAE,SAAS,GAAG,GAAG;AACxE,iBAAO;AAAA,QACR;AAEA,YAAI;AACH,cAAI,IAAI,eACN,CAACG,QAAO,KAAK,KAAK,aAAa,KAC/B,CAACA,QAAO,KAAK,IAAI,YAAY,WAAW,eAAe,GAAG;AAC3D,mBAAO;AAAA,UACR;AAAA,QACD,SAAS,GAAG;AACX,iBAAO;AAAA,QACR;AAEA,aAAK,OAAO,KAAK;AAAA,QACjB;AAEA,eAAO,QAAQ,UAAaA,QAAO,KAAK,KAAK,GAAG;AAAA,MACjD;AAGA,MAAAH,GAAE,OAAO,SAAS,KAAK,UAAU,MAAM;AACtC,YAAI,OACFI,KAAI,GACJ,SAAS,IAAI,QACbC,WAAU,YAAY,GAAG;AAE3B,YAAI,MAAM;AACT,cAAIA,UAAS;AACZ,mBAAOD,KAAI,QAAQA,MAAK;AACvB,sBAAQ,SAAS,MAAM,IAAIA,EAAC,GAAG,IAAI;AAEnC,kBAAI,UAAU,OAAO;AACpB;AAAA,cACD;AAAA,YACD;AAAA,UACD,OAAO;AACN,iBAAKA,MAAK,KAAK;AACd,kBAAI,CAAC,IAAI,eAAeA,EAAC,GAAG;AAC3B;AAAA,cACD;AACA,sBAAQ,SAAS,MAAM,IAAIA,EAAC,GAAG,IAAI;AAEnC,kBAAI,UAAU,OAAO;AACpB;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QAED,OAAO;AACN,cAAIC,UAAS;AACZ,mBAAOD,KAAI,QAAQA,MAAK;AACvB,sBAAQ,SAAS,KAAK,IAAIA,EAAC,GAAGA,IAAG,IAAIA,EAAC,CAAC;AAEvC,kBAAI,UAAU,OAAO;AACpB;AAAA,cACD;AAAA,YACD;AAAA,UACD,OAAO;AACN,iBAAKA,MAAK,KAAK;AACd,kBAAI,CAAC,IAAI,eAAeA,EAAC,GAAG;AAC3B;AAAA,cACD;AACA,sBAAQ,SAAS,KAAK,IAAIA,EAAC,GAAGA,IAAG,IAAIA,EAAC,CAAC;AAEvC,kBAAI,UAAU,OAAO;AACpB;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAEA,eAAO;AAAA,MACR;AAGA,MAAAJ,GAAE,OAAO,SAAS,MAAM,KAAK,OAAO;AAEnC,YAAI,UAAU,QAAW;AACxB,cAAI,QAAQ,KAAKA,GAAE,OAAO,GACxB,QAAQ,SAASM,OAAM,KAAK;AAE9B,cAAI,QAAQ,QAAW;AACtB,mBAAO;AAAA,UACR,WAAW,OAAO;AACjB,gBAAI,OAAO,OAAO;AACjB,qBAAO,MAAM,GAAG;AAAA,YACjB;AAAA,UACD;AAAA,QAED,WAAW,QAAQ,QAAW;AAC7B,cAAI,QAAQ,KAAKN,GAAE,OAAO,MAAM,KAAKA,GAAE,OAAO,IAAI,EAAEA,GAAE;AAEtD,UAAAM,OAAM,KAAK,IAAIA,OAAM,KAAK,KAAK,CAAC;AAChC,UAAAA,OAAM,KAAK,EAAE,GAAG,IAAI;AAEpB,iBAAO;AAAA,QACR;AAAA,MACD;AAGA,MAAAN,GAAE,aAAa,SAAS,MAAMO,OAAM;AACnC,YAAIC,MAAK,KAAKR,GAAE,OAAO,GACrB,QAAQQ,OAAMF,OAAME,GAAE;AAExB,YAAI,OAAO;AAEV,cAAI,CAACD,OAAM;AACV,mBAAOD,OAAME,GAAE;AAAA,UAChB,OAAO;AACN,YAAAR,GAAE,KAAKO,OAAM,SAAS,GAAG,KAAK;AAC7B,qBAAO,MAAM,GAAG;AAAA,YACjB,CAAC;AAAA,UACF;AAAA,QACD;AAAA,MACD;AAGA,MAAAP,GAAE,SAAS,WAAW;AACrB,YAAI,KAAK,aAAa,MAAM,MAAM,SAASS,QACzCC,UAAS,UAAU,CAAC,KAAK,CAAC,GAC1BN,KAAI,GACJ,SAAS,UAAU,QACnB,OAAO;AAET,YAAI,OAAOM,YAAW,WAAW;AAChC,iBAAOA;AAEP,UAAAA,UAAS,UAAUN,EAAC,KAAK,CAAC;AAC1B,UAAAA;AAAA,QACD;AAEA,YAAI,OAAOM,YAAW,YAAYV,GAAE,KAAKU,OAAM,MAAM,YAAY;AAChE,UAAAA,UAAS,CAAC;AAAA,QACX;AAEA,YAAIN,OAAM,QAAQ;AACjB,UAAAM,UAAS;AACT,UAAAN;AAAA,QACD;AAEA,eAAOA,KAAI,QAAQA,MAAK;AACvB,cAAK,UAAU,UAAUA,EAAC,GAAI;AAC7B,iBAAK,QAAQ,SAAS;AACrB,kBAAI,CAAC,QAAQ,eAAe,IAAI,GAAG;AAClC;AAAA,cACD;AACA,oBAAMM,QAAO,IAAI;AACjB,qBAAO,QAAQ,IAAI;AAEnB,kBAAIA,YAAW,MAAM;AACpB;AAAA,cACD;AAEA,kBAAI,QAAQ,SAASV,GAAE,cAAc,IAAI,MAAM,cAAcA,GAAE,QAAQ,IAAI,KAAK;AAC/E,oBAAI,aAAa;AAChB,gCAAc;AACd,kBAAAS,SAAQ,OAAOT,GAAE,QAAQ,GAAG,IAAI,MAAM,CAAC;AAAA,gBAExC,OAAO;AACN,kBAAAS,SAAQ,OAAOT,GAAE,cAAc,GAAG,IAAI,MAAM,CAAC;AAAA,gBAC9C;AAEA,gBAAAU,QAAO,IAAI,IAAIV,GAAE,OAAO,MAAMS,QAAO,IAAI;AAAA,cAE1C,WAAW,SAAS,QAAW;AAC9B,gBAAAC,QAAO,IAAI,IAAI;AAAA,cAChB;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAEA,eAAOA;AAAA,MACR;AAGA,MAAAV,GAAE,QAAQ,SAAS,MAAME,OAAM,MAAM;AACpC,iBAAS,WAAW,KAAK,SAAS;AACjC,cAAI,MAAM,WAAW,CAAC;AAEtB,cAAI,KAAK;AACR,gBAAI,YAAY,OAAO,GAAG,CAAC,GAAG;AAE7B,eAAC,SAAS,OAAO,QAAQ;AACxB,oBAAIS,OAAM,CAAC,OAAO,QAChB,IAAI,GACJP,KAAI,MAAM;AAEZ,uBAAO,IAAIO,MAAK;AACf,wBAAMP,IAAG,IAAI,OAAO,GAAG;AAAA,gBACxB;AAEA,oBAAIO,SAAQA,MAAK;AAChB,yBAAO,OAAO,CAAC,MAAM,QAAW;AAC/B,0BAAMP,IAAG,IAAI,OAAO,GAAG;AAAA,kBACxB;AAAA,gBACD;AAEA,sBAAM,SAASA;AAEf,uBAAO;AAAA,cACR,GAAG,KAAK,OAAO,QAAQ,WAAW,CAAC,GAAG,IAAI,GAAG;AAAA,YAC9C,OAAO;AACN,eAAC,EAAE,KAAK,KAAK,KAAK,GAAG;AAAA,YACtB;AAAA,UACD;AAEA,iBAAO;AAAA,QACR;AAEA,YAAI,CAAC,MAAM;AACV;AAAA,QACD;AAEA,QAAAF,SAAQA,SAAQ,QAAQ;AAExB,YAAI,IAAIF,GAAE,KAAK,MAAME,KAAI;AAEzB,YAAI,CAAC,MAAM;AACV,iBAAO,KAAK,CAAC;AAAA,QACd;AAEA,YAAI,CAAC,KAAKF,GAAE,QAAQ,IAAI,GAAG;AAC1B,cAAIA,GAAE,KAAK,MAAME,OAAM,WAAW,IAAI,CAAC;AAAA,QACxC,OAAO;AACN,YAAE,KAAK,IAAI;AAAA,QACZ;AAEA,eAAO;AAAA,MACR;AAGA,MAAAF,GAAE,UAAU,SAAS,OAAOE,OAAM;AAEjC,QAAAF,GAAE,KAAK,MAAM,WAAW,CAAC,KAAK,IAAI,OAAO,SAASI,IAAG,MAAM;AAC1D,UAAAF,QAAOA,SAAQ;AAEf,cAAIU,SAAQZ,GAAE,MAAM,MAAME,KAAI,GAC5B,KAAKU,OAAM,MAAM;AAEnB,cAAI,OAAO,cAAc;AACxB,iBAAKA,OAAM,MAAM;AAAA,UAClB;AAEA,cAAI,IAAI;AACP,gBAAIV,UAAS,MAAM;AAClB,cAAAU,OAAM,QAAQ,YAAY;AAAA,YAC3B;AAEA,eAAG,KAAK,MAAM,WAAW;AACxB,cAAAZ,GAAE,QAAQ,MAAME,KAAI;AAAA,YACrB,CAAC;AAAA,UACF;AAAA,QACD,CAAC;AAAA,MACF;AAOA,MAAAF,GAAE,KAAKA,GAAE,YAAY;AAAA,QACpB,MAAM,SAAS,UAAU;AAExB,cAAI,SAAS,UAAU;AACtB,iBAAK,CAAC,IAAI;AAEV,mBAAO;AAAA,UACR,OAAO;AACN,kBAAM,IAAI,MAAM,iBAAiB;AAAA,UAClC;AAAA,QACD;AAAA,QACA,QAAQ,WAAW;AAElB,cAAI,MAAM,KAAK,CAAC,EAAE,wBAAwB,KAAK,CAAC,EAAE,sBAAsB,IAAI,EAAC,KAAK,GAAG,MAAM,EAAC;AAE5F,iBAAO;AAAA,YACN,KAAK,IAAI,OAAOD,QAAO,eAAe,SAAS,aAAa,MAAM,SAAS,aAAa;AAAA,YACxF,MAAM,IAAI,QAAQA,QAAO,eAAe,SAAS,cAAc,MAAM,SAAS,cAAc;AAAA,UAC7F;AAAA,QACD;AAAA,QACA,UAAU,WAAW;AAEpB,mBAAS,eAAec,OAAM;AAC7B,gBAAIC,gBAAeD,MAAK;AAExB,mBAAOC,kBAAiBA,cAAa,SAAS,YAAY,MAAM,UAAUA,cAAa,SAASA,cAAa,MAAM,SAAS,YAAY,MAAM,WAAW;AACxJ,cAAAA,gBAAeA,cAAa;AAAA,YAC7B;AAEA,mBAAOA,iBAAgB;AAAA,UACxB;AAGA,cAAI,OAAO,KAAK,CAAC,GACf,eAAe,eAAe,IAAI,GAClC,SAAS,KAAK,OAAO,GACrB,eAAe,mBAAmB,KAAK,aAAa,QAAQ,IAAI,EAAC,KAAK,GAAG,MAAM,EAAC,IAAId,GAAE,YAAY,EAAE,OAAO;AAE7G,iBAAO,OAAO,WAAW,KAAK,MAAM,SAAS,KAAK;AAClD,iBAAO,QAAQ,WAAW,KAAK,MAAM,UAAU,KAAK;AAEpD,cAAI,aAAa,OAAO;AACvB,yBAAa,OAAO,WAAW,aAAa,MAAM,cAAc,KAAK;AACrE,yBAAa,QAAQ,WAAW,aAAa,MAAM,eAAe,KAAK;AAAA,UACxE;AAEA,iBAAO;AAAA,YACN,KAAK,OAAO,MAAM,aAAa;AAAA,YAC/B,MAAM,OAAO,OAAO,aAAa;AAAA,UAClC;AAAA,QACD;AAAA,MACD;AAOA,UAAIM,SAAQ,CAAC;AACb,MAAAN,GAAE,UAAU,cAAc,oBAAI,KAAK,GAAE,QAAQ;AAC7C,MAAAA,GAAE,OAAO;AAGT,UAAI,aAAa,CAAC,GAChBG,UAAS,WAAW,gBACpBF,YAAW,WAAW;AAExB,UAAI,QAAQ,gEAAgE,MAAM,GAAG;AACrF,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACtC,mBAAW,aAAa,MAAM,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC,EAAE,YAAY;AAAA,MAChE;AAGA,MAAAD,GAAE,GAAG,KAAK,YAAYA,GAAE;AAGxB,MAAAD,QAAO,WAAW,EAAC,WAAWC,GAAC;AAAA,IAChC,GAAG,MAAM;AAMT,KAAC,SAASe,UAAS;AAClB;AAEA,UAAI,OAAO,WAAW,YAAY,OAAO,OAAO,YAAY,UAAU;AACrE,eAAO,UAAUA,SAAQ;AAAA,MAE1B,WAAW,OAAO,WAAW,cAAc,OAAO,KAAK;AACtD,eAAOA,QAAO;AAAA,MAEf,OAAO;AACN,QAAAA,SAAQ;AAAA,MACT;AAAA,IACD,GAAE,WAAW;AACZ;AACA,cAAO,SAASC,SAAQjB,SAAQkB,WAAUC,YAAW;AAsBpD,YAAI,MAAM,WAAW;AACpB,cAAID,UAAS,cAAc;AAC1B,mBAAOA,UAAS;AAAA,UACjB,OAAO;AACN,qBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC3B,kBAAIE,OAAMF,UAAS,cAAc,KAAK;AAEtC,cAAAE,KAAI,YAAY,gBAAgB,IAAI;AAEpC,kBAAIA,KAAI,qBAAqB,MAAM,EAAE,QAAQ;AAC5C,gBAAAA,OAAM;AAEN,uBAAO;AAAA,cACR;AAAA,YACD;AAAA,UACD;AAEA,iBAAOD;AAAA,QACR,GAAG;AAGH,YAAI,WAAW,WAAW;AACzB,cAAI,WAAW;AAEf,iBAAOnB,QAAO,+BAA+BA,QAAO,4BAA4B,SAAS,UAAU;AAClG,gBAAI,eAAe,oBAAI,KAAK,GAAG,QAAQ,GACrC;AAIF,wBAAY,KAAK,IAAI,GAAG,MAAM,cAAc,SAAS;AACrD,uBAAW,cAAc;AAEzB,mBAAO,WAAW,WAAW;AAC5B,uBAAS,cAAc,SAAS;AAAA,YACjC,GAAG,SAAS;AAAA,UACb;AAAA,QACD,GAAG;AAEH,YAAIqB,gBAAe,WAAW;AAC7B,cAAI,OAAOrB,QAAO,eAAe,CAAC;AAElC,cAAI,OAAO,KAAK,QAAQ,YAAY;AACnC,gBAAI,YAAY,KAAK,UAAU,KAAK,OAAO,kBAAkB,KAAK,OAAO,mBAAmB,oBAAI,KAAK,GAAG,QAAQ;AAEhH,iBAAK,MAAM,WAAW;AACrB,sBAAQ,oBAAI,KAAK,GAAG,QAAQ,IAAI;AAAA,YACjC;AAAA,UACD;AACA,iBAAO;AAAA,QACR,GAAG;AAGH,iBAAS,mBAAmBsB,QAAO;AAClC,cAAIC,SAAQ,IACV,SAASD,SAAQA,OAAM,SAAS,GAChC,SAAS,CAAC;AAEZ,iBAAO,EAAEC,SAAQ,QAAQ;AACxB,gBAAI,QAAQD,OAAMC,MAAK;AAEvB,gBAAI,OAAO;AACV,qBAAO,KAAK,KAAK;AAAA,YAClB;AAAA,UACD;AAEA,iBAAO;AAAA,QACR;AAWA,YAAI,UAAU,WAAW;AACxB,cAAI,QAAQ,MAAM,UAAU;AAE5B,cAAI;AAEH,kBAAM,KAAKL,UAAS,eAAe;AACnC,mBAAO;AAAA,UACR,SAAS,GAAG;AAMX,mBAAO,SAAS,OAAO,KAAK;AAC3B,kBAAIN,OAAM,KAAK;AAEf,kBAAI,OAAO,UAAU,UAAU;AAC9B,wBAAQ;AAAA,cACT;AAEA,kBAAI,OAAO,QAAQ,UAAU;AAC5B,sBAAMA;AAAA,cACP;AAEA,kBAAI,KAAK,OAAO;AACf,uBAAO,MAAM,KAAK,MAAM,OAAO,GAAG;AAAA,cACnC;AAEA,kBAAI,GACF,SAAS,CAAC,GAEVY,SAAS,SAAS,IAAK,QAAQ,KAAK,IAAI,GAAGZ,OAAM,KAAK,GAEtD,OAAO,MAAM,IAAIA,OAAM,MAAM,KAAK,IAAI,KAAKA,IAAG,GAE9C,OAAO,OAAOY;AAEhB,kBAAI,OAAO,GAAG;AACb,yBAAS,IAAI,MAAM,IAAI;AACvB,oBAAI,KAAK,QAAQ;AAChB,uBAAK,IAAI,GAAG,IAAI,MAAM,KAAK;AAC1B,2BAAO,CAAC,IAAI,KAAK,OAAOA,SAAQ,CAAC;AAAA,kBAClC;AAAA,gBACD,OAAO;AACN,uBAAK,IAAI,GAAG,IAAI,MAAM,KAAK;AAC1B,2BAAO,CAAC,IAAI,KAAKA,SAAQ,CAAC;AAAA,kBAC3B;AAAA,gBACD;AAAA,cACD;AACA,qBAAO;AAAA,YACR;AAAA,UACD;AAAA,QACD,GAAG;AAGH,YAAI,YAAY,WAAW;AAC1B,cAAI,MAAM,UAAU,UAAU;AAC7B,mBAAO,SAAS,KAAK,KAAK;AACzB,qBAAO,IAAI,SAAS,GAAG;AAAA,YACxB;AAAA,UACD;AACA,cAAI,MAAM,UAAU,SAAS;AAC5B,mBAAO,SAAS,KAAK,KAAK;AACzB,qBAAO,IAAI,QAAQ,GAAG,KAAK;AAAA,YAC5B;AAAA,UACD;AACA,iBAAO,SAAS,KAAK,KAAK;AACzB,qBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACpC,kBAAI,IAAI,CAAC,MAAM,KAAK;AACnB,uBAAO;AAAA,cACR;AAAA,YACD;AACA,mBAAO;AAAA,UACR;AAAA,QACD;AAEA,iBAAS,iBAAiB,UAAU;AAEnC,cAAI,KAAK,UAAU,QAAQ,GAAG;AAC7B,uBAAW,OAAO,KAAK,QAAQ;AAAA,UAEhC,WAAW,KAAK,OAAO,QAAQ,GAAG;AACjC,uBAAW,CAAC,QAAQ;AAAA,UACrB;AAEA,iBAAO;AAAA,QACR;AAEA,YAAI,OAAO;AAAA,UACV,UAAU,SAAS,UAAU;AAC5B,mBAAQ,OAAO,aAAa;AAAA,UAC7B;AAAA,UACA,UAAU,SAAS,UAAU;AAC5B,mBAAQ,OAAO,aAAa;AAAA,UAC7B;AAAA,UACA,SAAS,MAAM,WAAW,SAAS,UAAU;AAC5C,mBAAO,OAAO,UAAU,SAAS,KAAK,QAAQ,MAAM;AAAA,UACrD;AAAA,UACA,YAAY,SAAS,UAAU;AAC9B,mBAAO,OAAO,UAAU,SAAS,KAAK,QAAQ,MAAM;AAAA,UACrD;AAAA,UACA,QAAQ,SAAS,UAAU;AAC1B,mBAAO,YAAY,SAAS;AAAA,UAC7B;AAAA;AAAA;AAAA,UAGA,WAAW,SAAS,UAAU;AAC7B,mBAAO,YACF,aAAaxB,WACb,KAAK,SAAS,SAAS,MAAM,KAC7B,CAAC,KAAK,SAAS,QAAQ,KACvB,CAAC,KAAK,WAAW,QAAQ,KACzB,CAAC,KAAK,OAAO,QAAQ,MACpB,SAAS,WAAW,KAAK,KAAK,OAAO,SAAS,CAAC,CAAC;AAAA,UACvD;AAAA,UACA,OAAO,SAAS,UAAU;AACzB,mBAAOA,QAAO,cAAe,oBAAoBA,QAAO;AAAA,UACzD;AAAA,UACA,eAAe,SAAS,UAAU;AACjC,qBAAS,QAAQ,UAAU;AAC1B,kBAAI,SAAS,eAAe,IAAI,GAAG;AAClC,uBAAO;AAAA,cACR;AAAA,YACD;AAEA,mBAAO;AAAA,UACR;AAAA,QACD;AAMA,YAAIC,IACF,WAAW;AAEb,YAAIgB,QAAO,MAAMA,QAAO,GAAG,QAAQ;AAClC,UAAAhB,KAAIgB;AACJ,qBAAW;AAAA,QACZ,OAAO;AACN,UAAAhB,KAAID,QAAO,SAAS;AAAA,QACrB;AAEA,YAAI,MAAM,KAAK,CAAC,UAAU;AACzB,gBAAM,IAAI,MAAM,sEAAsE;AAAA,QACvF,WAAW,MAAM,GAAG;AAEnB,iBAAO,GAAG,WAAW,OAAO,GAAG;AAG/B;AAAA,QACD;AAMA,YAAI,mBAAmB,KACrB,iBAAiB;AAMnB,YAAI,WAAW;AAAA;AAAA,UAEd,OAAO;AAAA;AAAA,YAEN,UAAU,iEAAiE,KAAKA,QAAO,UAAU,SAAS;AAAA;AAAA,YAE1G,WAAW,WAAW,KAAKA,QAAO,UAAU,SAAS;AAAA,YACrD,eAAe,uBAAuB,KAAKA,QAAO,UAAU,SAAS;AAAA,YACrE,UAAUA,QAAO;AAAA,YACjB,WAAW,WAAW,KAAKA,QAAO,UAAU,SAAS;AAAA;AAAA,YAErD,eAAekB,UAAS,cAAc,KAAK;AAAA;AAAA,YAE3C,eAAe,CAAC;AAAA;AAAA,YAEhB,cAAc;AAAA;AAAA,YAEd,oBAAoB;AAAA,YACpB,mBAAmB;AAAA;AAAA,YAEnB,WAAW;AAAA;AAAA,YAEX,OAAO,CAAC;AAAA,YACR,iBAAiB;AAAA,cAChB,OAAO;AAAA,YACR;AAAA,UACD;AAAA;AAAA,UAEA,KAAK;AAAA;AAAA,UAAqB;AAAA;AAAA,UAE1B,WAAWjB;AAAA;AAAA,UAEX,WAAW;AAAA;AAAA,UAAuC;AAAA,UAClD,SAAS;AAAA;AAAA,UAAqB;AAAA;AAAA,UAE9B,SAASD,QAAO;AAAA;AAAA,UAEhB,UAAU;AAAA,YACT,OAAO;AAAA,YACP,UAAU;AAAA,YACV,QAAQ;AAAA,YACR,OAAOmB;AAAA,YACP,UAAUA;AAAA,YACV,UAAUA;AAAA,YACV,SAASA;AAAA,YACT,YAAYA;AAAA,YACZ,MAAM;AAAA,YACN,OAAO;AAAA,YACP,UAAU;AAAA;AAAA,YAEV,cAAc;AAAA;AAAA,YAEd,oBAAoB;AAAA,UACrB;AAAA;AAAA,UAEA,MAAM,SAAS,SAAS;AACvB,YAAAlB,GAAE,KAAK,SAAS,YAAY;AAAA;AAAA,cAE3B,OAAO,KAAK,MAAM,OAAO;AAAA;AAAA;AAAA,cAGzB,aAAa;AAAA;AAAA,cAEb,eAAe;AAAA;AAAA;AAAA,cAGf,iBAAiB;AAAA;AAAA;AAAA;AAAA,cAIjB,wBAAwB,CAAC;AAAA;AAAA,cAEzB,gBAAgB,CAAC;AAAA,YAClB,CAAC;AAAA,UACF;AAAA;AAAA,UAEA,MAAM;AAAA;AAAA;AAAA,UAEN,MAAM;AAAA,UACN,SAAS,EAAC,OAAO,GAAG,OAAO,GAAG,OAAO,EAAC;AAAA;AAAA,UAEtC,OAAO;AAAA;AAAA,UAEP,WAAW;AAAA;AAAA,UAEX,UAAU,SAAS,WAAW;AAC7B,gBAAI,eAAe,oBAAI,KAAK,GAAG,QAAQ;AAEvC,YAAAA,GAAE,KAAK,SAAS,MAAM,OAAO,SAAS,GAAG,YAAY;AAEpD,kBAAI,YAAY;AAGf,oBAAI,cAAckB,eAAe,WAAW,CAAC,EAAE,UAAU,aAAe,WAAW,CAAC,EAAE,UAAU,QAAS;AACxG,yBAAO;AAAA,gBACR;AAGA,2BAAW,CAAC,IAAI;AAAA,kBACf,QAAQ;AAAA,gBACT;AAAA,cACD;AAAA,YACD,CAAC;AAGD,YAAAlB,GAAE,KAAK,SAAS,MAAM,iBAAiB,SAAS,GAAG,SAAS;AAC3D,kBAAI,CAAC,SAAS;AACb;AAAA,cACD;AACA,kCAAoB,SAAS,WAAW;AAAA,YACzC,CAAC;AAAA,UACF;AAAA;AAAA,UAEA,WAAW,SAAS,WAAW;AAC9B,gBAAI,eAAe,oBAAI,KAAK,GAAG,QAAQ;AAEvC,YAAAA,GAAE,KAAK,SAAS,MAAM,OAAO,SAAS,GAAG,YAAY;AAEpD,kBAAI,YAAY;AAGf,oBAAI,cAAckB,eAAe,WAAW,CAAC,EAAE,UAAU,aAAe,WAAW,CAAC,EAAE,UAAU,QAAS;AACxG,yBAAO;AAAA,gBACR;AAGA,oBAAI,WAAW,CAAC,GAAG;AAClB,6BAAW,CAAC,EAAE,SAAS;AAAA,gBACxB;AAAA,cACD;AAAA,YACD,CAAC;AAED,YAAAlB,GAAE,KAAK,SAAS,MAAM,iBAAiB,SAAS,GAAG,SAAS;AAC3D,kBAAI,CAAC,SAAS;AACb;AAAA,cACD;AACA,mCAAqB,SAAS,WAAW;AAAA,YAC1C,CAAC;AAAA,UACF;AAAA,QACD;AAGA,YAAID,QAAO,gBAAgBmB,YAAW;AACrC,mBAAS,MAAM,eAAenB;AAC9B,mBAAS,MAAM,qBAAqB;AACpC,mBAAS,MAAM,oBAAoB;AAAA,QACpC,OAAO;AACN,mBAAS,MAAM,eAAekB,UAAS,mBAAmBA,UAAS,KAAK,cAAcA,UAAS;AAC/F,mBAAS,MAAM,qBAAqB;AACpC,mBAAS,MAAM,oBAAoB;AAAA,QACpC;AAGA,iBAAS,KAAK,SAAS;AAEtB,cAAI,WAAWjB,GAAE,KAAK,SAAS,UAAU;AAGzC,iBAAO,aAAa,OAAOkB,aAAY;AAAA,QACxC;AAMA,iBAAS,oBAAoB,SAAS,aAAa;AAGlD,cAAI,OAAO,KAAK,OAAO;AACvB,cAAI,QAAQ,KAAK,cAAc,CAAC,KAAK,aAAa;AACjD,iBAAK,iBAAiB,KAAK,QAAQ,cAAc,KAAK;AACtD,iBAAK,cAAc;AACnB,yBAAa,KAAK,WAAW,UAAU;AAAA,UACxC;AAAA,QACD;AAEA,iBAAS,qBAAqB,SAAS,aAAa;AAEnD,cAAI,OAAO,KAAK,OAAO;AACvB,cAAI,QAAQ,KAAK,cAAc,KAAK,aAAa;AAEhD,iBAAK,cAAc;AACnB,iBAAK,WAAW,aAAa,WAAW,KAAK,WAAW,MAAM,KAAK,cAAc;AAAA,UAClF;AAAA,QACD;AASA,iBAAS,aAAa,OAAO;AAC5B,iBAAO,SAAS,GAAG;AAClB,mBAAO,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI;AAAA,UACrC;AAAA,QACD;AAGA,iBAAS,eAAe,KAAK,KAAK,KAAK,KAAK;AAC3C,cAAI,oBAAoB,GACtB,mBAAmB,MACnB,wBAAwB,MACxB,6BAA6B,IAC7B,mBAAmB,IACnB,kBAAkB,KAAO,mBAAmB,IAC5C,wBAAwB,kBAAkBnB;AAG5C,cAAI,UAAU,WAAW,GAAG;AAC3B,mBAAO;AAAA,UACR;AAGA,mBAAS,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAC3B,gBAAI,OAAO,UAAU,CAAC,MAAM,YAAY,MAAM,UAAU,CAAC,CAAC,KAAK,CAAC,SAAS,UAAU,CAAC,CAAC,GAAG;AACvF,qBAAO;AAAA,YACR;AAAA,UACD;AAGA,gBAAM,KAAK,IAAI,KAAK,CAAC;AACrB,gBAAM,KAAK,IAAI,KAAK,CAAC;AACrB,gBAAM,KAAK,IAAI,KAAK,CAAC;AACrB,gBAAM,KAAK,IAAI,KAAK,CAAC;AAErB,cAAI,gBAAgB,wBAAwB,IAAI,aAAa,gBAAgB,IAAI,IAAI,MAAM,gBAAgB;AAE3G,mBAAS,EAAE,KAAK,KAAK;AACpB,mBAAO,IAAM,IAAM,MAAM,IAAM;AAAA,UAChC;AACA,mBAAS,EAAE,KAAK,KAAK;AACpB,mBAAO,IAAM,MAAM,IAAM;AAAA,UAC1B;AACA,mBAAS,EAAE,KAAK;AACf,mBAAO,IAAM;AAAA,UACd;AAEA,mBAAS,WAAW,IAAI,KAAK,KAAK;AACjC,qBAAS,EAAE,KAAK,GAAG,IAAI,KAAK,EAAE,KAAK,GAAG,KAAK,KAAK,EAAE,GAAG,KAAK;AAAA,UAC3D;AAEA,mBAAS,SAAS,IAAI,KAAK,KAAK;AAC/B,mBAAO,IAAM,EAAE,KAAK,GAAG,IAAI,KAAK,KAAK,IAAM,EAAE,KAAK,GAAG,IAAI,KAAK,EAAE,GAAG;AAAA,UACpE;AAEA,mBAAS,qBAAqB,IAAI,SAAS;AAC1C,qBAASK,KAAI,GAAGA,KAAI,mBAAmB,EAAEA,IAAG;AAC3C,kBAAI,eAAe,SAAS,SAAS,KAAK,GAAG;AAE7C,kBAAI,iBAAiB,GAAK;AACzB,uBAAO;AAAA,cACR;AAEA,kBAAI,WAAW,WAAW,SAAS,KAAK,GAAG,IAAI;AAC/C,yBAAW,WAAW;AAAA,YACvB;AAEA,mBAAO;AAAA,UACR;AAEA,mBAAS,mBAAmB;AAC3B,qBAASA,KAAI,GAAGA,KAAI,kBAAkB,EAAEA,IAAG;AAC1C,4BAAcA,EAAC,IAAI,WAAWA,KAAI,iBAAiB,KAAK,GAAG;AAAA,YAC5D;AAAA,UACD;AAEA,mBAAS,gBAAgB,IAAI,IAAI,IAAI;AACpC,gBAAI,UAAU,UAAUA,KAAI;AAE5B,eAAG;AACF,yBAAW,MAAM,KAAK,MAAM;AAC5B,yBAAW,WAAW,UAAU,KAAK,GAAG,IAAI;AAC5C,kBAAI,WAAW,GAAK;AACnB,qBAAK;AAAA,cACN,OAAO;AACN,qBAAK;AAAA,cACN;AAAA,YACD,SAAS,KAAK,IAAI,QAAQ,IAAI,yBAAyB,EAAEA,KAAI;AAE7D,mBAAO;AAAA,UACR;AAEA,mBAAS,SAAS,IAAI;AACrB,gBAAI,gBAAgB,GAClB,gBAAgB,GAChB,aAAa,mBAAmB;AAElC,mBAAO,kBAAkB,cAAc,cAAc,aAAa,KAAK,IAAI,EAAE,eAAe;AAC3F,+BAAiB;AAAA,YAClB;AAEA,cAAE;AAEF,gBAAI,QAAQ,KAAK,cAAc,aAAa,MAAM,cAAc,gBAAgB,CAAC,IAAI,cAAc,aAAa,IAC9G,YAAY,gBAAgB,OAAO,iBACnC,eAAe,SAAS,WAAW,KAAK,GAAG;AAE7C,gBAAI,gBAAgB,kBAAkB;AACrC,qBAAO,qBAAqB,IAAI,SAAS;AAAA,YAC1C,WAAW,iBAAiB,GAAK;AAChC,qBAAO;AAAA,YACR,OAAO;AACN,qBAAO,gBAAgB,IAAI,eAAe,gBAAgB,eAAe;AAAA,YAC1E;AAAA,UACD;AAEA,cAAI,eAAe;AAEnB,mBAAS,aAAa;AACrB,2BAAe;AACf,gBAAI,QAAQ,OAAO,QAAQ,KAAK;AAC/B,+BAAiB;AAAA,YAClB;AAAA,UACD;AAEA,cAAI,IAAI,SAAS,IAAI;AACpB,gBAAI,CAAC,cAAc;AAClB,yBAAW;AAAA,YACZ;AACA,gBAAI,QAAQ,OAAO,QAAQ,KAAK;AAC/B,qBAAO;AAAA,YACR;AACA,gBAAI,OAAO,GAAG;AACb,qBAAO;AAAA,YACR;AACA,gBAAI,OAAO,GAAG;AACb,qBAAO;AAAA,YACR;AAEA,mBAAO,WAAW,SAAS,EAAE,GAAG,KAAK,GAAG;AAAA,UACzC;AAEA,YAAE,mBAAmB,WAAW;AAC/B,mBAAO,CAAC,EAAC,GAAG,KAAK,GAAG,IAAG,GAAG,EAAC,GAAG,KAAK,GAAG,IAAG,CAAC;AAAA,UAC3C;AAEA,cAAIoB,OAAM,oBAAoB,CAAC,KAAK,KAAK,KAAK,GAAG,IAAI;AACrD,YAAE,WAAW,WAAW;AACvB,mBAAOA;AAAA,UACR;AAEA,iBAAO;AAAA,QACR;AAKA,YAAI,oBAAqB,4BAAW;AACnC,mBAAS,2BAA2B,OAAO;AAC1C,mBAAQ,CAAC,MAAM,UAAU,MAAM,IAAM,MAAM,WAAW,MAAM;AAAA,UAC7D;AAEA,mBAAS,kCAAkC,cAAc,IAAI,YAAY;AACxE,gBAAI,QAAQ;AAAA,cACX,GAAG,aAAa,IAAI,WAAW,KAAK;AAAA,cACpC,GAAG,aAAa,IAAI,WAAW,KAAK;AAAA,cACpC,SAAS,aAAa;AAAA,cACtB,UAAU,aAAa;AAAA,YACxB;AAEA,mBAAO,EAAC,IAAI,MAAM,GAAG,IAAI,2BAA2B,KAAK,EAAC;AAAA,UAC3D;AAEA,mBAAS,qBAAqB,OAAO,IAAI;AACxC,gBAAI,IAAI;AAAA,cACP,IAAI,MAAM;AAAA,cACV,IAAI,2BAA2B,KAAK;AAAA,YACrC,GACE,IAAI,kCAAkC,OAAO,KAAK,KAAK,CAAC,GACxD,IAAI,kCAAkC,OAAO,KAAK,KAAK,CAAC,GACxD,IAAI,kCAAkC,OAAO,IAAI,CAAC,GAClD,OAAO,IAAM,KAAO,EAAE,KAAK,KAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KACnD,OAAO,IAAM,KAAO,EAAE,KAAK,KAAO,EAAE,KAAK,EAAE,MAAM,EAAE;AAErD,kBAAM,IAAI,MAAM,IAAI,OAAO;AAC3B,kBAAM,IAAI,MAAM,IAAI,OAAO;AAE3B,mBAAO;AAAA,UACR;AAEA,iBAAO,SAAS,iBAAiB,SAAS,UAAU,UAAU;AAE7D,gBAAIC,aAAY;AAAA,cACf,GAAG;AAAA,cACH,GAAG;AAAA,cACH,SAAS;AAAA,cACT,UAAU;AAAA,YACX,GACE,OAAO,CAAC,CAAC,GACT,cAAc,GACd,YAAY,IAAI,KAChB,KAAK,KAAK,KACV,eAAe,IAAI;AAErB,sBAAU,WAAW,OAAO,KAAK;AACjC,uBAAW,WAAW,QAAQ,KAAK;AACnC,uBAAW,YAAY;AAEvB,YAAAA,WAAU,UAAU;AACpB,YAAAA,WAAU,WAAW;AAErB,4BAAgB,aAAa;AAG7B,gBAAI,eAAe;AAElB,4BAAc,iBAAiB,SAAS,QAAQ;AAEhD,mBAAK,cAAc,WAAW;AAAA,YAC/B,OAAO;AACN,mBAAK;AAAA,YACN;AAEA,mBAAO,MAAM;AAEZ,2BAAa,qBAAqB,cAAcA,YAAW,EAAE;AAE7D,mBAAK,KAAK,IAAI,WAAW,CAAC;AAC1B,6BAAe;AAEf,kBAAI,EAAE,KAAK,IAAI,WAAW,CAAC,IAAI,aAAa,KAAK,IAAI,WAAW,CAAC,IAAI,YAAY;AAChF;AAAA,cACD;AAAA,YACD;AAIA,mBAAO,CAAC,gBAAgB,cAAc,SAAS,iBAAiB;AAC/D,qBAAO,KAAO,mBAAmB,KAAK,SAAS,KAAM,CAAE;AAAA,YACxD;AAAA,UACD;AAAA,QACD,GAAE;AAGF,iBAAS,UAAU;AAAA,UAClB,QAAQ,SAAS,GAAG;AACnB,mBAAO;AAAA,UACR;AAAA,UACA,OAAO,SAAS,GAAG;AAClB,mBAAO,MAAM,KAAK,IAAI,IAAI,KAAK,EAAE,IAAI;AAAA,UACtC;AAAA;AAAA,UAEA,QAAQ,SAAS,GAAG;AACnB,mBAAO,IAAK,KAAK,IAAI,IAAI,MAAM,KAAK,EAAE,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;AAAA,UAC1D;AAAA,QACD;AAGA,QAAAzB,GAAE;AAAA,UACA;AAAA,YACC,CAAC,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAG,CAAC;AAAA,YAC/B,CAAC,WAAW,CAAC,MAAM,GAAK,GAAM,CAAG,CAAC;AAAA,YAClC,CAAC,YAAY,CAAC,GAAM,GAAK,MAAM,CAAG,CAAC;AAAA,YACnC,CAAC,eAAe,CAAC,MAAM,GAAK,MAAM,CAAG,CAAC;AAAA,YACtC,CAAC,cAAc,CAAC,MAAM,GAAG,OAAO,KAAK,CAAC;AAAA,YACtC,CAAC,eAAe,CAAC,MAAM,OAAO,OAAO,CAAC,CAAC;AAAA,YACvC,CAAC,iBAAiB,CAAC,OAAO,MAAM,MAAM,IAAI,CAAC;AAAA,YAC3C,CAAC,cAAc,CAAC,MAAM,OAAO,MAAM,IAAI,CAAC;AAAA,YACxC,CAAC,eAAe,CAAC,MAAM,MAAM,MAAM,IAAI,CAAC;AAAA,YACxC,CAAC,iBAAiB,CAAC,OAAO,MAAM,OAAO,KAAK,CAAC;AAAA,YAC7C,CAAC,eAAe,CAAC,MAAM,OAAO,OAAO,IAAI,CAAC;AAAA,YAC1C,CAAC,gBAAgB,CAAC,OAAO,MAAM,OAAO,CAAC,CAAC;AAAA,YACxC,CAAC,kBAAkB,CAAC,OAAO,OAAO,OAAO,CAAC,CAAC;AAAA,YAC3C,CAAC,eAAe,CAAC,OAAO,MAAM,OAAO,IAAI,CAAC;AAAA,YAC1C,CAAC,gBAAgB,CAAC,OAAO,MAAM,MAAM,CAAC,CAAC;AAAA,YACvC,CAAC,kBAAkB,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;AAAA,YACtC,CAAC,eAAe,CAAC,OAAO,MAAM,OAAO,IAAI,CAAC;AAAA,YAC1C,CAAC,gBAAgB,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AAAA,YACnC,CAAC,kBAAkB,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AAAA,YACrC,CAAC,cAAc,CAAC,MAAM,MAAM,OAAO,KAAK,CAAC;AAAA,YACzC,CAAC,eAAe,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;AAAA,YAClC,CAAC,iBAAiB,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AAAA,YAC9B,CAAC,cAAc,CAAC,KAAK,MAAM,MAAM,KAAK,CAAC;AAAA,YACvC,CAAC,eAAe,CAAC,OAAO,MAAM,OAAO,CAAC,CAAC;AAAA,YACvC,CAAC,iBAAiB,CAAC,OAAO,OAAO,MAAM,IAAI,CAAC;AAAA,UAC7C;AAAA,UAAG,SAAS,GAAG,aAAa;AAC7B,qBAAS,QAAQ,YAAY,CAAC,CAAC,IAAI,eAAe,MAAM,MAAM,YAAY,CAAC,CAAC;AAAA,UAC7E;AAAA,QAAC;AAGD,iBAAS,UAAU,OAAO,UAAU;AACnC,cAAI,SAAS;AAIb,cAAI,KAAK,SAAS,KAAK,GAAG;AAEzB,gBAAI,CAAC,SAAS,QAAQ,KAAK,GAAG;AAC7B,uBAAS;AAAA,YACV;AAAA,UACD,WAAW,KAAK,QAAQ,KAAK,KAAK,MAAM,WAAW,GAAG;AACrD,qBAAS,aAAa,MAAM,MAAM,KAAK;AAAA,UACxC,WAAW,KAAK,QAAQ,KAAK,KAAK,MAAM,WAAW,GAAG;AAIrD,qBAAS,kBAAkB,MAAM,MAAM,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;AAAA,UAChE,WAAW,KAAK,QAAQ,KAAK,KAAK,MAAM,WAAW,GAAG;AAErD,qBAAS,eAAe,MAAM,MAAM,KAAK;AAAA,UAC1C,OAAO;AACN,qBAAS;AAAA,UACV;AAIA,cAAI,WAAW,OAAO;AACrB,gBAAI,SAAS,QAAQ,SAAS,SAAS,MAAM,GAAG;AAC/C,uBAAS,SAAS,SAAS;AAAA,YAC5B,OAAO;AACN,uBAAS;AAAA,YACV;AAAA,UACD;AAEA,iBAAO;AAAA,QACR;AASA,YAAI,MAAM,SAAS,MAAM;AAAA;AAAA;AAAA;AAAA,UAKxB,OAAO;AAAA,YACN,OAAO;AAAA;AAAA,YAEP,aAAa;AAAA,YACb,8BAA8B;AAAA;AAAA,YAE9B,YAAY;AAAA,UACb;AAAA;AAAA;AAAA;AAAA,UAKA,OAAO;AAAA,YACN,QAAQ,CAAC,QAAQ,UAAU,aAAa,SAAS,mBAAmB,eAAe,kBAAkB,oBAAoB,qBAAqB,mBAAmB,cAAc;AAAA,YAC/K,gBAAgB,CAAC,cAAc,cAAc,SAAS,UAAU,UAAU,SAAS,SAAS,SAAS;AAAA,YACrG,cAAc,CAAC,wBAAwB,cAAc,UAAU,WAAW,SAAS;AAAA,YACnF,OAAO;AAAA,cACN;AAAA;AAAA,cACA;AAAA,cAAM;AAAA,cAAM;AAAA,cAAM;AAAA;AAAA,cAClB;AAAA,cAAM;AAAA,cAAM;AAAA,cAAQ;AAAA;AAAA,cACpB;AAAA,cAAM;AAAA,cAAM;AAAA,cAAK;AAAA,cAAM;AAAA,cAAM;AAAA,cAAM;AAAA;AAAA,cACnC;AAAA,cAAO;AAAA,cAAQ;AAAA,cAAO;AAAA;AAAA,cACtB;AAAA,cAAK;AAAA;AAAA,YACN;AAAA,YACA,YAAY;AAAA,cACX,aAAa;AAAA,cACb,gBAAgB;AAAA,cAChB,cAAc;AAAA,cACd,QAAQ;AAAA,cACR,SAAS;AAAA,cACT,SAAS;AAAA,cACT,UAAU;AAAA,cACV,SAAS;AAAA,cACT,kBAAkB;AAAA,cAClB,cAAc;AAAA,cACd,QAAQ;AAAA,cACR,SAAS;AAAA,cACT,aAAa;AAAA,cACb,aAAa;AAAA,cACb,cAAc;AAAA,cACd,aAAa;AAAA,cACb,SAAS;AAAA,cACT,kBAAkB;AAAA,cAClB,YAAY;AAAA,cACZ,WAAW;AAAA,cACX,QAAQ;AAAA,cACR,YAAY;AAAA,cACZ,YAAY;AAAA,cACZ,iBAAiB;AAAA,cACjB,YAAY;AAAA,cACZ,YAAY;AAAA,cACZ,aAAa;AAAA,cACb,aAAa;AAAA,cACb,eAAe;AAAA,cACf,kBAAkB;AAAA,cAClB,cAAc;AAAA,cACd,cAAc;AAAA,cACd,WAAW;AAAA,cACX,cAAc;AAAA,cACd,gBAAgB;AAAA,cAChB,iBAAiB;AAAA,cACjB,iBAAiB;AAAA,cACjB,iBAAiB;AAAA,cACjB,cAAc;AAAA,cACd,YAAY;AAAA,cACZ,eAAe;AAAA,cACf,WAAW;AAAA,cACX,WAAW;AAAA,cACX,cAAc;AAAA,cACd,aAAa;AAAA,cACb,eAAe;AAAA,cACf,eAAe;AAAA,cACf,WAAW;AAAA,cACX,aAAa;AAAA,cACb,cAAc;AAAA,cACd,QAAQ;AAAA,cACR,aAAa;AAAA,cACb,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,eAAe;AAAA,cACf,SAAS;AAAA,cACT,YAAY;AAAA,cACZ,WAAW;AAAA,cACX,aAAa;AAAA,cACb,UAAU;AAAA,cACV,SAAS;AAAA,cACT,SAAS;AAAA,cACT,iBAAiB;AAAA,cACjB,YAAY;AAAA,cACZ,aAAa;AAAA,cACb,gBAAgB;AAAA,cAChB,aAAa;AAAA,cACb,cAAc;AAAA,cACd,aAAa;AAAA,cACb,wBAAwB;AAAA,cACxB,aAAa;AAAA,cACb,aAAa;AAAA,cACb,cAAc;AAAA,cACd,aAAa;AAAA,cACb,eAAe;AAAA,cACf,iBAAiB;AAAA,cACjB,gBAAgB;AAAA,cAChB,kBAAkB;AAAA,cAClB,kBAAkB;AAAA,cAClB,eAAe;AAAA,cACf,aAAa;AAAA,cACb,QAAQ;AAAA,cACR,SAAS;AAAA,cACT,WAAW;AAAA,cACX,UAAU;AAAA,cACV,oBAAoB;AAAA,cACpB,cAAc;AAAA,cACd,gBAAgB;AAAA,cAChB,gBAAgB;AAAA,cAChB,kBAAkB;AAAA,cAClB,mBAAmB;AAAA,cACnB,qBAAqB;AAAA,cACrB,mBAAmB;AAAA,cACnB,mBAAmB;AAAA,cACnB,gBAAgB;AAAA,cAChB,aAAa;AAAA,cACb,aAAa;AAAA,cACb,YAAY;AAAA,cACZ,eAAe;AAAA,cACf,QAAQ;AAAA,cACR,WAAW;AAAA,cACX,aAAa;AAAA,cACb,SAAS;AAAA,cACT,aAAa;AAAA,cACb,UAAU;AAAA,cACV,UAAU;AAAA,cACV,iBAAiB;AAAA,cACjB,aAAa;AAAA,cACb,iBAAiB;AAAA,cACjB,iBAAiB;AAAA,cACjB,cAAc;AAAA,cACd,aAAa;AAAA,cACb,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,QAAQ;AAAA,cACR,cAAc;AAAA,cACd,UAAU;AAAA,cACV,OAAO;AAAA,cACP,aAAa;AAAA,cACb,aAAa;AAAA,cACb,eAAe;AAAA,cACf,UAAU;AAAA,cACV,cAAc;AAAA,cACd,YAAY;AAAA,cACZ,YAAY;AAAA,cACZ,UAAU;AAAA,cACV,UAAU;AAAA,cACV,WAAW;AAAA,cACX,aAAa;AAAA,cACb,aAAa;AAAA,cACb,QAAQ;AAAA,cACR,eAAe;AAAA,cACf,aAAa;AAAA,cACb,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,WAAW;AAAA,cACX,UAAU;AAAA,cACV,aAAa;AAAA,cACb,UAAU;AAAA,cACV,SAAS;AAAA,cACT,cAAc;AAAA,cACd,SAAS;AAAA,cACT,eAAe;AAAA,cACf,UAAU;AAAA,YACX;AAAA,UACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UASA,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAON,WAAW;AAAA,cACV,cAAc,CAAC,kBAAkB,mBAAmB;AAAA,cACpD,aAAa,CAAC,yBAAyB,uBAAuB;AAAA,cAC9D,QAAQ,CAAC,yBAAyB,iBAAiB;AAAA,cACnD,sBAAsB,CAAC,OAAO,OAAO;AAAA,cACrC,mBAAmB,CAAC,SAAS,aAAa;AAAA,cAC1C,qBAAqB,CAAC,OAAO,SAAS;AAAA,YACvC;AAAA;AAAA;AAAA,YAGA,YAAY;AAAA;AAAA;AAAA;AAAA,YAIZ;AAAA;AAAA,YAEA,UAAU,WAAW;AAKpB,uBAAS,IAAI,GAAG,IAAI,IAAI,MAAM,OAAO,QAAQ,KAAK;AACjD,oBAAI,gBAAiB,IAAI,MAAM,OAAO,CAAC,MAAM,UAAW,YAAY;AACpE,oBAAI,MAAM,UAAU,IAAI,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,wBAAwB,aAAa;AAAA,cAClF;AAEA,kBAAI,cACF,cACA;AAIF,kBAAI,IAAI;AACP,qBAAK,gBAAgB,IAAI,MAAM,WAAW;AACzC,sBAAI,CAAC,IAAI,MAAM,UAAU,eAAe,YAAY,GAAG;AACtD;AAAA,kBACD;AACA,iCAAe,IAAI,MAAM,UAAU,YAAY;AAC/C,8BAAY,aAAa,CAAC,EAAE,MAAM,GAAG;AAErC,sBAAI,gBAAgB,aAAa,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU;AAE9D,sBAAI,UAAU,CAAC,MAAM,SAAS;AAE7B,8BAAU,KAAK,UAAU,MAAM,CAAC;AAChC,kCAAc,KAAK,cAAc,MAAM,CAAC;AAGxC,wBAAI,MAAM,UAAU,YAAY,IAAI,CAAC,UAAU,KAAK,GAAG,GAAG,cAAc,KAAK,GAAG,CAAC;AAAA,kBAClF;AAAA,gBACD;AAAA,cACD;AAGA,mBAAK,gBAAgB,IAAI,MAAM,WAAW;AACzC,oBAAI,CAAC,IAAI,MAAM,UAAU,eAAe,YAAY,GAAG;AACtD;AAAA,gBACD;AACA,+BAAe,IAAI,MAAM,UAAU,YAAY;AAC/C,4BAAY,aAAa,CAAC,EAAE,MAAM,GAAG;AAErC,yBAAS,KAAK,WAAW;AACxB,sBAAI,CAAC,UAAU,eAAe,CAAC,GAAG;AACjC;AAAA,kBACD;AACA,sBAAI,eAAe,eAAe,UAAU,CAAC,GAC3C,eAAe;AAIjB,sBAAI,MAAM,WAAW,YAAY,IAAI,CAAC,cAAc,YAAY;AAAA,gBACjE;AAAA,cACD;AAAA,YACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAOA,SAAS,SAAS,UAAU;AAC3B,kBAAI,WAAW,IAAI,MAAM,WAAW,QAAQ;AAE5C,kBAAI,UAAU;AACb,uBAAO,SAAS,CAAC;AAAA,cAClB,OAAO;AAEN,uBAAO;AAAA,cACR;AAAA,YACD;AAAA,YACA,SAAS,SAASwB,MAAKD,QAAO;AAC7B,kBAAI,QAAQC,KAAI,OAAOD,UAAS,GAAG,CAAC,EAAE,MAAM,UAAU,KAAK,CAAC,GAAG,CAAC,KAAK;AAErE,kBAAI,QAAQ,SAAS,IAAI,MAAM,OAAO,IAAI,GAAG;AAC5C,uBAAO;AAAA,cACR;AACA,qBAAO;AAAA,YACR;AAAA,YACA,WAAW,SAASC,MAAK;AACxB,qBAAOA,KAAI,QAAQ,8BAA8B,SAAS,IAAI,IAAIE,KAAI;AACrE,oBAAI,IAAI,MAAM,WAAW,eAAeA,GAAE,GAAG;AAC5C,0BAAQ,KAAK,KAAK,WAAW,IAAI,MAAM,WAAWA,GAAE,KAAK,KAAK,KAAK;AAAA,gBACpE;AACA,uBAAO,KAAKA;AAAA,cACb,CAAC;AAAA,YACF;AAAA;AAAA;AAAA,YAGA,wBAAwB,SAAS,cAAc,mBAAmB;AAEjE,kBAAI,IAAI,MAAM,YAAY,KAAK,iBAAiB,GAAG;AAClD,oCAAoB,kBAAkB,MAAM,IAAI,MAAM,WAAW,EAAE,CAAC;AAAA,cACrE;AAMA,kBAAI,IAAI,OAAO,eAAe,iBAAiB,GAAG;AACjD,oCAAoB,IAAI,MAAM,UAAU,YAAY,EAAE,CAAC;AAAA,cACxD;AAEA,qBAAO;AAAA,YACR;AAAA;AAAA,YAEA,cAAc,SAAS,cAAc,mBAAmB;AACvD,kBAAI,WAAW,IAAI,MAAM,WAAW,YAAY;AAEhD,kBAAI,UAAU;AACb,oBAAI,WAAW,SAAS,CAAC,GACvB,eAAe,SAAS,CAAC;AAE3B,oCAAoB,IAAI,MAAM,uBAAuB,UAAU,iBAAiB;AAGhF,uBAAO,kBAAkB,SAAS,EAAE,MAAM,IAAI,MAAM,UAAU,EAAE,YAAY;AAAA,cAC7E,OAAO;AAEN,uBAAO;AAAA,cACR;AAAA,YACD;AAAA;AAAA;AAAA,YAGA,aAAa,SAAS,cAAc,WAAW,mBAAmB;AACjE,kBAAI,WAAW,IAAI,MAAM,WAAW,YAAY;AAEhD,kBAAI,UAAU;AACb,oBAAI,WAAW,SAAS,CAAC,GACvB,eAAe,SAAS,CAAC,GACzB,wBACA;AAEF,oCAAoB,IAAI,MAAM,uBAAuB,UAAU,iBAAiB;AAIhF,yCAAyB,kBAAkB,SAAS,EAAE,MAAM,IAAI,MAAM,UAAU;AAChF,uCAAuB,YAAY,IAAI;AACvC,2CAA2B,uBAAuB,KAAK,GAAG;AAE1D,uBAAO;AAAA,cACR,OAAO;AAEN,uBAAO;AAAA,cACR;AAAA,YACD;AAAA,UACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOA,gBAAgB;AAAA;AAAA;AAAA,YAGf,YAAY;AAAA,cACX,MAAM,SAASxB,OAAM,SAAS,eAAe;AAC5C,wBAAQA,OAAM;AAAA,kBACb,KAAK;AACJ,2BAAO;AAAA;AAAA,kBAER,KAAK;AACJ,wBAAI;AAGJ,wBAAI,IAAI,MAAM,6BAA6B,KAAK,aAAa,GAAG;AAC/D,kCAAY;AAAA,oBACb,OAAO;AAEN,kCAAY,cAAc,SAAS,EAAE,MAAM,IAAI,MAAM,WAAW;AAGhE,kCAAY,YAAY,UAAU,CAAC,EAAE,QAAQ,YAAY,GAAG,IAAI;AAAA,oBACjE;AAEA,2BAAO;AAAA;AAAA,kBAER,KAAK;AACJ,2BAAO,UAAU,gBAAgB;AAAA,gBACnC;AAAA,cACD;AAAA,cACA,MAAM,SAASA,OAAM,SAAS,eAAe;AAC5C,wBAAQA,OAAM;AAAA,kBACb,KAAK;AACJ,2BAAO,SAAS,MAAM,YAAY,WAAW;AAAA,kBAC9C,KAAK;AACJ,wBAAI,YAAY,WAAW,aAAa;AAGxC,wBAAI,EAAE,aAAa,cAAc,IAAI;AACpC,0BAAI,gBAAgB,cAAc,SAAS,EAAE,MAAM,yBAAyB;AAG5E,0BAAI,eAAe;AAClB,oCAAY,cAAc,CAAC;AAAA,sBAE5B,OAAO;AACN,oCAAY;AAAA,sBACb;AAAA,oBACD;AAEA,2BAAO;AAAA;AAAA,kBAER,KAAK;AAEJ,wBAAI,CAAC,WAAW,aAAa,GAAG;AAC/B,6BAAO;AAAA,oBACR,OAAO;AACN,6BAAO,UAAU,gBAAgB;AAAA,oBAClC;AAAA,gBACF;AAAA,cACD;AAAA;AAAA,cAEA,SAAS,SAASA,OAAM,SAAS,eAAe;AAC/C,oBAAI,MAAM,GAAG;AACZ,0BAAQA,OAAM;AAAA,oBACb,KAAK;AACJ,6BAAO;AAAA,oBACR,KAAK;AAGJ,0BAAI,YAAY,cAAc,SAAS,EAAE,MAAM,wBAAwB;AAEvE,0BAAI,WAAW;AAEd,wCAAgB,UAAU,CAAC,IAAI;AAAA,sBAChC,OAAO;AAEN,wCAAgB;AAAA,sBACjB;AAEA,6BAAO;AAAA,oBACR,KAAK;AAEJ,8BAAQ,MAAM,OAAO;AAKrB,0BAAI,WAAW,aAAa,KAAK,GAAG;AACnC,+BAAO;AAAA,sBACR,OAAO;AAEN,+BAAO,mBAAmB,SAAS,WAAW,aAAa,IAAI,KAAK,EAAE,IAAI;AAAA,sBAC3E;AAAA,kBACF;AAAA,gBAED,OAAO;AACN,0BAAQA,OAAM;AAAA,oBACb,KAAK;AACJ,6BAAO;AAAA,oBACR,KAAK;AACJ,6BAAO;AAAA,oBACR,KAAK;AACJ,6BAAO;AAAA,kBACT;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAAA;AAAA;AAAA;AAAA;AAAA,YAMA,UAAU,WAAW;AAgBpB,mBAAK,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,MAAM,eAAe;AAGrD,oBAAI,MAAM,iBAAiB,IAAI,MAAM,eAAe,OAAO,IAAI,MAAM,YAAY;AAAA,cAClF;AAEA,uBAAS,IAAI,GAAG,IAAI,IAAI,MAAM,eAAe,QAAQ,KAAK;AAGzD,iBAAC,WAAW;AACX,sBAAI,gBAAgB,IAAI,MAAM,eAAe,CAAC;AAE9C,sBAAI,eAAe,WAAW,aAAa,IAAI,SAASA,OAAM,SAAS,eAAe;AACrF,4BAAQA,OAAM;AAAA;AAAA,sBAEb,KAAK;AACJ,+BAAO;AAAA;AAAA,sBAER,KAAK;AAEJ,4BAAI,KAAK,OAAO,MAAMgB,cAAa,KAAK,OAAO,EAAE,eAAe,aAAa,MAAMA,YAAW;AAE7F,iCAAO,UAAU,KAAK,aAAa,IAAI,IAAI;AAAA,wBAG5C;AACA,+BAAO,KAAK,OAAO,EAAE,eAAe,aAAa,EAAE,QAAQ,SAAS,EAAE;AAAA,sBACvE,KAAK;AACJ,4BAAI,UAAU;AAKd,gCAAQ,cAAc,OAAO,GAAG,cAAc,SAAS,CAAC,GAAG;AAAA;AAAA,0BAE1D,KAAK;AACJ,sCAAU,CAAC,2BAA2B,KAAK,aAAa;AACxD;AAAA;AAAA,0BAED,KAAK;AAAA,0BACL,KAAK;AAIJ,gCAAI,SAAS,MAAM,aAAa,KAAK,OAAO,EAAE,eAAe,aAAa,MAAMA,cAAa,gBAAgB,GAAG;AAC/G,8CAAgB;AAAA,4BACjB;AAEA,sCAAU,CAAC,SAAS,KAAK,aAAa;AACtC;AAAA,0BACD,KAAK;AACJ,sCAAU,CAAC,aAAa,KAAK,aAAa;AAC1C;AAAA,0BACD,KAAK;AACJ,sCAAU,CAAC,aAAa,KAAK,aAAa;AAC1C;AAAA,wBACF;AAEA,4BAAI,CAAC,SAAS;AAEb,+BAAK,OAAO,EAAE,eAAe,aAAa,IAAI,MAAM,gBAAgB;AAAA,wBACrE;AAGA,+BAAO,KAAK,OAAO,EAAE,eAAe,aAAa;AAAA,oBACnD;AAAA,kBACD;AAAA,gBACD,GAAG;AAAA,cACJ;AAQA,uBAAS,IAAI,GAAG,IAAI,IAAI,MAAM,OAAO,QAAQ,KAAK;AAGjD,iBAAC,WAAW;AACX,sBAAI,YAAY,IAAI,MAAM,OAAO,CAAC;AAGlC,sBAAI,eAAe,WAAW,SAAS,IAAI,SAAShB,OAAM,SAAS,eAAe;AACjF,4BAAQA,OAAM;AAAA,sBACb,KAAK;AACJ,+BAAO;AAAA;AAAA,sBAER,KAAK;AACJ,4BAAI;AAGJ,4BAAI,IAAI,MAAM,6BAA6B,KAAK,aAAa,GAAG;AAC/D,sCAAY;AAAA,wBACb,OAAO;AACN,8BAAI,WACF,aAAa;AAAA,4BACZ,OAAO;AAAA,4BACP,MAAM;AAAA,4BACN,MAAM;AAAA,4BACN,OAAO;AAAA,4BACP,KAAK;AAAA,4BACL,OAAO;AAAA,0BACR;AAGF,8BAAI,YAAY,KAAK,aAAa,GAAG;AACpC,gCAAI,WAAW,aAAa,MAAMgB,YAAW;AAC5C,0CAAY,WAAW,aAAa;AAAA,4BACrC,OAAO;AAEN,0CAAY,WAAW;AAAA,4BACxB;AAAA,0BAED,WAAW,IAAI,MAAM,MAAM,KAAK,aAAa,GAAG;AAC/C,wCAAY,SAAS,IAAI,OAAO,SAAS,aAAa,EAAE,KAAK,GAAG,IAAI;AAAA,0BAErE,WAAW,CAAE,YAAY,KAAK,aAAa,GAAI;AAC9C,wCAAY,WAAW;AAAA,0BACxB;AAIA,uCAAa,aAAa,eAAe,SAAS,EAAE,MAAM,IAAI,MAAM,WAAW,EAAE,CAAC,EAAE,QAAQ,YAAY,GAAG;AAAA,wBAC5G;AAGA,6BAAK,CAAC,MAAM,KAAK,MAAM,UAAU,MAAM,GAAG,EAAE,WAAW,GAAG;AACzD,uCAAa;AAAA,wBACd;AAEA,+BAAO;AAAA,sBACR,KAAK;AAEJ,4BAAI,OAAO,KAAK,aAAa,GAAG;AAC/B,iCAAO;AAAA,wBACR;AAGA,4BAAI,MAAM,GAAG;AACZ,8BAAI,cAAc,MAAM,GAAG,EAAE,WAAW,GAAG;AAC1C,4CAAgB,cAAc,MAAM,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG;AAAA,0BAChE;AAAA,wBAED,WAAW,cAAc,MAAM,GAAG,EAAE,WAAW,GAAG;AACjD,2CAAiB;AAAA,wBAClB;AAIA,gCAAQ,MAAM,IAAI,QAAQ,UAAU,MAAM,cAAc,QAAQ,QAAQ,GAAG,EAAE,QAAQ,iBAAiB,EAAE,IAAI;AAAA,oBAC9G;AAAA,kBACD;AAAA,gBACD,GAAG;AAAA,cACJ;AAKA,uBAAS,iBAAiB,MAAM,SAAS,WAAW;AACnD,oBAAI,cAAc,IAAI,iBAAiB,SAAS,WAAW,EAAE,SAAS,EAAE,YAAY,MAAM;AAE1F,oBAAI,iBAAiB,aAAa,QAAQ;AAEzC,sBAAId,IACF,OACA,UAAU,GACV,QAAQ,SAAS,UAAU,CAAC,QAAQ,OAAO,IAAI,CAAC,OAAO,QAAQ,GAC/DuB,UAAS,CAAC,YAAY,MAAM,CAAC,GAAG,YAAY,MAAM,CAAC,GAAG,WAAW,MAAM,CAAC,IAAI,SAAS,WAAW,MAAM,CAAC,IAAI,OAAO;AAEpH,uBAAKvB,KAAI,GAAGA,KAAIuB,QAAO,QAAQvB,MAAK;AACnC,4BAAQ,WAAW,IAAI,iBAAiB,SAASuB,QAAOvB,EAAC,CAAC,CAAC;AAC3D,wBAAI,CAAC,MAAM,KAAK,GAAG;AAClB,iCAAW;AAAA,oBACZ;AAAA,kBACD;AACA,yBAAO,YAAY,CAAC,UAAU;AAAA,gBAC/B;AACA,uBAAO;AAAA,cACR;AACA,uBAAS,aAAa,MAAM,WAAW;AACtC,uBAAO,SAASF,OAAM,SAAS,eAAe;AAC7C,0BAAQA,OAAM;AAAA,oBACb,KAAK;AACJ,6BAAO;AAAA,oBACR,KAAK;AACJ,6BAAO,WAAW,aAAa,IAAI,iBAAiB,MAAM,SAAS,SAAS;AAAA,oBAC7E,KAAK;AACJ,6BAAQ,WAAW,aAAa,IAAI,iBAAiB,MAAM,SAAS,SAAS,IAAK;AAAA,kBACpF;AAAA,gBACD;AAAA,cACD;AACA,kBAAI,eAAe,WAAW,aAAa,aAAa,SAAS,IAAI;AACrE,kBAAI,eAAe,WAAW,cAAc,aAAa,UAAU,IAAI;AACvE,kBAAI,eAAe,WAAW,aAAa,aAAa,OAAO;AAC/D,kBAAI,eAAe,WAAW,cAAc,aAAa,QAAQ;AAAA,YAClE;AAAA,UACD;AAAA;AAAA;AAAA;AAAA,UAKA,OAAO;AAAA;AAAA;AAAA,YAGN,WAAW,SAAS,UAAU;AAC7B,qBAAO,SAAS,QAAQ,UAAU,SAAS0B,QAAO,UAAU;AAC3D,uBAAO,SAAS,YAAY;AAAA,cAC7B,CAAC;AAAA,YACF;AAAA;AAAA,YAEA,cAAc,SAAS,UAAU;AAChC,kBAAI,gBAAgB;AAGpB,kBAAI,MAAO,SAAS,MAAM,aAAa,CAAC,SAAS,MAAM,UAAW;AACjE,iCAAiB;AAAA,cAClB;AAEA,qBAAO,IAAI,OAAO,OAAO,gBAAgB,MAAM,GAAG,EAAE,KAAK,QAAQ;AAAA,YAClE;AAAA;AAAA;AAAA;AAAA,YAIA,aAAa,SAAS,UAAU;AAE/B,kBAAI,SAAS,MAAM,cAAc,QAAQ,GAAG;AAC3C,uBAAO,CAAC,SAAS,MAAM,cAAc,QAAQ,GAAG,IAAI;AAAA,cACrD,OAAO;AACN,oBAAI,UAAU,CAAC,IAAI,UAAU,OAAO,MAAM,GAAG;AAE7C,yBAAS,IAAI,GAAG,gBAAgB,QAAQ,QAAQ,IAAI,eAAe,KAAK;AACvE,sBAAI;AAEJ,sBAAI,MAAM,GAAG;AACZ,uCAAmB;AAAA,kBACpB,OAAO;AAEN,uCAAmB,QAAQ,CAAC,IAAI,SAAS,QAAQ,OAAO,SAASA,QAAO;AACvE,6BAAOA,OAAM,YAAY;AAAA,oBAC1B,CAAC;AAAA,kBACF;AAGA,sBAAI,KAAK,SAAS,SAAS,MAAM,cAAc,MAAM,gBAAgB,CAAC,GAAG;AAExE,6BAAS,MAAM,cAAc,QAAQ,IAAI;AAEzC,2BAAO,CAAC,kBAAkB,IAAI;AAAA,kBAC/B;AAAA,gBACD;AAGA,uBAAO,CAAC,UAAU,KAAK;AAAA,cACxB;AAAA,YACD;AAAA,UACD;AAAA;AAAA;AAAA;AAAA,UAKA,QAAQ;AAAA;AAAA,YAEP,UAAU,SAASC,MAAK;AACvB,kBAAI,iBAAiB,oCACnB,gBAAgB,6CAChB;AAEF,cAAAA,OAAMA,KAAI,QAAQ,gBAAgB,SAAS,GAAG,GAAG,GAAG,GAAG;AACtD,uBAAO,IAAI,IAAI,IAAI,IAAI,IAAI;AAAA,cAC5B,CAAC;AAED,yBAAW,cAAc,KAAKA,IAAG;AAEjC,qBAAO,WAAW,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,SAAS,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;AAAA,YAC/G;AAAA,YACA,gBAAgB,SAAS,OAAO;AAM/B,qBAAQ,CAAC,SAAS,qDAAqD,KAAK,KAAK;AAAA,YAClF;AAAA;AAAA,YAEA,aAAa,SAAS,UAAU;AAC/B,kBAAI,kBAAkB,KAAK,QAAQ,GAAG;AACrC,uBAAO;AAAA,cACR,WAAW,kHAAkH,KAAK,QAAQ,GAAG;AAE5I,uBAAO;AAAA,cACR,OAAO;AAEN,uBAAO;AAAA,cACR;AAAA,YACD;AAAA;AAAA;AAAA,YAGA,gBAAgB,SAAS,SAAS;AACjC,kBAAIC,WAAU,WAAW,QAAQ,QAAQ,SAAS,EAAE,YAAY;AAEhE,kBAAI,2JAA2J,KAAKA,QAAO,GAAG;AAC7K,uBAAO;AAAA,cACR,WAAW,UAAU,KAAKA,QAAO,GAAG;AACnC,uBAAO;AAAA,cACR,WAAW,UAAU,KAAKA,QAAO,GAAG;AACnC,uBAAO;AAAA,cACR,WAAW,aAAa,KAAKA,QAAO,GAAG;AACtC,uBAAO;AAAA,cACR,WAAW,aAAa,KAAKA,QAAO,GAAG;AACtC,uBAAO;AAAA,cAER,OAAO;AACN,uBAAO;AAAA,cACR;AAAA,YACD;AAAA;AAAA,YAEA,UAAU,SAAS,SAAS,WAAW;AACtC,kBAAI,SAAS;AACZ,oBAAI,QAAQ,WAAW;AACtB,0BAAQ,UAAU,IAAI,SAAS;AAAA,gBAChC,WAAW,KAAK,SAAS,QAAQ,SAAS,GAAG;AAE5C,0BAAQ,cAAc,QAAQ,UAAU,SAAS,MAAM,MAAM;AAAA,gBAC9D,OAAO;AAEN,sBAAI,eAAe,QAAQ,aAAa,MAAM,IAAI,cAAc,OAAO,KAAK;AAE5E,0BAAQ,aAAa,SAAS,gBAAgB,eAAe,MAAM,MAAM,SAAS;AAAA,gBACnF;AAAA,cACD;AAAA,YACD;AAAA,YACA,aAAa,SAAS,SAAS,WAAW;AACzC,kBAAI,SAAS;AACZ,oBAAI,QAAQ,WAAW;AACtB,0BAAQ,UAAU,OAAO,SAAS;AAAA,gBACnC,WAAW,KAAK,SAAS,QAAQ,SAAS,GAAG;AAG5C,0BAAQ,YAAY,QAAQ,UAAU,SAAS,EAAE,QAAQ,IAAI,OAAO,YAAY,UAAU,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,WAAW,IAAI,GAAG,GAAG;AAAA,gBACvI,OAAO;AAEN,sBAAI,eAAe,QAAQ,aAAa,MAAM,IAAI,cAAc,OAAO,KAAK;AAE5E,0BAAQ,aAAa,SAAS,aAAa,QAAQ,IAAI,OAAO,UAAW,UAAU,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,SAAU,IAAI,GAAG,GAAG,CAAC;AAAA,gBAChI;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA;AAAA;AAAA;AAAA;AAAA,UAMA,kBAAkB,SAAS,SAAS,UAAU,mBAAmB,kBAAkB;AAKlF,qBAAS,qBAAqBC,UAASC,WAAU;AAKhD,kBAAI,gBAAgB;AAMpB,kBAAI,MAAM,GAAG;AACZ,gCAAgBhC,GAAE,IAAI+B,UAASC,SAAQ;AAAA,cAGxC,OAAO;AAGN,oBAAI,gBAAgB;AAEpB,oBAAI,mBAAmB,KAAKA,SAAQ,KAAK,IAAI,iBAAiBD,UAAS,SAAS,MAAM,GAAG;AACxF,kCAAgB;AAChB,sBAAI,iBAAiBA,UAAS,WAAW,IAAI,OAAO,eAAeA,QAAO,CAAC;AAAA,gBAC5E;AAEA,oBAAI,gBAAgB,WAAW;AAC9B,sBAAI,eAAe;AAClB,wBAAI,iBAAiBA,UAAS,WAAW,MAAM;AAAA,kBAChD;AAAA,gBACD;AAEA,oBAAI,CAAC,kBAAkB;AACtB,sBAAIC,cAAa,YAAY,IAAI,iBAAiBD,UAAS,WAAW,EAAE,SAAS,EAAE,YAAY,MAAM,cAAc;AAClH,wBAAI,mBAAmBA,SAAQ,gBAAgB,WAAW,IAAI,iBAAiBA,UAAS,gBAAgB,CAAC,KAAK,MAAM,WAAW,IAAI,iBAAiBA,UAAS,mBAAmB,CAAC,KAAK,MAAM,WAAW,IAAI,iBAAiBA,UAAS,YAAY,CAAC,KAAK,MAAM,WAAW,IAAI,iBAAiBA,UAAS,eAAe,CAAC,KAAK;AAC3T,kCAAc;AAEd,2BAAO;AAAA,kBACR,WAAWC,cAAa,WAAW,IAAI,iBAAiBD,UAAS,WAAW,EAAE,SAAS,EAAE,YAAY,MAAM,cAAc;AACxH,wBAAI,kBAAkBA,SAAQ,eAAe,WAAW,IAAI,iBAAiBA,UAAS,iBAAiB,CAAC,KAAK,MAAM,WAAW,IAAI,iBAAiBA,UAAS,kBAAkB,CAAC,KAAK,MAAM,WAAW,IAAI,iBAAiBA,UAAS,aAAa,CAAC,KAAK,MAAM,WAAW,IAAI,iBAAiBA,UAAS,cAAc,CAAC,KAAK;AACzT,kCAAc;AAEd,2BAAO;AAAA,kBACR;AAAA,gBACD;AAEA,oBAAI;AAIJ,oBAAI,KAAKA,QAAO,MAAMb,YAAW;AAChC,kCAAgBnB,QAAO,iBAAiBgC,UAAS,IAAI;AAAA,gBAEtD,WAAW,CAAC,KAAKA,QAAO,EAAE,eAAe;AACxC,kCAAgB,KAAKA,QAAO,EAAE,gBAAgBhC,QAAO,iBAAiBgC,UAAS,IAAI;AAAA,gBAEpF,OAAO;AACN,kCAAgB,KAAKA,QAAO,EAAE;AAAA,gBAC/B;AAKA,oBAAIC,cAAa,eAAe;AAC/B,kBAAAA,YAAW;AAAA,gBACZ;AAIA,oBAAI,OAAO,KAAKA,cAAa,UAAU;AACtC,kCAAgB,cAAc,iBAAiBA,SAAQ;AAAA,gBACxD,OAAO;AACN,kCAAgB,cAAcA,SAAQ;AAAA,gBACvC;AAIA,oBAAI,kBAAkB,MAAM,kBAAkB,MAAM;AACnD,kCAAgBD,SAAQ,MAAMC,SAAQ;AAAA,gBACvC;AAEA,8BAAc;AAAA,cACf;AAQA,kBAAI,kBAAkB,UAAU,6BAA6B,KAAKA,SAAQ,GAAG;AAC5E,oBAAI,WAAW,qBAAqBD,UAAS,UAAU;AAMvD,oBAAI,aAAa,WAAY,aAAa,cAAc,YAAY,KAAKC,SAAQ,GAAI;AAEpF,kCAAgBhC,GAAE+B,QAAO,EAAE,SAAS,EAAEC,SAAQ,IAAI;AAAA,gBACnD;AAAA,cACD;AAEA,qBAAO;AAAA,YACR;AAEA,gBAAI;AAIJ,gBAAI,IAAI,MAAM,WAAW,QAAQ,GAAG;AACnC,kBAAI,OAAO,UACT,WAAW,IAAI,MAAM,QAAQ,IAAI;AAInC,kBAAI,sBAAsBd,YAAW;AAEpC,oCAAoB,IAAI,iBAAiB,SAAS,IAAI,MAAM,YAAY,QAAQ,EAAE,CAAC,CAAC;AAAA,cACrF;AAGA,kBAAI,IAAI,eAAe,WAAW,QAAQ,GAAG;AAC5C,oCAAoB,IAAI,eAAe,WAAW,QAAQ,EAAE,WAAW,SAAS,iBAAiB;AAAA,cAClG;AAGA,8BAAgB,IAAI,MAAM,aAAa,MAAM,iBAAiB;AAAA,YAM/D,WAAW,IAAI,eAAe,WAAW,QAAQ,GAAG;AACnD,kBAAI,wBACF;AAEF,uCAAyB,IAAI,eAAe,WAAW,QAAQ,EAAE,QAAQ,OAAO;AAMhF,kBAAI,2BAA2B,aAAa;AAC3C,0CAA0B,qBAAqB,SAAS,IAAI,MAAM,YAAY,sBAAsB,EAAE,CAAC,CAAC;AAGxG,oBAAI,IAAI,OAAO,eAAe,uBAAuB,KAAK,IAAI,MAAM,UAAU,QAAQ,GAAG;AACxF,4CAA0B,IAAI,MAAM,UAAU,QAAQ,EAAE,CAAC;AAAA,gBAC1D;AAAA,cACD;AAEA,8BAAgB,IAAI,eAAe,WAAW,QAAQ,EAAE,WAAW,SAAS,uBAAuB;AAAA,YACpG;AAGA,gBAAI,CAAC,SAAS,KAAK,aAAa,GAAG;AAGlC,kBAAI,OAAO,KAAK,OAAO;AAEvB,kBAAI,QAAQ,KAAK,SAAS,IAAI,MAAM,aAAa,QAAQ,GAAG;AAG3D,oBAAI,oBAAoB,KAAK,QAAQ,GAAG;AAEvC,sBAAI;AACH,oCAAgB,QAAQ,QAAQ,EAAE,QAAQ;AAAA,kBAC3C,SAAS,OAAO;AACf,oCAAgB;AAAA,kBACjB;AAAA,gBAED,OAAO;AACN,kCAAgB,QAAQ,aAAa,QAAQ;AAAA,gBAC9C;AAAA,cACD,OAAO;AACN,gCAAgB,qBAAqB,SAAS,IAAI,MAAM,YAAY,QAAQ,EAAE,CAAC,CAAC;AAAA,cACjF;AAAA,YACD;AAIA,gBAAI,IAAI,OAAO,eAAe,aAAa,GAAG;AAC7C,8BAAgB;AAAA,YACjB;AAEA,gBAAI,SAAS,SAAS,GAAG;AACxB,sBAAQ,IAAI,SAAS,WAAW,OAAO,aAAa;AAAA,YACrD;AAEA,mBAAO;AAAA,UACR;AAAA;AAAA,UAEA,kBAAkB,SAAS,SAAS,UAAU,eAAe,mBAAmB,YAAY;AAC3F,gBAAI,eAAe;AAGnB,gBAAI,aAAa,UAAU;AAE1B,kBAAI,WAAW,WAAW;AACzB,2BAAW,UAAU,WAAW,WAAW,SAAS,IAAI;AAAA,cAEzD,OAAO;AACN,oBAAI,WAAW,cAAc,QAAQ;AACpC,kBAAAnB,QAAO,SAAS,eAAe,WAAW,cAAc;AAAA,gBACzD,OAAO;AACN,kBAAAA,QAAO,SAAS,WAAW,gBAAgB,aAAa;AAAA,gBACzD;AAAA,cACD;AAAA,YACD,OAAO;AAGN,kBAAI,IAAI,eAAe,WAAW,QAAQ,KAAK,IAAI,eAAe,WAAW,QAAQ,EAAE,QAAQ,OAAO,MAAM,aAAa;AAGxH,oBAAI,eAAe,WAAW,QAAQ,EAAE,UAAU,SAAS,aAAa;AAExE,+BAAe;AACf,gCAAgB,KAAK,OAAO,EAAE,eAAe,QAAQ;AAAA,cACtD,OAAO;AAEN,oBAAI,IAAI,MAAM,WAAW,QAAQ,GAAG;AACnC,sBAAI,WAAW,UACb,WAAW,IAAI,MAAM,QAAQ,QAAQ;AAGvC,sCAAoB,qBAAqB,IAAI,iBAAiB,SAAS,QAAQ;AAE/E,kCAAgB,IAAI,MAAM,YAAY,UAAU,eAAe,iBAAiB;AAChF,6BAAW;AAAA,gBACZ;AAGA,oBAAI,IAAI,eAAe,WAAW,QAAQ,GAAG;AAC5C,kCAAgB,IAAI,eAAe,WAAW,QAAQ,EAAE,UAAU,SAAS,aAAa;AACxF,6BAAW,IAAI,eAAe,WAAW,QAAQ,EAAE,QAAQ,OAAO;AAAA,gBACnE;AAGA,+BAAe,IAAI,MAAM,YAAY,QAAQ,EAAE,CAAC;AAIhD,oBAAI,MAAM,GAAG;AACZ,sBAAI;AACH,4BAAQ,MAAM,YAAY,IAAI;AAAA,kBAC/B,SAAS,OAAO;AACf,wBAAI,SAAS,OAAO;AACnB,8BAAQ,IAAI,+BAA+B,gBAAgB,YAAY,eAAe,GAAG;AAAA,oBAC1F;AAAA,kBACD;AAAA,gBAGD,OAAO;AACN,sBAAI,OAAO,KAAK,OAAO;AAEvB,sBAAI,QAAQ,KAAK,SAAS,IAAI,MAAM,aAAa,QAAQ,GAAG;AAG3D,4BAAQ,aAAa,UAAU,aAAa;AAAA,kBAC7C,OAAO;AACN,4BAAQ,MAAM,YAAY,IAAI;AAAA,kBAC/B;AAAA,gBACD;AAEA,oBAAI,SAAS,SAAS,GAAG;AACxB,0BAAQ,IAAI,SAAS,WAAW,OAAO,eAAe,QAAQ,aAAa;AAAA,gBAC5E;AAAA,cACD;AAAA,YACD;AAGA,mBAAO,CAAC,cAAc,aAAa;AAAA,UACpC;AAAA;AAAA;AAAA,UAGA,qBAAqB,SAAS,SAAS;AACtC,gBAAI,kBAAkB,IACpB,OAAO,KAAK,OAAO;AAIrB,iBAAK,MAAO,SAAS,MAAM,aAAa,CAAC,SAAS,MAAM,aAAc,QAAQ,KAAK,OAAO;AAGzF,kBAAI,oBAAoB,SAAS,mBAAmB;AACnD,uBAAO,WAAW,IAAI,iBAAiB,SAAS,iBAAiB,CAAC;AAAA,cACnE;AAIA,kBAAI,gBAAgB;AAAA,gBACnB,WAAW,CAAC,kBAAkB,YAAY,GAAG,kBAAkB,YAAY,CAAC;AAAA,gBAC5E,OAAO,CAAC,kBAAkB,OAAO,CAAC;AAAA,gBAAG,OAAO,CAAC,kBAAkB,OAAO,CAAC;AAAA;AAAA;AAAA,gBAGvE,OAAO,kBAAkB,OAAO,MAAM,IAAI,CAAC,kBAAkB,OAAO,GAAG,kBAAkB,OAAO,CAAC,IAAI,CAAC,kBAAkB,QAAQ,GAAG,kBAAkB,QAAQ,CAAC;AAAA;AAAA;AAAA,gBAG9J,QAAQ,CAAC,kBAAkB,SAAS,GAAG,GAAG,CAAC;AAAA,cAC5C;AAIA,cAAAC,GAAE,KAAK,KAAK,OAAO,EAAE,gBAAgB,SAAS,eAAe;AAG5D,oBAAI,cAAc,KAAK,aAAa,GAAG;AACtC,kCAAgB;AAAA,gBACjB,WAAW,UAAU,KAAK,aAAa,GAAG;AACzC,kCAAgB;AAAA,gBACjB,WAAW,WAAW,KAAK,aAAa,GAAG;AAC1C,kCAAgB;AAAA,gBACjB;AAGA,oBAAI,cAAc,aAAa,GAAG;AAEjC,qCAAmB,gBAAgB,MAAM,cAAc,aAAa,EAAE,KAAK,GAAG,IAAI;AAIlF,yBAAO,cAAc,aAAa;AAAA,gBACnC;AAAA,cACD,CAAC;AAAA,YACF,OAAO;AACN,kBAAI,gBACFiC;AAGF,cAAAjC,GAAE,KAAK,KAAK,OAAO,EAAE,gBAAgB,SAAS,eAAe;AAC5D,iCAAiB,KAAK,OAAO,EAAE,eAAe,aAAa;AAG3D,oBAAI,kBAAkB,wBAAwB;AAC7C,kBAAAiC,eAAc;AACd,yBAAO;AAAA,gBACR;AAGA,oBAAI,OAAO,KAAK,kBAAkB,WAAW;AAC5C,kCAAgB;AAAA,gBACjB;AAEA,mCAAmB,gBAAgB,iBAAiB;AAAA,cACrD,CAAC;AAGD,kBAAIA,cAAa;AAChB,kCAAkB,gBAAgBA,eAAc,MAAM;AAAA,cACvD;AAAA,YACD;AAEA,gBAAI,iBAAiB,SAAS,aAAa,eAAe;AAAA,UAC3D;AAAA,QACD;AAGA,YAAI,MAAM,SAAS;AACnB,YAAI,eAAe,SAAS;AAG5B,iBAAS,OAAO,SAAS,UAAU,MAAM,MAAM;AAC9C,cAAI;AAEJ,qBAAW,iBAAiB,QAAQ;AAEpC,UAAAjC,GAAE,KAAK,UAAU,SAAS,GAAG,SAAS;AAErC,gBAAI,KAAK,OAAO,MAAMkB,YAAW;AAChC,uBAAS,KAAK,OAAO;AAAA,YACtB;AAGA,gBAAI,SAASA,YAAW;AACvB,kBAAI,UAAUA,YAAW;AACxB,wBAAQ,IAAI,iBAAiB,SAAS,IAAI;AAAA,cAC3C;AAAA,YAED,OAAO;AAEN,kBAAI,cAAc,IAAI,iBAAiB,SAAS,MAAM,IAAI;AAG1D,kBAAI,YAAY,CAAC,MAAM,aAAa;AACnC,yBAAS,IAAI,oBAAoB,OAAO;AAAA,cACzC;AAEA,sBAAQ;AAAA,YACT;AAAA,UACD,CAAC;AAED,iBAAO;AAAA,QACR;AAMA,YAAI,UAAU,WAAW;AACxB,cAAIgB;AAOJ,mBAAS,WAAW;AAGnB,gBAAI,WAAW;AACd,qBAAO,YAAY,WAAW;AAAA,YAE/B,OAAO;AACN,qBAAO;AAAA,YACR;AAAA,UACD;AASA,cAAI,iBAAkB,UAAU,CAAC,MAAM,UAAU,CAAC,EAAE,MAAOlC,GAAE,cAAc,UAAU,CAAC,EAAE,UAAU,KAAK,CAAC,UAAU,CAAC,EAAE,WAAW,SAAU,KAAK,SAAS,UAAU,CAAC,EAAE,UAAU,KAE7K,WAGA,iBACA;AAEF,cAAI,UACF,eACA;AAGF,cAAI,KAAK,UAAU,IAAI,GAAG;AACzB,wBAAY;AAEZ,4BAAgB;AAChB,uBAAW;AACX,8BAAkB;AAAA,UAEnB,OAAO;AACN,wBAAY;AAEZ,4BAAgB;AAChB,uBAAW,iBAAkB,UAAU,CAAC,EAAE,YAAY,UAAU,CAAC,EAAE,IAAK,UAAU,CAAC;AAAA,UACpF;AAMA,cAAI,cAAc;AAAA,YACjB,SAAS;AAAA,YACT,UAAU;AAAA,YACV,UAAU;AAAA,UACX;AASA,cAAI,aAAa,SAAS,SAAS;AAClC,wBAAY,UAAU,IAAI,SAAS,QAAQ,SAASmC,UAAS,QAAQ;AACpE,0BAAY,WAAWA;AACvB,0BAAY,WAAW;AAAA,YACxB,CAAC;AAAA,UACF;AAEA,cAAI,gBAAgB;AACnB,4BAAgB,UAAU,CAAC,EAAE,cAAc,UAAU,CAAC,EAAE;AACxD,sBAAU,UAAU,CAAC,EAAE,WAAW,UAAU,CAAC,EAAE;AAAA,UAChD,OAAO;AACN,4BAAgB,UAAU,aAAa;AACvC,sBAAU,UAAU,gBAAgB,CAAC;AAAA,UACtC;AAEA,qBAAW,iBAAiB,QAAQ;AAEpC,cAAI,CAAC,UAAU;AACd,gBAAI,YAAY,SAAS;AACxB,kBAAI,CAAC,iBAAiB,CAAC,WAAW,QAAQ,uBAAuB,OAAO;AACvE,4BAAY,SAAS;AAAA,cACtB,OAAO;AACN,4BAAY,SAAS;AAAA,cACtB;AAAA,YACD;AACA;AAAA,UACD;AAIA,cAAI,iBAAiB,SAAS,QAC5B,gBAAgB;AASlB,cAAI,CAAC,0CAA0C,KAAK,aAAa,KAAK,CAACnC,GAAE,cAAc,OAAO,GAAG;AAEhG,gBAAI,2BAA2B,gBAAgB;AAE/C,sBAAU,CAAC;AAGX,qBAAS,IAAI,0BAA0B,IAAI,UAAU,QAAQ,KAAK;AAIjE,kBAAI,CAAC,KAAK,QAAQ,UAAU,CAAC,CAAC,MAAM,wBAAwB,KAAK,UAAU,CAAC,CAAC,KAAK,MAAM,KAAK,UAAU,CAAC,CAAC,IAAI;AAC5G,wBAAQ,WAAW,UAAU,CAAC;AAAA,cAE/B,WAAW,KAAK,SAAS,UAAU,CAAC,CAAC,KAAK,KAAK,QAAQ,UAAU,CAAC,CAAC,GAAG;AACrE,wBAAQ,SAAS,UAAU,CAAC;AAAA,cAE7B,WAAW,KAAK,WAAW,UAAU,CAAC,CAAC,GAAG;AACzC,wBAAQ,WAAW,UAAU,CAAC;AAAA,cAC/B;AAAA,YACD;AAAA,UACD;AAUA,cAAI;AAEJ,kBAAQ,eAAe;AAAA,YACtB,KAAK;AACJ,uBAAS;AACT;AAAA,YAED,KAAK;AACJ,uBAAS;AACT;AAAA,YAED,KAAK;AAMJ,kBAAI,eAAe,oBAAI,KAAK,GAAG,QAAQ;AAGvC,cAAAA,GAAE,KAAK,UAAU,SAASI,IAAG,SAAS;AACrC,oCAAoB,SAAS,WAAW;AAAA,cACzC,CAAC;AAOD,cAAAJ,GAAE,KAAK,SAAS,MAAM,OAAO,SAASI,IAAG,YAAY;AAEpD,oBAAI,QAAQ;AAEZ,oBAAI,YAAY;AAEf,kBAAAJ,GAAE,KAAK,WAAW,CAAC,GAAG,SAAS,GAAG,eAAe;AAChD,wBAAI,YAAa,YAAYkB,aAAa,KAAK;AAE/C,wBAAI,cAAc,QAAS,WAAW,CAAC,EAAE,UAAU,aAAc,EAAE,YAAYA,cAAa,WAAW,CAAC,EAAE,UAAU,QAAQ;AAC3H,6BAAO;AAAA,oBACR;AAGA,oBAAAlB,GAAE,KAAK,UAAU,SAAS,GAAG,SAAS;AAErC,0BAAI,YAAY,eAAe;AAG9B,mCAAW,CAAC,IAAI;AAAA,0BACf,QAAQ;AAAA,wBACT;AAGA,gCAAQ;AACR,+BAAO;AAAA,sBACR;AAAA,oBACD,CAAC;AAGD,wBAAI,OAAO;AACV,6BAAO;AAAA,oBACR;AAAA,kBACD,CAAC;AAAA,gBACF;AAAA,cAED,CAAC;AAGD,qBAAO,SAAS;AAAA,YAEjB,KAAK;AAOJ,cAAAA,GAAE,KAAK,UAAU,SAASI,IAAG,SAAS;AACrC,qCAAqB,SAAS,WAAW;AAAA,cAC1C,CAAC;AAOD,cAAAJ,GAAE,KAAK,SAAS,MAAM,OAAO,SAASI,IAAG,YAAY;AACpD,oBAAI,QAAQ;AAEZ,oBAAI,YAAY;AAEf,kBAAAJ,GAAE,KAAK,WAAW,CAAC,GAAG,SAAS,GAAG,eAAe;AAChD,wBAAI,YAAa,YAAYkB,aAAa,KAAK;AAE/C,wBAAI,cAAc,QAAS,WAAW,CAAC,EAAE,UAAU,aAAc,EAAE,YAAYA,cAAa,WAAW,CAAC,EAAE,UAAU,QAAQ;AAC3H,6BAAO;AAAA,oBACR;AAGA,wBAAI,CAAC,WAAW,CAAC,GAAG;AACnB,6BAAO;AAAA,oBACR;AAGA,oBAAAlB,GAAE,KAAK,UAAU,SAAS,GAAG,SAAS;AAErC,0BAAI,YAAY,eAAe;AAI9B,mCAAW,CAAC,EAAE,SAAS;AAGvB,gCAAQ;AACR,+BAAO;AAAA,sBACR;AAAA,oBACD,CAAC;AAGD,wBAAI,OAAO;AACV,6BAAO;AAAA,oBACR;AAAA,kBACD,CAAC;AAAA,gBACF;AAAA,cAED,CAAC;AAGD,qBAAO,SAAS;AAAA,YAEjB,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAMJ,cAAAA,GAAE,KAAK,UAAU,SAASI,IAAG,SAAS;AACrC,oBAAI,KAAK,OAAO,KAAK,KAAK,OAAO,EAAE,YAAY;AAE9C,+BAAa,KAAK,OAAO,EAAE,WAAW,UAAU;AAGhD,sBAAI,KAAK,OAAO,EAAE,WAAW,MAAM;AAClC,yBAAK,OAAO,EAAE,WAAW,KAAK;AAAA,kBAC/B;AAEA,yBAAO,KAAK,OAAO,EAAE;AAAA,gBACtB;AAKA,oBAAI,kBAAkB,gBAAgB,YAAY,QAAQ,KAAK,SAAS,OAAO,IAAI;AAElF,kBAAAJ,GAAE,KAAKA,GAAE,MAAM,SAAS,KAAK,SAAS,OAAO,IAAI,UAAU,EAAE,GAAG,SAAS,GAAG,MAAM;AAEjF,wBAAI,KAAK,WAAW,IAAI,GAAG;AAC1B,2BAAK;AAAA,oBACN;AAAA,kBACD,CAAC;AAGD,kBAAAA,GAAE,MAAM,SAAS,KAAK,SAAS,OAAO,IAAI,UAAU,IAAI,CAAC,CAAC;AAAA,gBAC3D;AAAA,cACD,CAAC;AAED,kBAAI,cAAc,CAAC;AAWnB,cAAAA,GAAE,KAAK,SAAS,MAAM,OAAO,SAASI,IAAG,YAAY;AAEpD,oBAAI,YAAY;AAEf,kBAAAJ,GAAE,KAAK,WAAW,CAAC,GAAG,SAAS,GAAG,eAAe;AAQhD,wBAAI,YAAa,YAAYkB,aAAa,KAAK;AAE/C,wBAAI,cAAc,QAAS,WAAW,CAAC,EAAE,UAAU,aAAc,EAAE,YAAYA,cAAa,WAAW,CAAC,EAAE,UAAU,QAAQ;AAC3H,6BAAO;AAAA,oBACR;AAGA,oBAAAlB,GAAE,KAAK,UAAU,SAAS,GAAG,SAAS;AAErC,0BAAI,YAAY,eAAe;AAG9B,4BAAI,YAAY,QAAQ,KAAK,SAAS,OAAO,GAAG;AAE/C,0BAAAA,GAAE,KAAKA,GAAE,MAAM,SAAS,KAAK,SAAS,OAAO,IAAI,UAAU,EAAE,GAAG,SAAS,GAAG,MAAM;AAEjF,gCAAI,KAAK,WAAW,IAAI,GAAG;AAG1B,mCAAK,MAAM,IAAI;AAAA,4BAChB;AAAA,0BACD,CAAC;AAGD,0BAAAA,GAAE,MAAM,SAAS,KAAK,SAAS,OAAO,IAAI,UAAU,IAAI,CAAC,CAAC;AAAA,wBAC3D;AAEA,4BAAI,kBAAkB,QAAQ;AAK7B,8BAAI,OAAO,KAAK,OAAO;AACvB,8BAAI,QAAQ,KAAK,oBAAoB,cAAc,QAAQ,cAAc,KAAK;AAC7E,4BAAAA,GAAE,KAAK,KAAK,iBAAiB,SAAS,GAAG,aAAa;AACrD,0CAAY,WAAW,YAAY;AAAA,4BACpC,CAAC;AAAA,0BACF;AAEA,sCAAY,KAAKI,EAAC;AAAA,wBACnB,WAAW,kBAAkB,YAAY,kBAAkB,aAAa;AAGvE,qCAAW,CAAC,EAAE,WAAW;AAAA,wBAC1B;AAAA,sBACD;AAAA,oBACD,CAAC;AAAA,kBACF,CAAC;AAAA,gBACF;AAAA,cACD,CAAC;AAID,kBAAI,kBAAkB,QAAQ;AAC7B,gBAAAJ,GAAE,KAAK,aAAa,SAASI,IAAG,GAAG;AAClC,+BAAa,GAAG,IAAI;AAAA,gBACrB,CAAC;AAED,oBAAI,YAAY,SAAS;AAExB,8BAAY,SAAS,QAAQ;AAAA,gBAC9B;AAAA,cACD;AAGA,qBAAO,SAAS;AAAA,YAEjB;AAEC,kBAAIJ,GAAE,cAAc,aAAa,KAAK,CAAC,KAAK,cAAc,aAAa,GAAG;AACzE,yBAAS;AAAA,cAOV,WAAW,KAAK,SAAS,aAAa,KAAK,SAAS,UAAU,aAAa,GAAG;AAC7E,gBAAAkC,QAAOlC,GAAE,OAAO,CAAC,GAAG,OAAO;AAE3B,oBAAI,mBAAmBkC,MAAK,UAC1B,gBAAgBA,MAAK,SAAS;AAGhC,oBAAIA,MAAK,cAAc,MAAM;AAC5B,6BAAWlC,GAAE,OAAO,MAAM,CAAC,GAAG,QAAQ,EAAE,QAAQ;AAAA,gBACjD;AAGA,gBAAAA,GAAE,KAAK,UAAU,SAAS,cAAc,SAAS;AAEhD,sBAAI,WAAWkC,MAAK,OAAO,GAAG;AAC7B,oBAAAA,MAAK,QAAQ,gBAAiB,WAAWA,MAAK,OAAO,IAAI;AAAA,kBAC1D,WAAW,KAAK,WAAWA,MAAK,OAAO,GAAG;AACzC,oBAAAA,MAAK,QAAQ,gBAAgBA,MAAK,QAAQ,KAAK,SAAS,cAAc,cAAc;AAAA,kBACrF;AAIA,sBAAIA,MAAK,MAAM;AAEd,oBAAAA,MAAK,WAAW,WAAW,gBAAgB,MAAM,wBAAwB,KAAK,aAAa,IAAI,MAAO;AAKtG,oBAAAA,MAAK,WAAW,KAAK,IAAIA,MAAK,YAAYA,MAAK,YAAY,IAAI,eAAe,kBAAkB,eAAe,KAAK,iBAAiBA,MAAK,WAAW,MAAM,GAAG;AAAA,kBAC/J;AAIA,2BAAS,UAAU,aAAa,EAAE,KAAK,SAAS,SAASA,SAAQ,CAAC,GAAG,cAAc,gBAAgB,UAAU,YAAY,UAAU,cAAchB,UAAS;AAAA,gBAC3J,CAAC;AAKD,uBAAO,SAAS;AAAA,cACjB,OAAO;AACN,oBAAI,aAAa,+BAA+B,gBAAgB;AAEhE,oBAAI,YAAY,SAAS;AACxB,8BAAY,SAAS,IAAI,MAAM,UAAU,CAAC;AAAA,gBAC3C,WAAWnB,QAAO,SAAS;AAC1B,0BAAQ,IAAI,UAAU;AAAA,gBACvB;AAEA,uBAAO,SAAS;AAAA,cACjB;AAAA,UACF;AAUA,cAAI,yBAAyB;AAAA,YAC5B,YAAY;AAAA,YACZ,cAAc;AAAA,YACd,cAAc;AAAA,YACd,sBAAsB;AAAA,YACtB,uBAAuB;AAAA,YACvB,YAAY;AAAA,YACZ,SAAS;AAAA,YACT,QAAQ;AAAA,YACR,QAAQ;AAAA,UACT;AAIA,cAAI,OAAO,CAAC;AAaZ,mBAASqC,gBAAe,SAAS,mBAAmB;AAUnD,gBACEF,QAAOlC,GAAE,OAAO,CAAC,GAAG,SAAS,UAAU,OAAO,GAG9C,kBAAkB,CAAC,GACnB;AAMF,gBAAI,KAAK,OAAO,MAAMkB,YAAW;AAChC,uBAAS,KAAK,OAAO;AAAA,YACtB;AASA,gBAAI,WAAWgB,MAAK,KAAK,KAAKA,MAAK,UAAU,OAAO;AACnD,cAAAlC,GAAE,MAAM,SAASkC,MAAK,OAAO,SAASG,OAAM,YAAY;AACvD,oBAAI,eAAe,MAAM;AAExB,yBAAO;AAAA,gBACR;AAGA,yBAAS,yBAAyB;AAOlC,oBAAIC,aAAY,SAAS,MAAM,gBAAgB;AAC/C,yBAAS,MAAM,gBAAgBA,UAAS,IAAI;AAE5C,oBAAIC,iBAAiB,0BAASjB,QAAO;AACpC,yBAAO,WAAW;AAEjB,6BAAS,MAAM,gBAAgBA,MAAK,IAAI;AAGxC,oBAAAe,MAAK;AAAA,kBACN;AAAA,gBACD,GAAGC,UAAS;AAGZ,qBAAK,OAAO,EAAE,cAAc,oBAAI,KAAK,GAAG,QAAQ;AAChD,qBAAK,OAAO,EAAE,QAAQ,WAAWJ,MAAK,KAAK;AAC3C,qBAAK,OAAO,EAAE,aAAa;AAAA,kBAC1B,YAAY,WAAWG,OAAM,WAAWH,MAAK,KAAK,CAAC;AAAA,kBACnD,MAAMK;AAAA,gBACP;AAAA,cACD,CAAC;AAAA,YACF;AAOA,oBAAQL,MAAK,SAAS,SAAS,EAAE,YAAY,GAAG;AAAA,cAC/C,KAAK;AACJ,gBAAAA,MAAK,WAAW;AAChB;AAAA,cAED,KAAK;AACJ,gBAAAA,MAAK,WAAW;AAChB;AAAA,cAED,KAAK;AACJ,gBAAAA,MAAK,WAAW;AAChB;AAAA,cAED;AAEC,gBAAAA,MAAK,WAAW,WAAWA,MAAK,QAAQ,KAAK;AAAA,YAC/C;AAMA,gBAAI,SAAS,SAAS,OAAO;AAG5B,kBAAI,SAAS,SAAS,MAAM;AAC3B,gBAAAA,MAAK,WAAWA,MAAK,QAAQ;AAAA,cAC9B,OAAO;AACN,gBAAAA,MAAK,YAAY,WAAW,SAAS,IAAI,KAAK;AAC9C,gBAAAA,MAAK,SAAS,WAAW,SAAS,IAAI,KAAK;AAAA,cAC5C;AAAA,YACD;AAMA,YAAAA,MAAK,SAAS,UAAUA,MAAK,QAAQA,MAAK,QAAQ;AAOlD,gBAAIA,MAAK,SAAS,CAAC,KAAK,WAAWA,MAAK,KAAK,GAAG;AAC/C,cAAAA,MAAK,QAAQ;AAAA,YACd;AAEA,gBAAIA,MAAK,YAAY,CAAC,KAAK,WAAWA,MAAK,QAAQ,GAAG;AACrD,cAAAA,MAAK,WAAW;AAAA,YACjB;AAEA,gBAAIA,MAAK,YAAY,CAAC,KAAK,WAAWA,MAAK,QAAQ,GAAG;AACrD,cAAAA,MAAK,WAAW;AAAA,YACjB;AAQA,gBAAIA,MAAK,YAAYhB,cAAagB,MAAK,YAAY,MAAM;AACxD,cAAAA,MAAK,UAAUA,MAAK,QAAQ,SAAS,EAAE,YAAY;AAGnD,kBAAIA,MAAK,YAAY,QAAQ;AAC5B,gBAAAA,MAAK,UAAU,SAAS,IAAI,OAAO,eAAe,OAAO;AAAA,cAC1D;AAAA,YACD;AAEA,gBAAIA,MAAK,eAAehB,cAAagB,MAAK,eAAe,MAAM;AAC9D,cAAAA,MAAK,aAAaA,MAAK,WAAW,SAAS,EAAE,YAAY;AAAA,YAC1D;AAUA,YAAAA,MAAK,WAAYA,MAAK,YAAY,SAAS,MAAM,YAAY,CAAC,SAAS,MAAM;AAU7E,qBAAS,WAAWG,OAAM;AACzB,kBAAI,MAAM;AAOV,kBAAIH,MAAK,SAAS,kBAAkB,GAAG;AAEtC,oBAAI;AACH,kBAAAA,MAAK,MAAM,KAAK,UAAU,QAAQ;AAAA,gBACnC,SAAS,OAAO;AACf,6BAAW,WAAW;AACrB,0BAAM;AAAA,kBACP,GAAG,CAAC;AAAA,gBACL;AAAA,cACD;AAOA,kBAAI,WAAW,UAAU;AAExB,oBAAI,kBAAmB,OAAO,KAAKA,MAAK,IAAI,IAAI,SAAS,OACvD,eAAe,WAAWA,MAAK,MAAM,KAAK,GAC1C,uBACA,gCACA;AAIF,oBAAIA,MAAK,WAAW;AAEnB,sBAAI,KAAK,UAAUA,MAAK,SAAS,KAAK,KAAK,OAAOA,MAAK,SAAS,GAAG;AAElE,oBAAAA,MAAK,YAAYA,MAAK,UAAU,CAAC,KAAKA,MAAK;AAG3C,4CAAwBA,MAAK,UAAU,WAAW,eAAe;AAKjE,wCAAqB,wBAAwBlC,GAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,YAAY,CAAC,IAAK;AAAA,kBAEtG,OAAO;AACN,oBAAAkC,MAAK,YAAY;AAAA,kBAClB;AAAA,gBACD,OAAO;AAGN,0CAAwB,SAAS,MAAM,aAAa,SAAS,MAAM,mBAAmB,eAAe,CAAC;AAEtG,mDAAiC,SAAS,MAAM,aAAa,SAAS,MAAM,oBAAoB,oBAAoB,SAAS,QAAQ,OAAO,CAAC;AAI7I,sCAAoBlC,GAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,YAAY,CAAC,IAAI;AAAA,gBAC1E;AAGA,kCAAkB;AAAA,kBACjB,QAAQ;AAAA,oBACP,mBAAmB;AAAA,oBACnB,YAAY;AAAA,oBACZ,cAAc;AAAA,oBACd,UAAU;AAAA,oBACV,UAAU;AAAA,oBACV,QAAQkC,MAAK;AAAA,oBACb,YAAY;AAAA,sBACX,WAAWA,MAAK;AAAA,sBAChB,WAAW;AAAA,sBACX,gBAAgB;AAAA,oBACjB;AAAA,kBACD;AAAA,kBACA;AAAA,gBACD;AAEA,oBAAI,SAAS,OAAO;AACnB,0BAAQ,IAAI,8BAA8B,gBAAgB,QAAQ,OAAO;AAAA,gBAC1E;AAAA,cAaD,WAAW,WAAW,WAAW;AAChC,uBAAO,KAAK,OAAO;AAGnB,oBAAI,CAAC,MAAM;AACV;AAAA,gBACD;AAEA,oBAAI,CAAC,KAAK,iBAAiB;AAE1B,kBAAAlC,GAAE,QAAQ,SAASkC,MAAK,KAAK;AAE7B;AAAA,gBACD,OAAO;AAON,sBAAI,KAAK,KAAK,YAAY,QAAQ;AACjC,yBAAK,KAAK,UAAU;AAAA,kBACrB;AAEA,sBAAI,KAAK,KAAK,eAAe,UAAU;AACtC,yBAAK,KAAK,aAAa;AAAA,kBACxB;AAIA,uBAAK,KAAK,OAAO;AACjB,uBAAK,KAAK,QAAQ;AAClB,uBAAK,KAAK,WAAW;AAIrB,sBAAI,CAAC,QAAQ,QAAQ;AACpB,2BAAOA,MAAK;AAAA,kBACb;AAEA,sBAAI,CAAC,QAAQ,UAAU;AACtB,2BAAOA,MAAK;AAAA,kBACb;AAIA,kBAAAA,QAAOlC,GAAE,OAAO,CAAC,GAAG,KAAK,MAAMkC,KAAI;AAOnC,wCAAsBlC,GAAE,OAAO,MAAM,CAAC,GAAG,OAAO,KAAK,kBAAkB,IAAI;AAG3E,2BAAS,aAAa,qBAAqB;AAE1C,wBAAI,oBAAoB,eAAe,SAAS,KAAK,cAAc,WAAW;AAC7E,0BAAI,iBAAiB,oBAAoB,SAAS,EAAE;AAEpD,0CAAoB,SAAS,EAAE,aAAa,oBAAoB,SAAS,EAAE,eAAe,oBAAoB,SAAS,EAAE;AACzH,0CAAoB,SAAS,EAAE,WAAW;AAK1C,0BAAI,CAAC,KAAK,cAAc,OAAO,GAAG;AACjC,4CAAoB,SAAS,EAAE,SAASkC,MAAK;AAAA,sBAC9C;AAEA,0BAAI,SAAS,OAAO;AACnB,gCAAQ,IAAI,8BAA8B,YAAY,QAAQ,KAAK,UAAU,oBAAoB,SAAS,CAAC,GAAG,OAAO;AAAA,sBACtH;AAAA,oBACD;AAAA,kBACD;AAEA,oCAAkB;AAAA,gBACnB;AAAA,cAMD,WAAW,WAAW,SAAS;AAc9B,uBAAO,KAAK,OAAO;AAKnB,oBAAI,QAAQ,KAAK,mBAAmB,KAAK,gBAAgB,MAAM;AAC9D,wCAAsB,KAAK;AAAA,gBAC5B;AAWA,oBAAI,qBAAqB,SAASM,YAAW,qBAAqB;AACjE,sBAAIC,WAAUC,SAAQC;AAGtB,sBAAI,KAAK,WAAWH,UAAS,GAAG;AAC/B,oBAAAA,aAAYA,WAAU,KAAK,SAAS,mBAAmB,cAAc;AAAA,kBACtE;AAIA,sBAAI,KAAK,QAAQA,UAAS,GAAG;AAG5B,oBAAAC,YAAWD,WAAU,CAAC;AAItB,wBAAK,CAAC,KAAK,QAAQA,WAAU,CAAC,CAAC,KAAK,SAAS,KAAKA,WAAU,CAAC,CAAC,KAAM,KAAK,WAAWA,WAAU,CAAC,CAAC,KAAK,IAAI,MAAM,MAAM,KAAKA,WAAU,CAAC,CAAC,GAAG;AACxI,sBAAAG,cAAaH,WAAU,CAAC;AAAA,oBAEzB,WAAY,KAAK,SAASA,WAAU,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,MAAM,KAAKA,WAAU,CAAC,CAAC,KAAK,SAAS,QAAQA,WAAU,CAAC,CAAC,KAAM,KAAK,QAAQA,WAAU,CAAC,CAAC,GAAG;AAChJ,sBAAAE,UAAS,sBAAsBF,WAAU,CAAC,IAAI,UAAUA,WAAU,CAAC,GAAGN,MAAK,QAAQ;AAGnF,sBAAAS,cAAaH,WAAU,CAAC;AAAA,oBACzB,OAAO;AACN,sBAAAG,cAAaH,WAAU,CAAC,KAAKA,WAAU,CAAC;AAAA,oBACzC;AAAA,kBAED,OAAO;AACN,oBAAAC,YAAWD;AAAA,kBACZ;AAGA,sBAAI,CAAC,qBAAqB;AACzB,oBAAAE,UAASA,WAAUR,MAAK;AAAA,kBACzB;AAIA,sBAAI,KAAK,WAAWO,SAAQ,GAAG;AAC9B,oBAAAA,YAAWA,UAAS,KAAK,SAAS,mBAAmB,cAAc;AAAA,kBACpE;AAEA,sBAAI,KAAK,WAAWE,WAAU,GAAG;AAChC,oBAAAA,cAAaA,YAAW,KAAK,SAAS,mBAAmB,cAAc;AAAA,kBACxE;AAGA,yBAAO,CAACF,aAAY,GAAGC,SAAQC,WAAU;AAAA,gBAC1C;AAEA,oBAAI,mBAAmB,SAASX,WAAUQ,YAAW;AAEpD,sBAAI,eAAe,IAAI,MAAM,QAAQR,SAAQ,GAC3C,oBAAoB,OAEpBS,YAAWD,WAAU,CAAC,GACtBE,UAASF,WAAU,CAAC,GACpBG,cAAaH,WAAU,CAAC,GACxB;AAWF,uBAAK,CAAC,QAAQ,CAAC,KAAK,UAAU,iBAAiB,WAAW,IAAI,MAAM,YAAY,YAAY,EAAE,CAAC,MAAM,SAAS,IAAI,eAAe,WAAW,YAAY,MAAMtB,YAAW;AACxK,wBAAI,SAAS,OAAO;AACnB,8BAAQ,IAAI,eAAe,eAAe,qCAAqC;AAAA,oBAChF;AACA;AAAA,kBACD;AAKA,uBAAMgB,MAAK,YAAYhB,cAAagB,MAAK,YAAY,QAAQA,MAAK,YAAY,UAAYA,MAAK,eAAehB,cAAagB,MAAK,eAAe,aAAc,iBAAiB,KAAKF,SAAQ,KAAK,CAACW,eAAcF,cAAa,GAAG;AAC9N,oBAAAE,cAAa;AAAA,kBACd;AAKA,sBAAIT,MAAK,gBAAgB,uBAAuB,oBAAoBF,SAAQ,GAAG;AAC9E,wBAAIW,gBAAezB,YAAW;AAC7B,sBAAAyB,cAAa,oBAAoBX,SAAQ,EAAE,WAAW,oBAAoBA,SAAQ,EAAE;AAAA,oBACrF;AAKA,wCAAoB,KAAK,uBAAuB,YAAY;AAAA,kBAE7D,OAAO;AAEN,wBAAI,IAAI,MAAM,WAAWA,SAAQ,GAAG;AACnC,0BAAIW,gBAAezB,YAAW;AAC7B,4CAAoB,IAAI,iBAAiB,SAAS,YAAY;AAG9D,wBAAAyB,cAAa,IAAI,iBAAiB,SAASX,WAAU,iBAAiB;AAAA,sBAKvE,OAAO;AAEN,4CAAoB,IAAI,MAAM,UAAU,YAAY,EAAE,CAAC;AAAA,sBACxD;AAAA,oBAED,WAAWW,gBAAezB,YAAW;AACpC,sBAAAyB,cAAa,IAAI,iBAAiB,SAASX,SAAQ;AAAA,oBACpD;AAAA,kBACD;AAMA,sBAAI,gBACF,kBACA,oBACA,WAAW;AAGb,sBAAI,gBAAgB,SAASA,WAAU,OAAO;AAC7C,wBAAI,UACF;AAEF,oCAAgB,SAAS,KACtB,SAAS,EACT,YAAY,EAEZ,QAAQ,YAAY,SAASJ,QAAO;AAEpC,iCAAWA;AAGX,6BAAO;AAAA,oBACR,CAAC;AAGH,wBAAI,CAAC,UAAU;AACd,iCAAW,IAAI,OAAO,YAAYI,SAAQ;AAAA,oBAC3C;AAEA,2BAAO,CAAC,cAAc,QAAQ;AAAA,kBAC/B;AAEA,sBAAIW,gBAAeF,aAAY,KAAK,SAASE,WAAU,KAAK,KAAK,SAASF,SAAQ,GAAG;AACpF,8BAAU;AACV,wBAAI,SAAS,GACX,OAAO,GACP,SAAS,CAAC,GACV,OAAO,CAAC,GACR,SAAS,GACT,QAAQ,GACR,SAAS;AAEX,oBAAAE,cAAa,IAAI,MAAM,UAAUA,WAAU;AAC3C,oBAAAF,YAAW,IAAI,MAAM,UAAUA,SAAQ;AACvC,2BAAO,SAASE,YAAW,UAAU,OAAOF,UAAS,QAAQ;AAC5D,0BAAI,SAASE,YAAW,MAAM,GAC5B,OAAOF,UAAS,IAAI;AAEtB,0BAAI,UAAU,KAAK,MAAM,KAAK,UAAU,KAAK,IAAI,GAAG;AACnD,4BAAI,SAAS,QACX,OAAO,MACP,WAAW,KACX,SAAS;AAEX,+BAAO,EAAE,SAASE,YAAW,QAAQ;AACpC,mCAASA,YAAW,MAAM;AAC1B,8BAAI,WAAW,UAAU;AACxB,uCAAW;AAAA,0BACZ,WAAW,CAAC,KAAK,KAAK,MAAM,GAAG;AAC9B;AAAA,0BACD;AACA,oCAAU;AAAA,wBACX;AACA,+BAAO,EAAE,OAAOF,UAAS,QAAQ;AAChC,iCAAOA,UAAS,IAAI;AACpB,8BAAI,SAAS,QAAQ;AACpB,qCAAS;AAAA,0BACV,WAAW,CAAC,KAAK,KAAK,IAAI,GAAG;AAC5B;AAAA,0BACD;AACA,kCAAQ;AAAA,wBACT;AACA,4BAAI,SAAS,IAAI,MAAM,QAAQE,aAAY,MAAM,GAC/C,OAAO,IAAI,MAAM,QAAQF,WAAU,IAAI;AAEzC,kCAAU,OAAO;AACjB,gCAAQ,KAAK;AACb,4BAAI,WAAW,MAAM;AAEpB,8BAAI,WAAW,MAAM;AAEpB,uCAAW,SAAS;AAAA,0BACrB,OAAO;AAEN,uCAAW,MAAM,OAAO,UAAU,QAAQ,MAAM,MAAM,MAAM;AAC5D,mCAAO,KAAK,WAAW,MAAM,CAAC;AAC9B,iCAAK,KAAK,WAAW,IAAI,CAAC;AAAA,0BAC3B;AAAA,wBACD,OAAO;AAEN,8BAAI,SAAS,WAAW,MAAM,GAC5B,OAAO,WAAW,IAAI;AAExB,sCAAY,SAAS,IAAI,SAAS,MAAM,OACnC,SAAS,MAAM,OAAO,UAAU,QAAQ,MAAM,MAAM,MAAM,OAAO,SAClE,SACC,OAAO,OAAO,OAAO,UAAU,SAAS,IAAI,OAAO,QAAQ,MAAM,MAAM,MAAM,OAAO,OACrF;AACJ,8BAAI,QAAQ;AACX,mCAAO,KAAK,MAAM;AAClB,iCAAK,KAAK,CAAC;AAAA,0BACZ;AACA,8BAAI,MAAM;AACT,mCAAO,KAAK,CAAC;AACb,iCAAK,KAAK,IAAI;AAAA,0BACf;AAAA,wBACD;AAAA,sBACD,WAAW,WAAW,MAAM;AAC3B,mCAAW;AACX;AACA;AAEA,4BAAI,WAAW,KAAK,WAAW,OAC1B,WAAW,KAAK,WAAW,OAC3B,WAAW,KAAK,WAAW,OAC3B,WAAW,KAAK,WAAW,OAC3B,UAAU,KAAK,WAAW,KAC3B;AACH;AAAA,wBACD,WAAY,UAAU,SAAS,KAC1B,UAAU,KAAK,WAAW,OAAO,EAAE,SAAS,GAAG;AACnD,mCAAS;AAAA,wBACV;AAEA,4BAAI,UAAU,KAAK,WAAW,OACzB,UAAU,KAAK,WAAW,OAC1B,UAAU,KAAK,WAAW,OAC1B,UAAU,KAAK,WAAW,OAC1B,SAAS,KAAK,WAAW,KAC1B;AACH,8BAAI,UAAU,KAAK,WAAW,KAAK;AAClC,qCAAS;AAAA,0BACV;AACA;AAAA,wBACD,WAAW,UAAU,WAAW,KAAK;AACpC,8BAAI,EAAE,SAAS,GAAG;AACjB,oCAAQ,SAAS;AAAA,0BAClB;AAAA,wBACD,WAAY,UAAU,SAAS,SAAS,IAAI,MACvC,UAAU,SAAS,IAAI,MAAM,WAAW,OAAO,EAAE,SAAS,SAAS,IAAI,IAAI;AAC/E,kCAAQ,SAAS;AAAA,wBAClB;AAAA,sBACD,OAAO;AACN,iCAAS;AAET;AAAA,sBACD;AAAA,oBACD;AACA,wBAAI,WAAWE,YAAW,UAAU,SAASF,UAAS,QAAQ;AAC7D,0BAAI,SAAS,OAAO;AACnB,gCAAQ,MAAM,mDAAoDA,YAAW,SAAWE,cAAa,IAAK;AAAA,sBAC3G;AACA,gCAAUzB;AAAA,oBACX;AACA,wBAAI,SAAS;AACZ,0BAAI,OAAO,QAAQ;AAClB,4BAAI,SAAS,OAAO;AACnB,kCAAQ,IAAI,oBAAqB,UAAU,SAAU,QAAQ,MAAM,MAAMyB,cAAa,MAAMF,YAAW,GAAG;AAAA,wBAC3G;AACA,wBAAAE,cAAa;AACb,wBAAAF,YAAW;AACX,2CAAmB,qBAAqB;AAAA,sBACzC,OAAO;AACN,kCAAUvB;AAAA,sBACX;AAAA,oBACD;AAAA,kBACD;AAEA,sBAAI,CAAC,SAAS;AAEb,qCAAiB,cAAcc,WAAUW,WAAU;AACnD,oBAAAA,cAAa,eAAe,CAAC;AAC7B,yCAAqB,eAAe,CAAC;AAGrC,qCAAiB,cAAcX,WAAUS,SAAQ;AACjD,oBAAAA,YAAW,eAAe,CAAC,EAAE,QAAQ,eAAe,SAASb,QAAO,UAAU;AAC7E,iCAAW;AAGX,6BAAO;AAAA,oBACR,CAAC;AACD,uCAAmB,eAAe,CAAC;AAGnC,oBAAAe,cAAa,WAAWA,WAAU,KAAK;AACvC,oBAAAF,YAAW,WAAWA,SAAQ,KAAK;AAOnC,wBAAI,qBAAqB,KAAK;AAG7B,0BAAI,0BAA0B,KAAKT,SAAQ,GAAG;AAE7C,wBAAAS,YAAWA,YAAW;AACtB,2CAAmB;AAAA,sBAEpB,WAAW,SAAS,KAAKT,SAAQ,GAAG;AACnC,wBAAAS,YAAWA,YAAW;AACtB,2CAAmB;AAAA,sBAEpB,WAAW,qBAAqB,KAAKT,SAAQ,GAAG;AAC/C,wBAAAS,YAAYA,YAAW,MAAO;AAC9B,2CAAmB;AAAA,sBACpB;AAAA,oBACD;AAAA,kBACD;AAkBA,sBAAI,sBAAsB,WAAW;AAUpC,wBAAI,sBAAsB;AAAA,sBACzB,UAAU,QAAQ,cAAcxB,UAAS;AAAA;AAAA,sBACzC,UAAU,IAAI,iBAAiB,SAAS,UAAU;AAAA;AAAA,sBAClD,UAAU,IAAI,iBAAiB,SAAS,UAAU;AAAA;AAAA,oBACnD,GAEE,mBAAqB,oBAAoB,aAAa,uBAAuB,gBAAkB,oBAAoB,aAAa,uBAAuB,YAEvJ,cAAe,oBAAoB,aAAa,uBAAuB;AAGzE,2CAAuB,aAAa,oBAAoB;AACxD,2CAAuB,eAAe,oBAAoB;AAC1D,2CAAuB,eAAe,oBAAoB;AAQ1D,wBAAI,cAAc,KAChB,aAAa,CAAC;AAEhB,wBAAI,CAAC,eAAe,CAAC,kBAAkB;AACtC,0BAAI,QAAQ,QAAQ,KAAK,QAAQA,UAAS,gBAAgB,8BAA8B,MAAM,IAAIA,UAAS,cAAc,KAAK;AAE9H,+BAAS,KAAK,KAAK;AACnB,0CAAoB,SAAS,YAAY,KAAK;AAK9C,sBAAAjB,GAAE,KAAK,CAAC,YAAY,aAAa,WAAW,GAAG,SAASI,IAAG4B,WAAU;AACpE,iCAAS,IAAI,iBAAiB,OAAOA,WAAU,QAAQ;AAAA,sBACxD,CAAC;AACD,+BAAS,IAAI,iBAAiB,OAAO,YAAY,oBAAoB,QAAQ;AAC7E,+BAAS,IAAI,iBAAiB,OAAO,YAAY,oBAAoB,QAAQ;AAC7E,+BAAS,IAAI,iBAAiB,OAAO,aAAa,aAAa;AAG/D,sBAAAhC,GAAE,KAAK,CAAC,YAAY,YAAY,SAAS,aAAa,aAAa,QAAQ,GAAG,SAASI,IAAG4B,WAAU;AACnG,iCAAS,IAAI,iBAAiB,OAAOA,WAAU,cAAc,GAAG;AAAA,sBACjE,CAAC;AAED,+BAAS,IAAI,iBAAiB,OAAO,eAAe,cAAc,IAAI;AAGtE,iCAAW,mBAAmB,uBAAuB,wBAAwB,WAAW,IAAI,iBAAiB,OAAO,SAAS,MAAM,IAAI,CAAC,KAAK,KAAK;AAClJ,iCAAW,oBAAoB,uBAAuB,yBAAyB,WAAW,IAAI,iBAAiB,OAAO,UAAU,MAAM,IAAI,CAAC,KAAK,KAAK;AACrJ,iCAAW,SAAS,uBAAuB,cAAc,WAAW,IAAI,iBAAiB,OAAO,aAAa,CAAC,KAAK,KAAK;AAExH,0CAAoB,SAAS,YAAY,KAAK;AAAA,oBAC/C,OAAO;AACN,iCAAW,SAAS,uBAAuB;AAC3C,iCAAW,mBAAmB,uBAAuB;AACrD,iCAAW,oBAAoB,uBAAuB;AAAA,oBACvD;AAUA,wBAAI,uBAAuB,YAAY,MAAM;AAE5C,6CAAuB,UAAU,WAAW,IAAI,iBAAiBf,UAAS,MAAM,UAAU,CAAC,KAAK;AAAA,oBACjG;AAGA,wBAAI,uBAAuB,WAAW,MAAM;AAC3C,6CAAuB,SAAS,WAAWlB,QAAO,UAAU,IAAI;AAChE,6CAAuB,SAAS,WAAWA,QAAO,WAAW,IAAI;AAAA,oBAClE;AAEA,+BAAW,UAAU,uBAAuB;AAC5C,+BAAW,SAAS,uBAAuB;AAC3C,+BAAW,SAAS,uBAAuB;AAE3C,wBAAI,SAAS,SAAS,GAAG;AACxB,8BAAQ,IAAI,kBAAkB,KAAK,UAAU,UAAU,GAAG,OAAO;AAAA,oBAClE;AACA,2BAAO;AAAA,kBACR;AAOA,sBAAI,QAAQ,KAAK,QAAQ,GAAG;AAC3B,uCAAmB;AAAA,kBAMpB,WAAY,uBAAuB,oBAAqB4C,gBAAe,GAAG;AAKzE,wBAAIF,cAAa,GAAG;AACnB,yCAAmB;AAAA,oBACpB,OAAO;AAGN,kDAA4B,6BAA6B,oBAAoB;AAI7E,0BAAI,OAAQ,oDAAoD,KAAKT,SAAQ,KAAK,KAAK,KAAKA,SAAQ,KAAKA,cAAa,MAAO,MAAM;AAInI,8BAAQ,oBAAoB;AAAA,wBAC3B,KAAK;AAIJ,0BAAAW,eAAe,SAAS,MAAM,0BAA0B,mBAAmB,0BAA0B;AACrG;AAAA,wBAED,KAAK;AAEJ;AAAA,wBAED;AACC,0BAAAA,eAAc,0BAA0B,qBAAqB,MAAM;AAAA,sBACrE;AAGA,8BAAQ,kBAAkB;AAAA,wBACzB,KAAK;AACJ,0BAAAA,eAAc,KAAK,SAAS,MAAM,0BAA0B,mBAAmB,0BAA0B;AACzG;AAAA,wBAED,KAAK;AAEJ;AAAA,wBAED;AACC,0BAAAA,eAAc,IAAI,0BAA0B,mBAAmB,MAAM;AAAA,sBACvE;AAAA,oBACD;AAAA,kBACD;AAUA,0BAAQ,UAAU;AAAA,oBACjB,KAAK;AACJ,sBAAAF,YAAWE,cAAaF;AACxB;AAAA,oBAED,KAAK;AACJ,sBAAAA,YAAWE,cAAaF;AACxB;AAAA,oBAED,KAAK;AACJ,sBAAAA,YAAWE,cAAaF;AACxB;AAAA,oBAED,KAAK;AACJ,sBAAAA,YAAWE,cAAaF;AACxB;AAAA,kBACF;AAOA,kCAAgBT,SAAQ,IAAI;AAAA,oBAC3B;AAAA,oBACA,YAAYW;AAAA,oBACZ,cAAcA;AAAA,oBACd,UAAUF;AAAA,oBACV,UAAU;AAAA,oBACV,QAAQC;AAAA,kBACT;AACA,sBAAI,SAAS;AACZ,oCAAgBV,SAAQ,EAAE,UAAU;AAAA,kBACrC;AAEA,sBAAI,SAAS,OAAO;AACnB,4BAAQ,IAAI,sBAAsBA,YAAW,QAAQ,KAAK,UAAU,gBAAgBA,SAAQ,CAAC,GAAG,OAAO;AAAA,kBACxG;AAAA,gBACD;AAGA,yBAAS,YAAY,eAAe;AAEnC,sBAAI,CAAC,cAAc,eAAe,QAAQ,GAAG;AAC5C;AAAA,kBACD;AAGA,sBAAI,eAAe,IAAI,MAAM,UAAU,QAAQ,GAC7C,YAAY,mBAAmB,cAAc,QAAQ,CAAC;AAIxD,sBAAI,SAAS,IAAI,MAAM,QAAQ,YAAY,GAAG;AAE7C,wBAAI,WAAW,UAAU,CAAC,GACxB,SAAS,UAAU,CAAC,GACpB,aAAa,UAAU,CAAC;AAE1B,wBAAI,IAAI,MAAM,MAAM,KAAK,QAAQ,GAAG;AAEnC,0BAAI,kBAAkB,CAAC,OAAO,SAAS,MAAM,GAC3C,cAAc,IAAI,OAAO,SAAS,QAAQ,GAC1C,gBAAgB,aAAa,IAAI,OAAO,SAAS,UAAU,IAAId;AAGjE,+BAASd,KAAI,GAAGA,KAAI,gBAAgB,QAAQA,MAAK;AAChD,4BAAI,YAAY,CAAC,YAAYA,EAAC,CAAC;AAE/B,4BAAI,QAAQ;AACX,oCAAU,KAAK,MAAM;AAAA,wBACtB;AAEA,4BAAI,kBAAkBc,YAAW;AAChC,oCAAU,KAAK,cAAcd,EAAC,CAAC;AAAA,wBAChC;AAEA,yCAAiB,eAAe,gBAAgBA,EAAC,GAAG,SAAS;AAAA,sBAC9D;AAEA;AAAA,oBACD;AAAA,kBACD;AACA,mCAAiB,cAAc,SAAS;AAAA,gBACzC;AAGA,gCAAgB,UAAU;AAAA,cAC3B;AAQA,kBAAI,gBAAgB,SAAS;AAE5B,oBAAI,OAAO,SAAS,SAAS,oBAAoB;AAGjD,qBAAK,KAAK,eAAe;AAEzB,uBAAO,KAAK,OAAO;AAEnB,oBAAI,MAAM;AAET,sBAAI8B,MAAK,UAAU,IAAI;AAEtB,yBAAK,kBAAkB;AACvB,yBAAK,OAAOA;AAAA,kBACb;AAGA,uBAAK,cAAc;AAAA,gBACpB;AAIA,oBAAI,kBAAkB,iBAAiB,GAAG;AAGzC,2BAAS,MAAM,MAAM,KAAK,CAAC,MAAM,UAAUA,OAAM,MAAM,YAAY,UAAU,MAAM,CAAC,CAAC;AAGrF,sBAAI,SAAS,MAAM,cAAc,OAAO;AACvC,6BAAS,MAAM,YAAY;AAG3B,yBAAK;AAAA,kBACN;AAAA,gBACD,OAAO;AACN;AAAA,gBACD;AAAA,cACD;AAAA,YACD;AAGA,gBAAIA,MAAK,UAAU,OAAO;AAGzB,kBAAIA,MAAK,OAAO;AAGf,oBAAI,YAAY,SAAS,MAAM,gBAAgB;AAC/C,yBAAS,MAAM,gBAAgB,SAAS,IAAI;AAE5C,oBAAI,gBAAiB,0BAASZ,QAAO;AACpC,yBAAO,WAAW;AAEjB,6BAAS,MAAM,gBAAgBA,MAAK,IAAI;AAGxC,+BAAW;AAAA,kBACZ;AAAA,gBACD,GAAG,SAAS;AAEZ,qBAAK,OAAO,EAAE,cAAc,oBAAI,KAAK,GAAG,QAAQ;AAChD,qBAAK,OAAO,EAAE,QAAQ,WAAWY,MAAK,KAAK;AAC3C,qBAAK,OAAO,EAAE,aAAa;AAAA,kBAC1B,YAAY,WAAW,YAAY,WAAWA,MAAK,KAAK,CAAC;AAAA,kBACzD,MAAM;AAAA,gBACP;AAAA,cACD,OAAO;AACN,2BAAW;AAAA,cACZ;AAAA,YAGD,OAAO;AACN,cAAAlC,GAAE,MAAM,SAASkC,MAAK,OAAO,SAASG,OAAM,YAAY;AAGvD,oBAAI,eAAe,MAAM;AACxB,sBAAI,YAAY,SAAS;AACxB,gCAAY,SAAS,QAAQ;AAAA,kBAC9B;AAGA,yBAAO;AAAA,gBACR;AAIA,yBAAS,yBAAyB;AAElC,2BAAWA,KAAI;AAAA,cAChB,CAAC;AAAA,YACF;AAeA,iBAAKH,MAAK,UAAU,MAAMA,MAAK,UAAU,SAASlC,GAAE,MAAM,OAAO,EAAE,CAAC,MAAM,cAAc;AACvF,cAAAA,GAAE,QAAQ,OAAO;AAAA,YAClB;AAAA,UACD;AAQA,UAAAA,GAAE,KAAK,UAAU,SAASI,IAAG,SAAS;AAErC,gBAAI,KAAK,OAAO,OAAO,GAAG;AACzB,cAAAgC,gBAAe,SAAShC,EAAC;AAAA,YAC1B;AAAA,UACD,CAAC;AAWD,UAAA8B,QAAOlC,GAAE,OAAO,CAAC,GAAG,SAAS,UAAU,OAAO;AAC9C,UAAAkC,MAAK,OAAO,SAASA,MAAK,MAAM,EAAE;AAClC,cAAI,oBAAqBA,MAAK,OAAO,IAAK;AAE1C,cAAIA,MAAK,MAAM;AAGd,qBAAS,IAAI,GAAG,IAAI,mBAAmB,KAAK;AAI3C,kBAAI,iBAAiB;AAAA,gBACpB,OAAOA,MAAK;AAAA,gBACZ,UAAUA,MAAK;AAAA,cAChB;AAIA,kBAAI,MAAM,oBAAoB,GAAG;AAChC,+BAAe,UAAUA,MAAK;AAC9B,+BAAe,aAAaA,MAAK;AACjC,+BAAe,WAAWA,MAAK;AAAA,cAChC;AAEA,sBAAQ,UAAU,WAAW,cAAc;AAAA,YAC5C;AAAA,UACD;AAOA,iBAAO,SAAS;AAAA,QACjB;AAGA,mBAAWlC,GAAE,OAAO,SAAS,QAAQ;AAErC,iBAAS,UAAU;AAOnB,YAAI,SAASD,QAAO,yBAAyB;AAM7C,YAAI,CAAC,SAAS,MAAM,YAAYkB,UAAS,WAAWC,YAAW;AAC9D,cAAI,eAAe,WAAW;AAE7B,gBAAID,UAAS,QAAQ;AACpB,uBAAS,SAAS,UAAU;AAE3B,uBAAO,WAAW,WAAW;AAC5B,2BAAS,IAAI;AAAA,gBACd,GAAG,EAAE;AAAA,cACN;AAGA,mBAAK;AAAA,YACN,OAAO;AACN,uBAASlB,QAAO,yBAAyB;AAAA,YAC1C;AAAA,UACD;AAGA,uBAAa;AAGb,UAAAkB,UAAS,iBAAiB,oBAAoB,YAAY;AAAA,QAC3D;AAOA,iBAAS,KAAK,WAAW;AAOxB,cAAI,WAAW;AAId,gBAAI,cAAc,SAAS,aAAa,cAAc,OAAO,YAAYG,aAAY,IAAI;AAMzF,gBAAI,cAAc,SAAS,MAAM,MAAM;AAKvC,gBAAI,cAAc,KAAO;AACxB,uBAAS,MAAM,QAAQ,mBAAmB,SAAS,MAAM,KAAK;AAC9D,4BAAc,SAAS,MAAM,MAAM;AAAA,YACpC;AAGA,qBAAS,IAAI,GAAG,IAAI,aAAa,KAAK;AAErC,kBAAI,CAAC,SAAS,MAAM,MAAM,CAAC,GAAG;AAC7B;AAAA,cACD;AAMA,kBAAI,gBAAgB,SAAS,MAAM,MAAM,CAAC,GACxC,OAAO,cAAc,CAAC,GACtBc,QAAO,cAAc,CAAC,GACtB,YAAY,cAAc,CAAC,GAC3B,YAAY,CAAC,WACb,kBAAkB,MAClB,cAAc,cAAc,CAAC,GAC7B,uBAAuB,cAAc,CAAC;AAYxC,kBAAI,CAAC,WAAW;AACf,4BAAY,SAAS,MAAM,MAAM,CAAC,EAAE,CAAC,IAAI,cAAc;AAAA,cACxD;AAGA,kBAAI,aAAa;AAChB,oBAAI,YAAY,WAAW,MAAM;AAEhC,8BAAY,cAAc,CAAC,IAAI,KAAK,MAAM,cAAc,uBAAuB,EAAE;AAGjF,gCAAc,CAAC,IAAI;AAAA,gBACpB,OAAO;AACN;AAAA,gBACD;AAAA,cACD;AAEA,qCAAuB,cAAc,CAAC,IAAI,cAAc;AAKxD,kBAAI,kBAAkB,KAAK,IAAK,uBAAwBA,MAAK,UAAU,CAAC;AAOxE,uBAAS,IAAI,GAAG,aAAa,KAAK,QAAQ,IAAI,YAAY,KAAK;AAC9D,oBAAI,kBAAkB,KAAK,CAAC,GAC1B,UAAU,gBAAgB;AAI5B,oBAAI,CAAC,KAAK,OAAO,GAAG;AACnB;AAAA,gBACD;AAEA,oBAAI,0BAA0B;AAQ9B,oBAAIA,MAAK,YAAYhB,cAAagB,MAAK,YAAY,QAAQA,MAAK,YAAY,QAAQ;AACnF,sBAAIA,MAAK,YAAY,QAAQ;AAC5B,wBAAI,aAAa,CAAC,eAAe,YAAY,eAAe,cAAc;AAE1E,oBAAAlC,GAAE,KAAK,YAAY,SAASI,IAAG,WAAW;AACzC,0BAAI,iBAAiB,SAAS,WAAW,SAAS;AAAA,oBACnD,CAAC;AAAA,kBACF;AAEA,sBAAI,iBAAiB,SAAS,WAAW8B,MAAK,OAAO;AAAA,gBACtD;AAGA,oBAAIA,MAAK,eAAehB,cAAagB,MAAK,eAAe,UAAU;AAClE,sBAAI,iBAAiB,SAAS,cAAcA,MAAK,UAAU;AAAA,gBAC5D;AAOA,yBAAS,YAAY,iBAAiB;AAErC,sBAAI,gBAAgB,eAAe,QAAQ,KAAK,aAAa,WAAW;AACvE,wBAAI,QAAQ,gBAAgB,QAAQ,GAClC,cAGA,SAAS,KAAK,SAAS,MAAM,MAAM,IAAI,SAAS,QAAQ,MAAM,MAAM,IAAI,MAAM;AAMhF,wBAAI,KAAK,SAAS,MAAM,OAAO,GAAG;AACjC,0BAAI,iBAAiB,oBAAoB,IACvC,SAAS,IAAIZ,QAAO,OAAO;AAC1B,4BAAI,SAAS,MAAM,SAASA,MAAK;AAEjC,+BAAO,QAAQ,KAAK,MAAM,MAAM,IAAI;AAAA,sBACrC,IACA,SAAS,IAAIA,QAAO,OAAO;AAC1B,4BAAI,aAAa,MAAM,WAAWA,MAAK,GACrCsB,cAAa,MAAM,SAAStB,MAAK,IAAI,YACrC,SAAS,aAAcsB,cAAa,OAAO,iBAAiBV,OAAMU,WAAU;AAE9E,+BAAO,QAAQ,KAAK,MAAM,MAAM,IAAI;AAAA,sBACrC;AAEF,qCAAe,MAAM,QAAQ,QAAQ,gBAAgB,cAAc;AAAA,oBACpE,WAAW,oBAAoB,GAAG;AAGjC,qCAAe,MAAM;AAAA,oBACtB,OAAO;AAEN,0BAAI,aAAa,MAAM,WAAW,MAAM;AAExC,qCAAe,MAAM,aAAc,aAAa,OAAO,iBAAiBV,OAAM,UAAU;AAAA,oBAEzF;AACA,wBAAI,CAAC,aAAc,iBAAiB,MAAM,cAAe;AACxD;AAAA,oBACD;AAEA,0BAAM,eAAe;AAIrB,wBAAI,aAAa,SAAS;AACzB,wCAAkB;AAAA,oBACnB,OAAO;AAIN,0BAAI;AAOJ,0BAAI,IAAI,MAAM,WAAW,QAAQ,GAAG;AACnC,mCAAW,IAAI,MAAM,QAAQ,QAAQ;AAErC,4BAAI,yBAAyB,KAAK,OAAO,EAAE,uBAAuB,QAAQ;AAE1E,4BAAI,wBAAwB;AAC3B,gCAAM,oBAAoB;AAAA,wBAC3B;AAAA,sBACD;AAQA,0BAAI,kBAAkB,IAAI;AAAA,wBAAiB;AAAA;AAAA,wBACzC;AAAA,wBACA,MAAM,gBAAgB,KAAK,KAAK,WAAW,YAAY,MAAM,IAAI,KAAK,MAAM;AAAA,wBAC5E,MAAM;AAAA,wBACN,MAAM;AAAA,sBAAU;AAOlB,0BAAI,IAAI,MAAM,WAAW,QAAQ,GAAG;AAEnC,4BAAI,IAAI,eAAe,WAAW,QAAQ,GAAG;AAC5C,+BAAK,OAAO,EAAE,uBAAuB,QAAQ,IAAI,IAAI,eAAe,WAAW,QAAQ,EAAE,WAAW,MAAM,gBAAgB,CAAC,CAAC;AAAA,wBAC7H,OAAO;AACN,+BAAK,OAAO,EAAE,uBAAuB,QAAQ,IAAI,gBAAgB,CAAC;AAAA,wBACnE;AAAA,sBACD;AAOA,0BAAI,gBAAgB,CAAC,MAAM,aAAa;AACvC,kDAA0B;AAAA,sBAC3B;AAAA,oBAED;AAAA,kBACD;AAAA,gBACD;AAQA,oBAAIA,MAAK,UAAU;AAElB,sBAAI,KAAK,OAAO,EAAE,eAAe,gBAAgBhB,YAAW;AAE3D,yBAAK,OAAO,EAAE,eAAe,cAAc;AAE3C,8CAA0B;AAAA,kBAC3B;AAAA,gBACD;AAEA,oBAAI,yBAAyB;AAC5B,sBAAI,oBAAoB,OAAO;AAAA,gBAChC;AAAA,cACD;AAIA,kBAAIgB,MAAK,YAAYhB,cAAagB,MAAK,YAAY,QAAQ;AAC1D,yBAAS,MAAM,MAAM,CAAC,EAAE,CAAC,EAAE,UAAU;AAAA,cACtC;AACA,kBAAIA,MAAK,eAAehB,cAAagB,MAAK,eAAe,UAAU;AAClE,yBAAS,MAAM,MAAM,CAAC,EAAE,CAAC,EAAE,aAAa;AAAA,cACzC;AAGA,kBAAIA,MAAK,UAAU;AAClB,gBAAAA,MAAK,SAAS;AAAA,kBAAK,cAAc,CAAC;AAAA,kBAChC,cAAc,CAAC;AAAA,kBACf;AAAA,kBACA,KAAK,IAAI,GAAI,YAAYA,MAAK,WAAY,WAAW;AAAA,kBACrD;AAAA,kBACA;AAAA,gBAAe;AAAA,cAClB;AAGA,kBAAI,oBAAoB,GAAG;AAC1B,6BAAa,CAAC;AAAA,cACf;AAAA,YACD;AAAA,UACD;AAGA,cAAI,SAAS,MAAM,WAAW;AAC7B,mBAAO,IAAI;AAAA,UACZ;AAAA,QACD;AAOA,iBAAS,aAAa,WAAW,WAAW;AAE3C,cAAI,CAAC,SAAS,MAAM,MAAM,SAAS,GAAG;AACrC,mBAAO;AAAA,UACR;AAGA,cAAI,OAAO,SAAS,MAAM,MAAM,SAAS,EAAE,CAAC,GAC1C,WAAW,SAAS,MAAM,MAAM,SAAS,EAAE,CAAC,GAC5CA,QAAO,SAAS,MAAM,MAAM,SAAS,EAAE,CAAC,GACxC,WAAW,SAAS,MAAM,MAAM,SAAS,EAAE,CAAC;AAE9C,cAAI,sBAAsB;AAM1B,mBAAS,IAAI,GAAG,aAAa,KAAK,QAAQ,IAAI,YAAY,KAAK;AAC9D,gBAAI,UAAU,KAAK,CAAC,EAAE;AAKtB,gBAAI,CAAC,aAAa,CAACA,MAAK,MAAM;AAC7B,kBAAIA,MAAK,YAAY,QAAQ;AAC5B,oBAAI,iBAAiB,SAAS,WAAWA,MAAK,OAAO;AAAA,cACtD;AAEA,kBAAIA,MAAK,eAAe,UAAU;AACjC,oBAAI,iBAAiB,SAAS,cAAcA,MAAK,UAAU;AAAA,cAC5D;AAAA,YACD;AAOA,gBAAI,OAAO,KAAK,OAAO;AAEvB,gBAAIA,MAAK,SAAS,SAASlC,GAAE,MAAM,OAAO,EAAE,CAAC,MAAMkB,cAAa,CAAC,4BAA4B,KAAKlB,GAAE,MAAM,OAAO,EAAE,CAAC,CAAC,IAAI;AAExH,kBAAI,MAAM;AACT,qBAAK,cAAc;AAEnB,qBAAK,yBAAyB,CAAC;AAE/B,oBAAI,4BAA4B;AAEhC,gBAAAA,GAAE,KAAK,IAAI,MAAM,cAAc,SAASI,IAAG,eAAe;AACzD,sBAAI,eAAe,SAAS,KAAK,aAAa,IAAI,IAAI,GACpD,eAAe,KAAK,eAAe,aAAa;AAElD,sBAAI,KAAK,eAAe,aAAa,MAAMc,cAAa,IAAI,OAAO,SAAS,eAAe,MAAM,EAAE,KAAK,YAAY,GAAG;AACtH,gDAA4B;AAE5B,2BAAO,KAAK,eAAe,aAAa;AAAA,kBACzC;AAAA,gBACD,CAAC;AAGD,oBAAIgB,MAAK,UAAU;AAClB,8CAA4B;AAC5B,yBAAO,KAAK,eAAe;AAAA,gBAC5B;AAGA,oBAAI,2BAA2B;AAC9B,sBAAI,oBAAoB,OAAO;AAAA,gBAChC;AAGA,oBAAI,OAAO,YAAY,SAAS,oBAAoB;AAAA,cACrD;AAAA,YACD;AAQA,gBAAI,CAAC,aAAaA,MAAK,YAAY,CAACA,MAAK,QAAS,MAAM,aAAa,GAAI;AAExE,kBAAI;AACH,gBAAAA,MAAK,SAAS,KAAK,UAAU,QAAQ;AAAA,cACtC,SAAS,OAAO;AACf,2BAAW,WAAW;AACrB,wBAAM;AAAA,gBACP,GAAG,CAAC;AAAA,cACL;AAAA,YACD;AAOA,gBAAI,YAAYA,MAAK,SAAS,MAAM;AACnC,uBAAS,QAAQ;AAAA,YAClB;AAMA,gBAAI,QAAQA,MAAK,SAAS,QAAQ,CAAC,WAAW;AAG7C,cAAAlC,GAAE,KAAK,KAAK,iBAAiB,SAAS,cAAc,gBAAgB;AACnE,oBAAI,UAAU,KAAK,YAAY,MAAO,WAAW,eAAe,UAAU,IAAI,WAAW,eAAe,QAAQ,KAAK,QAAQ,GAAI;AAChI,sBAAI,gBAAgB,eAAe;AAEnC,iCAAe,aAAa,eAAe;AAC3C,iCAAe,WAAW;AAAA,gBAC3B;AAEA,oBAAI,sBAAsB,KAAK,YAAY,KAAK,WAAW,eAAe,QAAQ,MAAM,OAAO,eAAe,aAAa,KAAK;AAC/H,iCAAe,WAAW;AAC1B,iCAAe,aAAa;AAAA,gBAC7B;AAAA,cACD,CAAC;AAED,uBAAS,SAAS,WAAW,EAAC,MAAM,MAAM,OAAOkC,MAAK,MAAK,CAAC;AAAA,YAC7D;AASA,gBAAIA,MAAK,UAAU,OAAO;AACzB,cAAAlC,GAAE,QAAQ,SAASkC,MAAK,KAAK;AAAA,YAC9B;AAAA,UACD;AAQA,mBAAS,MAAM,MAAM,SAAS,IAAI;AAIlC,mBAAS,IAAI,GAAG,cAAc,SAAS,MAAM,MAAM,QAAQ,IAAI,aAAa,KAAK;AAChF,gBAAI,SAAS,MAAM,MAAM,CAAC,MAAM,OAAO;AACtC,oCAAsB;AAEtB;AAAA,YACD;AAAA,UACD;AAEA,cAAI,wBAAwB,OAAO;AAElC,qBAAS,MAAM,YAAY;AAG3B,mBAAO,SAAS,MAAM;AACtB,qBAAS,MAAM,QAAQ,CAAC;AAAA,UACzB;AAAA,QACD;AAWA,QAAAlB,QAAO,WAAW;AAElB,YAAIA,YAAWjB,SAAQ;AAEtB,UAAAiB,QAAO,GAAG,WAAW;AAErB,UAAAA,QAAO,GAAG,SAAS,WAAW,SAAS;AAAA,QACxC;AAOA,QAAAhB,GAAE,KAAK,CAAC,QAAQ,IAAI,GAAG,SAAS,GAAG,WAAW;AAC7C,mBAAS,UAAU,UAAU,SAAS,IAAI,SAAS,SAAS,SAAS,eAAe,cAAc,UAAU,aAAa;AACxH,gBAAIkC,QAAOlC,GAAE,OAAO,CAAC,GAAG,OAAO,GAC7B,QAAQkC,MAAK,OACb,WAAWA,MAAK,UAChB,eAAe,CAAC,GAChB,iBAAiB,EAAC,QAAQ,IAAI,WAAW,IAAI,cAAc,IAAI,YAAY,IAAI,eAAe,GAAE;AAElG,gBAAIA,MAAK,YAAYhB,YAAW;AAG/B,cAAAgB,MAAK,UAAW,cAAc,SAAU,SAAS,IAAI,OAAO,eAAe,OAAO,MAAM,WAAW,iBAAiB,UAAW;AAAA,YAChI;AAEA,YAAAA,MAAK,QAAQ,WAAW;AAEvB,kBAAI,kBAAkB,KAAK,OAAO;AACjC,sBAAM,KAAK,UAAU,QAAQ;AAAA,cAC9B;AAGA,uBAAS,YAAY,gBAAgB;AACpC,oBAAI,CAAC,eAAe,eAAe,QAAQ,GAAG;AAC7C;AAAA,gBACD;AACA,6BAAa,QAAQ,IAAI,QAAQ,MAAM,QAAQ;AAI/C,oBAAI,gBAAgB,IAAI,iBAAiB,SAAS,QAAQ;AAC1D,+BAAe,QAAQ,IAAK,cAAc,SAAU,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,aAAa;AAAA,cAC3F;AAGA,2BAAa,WAAW,QAAQ,MAAM;AACtC,sBAAQ,MAAM,WAAW;AAAA,YAC1B;AAEA,YAAAA,MAAK,WAAW,WAAW;AAE1B,uBAAS,YAAY,cAAc;AAClC,oBAAI,aAAa,eAAe,QAAQ,GAAG;AAC1C,0BAAQ,MAAM,QAAQ,IAAI,aAAa,QAAQ;AAAA,gBAChD;AAAA,cACD;AAGA,kBAAI,kBAAkB,eAAe,GAAG;AACvC,oBAAI,UAAU;AACb,2BAAS,KAAK,UAAU,QAAQ;AAAA,gBACjC;AACA,oBAAI,aAAa;AAChB,8BAAY,SAAS,QAAQ;AAAA,gBAC9B;AAAA,cACD;AAAA,YACD;AAEA,qBAAS,SAAS,gBAAgBA,KAAI;AAAA,UACvC;AAAA,QACD,CAAC;AAGD,QAAAlC,GAAE,KAAK,CAAC,MAAM,KAAK,GAAG,SAAS,GAAG,WAAW;AAC5C,mBAAS,UAAU,SAAS,SAAS,IAAI,SAAS,SAAS,SAAS,eAAe,cAAc,UAAU,aAAa;AACvH,gBAAIkC,QAAOlC,GAAE,OAAO,CAAC,GAAG,OAAO,GAC7B,WAAWkC,MAAK,UAChB,gBAAgB,EAAC,SAAU,cAAc,OAAQ,IAAI,EAAC;AAIxD,gBAAI,kBAAkB,GAAG;AACxB,cAAAA,MAAK,QAAQ;AAAA,YACd;AACA,gBAAI,kBAAkB,eAAe,GAAG;AACvC,cAAAA,MAAK,WAAW;AAAA,YACjB,OAAO;AACN,cAAAA,MAAK,WAAW,WAAW;AAC1B,oBAAI,UAAU;AACb,2BAAS,KAAK,UAAU,QAAQ;AAAA,gBACjC;AACA,oBAAI,aAAa;AAChB,8BAAY,SAAS,QAAQ;AAAA,gBAC9B;AAAA,cACD;AAAA,YACD;AAIA,gBAAIA,MAAK,YAAYhB,YAAW;AAC/B,cAAAgB,MAAK,UAAW,cAAc,OAAO,SAAS;AAAA,YAC/C;AAEA,qBAAS,MAAM,eAAeA,KAAI;AAAA,UACnC;AAAA,QACD,CAAC;AAED,eAAO;AAAA,MACR,GAAG,OAAO,UAAU,OAAO,SAAS,QAAS,QAAS,SAAS,OAAO,WAAW,MAAU;AAAA,IAC5F,CAAC;AAAA;AAAA;;;AC5pJD;AAAA;AAAA;AAGC,KAAC,SAAUW,UAAS;AACrB,UAAI,OAAO,WAAW,cAAc,OAAO,KAAK;AAE/C,eAAO,CAAC,QAAQ,GAAGA,QAAO;AAAA,MAC1B,WAAW,OAAO,YAAY,UAAU;AAExC,QAAAA,SAAQ,gBAAiB;AAAA,MACzB,OAAO;AAEP,QAAAA,SAAQ,OAAO,UAAU,OAAO,KAAK;AAAA,MACrC;AAAA,IACA,GAAE,SAASC,IAAG;AAaf,UAAI,cAAc,SACjB,qBAAqB,eACrB,oBAAoB,cACpB,sBAAsB,gBACtB,qBAAqB,eACrB,aAAa,QACb,eAAe,UACf,KAAK,OACL,WAAW,MAAM,IACjB,cAAc,aACd,iBAAiB,gBACjB,sBAAsB;AAOvB,UAAI,KACH,gBAAgB,WAAU;AAAA,MAAC,GAC3B,QAAQ,CAAC,CAAE,OAAO,QAClB,aACA,UAAUA,GAAE,MAAM,GAClB,WACA,kBACA,cACA;AAMD,UAAI,SAAS,SAAS,MAAM,GAAG;AAC7B,YAAI,GAAG,GAAG,KAAK,OAAO,UAAU,CAAC;AAAA,MAClC,GACA,SAAS,SAAS,WAAW,UAAUC,OAAM,KAAK;AACjD,YAAI,KAAK,SAAS,cAAc,KAAK;AACrC,WAAG,YAAY,SAAO;AACtB,YAAGA,OAAM;AACR,aAAG,YAAYA;AAAA,QAChB;AACA,YAAG,CAAC,KAAK;AACR,eAAKD,GAAE,EAAE;AACT,cAAG,UAAU;AACZ,eAAG,SAAS,QAAQ;AAAA,UACrB;AAAA,QACD,WAAU,UAAU;AACnB,mBAAS,YAAY,EAAE;AAAA,QACxB;AACA,eAAO;AAAA,MACR,GACA,cAAc,SAAS,GAAG,MAAM;AAC/B,YAAI,GAAG,eAAe,KAAK,GAAG,IAAI;AAElC,YAAG,IAAI,GAAG,WAAW;AAEpB,cAAI,EAAE,OAAO,CAAC,EAAE,YAAY,IAAI,EAAE,MAAM,CAAC;AACzC,cAAG,IAAI,GAAG,UAAU,CAAC,GAAG;AACvB,gBAAI,GAAG,UAAU,CAAC,EAAE,MAAM,KAAKA,GAAE,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;AAAA,UAC/D;AAAA,QACD;AAAA,MACD,GACA,eAAe,SAASE,OAAM;AAC7B,YAAGA,UAAS,kBAAkB,CAAC,IAAI,aAAa,UAAU;AACzD,cAAI,aAAa,WAAWF,GAAG,IAAI,GAAG,YAAY,QAAQ,WAAW,IAAI,GAAG,MAAO,CAAE;AACrF,2BAAiBE;AAAA,QAClB;AACA,eAAO,IAAI,aAAa;AAAA,MACzB,GAEA,iBAAiB,WAAW;AAC3B,YAAG,CAACF,GAAE,cAAc,UAAU;AAE7B,gBAAM,IAAI,cAAc;AACxB,cAAI,KAAK;AACT,UAAAA,GAAE,cAAc,WAAW;AAAA,QAC5B;AAAA,MACD,GAEA,sBAAsB,WAAW;AAChC,YAAI,IAAI,SAAS,cAAc,GAAG,EAAE,OACnC,IAAI,CAAC,MAAK,KAAI,OAAM,QAAQ;AAE7B,YAAI,EAAE,YAAY,MAAM,QAAY;AACnC,iBAAO;AAAA,QACR;AAEA,eAAO,EAAE,QAAS;AACjB,cAAI,EAAE,IAAI,IAAI,gBAAgB,GAAI;AACjC,mBAAO;AAAA,UACR;AAAA,QACD;AAEA,eAAO;AAAA,MACR;AAOD,oBAAc,YAAY;AAAA,QAEzB,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,QAMb,MAAM,WAAW;AAChB,cAAI,aAAa,UAAU;AAC3B,cAAI,UAAU,IAAI,QAAQ,SAAS,OAAO,CAAC,SAAS;AACpD,cAAI,YAAa,YAAa,KAAK,UAAU;AAC7C,cAAI,QAAS,qBAAsB,KAAK,UAAU;AAClD,cAAI,qBAAqB,oBAAoB;AAI7C,cAAI,iBAAkB,IAAI,aAAa,IAAI,SAAS,8EAA8E,KAAK,UAAU,SAAS;AAC1J,sBAAYA,GAAE,QAAQ;AAEtB,cAAI,cAAc,CAAC;AAAA,QACpB;AAAA;AAAA;AAAA;AAAA;AAAA,QAMA,MAAM,SAAS,MAAM;AAEpB,cAAI;AAEJ,cAAG,KAAK,UAAU,OAAO;AAExB,gBAAI,QAAQ,KAAK,MAAM,QAAQ;AAE/B,gBAAI,QAAQ;AACZ,gBAAI,QAAQ,KAAK,OAChB;AACD,iBAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACjC,qBAAO,MAAM,CAAC;AACd,kBAAG,KAAK,QAAQ;AACf,uBAAO,KAAK,GAAG,CAAC;AAAA,cACjB;AACA,kBAAG,SAAS,KAAK,GAAG,CAAC,GAAG;AACvB,oBAAI,QAAQ;AACZ;AAAA,cACD;AAAA,YACD;AAAA,UACD,OAAO;AACN,gBAAI,QAAQA,GAAE,QAAQ,KAAK,KAAK,IAAI,KAAK,QAAQ,CAAC,KAAK,KAAK;AAC5D,gBAAI,QAAQ,KAAK,SAAS;AAAA,UAC3B;AAGA,cAAG,IAAI,QAAQ;AACd,gBAAI,eAAe;AACnB;AAAA,UACD;AAEA,cAAI,QAAQ,CAAC;AACb,yBAAe;AACf,cAAG,KAAK,UAAU,KAAK,OAAO,QAAQ;AACrC,gBAAI,KAAK,KAAK,OAAO,GAAG,CAAC;AAAA,UAC1B,OAAO;AACN,gBAAI,KAAK;AAAA,UACV;AAEA,cAAG,KAAK,KAAK;AACZ,gBAAG,CAAC,IAAI,YAAY,KAAK,GAAG,GAAG;AAC9B,kBAAI,YAAY,KAAK,GAAG,IAAI,CAAC;AAAA,YAC9B;AACA,gBAAI,eAAe,IAAI,YAAY,KAAK,GAAG;AAAA,UAC5C,OAAO;AACN,gBAAI,eAAe,CAAC;AAAA,UACrB;AAIA,cAAI,KAAKA,GAAE,OAAO,MAAM,CAAC,GAAGA,GAAE,cAAc,UAAU,IAAK;AAC3D,cAAI,kBAAkB,IAAI,GAAG,oBAAoB,SAAS,CAAC,IAAI,iBAAiB,IAAI,GAAG;AAEvF,cAAG,IAAI,GAAG,OAAO;AAChB,gBAAI,GAAG,sBAAsB;AAC7B,gBAAI,GAAG,iBAAiB;AACxB,gBAAI,GAAG,eAAe;AACtB,gBAAI,GAAG,kBAAkB;AAAA,UAC1B;AAKA,cAAG,CAAC,IAAI,WAAW;AAGlB,gBAAI,YAAY,OAAO,IAAI,EAAE,GAAG,UAAQ,UAAU,WAAW;AAC5D,kBAAI,MAAM;AAAA,YACX,CAAC;AAED,gBAAI,OAAO,OAAO,MAAM,EAAE,KAAK,YAAY,EAAE,EAAE,GAAG,UAAQ,UAAU,SAAS,GAAG;AAC/E,kBAAG,IAAI,cAAc,EAAE,MAAM,GAAG;AAC/B,oBAAI,MAAM;AAAA,cACX;AAAA,YACD,CAAC;AAED,gBAAI,YAAY,OAAO,aAAa,IAAI,IAAI;AAAA,UAC7C;AAEA,cAAI,mBAAmB,OAAO,SAAS;AACvC,cAAG,IAAI,GAAG,WAAW;AACpB,gBAAI,YAAY,OAAO,aAAa,IAAI,WAAW,IAAI,GAAG,QAAQ;AAAA,UACnE;AAIA,cAAIG,WAAUH,GAAE,cAAc;AAC9B,eAAI,IAAI,GAAG,IAAIG,SAAQ,QAAQ,KAAK;AACnC,gBAAI,IAAIA,SAAQ,CAAC;AACjB,gBAAI,EAAE,OAAO,CAAC,EAAE,YAAY,IAAI,EAAE,MAAM,CAAC;AACzC,gBAAI,SAAO,CAAC,EAAE,KAAK,GAAG;AAAA,UACvB;AACA,sBAAY,YAAY;AAGxB,cAAG,IAAI,GAAG,cAAc;AAEvB,gBAAG,CAAC,IAAI,GAAG,gBAAgB;AAC1B,kBAAI,KAAK,OAAQ,aAAa,CAAE;AAAA,YACjC,OAAO;AACN,qBAAO,oBAAoB,SAAS,GAAG,UAAU,QAAQC,OAAM;AAC9D,uBAAO,oBAAoB,aAAaA,MAAK,IAAI;AAAA,cAClD,CAAC;AACD,8BAAgB;AAAA,YACjB;AAAA,UACD;AAEA,cAAG,IAAI,GAAG,UAAU;AACnB,4BAAgB;AAAA,UACjB;AAIA,cAAG,IAAI,iBAAiB;AACvB,gBAAI,KAAK,IAAI;AAAA,cACZ,UAAU,IAAI,GAAG;AAAA,cACjB,WAAW;AAAA,cACX,WAAW,IAAI,GAAG;AAAA,YACnB,CAAC;AAAA,UACF,OAAO;AACN,gBAAI,KAAK,IAAI;AAAA,cACZ,KAAK,QAAQ,UAAU;AAAA,cACvB,UAAU;AAAA,YACX,CAAC;AAAA,UACF;AACA,cAAI,IAAI,GAAG,eAAe,SAAU,IAAI,GAAG,eAAe,UAAU,CAAC,IAAI,iBAAmB;AAC3F,gBAAI,UAAU,IAAI;AAAA,cACjB,QAAQ,UAAU,OAAO;AAAA,cACzB,UAAU;AAAA,YACX,CAAC;AAAA,UACF;AAIA,cAAG,IAAI,GAAG,iBAAiB;AAE1B,sBAAU,GAAG,UAAU,UAAU,SAAS,GAAG;AAC5C,kBAAG,EAAE,YAAY,IAAI;AACpB,oBAAI,MAAM;AAAA,cACX;AAAA,YACD,CAAC;AAAA,UACF;AAEA,kBAAQ,GAAG,WAAW,UAAU,WAAW;AAC1C,gBAAI,WAAW;AAAA,UAChB,CAAC;AAGD,cAAG,CAAC,IAAI,GAAG,qBAAqB;AAC/B,4BAAgB;AAAA,UACjB;AAEA,cAAG;AACF,gBAAI,KAAK,SAAS,YAAY;AAI/B,cAAI,eAAe,IAAI,KAAK,QAAQ,OAAO;AAG3C,cAAI,eAAe,CAAC;AAEpB,cAAI,IAAI,iBAAkB;AAChB,gBAAG,IAAI,cAAc,YAAY,GAAE;AAC/B,kBAAI,IAAI,IAAI,kBAAkB;AAC9B,kBAAG,GAAG;AACF,6BAAa,cAAc;AAAA,cAC/B;AAAA,YACJ;AAAA,UACJ;AAEN,cAAG,IAAI,iBAAiB;AACvB,gBAAG,CAAC,IAAI,OAAO;AACd,2BAAa,WAAW;AAAA,YACzB,OAAO;AAEN,cAAAJ,GAAE,YAAY,EAAE,IAAI,YAAY,QAAQ;AAAA,YACzC;AAAA,UACD;AAIA,cAAI,eAAe,IAAI,GAAG;AAC1B,cAAG,IAAI,OAAO;AACb,4BAAgB;AAAA,UACjB;AACA,cAAG,cAAc;AAChB,gBAAI,eAAgB,YAAa;AAAA,UAClC;AAGA,cAAI,eAAe;AAEnB,sBAAY,eAAe;AAG3B,UAAAA,GAAE,MAAM,EAAE,IAAI,YAAY;AAG1B,cAAI,UAAU,IAAI,IAAI,IAAI,EAAE,UAAW,IAAI,GAAG,aAAaA,GAAE,SAAS,IAAI,CAAE;AAG5E,cAAI,iBAAiB,SAAS;AAG9B,qBAAW,WAAW;AAErB,gBAAG,IAAI,SAAS;AACf,kBAAI,eAAe,WAAW;AAC9B,kBAAI,UAAU;AAAA,YACf,OAAO;AAEN,kBAAI,UAAU,SAAS,WAAW;AAAA,YACnC;AAGA,sBAAU,GAAG,YAAY,UAAU,IAAI,UAAU;AAAA,UAElD,GAAG,EAAE;AAEL,cAAI,SAAS;AACb,cAAI,WAAW,YAAY;AAC3B,sBAAY,UAAU;AAEtB,iBAAO;AAAA,QACR;AAAA;AAAA;AAAA;AAAA,QAKA,OAAO,WAAW;AACjB,cAAG,CAAC,IAAI,OAAQ;AAChB,sBAAY,kBAAkB;AAE9B,cAAI,SAAS;AAEb,cAAG,IAAI,GAAG,gBAAgB,CAAC,IAAI,WAAW,IAAI,oBAAsB;AACnE,gBAAI,eAAe,cAAc;AACjC,uBAAW,WAAW;AACrB,kBAAI,OAAO;AAAA,YACZ,GAAG,IAAI,GAAG,YAAY;AAAA,UACvB,OAAO;AACN,gBAAI,OAAO;AAAA,UACZ;AAAA,QACD;AAAA;AAAA;AAAA;AAAA,QAKA,QAAQ,WAAW;AAClB,sBAAY,WAAW;AAEvB,cAAI,kBAAkB,iBAAiB,MAAM,cAAc;AAE3D,cAAI,UAAU,OAAO;AACrB,cAAI,KAAK,OAAO;AAChB,cAAI,UAAU,MAAM;AAEpB,cAAG,IAAI,GAAG,WAAW;AACpB,+BAAmB,IAAI,GAAG,YAAY;AAAA,UACvC;AAEA,cAAI,oBAAoB,eAAe;AAEvC,cAAG,IAAI,iBAAiB;AACvB,gBAAI,eAAe,EAAC,aAAa,GAAE;AACnC,gBAAG,IAAI,OAAO;AACb,cAAAA,GAAE,YAAY,EAAE,IAAI,YAAY,EAAE;AAAA,YACnC,OAAO;AACN,2BAAa,WAAW;AAAA,YACzB;AACA,YAAAA,GAAE,MAAM,EAAE,IAAI,YAAY;AAAA,UAC3B;AAEA,oBAAU,IAAI,UAAU,WAAW,aAAa,QAAQ;AACxD,cAAI,GAAG,IAAI,QAAQ;AAGnB,cAAI,KAAK,KAAK,SAAS,UAAU,EAAE,WAAW,OAAO;AACrD,cAAI,UAAU,KAAK,SAAS,QAAQ;AACpC,cAAI,UAAU,KAAK,SAAS,eAAe;AAG3C,cAAG,IAAI,GAAG,iBACT,CAAC,IAAI,GAAG,kBAAkB,IAAI,aAAa,IAAI,SAAS,IAAI,MAAM,OAAO;AACzE,gBAAG,IAAI,aAAa;AACnB,kBAAI,aAAa,SAAS,OAAO;AAAA,UACnC;AAGA,cAAG,IAAI,GAAG,iBAAiB,IAAI,gBAAgB;AAC9C,YAAAA,GAAE,IAAI,cAAc,EAAE,MAAM;AAAA,UAC7B;AACA,cAAI,WAAW;AACf,cAAI,UAAU;AACd,cAAI,eAAe;AACnB,cAAI,aAAa;AAEjB,sBAAY,iBAAiB;AAAA,QAC9B;AAAA,QAEA,YAAY,SAAS,WAAW;AAE/B,cAAG,IAAI,OAAO;AAEb,gBAAI,YAAY,SAAS,gBAAgB,cAAc,OAAO;AAC9D,gBAAI,SAAS,OAAO,cAAc;AAClC,gBAAI,KAAK,IAAI,UAAU,MAAM;AAC7B,gBAAI,KAAK;AAAA,UACV,OAAO;AACN,gBAAI,KAAK,aAAa,QAAQ,OAAO;AAAA,UACtC;AAEA,cAAG,CAAC,IAAI,iBAAiB;AACxB,gBAAI,KAAK,IAAI,UAAU,IAAI,EAAE;AAAA,UAC9B;AAEA,sBAAY,QAAQ;AAAA,QAErB;AAAA;AAAA;AAAA;AAAA,QAKA,gBAAgB,WAAW;AAC1B,cAAI,OAAO,IAAI,MAAM,IAAI,KAAK;AAG9B,cAAI,iBAAiB,OAAO;AAE5B,cAAG,IAAI;AACN,gBAAI,QAAQ,OAAO;AAEpB,cAAG,CAAC,KAAK,QAAQ;AAChB,mBAAO,IAAI,QAAS,IAAI,KAAM;AAAA,UAC/B;AAEA,cAAIE,QAAO,KAAK;AAEhB,sBAAY,gBAAgB,CAAC,IAAI,WAAW,IAAI,SAAS,OAAO,IAAIA,KAAI,CAAC;AAIzE,cAAI,WAAW;AAEf,cAAG,CAAC,IAAI,aAAaA,KAAI,GAAG;AAC3B,gBAAI,SAAS,IAAI,GAAGA,KAAI,IAAI,IAAI,GAAGA,KAAI,EAAE,SAAS;AAGlD,wBAAY,oBAAoB,MAAM;AAEtC,gBAAG,QAAQ;AACV,kBAAI,aAAaA,KAAI,IAAIF,GAAE,MAAM;AAAA,YAClC,OAAO;AAEN,kBAAI,aAAaE,KAAI,IAAI;AAAA,YAC1B;AAAA,UACD;AAEA,cAAG,oBAAoB,qBAAqB,KAAK,MAAM;AACtD,gBAAI,UAAU,YAAY,SAAO,mBAAiB,SAAS;AAAA,UAC5D;AAEA,cAAI,aAAa,IAAI,QAAQA,MAAK,OAAO,CAAC,EAAE,YAAY,IAAIA,MAAK,MAAM,CAAC,CAAC,EAAE,MAAM,IAAI,aAAaA,KAAI,CAAC;AACvG,cAAI,cAAc,YAAYA,KAAI;AAElC,eAAK,YAAY;AAEjB,sBAAY,cAAc,IAAI;AAC9B,6BAAmB,KAAK;AAGxB,cAAI,UAAU,QAAQ,IAAI,gBAAgB;AAE1C,sBAAY,aAAa;AAAA,QAC1B;AAAA;AAAA;AAAA;AAAA,QAMA,eAAe,SAAS,YAAYA,OAAM;AACzC,cAAI,UAAU;AAEd,cAAG,YAAY;AACd,gBAAG,IAAI,GAAG,gBAAgB,IAAI,GAAG,kBAChC,IAAI,aAAaA,KAAI,MAAM,MAAM;AAEjC,kBAAG,CAAC,IAAI,QAAQ,KAAK,YAAY,EAAE,QAAQ;AAC1C,oBAAI,QAAQ,OAAO,aAAa,CAAC;AAAA,cAClC;AAAA,YACD,OAAO;AACN,kBAAI,UAAU;AAAA,YACf;AAAA,UACD,OAAO;AACN,gBAAI,UAAU;AAAA,UACf;AAEA,sBAAY,mBAAmB;AAC/B,cAAI,UAAU,SAAS,SAAOA,QAAK,SAAS;AAE5C,cAAI,iBAAiB,OAAO,IAAI,OAAO;AAAA,QACxC;AAAA;AAAA;AAAA;AAAA;AAAA,QAOA,SAAS,SAASG,QAAO;AACxB,cAAI,OAAO,IAAI,MAAMA,MAAK,GACzBH;AAED,cAAG,KAAK,SAAS;AAChB,mBAAO,EAAE,IAAIF,GAAE,IAAI,EAAE;AAAA,UACtB,OAAO;AACN,YAAAE,QAAO,KAAK;AACZ,mBAAO,EAAE,MAAM,MAAM,KAAK,KAAK,IAAI;AAAA,UACpC;AAEA,cAAG,KAAK,IAAI;AACX,gBAAI,QAAQ,IAAI;AAGhB,qBAAQ,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,kBAAI,KAAK,GAAG,SAAS,SAAO,MAAM,CAAC,CAAC,GAAI;AACvC,gBAAAA,QAAO,MAAM,CAAC;AACd;AAAA,cACD;AAAA,YACD;AAEA,iBAAK,MAAM,KAAK,GAAG,KAAK,cAAc;AACtC,gBAAG,CAAC,KAAK,KAAK;AACb,mBAAK,MAAM,KAAK,GAAG,KAAK,MAAM;AAAA,YAC/B;AAAA,UACD;AAEA,eAAK,OAAOA,SAAQ,IAAI,GAAG,QAAQ;AACnC,eAAK,QAAQG;AACb,eAAK,SAAS;AACd,cAAI,MAAMA,MAAK,IAAI;AACnB,sBAAY,gBAAgB,IAAI;AAEhC,iBAAO,IAAI,MAAMA,MAAK;AAAA,QACvB;AAAA;AAAA;AAAA;AAAA,QAMA,UAAU,SAAS,IAAI,SAAS;AAC/B,cAAI,WAAW,SAAS,GAAG;AAC1B,cAAE,QAAQ;AACV,gBAAI,WAAW,GAAG,IAAI,OAAO;AAAA,UAC9B;AAEA,cAAG,CAAC,SAAS;AACZ,sBAAU,CAAC;AAAA,UACZ;AAEA,cAAI,QAAQ;AACZ,kBAAQ,SAAS;AAEjB,cAAG,QAAQ,OAAO;AACjB,oBAAQ,QAAQ;AAChB,eAAG,IAAI,KAAK,EAAE,GAAG,OAAO,QAAQ;AAAA,UACjC,OAAO;AACN,oBAAQ,QAAQ;AAChB,gBAAG,QAAQ,UAAU;AACpB,iBAAG,IAAI,KAAK,EAAE,GAAG,OAAO,QAAQ,UAAW,QAAQ;AAAA,YACpD,OAAO;AACN,sBAAQ,QAAQ;AAChB,iBAAG,IAAI,KAAK,EAAE,GAAG,OAAO,QAAQ;AAAA,YACjC;AAAA,UACD;AAAA,QACD;AAAA,QACA,YAAY,SAAS,GAAG,IAAI,SAAS;AACpC,cAAI,WAAW,QAAQ,aAAa,SAAY,QAAQ,WAAWL,GAAE,cAAc,SAAS;AAG5F,cAAG,CAAC,aAAc,EAAE,UAAU,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,WAAa;AACvF;AAAA,UACD;AAEA,cAAI,YAAY,QAAQ,cAAc,SAAY,QAAQ,YAAYA,GAAE,cAAc,SAAS;AAE/F,cAAG,WAAW;AACb,gBAAGA,GAAE,WAAW,SAAS,GAAG;AAC3B,kBAAI,CAAC,UAAU,KAAK,GAAG,GAAI;AAC1B,uBAAO;AAAA,cACR;AAAA,YACD,OAAO;AACN,kBAAI,QAAQ,MAAM,IAAI,WAAY;AACjC,uBAAO;AAAA,cACR;AAAA,YACD;AAAA,UACD;AAEA,cAAG,EAAE,MAAM;AACV,cAAE,eAAe;AAGjB,gBAAG,IAAI,QAAQ;AACd,gBAAE,gBAAgB;AAAA,YACnB;AAAA,UACD;AAEA,kBAAQ,KAAKA,GAAE,EAAE,KAAK;AACtB,cAAG,QAAQ,UAAU;AACpB,oBAAQ,QAAQ,GAAG,KAAK,QAAQ,QAAQ;AAAA,UACzC;AACA,cAAI,KAAK,OAAO;AAAA,QACjB;AAAA;AAAA;AAAA;AAAA,QAMA,cAAc,SAAS,QAAQM,OAAM;AAEpC,cAAG,IAAI,WAAW;AACjB,gBAAG,gBAAgB,QAAQ;AAC1B,kBAAI,UAAU,YAAY,WAAS,WAAW;AAAA,YAC/C;AAEA,gBAAG,CAACA,SAAQ,WAAW,WAAW;AACjC,cAAAA,QAAO,IAAI,GAAG;AAAA,YACf;AAEA,gBAAI,OAAO;AAAA,cACV;AAAA,cACA,MAAMA;AAAA,YACP;AAEA,wBAAY,gBAAgB,IAAI;AAEhC,qBAAS,KAAK;AACd,YAAAA,QAAO,KAAK;AAEZ,gBAAI,UAAU,KAAKA,KAAI;AAEvB,gBAAI,UAAU,KAAK,GAAG,EAAE,GAAG,SAAS,SAAS,GAAG;AAC/C,gBAAE,yBAAyB;AAAA,YAC5B,CAAC;AAED,gBAAI,UAAU,SAAS,WAAS,MAAM;AACtC,0BAAc;AAAA,UACf;AAAA,QACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAQA,eAAe,SAASC,SAAQ;AAE/B,cAAGP,GAAEO,OAAM,EAAE,SAAS,mBAAmB,GAAG;AAC3C;AAAA,UACD;AAEA,cAAI,iBAAiB,IAAI,GAAG;AAC5B,cAAI,YAAY,IAAI,GAAG;AAEvB,cAAG,kBAAkB,WAAW;AAC/B,mBAAO;AAAA,UACR,OAAO;AAGN,gBAAG,CAAC,IAAI,WAAWP,GAAEO,OAAM,EAAE,SAAS,WAAW,KAAM,IAAI,aAAaA,YAAW,IAAI,UAAU,CAAC,GAAK;AACtG,qBAAO;AAAA,YACR;AAGA,gBAAMA,YAAW,IAAI,QAAQ,CAAC,KAAK,CAACP,GAAE,SAAS,IAAI,QAAQ,CAAC,GAAGO,OAAM,GAAM;AAC1E,kBAAG,WAAW;AAEb,oBAAIP,GAAE,SAAS,UAAUO,OAAM,GAAI;AAClC,yBAAO;AAAA,gBACR;AAAA,cACD;AAAA,YACD,WAAU,gBAAgB;AACzB,qBAAO;AAAA,YACR;AAAA,UAED;AACA,iBAAO;AAAA,QACR;AAAA,QACA,gBAAgB,SAAS,OAAO;AAC/B,cAAI,UAAU,SAAS,KAAK;AAC5B,cAAI,KAAK,SAAS,KAAK;AAAA,QACxB;AAAA,QACA,qBAAqB,SAAS,OAAO;AACpC,eAAK,UAAU,YAAY,KAAK;AAChC,cAAI,KAAK,YAAY,KAAK;AAAA,QAC3B;AAAA,QACA,eAAe,SAAS,WAAW;AAClC,kBAAW,IAAI,QAAQ,UAAU,OAAO,IAAI,SAAS,KAAK,iBAAiB,aAAa,QAAQ,OAAO;AAAA,QACxG;AAAA,QACA,WAAW,WAAW;AACrB,WAAC,IAAI,GAAG,QAAQ,IAAI,QAAQ,KAAK,IAAI,GAAG,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,MAAM,MAAM;AAAA,QACxE;AAAA,QACA,YAAY,SAAS,GAAG;AACvB,cAAI,EAAE,WAAW,IAAI,KAAK,CAAC,KAAK,CAACP,GAAE,SAAS,IAAI,KAAK,CAAC,GAAG,EAAE,MAAM,GAAI;AACpE,gBAAI,UAAU;AACd,mBAAO;AAAA,UACR;AAAA,QACD;AAAA,QACA,cAAc,SAAS,UAAU,QAAQ,MAAM;AAC9C,cAAI;AACJ,cAAG,KAAK,MAAM;AACb,qBAASA,GAAE,OAAO,KAAK,MAAM,MAAM;AAAA,UACpC;AACA,sBAAY,oBAAoB,CAAC,UAAU,QAAQ,IAAI,CAAE;AAEzD,UAAAA,GAAE,KAAK,QAAQ,SAAS,KAAK,OAAO;AACnC,gBAAG,UAAU,UAAa,UAAU,OAAO;AAC1C,qBAAO;AAAA,YACR;AACA,kBAAM,IAAI,MAAM,GAAG;AACnB,gBAAG,IAAI,SAAS,GAAG;AAClB,kBAAI,KAAK,SAAS,KAAK,WAAW,MAAI,IAAI,CAAC,CAAC;AAE5C,kBAAG,GAAG,SAAS,GAAG;AACjB,oBAAI,OAAO,IAAI,CAAC;AAChB,oBAAG,SAAS,eAAe;AAC1B,sBAAG,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG;AACtB,uBAAG,YAAY,KAAK;AAAA,kBACrB;AAAA,gBACD,WAAU,SAAS,OAAO;AACzB,sBAAG,GAAG,GAAG,KAAK,GAAG;AAChB,uBAAG,KAAK,OAAO,KAAK;AAAA,kBACrB,OAAO;AACN,uBAAG,YAAaA,GAAE,OAAO,EAAE,KAAK,OAAO,KAAK,EAAE,KAAK,SAAS,GAAG,KAAK,OAAO,CAAC,CAAE;AAAA,kBAC/E;AAAA,gBACD,OAAO;AACN,qBAAG,KAAK,IAAI,CAAC,GAAG,KAAK;AAAA,gBACtB;AAAA,cACD;AAAA,YAED,OAAO;AACN,uBAAS,KAAK,WAAW,MAAI,GAAG,EAAE,KAAK,KAAK;AAAA,YAC7C;AAAA,UACD,CAAC;AAAA,QACF;AAAA,QAEA,mBAAmB,WAAW;AAE7B,cAAG,IAAI,kBAAkB,QAAW;AACnC,gBAAI,YAAY,SAAS,cAAc,KAAK;AAC5C,sBAAU,MAAM,UAAU;AAC1B,qBAAS,KAAK,YAAY,SAAS;AACnC,gBAAI,gBAAgB,UAAU,cAAc,UAAU;AACtD,qBAAS,KAAK,YAAY,SAAS;AAAA,UACpC;AACA,iBAAO,IAAI;AAAA,QACZ;AAAA,MAED;AAQA,MAAAA,GAAE,gBAAgB;AAAA,QACjB,UAAU;AAAA,QACV,OAAO,cAAc;AAAA,QACrB,SAAS,CAAC;AAAA,QAEV,MAAM,SAAS,SAASK,QAAO;AAC9B,yBAAe;AAEf,cAAG,CAAC,SAAS;AACZ,sBAAU,CAAC;AAAA,UACZ,OAAO;AACN,sBAAUL,GAAE,OAAO,MAAM,CAAC,GAAG,OAAO;AAAA,UACrC;AAEA,kBAAQ,QAAQ;AAChB,kBAAQ,QAAQK,UAAS;AACzB,iBAAO,KAAK,SAAS,KAAK,OAAO;AAAA,QAClC;AAAA,QAEA,OAAO,WAAW;AACjB,iBAAOL,GAAE,cAAc,YAAYA,GAAE,cAAc,SAAS,MAAM;AAAA,QACnE;AAAA,QAEA,gBAAgB,SAAS,MAAMQ,SAAQ;AACtC,cAAGA,QAAO,SAAS;AAClB,YAAAR,GAAE,cAAc,SAAS,IAAI,IAAIQ,QAAO;AAAA,UACzC;AACA,UAAAR,GAAE,OAAO,KAAK,OAAOQ,QAAO,KAAK;AACjC,eAAK,QAAQ,KAAK,IAAI;AAAA,QACvB;AAAA,QAEA,UAAU;AAAA;AAAA;AAAA,UAKT,WAAW;AAAA,UAEX,KAAK;AAAA,UAEL,UAAU;AAAA,UAEV,WAAW;AAAA,UAEX,WAAW;AAAA,UAEX,OAAO;AAAA;AAAA,UAEP,qBAAqB;AAAA,UAErB,gBAAgB;AAAA,UAEhB,gBAAgB;AAAA,UAEhB,cAAc;AAAA,UAEd,iBAAiB;AAAA,UAEjB,OAAO;AAAA,UAEP,UAAU;AAAA,UAEV,cAAc;AAAA,UAEd,WAAW;AAAA,UAEX,iBAAiB;AAAA,UAEjB,YAAY;AAAA,UAEZ,WAAW;AAAA,UAEX,aAAa;AAAA,UAEb,QAAQ;AAAA,UAER,UAAU;AAAA,UAEV,eAAe;AAAA,QAEhB;AAAA,MACD;AAIA,MAAAR,GAAE,GAAG,gBAAgB,SAAS,SAAS;AACtC,uBAAe;AAEf,YAAI,OAAOA,GAAE,IAAI;AAGjB,YAAI,OAAO,YAAY,UAAW;AAEjC,cAAG,YAAY,QAAQ;AACtB,gBAAI,OACH,WAAW,QAAQ,KAAK,KAAK,eAAe,IAAI,KAAK,CAAC,EAAE,eACxDK,SAAQ,SAAS,UAAU,CAAC,GAAG,EAAE,KAAK;AAEvC,gBAAG,SAAS,OAAO;AAClB,sBAAQ,SAAS,MAAMA,MAAK;AAAA,YAC7B,OAAO;AACN,sBAAQ;AACR,kBAAG,SAAS,UAAU;AACrB,wBAAQ,MAAM,KAAK,SAAS,QAAQ;AAAA,cACrC;AACA,sBAAQ,MAAM,GAAIA,MAAM;AAAA,YACzB;AACA,gBAAI,WAAW,EAAC,OAAM,MAAK,GAAG,MAAM,QAAQ;AAAA,UAC7C,OAAO;AACN,gBAAG,IAAI;AACN,kBAAI,OAAO,EAAE,MAAM,KAAK,MAAM,UAAU,MAAM,KAAK,WAAW,CAAC,CAAC;AAAA,UAClE;AAAA,QAED,OAAO;AAEN,oBAAUL,GAAE,OAAO,MAAM,CAAC,GAAG,OAAO;AAOpC,cAAG,OAAO;AACT,iBAAK,KAAK,iBAAiB,OAAO;AAAA,UACnC,OAAO;AACN,iBAAK,CAAC,EAAE,gBAAgB;AAAA,UACzB;AAEA,cAAI,SAAS,MAAM,OAAO;AAAA,QAE3B;AACA,eAAO;AAAA,MACR;AAMA,UAAI,YAAY,UACf,cACA,oBACA,oBACA,yBAAyB,WAAW;AACnC,YAAG,oBAAoB;AACtB,6BAAmB,MAAO,mBAAmB,SAAS,YAAY,CAAE,EAAE,OAAO;AAC7E,+BAAqB;AAAA,QACtB;AAAA,MACD;AAED,MAAAA,GAAE,cAAc,eAAe,WAAW;AAAA,QACzC,SAAS;AAAA,UACR,aAAa;AAAA;AAAA,UACb,QAAQ;AAAA,UACR,WAAW;AAAA,QACZ;AAAA,QACA,OAAO;AAAA,UAEN,YAAY,WAAW;AACtB,gBAAI,MAAM,KAAK,SAAS;AAExB,mBAAO,cAAY,MAAI,WAAW,WAAW;AAC5C,qCAAuB;AAAA,YACxB,CAAC;AAAA,UACF;AAAA,UAEA,WAAW,SAAS,MAAM,UAAU;AAEnC,mCAAuB;AAEvB,gBAAG,KAAK,KAAK;AACZ,kBAAI,WAAW,IAAI,GAAG,QACrB,KAAKA,GAAE,KAAK,GAAG;AAEhB,kBAAG,GAAG,QAAQ;AAGb,oBAAI,SAAS,GAAG,CAAC,EAAE;AACnB,oBAAG,UAAU,OAAO,SAAS;AAC5B,sBAAG,CAAC,oBAAoB;AACvB,mCAAe,SAAS;AACxB,yCAAqB,OAAO,YAAY;AACxC,mCAAe,SAAO;AAAA,kBACvB;AAEA,uCAAqB,GAAG,MAAM,kBAAkB,EAAE,OAAO,EAAE,YAAY,YAAY;AAAA,gBACpF;AAEA,oBAAI,aAAa,OAAO;AAAA,cACzB,OAAO;AACN,oBAAI,aAAa,SAAS,SAAS,SAAS;AAC5C,qBAAKA,GAAE,OAAO;AAAA,cACf;AAEA,mBAAK,gBAAgB;AACrB,qBAAO;AAAA,YACR;AAEA,gBAAI,aAAa,OAAO;AACxB,gBAAI,aAAa,UAAU,CAAC,GAAG,IAAI;AACnC,mBAAO;AAAA,UACR;AAAA,QACD;AAAA,MACD,CAAC;AAKD,UAAI,UAAU,QACb,UACA,oBAAoB,WAAW;AAC9B,YAAG,UAAU;AACZ,UAAAA,GAAE,SAAS,IAAI,EAAE,YAAY,QAAQ;AAAA,QACtC;AAAA,MACD,GACA,sBAAsB,WAAW;AAChC,0BAAkB;AAClB,YAAG,IAAI,KAAK;AACX,cAAI,IAAI,MAAM;AAAA,QACf;AAAA,MACD;AAED,MAAAA,GAAE,cAAc,eAAe,SAAS;AAAA,QAEvC,SAAS;AAAA,UACR,UAAU;AAAA,UACV,QAAQ;AAAA,UACR,QAAQ;AAAA,QACT;AAAA,QAEA,OAAO;AAAA,UACN,UAAU,WAAW;AACpB,gBAAI,MAAM,KAAK,OAAO;AACtB,uBAAW,IAAI,GAAG,KAAK;AAEvB,mBAAO,cAAY,MAAI,SAAS,mBAAmB;AACnD,mBAAO,kBAAkB,SAAS,mBAAmB;AAAA,UACtD;AAAA,UACA,SAAS,SAAS,MAAM;AAEvB,gBAAG,UAAU;AACZ,cAAAA,GAAE,SAAS,IAAI,EAAE,SAAS,QAAQ;AAAA,YACnC;AAEA,gBAAI,aAAa,SAAS;AAE1B,gBAAIS,QAAOT,GAAE,OAAO;AAAA,cACnB,KAAK,KAAK;AAAA,cACV,SAAS,SAAS,MAAM,YAAY,OAAO;AAC1C,oBAAI,OAAO;AAAA,kBACV;AAAA,kBACA,KAAI;AAAA,gBACL;AAEA,4BAAY,aAAa,IAAI;AAE7B,oBAAI,cAAeA,GAAE,KAAK,IAAI,GAAG,OAAQ;AAEzC,qBAAK,WAAW;AAEhB,kCAAkB;AAElB,oBAAI,UAAU;AAEd,2BAAW,WAAW;AACrB,sBAAI,KAAK,SAAS,WAAW;AAAA,gBAC9B,GAAG,EAAE;AAEL,oBAAI,aAAa,OAAO;AAExB,4BAAY,kBAAkB;AAAA,cAC/B;AAAA,cACA,OAAO,WAAW;AACjB,kCAAkB;AAClB,qBAAK,WAAW,KAAK,YAAY;AACjC,oBAAI,aAAa,SAAS,IAAI,GAAG,KAAK,OAAO,QAAQ,SAAS,KAAK,GAAG,CAAC;AAAA,cACxE;AAAA,YACD,GAAG,IAAI,GAAG,KAAK,QAAQ;AAEvB,gBAAI,MAAMA,GAAE,KAAKS,KAAI;AAErB,mBAAO;AAAA,UACR;AAAA,QACD;AAAA,MACD,CAAC;AAKD,UAAI,cACH,YAAY,SAAS,MAAM;AAC1B,YAAG,KAAK,QAAQ,KAAK,KAAK,UAAU;AACnC,iBAAO,KAAK,KAAK;AAElB,YAAI,MAAM,IAAI,GAAG,MAAM;AAEvB,YAAG,KAAK;AACP,cAAGT,GAAE,WAAW,GAAG,GAAG;AACrB,mBAAO,IAAI,KAAK,KAAK,IAAI;AAAA,UAC1B,WAAU,KAAK,IAAI;AAClB,mBAAO,KAAK,GAAG,KAAK,GAAG,KAAK;AAAA,UAC7B;AAAA,QACD;AACA,eAAO;AAAA,MACR;AAED,MAAAA,GAAE,cAAc,eAAe,SAAS;AAAA,QAEvC,SAAS;AAAA,UACR,QAAQ;AAAA,UAYR,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,aAAa;AAAA,UACb,QAAQ;AAAA,QACT;AAAA,QAEA,OAAO;AAAA,UACN,WAAW,WAAW;AACrB,gBAAI,QAAQ,IAAI,GAAG,OAClB,KAAK;AAEN,gBAAI,MAAM,KAAK,OAAO;AAEtB,mBAAO,aAAW,IAAI,WAAW;AAChC,kBAAG,IAAI,SAAS,SAAS,WAAW,MAAM,QAAQ;AACjD,gBAAAA,GAAE,SAAS,IAAI,EAAE,SAAS,MAAM,MAAM;AAAA,cACvC;AAAA,YACD,CAAC;AAED,mBAAO,cAAY,IAAI,WAAW;AACjC,kBAAG,MAAM,QAAQ;AAChB,gBAAAA,GAAE,SAAS,IAAI,EAAE,YAAY,MAAM,MAAM;AAAA,cAC1C;AACA,sBAAQ,IAAI,WAAW,QAAQ;AAAA,YAChC,CAAC;AAED,mBAAO,WAAS,IAAI,IAAI,WAAW;AACnC,gBAAG,IAAI,SAAS;AACf,qBAAO,eAAe,IAAI,WAAW;AAAA,YACtC;AAAA,UACD;AAAA,UACA,aAAa,WAAW;AACvB,gBAAI,OAAO,IAAI;AACf,gBAAG,CAAC,QAAQ,CAAC,KAAK,IAAK;AAEvB,gBAAG,IAAI,GAAG,MAAM,aAAa;AAC5B,kBAAI,OAAO;AAEX,kBAAG,IAAI,SAAS;AACf,uBAAO,SAAS,KAAK,IAAI,IAAI,aAAa,GAAG,EAAE,IAAI,SAAS,KAAK,IAAI,IAAI,gBAAgB,GAAE,EAAE;AAAA,cAC9F;AACA,mBAAK,IAAI,IAAI,cAAc,IAAI,KAAG,IAAI;AAAA,YACvC;AAAA,UACD;AAAA,UACA,iBAAiB,SAAS,MAAM;AAC/B,gBAAG,KAAK,KAAK;AAEZ,mBAAK,UAAU;AAEf,kBAAG,cAAc;AAChB,8BAAc,YAAY;AAAA,cAC3B;AAEA,mBAAK,oBAAoB;AAEzB,0BAAY,gBAAgB,IAAI;AAEhC,kBAAG,KAAK,WAAW;AAClB,oBAAG,IAAI;AACN,sBAAI,QAAQ,YAAY,aAAa;AAEtC,qBAAK,YAAY;AAAA,cAClB;AAAA,YAED;AAAA,UACD;AAAA;AAAA;AAAA;AAAA,UAKA,eAAe,SAAS,MAAM;AAE7B,gBAAI,UAAU,GACb,MAAM,KAAK,IAAI,CAAC,GAChB,iBAAiB,SAAS,OAAO;AAEhC,kBAAG,cAAc;AAChB,8BAAc,YAAY;AAAA,cAC3B;AAEA,6BAAe,YAAY,WAAW;AACrC,oBAAG,IAAI,eAAe,GAAG;AACxB,sBAAI,gBAAgB,IAAI;AACxB;AAAA,gBACD;AAEA,oBAAG,UAAU,KAAK;AACjB,gCAAc,YAAY;AAAA,gBAC3B;AAEA;AACA,oBAAG,YAAY,GAAG;AACjB,iCAAe,EAAE;AAAA,gBAClB,WAAU,YAAY,IAAI;AACzB,iCAAe,EAAE;AAAA,gBAClB,WAAU,YAAY,KAAK;AAC1B,iCAAe,GAAG;AAAA,gBACnB;AAAA,cACD,GAAG,KAAK;AAAA,YACT;AAED,2BAAe,CAAC;AAAA,UACjB;AAAA,UAEA,UAAU,SAAS,MAAM,UAAU;AAElC,gBAAI,QAAQ,GAGX,iBAAiB,WAAW;AAC3B,kBAAG,MAAM;AACR,oBAAI,KAAK,IAAI,CAAC,EAAE,UAAU;AACzB,uBAAK,IAAI,IAAI,YAAY;AAEzB,sBAAG,SAAS,IAAI,UAAS;AACxB,wBAAI,gBAAgB,IAAI;AAExB,wBAAI,aAAa,OAAO;AAAA,kBACzB;AAEA,uBAAK,UAAU;AACf,uBAAK,SAAS;AAEd,8BAAY,mBAAmB;AAAA,gBAEhC,OACK;AAEJ;AACA,sBAAG,QAAQ,KAAK;AACf,+BAAW,gBAAe,GAAG;AAAA,kBAC9B,OAAO;AACN,gCAAY;AAAA,kBACb;AAAA,gBACD;AAAA,cACD;AAAA,YACD,GAGA,cAAc,WAAW;AACxB,kBAAG,MAAM;AACR,qBAAK,IAAI,IAAI,YAAY;AACzB,oBAAG,SAAS,IAAI,UAAS;AACxB,sBAAI,gBAAgB,IAAI;AACxB,sBAAI,aAAa,SAAS,MAAM,OAAO,QAAQ,SAAS,KAAK,GAAG,CAAE;AAAA,gBACnE;AAEA,qBAAK,UAAU;AACf,qBAAK,SAAS;AACd,qBAAK,YAAY;AAAA,cAClB;AAAA,YACD,GACA,QAAQ,IAAI,GAAG;AAGhB,gBAAI,KAAK,SAAS,KAAK,UAAU;AACjC,gBAAG,GAAG,QAAQ;AACb,kBAAI,MAAM,SAAS,cAAc,KAAK;AACtC,kBAAI,YAAY;AAChB,kBAAG,KAAK,MAAM,KAAK,GAAG,KAAK,KAAK,EAAE,QAAQ;AACzC,oBAAI,MAAM,KAAK,GAAG,KAAK,KAAK,EAAE,KAAK,KAAK;AAAA,cACzC;AACA,mBAAK,MAAMA,GAAE,GAAG,EAAE,GAAG,kBAAkB,cAAc,EAAE,GAAG,mBAAmB,WAAW;AACxF,kBAAI,MAAM,KAAK;AAIf,kBAAG,GAAG,GAAG,KAAK,GAAG;AAChB,qBAAK,MAAM,KAAK,IAAI,MAAM;AAAA,cAC3B;AAEA,oBAAM,KAAK,IAAI,CAAC;AAChB,kBAAG,IAAI,eAAe,GAAG;AACxB,qBAAK,UAAU;AAAA,cAChB,WAAU,CAAC,IAAI,OAAO;AACrB,qBAAK,UAAU;AAAA,cAChB;AAAA,YACD;AAEA,gBAAI,aAAa,UAAU;AAAA,cAC1B,OAAO,UAAU,IAAI;AAAA,cACrB,iBAAiB,KAAK;AAAA,YACvB,GAAG,IAAI;AAEP,gBAAI,YAAY;AAEhB,gBAAG,KAAK,SAAS;AAChB,kBAAG,aAAc,eAAc,YAAY;AAE3C,kBAAG,KAAK,WAAW;AAClB,yBAAS,SAAS,aAAa;AAC/B,oBAAI,aAAa,SAAS,MAAM,OAAO,QAAQ,SAAS,KAAK,GAAG,CAAE;AAAA,cACnE,OAAO;AACN,yBAAS,YAAY,aAAa;AAClC,oBAAI,aAAa,OAAO;AAAA,cACzB;AACA,qBAAO;AAAA,YACR;AAEA,gBAAI,aAAa,SAAS;AAC1B,iBAAK,UAAU;AAEf,gBAAG,CAAC,KAAK,SAAS;AACjB,mBAAK,YAAY;AACjB,uBAAS,SAAS,aAAa;AAC/B,kBAAI,cAAc,IAAI;AAAA,YACvB;AAEA,mBAAO;AAAA,UACR;AAAA,QACD;AAAA,MACD,CAAC;AAKD,UAAI,iBACH,qBAAqB,WAAW;AAC/B,YAAG,oBAAoB,QAAW;AACjC,4BAAkB,SAAS,cAAc,GAAG,EAAE,MAAM,iBAAiB;AAAA,QACtE;AACA,eAAO;AAAA,MACR;AAED,MAAAA,GAAE,cAAc,eAAe,QAAQ;AAAA,QAEtC,SAAS;AAAA,UACR,SAAS;AAAA,UACT,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,QAAQ,SAAS,SAAS;AACzB,mBAAO,QAAQ,GAAG,KAAK,IAAI,UAAU,QAAQ,KAAK,KAAK;AAAA,UACxD;AAAA,QACD;AAAA,QAEA,OAAO;AAAA,UAEN,UAAU,WAAW;AACpB,gBAAI,SAAS,IAAI,GAAG,MACnB,KAAK,SACL;AAED,gBAAG,CAAC,OAAO,WAAW,CAAC,IAAI,oBAAoB;AAC9C;AAAA,YACD;AAEA,gBAAI,WAAW,OAAO,UACrB,iBAAiB,SAASU,QAAO;AAChC,kBAAI,SAASA,OAAM,MAAM,EAAE,WAAW,OAAO,EAAE,WAAW,OAAO,EAAE,SAAS,oBAAoB,GAC/FC,cAAa,SAAQ,OAAO,WAAS,MAAM,OAAO,OAAO,QACzD,SAAS;AAAA,gBACR,UAAU;AAAA,gBACV,QAAQ;AAAA,gBACR,MAAM;AAAA,gBACN,KAAK;AAAA,gBACL,+BAA+B;AAAA,cAChC,GACA,IAAI;AAEL,qBAAO,aAAW,CAAC,IAAI,OAAO,UAAQ,CAAC,IAAI,OAAO,QAAM,CAAC,IAAI,OAAO,CAAC,IAAIA;AAEzE,qBAAO,IAAI,MAAM;AACjB,qBAAO;AAAA,YACR,GACA,kBAAkB,WAAW;AAC5B,kBAAI,QAAQ,IAAI,cAAc,SAAS;AAAA,YACxC,GACA,aACA;AAED,mBAAO,kBAAgB,IAAI,WAAW;AACrC,kBAAG,IAAI,WAAW,GAAG;AAEpB,6BAAa,WAAW;AACxB,oBAAI,QAAQ,IAAI,cAAc,QAAQ;AAItC,wBAAQ,IAAI,eAAe;AAE3B,oBAAG,CAAC,OAAO;AACV,kCAAgB;AAChB;AAAA,gBACD;AAEA,8BAAc,eAAe,KAAK;AAElC,4BAAY,IAAK,IAAI,WAAW,CAAE;AAElC,oBAAI,KAAK,OAAO,WAAW;AAE3B,8BAAc,WAAW,WAAW;AACnC,8BAAY,IAAK,IAAI,WAAY,IAAK,CAAE;AACxC,gCAAc,WAAW,WAAW;AAEnC,oCAAgB;AAEhB,+BAAW,WAAW;AACrB,kCAAY,OAAO;AACnB,8BAAQ,cAAc;AACtB,kCAAY,oBAAoB;AAAA,oBACjC,GAAG,EAAE;AAAA,kBAEN,GAAG,QAAQ;AAAA,gBAEZ,GAAG,EAAE;AAAA,cAIN;AAAA,YACD,CAAC;AACD,mBAAO,qBAAmB,IAAI,WAAW;AACxC,kBAAG,IAAI,WAAW,GAAG;AAEpB,6BAAa,WAAW;AAExB,oBAAI,GAAG,eAAe;AAEtB,oBAAG,CAAC,OAAO;AACV,0BAAQ,IAAI,eAAe;AAC3B,sBAAG,CAAC,OAAO;AACV;AAAA,kBACD;AACA,gCAAc,eAAe,KAAK;AAAA,gBACnC;AAEA,4BAAY,IAAK,IAAI,WAAW,IAAI,CAAE;AACtC,oBAAI,KAAK,OAAO,WAAW;AAC3B,oBAAI,QAAQ,IAAI,cAAc,QAAQ;AAEtC,2BAAW,WAAW;AACrB,8BAAY,IAAK,IAAI,WAAW,CAAE;AAAA,gBACnC,GAAG,EAAE;AAAA,cACN;AAAA,YAED,CAAC;AAED,mBAAO,cAAY,IAAI,WAAW;AACjC,kBAAG,IAAI,WAAW,GAAG;AACpB,gCAAgB;AAChB,oBAAG,aAAa;AACf,8BAAY,OAAO;AAAA,gBACpB;AACA,wBAAQ;AAAA,cACT;AAAA,YACD,CAAC;AAAA,UACF;AAAA,UAEA,YAAY,WAAW;AACtB,mBAAO,IAAI,SAAS,SAAS;AAAA,UAC9B;AAAA,UAEA,gBAAgB,WAAW;AAC1B,gBAAG,IAAI,SAAS,SAAS;AACxB,qBAAO,IAAI,SAAS;AAAA,YACrB,OAAO;AACN,qBAAO;AAAA,YACR;AAAA,UACD;AAAA;AAAA,UAGA,YAAY,SAAS,SAAS;AAC7B,gBAAI;AACJ,gBAAG,SAAS;AACX,mBAAK,IAAI,SAAS;AAAA,YACnB,OAAO;AACN,mBAAK,IAAI,GAAG,KAAK,OAAO,IAAI,SAAS,MAAM,IAAI,QAAQ;AAAA,YACxD;AAEA,gBAAI,SAAS,GAAG,OAAO;AACvB,gBAAIC,cAAa,SAAS,GAAG,IAAI,aAAa,GAAE,EAAE;AAClD,gBAAI,gBAAgB,SAAS,GAAG,IAAI,gBAAgB,GAAE,EAAE;AACxD,mBAAO,OAASZ,GAAE,MAAM,EAAE,UAAU,IAAIY;AAQxC,gBAAI,MAAM;AAAA,cACT,OAAO,GAAG,MAAM;AAAA;AAAA,cAEhB,SAAS,QAAQ,GAAG,YAAY,IAAI,GAAG,CAAC,EAAE,gBAAgB,gBAAgBA;AAAA,YAC3E;AAGA,gBAAI,mBAAmB,GAAI;AAC1B,kBAAI,gBAAgB,IAAI,IAAI,WAAW,IAAI,eAAe,OAAO,OAAO,QAAQ,OAAO,MAAM;AAAA,YAC9F,OAAO;AACN,kBAAI,OAAO,OAAO;AAClB,kBAAI,MAAM,OAAO;AAAA,YAClB;AACA,mBAAO;AAAA,UACR;AAAA,QAED;AAAA,MACD,CAAC;AAQD,UAAI,YAAY,UACf,aAAa,iBAEb,iBAAiB,SAAS,WAAW;AACpC,YAAG,IAAI,aAAa,SAAS,GAAG;AAC/B,cAAI,KAAK,IAAI,aAAa,SAAS,EAAE,KAAK,QAAQ;AAClD,cAAG,GAAG,QAAQ;AAEb,gBAAG,CAAC,WAAW;AACd,iBAAG,CAAC,EAAE,MAAM;AAAA,YACb;AAGA,gBAAG,IAAI,OAAO;AACb,iBAAG,IAAI,WAAW,YAAY,UAAU,MAAM;AAAA,YAC/C;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAED,MAAAZ,GAAE,cAAc,eAAe,WAAW;AAAA,QAEzC,SAAS;AAAA,UACR,QAAQ;AAAA,UAKR,WAAW;AAAA;AAAA,UAGX,UAAU;AAAA,YACT,SAAS;AAAA,cACR,OAAO;AAAA,cACP,IAAI;AAAA,cACJ,KAAK;AAAA,YACN;AAAA,YACA,OAAO;AAAA,cACN,OAAO;AAAA,cACP,IAAI;AAAA,cACJ,KAAK;AAAA,YACN;AAAA,YACA,OAAO;AAAA,cACN,OAAO;AAAA,cACP,KAAK;AAAA,YACN;AAAA,UACD;AAAA,QACD;AAAA,QAEA,OAAO;AAAA,UACN,YAAY,WAAW;AACtB,gBAAI,MAAM,KAAK,SAAS;AAExB,mBAAO,gBAAgB,SAAS,GAAG,UAAU,SAAS;AACrD,kBAAG,aAAa,SAAS;AACxB,oBAAG,aAAa,WAAW;AAC1B,iCAAe;AAAA,gBAChB,WAAU,YAAY,WAAW;AAChC,iCAAe,IAAI;AAAA,gBACpB;AAAA,cACD;AAAA,YAGD,CAAC;AAED,mBAAO,cAAc,MAAM,WAAW,WAAW;AAChD,6BAAe;AAAA,YAChB,CAAC;AAAA,UACF;AAAA,UAEA,WAAW,SAAS,MAAM,UAAU;AACnC,gBAAI,WAAW,KAAK;AACpB,gBAAI,WAAW,IAAI,GAAG;AAEtB,YAAAA,GAAE,KAAK,SAAS,UAAU,WAAW;AACpC,kBAAG,SAAS,QAAS,KAAK,KAAM,IAAI,IAAI;AACvC,oBAAG,KAAK,IAAI;AACX,sBAAG,OAAO,KAAK,OAAO,UAAU;AAC/B,+BAAW,SAAS,OAAO,SAAS,YAAY,KAAK,EAAE,IAAE,KAAK,GAAG,QAAQ,SAAS,MAAM;AAAA,kBACzF,OAAO;AACN,+BAAW,KAAK,GAAG,KAAM,MAAM,QAAS;AAAA,kBACzC;AAAA,gBACD;AACA,2BAAW,KAAK,IAAI,QAAQ,QAAQ,QAAS;AAC7C,uBAAO;AAAA,cACR;AAAA,YACD,CAAC;AAED,gBAAI,UAAU,CAAC;AACf,gBAAG,SAAS,WAAW;AACtB,sBAAQ,SAAS,SAAS,IAAI;AAAA,YAC/B;AACA,gBAAI,aAAa,UAAU,SAAS,IAAI;AAExC,gBAAI,aAAa,OAAO;AAExB,mBAAO;AAAA,UACR;AAAA,QACD;AAAA,MACD,CAAC;AAUD,UAAI,eAAe,SAASK,QAAO;AACjC,YAAI,YAAY,IAAI,MAAM;AAC1B,YAAGA,SAAQ,YAAY,GAAG;AACzB,iBAAOA,SAAQ;AAAA,QAChB,WAAWA,SAAQ,GAAG;AACrB,iBAAO,YAAYA;AAAA,QACpB;AACA,eAAOA;AAAA,MACR,GACA,oBAAoB,SAASC,OAAM,MAAM,OAAO;AAC/C,eAAOA,MAAK,QAAQ,YAAY,OAAO,CAAC,EAAE,QAAQ,aAAa,KAAK;AAAA,MACrE;AAED,MAAAN,GAAE,cAAc,eAAe,WAAW;AAAA,QAEzC,SAAS;AAAA,UACR,SAAS;AAAA,UACT,aAAa;AAAA,UACb,SAAS,CAAC,GAAE,CAAC;AAAA,UACb,oBAAoB;AAAA,UACpB,QAAQ;AAAA,UAER,OAAO;AAAA,UACP,OAAO;AAAA,UACP,UAAU;AAAA,QACX;AAAA,QAEA,OAAO;AAAA,UACN,aAAa,WAAW;AAEvB,gBAAI,MAAM,IAAI,GAAG,SAChB,KAAK;AAEN,gBAAI,YAAY;AAEhB,gBAAG,CAAC,OAAO,CAAC,IAAI,QAAU,QAAO;AAEjC,4BAAgB;AAEhB,mBAAO,aAAW,IAAI,WAAW;AAEhC,kBAAG,IAAI,oBAAoB;AAC1B,oBAAI,KAAK,GAAG,UAAQ,IAAI,YAAY,WAAW;AAC9C,sBAAG,IAAI,MAAM,SAAS,GAAG;AACxB,wBAAI,KAAK;AACT,2BAAO;AAAA,kBACR;AAAA,gBACD,CAAC;AAAA,cACF;AAEA,wBAAU,GAAG,YAAU,IAAI,SAAS,GAAG;AACtC,oBAAI,EAAE,YAAY,IAAI;AACrB,sBAAI,KAAK;AAAA,gBACV,WAAW,EAAE,YAAY,IAAI;AAC5B,sBAAI,KAAK;AAAA,gBACV;AAAA,cACD,CAAC;AAAA,YACF,CAAC;AAED,mBAAO,iBAAe,IAAI,SAAS,GAAG,MAAM;AAC3C,kBAAG,KAAK,MAAM;AACb,qBAAK,OAAO,kBAAkB,KAAK,MAAM,IAAI,SAAS,OAAO,IAAI,MAAM,MAAM;AAAA,cAC9E;AAAA,YACD,CAAC;AAED,mBAAO,qBAAmB,IAAI,SAAS,GAAG,SAAS,QAAQ,MAAM;AAChE,kBAAI,IAAI,IAAI,MAAM;AAClB,qBAAO,UAAU,IAAI,IAAI,kBAAkB,IAAI,UAAU,KAAK,OAAO,CAAC,IAAI;AAAA,YAC3E,CAAC;AAED,mBAAO,kBAAkB,IAAI,WAAW;AACvC,kBAAG,IAAI,MAAM,SAAS,KAAK,IAAI,UAAU,CAAC,IAAI,WAAW;AACxD,oBAAI,SAAS,IAAI,aAChB,YAAY,IAAI,YAAYA,GAAG,OAAO,QAAQ,aAAa,IAAI,KAAK,EAAE,QAAQ,WAAW,MAAM,CAAE,EAAE,SAAS,mBAAmB,GAC/H,aAAa,IAAI,aAAaA,GAAG,OAAO,QAAQ,aAAa,IAAI,KAAK,EAAE,QAAQ,WAAW,OAAO,CAAE,EAAE,SAAS,mBAAmB;AAEnI,0BAAU,MAAM,WAAW;AAC1B,sBAAI,KAAK;AAAA,gBACV,CAAC;AACD,2BAAW,MAAM,WAAW;AAC3B,sBAAI,KAAK;AAAA,gBACV,CAAC;AAED,oBAAI,UAAU,OAAO,UAAU,IAAI,UAAU,CAAC;AAAA,cAC/C;AAAA,YACD,CAAC;AAED,mBAAO,eAAa,IAAI,WAAW;AAClC,kBAAG,IAAI,gBAAiB,cAAa,IAAI,eAAe;AAExD,kBAAI,kBAAkB,WAAW,WAAW;AAC3C,oBAAI,oBAAoB;AACxB,oBAAI,kBAAkB;AAAA,cACvB,GAAG,EAAE;AAAA,YACN,CAAC;AAGD,mBAAO,cAAY,IAAI,WAAW;AACjC,wBAAU,IAAI,EAAE;AAChB,kBAAI,KAAK,IAAI,UAAQ,EAAE;AACvB,kBAAI,aAAa,IAAI,YAAY;AAAA,YAClC,CAAC;AAAA,UAEF;AAAA,UACA,MAAM,WAAW;AAChB,gBAAI,YAAY;AAChB,gBAAI,QAAQ,aAAa,IAAI,QAAQ,CAAC;AACtC,gBAAI,eAAe;AAAA,UACpB;AAAA,UACA,MAAM,WAAW;AAChB,gBAAI,YAAY;AAChB,gBAAI,QAAQ,aAAa,IAAI,QAAQ,CAAC;AACtC,gBAAI,eAAe;AAAA,UACpB;AAAA,UACA,MAAM,SAAS,UAAU;AACxB,gBAAI,YAAa,YAAY,IAAI;AACjC,gBAAI,QAAQ;AACZ,gBAAI,eAAe;AAAA,UACpB;AAAA,UACA,qBAAqB,WAAW;AAC/B,gBAAI,IAAI,IAAI,GAAG,QAAQ,SACtB,gBAAgB,KAAK,IAAI,EAAE,CAAC,GAAG,IAAI,MAAM,MAAM,GAC/C,eAAe,KAAK,IAAI,EAAE,CAAC,GAAG,IAAI,MAAM,MAAM,GAC9C;AAED,iBAAI,IAAI,GAAG,MAAM,IAAI,YAAY,eAAe,gBAAgB,KAAK;AACpE,kBAAI,aAAa,IAAI,QAAM,CAAC;AAAA,YAC7B;AACA,iBAAI,IAAI,GAAG,MAAM,IAAI,YAAY,gBAAgB,eAAe,KAAK;AACpE,kBAAI,aAAa,IAAI,QAAM,CAAC;AAAA,YAC7B;AAAA,UACD;AAAA,UACA,cAAc,SAASK,QAAO;AAC7B,YAAAA,SAAQ,aAAaA,MAAK;AAE1B,gBAAG,IAAI,MAAMA,MAAK,EAAE,WAAW;AAC9B;AAAA,YACD;AAEA,gBAAI,OAAO,IAAI,MAAMA,MAAK;AAC1B,gBAAG,CAAC,KAAK,QAAQ;AAChB,qBAAO,IAAI,QAASA,MAAM;AAAA,YAC3B;AAEA,wBAAY,YAAY,IAAI;AAE5B,gBAAG,KAAK,SAAS,SAAS;AACzB,mBAAK,MAAML,GAAE,yBAAyB,EAAE,GAAG,kBAAkB,WAAW;AACvE,qBAAK,UAAU;AAAA,cAChB,CAAC,EAAE,GAAG,mBAAmB,WAAW;AACnC,qBAAK,UAAU;AACf,qBAAK,YAAY;AACjB,4BAAY,iBAAiB,IAAI;AAAA,cAClC,CAAC,EAAE,KAAK,OAAO,KAAK,GAAG;AAAA,YACxB;AAGA,iBAAK,YAAY;AAAA,UAClB;AAAA,QACD;AAAA,MACD,CAAC;AAMD,UAAI,YAAY;AAEhB,MAAAA,GAAE,cAAc,eAAe,WAAW;AAAA,QACzC,SAAS;AAAA,UACR,YAAY,SAAS,MAAM;AAC1B,mBAAO,KAAK,IAAI,QAAQ,UAAU,SAAS,GAAG;AAAE,qBAAO,QAAQ;AAAA,YAAG,CAAC;AAAA,UACpE;AAAA,UACA,OAAO;AAAA;AAAA,QACR;AAAA,QACA,OAAO;AAAA,UACN,YAAY,WAAW;AACtB,gBAAG,OAAO,mBAAmB,GAAG;AAE/B,kBAAI,KAAK,IAAI,GAAG,QACf,QAAQ,GAAG;AAEZ,sBAAQ,CAAC,MAAM,KAAK,IAAI,QAAQ,MAAM;AAEtC,kBAAG,QAAQ,GAAG;AACb,uBAAO,kBAAuB,WAAW,SAAS,GAAG,MAAM;AAC1D,uBAAK,IAAI,IAAI;AAAA,oBACZ,aAAa,KAAK,IAAI,CAAC,EAAE,eAAe;AAAA,oBACxC,SAAS;AAAA,kBACV,CAAC;AAAA,gBACF,CAAC;AACD,uBAAO,kBAAuB,WAAW,SAAS,GAAG,MAAM;AAC1D,uBAAK,MAAM,GAAG,WAAW,MAAM,KAAK;AAAA,gBACrC,CAAC;AAAA,cACF;AAAA,YACD;AAAA,UAED;AAAA,QACD;AAAA,MACD,CAAC;AAGA,qBAAe;AAAA,IAAG,CAAC;AAAA;AAAA;;;ACn0DpB;AAAA;AAAA;AAMC,KAAC,SAAUa,UAAS;AAEjB,UAAI,OAAO,cAAY,cAAc,OAAO,YAAY,UAAW;AAC/D,eAAO,UAAUA,SAAQ;AAAA,MAE7B,WAAW,OAAO,WAAW,cAAc,OAAO,KAAK;AACnD,eAAO,CAAE,UAAW,GAAGA,QAAO;AAAA,MAElC,OAAO;AACH,QAAAA,SAAQ;AAAA,MACZ;AAAA,IACJ,GAAE,WAAW;AACb,cAAO,SAAUC,SAAQC,SAAQC,WAAUC,YAAW;AAMlD,YAAI,CAACH,QAAO,YAAY,CAACA,QAAO,SAAS,WAAW;AAChD,UAAAC,QAAO,WAAW,QAAQ,IAAI,4DAA4D;AAC1F;AAAA,QACJ,OAAO;AACH,cAAI,WAAWD,QAAO,UAClBI,KAAI,SAAS;AAAA,QACrB;AAEA,YAAI,kBAAkB,SAAS,SAC3B,kBAAkB,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,EAAE;AAErD,iBAAS,cAAe,SAAS,WAAW;AACxC,cAAI,cAAc,CAAC;AAEnB,cAAI,CAAC,WAAW,CAAC,WAAW;AAAE,mBAAO;AAAA,UAAO;AAE5C,UAAAA,GAAE,KAAK,CAAE,SAAS,SAAU,GAAG,SAAS,GAAG,eAAe;AACtD,gBAAI,wBAAwB,CAAC;AAE7B,YAAAA,GAAE,KAAK,eAAe,SAASC,YAAW,OAAO;AAC7C,qBAAO,MAAM,SAAS,EAAE,SAAS,GAAG;AAChC,wBAAQ,MAAM;AAAA,cAClB;AACA,oCAAsB,KAAK,KAAK;AAAA,YACpC,CAAC;AAED,wBAAY,KAAK,sBAAsB,KAAK,EAAE,CAAC;AAAA,UACnD,CAAC;AAED,iBAAQ,WAAW,YAAY,CAAC,CAAC,IAAI,WAAW,YAAY,CAAC,CAAC;AAAA,QAClE;AAEA,YAAI,cAAc,iBAAiB,eAAe,GAAE;AAChD,cAAI,aAAa;AACjB,gBAAM,UAAU;AAChB,gBAAM,IAAI,MAAM,UAAU;AAAA,QAC9B;AAOA,iBAAS,iBAAiB,SAAS,aAAa,SAAUC,aAAY,YAAY;AAE9E,mBAAS,oBAAqB,UAAU,WAAW,eAAe,SAAS;AACvE,gBAAI,mBAAmB,GACnBC;AAGJ,YAAAH,GAAE,KAAK,SAAS,WAAW,CAAE,QAAS,IAAI,UAAU,SAAS,GAAG,SAAS;AACrE,kBAAI,SAAS;AAET,iCAAiB,IAAI;AAAA,cACzB;AAEA,cAAAG,cAAa,QAAQ;AAErB,cAAAH,GAAE,KAAK,CAAE,UAAU,cAAc,iBAAiB,aAAa,cAAc,GAAG,SAASI,IAAG,UAAU;AAClG,oCAAoB,WAAW,SAAS,IAAI,iBAAiB,SAAS,QAAQ,CAAC;AAAA,cACnF,CAAC;AAAA,YACL,CAAC;AAGD,qBAAS;AAAA,cACLD;AAAA,cACA,EAAE,SAAS,cAAc,OAAO,MAAM,OAAO,MAAM,iBAAiB;AAAA,cACpE,EAAE,OAAO,OAAO,QAAQ,eAAe,UAAU,iBAAiB,cAAc,OAAO,MAAM,GAAG;AAAA,YACpG;AAAA,UACJ;AAGA,mBAAS,UAAUD,WAAU,IAAI,SAAU,SAAS,iBAAiB,eAAe,cAAc,UAAU,aAAa;AACrH,gBAAI,eAAgB,kBAAkB,eAAe;AAErD,gBAAI,OAAO,WAAW,oBAAoB,YAAY;AAClD,yBAAW,kBAAkB,WAAW,gBAAgB,KAAK,UAAU,QAAQ;AAAA,YACnF,OAAO;AACH,yBAAW,kBAAkB,WAAW,WAAW,eAAe;AAAA,YACtE;AAGA,qBAAS,YAAY,GAAG,YAAY,WAAW,MAAM,QAAQ,aAAa;AACtE,kBAAI,OAAO,WAAW,MAAM,SAAS,GACjC,cAAc,KAAK,CAAC,GACpB,mBAAoB,gBAAgB,YAAY,WAAW,mBAAmB,KAC9E,qBAAqB,KAAK,CAAC,GAC3B,cAAc,KAAK,CAAC,KAAK,CAAC,GAC1BG,QAAO,CAAC;AAGZ,cAAAA,MAAK,WAAW,oBAAoB,sBAAsB;AAC1D,cAAAA,MAAK,QAAQ,gBAAgB,SAAS;AACtC,cAAAA,MAAK,SAAS,YAAY,UAAU;AACpC,cAAAA,MAAK,QAAQ,WAAW,YAAY,KAAK,KAAK;AAC9C,cAAAA,MAAK,eAAe,YAAY,gBAAgB;AAGhD,kBAAI,cAAc,GAAG;AAEjB,gBAAAA,MAAK,SAAU,WAAW,gBAAgB,KAAK,KAAK;AAEpD,oBAAI,kBAAkB,GAAG;AACrB,kBAAAA,MAAK,QAAQ,WAAW;AAEpB,oCAAgB,SAAS,gBAAgB,MAAM,KAAK,UAAU,QAAQ;AAEtE,wBAAI,YAAYH,YAAW,MAAM,WAAW;AAI5C,wBAAK,aAAa,UAAU,CAAC,MAAM,QAAS,YAAY,YAAYH,YAAW;AAC3E,sBAAAC,GAAE,KAAK,SAAS,WAAW,CAAE,QAAS,IAAI,UAAU,SAAS,GAAGM,UAAS;AACrE,iCAAS,IAAI,iBAAiBA,UAAS,WAAW,CAAC;AAAA,sBACvD,CAAC;AAAA,oBACL;AAGA,wBAAI,gBAAgB,uBAAuB,WAAW;AAClD,0CAAoB,UAAU,UAAU,CAAC,GAAG,mBAAmBD,MAAK,OAAO,gBAAgB,OAAO;AAAA,oBACtG;AAAA,kBACJ;AAAA,gBACJ;AAGA,oBAAI,gBAAgB,YAAY,MAAM;AAClC,sBAAI,gBAAgB,YAAYN,cAAa,gBAAgB,YAAY,QAAQ;AAC7E,oBAAAM,MAAK,UAAU,gBAAgB;AAAA,kBACnC,WAAW,MAAM,KAAKH,WAAU,GAAG;AAE/B,wBAAI,iBAAiB,SAAS,IAAI,OAAO,eAAe,OAAO;AAC/D,oBAAAG,MAAK,UAAW,mBAAmB,WAAY,iBAAiB;AAAA,kBACpE;AAAA,gBACJ;AAEA,oBAAI,gBAAgB,cAAc,gBAAgB,eAAe,UAAU;AACvE,kBAAAA,MAAK,aAAa,gBAAgB;AAAA,gBACtC;AAAA,cACJ;AAGA,kBAAI,cAAc,WAAW,MAAM,SAAS,GAAG;AAE3C,oBAASE,wBAAT,WAAiC;AAC7B,uBAAK,gBAAgB,YAAYR,cAAa,gBAAgB,YAAY,WAAW,OAAO,KAAKG,WAAU,GAAG;AAC1G,oBAAAF,GAAE,KAAK,SAAS,WAAW,CAAE,QAAS,IAAI,UAAU,SAAS,GAAGM,UAAS;AACrE,+BAAS,IAAI,iBAAiBA,UAAS,WAAW,MAAM;AAAA,oBAC5D,CAAC;AAAA,kBACL;AAEA,kCAAgB,YAAY,gBAAgB,SAAS,KAAK,UAAU,QAAQ;AAE5E,sBAAI,aAAa;AACb,gCAAY,SAAS,YAAY,OAAO;AAAA,kBAC5C;AAAA,gBACJ;AAZS,2CAAAC;AAcT,gBAAAF,MAAK,WAAW,WAAW;AACvB,sBAAI,WAAW,OAAO;AAClB,6BAAS,iBAAiB,WAAW,OAAO;AACxC,0BAAI,aAAa,WAAW,MAAM,aAAa;AAK/C,0BAAI,SAAS,IAAI,MAAM,WAAW,aAAa,MAAMN,eAAc,OAAO,eAAe,YAAY,OAAO,eAAe,WAAW;AAClI,mCAAW,MAAM,aAAa,IAAI,CAAE,WAAW,MAAM,aAAa,GAAG,WAAW,MAAM,aAAa,CAAE;AAAA,sBACzG;AAAA,oBACJ;AAGA,wBAAI,eAAe,EAAE,UAAU,GAAG,OAAO,MAAM;AAG/C,wBAAI,cAAc;AACd,mCAAa,WAAWQ;AAAA,oBAC5B;AAEA,6BAAS,QAAQ,SAAS,WAAW,OAAO,YAAY;AAAA,kBAE5D,WAAW,cAAc;AACrB,oBAAAA,sBAAqB;AAAA,kBACzB;AAAA,gBACJ;AAEA,oBAAI,gBAAgB,eAAe,UAAU;AACzC,kBAAAF,MAAK,aAAa,gBAAgB;AAAA,gBACtC;AAAA,cACJ;AAEA,uBAAS,QAAQ,SAAS,aAAaA,KAAI;AAAA,YAC/C;AAAA,UACJ;AAGA,iBAAO;AAAA,QACX;AAQA,iBAAS,eAAe,kBACpB;AAAA;AAAA,UAEI,kBAAkB;AAAA,YACd,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,YAAY,IAAI,GAAG,IAAK;AAAA,cAC5B,CAAE,EAAE,YAAY,EAAE,GAAG,KAAM;AAAA,cAC3B,CAAE,EAAE,YAAY,IAAI,GAAG,KAAM;AAAA,cAC7B,CAAE,EAAE,YAAY,EAAE,GAAG,IAAK;AAAA,YAC9B;AAAA,UACJ;AAAA;AAAA,UAEA,iBAAiB;AAAA,YACb,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,YAAY,IAAI,GAAG,KAAM;AAAA,cAC7B,CAAE,EAAE,YAAY,GAAG,GAAG,KAAM;AAAA,cAC5B,CAAE,EAAE,YAAY,IAAI,GAAG,KAAM;AAAA,cAC7B,CAAE,EAAE,YAAY,GAAG,GAAG,KAAM;AAAA,cAC5B,CAAE,EAAE,YAAY,IAAI,GAAG,KAAM;AAAA,cAC7B,CAAE,EAAE,YAAY,GAAG,GAAG,KAAM;AAAA,cAC5B,CAAE,EAAE,YAAY,IAAI,GAAG,KAAM;AAAA,cAC7B,CAAE,EAAE,YAAY,EAAE,GAAG,KAAM;AAAA,YAC/B;AAAA,UACJ;AAAA;AAAA,UAEA,iBAAiB;AAAA,YACb,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,iBAAiB,CAAE,EAAE,GAAG,IAAK;AAAA,cAC/C,CAAE,EAAE,SAAS,CAAE,GAAG,eAAgB,EAAE,GAAG,IAAK;AAAA,cAC5C,CAAE,EAAE,SAAS,CAAE,GAAG,eAAgB,EAAE,GAAG,IAAK;AAAA,cAC5C,CAAE,EAAE,SAAS,CAAE,GAAG,eAAgB,EAAE,GAAG,IAAK;AAAA,YAChD;AAAA,UACJ;AAAA;AAAA,UAEA,iBAAiB;AAAA,YACb,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,QAAQ,KAAK,QAAQ,IAAI,GAAG,KAAM,EAAE,QAAQ,aAAa,CAAE;AAAA,cAC/D,CAAE,EAAE,QAAQ,GAAG,QAAQ,EAAE,GAAG,GAAK;AAAA,YACrC;AAAA,UACJ;AAAA;AAAA,UAEA,iBAAiB;AAAA,YACb,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,GAAG,GAAG,GAAK;AAAA,cACxB,CAAE,EAAE,SAAS,IAAI,GAAG,GAAK;AAAA,cACzB,CAAE,EAAE,SAAS,EAAE,GAAG,GAAK;AAAA,cACvB,CAAE,EAAE,SAAS,GAAG,GAAG,GAAK;AAAA,cACxB,CAAE,EAAE,SAAS,EAAE,GAAG,GAAK;AAAA,YAC3B;AAAA,UACJ;AAAA;AAAA,UAEA,gBAAgB;AAAA,YACZ,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,QAAQ,KAAK,QAAQ,KAAK,SAAS,GAAG,GAAG,GAAK;AAAA,cAClD,CAAE,EAAE,QAAQ,KAAK,QAAQ,KAAK,SAAS,EAAE,GAAG,GAAK;AAAA,cACjD,CAAE,EAAE,QAAQ,KAAK,QAAQ,KAAK,SAAS,GAAG,GAAG,GAAK;AAAA,cAClD,CAAE,WAAW,KAAM;AAAA,cACnB,CAAE,WAAW,KAAM;AAAA,cACnB,CAAE,WAAW,KAAM;AAAA,cACnB,CAAE,WAAW,KAAM;AAAA,cACnB,CAAE,WAAW,KAAM;AAAA,cACnB,CAAE,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,EAAE,GAAG,GAAK;AAAA,YACjD;AAAA,UACJ;AAAA,UACA,qBAAqB;AAAA,YACjB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,EAAE,CAAE;AAAA,YAC5B;AAAA,UACJ;AAAA,UACA,sBAAsB;AAAA,YAClB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,EAAE,CAAE;AAAA,YAC5B;AAAA,UACJ;AAAA;AAAA,UAEA,sBAAsB;AAAA,YAClB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,sBAAsB,CAAE,KAAK,GAAI,GAAG,SAAS,CAAE,GAAG,GAAI,EAAE,CAAE;AAAA,YACrF;AAAA,YACA,OAAO,EAAE,sBAAsB,EAAE;AAAA,UACrC;AAAA;AAAA,UAEA,uBAAuB;AAAA,YACnB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,sBAAsB,CAAE,KAAK,GAAI,GAAG,SAAS,GAAG,CAAE;AAAA,YAC7E;AAAA,YACA,OAAO,EAAE,sBAAsB,GAAG,SAAS,EAAE;AAAA,UACjD;AAAA;AAAA,UAEA,sBAAsB;AAAA,YAClB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,sBAAsB,CAAE,KAAK,GAAI,GAAG,SAAS,CAAE,GAAG,GAAI,EAAE,CAAE;AAAA,YACrF;AAAA,YACA,OAAO,EAAE,sBAAsB,EAAE;AAAA,UACrC;AAAA;AAAA,UAEA,uBAAuB;AAAA,YACnB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,sBAAsB,CAAE,KAAK,GAAI,GAAG,SAAS,GAAG,CAAE;AAAA,YAC7E;AAAA,YACA,OAAO,EAAE,sBAAsB,GAAG,SAAS,EAAE;AAAA,UACjD;AAAA;AAAA;AAAA,UAGA,4BAA4B;AAAA,YACxB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,OAAO,CAAE,GAAG,sBAAsB,CAAE,KAAK,GAAI,GAAG,SAAS,CAAE,KAAK,EAAG,EAAE,GAAG,GAAK;AAAA,cAC5F,CAAE,EAAE,SAAS,KAAM,SAAS,GAAG,GAAG,IAAK;AAAA,cACvC,CAAE,EAAE,SAAS,GAAG,SAAS,EAAE,GAAG,IAAK;AAAA,YACvC;AAAA,YACA,OAAO,EAAE,sBAAsB,EAAE;AAAA,UACrC;AAAA;AAAA;AAAA,UAGA,6BAA6B;AAAA,YACzB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,KAAK,CAAE,GAAG,sBAAsB,CAAE,KAAK,GAAI,GAAG,SAAS,IAAI,GAAG,GAAK;AAAA,cAClF,CAAE,EAAE,SAAS,GAAG,SAAS,GAAG,GAAG,GAAK;AAAA,YACxC;AAAA,YACA,OAAO,EAAE,sBAAsB,GAAG,SAAS,EAAE;AAAA,UACjD;AAAA;AAAA;AAAA,UAGA,4BAA4B;AAAA,YACxB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,OAAO,CAAE,GAAG,sBAAsB,CAAE,KAAK,GAAI,GAAG,SAAS,CAAE,KAAK,EAAG,EAAE,GAAG,GAAK;AAAA,cAC5F,CAAE,EAAE,SAAS,KAAM,SAAS,GAAG,GAAG,IAAK;AAAA,cACvC,CAAE,EAAE,SAAS,GAAG,SAAS,EAAE,GAAG,IAAK;AAAA,YACvC;AAAA,YACA,OAAO,EAAE,sBAAsB,EAAE;AAAA,UACrC;AAAA;AAAA;AAAA,UAGA,6BAA6B;AAAA,YACzB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,KAAK,CAAE,GAAG,sBAAsB,CAAE,KAAK,GAAI,GAAG,SAAS,IAAI,GAAG,GAAK;AAAA,cAClF,CAAE,EAAE,SAAS,GAAG,SAAS,GAAG,GAAG,GAAK;AAAA,YACxC;AAAA,YACA,OAAO,EAAE,sBAAsB,GAAG,SAAS,EAAE;AAAA,UACjD;AAAA;AAAA,UAEA,sBAAsB;AAAA,YAClB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,kBAAkB,CAAE,QAAQ,KAAM,GAAG,kBAAkB,CAAE,QAAQ,MAAO,GAAG,QAAQ,CAAE,GAAG,CAAE,GAAG,QAAQ,CAAE,GAAG,CAAE,GAAG,YAAY,CAAE,GAAG,IAAK,GAAG,YAAY,EAAE,CAAE;AAAA,YACnL;AAAA,YACA,OAAO,EAAE,kBAAkB,OAAO,kBAAkB,MAAM;AAAA,UAC9D;AAAA;AAAA,UAEA,uBAAuB;AAAA,YACnB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,kBAAkB,CAAE,OAAO,MAAO,GAAG,kBAAkB,CAAE,QAAQ,MAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,MAAM,YAAY,EAAE,CAAE;AAAA,YAC9J;AAAA,YACA,OAAO,EAAE,kBAAkB,OAAO,kBAAkB,OAAO,QAAQ,GAAG,QAAQ,GAAG,YAAY,EAAE;AAAA,UACnG;AAAA;AAAA;AAAA,UAGA,sBAAsB;AAAA,YAClB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,kBAAkB,CAAE,OAAO,KAAM,GAAG,kBAAkB,CAAE,OAAO,KAAM,GAAG,QAAQ,CAAE,GAAG,CAAE,GAAG,QAAQ,CAAE,GAAG,CAAE,GAAG,SAAS,CAAE,GAAG,GAAI,EAAE,GAAG,GAAG,EAAE,QAAQ,gBAAgB,CAAE;AAAA,YAC7L;AAAA,UACJ;AAAA;AAAA;AAAA,UAGA,uBAAuB;AAAA,YACnB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,kBAAkB,CAAE,GAAG,kBAAkB,CAAE,OAAO,KAAM,GAAG,kBAAkB,CAAE,OAAO,KAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,IAAI,GAAG,GAAG,EAAE,QAAQ,QAAQ,CAAE;AAAA,YAClL;AAAA,YACA,OAAO,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,EAAE;AAAA,UAC9C;AAAA,UACA,uBAAuB;AAAA,YACnB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,kBAAkB,CAAE,OAAO,KAAM,GAAG,kBAAkB,CAAE,OAAO,KAAM,GAAG,QAAQ,CAAE,GAAG,GAAI,GAAG,QAAQ,CAAE,GAAG,GAAI,GAAG,YAAY,EAAE,CAAE;AAAA,YAC3J;AAAA,UACJ;AAAA,UACA,wBAAwB;AAAA,YACpB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,kBAAkB,CAAE,OAAO,KAAM,GAAG,kBAAkB,CAAE,OAAO,KAAM,GAAG,QAAQ,KAAK,QAAQ,KAAK,YAAY,EAAE,CAAE;AAAA,YAC7I;AAAA,YACA,OAAO,EAAE,QAAQ,GAAG,QAAQ,EAAE;AAAA,UAClC;AAAA,UACA,uBAAuB;AAAA,YACnB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,kBAAkB,CAAE,OAAO,KAAM,GAAG,kBAAkB,CAAE,OAAO,KAAM,GAAG,QAAQ,CAAE,GAAG,KAAM,GAAG,QAAQ,CAAE,GAAG,KAAM,GAAG,YAAY,EAAE,CAAE;AAAA,YAC/J;AAAA,UACJ;AAAA,UACA,wBAAwB;AAAA,YACpB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,kBAAkB,CAAE,OAAO,KAAM,GAAG,kBAAkB,CAAE,OAAO,KAAM,GAAG,QAAQ,KAAK,QAAQ,KAAK,YAAY,EAAE,CAAE;AAAA,YAC7I;AAAA,YACA,OAAO,EAAE,QAAQ,GAAG,QAAQ,EAAE;AAAA,UAClC;AAAA;AAAA,UAEA,uBAAuB;AAAA,YACnB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,QAAQ,CAAE,MAAM,GAAI,GAAG,QAAQ,CAAE,MAAM,GAAI,EAAE,GAAG,GAAK;AAAA,cAC5E,CAAE,EAAE,QAAQ,KAAK,QAAQ,KAAK,YAAY,EAAE,GAAG,GAAK;AAAA,cACpD,CAAE,EAAE,QAAQ,GAAG,QAAQ,EAAE,GAAG,GAAK;AAAA,YACrC;AAAA,UACJ;AAAA;AAAA,UAEA,wBAAwB;AAAA,YACpB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,QAAQ,MAAM,QAAQ,KAAK,GAAG,IAAK;AAAA,cACvC,CAAE,EAAE,QAAQ,KAAK,QAAQ,KAAK,YAAY,EAAE,GAAG,IAAK;AAAA,cACpD,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,QAAQ,KAAK,QAAQ,IAAI,GAAG,GAAK;AAAA,YAC5D;AAAA,YACA,OAAO,EAAE,QAAQ,GAAG,QAAQ,EAAE;AAAA,UAClC;AAAA;AAAA,UAEA,yBAAyB;AAAA,YACrB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,YAAY,CAAE,KAAK,GAAK,EAAE,GAAG,KAAM,EAAE,QAAQ,cAAc,CAAE;AAAA,cACpF,CAAE,EAAE,YAAY,GAAG,GAAG,GAAK;AAAA,cAC3B,CAAE,EAAE,YAAY,EAAE,GAAG,GAAK;AAAA,YAC9B;AAAA,UACJ;AAAA;AAAA,UAEA,0BAA0B;AAAA,YACtB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,YAAY,GAAG,GAAG,GAAK;AAAA,cAC3B,CAAE,EAAE,SAAS,CAAE,GAAG,cAAc,CAAE,GAAG,YAAY,KAAM,GAAG,GAAK;AAAA,YACnE;AAAA,YACA,OAAO,EAAE,YAAY,EAAE;AAAA,UAC3B;AAAA;AAAA,UAEA,2BAA2B;AAAA,YACvB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,YAAY,CAAE,IAAI,IAAM,EAAE,GAAG,KAAM,EAAE,QAAQ,cAAc,CAAE;AAAA,cACpF,CAAE,EAAE,YAAY,IAAI,GAAG,GAAK;AAAA,cAC5B,CAAE,EAAE,YAAY,EAAE,GAAG,GAAK;AAAA,YAC9B;AAAA,UACJ;AAAA;AAAA,UAEA,4BAA4B;AAAA,YACxB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,YAAY,IAAI,GAAG,GAAK;AAAA,cAC5B,CAAE,EAAE,SAAS,CAAE,GAAG,cAAc,CAAE,GAAG,YAAY,IAAK,GAAG,GAAK;AAAA,YAClE;AAAA,YACA,OAAO,EAAE,YAAY,EAAE;AAAA,UAC3B;AAAA;AAAA,UAEA,2BAA2B;AAAA,YACvB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,YAAY,CAAE,IAAI,KAAM,EAAE,GAAG,KAAM,EAAE,QAAQ,cAAc,CAAE;AAAA,cACpF,CAAE,EAAE,YAAY,IAAI,GAAG,GAAK;AAAA,cAC5B,CAAE,EAAE,YAAY,EAAE,GAAG,GAAK;AAAA,YAC9B;AAAA,UACJ;AAAA;AAAA,UAEA,4BAA4B;AAAA,YACxB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,YAAY,GAAG,GAAG,GAAK;AAAA,cAC3B,CAAE,EAAE,SAAS,CAAE,GAAG,cAAc,CAAE,GAAG,YAAY,MAAM,GAAG,GAAK;AAAA,YACnE;AAAA,YACA,OAAO,EAAE,YAAY,EAAE;AAAA,UAC3B;AAAA;AAAA,UAEA,4BAA4B;AAAA,YACxB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,YAAY,CAAE,KAAK,IAAK,EAAE,GAAG,KAAM,EAAE,QAAQ,cAAc,CAAE;AAAA,cACpF,CAAE,EAAE,YAAY,GAAG,GAAG,GAAK;AAAA,cAC3B,CAAE,EAAE,YAAY,EAAE,GAAG,GAAK;AAAA,YAC9B;AAAA,UACJ;AAAA;AAAA,UAEA,6BAA6B;AAAA,YACzB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,YAAY,IAAI,GAAG,GAAK;AAAA,cAC5B,CAAE,EAAE,SAAS,CAAE,GAAG,cAAc,CAAE,GAAG,YAAY,KAAK,GAAG,GAAK;AAAA,YAClE;AAAA,YACA,OAAO,EAAE,YAAY,EAAE;AAAA,UAC3B;AAAA,UACA,wBAAwB;AAAA,YACpB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,YAAY,CAAE,GAAG,EAAG,GAAG,YAAY,EAAE,CAAE;AAAA,YAClE;AAAA,UACJ;AAAA,UACA,yBAAyB;AAAA,YACrB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,YAAY,KAAK,YAAY,EAAE,CAAE;AAAA,YAC5D;AAAA,YACA,OAAO,EAAE,YAAY,EAAE;AAAA,UAC3B;AAAA,UACA,0BAA0B;AAAA,YACtB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,YAAY,CAAE,GAAG,GAAI,GAAG,YAAY,EAAE,CAAE;AAAA,YACnE;AAAA,UACJ;AAAA,UACA,2BAA2B;AAAA,YACvB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,YAAY,IAAI,YAAY,EAAE,CAAE;AAAA,YAC3D;AAAA,YACA,OAAO,EAAE,YAAY,EAAE;AAAA,UAC3B;AAAA,UACA,0BAA0B;AAAA,YACtB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,YAAY,CAAE,GAAG,GAAI,GAAG,YAAY,EAAE,CAAE;AAAA,YACnE;AAAA,UACJ;AAAA,UACA,2BAA2B;AAAA,YACvB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,YAAY,KAAK,YAAY,EAAE,CAAE;AAAA,YAC5D;AAAA,YACA,OAAO,EAAE,YAAY,EAAE;AAAA,UAC3B;AAAA,UACA,2BAA2B;AAAA,YACvB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,YAAY,CAAE,GAAG,EAAG,GAAG,YAAY,EAAE,CAAE;AAAA,YAClE;AAAA,UACJ;AAAA,UACA,4BAA4B;AAAA,YACxB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,YAAY,IAAI,YAAY,EAAE,CAAE;AAAA,YAC3D;AAAA,YACA,OAAO,EAAE,YAAY,EAAE;AAAA,UAC3B;AAAA,UACA,2BAA2B;AAAA,YACvB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,YAAY,CAAE,GAAG,EAAG,GAAG,YAAY,EAAE,CAAE;AAAA,YAClE;AAAA,UACJ;AAAA,UACA,4BAA4B;AAAA,YACxB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,YAAY,KAAK,YAAY,EAAE,CAAE;AAAA,YAC5D;AAAA,YACA,OAAO,EAAE,YAAY,EAAE;AAAA,UAC3B;AAAA,UACA,6BAA6B;AAAA,YACzB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,YAAY,CAAE,GAAG,GAAI,GAAG,YAAY,EAAE,CAAE;AAAA,YACnE;AAAA,UACJ;AAAA,UACA,8BAA8B;AAAA,YAC1B,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,YAAY,IAAI,YAAY,EAAE,CAAE;AAAA,YAC3D;AAAA,YACA,OAAO,EAAE,YAAY,EAAE;AAAA,UAC3B;AAAA,UACA,6BAA6B;AAAA,YACzB,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,YAAY,CAAE,GAAG,GAAI,GAAG,YAAY,EAAE,CAAE;AAAA,YACnE;AAAA,UACJ;AAAA,UACA,8BAA8B;AAAA,YAC1B,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,YAAY,KAAK,YAAY,EAAE,CAAE;AAAA,YAC5D;AAAA,YACA,OAAO,EAAE,YAAY,EAAE;AAAA,UAC3B;AAAA,UACA,8BAA8B;AAAA,YAC1B,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,YAAY,CAAE,GAAG,EAAG,GAAG,YAAY,EAAE,CAAE;AAAA,YAClE;AAAA,UACJ;AAAA,UACA,+BAA+B;AAAA,YAC3B,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,YAAY,IAAI,YAAY,EAAE,CAAE;AAAA,YAC3D;AAAA,YACA,OAAO,EAAE,YAAY,EAAE;AAAA,UAC3B;AAAA;AAAA,UAEA,8BAA8B;AAAA,YAC1B,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,sBAAsB,CAAE,KAAK,GAAI,GAAG,kBAAkB,CAAE,GAAG,CAAE,GAAG,kBAAkB,CAAE,QAAQ,MAAO,GAAG,SAAS,CAAE,GAAG,IAAK,EAAE,CAAE;AAAA,YACxJ;AAAA,YACA,OAAO,EAAE,sBAAsB,GAAG,kBAAkB,OAAO,kBAAkB,MAAM;AAAA,UACvF;AAAA;AAAA;AAAA,UAGA,+BAA+B;AAAA,YAC3B,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,sBAAsB,CAAE,KAAK,GAAI,GAAG,kBAAkB,CAAE,GAAG,CAAE,GAAG,kBAAkB,CAAE,QAAQ,MAAO,GAAG,SAAS,KAAK,CAAE;AAAA,YACjJ;AAAA,YACA,OAAO,EAAE,sBAAsB,GAAG,kBAAkB,OAAO,kBAAkB,OAAO,SAAS,EAAE;AAAA,UACnG;AAAA;AAAA;AAAA,UAGA,gCAAgC;AAAA,YAC5B,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,sBAAsB,CAAE,KAAK,GAAI,GAAG,kBAAkB,CAAE,GAAG,CAAE,GAAG,kBAAkB,CAAE,GAAG,CAAE,GAAG,SAAS,CAAE,GAAG,GAAI,EAAE,CAAE;AAAA,YAC7I;AAAA,YACA,OAAO,EAAE,sBAAsB,GAAG,kBAAkB,OAAO,kBAAkB,MAAM;AAAA,UACvF;AAAA;AAAA;AAAA,UAGA,iCAAiC;AAAA,YAC7B,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,sBAAsB,CAAE,KAAK,GAAI,GAAG,kBAAkB,CAAE,GAAG,CAAE,GAAG,kBAAkB,CAAE,GAAG,CAAE,GAAG,SAAS,IAAI,CAAE;AAAA,YACtI;AAAA,YACA,OAAO,EAAE,sBAAsB,GAAG,kBAAkB,OAAO,kBAAkB,OAAO,SAAS,EAAE;AAAA,UACnG;AAAA;AAAA;AAAA,UAGA,gCAAgC;AAAA,YAC5B,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,sBAAsB,CAAE,KAAM,GAAK,GAAG,kBAAkB,CAAE,GAAG,CAAE,GAAG,kBAAkB,CAAE,GAAG,CAAE,GAAG,SAAS,CAAE,GAAG,IAAK,EAAE,CAAE;AAAA,YAChJ;AAAA,YACA,OAAO,EAAE,sBAAsB,GAAG,kBAAkB,OAAO,kBAAkB,MAAM;AAAA,UACvF;AAAA;AAAA;AAAA,UAGA,iCAAiC;AAAA,YAC7B,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,sBAAsB,CAAE,KAAM,GAAK,GAAG,kBAAkB,CAAE,GAAG,CAAE,GAAG,kBAAkB,CAAE,GAAG,CAAE,GAAG,SAAS,KAAK,CAAE;AAAA,YACzI;AAAA,YACA,OAAO,EAAE,sBAAsB,GAAG,kBAAkB,OAAO,kBAAkB,OAAO,SAAS,EAAE;AAAA,UACnG;AAAA;AAAA;AAAA,UAGA,iCAAiC;AAAA,YAC7B,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,sBAAsB,CAAE,KAAM,GAAK,GAAG,kBAAkB,CAAE,QAAQ,MAAO,GAAG,kBAAkB,CAAE,GAAG,CAAE,GAAG,SAAS,CAAE,GAAG,GAAI,EAAE,CAAE;AAAA,YACzJ;AAAA,YACA,OAAO,EAAE,sBAAsB,GAAG,kBAAkB,OAAO,kBAAkB,MAAM;AAAA,UACvF;AAAA;AAAA;AAAA,UAGA,kCAAkC;AAAA,YAC9B,iBAAiB;AAAA,YACjB,OAAO;AAAA,cACH,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,sBAAsB,CAAE,KAAM,GAAK,GAAG,kBAAkB,CAAE,QAAQ,MAAO,GAAG,kBAAkB,CAAE,GAAG,CAAE,GAAG,SAAS,IAAI,CAAE;AAAA,YAClJ;AAAA,YACA,OAAO,EAAE,sBAAsB,GAAG,kBAAkB,OAAO,kBAAkB,OAAO,SAAS,EAAE;AAAA,UACnG;AAAA,QACJ;AAGJ,iBAAS,cAAc,SAAS,eAAe,iBAAiB;AAC5D,mBAAS,eAAe,YAAY,SAAS,eAAe,gBAAgB,UAAU,CAAC;AAAA,QAC3F;AAOA,iBAAS,cAAc,SAAU,kBAAkB;AAC/C,cAAI,WAAWL,GAAE,OAAO,MAAM,CAAC,GAAG,gBAAgB;AAElD,cAAI,SAAS,SAAS,GAAG;AACrB,YAAAA,GAAE,KAAK,SAAS,QAAQ,GAAG,SAAS,GAAG,aAAa;AAChD,kBAAI,WAAW,SAAS,IAAI,CAAC;AAE7B,kBAAI,UAAU;AAIV,oBAAI,qBAAqB,YAAY,KAAK,YAAY,SAClD,kBAAkB,SAAS,KAAK,SAAS;AAE7C,oBAAI,SAAU,sBAAsB,mBAAmB,kBAAkB,QAAS,UAAU,YACxF,mBAAmB,mBAAmB,gBAAgB,MAAM,GAC5D,UAAU,CAAC;AAEf,wBAAQ,MAAM,IAAI,WAAW;AACzB,sBAAI,mBAAmB,SAAS,KAAK,SAAS;AAC9C,sBAAI,WAAW,iBAAiB,WAAW,CAAE,gBAAiB,IAAI;AAElE,sCAAoB,iBAAiB,KAAK,UAAU,QAAQ;AAC5D,2BAAS,WAAW;AAAA,gBACxB;AAEA,oBAAI,SAAS,GAAG;AACZ,2BAAS,IAAIA,GAAE,OAAO,CAAC,GAAG,iBAAiB,OAAO;AAAA,gBACtD,OAAO;AACH,2BAAS,UAAUA,GAAE,OAAO,CAAC,GAAG,iBAAiB,OAAO;AAAA,gBAC5D;AAAA,cACJ;AAAA,YACJ,CAAC;AAED,qBAAS,QAAQ;AAAA,UACrB;AAEA,mBAAS,SAAS,CAAC,CAAC;AAAA,QACxB;AAAA,MACJ,GAAG,OAAO,UAAU,OAAO,SAAS,QAAS,QAAQ,QAAQ;AAAA,IAC7D,CAAC;AAAA;AAAA;;;ACzvBD;AAAA;AAAA;AACA,KAAC,SAAS,iCAAiCQ,OAAMC,UAAS;AACzD,UAAG,OAAO,YAAY,YAAY,OAAO,WAAW;AACnD,eAAO,UAAUA,SAAQ;AAAA,eAClB,OAAO,WAAW,cAAc,OAAO;AAC9C,eAAOA,QAAO;AAAA,eACP,OAAO,YAAY;AAC1B,gBAAQ,QAAQ,IAAIA,SAAQ;AAAA;AAE5B,QAAAD,MAAK,QAAQ,IAAIC,SAAQ;AAAA,IAC3B,GAAG,SAAM,WAAW;AACpB;AAAA;AAAA,SAAiB,SAASC,UAAS;AAEzB,cAAI,mBAAmB,CAAC;AAGxB,mBAAS,oBAAoB,UAAU;AAGtC,gBAAG,iBAAiB,QAAQ;AAC3B,qBAAO,iBAAiB,QAAQ,EAAE;AAGnC,gBAAIC,UAAS,iBAAiB,QAAQ,IAAI;AAAA;AAAA,cACzC,SAAS,CAAC;AAAA;AAAA,cACV,IAAI;AAAA;AAAA,cACJ,QAAQ;AAAA;AAAA,YACT;AAGA,YAAAD,SAAQ,QAAQ,EAAE,KAAKC,QAAO,SAASA,SAAQA,QAAO,SAAS,mBAAmB;AAGlF,YAAAA,QAAO,SAAS;AAGhB,mBAAOA,QAAO;AAAA,UACf;AAIA,8BAAoB,IAAID;AAGxB,8BAAoB,IAAI;AAGxB,8BAAoB,IAAI;AAGxB,iBAAO,oBAAoB,CAAC;AAAA,QAC7B,GAEC;AAAA;AAAA;AAAA,UAEJ,SAASC,SAAQC,UAAS,qBAAqB;AAErD,gBAAI,8BAA8B;AAElC,cAAE,+BAA+B;AAAA,cAC7B,oBAAoB,CAAC;AAAA,cACrB,oBAAoB,CAAC;AAAA,cACrB,oBAAoB,CAAC;AAAA,cACrB,oBAAoB,CAAC;AAAA,cACrB,oBAAoB,CAAC;AAAA,cACrB,oBAAoB,CAAC;AAAA,cACrB,oBAAoB,CAAC;AAAA,YACvB,GAAG,gCAAgC,SAAS,QAAQC,YAAWC,UAAS,OAAO,QAAQ,UAAUC,QAAO;AACtG;AAEA,qBAAO;AAAA,gBACL;AAAA,gBACA,WAAWF;AAAA,gBACX,SAASC;AAAA,gBACT;AAAA,gBACA;AAAA,gBACA;AAAA,gBACA,OAAOC;AAAA,cACT;AAAA,YAEF,EAAE,MAAMH,UAAS,4BAA4B,GAAG,kCAAkC,WAAcD,QAAO,UAAU;AAAA,UAG7G;AAAA;AAAA;AAAA,UAEA,SAASA,SAAQC,UAAS,qBAAqB;AAErD,gBAAI,8BAA8B;AAElC,cAAE,+BAA+B;AAAA,cAC7B,oBAAoB,CAAC;AAAA,YACvB,GAAG,gCAAgC,SAASG,QAAO;AACjD;AAEA,kBAAI,SAAS;AAAA,gBAEX,QAAQ,SAAS,MAAM,SAAS;AAC9B,yBAAO,SAAS,iBAAiB;AAE/B,wBAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,CAAC;AACvD,yBAAK,CAAC,IAAI,KAAK,KAAK,IAAI;AACxB,2BAAO,IAAI,GAAG,KAAK;AACjB,2BAAK,IAAI,CAAC,IAAI,UAAU,CAAC;AAAA,oBAC3B;AACA,2BAAO,QAAQ,MAAM,MAAM,IAAI;AAAA,kBACjC;AAAA,gBACF;AAAA,gBAEA,QAAQ,SAAS,MAAM,QAAQ;AAC7B,sBAAI,WAAY,OAAO,UAAU,aAAc,SAAS,OAAO,IAAI,OAAO,MAAM;AAChF,yBAAO,SAAS,iBAAiB;AAC/B,6BAAS,MAAM,MAAM,SAAS;AAC9B,2BAAO,KAAK,MAAM,MAAM,SAAS;AAAA,kBACnC;AAAA,gBACF;AAAA,gBAEA,OAAO,SAAS,MAAM,OAAO;AAC3B,sBAAI,UAAW,OAAO,SAAS,aAAc,QAAQ,MAAM,IAAI,MAAM,MAAM;AAC3E,yBAAO,SAAS,gBAAgB;AAC9B,wBAAI,OAAO,KAAK,WAAW,MAAM,MAAM,MAAM,SAAS;AACtD,4BAAQ,MAAM,MAAM,SAAS;AAC7B,2BAAO;AAAA,kBACT;AAAA,gBACF;AAAA;AAAA;AAAA,gBAIA,YAAY,WAAW;AACrB,mBAAC,UAAU,SAAS,QAAQ,EAAE,QAAQ,SAAS,GAAG;AAChD,yBAAK,CAAC,IAAI,SAAS,QAAQ,IAAI;AAC7B,0BAAI,UAAU,OAAO,KAAK,EAAE,MAAM,GAAG;AAErC,8BAAQ,QAAQ,SAAS,GAAG;AAC1B,wBAAAA,OAAM,eAAe,MAAM,GAAG,WAAW;AACvC,8BAAI,OAAO,KAAK,CAAC,KAAK,YAAY;AAChC,iCAAK,CAAC,IAAI,OAAO,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE;AAAA,0BACjC,OAAO;AACL,iCAAK,CAAC,IAAI;AAAA,0BACZ;AAEA,iCAAO,KAAK,CAAC;AAAA,wBACf,CAAC;AAAA,sBACH,GAAG,IAAI;AAAA,oBACT;AAAA,kBACF,GAAG,IAAI;AAAA,gBACT;AAAA,cACF;AAEA,qBAAO;AAAA,YACT,EAAE,MAAMH,UAAS,4BAA4B,GAAG,kCAAkC,WAAcD,QAAO,UAAU;AAAA,UAG7G;AAAA;AAAA;AAAA,UAEA,SAASA,SAAQC,UAAS,qBAAqB;AAErD,gBAAI,8BAA8B;AAElC,cAAE,+BAA+B;AAAA,cAC7B,oBAAoB,CAAC;AAAA,cACrB,oBAAoB,CAAC;AAAA,cACrB,oBAAoB,CAAC;AAAA,cACrB,oBAAoB,CAAC;AAAA,cACrB,oBAAoB,CAAC;AAAA,cACrB,oBAAoB,CAAC;AAAA,cACrB,oBAAoB,CAAC;AAAA,YACvB,GAAG,gCAAgC,SAAS,QAAQG,QAAOD,UAAS,UAAU,UAAU,aAAa,OAAO;AAC1G;AAEA,kBAAI,oBAAoB;AACxB,kBAAI,eAAe;AAAA,gBACjB,UAAU;AAAA,gBACV,aAAa;AAAA,cACf;AAGA,uBAAS,cAAc;AACrB,oBAAI,gBAAgB,SAAS,kBAAkB,IAAI;AAEnD,iCAAiB,OAAO,KAAK,cAAc,SAAS,EAAE,QAAQ,SAAS,GAAG;AACxE,sBAAI,OAAO,cAAc,UAAU,CAAC;AAGpC,sBAAI,QAAQ,KAAK,UAAU;AACzB,yBAAK,SAAS,SAAS;AAAA,kBACzB;AAAA,gBACF,CAAC;AAAA,cACH;AAEA,uBAAS,SAAS,UAA6B;AAE7C,oBAAI,IAAI,UAAU;AAClB,oBAAI,OAAO,IAAI,MAAM,IAAI,CAAC;AAC1B,yBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,uBAAK,IAAI,CAAC,IAAI,UAAU,CAAC;AAAA,gBAC3B;AAEA,oBAAI,CAAC,UAAU;AACb,wBAAM,IAAI,MAAM,kFAAmF;AAAA,gBACrG;AAEA,oBAAI,UAAUC,OAAM,MAAM,MAAMA,QAAO,IAAI;AAC3C,oBAAI,gBAAgB,SAAS,kBAAkB,IAAI;AAEnD,kBAAE,QAAQ,EAAE,KAAK,SAASC,IAAG,MAAM;AACjC,sBAAI,iBAAiB,cAAc,aAAa,IAAI,GAAG;AAErD;AAAA,kBACF;AAEA,kBAAC,IAAI,OAAM,WAAW,MAAM,OAAO;AAAA,gBACrC,EAAE,KAAK,IAAI,CAAC;AAAA,cACd;AAEA,uBAAS,oBAAoB;AAE3B,oBAAI,UAAU,KAAK,WAAW,KAAK,UAAU,WAAW,CAAC;AACzD,uBAAO,QAAQ,IAAI,SAAS,OAAO;AACjC,sBAAI,MAAM,QAAQ,MAAM;AAEtB,wBAAI,IAAI,MAAM,SAAS,EAAE,MAAM,iBAAiB;AAChD,2BAAQ,KAAK,EAAE,CAAC,IAAK,EAAE,CAAC,IAAI;AAAA,kBAC9B;AACA,yBAAQ,CAAC,aAAa,MAAM,IAAI,IAAI,MAAM,OAAO;AAAA,gBACnD,CAAC,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI;AAAA,cAC9B;AAAC;AAMD,uBAAS,kBAA4B;AAEnC,oBAAI,IAAI,UAAU;AAClB,oBAAI,SAAS,IAAI,MAAM,CAAC;AACxB,yBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,yBAAO,CAAC,IAAI,UAAU,CAAC;AAAA,gBACzB;AAEA,oBAAI,YAAY,WAAW;AAAA,gBAAC;AAE5B,0BAAU,WAAW,UAAU,UAAU,WAAW;AACpD,oBAAI,MAAM,SAAS;AACjB,4BAAU,WAAW,UAAU,UAAU,WAAW,UAAU,SAAS;AAAA,gBACzE;AAGA,0BAAU,WAAW;AAErB,0BAAU,QAAQ,WAAW;AAC3B,sBAAI,eAAe,gBAAgB;AACnC,sBAAI,eAAe,OAAO,OAAO,UAAU,SAAS;AACpD,+BAAa,UAAU,CAAC,EAAE,OAAO,UAAU,UAAU,OAAO;AAC5D,+BAAa,WAAWD,OAAM,MAAM,UAAU,UAAU,QAAQ;AAChE,+BAAa,UAAU,UAAU,UAAU;AAC3C,kBAAAD,SAAQ,MAAM,cAAc,SAAS;AACrC,+BAAa,YAAY;AACzB,+BAAa,UAAU,cAAc;AACrC,yBAAO;AAAA,gBACT;AACA,0BAAU,cAAc;AAGxB,oBAAI,MAAM,SAAS;AACjB,yBAAO,QAAQ,WAAW;AAAA,gBAC5B;AACA,uBAAO,QAAQ,UAAU,OAAO,YAAY,SAAS,gBAAgB;AACrE,gBAAAA,SAAQ,MAAM,UAAU,WAAW,MAAM;AAEzC,uBAAO;AAAA,cACT;AAEA,8BAAgB,cAAc,WAAW;AACvC,yBAAS,WAAW,MAAM,EAAE,QAAQ,SAAS,GAAG;AAC9C,oBAAE,UAAU,YAAY;AAAA,gBAC1B,CAAC;AACD,yBAAS,MAAM;AAAA,cACjB;AAEA,qBAAO;AAAA,YACT,EAAE,MAAMF,UAAS,4BAA4B,GAAG,kCAAkC,WAAcD,QAAO,UAAU;AAAA,UAG7G;AAAA;AAAA;AAAA,UAEA,SAASA,SAAQC,UAAS,qBAAqB;AAErD,gBAAI,8BAA8B;AAElC,cAAE,+BAA+B;AAAA,cAC7B,oBAAoB,CAAC;AAAA,YACvB,GAAG,gCAAgC,SAASG,QAAO;AACjD;AAEA,kBAAI,WAAW,CAAC,WAAW,SAAS;AAEpC,uBAAS,eAAe,KAAK,UAAU;AACrC,uBAAO,KAAK,GAAG,EAAE,QAAQ,SAAU,KAAK;AACtC,sBAAI,SAAS,QAAQ,GAAG,IAAI,GAAG;AAC7B,oBAAAA,OAAM,oBAAoB,KAAK,KAAK,QAAQ;AAAA,kBAC9C;AAAA,gBACF,CAAC;AAAA,cACH;AAEA,uBAAS,MAAM,MAAM,QAAQ;AAC3B,qBAAK,UAAU,OAAO,UAAU,eAAe,KAAK,MAAM,SAAS,IAAI,KAAK,UAAU,CAAC;AAEvF,yBAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,sBAAI,KAAK,QAAQ,QAAQ,OAAO,CAAC,CAAC,KAAK,IAAI;AACzC,mCAAe,MAAM,KAAK;AAC1B,2BAAO,CAAC,EAAE,KAAK,IAAI;AACnB,yBAAK,QAAQ,KAAK,OAAO,CAAC,CAAC;AAAA,kBAC7B;AAAA,gBACF;AAEA,+BAAe,MAAM,IAAI;AAAA,cAC3B;AAEA,qBAAO;AAAA,gBACL;AAAA,cACF;AAAA,YAEF,EAAE,MAAMH,UAAS,4BAA4B,GAAG,kCAAkC,WAAcD,QAAO,UAAU;AAAA,UAG7G;AAAA;AAAA;AAAA,UAEA,SAASA,SAAQC,UAAS,qBAAqB;AAErD,gBAAI,8BAA8B;AAElC,cAAE,+BAA+B,CAAC,oBAAoB,CAAC,CAAC,GAAG,gCAAgC,SAAS,UAAU;AAC1G;AAMA,uBAASK,UAAS,MAAM,YAAY,SAAS;AAC3C,0BAAU,WAAW,CAAC;AACtB,oBAAI,MAAM,QAAQ,OAAO;AACzB,oBAAI,OAAO,QAAQ,SAAU,OAAO,SAAU,WAAW;AACzD,oBAAIC,SAAQ,OAAO,KAAK,GAAG;AAC3B,gBAAAA,OAAM,QAAQ,SAAS,MAAM;AAC3B,uBAAK,MAAM,IAAI,KAAK,MAAM,YAAY,KAAK,IAAI,GAAG;AAChD,4BAAQ,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,KAAK,OAAO,IAAI,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,IAAI,CAAC;AAAA,kBAChG;AACA,sBAAI,OAAO,UAAU,SAAS,KAAK,IAAI,IAAI,CAAC,KAAK,qBAAsB,IAAI,IAAI,KAAK,OAAQ,KAAK,MAAM,GAAG,EAAE,QAAQ,IAAI,KAAK,IAAI;AAC/H,oBAAAD,UAAS,MAAM,YAAY,EAAC,KAAK,IAAI,IAAI,GAAG,MAAM,CAAC,MAAK,IAAI,EAAE,KAAK,GAAG,EAAC,CAAC;AAAA,kBAC1E;AAAA,gBACF,CAAC;AAAA,cACH;AAEA,uBAAS,OAAO,MAAM,UAAU,YAAY,SAAS;AACnD,oBAAI,CAAC,YAAY,OAAO,cAAc,UAAU;AAC9C,kBAAAA,UAAS,MAAM,YAAY,OAAO;AAAA,gBACpC,OAAO;AACL,0BAAQ,MAAM,CAAC,YAAY,WAAW,QAAQ,EAAE,KAAK,GAAG,CAAC;AAAA,gBAC3D;AAAA,cACF;AAEA,kBAAI,QAAQ;AAAA,gBACV,QAAQ,SAAS,YAAY,KAAK,MAAM;AAAC,yBAAO,cAAc;AAAA,gBAAK;AAAA,gBACnE,gBAAgB,SAAS,YAAY,KAAK,MAAM;AAAC,yBAAO,KAAK,QAAQ,UAAU,IAAI;AAAA,gBAAG;AAAA,gBACtF,QAAQ,SAAS,YAAY,KAAK,MAAM;AAAC,yBAAO,IAAI,IAAI,aAAa;AAAA,gBAAW;AAAA,gBAChF,SAAS,SAAS,YAAY,KAAK,MAAM;AAAC,yBAAO,IAAI,IAAI,MAAM;AAAA,gBAAW;AAAA,gBAC1E,gBAAgB,SAAS,YAAY,KAAK,MAAM;AAAC,yBAAO,IAAI,IAAI,KAAK;AAAA,gBAAW;AAAA,cAClF;AAEA,uBAAS,OAAO,YAAY,SAAS;AAAC,uBAAO,QAAQ,UAAU,YAAY,OAAO;AAAA,cAAE;AACpF,uBAAS,eAAe,YAAY,SAAS;AAAC,uBAAO,gBAAgB,UAAU,YAAY,OAAO;AAAA,cAAE;AACpG,uBAAS,OAAO,YAAY,SAAS;AAAC,uBAAO,QAAQ,YAAY,YAAY,OAAO;AAAA,cAAE;AACtF,uBAAS,QAAQ,YAAY,SAAS;AAAC,uBAAO,SAAS,MAAM,YAAY,OAAO;AAAA,cAAE;AAClF,uBAAS,eAAe,YAAY,SAAS;AAAC,uBAAO,gBAAgB,MAAM,YAAY,OAAO;AAAA,cAAE;AAChG,uBAAS,OAAO,IAAI,SAAS;AAAC,gBAAAA,UAAS,IAAI,MAAM,OAAO;AAAA,cAAE;AAM1D,kBAAI,MAAM;AAGV,kBAAI,YAAY;AAAA,gBACd,YAAY,CAAC;AAAA,gBACb,SAAS,CAAC;AAAA,cACZ;AAEA,uBAAS,0BAAqC;AAC5C,oBAAI,UAAU,CAAC,EAAE,MAAM,KAAK,SAAS;AAErC,0BAAU,WAAW,WAAW,UAAU,aAAa;AACvD,0BAAU,UAAU,QAAQ,SAAS,UAAU;AAC/C,8BAAc;AAAA,cAChB;AAEA,uBAAS,wBAAsC;AAC7C,oBAAI,aAAa,CAAC,EAAE,MAAM,KAAK,SAAS;AAExC,0BAAU,QAAQ,WAAW,UAAU,UAAU;AACjD,0BAAU,aAAa,WAAW,SAAS,aAAa;AACxD,8BAAc;AAAA,cAChB;AAEA,uBAAS,mBAAmB;AAC1B,0BAAU,UAAU,CAAC;AACrB,0BAAU,aAAa,CAAC;AACxB,8BAAc;AAAA,cAChB;AAEA,uBAAS,mBAAmB;AAC1B,0BAAU,UAAU;AACpB,0BAAU,aAAa;AACvB,8BAAc;AAAA,cAChB;AAEA,uBAAS,gBAAgB;AACvB,oBAAI;AACF,sBAAI,OAAO,cAAc;AACvB,iCAAa,QAAQ,wBAAwB,UAAU,UAAU;AACjE,iCAAa,QAAQ,qBAAqB,UAAU,OAAO;AAAA,kBAC7D;AAAA,gBACF,SAAS,SAAS;AAAA,gBAAC;AAAC;AAAA,cACtB;AAEA,uBAAS,oBAAoB;AAC3B,oBAAI,YAAY;AAChB,oBAAI;AACF,+BAAc,OAAO,gBAAgB,aAAa,QAAQ,sBAAsB;AAChF,4BAAW,OAAO,gBAAgB,aAAa,QAAQ,mBAAmB;AAAA,gBAC5E,SAAS,SAAS;AAChB;AAAA,gBACF;AACA,+BAAe,UAAU,aAAa;AACtC,4BAAY,UAAU,UAAU;AAGhC,uBAAO,KAAK,SAAS,EAAE,QAAQ,SAAS,GAAG;AACzC,sBAAI,WAAW,UAAU,CAAC;AAC1B,sBAAI,OAAO,YAAY,YAAY,aAAa,KAAK;AACnD,8BAAU,CAAC,IAAI,WAAW,SAAS,MAAM,GAAG,IAAI,CAAC;AAAA,kBACnD;AAAA,gBACF,CAAC;AAAA,cACH;AAEA,qBAAO;AAAA,gBAEL,QAAQ,SAAS,QAAQ;AACvB,uBAAK,UAAU,CAAC,CAAC;AAEjB,sBAAI,UAAU,OAAO,SAAS;AAC5B,4BAAQ,KAAK,uBAAuB;AACpC,4BAAQ,KAAK,gGAAgG;AAAA,kBAC/G;AAEA,oCAAkB;AAElB,yBAAO,QAAQ;AAAA,gBACjB;AAAA,gBAEA,MAAM,WAAwB;AAC5B,sBAAI,CAAC,OAAO,SAAS;AAAE;AAAA,kBAAQ;AAC/B,sBAAI,KAAM,QAAQ,QAAQ,QAAQ;AAClC,sBAAI,WAAW,CAAC,EAAE,MAAM,KAAK,SAAS;AACtC,2BAAS,QAAQ,KAAK,SAAS,IAAI,GAAG;AACtC,qBAAG,MAAM,SAAS,QAAQ;AAAA,gBAC5B;AAAA,gBAEA;AAAA,gBAEA,MAAM;AAAA,kBACJ;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,kBACA;AAAA,gBACF;AAAA,gBAEA,QAAQ;AAAA,kBACN;AAAA;AAAA;AAAA,kBAIA,aAAa;AAAA;AAAA;AAAA,kBAIb,WAAW;AAAA,kBAEX,QAAQ;AAAA,kBACR,SAAS;AAAA,gBACX;AAAA,cACF;AAAA,YACF,EAAE,MAAML,UAAS,4BAA4B,GAAG,kCAAkC,WAAcD,QAAO,UAAU;AAAA,UAG7G;AAAA;AAAA;AAAA,UAEA,SAASA,SAAQC,UAAS,qBAAqB;AAErD,gBAAI,8BAA8B;AAElC,cAAE,+BAA+B;AAAA,cAC7B,oBAAoB,CAAC;AAAA,YACvB,GAAG,gCAAgC,SAASG,QAAO;AACjD;AAEA,kBAAI,gBAAgB;AAAA,gBAClB,IAAI;AAAA,gBACJ,SAAS;AAAA,gBACT,KAAK;AAAA,cACP;AAEA,uBAAS,aAAa,MAAM;AAC1B,oBAAI,SAAS,KAAK,UAAU,KAAK,QAAQ,YAAY,IAAI,KAAK,SAAS;AACvE,oBAAI,WAAW,KAAK,YAAY,MAAO,KAAK,YAAa;AACzD,oBAAI,SAAS,SAAS;AACtB,uBAAO,KAAK,UAAU,CAAC,KAAM,GAAI,EAAE,KAAK,MAAM,IAAI;AAAA,cACpD;AAEA,uBAAS,IAAI,QAAQF,YAAW,WAAW;AACzC,oBAAI,CAAC,OAAO,SAAS,CAAC,OAAO,MAAM,SAAS;AAC1C;AAAA,gBACF;AACA,oBAAI,MAAM,WAAW,MAAM,IAAI,SAAS,WAAW,UAAU,gBAAgB,cAAc;AAE3F,oBAAI,OAAO,UAAU,UAAU,SAAS,CAAC,KAAK,YAAY;AACxD,uBAAK,UAAU,IAAI;AACnB,uBAAK,GAAG,WAAW;AAAA,gBACrB;AAEA,oBAAI,UAAU,UAAU,GAAG;AACzB,yBAAOA,WAAU,MAAM,CAAC;AACxB,8BAAY,UAAU,CAAC;AAAA,gBACzB,WAAY,UAAU,UAAU,KAAM,OAAO,UAAU,CAAC,KAAK,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM;AAE3F,yBAAOA,WAAU,MAAM,CAAC;AACxB,8BAAY,UAAU,CAAC;AACvB,sBAAI,UAAU,WAAW;AACvB,8BAAU,UAAU,CAAC;AAAA,kBACvB;AAAA,gBACF,OAAO;AAEL,yBAAO,UAAU,CAAC;AAClB,8BAAY,UAAU,CAAC;AACvB,sBAAI,UAAU,WAAW;AACvB,8BAAU,UAAU,CAAC;AAAA,kBACvB;AAAA,gBACF;AAEA,uBAAO,OAAO,aAAa,WAAW,UAAU,OAAO;AAEvD,4BAAY,OAAO,MAAM,OAAO;AAGhC,iCAAiB,UAAU,WAAW,SAAU,UAAU,QAAQ,QAAQ,MAAM,IAAI;AAEpF,2BAAW,SAAS,MAAM;AACxB,yBAAO,KAAK,OAAO,OAAO,IAAI,OAAO,MAAM,KAAK,QAAQ,OAAO,IAAI,IAAI,GAAG;AAAA,gBAC5E;AACA,+BACE,UAAU,cAAc,SACxB,UAAU,WAAW,KAAK,SAAS,GAAG;AAAC,yBAAO,SAAS,CAAC,EAAE,KAAK,IAAI;AAAA,gBAAE,CAAC;AAExE,oBAAI,kBAAkB,cAAc;AAClC,yBAAO,CAAC,cAAc,MAAM,GAAG,QAAQ,MAAM,OAAO,GAAG;AACvD,6BAAW,KAAK,KAAK,OAAO;AAC5B,uBAAK,KAAK,aAAa,IAAI,CAAC;AAC5B,uBAAK,KAAKA,WAAU,YAAY,SAAS,MAAM,GAAG,EAAE,MAAM,GAAE,CAAC,EAAE,KAAK,GAAG,CAAC;AACxE,0BAAQ,kBAAkB,UAAU,aAAa,QAAQ,eAAe,QAAQ,IAAI;AAEpF,2BAAS,UAAU,MAAM,KAAK,QAAQ,MAAM,SAAS,IAAI;AAAA,gBAC3D;AAAA,cACF;AAEA,uBAAS,cAAc;AACrB,qBAAK,OAAO,WAAW,WAAW;AAChC,sBAAI,WAAW,MAAME,OAAM,QAAQ,SAAS,CAAC;AAAA,gBAC/C,CAAC;AACD,oBAAI,QAAQ,gBAAgB;AAC1B,uBAAK,MAAM,WAAW,WAAW;AAC/B,4BAAQ,SAAS;AAAA,kBACnB,CAAC;AAAA,gBACH;AACA,qBAAK,OAAO,MAAM,WAAW;AAC3B,sBAAI,MAAM,MAAMA,OAAM,QAAQ,SAAS,CAAC;AAAA,gBAC1C,CAAC;AACD,qBAAK,OAAO,OAAO,WAAW;AAC5B,sBAAI,OAAO,MAAMA,OAAM,QAAQ,SAAS,CAAC;AAAA,gBAC3C,CAAC;AAAA,cACH;AAEA,qBAAO;AAAA,YACT,EAAE,MAAMH,UAAS,4BAA4B,GAAG,kCAAkC,WAAcD,QAAO,UAAU;AAAA,UAG7G;AAAA;AAAA;AAAA,UAEA,SAASA,SAAQC,UAAS,qBAAqB;AAErD,gBAAI,8BAA8B;AAElC,cAAE,+BAA+B,CAAC,GAAG,gCAAgC,WAAW;AAC5E;AAEA,uBAAS,eAAe,UAAU,MAAM;AACtC,oBAAI,SAASO,OAAM;AACnB,oBAAI,MAAM,KAAK;AAEf,oBAAI,OAAO,KAAK,MAAM,CAAC,KAAK,YAAY;AACtC,yBAAO;AACP,6BAAW,KAAK,GAAG;AAAA,gBACrB;AAEA,oBAAI,OAAO,KAAK,MAAM,CAAC,KAAK,UAAU;AACpC,yBAAO;AAAA,gBACT;AAEA,oBAAI,OAAO,GAAG;AACZ,4BAAU,KAAK,CAAC;AAChB,kBAAAA,QAAO,KAAK,CAAC;AAAA,gBACf,OAAO;AACL,4BAAU,SAAS;AACnB,kBAAAA,QAAO,KAAK,CAAC;AAAA,gBACf;AAEA,uBAAO;AAAA,kBACL;AAAA,kBACA,MAAMA;AAAA,kBACN;AAAA,gBACF;AAAA,cACF;AAEA,uBAAS,WAAW,GAAG,GAAG;AACxB,uBACG,EAAE,WAAW,EAAE,WACf,EAAE,QAAQ,EAAE,SACZ,EAAE,YAAY,QAAS,EAAE,YAAY,EAAE;AAAA,cAE5C;AAEA,uBAAS,WAAW;AAElB,oBAAI,WAAW;AAEf,iBAAC,KAAK,QAAQ,WAAW;AACvB,uBAAK,aAAa,CAAC;AACnB,uBAAK,eAAe,CAAC;AACrB,uBAAK,SAAS,CAAC;AAAA,gBACjB,GAAG,KAAK,IAAI;AAEZ,yBAAS,cAAcN,YAAW;AAChC,uBAAK,YAAYA;AACjB,uBAAK,aAAa,CAAC;AACnB,uBAAK,YAAY,CAAC;AAElB,uBAAK,cAAc,SAAS,UAAU;AACpC,wBAAI,eAAe,IAAI,aAAa,QAAQ;AAC5C,yBAAK,UAAU,SAAS,QAAQ,IAAI;AACpC,yBAAK,WAAW,KAAK,SAAS,IAAI;AAElC,2BAAO;AAAA,kBACT;AAEA,uBAAK,iBAAiB,SAAS,UAAU;AACvC,2BAAO,KAAK,UAAU,SAAS,QAAQ;AACvC,wBAAI,cAAc,KAAK,WAAW,QAAQ,SAAS,IAAI;AACvD,oBAAC,cAAc,MAAO,KAAK,WAAW,OAAO,aAAa,CAAC;AAE3D,wBAAI,CAAC,OAAO,KAAK,KAAK,SAAS,EAAE,QAAQ;AAEvC,+BAAS,oBAAoB,IAAI;AAAA,oBACnC;AAAA,kBACF;AAEA,uBAAK,eAAe,SAAS,MAAM;AACjC,2BAAO,KAAK,WAAW,QAAQ,IAAI,IAAI;AAAA,kBACzC;AAAA,gBACF;AAEA,yBAAS,aAAa,UAAU;AAC9B,uBAAK,WAAW;AAChB,uBAAK,SAAS,CAAC;AAEf,uBAAK,UAAU,SAAS,OAAO;AAC7B,yBAAK,OAAO,KAAK,KAAK;AACtB,6BAAS,OAAO,KAAK,KAAK;AAAA,kBAC5B;AAEA,uBAAK,aAAa,SAAS,OAAO;AAChC,6BAAS,IAAI,GAAG,GAAG,IAAI,KAAK,OAAO,CAAC,GAAG,KAAK;AAC1C,0BAAI,WAAW,GAAG,KAAK,GAAG;AACxB,6BAAK,OAAO,OAAO,GAAG,CAAC;AAAA,sBACzB;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAEA,qBAAK,cAAc,SAAS,UAAU;AACpC,sBAAIA,aAAY,KAAK,kBAAkB,QAAQ;AAE/C,sBAAI,CAACA,YAAW;AACd,oBAAAA,aAAY,IAAI,cAAc,SAAS,WAAW;AAClD,yBAAK,WAAW,KAAKA,UAAS;AAAA,kBAChC;AAEA,sBAAI,OAAOA,WAAU,YAAY,QAAQ;AAEzC,uBAAK,aAAa,SAAS,QAAQ,IAAI;AAEvC,yBAAOA;AAAA,gBACT;AAEA,qBAAK,iBAAiB,SAAS,UAAU;AAEvC,sBAAI,gBAAgB,KAAK,kBAAkB,QAAQ;AACnD,mCAAiB,cAAc,eAAe,QAAQ;AAGtD,yBAAO,KAAK,aAAa,SAAS,QAAQ;AAAA,gBAC5C;AAEA,qBAAK,sBAAsB,SAAS,eAAe;AACjD,sBAAIO,SAAQ,KAAK,WAAW,QAAQ,aAAa;AACjD,kBAACA,SAAQ,MAAO,KAAK,WAAW,OAAOA,QAAO,CAAC;AAAA,gBACjD;AAEA,qBAAK,oBAAoB,SAAS,OAAO;AACvC,sBAAIP,aAAY,MAAM,WAAW,QAAQ,MAAM;AAE/C,2BAAS,IAAI,GAAG,GAAG,IAAI,KAAK,WAAW,CAAC,GAAG,KAAK;AAC9C,wBAAI,EAAE,cAAcA,YAAW;AAC7B,6BAAO;AAAA,oBACT;AAAA,kBACF;AAEA,yBAAO;AAAA,gBACT;AAEA,qBAAK,mBAAmB,SAAS,UAAU;AACzC,yBAAO,KAAK,aAAa,SAAS,QAAQ,KAAK;AAAA,gBACjD;AAEA,qBAAK,qBAAqB,SAAS,UAAU;AAC3C,yBAAO,KAAK,iBAAiB,QAAQ,EAAE,OAAO,IAAI,SAAS,IAAI;AAC7D,2BAAO,GAAG;AAAA,kBACZ,CAAC;AAAA,gBACH;AAEA,qBAAK,yBAAyB,SAAS,MAAM;AAC3C,sBAAI,SAAS,CAAC;AACd,yBAAO,KAAK,KAAK,YAAY,EAAE,QAAQ,SAAS,GAAG;AACjD,wBAAI,mBAAmB,KAAK,aAAa,CAAC;AAC1C,wBAAI,iBAAiB,SAAS,SAAS,MAAM;AAC3C,6BAAO,KAAK,gBAAgB;AAAA,oBAC9B;AAAA,kBACF,GAAG,IAAI;AACP,yBAAO;AAAA,gBACT;AAEA,qBAAK,KAAK,SAAS,aAAa;AAC9B,sBAAI,WAAW,SAAS,iBAAiB,IAAI,GAAG;AAGhD,sBAAI,IAAI,UAAU,QAAQ,IAAI;AAC9B,sBAAI,YAAY,IAAI,MAAM,IAAI,CAAC;AAC/B,yBAAO,IAAI,GAAG,KAAK;AACjB,8BAAU,IAAI,CAAC,IAAI,UAAU,CAAC;AAAA,kBAChC;AAEA,sBAAI,UAAU;AACZ,oCAAgB,YAAY,MAAM,MAAM,SAAS;AACjD,wBAAI,eAAe;AACjB,gCAAU,UAAU,SAAS,CAAC,IAAI;AAAA,oBACpC;AACA,wBAAI,QAAQ,eAAe,MAAM,SAAS;AAC1C,6BAAS,QAAQ,KAAK;AAAA,kBACxB;AAAA,gBACF;AAEA,qBAAK,MAAM,WAAiC;AAC1C,sBAAI,QAAQ,eAAe,MAAM,SAAS,GACtC,WAAW,SAAS,iBAAiB,IAAI;AAE7C,sBAAI,UAAU;AACZ,6BAAS,WAAW,KAAK;AAAA,kBAC3B;AAGA,2BAAS,IAAI,GAAG,GAAG,IAAI,SAAS,OAAO,CAAC,GAAG,KAAK;AAC9C,wBAAI,WAAW,GAAG,KAAK,GAAG;AACxB,+BAAS,OAAO,OAAO,GAAG,CAAC;AAAA,oBAC7B;AAAA,kBACF;AAAA,gBACF;AAGA,yBAAS,UAAU,WAAW;AAAA,gBAAC;AAE/B,qBAAK,WAAW,WAAW;AACzB,2BAAS,eAAe,IAAI;AAAA,gBAC9B;AAEA,qBAAK,mBAAmB,WAAW;AACjC,uBAAK,MAAM,cAAc,WAAW;AAClC,6BAAS,YAAY,IAAI;AAAA,kBAC3B,CAAC;AAED,uBAAK,OAAO,MAAM,SAAS,EAAE;AAC7B,uBAAK,MAAM,OAAO,SAAS,GAAG;AAE9B,yBAAO,SAAU,MAAO,WAAW,KAAK,MAAM,WAAW,SAAS,OAAO;AACzE,uBAAK,MAAM,YAAY,EAAC,KAAK,UAAU,QAAQ,WAAU,CAAC;AAAA,gBAC5D;AAAA,cAEF;AAEA,qBAAO,IAAI;AAAA,YACb,EAAE,MAAMD,UAAS,4BAA4B,GAAG,kCAAkC,WAAcD,QAAO,UAAU;AAAA,UAG7G;AAAA;AAAA;AAAA,UAEA,SAASA,SAAQC,UAAS,qBAAqB;AAErD,gBAAI,8BAA8B;AAElC,cAAE,+BAA+B,CAAC,oBAAoB,CAAC,CAAC,GAAG,gCAAgC,SAAS,OAAO;AACvG;AAEA,kBAAI,mBAAmB;AAEvB,uBAAS,kBAAkB;AACzB,oBAAI,wBAAwB,MAAM,WAAW,CAAC,OAAO,qBAAqB,0BAA0B;AACpG,oBAAI,uBAAuB;AAEzB,sBAAI;AACF,2BAAO,yBAAyB,QAAQ,MAAM;AAAA,kBAChD,SAAS,GAAG;AACX,2BAAO;AAAA,kBACR;AAAA,gBACF;AAEA,uBAAO;AAAA,cACT;AAEA,kBAAIG,SAAQ;AAAA,gBAEV,UAAU,SAAS,KAAK;AACtB,yBAAO,CAAC,EAAE,IAAI,YAAa,QAAQ;AAAA,gBACrC;AAAA,gBAEA,SAAS,SAAS,KAAK,MAAM;AAC3B,yBAAO,QAAQ;AACf,sBAAIM,OAAM,IAAI,QAAQ,MAAM,IAAI,MAAMA,OAAM,IAAI;AAChD,2BAAS,IAAI,MAAM,IAAIA,MAAK,KAAK;AAC/B,wBAAI,IAAI,IAAI,IAAI,IAAI,CAAC;AAAA,kBACvB;AACA,yBAAO;AAAA,gBACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAuBA,OAAO,WAAsC;AAE3C,sBAAI,IAAI,UAAU,QACd,OAAO,IAAI,MAAM,IAAI,CAAC;AAE1B,sBAAI,MAAM,GAAG;AACX,2BAAO,CAAC;AAAA,kBACV;AAEA,2BAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,yBAAK,IAAI,CAAC,IAAI,UAAU,CAAC;AAAA,kBAC3B;AAGA,uBAAK,CAAC,IAAI,CAAC;AAEX,sBAAI,KAAK,KAAK,SAAS,CAAC,MAAM,MAAM;AAElC,yBAAK,IAAI;AACT,yBAAK,QAAQ,IAAI;AAAA,kBACnB;AAEA,yBAAO,EAAE,OAAO,MAAM,QAAW,IAAI;AAAA,gBACvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAqBA,MAAM,SAAS,MAAM,OAAO,SAAS;AACnC,sBAAI,MAAM;AACR,2BAAO,KAAK,SAAS,CAAC,CAAC,EAAE,QAAQ,SAAS,KAAK;AAC7C,0BAAI,KAAK,GAAG,KAAK,SAAS;AACxB,8BAAM,IAAI,MAAM,wCAAwC,MAAM,mCAAmC;AAAA,sBACnG;AAEA,0BAAI,OAAO,KAAK,GAAG,KAAK,YAAY,OAAO,MAAM,GAAG,KAAK,UAAU;AAEjE,6BAAK,KAAK,KAAK,GAAG,GAAG,MAAM,GAAG,CAAC;AAAA,sBACjC,OAAO;AAEL,6BAAK,GAAG,IAAI,MAAM,GAAG;AAAA,sBACvB;AAAA,oBACF,GAAG,IAAI;AAAA,kBACT;AAEA,yBAAO;AAAA,gBACT;AAAA;AAAA;AAAA,gBAIA,uBAAuB,SAAS,KAAK,KAAK;AACxC,yBAAO,IAAI,qBAAqB,GAAG,IAAI,IAAI,GAAG,IAAI;AAAA,gBACpD;AAAA;AAAA;AAAA;AAAA,gBAKA,SAAS,WAAW;AAClB,sBAAI,QAAQ;AAEZ,yBAAO,WAAW;AAChB,wBAAI,OAAO;AAEX,6BAAS,IAAI,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK;AAC1C,6BAAO,CAAC,MAAM,CAAC,EAAE,MAAM,MAAM,IAAI,CAAC;AAAA,oBACpC;AAEA,2BAAO,KAAK,CAAC;AAAA,kBACf;AAAA,gBACF;AAAA;AAAA,gBAGA,aAAa,SAASC,QAAO;AAC3B,sBAAI,IAAI,CAAC,GAAG,IAAI,CAAC;AAEjB,2BAAS,IAAI,GAAG,IAAIA,OAAM,QAAQ,IAAI,GAAG,EAAE,GAAG;AAC5C,wBAAI,EAAE,eAAeA,OAAM,CAAC,CAAC,GAAG;AAC9B;AAAA,oBACF;AAEA,sBAAE,KAAKA,OAAM,CAAC,CAAC;AACf,sBAAEA,OAAM,CAAC,CAAC,IAAI;AAAA,kBAChB;AAEA,yBAAO;AAAA,gBACT;AAAA,gBAEA,UAAU,SAAS,MAAM,MAAM,WAAW;AACxC,sBAAI,OAAO,QAAQ,UAAU;AAC3B,2BAAO;AAAA,kBACT;AAEA,sBAAIC,UAAS;AAEb,yBAAO,WAAW;AAChB,wBAAI,UAAU,MAAM,OAAO;AAC3B,wBAAI,QAAQ,WAAW;AACrB,sBAAAA,WAAU;AACV,0BAAI,CAAC,WAAW;AACd,iCAAS,KAAK,MAAM,SAAS,IAAI;AAAA,sBACnC;AAAA,oBACF;AACA,wBAAI,UAAU,aAAa,CAACA;AAE5B,oBAAAA,YAAW,aAAaA,QAAO;AAC/B,oBAAAA,WAAU,WAAW,OAAO,IAAI;AAEhC,wBAAI,SAAS;AACX,+BAAS,KAAK,MAAM,SAAS,IAAI;AAAA,oBACnC;AAEA,2BAAO;AAAA,kBACT;AAAA,gBACF;AAAA,gBAEA,UAAU,SAAS,MAAM,MAAM;AAC7B,sBAAI,OAAO,QAAQ,UAAU;AAC3B,2BAAO;AAAA,kBACT;AAEA,sBAAI,SAAS,MAAMA,UAAS,YAAY,MAAM;AAC9C,sBAAI,WAAW,KAAK,SAAS,WAAW;AACtC,2BAAO,aAAa;AAAA,kBACtB,GAAG,IAAI;AAEP,yBAAO,WAAW;AAChB,8BAAU;AAAM,2BAAO;AACvB,wBAAI,QAAQ,WAAW;AACrB,sBAAAA,WAAU;AACV,0BAAI,MAAM;AACR,iCAAS,KAAK,MAAM,SAAS,IAAI;AAAA,sBACnC;AACA,+BAAS;AAAA,oBACX;AAEA,wBAAI,CAACA,UAAS;AACZ,sBAAAA,WAAU,WAAW,OAAO,IAAI;AAAA,oBAClC;AAEA,wBAAI,YAAY;AACd,6BAAO;AAAA,oBACT,OAAO;AACL,mCAAa;AACb,+BAAS,KAAK,MAAM,SAAS,IAAI;AAAA,oBACnC;AAEA,6BAAS;AACT,2BAAO;AAAA,kBACT;AAAA,gBACF;AAAA,gBAEA,WAAW,SAAS,KAAK,MAAM;AAC7B,yBAAO,WAAW;AAChB,wBAAI,CAAC,EAAE,KAAK;AAAE,6BAAO,KAAK,MAAM,MAAM,SAAS;AAAA,oBAAG;AAAA,kBACpD;AAAA,gBACF;AAAA,gBAEA,UAAU,SAAS,OAAO;AACxB,yBAAO,SAAS,GAAG,MAAM;AACvB,wBAAIC,UAAS,EAAE,EAAE,MAAM,GAAG;AAE1B,2BAAO,KAAK,KAAK,EAAE,QAAQ,SAAS,UAAU;AAC5C,0BAAI,CAAC,EAAE,qBAAqB,MAAM,SAASA,QAAO,QAAQ,QAAQ,GAAG,QAAQ;AAC3E,+BAAO,QAAQ,CAAC;AAChB,0BAAE,gBAAgB,KAAK,KAAK,OAAO,CAAC;AACpC,+BAAO,MAAM,QAAQ,EAAE,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC;AAAA,sBAC9C;AAAA,oBACF,GAAG,IAAI;AAAA,kBACT;AAAA,gBACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAeA,MAAM,SAAS,MAAM;AACnB,sBAAI,KAAK;AAET,yBAAO,WAAW;AAChB,wBAAI,KAAK;AACP,6BAAO;AAAA,oBACT;AAEA,0BAAM;AACN,6BAAS,KAAK,MAAM,MAAM,SAAS;AAEnC,2BAAO;AAAA,kBACT;AAAA,gBACF;AAAA,gBAEA,qBAAqB,SAAS,KAAK,MAAM,UAAU;AACjD,sBAAI,gBAAgB,KAAK,IAAI,eAAe,IAAI,GAAG;AACjD,2BAAO,eAAe,KAAK,MAAM,EAAE,SAAmB,CAAC;AAAA,kBACzD;AAAA,gBACF;AAAA;AAAA,gBAGA,gBAAgB,SAAS,KAAK,MAAM,IAAI;AACtC,sBAAI;AAEJ,sBAAI,CAAC,gBAAgB,KAAK,CAAC,IAAI,eAAe,IAAI,GAAG;AACnD,uBAAG,KAAK,GAAG;AACX;AAAA,kBACF;AAEA,6BAAW,OAAO,yBAAyB,KAAK,IAAI,EAAE;AAEtD,yBAAO,eAAe,KAAK,MAAM,EAAE,UAAU,KAAK,CAAC;AACnD,qBAAG,KAAK,GAAG;AACX,yBAAO,eAAe,KAAK,MAAM,EAAE,SAAmB,CAAC;AAAA,gBAEzD;AAAA,cAEF;AAEA,qBAAOT;AAAA,YACT,EAAE,MAAMH,UAAS,4BAA4B,GAAG,kCAAkC,WAAcD,QAAO,UAAU;AAAA,UAG7G;AAAA;AAAA;AAAA,UAEA,SAASA,SAAQC,UAAS,qBAAqB;AAErD,gBAAI,8BAA8B;AAElC,cAAE,+BAA+B;AAAA,cAC7B,oBAAoB,CAAC;AAAA,cACrB,oBAAoB,CAAC;AAAA,cACrB,oBAAoB,CAAC;AAAA,YACvB,GAAG,gCAAgC,SAASG,QAAO,UAAU,OAAO;AAClE;AAIA,kBAAI,cAAc;AAElB,uBAAS,iBAAiB,cAAc;AACtC,oBAAI,CAAC,cAAc;AAAE;AAAA,gBAAQ;AAE7B,6BAAa,OAAO,MAAM,EAAE,QAAQ,SAAS,OAAO;AAClD,sBAAI,OAAO,CAAC,MAAM,IAAI;AAEtB,wBAAM,WAAW,KAAK,QAAQ,MAAM,OAAO;AAC3C,kBAAC,OAAO,MAAM,YAAY,cAAe,KAAK,KAAK,MAAM,QAAQ;AAEjE,uBAAK,IAAI,MAAM,MAAM,IAAI;AAAA,gBAC3B,GAAG,aAAa,QAAQ;AAAA,cAC1B;AAEA,uBAAS,kBAAkBI,OAAM,MAAM;AACrC,oBAAI;AACF,yBAAO,YAAY,MAAM,GAAG;AAAA,gBAC9B,SAAS,GAAG;AACV,wBAAM,KAAK,KAAK,MAAM;AAAA,oBACpB;AAAA,oBAAWA;AAAA,oBAAM;AAAA,oBACjB;AAAA,kBACF,EAAE,KAAK,EAAE,CAAC;AAAA,gBACZ;AAAA,cACF;AAEA,uBAAS,uBAAuB,KAAK;AACnC,sBAAM,KAAK,KAAK,MAAM;AAAA,kBACpB;AAAA,kBAAe;AAAA,kBAAK;AAAA,kBACpB;AAAA,gBACF,EAAE,KAAK,EAAE,CAAC;AAAA,cACZ;AAEA,uBAAS,eAAeM,QAAO;AAC7B,oBAAI,cAAc,CAAC,GAAG;AAEtB,qBAAK,OAAO,IAAI,KAAK;AAErB,oBAAI,MAAM,WAAW,OAAO,SAAS;AACnC,2BAAS,OAAO,KAAK,QAAQ,WAAW;AACtC,gCAAY,KAAK,GAAG;AAAA,kBACtB;AACA,iCAAe,OAAO,KAAKA,MAAK;AAEhC,2BAAS,IAAI,aAAa,SAAS,GAAG,KAAK,GAAG,KAAK;AACjD,wBAAI,YAAY,QAAQ,aAAa,CAAC,CAAC,KAAK,IAAI;AAC9C,4BAAM,KAAK,KAAK,MAAM,8BAA8B,aAAa,CAAC,IAAI,IAAI;AAC1E;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAEA,yBAAS,OAAO,KAAK,QAAQ,WAAW;AACtC,sBAAI,OAAOA,OAAM,GAAG,KAAK,aAAa;AACpC,wBAAI,KAAK,KAAK,GAAG,MAAM,MAAM;AAC3B,4BAAM,IAAI,MAAM,yBAAyB,MACzB,gDAAgD,KAAK,SAAS,IAAI,IAAI;AAAA,oBACxF;AAEA,wBAAI,MAAM,WAAW,OAAO,KAAK,KAAK,GAAG,MAAM,UAAU;AACvD,6CAAuB,KAAK,MAAM,GAAG;AAAA,oBACvC;AAAA,kBACF,OAAO;AACL,yBAAK,KAAK,GAAG,IAAIA,OAAM,GAAG;AAAA,kBAC5B;AAEA,sBAAI,OAAO,KAAK,KAAK,GAAG,KAAK,YAAY;AACvC,yBAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE,KAAK,IAAI;AAAA,kBAC3C;AAAA,gBACF;AAAA,cAEF;AAEA,uBAAS,yBAAyBA,QAAO;AACvC,oBAAI,MAAM,SAAS;AACjB,wBAAM,KAAK,KAAK,MAAM,0EAA0E;AAAA,gBAClG;AAIA,oBAAI,OAAO,OAAO,OAAOA,MAAK;AAE9B,yBAAS,OAAO,KAAK,UAAU;AAC7B,sBAAI,CAACA,OAAM,eAAe,GAAG,GAAG;AAC9B,yBAAK,GAAG,IAAI,KAAK,SAAS,GAAG;AAE7B,wBAAI,MAAM,WAAW,OAAO,KAAK,SAAS,GAAG,MAAM,UAAU;AAC3D,6CAAuB,KAAK,MAAM,GAAG;AAAA,oBACvC;AAAA,kBACF;AAAA,gBACF;AAEA,qBAAK,OAAO;AAEZ,uBAAO,KAAK,KAAK,YAAY,CAAC,CAAC,EAAE,QAAQ,SAASC,MAAK;AACrD,sBAAI,KAAK,SAASA,IAAG,MAAM,QAAQ,KAAK,KAAKA,IAAG,MAAM,MAAM;AAC1D,0BAAM,IAAI,MAAM,yBAAyBA,OACzB,gDAAgD,KAAK,SAAS,IAAI,IAAI;AAAA,kBACxF;AAAA,gBACF,GAAG,IAAI;AAAA,cACT;AAEA,uBAAS,aAAa,aAAa;AACjC,uBAAO,SAAS,GAAG,MAAM;AACvB,oBAAE,EAAE,MAAM,EAAE,QAAQ,aAAa,IAAI;AAAA,gBACvC;AAAA,cACF;AAEA,uBAAS,WAAW;AAQlB,qBAAK,UAAU,WAAW;AACxB,sBAAI,UAAUP,OAAM,MAAM,OAAO;AACjC,sBAAI,YAAY,UAAU,SAAS,GAAG,UAAU,UAAU,SAAS;AAEnE,sBAAI,OAAO,WAAW,YAAY,EAAE,WAAW,QAAQ,kBAAkB;AACvE;AACA,2BAAO;AAAA,kBACT;AAEA,sBAAI,aAAa,GAAG;AAClB,+BAAW,EAAE,UAAU,CAAC,CAAC;AACzB,4BAAQ,UAAU,CAAC;AAAA,kBACrB,OAAO;AACL,+BAAW,KAAK;AAChB,4BAAQ,UAAU,CAAC;AAAA,kBACrB;AAEA,sBAAI,MAAM,iBAAiB;AACzB,gCAAY,MAAM;AAClB,4BAAQ,EAAE,MAAM,MAAM,IAAI;AAAA,kBAC5B;AAEA,kBAAAA,QAAO,MAAM,QAAQ;AAErB,sBAAI,MAAM,WAAW,OAAO,aAAa;AACvC,sCAAkB,KAAK,MAAMA,OAAM,IAAI;AAAA,kBACzC;AAEA,sBAAI,OAAO,KAAK,KAAK,aAAa,UAAU;AAC1C,2BAAO,EAAE,OAAO,MAAM,CAAC,GAAG,KAAK,KAAK,WAAW,IAAI;AAAA,kBACrD;AAEA,2BAAS,QAAS,SAASA,OAAO,IAAI;AAEtC,sBAAI,aAAa,CAAC,MAAM,mBAAmB,GAAG;AAC5C,qBAAC,KAAK,SAAS,KAAK,WAAW,KAAK,MAAM,OAAO,IAAI;AAAA,kBACvD;AAEA,yBAAO;AAAA,gBACT;AAGA,qBAAK,KAAK,WAAW;AACnB,sBAAI,UAAUA,OAAM,UAAU;AAC9B,sBAAI,YAAY,UAAU,SAAS,GAAGQ,UAAS,UAAU,SAAS;AAElE,sBAAI,OAAOA,WAAU,UAAU;AAE7B,iCAAaZ,OAAM;AAAA,sBACjB,KAAK,qBAAqBY,OAAM;AAAA,oBAClC;AAAA,kBACF,WAAW,OAAOA,WAAU,UAAU;AACpC,iCAAa,aAAaA,OAAM;AAAA,kBAClC,OAAO;AACL,iCAAaA;AAAA,kBACf;AAEA,sBAAI,aAAa,GAAG;AAClB,+BAAW,EAAE,UAAU,CAAC,CAAC;AACzB,oBAAAR,QAAO,UAAU,CAAC;AAAA,kBACpB,OAAO;AACL,+BAAW,KAAK;AAChB,oBAAAA,QAAO,UAAU,CAAC;AAAA,kBACpB;AAEA,sBAAI,OAAO,cAAc,cAAc,OAAO,cAAc,UAAU;AACpE,0BAAM,IAAI,MAAM,wBAAwBA,QACxB,6DAA6D;AAAA,kBAC/E;AAEA,6BAAW,WAAW,KAAK,IAAI;AAC/B,2BAAS,SAAS;AAClB,2BAAS,UAAU;AAEnB,2BAAS,GAAGA,OAAM,QAAQ;AAG1B,6BAAW,UAAU,WAAW,QAAQ,CAAC;AACzC,6BAAW,MAAM,KAAK,QAAQ;AAE9B,yBAAO;AAAA,gBACT;AAEA,qBAAK,MAAM,WAAW;AACpB,sBAAI,UAAUA,OAAM;AACpB,sBAAI,YAAY,UAAU,SAAS;AAEnC,sBAAI,OAAO,UAAU,SAAS,KAAK,YAAY;AAC7C,+BAAW,UAAU,SAAS;AAC9B,iCAAa;AAAA,kBACf;AAEA,sBAAI,aAAa,GAAG;AAClB,+BAAW,EAAE,UAAU,CAAC,CAAC;AACzB,oBAAAA,QAAO,UAAU,CAAC;AAAA,kBACpB,OAAO;AACL,+BAAW,KAAK;AAChB,oBAAAA,QAAO,UAAU,CAAC;AAAA,kBACpB;AAEA,sBAAI,UAAU;AAEZ,wBAAI,iBAAiB,SAAS,SAAS,SAAS,OAAO,QAAQ,SAAS,SAAS,CAAC;AAElF,sCAAkB,eAAe,KAAK,SAAS,IAAI,GAAG,KAAK;AACzD,0BAAI,GAAG,WAAY,KAAK,YAAY,GAAG,QAAQ,UAAW;AACxD,4BAAI,OAAO,GAAG,CAAC;AACf,mCAAW;AACX,+BAAO;AAAA,sBACT;AAAA,oBACF,GAAG,IAAI;AACP,6BAAS,IAAIA,OAAM,QAAQ;AAAA,kBAC7B,OAAO;AAGL,6BAAS,iBAAiB,IAAI,EAAE,OAAO,QAAQ,SAAU,OAAO;AAC9D,0BAAIA,SAAQ,MAAM,MAAM;AACtB,iCAAS,IAAIA,OAAM,MAAM,QAAQ;AAAA,sBACnC;AAAA,oBACF,CAAC;AAAA,kBACH;AAEA,yBAAO;AAAA,gBACT;AAEA,qBAAK,uBAAuB,SAAS,UAAU;AAC7C,sBAAI,QAAQ,CAAC;AAEb,yBAAO,KAAK,QAAQ,EAAE,QAAQ,SAAS,GAAG;AACxC,wBAAI,EAAE,KAAK,KAAK,OAAO;AACrB,4BAAM,IAAI,MAAM,gBAAgB,KAAK,SAAS,IAAI,2BAA2B,IAAI,sCAAsC;AAAA,oBACzH;AACA,0BAAM,KAAK,KAAK,CAAC,CAAC,IAAK,OAAO,SAAS,CAAC,KAAK,WAAY,aAAa,SAAS,CAAC,CAAC,IAAI,SAAS,CAAC;AAAA,kBACjG,GAAG,IAAI;AAEP,yBAAO;AAAA,gBACT;AAEA,qBAAK,SAAS,SAAS,cAAc;AACnC,yBAAO,KAAK,MAAM,KAAK,KAAK,KAAK,YAAY,CAAC;AAAA,gBAChD;AAIA,qBAAK,aAAa,SAASM,QAAO;AAEhC,sBAAI,aAAa,WAAW;AAAA,kBAAC;AAE7B,sBAAI,KAAK,SAAS;AAChB,+BAAW,YAAY,IAAI,KAAK;AAAA,kBAClC;AAEA,2BAAS,QAAQA,QAAO;AACtB,+BAAW,UAAU,IAAI,IAAIA,OAAM,IAAI;AAAA,kBACzC;AAEA,uBAAK,UAAU;AAAA,gBACjB;AAIA,qBAAK,eAAe,SAASG,WAAU;AACrC,kBAAAb,OAAM,KAAK,KAAK,UAAUa,WAAU,IAAI,MAAM,KAAK,WAAWA;AAAA,gBAChE;AAEA,qBAAK,aAAa,SAAS,MAAMH,QAAO;AACtC,kBAAAA,SAAQA,UAAS,CAAC;AAClB,uBAAK,aAAa,KAAK,WAAW;AAElC,sBAAI,CAAC,MAAM;AACT,0BAAM,IAAI,MAAM,wBAAwB;AAAA,kBAC1C;AAEA,sBAAI,KAAK,QAAQ;AACf,yBAAK,OAAO,KAAK,CAAC;AAClB,yBAAK,QAAQ;AAAA,kBACf,OAAO;AACL,yBAAK,OAAO;AACZ,yBAAK,QAAQ,EAAE,IAAI;AAAA,kBACrB;AAEA,sBAAI,KAAK,SAAS;AAChB,mCAAe,KAAK,MAAMA,MAAK;AAAA,kBACjC,OAAO;AACL,6CAAyB,KAAK,MAAMA,MAAK;AAAA,kBAC3C;AAEA,yBAAO;AAAA,gBACT;AAEA,qBAAK,WAAW,WAAW;AACzB,sBAAI,eAAe,SAAS,iBAAiB,IAAI;AAEjD,sBAAI,cAAc;AAChB,qCAAiB,YAAY;AAAA,kBAC/B;AAAA,gBACF;AAAA,cACF;AAEA,qBAAO;AAAA,YACT,EAAE,MAAMb,UAAS,4BAA4B,GAAG,kCAAkC,WAAcD,QAAO,UAAU;AAAA,UAG7G;AAAA;AAAA,QACG,CAAC;AAAA;AAAA,IACV,CAAC;AAAA;AAAA;;;ACv7CD;AAAA;AAAA;AAIA,KAAC,WAAU;AAAC,UAAI,IAAE;AAAK,OAAC,WAAU;AAAC,SAAC,WAAU;AAAC,eAAK,aAAW,EAAC,YAAU,WAAU;AAAC,mBAAO,QAAM,OAAO,QAAQ,aAAW,QAAM,OAAO,yBAAuB,QAAM,OAAO;AAAA,UAAgB,GAAE,GAAE,OAAM,SAASkB,IAAE,GAAE;AAAC,mBAAO,EAAE,WAAW,MAAMA,IAAE,CAAC;AAAA,UAAC,GAAE,YAAW,WAAU;AAAC,mBAAO,EAAE,WAAW,WAAW;AAAA,UAAC,GAAE,qBAAoB,SAASA,IAAE;AAAC,mBAAO,EAAE,WAAW,oBAAoBA,EAAC;AAAA,UAAC,EAAC;AAAA,QAAC,GAAG,KAAK,IAAI;AAAA,MAAC,GAAG,KAAK,CAAC;AAAE,UAAI,IAAE,EAAE;AAAW,OAAC,WAAU;AAAC,SAAC,WAAU;AAAC,cAAIA,IAAE,GAAE,GAAE,IAAE,CAAC,EAAE;AAAM,YAAE,aAAW,SAASA,IAAE;AAAC,gBAAIC,IAAEC,IAAEC;AAAE,YAAAD,KAAE,CAAC;AAAE,iBAAID,MAAKD,GAAE,CAAAG,KAAEH,GAAEC,EAAC,GAAEC,GAAED,EAAC,IAAEE;AAAE,mBAAOD;AAAA,UAAC,GAAE,EAAE,UAAQ,SAASD,IAAEC,IAAE;AAAC,mBAAOF,GAAE,KAAKC,IAAEC,EAAC;AAAA,UAAC,GAAEF,MAAE,WAAU;AAAC,gBAAIA,IAAEC;AAAE,mBAAOD,KAAE,SAAS,iBAAgB,SAAOC,KAAED,GAAE,WAASC,KAAE,SAASD,IAAE;AAAC,kBAAIC;AAAE,mBAAIA,KAAE,MAAKA,MAAG;AAAC,oBAAGA,GAAE,aAAW,KAAK,gBAAc,EAAE,KAAKA,IAAED,EAAC,EAAE,QAAOC;AAAE,gBAAAA,KAAEA,GAAE;AAAA,cAAU;AAAA,YAAC;AAAA,UAAC,GAAE,GAAE,EAAE,QAAM,SAASD,IAAE;AAAC,mBAAO,WAAWA,IAAE,CAAC;AAAA,UAAC,GAAE,EAAE,WAAS,SAASA,IAAE;AAAC,gBAAIC;AAAE,mBAAOA,KAAE,MAAK,WAAU;AAAC,kBAAIC;AAAE,qBAAOA,KAAE,KAAG,UAAU,SAAO,EAAE,KAAK,WAAU,CAAC,IAAE,CAAC,GAAE,QAAMD,KAAEA,KAAEA,KAAE,sBAAsB,0BAASE,IAAE;AAAC,uBAAO,WAAU;AAAC,yBAAOF,KAAE,MAAKD,GAAE,MAAMG,IAAED,EAAC;AAAA,gBAAC;AAAA,cAAC,GAAE,IAAI,CAAC;AAAA,YAAC;AAAA,UAAC,GAAE,EAAE,WAAS,SAASF,IAAEC,IAAE;AAAC,gBAAIC,IAAEE,IAAE,GAAE,GAAE,GAAE;AAAE,mBAAO,IAAE,QAAMH,KAAEA,KAAE,CAAC,GAAE,IAAE,EAAE,QAAOC,KAAE,EAAE,YAAWE,KAAE,EAAE,MAAK,IAAE,SAAS,YAAY,QAAQ,GAAE,EAAE,UAAUJ,IAAE,MAAGE,OAAI,IAAE,GAAE,EAAE,OAAK,QAAME,KAAEA,KAAE,CAAC,GAAE,EAAE,cAAY,CAAC,MAAI,IAAE,EAAE,gBAAe,EAAE,iBAAe,WAAU;AAAC,qBAAO,KAAK,oBAAkB,OAAO,eAAe,MAAK,oBAAmB,EAAC,KAAI,WAAU;AAAC,uBAAM;AAAA,cAAE,EAAC,CAAC,GAAE,EAAE,KAAK,IAAI;AAAA,YAAC,KAAI,QAAM,IAAE,IAAE,UAAU,cAAc,CAAC,GAAE;AAAA,UAAC,GAAE,KAAE,WAAU;AAAC,gBAAIJ;AAAE,mBAAOA,KAAE,SAAS,YAAY,QAAQ,GAAEA,GAAE,UAAU,QAAO,MAAG,IAAE,GAAEA,GAAE,eAAe,GAAEA,GAAE;AAAA,UAAgB,GAAE,GAAE,EAAE,QAAM,SAASA,IAAEC,IAAE;AAAC,mBAAO,EAAE,KAAKD,IAAEC,EAAC;AAAA,UAAC,GAAE,KAAE,WAAU;AAAC,gBAAID,IAAEC,IAAEC,IAAEC;AAAE,mBAAOH,KAAE,SAAS,iBAAgB,SAAOC,KAAE,SAAOC,KAAE,SAAOC,KAAEH,GAAE,mBAAiBG,KAAEH,GAAE,yBAAuBE,KAAEF,GAAE,qBAAmBC,KAAED,GAAE;AAAA,UAAkB,GAAE,GAAE,EAAE,OAAK,WAAU;AAAC,gBAAIA,IAAEC,IAAEC;AAAE,iBAAIA,KAAE,IAAGF,KAAEC,KAAE,GAAE,MAAIA,IAAED,KAAE,EAAEC,GAAE,CAAAC,MAAG,MAAIF,MAAG,OAAKA,MAAG,OAAKA,MAAG,OAAKA,KAAE,MAAI,OAAKA,KAAE,MAAI,OAAKA,MAAG,KAAK,MAAM,IAAE,KAAK,OAAO,CAAC,IAAE,GAAG,SAAS,EAAE,IAAE,KAAK,MAAM,KAAG,KAAK,OAAO,CAAC,EAAE,SAAS,EAAE;AAAE,mBAAOE;AAAA,UAAC;AAAA,QAAC,GAAG,KAAK,IAAI,GAAE,WAAU;AAAC,YAAE,YAAS,WAAU;AAAC,qBAASF,GAAEA,IAAE;AAAC,kBAAIC,IAAEC;AAAE,sBAAMF,OAAIA,KAAE,KAAIE,KAAE,SAAS,cAAc,GAAG,GAAEA,GAAE,OAAKF,GAAE,SAAS,GAAE,KAAK,cAAYE,GAAE,MAAKD,KAAEC,GAAE,KAAK,QAAO,IAAED,KAAE,KAAK,aAAW,KAAK,eAAa,KAAK,aAAW,KAAK,YAAY,MAAM,GAAE,CAACA,EAAC,GAAE,KAAK,SAAOC,GAAE,KAAK,MAAM,CAAC;AAAA,YAAE;AAAC,gBAAID,IAAE,GAAE,GAAE;AAAE,mBAAOD,GAAE,OAAK,SAASA,IAAE;AAAC,qBAAOA,cAAa,OAAKA,KAAE,IAAI,KAAKA,EAAC;AAAA,YAAC,GAAEA,GAAE,UAAU,YAAU,WAAU;AAAC,qBAAO,KAAK,YAAY,MAAM,KAAI,CAAC,EAAE,KAAK,GAAG;AAAA,YAAC,GAAEA,GAAE,UAAU,UAAQ,WAAU;AAAC,kBAAIA,IAAEC;AAAE,qBAAO,SAAOD,KAAE,SAAOC,KAAE,KAAK,WAAW,MAAM,sBAAsB,KAAGA,GAAE,CAAC,IAAE,UAAQD,KAAE;AAAA,YAAG,GAAEA,GAAE,UAAU,oBAAkB,WAAU;AAAC,qBAAO,KAAK,QAAQ,EAAE,MAAM,GAAG,EAAE,MAAM,CAAC;AAAA,YAAC,GAAEA,GAAE,UAAU,uBAAqB,WAAU;AAAC,qBAAO,KAAK,kBAAkB,EAAE,MAAM,EAAE,EAAE,CAAC;AAAA,YAAC,GAAEA,GAAE,UAAU,eAAa,WAAU;AAAC,kBAAIA,IAAEC;AAAE,qBAAO,SAAOD,KAAE,SAAOC,KAAE,KAAK,qBAAqB,EAAE,MAAM,UAAU,KAAGA,GAAE,CAAC,IAAE,UAAQD,KAAE;AAAA,YAAE,GAAEA,GAAE,UAAU,SAAO,WAAU;AAAC,qBAAO,KAAK,aAAa,EAAE,MAAM,6BAA6B;AAAA,YAAC,GAAEA,GAAE,UAAU,eAAa,SAASA,IAAE;AAAC,kBAAIC;AAAE,qBAAOA,KAAE,EAAED,EAAC,GAAE,KAAK,UAAUA,EAAC,KAAG,EAAE,KAAK,aAAYC,EAAC;AAAA,YAAC,GAAED,GAAE,UAAU,YAAU,SAASA,IAAE;AAAC,qBAAO,KAAK,iBAAe,QAAMA,KAAEA,GAAE,cAAY;AAAA,YAAO,GAAEA,GAAE,UAAU,aAAW,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAU,GAAEA,GAAE,UAAU,SAAO,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAW,GAAEA,GAAE,UAAU,WAAS,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAW,GAAEA,GAAE,UAAU,UAAQ,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAW,GAAE,IAAE,SAASA,IAAE;AAAC,qBAAOC,GAAED,GAAE,UAAU,IAAEA,GAAE,QAAQ,CAAC;AAAA,YAAC,GAAEC,KAAE,SAASD,IAAE;AAAC,qBAAO,EAAEA,IAAE,GAAG,IAAEA,KAAEA,KAAE;AAAA,YAAG,GAAE,IAAE,SAASA,IAAEC,IAAE;AAAC,qBAAOD,GAAE,MAAM,GAAEC,GAAE,MAAM,MAAIA;AAAA,YAAC,GAAE,IAAE,SAASD,IAAEC,IAAE;AAAC,qBAAOD,GAAE,MAAM,CAACC,GAAE,MAAM,MAAIA;AAAA,YAAC,GAAED;AAAA,UAAC,GAAE;AAAA,QAAC,EAAE,KAAK,IAAI,GAAE,WAAU;AAAC,cAAIA,KAAE,SAASA,IAAEC,IAAE;AAAC,mBAAO,WAAU;AAAC,qBAAOD,GAAE,MAAMC,IAAE,SAAS;AAAA,YAAC;AAAA,UAAC;AAAE,YAAE,eAAY,WAAU;AAAC,qBAAS,EAAEC,IAAE,GAAE,GAAE;AAAC,mBAAK,WAASA,IAAE,KAAK,kBAAgBF,GAAE,KAAK,iBAAgB,IAAI,GAAE,KAAK,kBAAgBA,GAAE,KAAK,iBAAgB,IAAI,GAAE,KAAK,gBAAcA,GAAE,KAAK,eAAc,IAAI,GAAE,KAAK,gBAAcA,GAAE,KAAK,eAAc,IAAI,GAAE,KAAK,oBAAkBA,GAAE,KAAK,mBAAkB,IAAI,GAAE,KAAK,MAAI,EAAE,SAAS,KAAK,CAAC,EAAE,YAAW,KAAK,WAAS,EAAE,SAAS,KAAK,CAAC,EAAE,aAAY,KAAK,UAAU;AAAA,YAAC;AAAC,mBAAO,EAAE,kBAAgB,GAAE,EAAE,kBAAgB,IAAG,EAAE,UAAQ,IAAG,EAAE,UAAU,OAAK,WAAU;AAAC,kBAAIA;AAAE,qBAAO,KAAK,OAAK,CAAC,KAAK,QAAM,KAAK,oCAAoC,GAAE,KAAK,YAAY,CAAC,GAAE,KAAK,IAAI,KAAK,GAAE,KAAK,OAAK,MAAG,cAAY,QAAOA,KAAE,KAAK,UAAU,iBAAeA,GAAE,eAAe,IAAE,UAAQ;AAAA,YAAM,GAAE,EAAE,UAAU,SAAO,WAAU;AAAC,qBAAO,KAAK,OAAK,KAAK,OAAK,KAAK,IAAI,MAAM,IAAE;AAAA,YAAM,GAAE,EAAE,UAAU,oBAAkB,SAASA,IAAE;AAAC,qBAAOA,GAAE,mBAAiB,KAAK,YAAYA,GAAE,SAAOA,GAAE,KAAK,IAAE;AAAA,YAAM,GAAE,EAAE,UAAU,gBAAc,WAAU;AAAC,qBAAO,KAAK,WAAW,0BAASA,IAAE;AAAC,uBAAO,WAAU;AAAC,sBAAIC;AAAE,yBAAO,QAAMA,KAAED,GAAE,IAAI,WAAS,MAAIC,KAAED,GAAE,SAAS,6BAA6BA,GAAE,IAAI,cAAaA,GAAE,IAAI,kBAAkB,qBAAqB,CAAC,KAAGA,GAAE,SAAO,MAAGA,GAAE,SAAS,4BAA4BA,GAAE,IAAI,QAAOA,GAAE,IAAI,YAAY;AAAA,gBAAE;AAAA,cAAC,GAAE,IAAI,CAAC;AAAA,YAAC,GAAE,EAAE,UAAU,gBAAc,WAAU;AAAC,qBAAO,KAAK,WAAW,0BAASA,IAAE;AAAC,uBAAO,WAAU;AAAC,yBAAOA,GAAE,SAAO,MAAGA,GAAE,SAAS,4BAA4BA,GAAE,YAAY,eAAe;AAAA,gBAAC;AAAA,cAAC,GAAE,IAAI,CAAC;AAAA,YAAC,GAAE,EAAE,UAAU,kBAAgB,WAAU;AAAC,qBAAO,KAAK,WAAW,0BAASA,IAAE;AAAC,uBAAO,WAAU;AAAC,yBAAOA,GAAE,SAAO,MAAGA,GAAE,SAAS,4BAA4BA,GAAE,YAAY,eAAe;AAAA,gBAAC;AAAA,cAAC,GAAE,IAAI,CAAC;AAAA,YAAC,GAAE,EAAE,UAAU,kBAAgB,WAAU;AAAC,qBAAO,KAAK,WAAW;AAAA,YAAC,GAAE,EAAE,UAAU,sCAAoC,WAAU;AAAC,qBAAO,EAAE,SAAS,4BAA2B,EAAC,MAAK,EAAC,KAAI,KAAK,KAAI,KAAI,KAAK,IAAG,EAAC,CAAC;AAAA,YAAC,GAAE,EAAE,UAAU,mCAAiC,WAAU;AAAC,qBAAO,EAAE,SAAS,0BAAyB,EAAC,MAAK,EAAC,KAAI,KAAK,KAAI,KAAI,KAAK,IAAG,EAAC,CAAC;AAAA,YAAC,GAAE,EAAE,UAAU,YAAU,WAAU;AAAC,qBAAO,KAAK,MAAI,IAAI,kBAAe,KAAK,IAAI,KAAK,OAAM,KAAK,KAAI,IAAE,GAAE,KAAK,IAAI,UAAQ,MAAI,KAAK,YAAY,SAAQ,KAAK,IAAI,iBAAiB,UAAS,kCAAkC,GAAE,KAAK,IAAI,iBAAiB,uBAAsB,KAAK,QAAQ,GAAE,KAAK,IAAI,aAAW,KAAK,mBAAkB,KAAK,IAAI,SAAO,KAAK,eAAc,KAAK,IAAI,UAAQ,KAAK,eAAc,KAAK,IAAI,YAAU,KAAK,iBAAgB,KAAK,IAAI,UAAQ,KAAK;AAAA,YAAe,GAAE,EAAE,UAAU,aAAW,SAASA,IAAE;AAAC,qBAAO,KAAK,OAAK,KAAK,iCAAiC,GAAE,QAAMA,MAAGA,GAAE,KAAK,IAAI,GAAE,KAAK,QAAQ,KAAG;AAAA,YAAM,GAAE,EAAE,UAAU,cAAY,SAASA,IAAE;AAAC,kBAAIC;AAAE,qBAAO,KAAK,WAASD,IAAE,cAAY,QAAOC,KAAE,KAAK,UAAU,oBAAkBA,GAAE,kBAAkB,KAAK,QAAQ,IAAE;AAAA,YAAM,GAAE,EAAE,UAAU,UAAQ,WAAU;AAAC,kBAAID;AAAE,qBAAO,KAAK,YAAY,CAAC,GAAE,cAAY,QAAOA,KAAE,KAAK,UAAU,mBAAiBA,GAAE,gBAAgB,GAAE,KAAK,WAAS,MAAK,KAAK,MAAI;AAAA,YAAI,GAAE;AAAA,UAAC,GAAE;AAAA,QAAC,EAAE,KAAK,IAAI,GAAE,WAAU;AAAC,cAAIA,KAAE,SAASA,IAAEC,IAAE;AAAC,mBAAO,WAAU;AAAC,qBAAOD,GAAE,MAAMC,IAAE,SAAS;AAAA,YAAC;AAAA,UAAC;AAAE,YAAE,eAAY,WAAU;AAAC,qBAASA,KAAG;AAAC,mBAAK,UAAQD,GAAE,KAAK,SAAQ,IAAI,GAAE,KAAK,oBAAkB,KAAK,wBAAwB,GAAE,KAAK,kBAAgB,KAAK,sBAAsB;AAAA,YAAC;AAAC,gBAAI;AAAE,mBAAO,IAAE,KAAIC,GAAE,aAAW,6KAA2K,IAAE,0BAAwB,IAAE,IAAE,QAAM,IAAE,IAAE,sDAAqDA,GAAE,UAAU,OAAK,WAAU;AAAC,qBAAO,KAAK,UAAQ,UAAQ,KAAK,UAAQ,MAAG,KAAK,yBAAyB,GAAE,KAAK,uBAAuB,GAAE,KAAK,eAAe;AAAA,YAAE,GAAEA,GAAE,UAAU,OAAK,WAAU;AAAC,qBAAO,KAAK,WAAS,CAAC,KAAK,UAAQ,KAAK,SAAO,MAAG,KAAK,oBAAoB,0BAASD,IAAE;AAAC,uBAAO,WAAU;AAAC,yBAAOA,GAAE,yBAAyB,GAAEA,GAAE,cAAc,GAAEA,GAAE,UAAQ,OAAGA,GAAE,SAAO;AAAA,gBAAE;AAAA,cAAC,GAAE,IAAI,CAAC,KAAG;AAAA,YAAM,GAAEC,GAAE,UAAU,WAAS,SAASD,IAAE;AAAC,qBAAO,KAAK,QAAMA,IAAE,KAAK,QAAQ;AAAA,YAAC,GAAEC,GAAE,UAAU,2BAAyB,WAAU;AAAC,qBAAO,SAAS,KAAK,aAAa,KAAK,mBAAkB,SAAS,KAAK,UAAU;AAAA,YAAC,GAAEA,GAAE,UAAU,yBAAuB,WAAU;AAAC,qBAAO,KAAK,gBAAgB,MAAM,QAAM,GAAE,KAAK,gBAAgB,MAAM,UAAQ,GAAE,SAAS,gBAAgB,aAAa,KAAK,iBAAgB,SAAS,IAAI,GAAE,KAAK,QAAQ;AAAA,YAAC,GAAEA,GAAE,UAAU,sBAAoB,SAASD,IAAE;AAAC,qBAAO,KAAK,gBAAgB,MAAM,UAAQ,GAAE,WAAWA,IAAE,MAAI,CAAC;AAAA,YAAC,GAAEC,GAAE,UAAU,2BAAyB,WAAU;AAAC,qBAAO,KAAK,gBAAgB,aAAW,SAAS,gBAAgB,YAAY,KAAK,eAAe,IAAE;AAAA,YAAM,GAAEA,GAAE,UAAU,iBAAe,WAAU;AAAC,qBAAO,QAAM,KAAK,kBAAgB,KAAK,kBAAgB,KAAK,kBAAgB,YAAY,KAAK,SAAQ,CAAC;AAAA,YAAC,GAAEA,GAAE,UAAU,gBAAc,WAAU;AAAC,qBAAO,cAAc,KAAK,eAAe,GAAE,KAAK,kBAAgB;AAAA,YAAI,GAAEA,GAAE,UAAU,UAAQ,WAAU;AAAC,qBAAO,KAAK,SAAS,KAAK,QAAM,KAAK,OAAO,IAAE,GAAG;AAAA,YAAC,GAAEA,GAAE,UAAU,UAAQ,WAAU;AAAC,qBAAO,sBAAsB,0BAASD,IAAE;AAAC,uBAAO,WAAU;AAAC,yBAAOA,GAAE,gBAAgB,MAAM,QAAM,KAAG,KAAGA,GAAE,QAAM;AAAA,gBAAG;AAAA,cAAC,GAAE,IAAI,CAAC;AAAA,YAAC,GAAEC,GAAE,UAAU,0BAAwB,WAAU;AAAC,kBAAID;AAAE,qBAAOA,KAAE,SAAS,cAAc,OAAO,GAAEA,GAAE,OAAK,YAAWA,GAAE,cAAY,KAAK,YAAY,YAAWA;AAAA,YAAC,GAAEC,GAAE,UAAU,wBAAsB,WAAU;AAAC,kBAAID;AAAE,qBAAOA,KAAE,SAAS,cAAc,KAAK,GAAEA,GAAE,YAAU,2BAA0BA;AAAA,YAAC,GAAEC;AAAA,UAAC,GAAE;AAAA,QAAC,EAAE,KAAK,IAAI,GAAE,WAAU;AAAC,cAAID,KAAE,SAASA,IAAEC,IAAE;AAAC,mBAAO,WAAU;AAAC,qBAAOD,GAAE,MAAMC,IAAE,SAAS;AAAA,YAAC;AAAA,UAAC;AAAE,YAAE,kBAAe,WAAU;AAAC,qBAAS,EAAEC,IAAE;AAAC,mBAAK,aAAWA,IAAE,KAAK,kBAAgBF,GAAE,KAAK,iBAAgB,IAAI,GAAE,KAAK,cAAY,IAAI,EAAE;AAAA,YAAW;AAAC,gBAAI,GAAE,GAAE;AAAE,mBAAO,IAAE,EAAE,aAAY,IAAE,EAAE,iBAAgB,IAAE,EAAE,iBAAgB,EAAE,UAAU,oCAAkC,SAASA,IAAEC,IAAE;AAAC,qBAAO,KAAK,WAAW,+BAA+BD,IAAEC,EAAC;AAAA,YAAC,GAAE,EAAE,UAAU,eAAa,SAASD,IAAE;AAAC,qBAAOA,GAAE,aAAa,GAAEA,GAAE,cAAc,GAAEA,GAAE,mBAAmB;AAAA,YAAC,GAAE,EAAE,UAAU,sBAAoB,SAASA,IAAE;AAAC,qBAAO,KAAK,YAAY,SAAS,CAAC,GAAEA,GAAE,kBAAkB,KAAG,cAAYA,GAAE,SAAO,KAAK,0BAA0B,IAAE,KAAK,gBAAgB;AAAA,YAAC,GAAE,EAAE,UAAU,yBAAuB,SAASA,IAAE;AAAC,qBAAO,KAAK,YAAY,SAASA,GAAE,QAAQ;AAAA,YAAC,GAAE,EAAE,UAAU,wBAAsB,SAASA,IAAE;AAAC,qBAAOA,GAAE,aAAa;AAAA,YAAC,GAAE,EAAE,UAAU,mCAAiC,SAASA,IAAEC,IAAE;AAAC,sBAAOA,IAAE;AAAA,gBAAC,KAAK;AAAA,gBAAE,KAAK;AAAE,yBAAO,KAAK,OAAO;AAAA,gBAAE;AAAQ,yBAAOD,GAAE,aAAa;AAAA,cAAC;AAAA,YAAC,GAAE,EAAE,UAAU,uBAAqB,SAASA,IAAE;AAAC,qBAAO,KAAK,gBAAgB;AAAA,YAAC,GAAE,EAAE,UAAU,iBAAe,SAASA,IAAE;AAAC,qBAAOA,GAAE,eAAe;AAAA,YAAC,GAAE,EAAE,UAAU,kBAAgB,WAAU;AAAC,qBAAO,KAAK,OAAO;AAAA,YAAC,GAAE,EAAE,UAAU,4BAA0B,WAAU;AAAC,qBAAO,KAAK,qBAAmB,WAAW,KAAK,iBAAgB,KAAK,WAAW,gBAAgB;AAAA,YAAC,GAAE,EAAE,UAAU,kBAAgB,WAAU;AAAC,qBAAO,KAAK,YAAY,KAAK;AAAA,YAAC,GAAE,EAAE,UAAU,kBAAgB,WAAU;AAAC,qBAAO,KAAK,YAAY,KAAK,GAAE,aAAa,KAAK,kBAAkB;AAAA,YAAC,GAAE,EAAE,UAAU,SAAO,WAAU;AAAC,qBAAO,OAAO,SAAS,OAAO;AAAA,YAAC,GAAE;AAAA,UAAC,GAAE;AAAA,QAAC,EAAE,KAAK,IAAI,GAAE,WAAU;AAAC,cAAIA,KAAE,SAASA,IAAEC,IAAE;AAAC,mBAAO,WAAU;AAAC,qBAAOD,GAAE,MAAMC,IAAE,SAAS;AAAA,YAAC;AAAA,UAAC;AAAE,YAAE,WAAQ,WAAU;AAAC,qBAAS,EAAEA,IAAE;AAAC,mBAAK,WAASA,IAAE,KAAK,aAAWD,GAAE,KAAK,YAAW,IAAI,GAAE,KAAK,aAAWA,GAAE,KAAK,YAAW,IAAI;AAAA,YAAC;AAAC,mBAAO,EAAE,UAAU,QAAM,WAAU;AAAC,qBAAO,KAAK,UAAQ,UAAQ,iBAAiB,YAAW,KAAK,YAAW,KAAE,GAAE,iBAAiB,QAAO,KAAK,YAAW,KAAE,GAAE,KAAK,UAAQ;AAAA,YAAG,GAAE,EAAE,UAAU,OAAK,WAAU;AAAC,qBAAO,KAAK,WAAS,oBAAoB,YAAW,KAAK,YAAW,KAAE,GAAE,oBAAoB,QAAO,KAAK,YAAW,KAAE,GAAE,KAAK,UAAQ,SAAI;AAAA,YAAM,GAAE,EAAE,UAAU,OAAK,SAASA,IAAEE,IAAE;AAAC,qBAAOF,KAAE,EAAE,SAAS,KAAKA,EAAC,GAAE,KAAK,OAAO,QAAOA,IAAEE,EAAC;AAAA,YAAC,GAAE,EAAE,UAAU,UAAQ,SAASF,IAAEE,IAAE;AAAC,qBAAOF,KAAE,EAAE,SAAS,KAAKA,EAAC,GAAE,KAAK,OAAO,WAAUA,IAAEE,EAAC;AAAA,YAAC,GAAE,EAAE,UAAU,aAAW,SAASF,IAAE;AAAC,kBAAIE,IAAE,GAAE,GAAE;AAAE,qBAAO,KAAK,qBAAqB,MAAI,IAAE,SAAO,IAAEF,GAAE,SAAO,EAAE,aAAW,WAASE,KAAE,EAAE,SAAS,KAAK,OAAO,QAAQ,GAAE,IAAE,EAAE,uBAAsB,KAAK,SAAS,iDAAiDA,IAAE,CAAC,KAAG;AAAA,YAAM,GAAE,EAAE,UAAU,aAAW,SAASF,IAAE;AAAC,qBAAO,EAAE,MAAM,0BAASA,IAAE;AAAC,uBAAO,WAAU;AAAC,yBAAOA,GAAE,aAAW;AAAA,gBAAE;AAAA,cAAC,GAAE,IAAI,CAAC;AAAA,YAAC,GAAE,EAAE,UAAU,uBAAqB,WAAU;AAAC,qBAAO,KAAK,aAAa;AAAA,YAAC,GAAE,EAAE,UAAU,eAAa,WAAU;AAAC,qBAAO,KAAK,cAAY,eAAa,SAAS;AAAA,YAAU,GAAE,EAAE,UAAU,SAAO,SAASA,IAAEC,IAAEC,IAAE;AAAC,kBAAI;AAAE,qBAAO,IAAE,EAAC,YAAW,EAAC,uBAAsBA,GAAC,EAAC,GAAE,QAAQF,KAAE,OAAO,EAAE,GAAE,MAAKC,EAAC;AAAA,YAAC,GAAE;AAAA,UAAC,GAAE;AAAA,QAAC,EAAE,KAAK,IAAI,GAAE,WAAU;AAAC,YAAE,eAAY,WAAU;AAAC,qBAASD,GAAEA,IAAE;AAAC,kBAAIC,IAAEC,IAAEC,IAAE,GAAE,GAAE;AAAE,mBAAI,KAAK,WAAS,CAAC,GAAEA,KAAE,GAAE,IAAEH,GAAE,QAAO,IAAEG,IAAEA,KAAI,KAAEH,GAAEG,EAAC,GAAE,EAAE,aAAW,KAAK,iBAAe,IAAE,EAAE,WAAUD,KAAE,SAAOD,KAAE,KAAK,UAAU,CAAC,IAAEA,GAAE,CAAC,IAAEA,GAAE,CAAC,IAAE,EAAC,MAAK,EAAE,CAAC,GAAE,SAAQ,EAAE,CAAC,GAAE,UAAS,CAAC,EAAC,GAAEC,GAAE,SAAS,KAAK,CAAC;AAAA,YAAE;AAAC,gBAAID,IAAE,GAAE,GAAE,GAAE;AAAE,mBAAOD,GAAE,kBAAgB,SAASA,IAAE;AAAC,kBAAIC;AAAE,qBAAO,IAAI,KAAK,SAAOA,KAAE,QAAMD,KAAEA,GAAE,aAAW,UAAQC,KAAE,CAAC,CAAC;AAAA,YAAC,GAAED,GAAE,UAAU,oBAAkB,SAASA,IAAE;AAAC,qBAAOA,MAAK,KAAK;AAAA,YAAQ,GAAEA,GAAE,UAAU,6BAA2B,WAAU;AAAC,kBAAIA,IAAEC;AAAE,qBAAO,WAAU;AAAC,oBAAIC,IAAEC;AAAE,gBAAAD,KAAE,KAAK,UAASC,KAAE,CAAC;AAAE,qBAAIH,MAAKE,GAAE,CAAAD,KAAEC,GAAEF,EAAC,EAAE,SAAQC,MAAGE,GAAE,KAAKH,EAAC;AAAE,uBAAOG;AAAA,cAAC,EAAE,KAAK,IAAI,EAAE,KAAK,EAAE;AAAA,YAAC,GAAEH,GAAE,UAAU,gCAA8B,SAASA,IAAE;AAAC,qBAAO,KAAK,oCAAoC,UAASA,EAAC;AAAA,YAAC,GAAEA,GAAE,UAAU,oCAAkC,SAASA,IAAE;AAAC,qBAAO,KAAK,oCAAoC,cAAaA,EAAC;AAAA,YAAC,GAAEA,GAAE,UAAU,sCAAoC,SAASA,IAAEC,IAAE;AAAC,kBAAIC,IAAEC,IAAEC,IAAEC,IAAE,GAAE;AAAE,cAAAD,KAAE,KAAK,UAAS,IAAE,CAAC;AAAE,mBAAID,MAAKC,GAAE,CAAAC,KAAED,GAAED,EAAC,GAAE,IAAEE,GAAE,MAAKH,KAAEG,GAAE,UAAS,MAAIL,MAAGC,GAAE,kBAAkBE,EAAC,KAAG,EAAE,KAAKD,GAAE,CAAC,CAAC;AAAE,qBAAO;AAAA,YAAC,GAAEF,GAAE,UAAU,yBAAuB,WAAU;AAAC,kBAAIA,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAE;AAAE,cAAAH,KAAE,CAAC,GAAEC,KAAE,KAAK;AAAS,mBAAIF,MAAKE,GAAE,CAAAC,KAAED,GAAEF,EAAC,GAAE,IAAEG,GAAE,MAAKC,KAAED,GAAE,SAAQJ,KAAEI,GAAE,UAAS,QAAM,KAAGC,KAAEL,GAAE,SAAO,KAAGE,GAAE,KAAK,MAAMA,IAAEF,GAAE,MAAM,CAAC,CAAC,IAAEE,GAAE,KAAK,MAAMA,IAAEF,EAAC;AAAE,qBAAOE;AAAA,YAAC,GAAEF,GAAE,UAAU,eAAa,SAASA,IAAE;AAAC,kBAAIC;AAAE,qBAAO,SAAOA,KAAE,KAAK,sBAAsBD,EAAC,KAAGC,GAAE,aAAa,SAAS,IAAE;AAAA,YAAM,GAAED,GAAE,UAAU,wBAAsB,SAASA,IAAE;AAAC,kBAAIE,IAAEC,IAAEC,IAAEC;AAAE,cAAAH,KAAE,QAAOG,KAAE,KAAK;AAAS,mBAAID,MAAKC,GAAE,CAAAF,KAAEE,GAAED,EAAC,EAAE,UAASH,GAAEE,GAAE,CAAC,GAAEH,EAAC,MAAIE,KAAEC,GAAE,CAAC;AAAG,qBAAOD;AAAA,YAAC,GAAE,IAAE,SAASF,IAAE;AAAC,qBAAO,EAAEA,EAAC,IAAE,WAAS,EAAEA,EAAC,IAAE,eAAa;AAAA,YAAM,GAAE,IAAE,SAASA,IAAE;AAAC,qBAAM,aAAWA,GAAE,aAAa,uBAAuB;AAAA,YAAC,GAAE,IAAE,SAASA,IAAE;AAAC,kBAAIC;AAAE,qBAAOA,KAAED,GAAE,QAAQ,YAAY,GAAE,aAAWC;AAAA,YAAC,GAAE,IAAE,SAASD,IAAE;AAAC,kBAAIC;AAAE,qBAAOA,KAAED,GAAE,QAAQ,YAAY,GAAE,YAAUC,MAAG,WAASA,MAAG,iBAAeD,GAAE,aAAa,KAAK;AAAA,YAAC,GAAEC,KAAE,SAASD,IAAEC,IAAE;AAAC,kBAAIC;AAAE,qBAAOA,KAAEF,GAAE,QAAQ,YAAY,GAAE,WAASE,MAAGF,GAAE,aAAa,MAAM,MAAIC;AAAA,YAAC,GAAED;AAAA,UAAC,GAAE;AAAA,QAAC,EAAE,KAAK,IAAI,GAAE,WAAU;AAAC,YAAE,YAAS,WAAU;AAAC,qBAASA,GAAEA,IAAEC,IAAE;AAAC,mBAAK,cAAYD,IAAE,KAAK,cAAYC;AAAA,YAAC;AAAC,mBAAOD,GAAE,OAAK,SAASA,IAAE;AAAC,qBAAOA,cAAa,OAAKA,KAAE,YAAU,OAAOA,KAAE,KAAK,eAAeA,EAAC,IAAE,KAAK,gBAAgBA,EAAC;AAAA,YAAC,GAAEA,GAAE,iBAAe,SAASA,IAAE;AAAC,kBAAIC;AAAE,qBAAOA,KAAE,SAAS,cAAc,MAAM,GAAEA,GAAE,YAAUD,IAAE,KAAK,gBAAgBC,EAAC;AAAA,YAAC,GAAED,GAAE,kBAAgB,SAASA,IAAE;AAAC,kBAAI,GAAE,GAAE,GAAE;AAAE,qBAAO,IAAEA,GAAE,cAAc,MAAM,GAAE,IAAE,SAAO,IAAEA,GAAE,cAAc,MAAM,KAAG,IAAE,SAAS,cAAc,MAAM,GAAE,IAAE,EAAE,YAAY,gBAAgB,CAAC,GAAE,IAAI,KAAK,GAAE,CAAC;AAAA,YAAC,GAAEA,GAAE,UAAU,QAAM,WAAU;AAAC,qBAAO,IAAI,KAAK,YAAY,KAAK,aAAY,KAAK,YAAY,UAAU,IAAE,CAAC;AAAA,YAAC,GAAEA,GAAE,UAAU,kBAAgB,WAAU;AAAC,kBAAIA,IAAE;AAAE,qBAAO,IAAE,SAAOA,KAAE,KAAK,WAAW,MAAM,KAAGA,KAAE,KAAI,IAAI,EAAE,SAAS,CAAC;AAAA,YAAC,GAAEA,GAAE,UAAU,uBAAqB,WAAU;AAAC,qBAAO,KAAK,WAAW,eAAe;AAAA,YAAC,GAAEA,GAAE,UAAU,sBAAoB,SAASA,IAAE;AAAC,kBAAG;AAAC,uBAAO,KAAK,YAAY,cAAc,UAAQA,KAAE,iBAAeA,KAAE,IAAI;AAAA,cAAC,SAAOC,IAAE;AAAA,cAAC;AAAA,YAAC,GAAED,GAAE,UAAU,uBAAqB,WAAU;AAAC,qBAAO,KAAK,YAAY,iBAAiB,iCAAiC;AAAA,YAAC,GAAEA,GAAE,UAAU,0BAAwB,SAASA,IAAE;AAAC,qBAAO,KAAK,YAAY,cAAc,MAAIA,KAAE,6BAA6B;AAAA,YAAC,GAAEA,GAAE,UAAU,wCAAsC,SAASA,IAAE;AAAC,kBAAIC,IAAE,GAAE,GAAE,GAAE;AAAE,mBAAI,IAAE,KAAK,qBAAqB,GAAE,IAAE,CAAC,GAAE,IAAE,GAAE,IAAE,EAAE,QAAO,IAAE,GAAE,IAAI,CAAAA,KAAE,EAAE,CAAC,GAAED,GAAE,wBAAwBC,GAAE,EAAE,KAAG,EAAE,KAAKA,EAAC;AAAE,qBAAO;AAAA,YAAC,GAAED,GAAE,UAAU,gCAA8B,WAAU;AAAC,qBAAO,KAAK,YAAY,cAAc,aAAa;AAAA,YAAC,GAAEA,GAAE,UAAU,YAAU,SAASA,IAAE;AAAC,qBAAO,QAAM,KAAK,oBAAoBA,EAAC;AAAA,YAAC,GAAEA,GAAE,UAAU,gBAAc,WAAU;AAAC,qBAAM,iBAAe,KAAK,qBAAqB;AAAA,YAAC,GAAEA,GAAE,UAAU,cAAY,WAAU;AAAC,qBAAM,eAAa,KAAK,qBAAqB;AAAA,YAAC,GAAEA,GAAE,UAAU,cAAY,WAAU;AAAC,qBAAM,aAAW,KAAK,WAAW,eAAe;AAAA,YAAC,GAAEA,GAAE,UAAU,aAAW,SAASA,IAAE;AAAC,qBAAO,KAAK,YAAY,aAAa,gBAAcA,EAAC;AAAA,YAAC,GAAEA;AAAA,UAAC,GAAE;AAAA,QAAC,EAAE,KAAK,IAAI,GAAE,WAAU;AAAC,cAAIA,KAAE,CAAC,EAAE;AAAM,YAAE,YAAS,WAAU;AAAC,qBAASC,KAAG;AAAA,YAAC;AAAC,gBAAI;AAAE,mBAAOA,GAAE,SAAO,WAAU;AAAC,kBAAIA,IAAEC,IAAE,GAAE;AAAE,qBAAO,IAAE,UAAU,CAAC,GAAEA,KAAE,UAAU,CAAC,GAAED,KAAE,KAAG,UAAU,SAAOD,GAAE,KAAK,WAAU,CAAC,IAAE,CAAC,GAAE,KAAE,SAASA,IAAEC,IAAEC,IAAE;AAAC,gBAAAA,GAAE,YAAUF,GAAE;AAAU,oBAAIG,KAAE,IAAID,MAAEE,KAAEJ,GAAE,MAAMG,IAAEF,EAAC;AAAE,uBAAO,OAAOG,EAAC,MAAIA,KAAEA,KAAED;AAAA,cAAC,GAAE,MAAKF,IAAE,WAAU;AAAA,cAAC,CAAC,GAAE,EAAE,WAAS,GAAE,EAAE,OAAOC,EAAC,GAAE;AAAA,YAAC,GAAED,GAAE,UAAU,aAAW,SAASD,IAAE;AAAC,qBAAO,KAAK,SAAS,eAAe,KAAK,OAAO,GAAEA,GAAE,GAAE,KAAK,SAAS,aAAa,KAAK,OAAO;AAAA,YAAC,GAAEC,GAAE,UAAU,iBAAe,WAAU;AAAC,qBAAO,KAAK,SAAS,gBAAgB;AAAA,YAAC,GAAEA,GAAE,UAAU,sBAAoB,SAASD,IAAE;AAAC,kBAAIC;AAAE,qBAAM,YAAUD,GAAE,aAAa,sBAAsB,IAAEA,MAAGC,KAAE,SAAS,cAAc,QAAQ,GAAEA,GAAE,cAAYD,GAAE,aAAYC,GAAE,QAAM,OAAG,EAAEA,IAAED,EAAC,GAAEC;AAAA,YAAE,GAAE,IAAE,SAASD,IAAEC,IAAE;AAAC,kBAAIC,IAAE,GAAE,GAAE,GAAE,GAAE,GAAE;AAAE,mBAAI,IAAED,GAAE,YAAW,IAAE,CAAC,GAAEC,KAAE,GAAE,IAAE,EAAE,QAAO,IAAEA,IAAEA,KAAI,KAAE,EAAEA,EAAC,GAAE,IAAE,EAAE,MAAK,IAAE,EAAE,OAAM,EAAE,KAAKF,GAAE,aAAa,GAAE,CAAC,CAAC;AAAE,qBAAO;AAAA,YAAC,GAAEC;AAAA,UAAC,GAAE;AAAA,QAAC,EAAE,KAAK,IAAI,GAAE,WAAU;AAAC,cAAID,IAAE,GAAE,IAAE,SAASA,IAAEC,IAAE;AAAC,qBAASC,KAAG;AAAC,mBAAK,cAAYF;AAAA,YAAC;AAAC,qBAAQG,MAAKF,GAAE,GAAE,KAAKA,IAAEE,EAAC,MAAIH,GAAEG,EAAC,IAAEF,GAAEE,EAAC;AAAG,mBAAOD,GAAE,YAAUD,GAAE,WAAUD,GAAE,YAAU,IAAIE,MAAEF,GAAE,YAAUC,GAAE,WAAUD;AAAA,UAAC,GAAE,IAAE,CAAC,EAAE;AAAe,YAAE,oBAAiB,SAASC,IAAE;AAAC,qBAASG,GAAEJ,IAAEC,IAAEC,IAAE;AAAC,mBAAK,kBAAgBF,IAAE,KAAK,cAAYC,IAAE,KAAK,YAAUC,IAAE,KAAK,qBAAmB,KAAK,gBAAgB,aAAY,KAAK,iBAAe,KAAK,YAAY,aAAY,KAAK,cAAY,KAAK,gBAAgB,aAAY,KAAK,UAAQ,KAAK,YAAY;AAAA,YAAW;AAAC,mBAAO,EAAEE,IAAEH,EAAC,GAAEG,GAAE,UAAU,SAAO,SAASJ,IAAE;AAAC,qBAAO,KAAK,aAAa,KAAG,KAAK,UAAU,GAAE,KAAK,WAAW,0BAASC,IAAE;AAAC,uBAAO,WAAU;AAAC,yBAAOA,GAAE,YAAY,GAAEA,GAAE,aAAWA,GAAE,+BAA+B,GAAED,GAAE;AAAA,gBAAC;AAAA,cAAC,GAAE,IAAI,CAAC,KAAG,KAAK,eAAe;AAAA,YAAC,GAAEI,GAAE,UAAU,YAAU,WAAU;AAAC,qBAAO,KAAK,8BAA8B,GAAE,KAAK,0BAA0B,GAAE,KAAK,qCAAqC,GAAE,KAAK,+BAA+B;AAAA,YAAC,GAAEA,GAAE,UAAU,cAAY,WAAU;AAAC,kBAAIJ;AAAE,qBAAOA,KAAE,KAAK,qCAAqC,GAAE,KAAK,8BAA8B,GAAE,KAAK,cAAc,GAAE,KAAK,sDAAsDA,EAAC;AAAA,YAAC,GAAEI,GAAE,UAAU,eAAa,WAAU;AAAC,qBAAO,KAAK,YAAY,YAAY,KAAG,KAAK,4BAA4B;AAAA,YAAC,GAAEA,GAAE,UAAU,8BAA4B,WAAU;AAAC,qBAAO,KAAK,mBAAmB,2BAA2B,MAAI,KAAK,eAAe,2BAA2B;AAAA,YAAC,GAAEA,GAAE,UAAU,gCAA8B,WAAU;AAAC,kBAAIJ,IAAEC,IAAEC,IAAEC,IAAEC;AAAE,mBAAID,KAAE,KAAK,6BAA6B,GAAEC,KAAE,CAAC,GAAEH,KAAE,GAAEC,KAAEC,GAAE,QAAOD,KAAED,IAAEA,KAAI,CAAAD,KAAEG,GAAEF,EAAC,GAAEG,GAAE,KAAK,SAAS,KAAK,YAAYJ,EAAC,CAAC;AAAE,qBAAOI;AAAA,YAAC,GAAEA,GAAE,UAAU,4BAA0B,WAAU;AAAC,kBAAIJ,IAAEC,IAAEC,IAAEC,IAAEC;AAAE,mBAAID,KAAE,KAAK,yBAAyB,GAAEC,KAAE,CAAC,GAAEH,KAAE,GAAEC,KAAEC,GAAE,QAAOD,KAAED,IAAEA,KAAI,CAAAD,KAAEG,GAAEF,EAAC,GAAEG,GAAE,KAAK,SAAS,KAAK,YAAY,KAAK,oBAAoBJ,EAAC,CAAC,CAAC;AAAE,qBAAOI;AAAA,YAAC,GAAEA,GAAE,UAAU,uCAAqC,WAAU;AAAC,kBAAIJ,IAAEC,IAAEC,IAAEC,IAAEC;AAAE,mBAAID,KAAE,KAAK,kCAAkC,GAAEC,KAAE,CAAC,GAAEH,KAAE,GAAEC,KAAEC,GAAE,QAAOD,KAAED,IAAEA,KAAI,CAAAD,KAAEG,GAAEF,EAAC,GAAEG,GAAE,KAAK,SAAS,KAAK,YAAYJ,EAAC,CAAC;AAAE,qBAAOI;AAAA,YAAC,GAAEA,GAAE,UAAU,iCAA+B,WAAU;AAAC,kBAAIJ,IAAEC,IAAEC,IAAEC,IAAEC;AAAE,mBAAID,KAAE,KAAK,8BAA8B,GAAEC,KAAE,CAAC,GAAEH,KAAE,GAAEC,KAAEC,GAAE,QAAOD,KAAED,IAAEA,KAAI,CAAAD,KAAEG,GAAEF,EAAC,GAAEG,GAAE,KAAK,SAAS,KAAK,YAAYJ,EAAC,CAAC;AAAE,qBAAOI;AAAA,YAAC,GAAEA,GAAE,UAAU,uCAAqC,WAAU;AAAC,kBAAIH,IAAEE,IAAEC,IAAE,GAAE,GAAE,GAAE;AAAE,mBAAI,IAAE,KAAK,gCAAgC,GAAE,IAAE,CAAC,GAAEH,KAAE,GAAEE,KAAE,EAAE,QAAOA,KAAEF,IAAEA,KAAI,KAAE,EAAEA,EAAC,GAAE,IAAED,GAAE,CAAC,GAAEI,KAAE,KAAK,YAAY,wBAAwB,EAAE,EAAE,GAAE,EAAE,GAAE,EAAE,OAAO,GAAE,EAAEA,IAAE,CAAC,GAAE,EAAE,KAAK,CAAC;AAAE,qBAAO;AAAA,YAAC,GAAEA,GAAE,UAAU,wDAAsD,SAASJ,IAAE;AAAC,kBAAIC,IAAEE,IAAEC,IAAE,GAAE,GAAE,GAAE;AAAE,mBAAI,IAAE,CAAC,GAAEA,KAAE,GAAE,IAAEJ,GAAE,QAAO,IAAEI,IAAEA,KAAI,KAAEJ,GAAEI,EAAC,GAAED,KAAE,EAAE,SAAQ,IAAE,EAAE,kBAAiBF,KAAE,EAAE,UAAU,IAAE,GAAE,EAAE,KAAK,EAAEE,IAAEF,EAAC,CAAC;AAAE,qBAAO;AAAA,YAAC,GAAEG,GAAE,UAAU,gCAA8B,WAAU;AAAC,kBAAIJ,IAAEC,IAAEE,IAAEC,IAAE,GAAE;AAAE,mBAAI,IAAE,KAAK,yBAAyB,GAAE,IAAE,CAAC,GAAEH,KAAE,GAAEG,KAAE,EAAE,QAAOA,KAAEH,IAAEA,KAAI,CAAAE,KAAE,EAAEF,EAAC,GAAED,KAAE,KAAK,oBAAoBG,EAAC,GAAE,EAAE,KAAK,EAAEA,IAAEH,EAAC,CAAC;AAAE,qBAAO;AAAA,YAAC,GAAEI,GAAE,UAAU,gBAAc,WAAU;AAAC,qBAAO,SAAS,OAAK,KAAK;AAAA,YAAO,GAAEA,GAAE,UAAU,iCAA+B,WAAU;AAAC,kBAAIJ;AAAE,qBAAO,SAAOA,KAAE,KAAK,YAAY,8BAA8B,KAAGA,GAAE,MAAM,IAAE;AAAA,YAAM,GAAEI,GAAE,UAAU,+BAA6B,WAAU;AAAC,qBAAO,KAAK,eAAe,kCAAkC,KAAK,kBAAkB;AAAA,YAAC,GAAEA,GAAE,UAAU,2BAAyB,WAAU;AAAC,qBAAO,KAAK,eAAe,8BAA8B,KAAK,kBAAkB;AAAA,YAAC,GAAEA,GAAE,UAAU,oCAAkC,WAAU;AAAC,qBAAO,KAAK,mBAAmB,uBAAuB;AAAA,YAAC,GAAEA,GAAE,UAAU,gCAA8B,WAAU;AAAC,qBAAO,KAAK,eAAe,uBAAuB;AAAA,YAAC,GAAEA,GAAE,UAAU,kCAAgC,WAAU;AAAC,qBAAO,KAAK,gBAAgB,sCAAsC,KAAK,WAAW;AAAA,YAAC,GAAEA,GAAE,UAAU,2BAAyB,WAAU;AAAC,qBAAO,KAAK,QAAQ,iBAAiB,QAAQ;AAAA,YAAC,GAAEA;AAAA,UAAC,GAAE,EAAE,QAAQ,GAAEJ,KAAE,SAASA,IAAE;AAAC,gBAAIC;AAAE,mBAAOA,KAAE,SAAS,cAAc,MAAM,GAAEA,GAAE,aAAa,QAAO,kCAAkC,GAAEA,GAAE,aAAa,WAAUD,GAAE,EAAE,GAAE,EAAC,SAAQC,IAAE,kBAAiBD,GAAC;AAAA,UAAC,GAAE,IAAE,SAASA,IAAEC,IAAE;AAAC,gBAAIC;AAAE,oBAAOA,KAAEF,GAAE,cAAYE,GAAE,aAAaD,IAAED,EAAC,IAAE;AAAA,UAAM;AAAA,QAAC,EAAE,KAAK,IAAI,GAAE,WAAU;AAAC,cAAIA,KAAE,SAASA,IAAEC,IAAE;AAAC,qBAAS,IAAG;AAAC,mBAAK,cAAYD;AAAA,YAAC;AAAC,qBAAQ,KAAKC,GAAE,GAAE,KAAKA,IAAE,CAAC,MAAID,GAAE,CAAC,IAAEC,GAAE,CAAC;AAAG,mBAAO,EAAE,YAAUA,GAAE,WAAUD,GAAE,YAAU,IAAI,KAAEA,GAAE,YAAUC,GAAE,WAAUD;AAAA,UAAC,GAAE,IAAE,CAAC,EAAE;AAAe,YAAE,iBAAc,SAASC,IAAE;AAAC,qBAASC,GAAEF,IAAE;AAAC,kBAAIC;AAAE,cAAAA,KAAE,SAAS,cAAc,MAAM,GAAEA,GAAE,YAAUD,IAAE,KAAK,UAAQC,GAAE,cAAc,MAAM,GAAE,KAAK,UAAQA,GAAE,cAAc,MAAM;AAAA,YAAC;AAAC,mBAAOD,GAAEE,IAAED,EAAC,GAAEC,GAAE,UAAU,SAAO,SAASF,IAAE;AAAC,qBAAO,KAAK,WAAW,0BAASC,IAAE;AAAC,uBAAO,WAAU;AAAC,yBAAOA,GAAE,mBAAmB,GAAEA,GAAE,2BAA2B,GAAED,GAAE;AAAA,gBAAC;AAAA,cAAC,GAAE,IAAI,CAAC;AAAA,YAAC,GAAEE,GAAE,UAAU,qBAAmB,WAAU;AAAC,kBAAIF,IAAEC;AAAE,qBAAOA,KAAE,SAAS,MAAKD,KAAE,SAAS,MAAKC,GAAE,WAAW,aAAa,KAAK,SAAQA,EAAC,GAAED,GAAE,WAAW,aAAa,KAAK,SAAQA,EAAC;AAAA,YAAC,GAAEE,GAAE,UAAU,6BAA2B,WAAU;AAAC,kBAAIF,IAAEC,IAAEC,IAAE,GAAE,GAAE;AAAE,mBAAI,IAAE,KAAK,kBAAkB,GAAE,IAAE,CAAC,GAAED,KAAE,GAAEC,KAAE,EAAE,QAAOA,KAAED,IAAEA,KAAI,KAAE,EAAEA,EAAC,GAAED,KAAE,KAAK,oBAAoB,CAAC,GAAE,EAAE,KAAK,EAAE,WAAW,aAAaA,IAAE,CAAC,CAAC;AAAE,qBAAO;AAAA,YAAC,GAAEE,GAAE,UAAU,oBAAkB,WAAU;AAAC,qBAAO,SAAS,gBAAgB,iBAAiB,QAAQ;AAAA,YAAC,GAAEA;AAAA,UAAC,GAAE,EAAE,QAAQ;AAAA,QAAC,EAAE,KAAK,IAAI,GAAE,WAAU;AAAC,YAAE,QAAK,WAAU;AAAC,qBAASF,GAAEA,IAAE;AAAC,mBAAK,WAASA,IAAE,KAAK,cAAY,SAAS;AAAA,YAAe;AAAC,mBAAOA,GAAE,UAAU,kBAAgB,WAAU;AAAC,qBAAO,KAAK,YAAY,EAAE,gBAAgB;AAAA,YAAC,GAAEA,GAAE,UAAU,sBAAoB,SAASA,IAAE;AAAC,qBAAO,KAAK,YAAY,EAAE,oBAAoBA,EAAC;AAAA,YAAC,GAAEA,GAAE,UAAU,cAAY,WAAU;AAAC,qBAAO,EAAE,SAAS,gBAAgB,KAAK,WAAW;AAAA,YAAC,GAAEA,GAAE,UAAU,SAAO,SAASA,IAAEC,IAAE;AAAC,kBAAI,GAAE,GAAE;AAAE,qBAAO,IAAED,GAAE,UAAS,IAAEA,GAAE,OAAM,IAAEA,GAAE,WAAU,KAAK,cAAc,CAAC,GAAE,QAAM,IAAE,KAAK,eAAe,GAAE,GAAEC,EAAC,IAAE,KAAK,YAAY,GAAEA,EAAC;AAAA,YAAC,GAAED,GAAE,UAAU,gBAAc,SAASA,IAAE;AAAC,qBAAOA,KAAE,KAAK,YAAY,aAAa,2BAA0B,EAAE,IAAE,KAAK,YAAY,gBAAgB,yBAAyB;AAAA,YAAC,GAAEA,GAAE,UAAU,iBAAe,SAASA,IAAE,GAAE,GAAE;AAAC,qBAAO,EAAE,iBAAiB,OAAO,KAAK,UAAS,GAAE,KAAK,YAAY,GAAE,EAAE,SAAS,KAAKA,EAAC,GAAE,CAAC;AAAA,YAAC,GAAEA,GAAE,UAAU,cAAY,SAASA,IAAE,GAAE;AAAC,qBAAO,EAAE,cAAc,OAAO,KAAK,UAAS,GAAEA,EAAC;AAAA,YAAC,GAAEA;AAAA,UAAC,GAAE;AAAA,QAAC,EAAE,KAAK,IAAI,GAAE,WAAU;AAAC,cAAIA,KAAE,SAASA,IAAEC,IAAE;AAAC,mBAAO,WAAU;AAAC,qBAAOD,GAAE,MAAMC,IAAE,SAAS;AAAA,YAAC;AAAA,UAAC;AAAE,YAAE,iBAAc,WAAU;AAAC,qBAAS,EAAEC,IAAE;AAAC,mBAAK,WAASA,IAAE,KAAK,WAASF,GAAE,KAAK,UAAS,IAAI,GAAE,KAAK,WAAS,EAAE,SAAS,KAAK,QAAQ;AAAA,YAAC;AAAC,mBAAO,EAAE,UAAU,QAAM,WAAU;AAAC,qBAAO,KAAK,UAAQ,UAAQ,iBAAiB,UAAS,KAAK,UAAS,KAAE,GAAE,KAAK,SAAS,GAAE,KAAK,UAAQ;AAAA,YAAG,GAAE,EAAE,UAAU,OAAK,WAAU;AAAC,qBAAO,KAAK,WAAS,oBAAoB,UAAS,KAAK,UAAS,KAAE,GAAE,KAAK,UAAQ,SAAI;AAAA,YAAM,GAAE,EAAE,UAAU,kBAAgB,SAASA,IAAE;AAAC,qBAAOA,GAAE,eAAe;AAAA,YAAC,GAAE,EAAE,UAAU,mBAAiB,SAASA,IAAE;AAAC,kBAAIC,IAAEC;AAAE,qBAAOD,KAAED,GAAE,GAAEE,KAAEF,GAAE,GAAE,OAAO,SAASC,IAAEC,EAAC;AAAA,YAAC,GAAE,EAAE,UAAU,WAAS,SAASF,IAAE;AAAC,qBAAO,KAAK,eAAe,EAAC,GAAE,OAAO,aAAY,GAAE,OAAO,YAAW,CAAC;AAAA,YAAC,GAAE,EAAE,UAAU,iBAAe,SAASA,IAAE;AAAC,kBAAIC;AAAE,qBAAO,KAAK,WAASD,IAAE,SAAOC,KAAE,KAAK,YAAUA,GAAE,sBAAsB,KAAK,QAAQ,IAAE;AAAA,YAAM,GAAE;AAAA,UAAC,GAAE;AAAA,QAAC,EAAE,KAAK,IAAI,GAAE,WAAU;AAAC,YAAE,iBAAc,WAAU;AAAC,qBAASD,GAAEA,IAAE;AAAC,mBAAK,OAAKA,IAAE,KAAK,OAAK,CAAC,GAAE,KAAK,YAAU,CAAC;AAAA,YAAC;AAAC,gBAAI;AAAE,mBAAOA,GAAE,UAAU,MAAI,SAASA,IAAE;AAAC,kBAAIC;AAAE,qBAAOA,KAAE,EAAED,EAAC,GAAEC,MAAK,KAAK;AAAA,YAAS,GAAED,GAAE,UAAU,MAAI,SAASA,IAAE;AAAC,kBAAIC;AAAE,kBAAG,KAAK,IAAID,EAAC,EAAE,QAAOC,KAAE,KAAK,KAAKD,EAAC,GAAE,KAAK,MAAMA,EAAC,GAAEC;AAAA,YAAC,GAAED,GAAE,UAAU,MAAI,SAASA,IAAEC,IAAE;AAAC,qBAAO,KAAK,MAAMD,IAAEC,EAAC,GAAE,KAAK,MAAMD,EAAC,GAAEC;AAAA,YAAC,GAAED,GAAE,UAAU,OAAK,SAASA,IAAE;AAAC,kBAAIC;AAAE,qBAAOA,KAAE,EAAED,EAAC,GAAE,KAAK,UAAUC,EAAC;AAAA,YAAC,GAAED,GAAE,UAAU,QAAM,SAASA,IAAEC,IAAE;AAAC,kBAAI;AAAE,qBAAO,IAAE,EAAED,EAAC,GAAE,KAAK,UAAU,CAAC,IAAEC;AAAA,YAAC,GAAED,GAAE,UAAU,QAAM,SAASA,IAAE;AAAC,kBAAIC,IAAE;AAAE,qBAAO,IAAE,EAAED,EAAC,GAAEC,KAAE,KAAK,KAAK,QAAQ,CAAC,GAAEA,KAAE,MAAI,KAAK,KAAK,OAAOA,IAAE,CAAC,GAAE,KAAK,KAAK,QAAQ,CAAC,GAAE,KAAK,KAAK;AAAA,YAAC,GAAED,GAAE,UAAU,OAAK,WAAU;AAAC,kBAAIA,IAAEC,IAAEC,IAAE,GAAE;AAAE,mBAAI,IAAE,KAAK,KAAK,OAAO,KAAK,IAAI,GAAE,IAAE,CAAC,GAAEF,KAAE,GAAEE,KAAE,EAAE,QAAOA,KAAEF,IAAEA,KAAI,CAAAC,KAAE,EAAED,EAAC,GAAE,EAAE,KAAK,OAAO,KAAK,UAAUC,EAAC,CAAC;AAAE,qBAAO;AAAA,YAAC,GAAE,IAAE,SAASD,IAAE;AAAC,qBAAO,EAAE,SAAS,KAAKA,EAAC,EAAE,WAAW;AAAA,YAAC,GAAEA;AAAA,UAAC,GAAE;AAAA,QAAC,EAAE,KAAK,IAAI,GAAE,WAAU;AAAC,cAAIA,KAAE,SAASA,IAAEC,IAAE;AAAC,mBAAO,WAAU;AAAC,qBAAOD,GAAE,MAAMC,IAAE,SAAS;AAAA,YAAC;AAAA,UAAC;AAAE,YAAE,SAAM,WAAU;AAAC,qBAAS,EAAEC,IAAEC,IAAE,GAAE;AAAC,mBAAK,aAAWD,IAAE,KAAK,SAAO,GAAE,KAAK,gBAAcF,GAAE,KAAK,eAAc,IAAI,GAAE,KAAK,aAAW,EAAE,KAAK,GAAE,KAAK,WAAS,EAAE,SAAS,KAAKG,EAAC,GAAE,KAAK,UAAQ,KAAK,WAAW,SAAQ,KAAK,QAAM,eAAc,KAAK,gBAAc,CAAC;AAAA,YAAC;AAAC,gBAAI;AAAE,mBAAO,EAAE,UAAU,QAAM,WAAU;AAAC,qBAAM,kBAAgB,KAAK,SAAO,KAAK,mBAAmB,YAAY,GAAE,KAAK,QAAM,WAAU,KAAK,QAAQ,aAAa,IAAI,KAAG;AAAA,YAAM,GAAE,EAAE,UAAU,SAAO,WAAU;AAAC,kBAAIH;AAAE,qBAAM,cAAY,KAAK,SAAO,SAAOA,KAAE,KAAK,YAAUA,GAAE,OAAO,GAAE,KAAK,aAAa,GAAE,KAAK,QAAM,cAAY;AAAA,YAAM,GAAE,EAAE,UAAU,WAAS,WAAU;AAAC,kBAAIA;AAAE,qBAAM,cAAY,KAAK,SAAO,KAAK,mBAAmB,UAAU,GAAE,KAAK,QAAM,aAAY,cAAY,QAAOA,KAAE,KAAK,SAAS,kBAAgBA,GAAE,eAAe,IAAI,GAAE,KAAK,WAAW,eAAe,IAAI,KAAG;AAAA,YAAM,GAAE,EAAE,UAAU,OAAK,WAAU;AAAC,kBAAIA;AAAE,qBAAM,cAAY,KAAK,SAAO,KAAK,QAAM,UAAS,cAAY,QAAOA,KAAE,KAAK,SAAS,cAAYA,GAAE,YAAY,IAAI,IAAE,UAAQ;AAAA,YAAM,GAAE,EAAE,UAAU,gBAAc,WAAU;AAAC,kBAAIA,IAAEC;AAAE,qBAAO,KAAK,iBAAe,UAAQD,KAAE,KAAK,SAAS,UAAU,KAAK,QAAQ,IAAE,YAAU,KAAK,QAAOC,KAAE,EAAED,EAAC,GAAE,KAAK,WAAWC,EAAC,EAAE,KAAK,UAAS,KAAK,qBAAqB,GAAE,KAAK,iBAAe;AAAA,YAAG,GAAE,EAAE,UAAU,eAAa,WAAU;AAAC,qBAAO,KAAK,mBAAmB,KAAG,QAAM,KAAK,WAAS,KAAK,WAAS,GAAE,KAAK,UAAQ,IAAI,EAAE,YAAY,MAAK,KAAK,UAAS,KAAK,QAAQ,GAAE,KAAK,QAAQ,KAAK,KAAG;AAAA,YAAM,GAAE,EAAE,UAAU,oBAAkB,WAAU;AAAC,kBAAID;AAAE,qBAAM,EAAEA,KAAE,KAAK,WAAW,6BAA6B,KAAK,QAAQ,MAAI,QAAM,KAAK,SAAS,UAAQ,CAACA,GAAE,UAAU,KAAK,SAAS,MAAM,KAAG,cAAY,KAAK,UAAQ,CAACA,GAAE,cAAc,IAAE,SAAOA;AAAA,YAAC,GAAE,EAAE,UAAU,oBAAkB,WAAU;AAAC,qBAAO,QAAM,KAAK,kBAAkB;AAAA,YAAC,GAAE,EAAE,UAAU,qBAAmB,WAAU;AAAC,kBAAIA,IAAEC;AAAE,sBAAOA,KAAE,KAAK,kBAAkB,MAAID,KAAE,KAAK,mBAAmB,GAAE,KAAK,OAAO,WAAU;AAAC,oBAAIE;AAAE,uBAAO,KAAK,cAAc,GAAE,KAAK,WAAW,OAAO,EAAC,UAASD,IAAE,WAAUD,GAAC,GAAE,KAAK,aAAa,GAAE,cAAY,QAAOE,KAAE,KAAK,SAAS,iBAAeA,GAAE,cAAc,IAAI,GAAEF,KAAE,SAAO,KAAK,SAAS;AAAA,cAAC,CAAC,KAAG;AAAA,YAAM,GAAE,EAAE,UAAU,eAAa,WAAU;AAAC,qBAAO,QAAM,KAAK,WAAS,KAAK,OAAO,WAAU;AAAC,oBAAIA,IAAEC;AAAE,uBAAO,KAAK,cAAc,GAAE,KAAK,QAAQ,UAAQ,KAAK,WAAW,OAAO,EAAC,OAAM,KAAK,SAAQ,GAAE,KAAK,aAAa,GAAE,cAAY,QAAOD,KAAE,KAAK,SAAS,iBAAeA,GAAE,cAAc,IAAI,GAAE,KAAK,KAAK,MAAI,KAAK,WAAW,OAAO,EAAC,UAAS,KAAK,SAAQ,GAAE,KAAK,aAAa,GAAE,cAAY,QAAOC,KAAE,KAAK,SAAS,iBAAeA,GAAE,cAAc,IAAI,GAAE,KAAK,SAAS;AAAA,cAAE,CAAC,IAAE;AAAA,YAAM,GAAE,EAAE,UAAU,iBAAe,WAAU;AAAC,qBAAO,KAAK,wBAAsB,CAAC,KAAK,oBAAkB,KAAK,WAAS,KAAK,sBAAqB,KAAK,WAAW,mDAAmD,KAAK,sBAAqB,KAAK,qBAAqB,GAAE,KAAK,mBAAiB,QAAI;AAAA,YAAM,GAAE,EAAE,UAAU,iBAAe,WAAU;AAAC,kBAAID;AAAE,qBAAO,KAAK,mBAAmB,cAAc,GAAE,cAAY,QAAOA,KAAE,KAAK,SAAS,sBAAoBA,GAAE,oBAAoB,IAAI,IAAE;AAAA,YAAM,GAAE,EAAE,UAAU,oBAAkB,SAASA,IAAE;AAAC,kBAAIC;AAAE,qBAAO,KAAK,WAASD,IAAE,cAAY,QAAOC,KAAE,KAAK,SAAS,yBAAuBA,GAAE,uBAAuB,IAAI,IAAE;AAAA,YAAM,GAAE,EAAE,UAAU,+BAA6B,SAASD,IAAEE,IAAE;AAAC,qBAAO,KAAK,WAASF,IAAE,QAAME,OAAI,KAAK,uBAAqB,EAAE,SAAS,KAAKA,EAAC,IAAG,KAAK,QAAQ,sBAAsB,IAAI;AAAA,YAAC,GAAE,EAAE,UAAU,8BAA4B,SAASF,IAAEC,IAAE;AAAC,qBAAO,KAAK,WAASA,IAAE,KAAK,QAAQ,iCAAiC,MAAKD,EAAC;AAAA,YAAC,GAAE,EAAE,UAAU,kBAAgB,WAAU;AAAC,kBAAIA;AAAE,qBAAO,KAAK,mBAAmB,YAAY,GAAE,cAAY,QAAOA,KAAE,KAAK,SAAS,uBAAqBA,GAAE,qBAAqB,IAAI,IAAE;AAAA,YAAM,GAAE,EAAE,UAAU,gBAAc,WAAU;AAAC,qBAAO,KAAK,WAAS,UAAQ,cAAY,KAAK,SAAO,KAAK,yBAAyB,KAAG,KAAK,YAAY,IAAE,KAAK,eAAe,KAAG,KAAK,YAAY,GAAE,KAAK,WAAS;AAAA,YAAG,GAAE,EAAE,UAAU,2BAAyB,WAAU;AAAC,kBAAIA,IAAEC;AAAE,qBAAOD,KAAE,SAAOC,KAAE,KAAK,mBAAiBA,GAAE,iBAAe,QAAO,QAAMD,MAAG,KAAK,WAAW,iBAAiBA,EAAC,GAAE,QAAI;AAAA,YAAM,GAAE,EAAE,UAAU,iBAAe,WAAU;AAAC,qBAAO,QAAM,KAAK,SAAS,UAAQ,KAAK,WAAW,eAAe,KAAK,SAAS,MAAM,GAAE,QAAI;AAAA,YAAM,GAAE,EAAE,UAAU,cAAY,WAAU;AAAC,qBAAO,KAAK,WAAW,iBAAiB,EAAC,GAAE,GAAE,GAAE,EAAC,CAAC;AAAA,YAAC,GAAE,EAAE,UAAU,qBAAmB,SAASA,IAAE;AAAC,kBAAIC;AAAE,qBAAO,SAAOA,KAAE,KAAK,eAAeD,EAAC,IAAEC,GAAED,EAAC,IAAEC,GAAED,EAAC,KAAG,oBAAI,QAAM,QAAQ;AAAA,YAAC,GAAE,EAAE,UAAU,mBAAiB,WAAU;AAAC,qBAAO,EAAE,WAAW,KAAK,aAAa;AAAA,YAAC,GAAE,IAAE,SAASA,IAAE;AAAC,sBAAOA,IAAE;AAAA,gBAAC,KAAI;AAAU,yBAAM;AAAA,gBAAqD,KAAI;AAAA,gBAAU,KAAI;AAAU,yBAAM;AAAA,cAAiD;AAAA,YAAC,GAAE,EAAE,UAAU,qBAAmB,WAAU;AAAC,qBAAM,cAAY,KAAK,SAAO,CAAC,KAAK,kBAAkB,IAAE;AAAA,YAAE,GAAE,EAAE,UAAU,gBAAc,WAAU;AAAC,qBAAO,KAAK,iBAAe,UAAQ,KAAK,WAAW,cAAc,GAAE,KAAK,iBAAe;AAAA,YAAG,GAAE,EAAE,UAAU,SAAO,SAASA,IAAE;AAAC,qBAAO,KAAK,aAAa,GAAE,KAAK,QAAM,sBAAsB,0BAASC,IAAE;AAAC,uBAAO,WAAU;AAAC,yBAAOA,GAAE,QAAM,MAAKD,GAAE,KAAKC,EAAC;AAAA,gBAAC;AAAA,cAAC,GAAE,IAAI,CAAC;AAAA,YAAC,GAAE,EAAE,UAAU,eAAa,WAAU;AAAC,qBAAO,KAAK,QAAM,qBAAqB,KAAK,KAAK,IAAE;AAAA,YAAM,GAAE;AAAA,UAAC,GAAE;AAAA,QAAC,EAAE,KAAK,IAAI,GAAE,WAAU;AAAC,cAAID,KAAE,SAASA,IAAEC,IAAE;AAAC,mBAAO,WAAU;AAAC,qBAAOD,GAAE,MAAMC,IAAE,SAAS;AAAA,YAAC;AAAA,UAAC;AAAE,YAAE,cAAW,WAAU;AAAC,qBAAS,IAAG;AAAC,mBAAK,eAAaD,GAAE,KAAK,cAAa,IAAI,GAAE,KAAK,gBAAcA,GAAE,KAAK,eAAc,IAAI,GAAE,KAAK,aAAWA,GAAE,KAAK,YAAW,IAAI,GAAE,KAAK,UAAQ,IAAI,EAAE,QAAQ,IAAI,GAAE,KAAK,OAAK,IAAI,EAAE,KAAK,IAAI,GAAE,KAAK,gBAAc,IAAI,EAAE,cAAc,IAAI,GAAE,KAAK,kBAAgB,CAAC,GAAE,KAAK,WAAW,GAAE,KAAK,oBAAoB,GAAG;AAAA,YAAC;AAAC,mBAAO,EAAE,UAAU,QAAM,WAAU;AAAC,qBAAO,EAAE,aAAW,CAAC,KAAK,WAAS,iBAAiB,SAAQ,KAAK,eAAc,IAAE,GAAE,iBAAiB,oBAAmB,KAAK,YAAW,KAAE,GAAE,KAAK,cAAc,MAAM,GAAE,KAAK,aAAa,GAAE,KAAK,UAAQ,MAAG,KAAK,UAAQ,QAAI;AAAA,YAAM,GAAE,EAAE,UAAU,UAAQ,WAAU;AAAC,qBAAO,KAAK,UAAQ;AAAA,YAAE,GAAE,EAAE,UAAU,OAAK,WAAU;AAAC,qBAAO,KAAK,WAAS,oBAAoB,SAAQ,KAAK,eAAc,IAAE,GAAE,oBAAoB,oBAAmB,KAAK,YAAW,KAAE,GAAE,KAAK,cAAc,KAAK,GAAE,KAAK,YAAY,GAAE,KAAK,UAAQ,SAAI;AAAA,YAAM,GAAE,EAAE,UAAU,aAAW,WAAU;AAAC,qBAAO,KAAK,QAAM,IAAI,EAAE,cAAc,EAAE;AAAA,YAAC,GAAE,EAAE,UAAU,QAAM,SAASA,IAAEE,IAAE;AAAC,kBAAI,GAAE;AAAE,qBAAO,QAAMA,OAAIA,KAAE,CAAC,IAAGF,KAAE,EAAE,SAAS,KAAKA,EAAC,GAAE,KAAK,kCAAkCA,EAAC,IAAE,KAAK,oBAAoBA,EAAC,KAAG,IAAE,SAAO,IAAEE,GAAE,UAAQ,IAAE,WAAU,KAAK,QAAQ,kCAAkCF,IAAE,CAAC,KAAG,OAAO,WAASA,KAAE;AAAA,YAAM,GAAE,EAAE,UAAU,iCAA+B,SAASA,IAAEE,IAAE,GAAE;AAAC,kBAAI;AAAE,qBAAO,EAAE,aAAW,IAAE,KAAK,gCAAgC,CAAC,GAAE,KAAK,WAAWF,IAAEE,IAAE,EAAC,iBAAgB,EAAC,CAAC,KAAG,OAAO,WAASF;AAAA,YAAC,GAAE,EAAE,UAAU,sBAAoB,SAASA,IAAE;AAAC,qBAAO,KAAK,mBAAiBA;AAAA,YAAC,GAAE,EAAE,UAAU,eAAa,WAAU;AAAC,qBAAO,KAAK,WAAS,EAAE,SAAS,KAAK,OAAO,QAAQ,GAAE,KAAK,wBAAsB,EAAE,KAAK,GAAE,KAAK,QAAQ,MAAM,GAAE,KAAK,QAAQ,QAAQ,KAAK,UAAS,KAAK,qBAAqB;AAAA,YAAC,GAAE,EAAE,UAAU,cAAY,WAAU;AAAC,qBAAO,KAAK,QAAQ,KAAK;AAAA,YAAC,GAAE,EAAE,UAAU,kDAAgD,SAASA,IAAEE,IAAE;AAAC,qBAAO,KAAK,wBAAsBA,IAAE,KAAK,WAAS,EAAE,SAAS,KAAKF,EAAC,GAAE,KAAK,QAAQ,KAAK,KAAK,UAAS,KAAK,qBAAqB;AAAA,YAAC,GAAE,EAAE,UAAU,qDAAmD,SAASA,IAAEE,IAAE;AAAC,qBAAO,KAAK,wBAAsBA,IAAE,KAAK,WAAS,EAAE,SAAS,KAAKF,EAAC,GAAE,KAAK,QAAQ,QAAQ,KAAK,UAAS,KAAK,qBAAqB;AAAA,YAAC,GAAE,EAAE,UAAU,mDAAiD,SAASA,IAAEE,IAAE;AAAC,kBAAI;AAAE,qBAAO,KAAK,wBAAsBA,IAAE,KAAK,WAAS,IAAE,KAAK,gCAAgC,KAAK,qBAAqB,GAAE,KAAK,WAAWF,IAAE,WAAU,EAAC,uBAAsB,KAAK,uBAAsB,iBAAgB,GAAE,gBAAe,KAAE,CAAC,GAAE,KAAK,WAAS,EAAE,SAAS,KAAKA,EAAC,KAAG,KAAK,QAAQ,gBAAgB;AAAA,YAAC,GAAE,EAAE,UAAU,+BAA6B,SAASA,IAAE;AAAC,kBAAIC;AAAE,qBAAO,SAAOA,KAAE,KAAK,MAAM,IAAID,EAAC,KAAGC,GAAE,MAAM,IAAE;AAAA,YAAM,GAAE,EAAE,UAAU,sBAAoB,WAAU;AAAC,qBAAO,KAAK,KAAK,YAAY,EAAE,YAAY;AAAA,YACxggC,GAAE,EAAE,UAAU,gBAAc,WAAU;AAAC,kBAAID,IAAEE;AAAE,qBAAO,KAAK,oBAAoB,KAAG,KAAK,uCAAuC,GAAEA,KAAE,KAAK,KAAK,YAAY,GAAEF,KAAE,KAAK,sBAAqB,EAAE,MAAM,0BAASC,IAAE;AAAC,uBAAO,WAAU;AAAC,yBAAOA,GAAE,MAAM,IAAID,IAAEE,GAAE,MAAM,CAAC;AAAA,gBAAC;AAAA,cAAC,GAAE,IAAI,CAAC,KAAG;AAAA,YAAM,GAAE,EAAE,UAAU,iBAAe,SAASF,IAAE;AAAC,kBAAIC;AAAE,sBAAOA,KAAE,KAAK,KAAK,oBAAoBD,EAAC,KAAG,KAAK,gBAAgBC,EAAC,IAAE,KAAK,iBAAiB,EAAC,GAAE,GAAE,GAAE,EAAC,CAAC;AAAA,YAAC,GAAE,EAAE,UAAU,kBAAgB,SAASD,IAAE;AAAC,qBAAO,KAAK,cAAc,gBAAgBA,EAAC;AAAA,YAAC,GAAE,EAAE,UAAU,mBAAiB,SAASA,IAAE;AAAC,qBAAO,KAAK,cAAc,iBAAiBA,EAAC;AAAA,YAAC,GAAE,EAAE,UAAU,wBAAsB,SAASA,IAAE;AAAC,kBAAIC;AAAE,qBAAOA,KAAE,KAAK,0BAA0B,GAAEA,GAAE,iBAAeD;AAAA,YAAC,GAAE,EAAE,UAAU,SAAO,SAASA,IAAEC,IAAE;AAAC,qBAAO,KAAK,KAAK,OAAOD,IAAEC,EAAC;AAAA,YAAC,GAAE,EAAE,UAAU,kBAAgB,WAAU;AAAC,qBAAO,KAAK,QAAQ,gBAAgB;AAAA,YAAC,GAAE,EAAE,UAAU,iBAAe,SAASD,IAAE;AAAC,qBAAO,KAAK,8BAA8BA,EAAC;AAAA,YAAC,GAAE,EAAE,UAAU,eAAa,WAAU;AAAC,qBAAO,KAAK,uBAAqB,KAAK,aAAa,UAAS,KAAK,6BAA6B;AAAA,YAAC,GAAE,EAAE,UAAU,aAAW,WAAU;AAAC,qBAAO,KAAK,uBAAqB,KAAK,UAAS,KAAK,+BAA+B;AAAA,YAAC,GAAE,EAAE,UAAU,gBAAc,WAAU;AAAC,qBAAO,oBAAoB,SAAQ,KAAK,cAAa,KAAE,GAAE,iBAAiB,SAAQ,KAAK,cAAa,KAAE;AAAA,YAAC,GAAE,EAAE,UAAU,eAAa,SAASA,IAAE;AAAC,kBAAIC,IAAEC,IAAE;AAAE,qBAAO,KAAK,WAAS,KAAK,wBAAwBF,EAAC,MAAIE,KAAE,KAAK,wBAAwBF,GAAE,MAAM,OAAK,IAAE,KAAK,4BAA4BE,EAAC,MAAI,KAAK,yCAAyCA,IAAE,CAAC,KAAGF,GAAE,eAAe,GAAEC,KAAE,KAAK,iBAAiBC,EAAC,GAAE,KAAK,MAAM,GAAE,EAAC,QAAOD,GAAC,CAAC,KAAG;AAAA,YAAM,GAAE,EAAE,UAAU,2CAAyC,SAASD,IAAEC,IAAE;AAAC,kBAAIC;AAAE,qBAAOA,KAAE,KAAK,6CAA6CF,IAAEC,EAAC,GAAE,CAACC,GAAE;AAAA,YAAgB,GAAE,EAAE,UAAU,oCAAkC,SAASF,IAAE;AAAC,kBAAIC;AAAE,qBAAOA,KAAE,KAAK,wCAAwCD,EAAC,GAAE,CAACC,GAAE;AAAA,YAAgB,GAAE,EAAE,UAAU,+CAA6C,SAASD,IAAEE,IAAE;AAAC,qBAAO,EAAE,SAAS,oBAAmB,EAAC,QAAOF,IAAE,MAAK,EAAC,KAAIE,GAAE,YAAW,GAAE,YAAW,KAAE,CAAC;AAAA,YAAC,GAAE,EAAE,UAAU,0CAAwC,SAASF,IAAE;AAAC,qBAAO,EAAE,SAAS,2BAA0B,EAAC,MAAK,EAAC,KAAIA,GAAE,YAAW,GAAE,YAAW,KAAE,CAAC;AAAA,YAAC,GAAE,EAAE,UAAU,yCAAuC,SAASA,IAAE;AAAC,qBAAO,EAAE,SAAS,oBAAmB,EAAC,MAAK,EAAC,KAAIA,GAAE,YAAW,EAAC,CAAC;AAAA,YAAC,GAAE,EAAE,UAAU,yCAAuC,WAAU;AAAC,qBAAO,EAAE,SAAS,yBAAyB;AAAA,YAAC,GAAE,EAAE,UAAU,gCAA8B,SAASA,IAAE;AAAC,qBAAO,EAAE,SAAS,4BAA2B,EAAC,MAAK,EAAC,SAAQA,GAAC,EAAC,CAAC;AAAA,YAAC,GAAE,EAAE,UAAU,+BAA6B,WAAU;AAAC,qBAAO,EAAE,SAAS,mBAAmB;AAAA,YAAC,GAAE,EAAE,UAAU,iCAA+B,SAASA,IAAE;AAAC,qBAAO,QAAMA,OAAIA,KAAE,CAAC,IAAG,EAAE,SAAS,mBAAkB,EAAC,MAAK,EAAC,KAAI,KAAK,SAAS,aAAY,QAAOA,GAAC,EAAC,CAAC;AAAA,YAAC,GAAE,EAAE,UAAU,aAAW,SAASA,IAAEC,IAAEC,IAAE;AAAC,kBAAI;AAAE,qBAAO,SAAO,IAAE,KAAK,iBAAe,EAAE,OAAO,GAAE,KAAK,eAAa,KAAK,YAAYF,IAAEC,IAAEC,EAAC,GAAE,KAAK,aAAa,MAAM,GAAE,KAAK,uCAAuCF,EAAC;AAAA,YAAC,GAAE,EAAE,UAAU,cAAY,SAASA,IAAEE,IAAE,GAAE;AAAC,kBAAI,GAAE,GAAE,GAAE,GAAE;AAAE,qBAAO,IAAE,QAAM,IAAE,IAAE,CAAC,GAAE,IAAE,EAAE,uBAAsB,IAAE,EAAE,iBAAgB,IAAE,EAAE,gBAAe,IAAE,IAAI,EAAE,MAAM,MAAKF,IAAEE,EAAC,GAAE,EAAE,wBAAsB,QAAM,IAAE,IAAE,EAAE,KAAK,GAAE,EAAE,kBAAgB,EAAE,WAAW,CAAC,GAAE,EAAE,iBAAe,GAAE,EAAE,WAAS,KAAK,UAAS;AAAA,YAAC,GAAE,EAAE,UAAU,iBAAe,SAASF,IAAE;AAAC,qBAAO,KAAK,+BAA+BA,GAAE,iBAAiB,CAAC;AAAA,YAAC,GAAE,EAAE,UAAU,0BAAwB,SAASA,IAAE;AAAC,qBAAM,EAAEA,GAAE,oBAAkBA,GAAE,OAAO,qBAAmBA,GAAE,QAAM,KAAGA,GAAE,UAAQA,GAAE,WAASA,GAAE,WAASA,GAAE;AAAA,YAAS,GAAE,EAAE,UAAU,0BAAwB,SAASA,IAAE;AAAC,qBAAO,KAAK,gBAAgBA,EAAC,IAAE,EAAE,QAAQA,IAAE,uCAAuC,IAAE;AAAA,YAAM,GAAE,EAAE,UAAU,8BAA4B,SAASA,IAAE;AAAC,kBAAIE;AAAE,qBAAOA,KAAE,IAAI,EAAE,SAASF,GAAE,aAAa,MAAM,CAAC,GAAE,KAAK,oBAAoBE,EAAC,IAAEA,KAAE;AAAA,YAAM,GAAE,EAAE,UAAU,mBAAiB,SAASF,IAAE;AAAC,kBAAIC;AAAE,qBAAO,SAAOA,KAAED,GAAE,aAAa,wBAAwB,KAAGC,KAAE;AAAA,YAAS,GAAE,EAAE,UAAU,kBAAgB,SAASD,IAAE;AAAC,kBAAIE;AAAE,sBAAOA,KAAE,EAAE,QAAQF,IAAE,mBAAmB,KAAG,YAAUE,GAAE,aAAa,iBAAiB,IAAE;AAAA,YAAE,GAAE,EAAE,UAAU,sBAAoB,SAASF,IAAE;AAAC,qBAAOA,GAAE,aAAa,KAAK,KAAK,gBAAgB,CAAC,KAAGA,GAAE,OAAO;AAAA,YAAC,GAAE,EAAE,UAAU,4BAA0B,WAAU;AAAC,qBAAO,KAAK,gCAAgC,KAAK,qBAAqB;AAAA,YAAC,GAAE,EAAE,UAAU,kCAAgC,SAASA,IAAE;AAAC,kBAAIC;AAAE,qBAAO,SAAOA,KAAE,KAAK,iBAAiBD,EAAC,IAAEC,GAAED,EAAC,IAAEC,GAAED,EAAC,IAAE,CAAC;AAAA,YAAC,GAAE;AAAA,UAAC,GAAE;AAAA,QAAC,EAAE,KAAK,IAAI,GAAE,WAAU;AAAC,YAAC,WAAU;AAAC,gBAAIA,IAAEC;AAAE,iBAAID,KAAEC,KAAE,SAAS,kBAAgB,CAACA,GAAE,aAAa,kCAAkC;AAAE,qBAAKD,KAAEA,GAAE,aAAY,KAAGA,OAAI,SAAS,KAAK,QAAO,QAAQ,KAAK,6dAA4dC,GAAE,SAAS;AAAA;AAAA,UAAC,GAAE;AAAA,QAAC,EAAE,KAAK,IAAI,GAAE,WAAU;AAAC,cAAID,IAAE,GAAE;AAAE,YAAE,QAAM,WAAU;AAAC,mBAAO,EAAE,KAAG,QAAM,EAAE,eAAa,EAAE,aAAWA,GAAE,IAAG,EAAE,WAAW,MAAM,KAAG;AAAA,UAAM,GAAE,IAAE,WAAU;AAAC,mBAAO,QAAM,OAAO,eAAa,OAAO,aAAW,IAAG,EAAE;AAAA,UAAC,GAAEA,KAAE,WAAU;AAAC,gBAAIA;AAAE,mBAAOA,KAAE,IAAI,EAAE,cAAWA,GAAE,UAAQ,IAAI,EAAE,eAAeA,EAAC,GAAEA;AAAA,UAAC,GAAE,IAAE,WAAU;AAAC,mBAAO,OAAO,eAAa;AAAA,UAAC,GAAE,EAAE,KAAG,EAAE,MAAM;AAAA,QAAC,EAAE,KAAK,IAAI;AAAA,MAAC,GAAG,KAAK,IAAI,GAAE,YAAU,OAAO,UAAQ,OAAO,UAAQ,OAAO,UAAQ,IAAE,cAAY,OAAO,UAAQ,OAAO,OAAK,OAAO,CAAC;AAAA,IAAC,GAAG,KAAK,OAAI;AAAA;AAAA;;;ACLljL;AAAA;AAAA;AAWA,KAAC,SAAUM,SAAQC,UAAS;AAC1B,aAAO,YAAY,YAAY,OAAO,WAAW,cAAc,OAAO,UAAUA,SAAQ,IACxF,OAAO,WAAW,cAAc,OAAO,MAAM,OAAOA,QAAO,KAC1DD,UAAS,OAAO,eAAe,cAAc,aAAaA,WAAU,MAAMA,QAAO,SAASC,SAAQ;AAAA,IACrG,GAAG,UAAO,WAAY;AAAE;AAEtB,eAAS,kBAAkBC,SAAQC,QAAO;AACxC,iBAAS,IAAI,GAAG,IAAIA,OAAM,QAAQ,KAAK;AACrC,cAAI,aAAaA,OAAM,CAAC;AACxB,qBAAW,aAAa,WAAW,cAAc;AACjD,qBAAW,eAAe;AAC1B,cAAI,WAAW,WAAY,YAAW,WAAW;AACjD,iBAAO,eAAeD,SAAQ,WAAW,KAAK,UAAU;AAAA,QAC1D;AAAA,MACF;AAEA,eAAS,aAAa,aAAa,YAAY,aAAa;AAC1D,YAAI,WAAY,mBAAkB,YAAY,WAAW,UAAU;AACnE,YAAI,YAAa,mBAAkB,aAAa,WAAW;AAC3D,eAAO;AAAA,MACT;AAEA,eAAS,4BAA4B,GAAG,QAAQ;AAC9C,YAAI,CAAC,EAAG;AACR,YAAI,OAAO,MAAM,SAAU,QAAO,kBAAkB,GAAG,MAAM;AAC7D,YAAI,IAAI,OAAO,UAAU,SAAS,KAAK,CAAC,EAAE,MAAM,GAAG,EAAE;AACrD,YAAI,MAAM,YAAY,EAAE,YAAa,KAAI,EAAE,YAAY;AACvD,YAAI,MAAM,SAAS,MAAM,MAAO,QAAO,MAAM,KAAK,CAAC;AACnD,YAAI,MAAM,eAAe,2CAA2C,KAAK,CAAC,EAAG,QAAO,kBAAkB,GAAG,MAAM;AAAA,MACjH;AAEA,eAAS,kBAAkB,KAAKE,MAAK;AACnC,YAAIA,QAAO,QAAQA,OAAM,IAAI,OAAQ,CAAAA,OAAM,IAAI;AAE/C,iBAAS,IAAI,GAAG,OAAO,IAAI,MAAMA,IAAG,GAAG,IAAIA,MAAK,IAAK,MAAK,CAAC,IAAI,IAAI,CAAC;AAEpE,eAAO;AAAA,MACT;AAEA,eAAS,gCAAgC,GAAG,gBAAgB;AAC1D,YAAI,KAAK,OAAO,WAAW,eAAe,EAAE,OAAO,QAAQ,KAAK,EAAE,YAAY;AAC9E,YAAI,GAAI,SAAQ,KAAK,GAAG,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;AAE7C,YAAI,MAAM,QAAQ,CAAC,MAAM,KAAK,4BAA4B,CAAC,MAAM,kBAAkB,KAAK,OAAO,EAAE,WAAW,UAAU;AACpH,cAAI,GAAI,KAAI;AACZ,cAAI,IAAI;AACR,iBAAO,WAAY;AACjB,gBAAI,KAAK,EAAE,OAAQ,QAAO;AAAA,cACxB,MAAM;AAAA,YACR;AACA,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,OAAO,EAAE,GAAG;AAAA,YACd;AAAA,UACF;AAAA,QACF;AAEA,cAAM,IAAI,UAAU,uIAAuI;AAAA,MAC7J;AAEA,UAAI,aAAa,EAAC,SAAS,CAAC,EAAC;AAE7B,eAAS,gBAAgB;AACvB,eAAO;AAAA,UACL,SAAS;AAAA,UACT,QAAQ;AAAA,UACR,YAAY;AAAA,UACZ,KAAK;AAAA,UACL,WAAW;AAAA,UACX,cAAc;AAAA,UACd,WAAW;AAAA,UACX,YAAY;AAAA,UACZ,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,UAAU;AAAA,UACV,UAAU;AAAA,UACV,WAAW;AAAA,UACX,QAAQ;AAAA,UACR,YAAY;AAAA,UACZ,aAAa;AAAA,UACb,WAAW;AAAA,UACX,YAAY;AAAA,UACZ,OAAO;AAAA,QACT;AAAA,MACF;AAEA,eAAS,iBAAiB,aAAa;AACrC,mBAAW,QAAQ,WAAW;AAAA,MAChC;AAEA,iBAAW,UAAU;AAAA,QACnB,UAAU,cAAc;AAAA,QACxB,aAAa;AAAA,QACb,gBAAgB;AAAA,MAClB;AAKA,UAAI,aAAa;AACjB,UAAI,gBAAgB;AACpB,UAAI,qBAAqB;AACzB,UAAI,wBAAwB;AAC5B,UAAI,qBAAqB;AAAA,QACvB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,MACP;AAEA,UAAI,uBAAuB,SAASC,sBAAqB,IAAI;AAC3D,eAAO,mBAAmB,EAAE;AAAA,MAC9B;AAEA,eAAS,SAASC,OAAMC,SAAQ;AAC9B,YAAIA,SAAQ;AACV,cAAI,WAAW,KAAKD,KAAI,GAAG;AACzB,mBAAOA,MAAK,QAAQ,eAAe,oBAAoB;AAAA,UACzD;AAAA,QACF,OAAO;AACL,cAAI,mBAAmB,KAAKA,KAAI,GAAG;AACjC,mBAAOA,MAAK,QAAQ,uBAAuB,oBAAoB;AAAA,UACjE;AAAA,QACF;AAEA,eAAOA;AAAA,MACT;AAEA,UAAI,eAAe;AAEnB,eAAS,WAAWA,OAAM;AAExB,eAAOA,MAAK,QAAQ,cAAc,SAAU,GAAG,GAAG;AAChD,cAAI,EAAE,YAAY;AAClB,cAAI,MAAM,QAAS,QAAO;AAE1B,cAAI,EAAE,OAAO,CAAC,MAAM,KAAK;AACvB,mBAAO,EAAE,OAAO,CAAC,MAAM,MAAM,OAAO,aAAa,SAAS,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,OAAO,aAAa,CAAC,EAAE,UAAU,CAAC,CAAC;AAAA,UACtH;AAEA,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AAEA,UAAI,QAAQ;AAEZ,eAAS,OAAO,OAAO,KAAK;AAC1B,gBAAQ,MAAM,UAAU;AACxB,cAAM,OAAO;AACb,YAAI,MAAM;AAAA,UACR,SAAS,SAASE,SAAQ,MAAM,KAAK;AACnC,kBAAM,IAAI,UAAU;AACpB,kBAAM,IAAI,QAAQ,OAAO,IAAI;AAC7B,oBAAQ,MAAM,QAAQ,MAAM,GAAG;AAC/B,mBAAO;AAAA,UACT;AAAA,UACA,UAAU,SAAS,WAAW;AAC5B,mBAAO,IAAI,OAAO,OAAO,GAAG;AAAA,UAC9B;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,UAAI,sBAAsB;AAC1B,UAAI,uBAAuB;AAE3B,eAAS,WAAW,UAAU,MAAM,MAAM;AACxC,YAAI,UAAU;AACZ,cAAI;AAEJ,cAAI;AACF,mBAAO,mBAAmB,WAAW,IAAI,CAAC,EAAE,QAAQ,qBAAqB,EAAE,EAAE,YAAY;AAAA,UAC3F,SAAS,GAAG;AACV,mBAAO;AAAA,UACT;AAEA,cAAI,KAAK,QAAQ,aAAa,MAAM,KAAK,KAAK,QAAQ,WAAW,MAAM,KAAK,KAAK,QAAQ,OAAO,MAAM,GAAG;AACvG,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,YAAI,QAAQ,CAAC,qBAAqB,KAAK,IAAI,GAAG;AAC5C,iBAAOC,YAAW,MAAM,IAAI;AAAA,QAC9B;AAEA,YAAI;AACF,iBAAO,UAAU,IAAI,EAAE,QAAQ,QAAQ,GAAG;AAAA,QAC5C,SAAS,GAAG;AACV,iBAAO;AAAA,QACT;AAEA,eAAO;AAAA,MACT;AAEA,UAAI,WAAW,CAAC;AAChB,UAAI,aAAa;AACjB,UAAI,WAAW;AACf,UAAI,SAAS;AAEb,eAASA,YAAW,MAAM,MAAM;AAC9B,YAAI,CAAC,SAAS,MAAM,IAAI,GAAG;AAIzB,cAAI,WAAW,KAAK,IAAI,GAAG;AACzB,qBAAS,MAAM,IAAI,IAAI,OAAO;AAAA,UAChC,OAAO;AACL,qBAAS,MAAM,IAAI,IAAI,QAAQ,MAAM,KAAK,IAAI;AAAA,UAChD;AAAA,QACF;AAEA,eAAO,SAAS,MAAM,IAAI;AAC1B,YAAI,eAAe,KAAK,QAAQ,GAAG,MAAM;AAEzC,YAAI,KAAK,UAAU,GAAG,CAAC,MAAM,MAAM;AACjC,cAAI,cAAc;AAChB,mBAAO;AAAA,UACT;AAEA,iBAAO,KAAK,QAAQ,UAAU,IAAI,IAAI;AAAA,QACxC,WAAW,KAAK,OAAO,CAAC,MAAM,KAAK;AACjC,cAAI,cAAc;AAChB,mBAAO;AAAA,UACT;AAEA,iBAAO,KAAK,QAAQ,QAAQ,IAAI,IAAI;AAAA,QACtC,OAAO;AACL,iBAAO,OAAO;AAAA,QAChB;AAAA,MACF;AAEA,UAAI,aAAa;AAAA,QACf,MAAM,SAASC,YAAW;AAAA,QAAC;AAAA,MAC7B;AAEA,eAAS,QAAQ,KAAK;AACpB,YAAI,IAAI,GACJR,SACA;AAEJ,eAAO,IAAI,UAAU,QAAQ,KAAK;AAChC,UAAAA,UAAS,UAAU,CAAC;AAEpB,eAAK,OAAOA,SAAQ;AAClB,gBAAI,OAAO,UAAU,eAAe,KAAKA,SAAQ,GAAG,GAAG;AACrD,kBAAI,GAAG,IAAIA,QAAO,GAAG;AAAA,YACvB;AAAA,UACF;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAEA,eAAS,aAAa,UAAU,OAAO;AAGrC,YAAI,MAAM,SAAS,QAAQ,OAAO,SAAUS,QAAO,QAAQC,MAAK;AAC9D,cAAI,UAAU,OACV,OAAO;AAEX,iBAAO,EAAE,QAAQ,KAAKA,KAAI,IAAI,MAAM,MAAM;AACxC,sBAAU,CAAC;AAAA,UACb;AAEA,cAAI,SAAS;AAGX,mBAAO;AAAA,UACT,OAAO;AAEL,mBAAO;AAAA,UACT;AAAA,QACF,CAAC,GACG,QAAQ,IAAI,MAAM,KAAK;AAC3B,YAAI,IAAI;AAER,YAAI,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG;AACpB,gBAAM,MAAM;AAAA,QACd;AAEA,YAAI,CAAC,MAAM,MAAM,SAAS,CAAC,EAAE,KAAK,GAAG;AACnC,gBAAM,IAAI;AAAA,QACZ;AAEA,YAAI,MAAM,SAAS,OAAO;AACxB,gBAAM,OAAO,KAAK;AAAA,QACpB,OAAO;AACL,iBAAO,MAAM,SAAS,OAAO;AAC3B,kBAAM,KAAK,EAAE;AAAA,UACf;AAAA,QACF;AAEA,eAAO,IAAI,MAAM,QAAQ,KAAK;AAE5B,gBAAM,CAAC,IAAI,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,SAAS,GAAG;AAAA,QACjD;AAEA,eAAO;AAAA,MACT;AAKA,eAAS,QAAQA,MAAK,GAAG,QAAQ;AAC/B,YAAI,IAAIA,KAAI;AAEZ,YAAI,MAAM,GAAG;AACX,iBAAO;AAAA,QACT;AAGA,YAAI,UAAU;AAEd,eAAO,UAAU,GAAG;AAClB,cAAI,WAAWA,KAAI,OAAO,IAAI,UAAU,CAAC;AAEzC,cAAI,aAAa,KAAK,CAAC,QAAQ;AAC7B;AAAA,UACF,WAAW,aAAa,KAAK,QAAQ;AACnC;AAAA,UACF,OAAO;AACL;AAAA,UACF;AAAA,QACF;AAEA,eAAOA,KAAI,OAAO,GAAG,IAAI,OAAO;AAAA,MAClC;AAEA,eAAS,qBAAqBA,MAAK,GAAG;AACpC,YAAIA,KAAI,QAAQ,EAAE,CAAC,CAAC,MAAM,IAAI;AAC5B,iBAAO;AAAA,QACT;AAEA,YAAI,IAAIA,KAAI;AACZ,YAAI,QAAQ,GACR,IAAI;AAER,eAAO,IAAI,GAAG,KAAK;AACjB,cAAIA,KAAI,CAAC,MAAM,MAAM;AACnB;AAAA,UACF,WAAWA,KAAI,CAAC,MAAM,EAAE,CAAC,GAAG;AAC1B;AAAA,UACF,WAAWA,KAAI,CAAC,MAAM,EAAE,CAAC,GAAG;AAC1B;AAEA,gBAAI,QAAQ,GAAG;AACb,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAEA,eAAS,2BAA2B,KAAK;AACvC,YAAI,OAAO,IAAI,YAAY,CAAC,IAAI,QAAQ;AACtC,kBAAQ,KAAK,yMAAyM;AAAA,QACxN;AAAA,MACF;AAGA,eAAS,eAAe,SAAS,OAAO;AACtC,YAAI,QAAQ,GAAG;AACb,iBAAO;AAAA,QACT;AAEA,YAAI,SAAS;AAEb,eAAO,QAAQ,GAAG;AAChB,cAAI,QAAQ,GAAG;AACb,sBAAU;AAAA,UACZ;AAEA,oBAAU;AACV,qBAAW;AAAA,QACb;AAEA,eAAO,SAAS;AAAA,MAClB;AAEA,UAAI,UAAU;AAAA,QACZ,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,MAAM;AAAA,QACN,UAAU;AAAA,QACV,YAAYH;AAAA,QACZ,UAAU;AAAA,QACV,OAAO;AAAA,QACP,YAAY;AAAA,QACZ,OAAO;AAAA,QACP,oBAAoB;AAAA,QACpB,0BAA0B;AAAA,QAC1B,cAAc;AAAA,MAChB;AAEA,UAAI,aAAa,WAAW,QAAQ;AACpC,UAAI,QAAQ,QAAQ,OAChB,aAAa,QAAQ,YACrB,UAAU,QAAQ,QAClB,qBAAqB,QAAQ;AAEjC,eAAS,WAAW,KAAK,MAAM,KAAK,OAAO;AACzC,YAAI,OAAO,KAAK;AAChB,YAAI,QAAQ,KAAK,QAAQ,QAAQ,KAAK,KAAK,IAAI;AAC/C,YAAII,QAAO,IAAI,CAAC,EAAE,QAAQ,eAAe,IAAI;AAE7C,YAAI,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,KAAK;AAC5B,gBAAM,MAAM,SAAS;AACrB,cAAI,QAAQ;AAAA,YACV,MAAM;AAAA,YACN;AAAA,YACA;AAAA,YACA;AAAA,YACA,MAAMA;AAAA,YACN,QAAQ,MAAM,aAAaA,OAAM,CAAC,CAAC;AAAA,UACrC;AACA,gBAAM,MAAM,SAAS;AACrB,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO;AAAA,YACL,MAAM;AAAA,YACN;AAAA,YACA;AAAA,YACA;AAAA,YACA,MAAM,QAAQA,KAAI;AAAA,UACpB;AAAA,QACF;AAAA,MACF;AAEA,eAAS,uBAAuB,KAAKA,OAAM;AACzC,YAAI,oBAAoB,IAAI,MAAM,eAAe;AAEjD,YAAI,sBAAsB,MAAM;AAC9B,iBAAOA;AAAA,QACT;AAEA,YAAI,eAAe,kBAAkB,CAAC;AACtC,eAAOA,MAAK,MAAM,IAAI,EAAE,IAAI,SAAU,MAAM;AAC1C,cAAI,oBAAoB,KAAK,MAAM,MAAM;AAEzC,cAAI,sBAAsB,MAAM;AAC9B,mBAAO;AAAA,UACT;AAEA,cAAI,eAAe,kBAAkB,CAAC;AAEtC,cAAI,aAAa,UAAU,aAAa,QAAQ;AAC9C,mBAAO,KAAK,MAAM,aAAa,MAAM;AAAA,UACvC;AAEA,iBAAO;AAAA,QACT,CAAC,EAAE,KAAK,IAAI;AAAA,MACd;AAMA,UAAI,cAA2B,4BAAY;AACzC,iBAASC,WAAU,SAAS;AAC1B,eAAK,UAAU,WAAW;AAAA,QAC5B;AAEA,YAAI,SAASA,WAAU;AAEvB,eAAO,QAAQ,SAAS,MAAM,KAAK;AACjC,cAAI,MAAM,KAAK,MAAM,MAAM,QAAQ,KAAK,GAAG;AAE3C,cAAI,KAAK;AACP,gBAAI,IAAI,CAAC,EAAE,SAAS,GAAG;AACrB,qBAAO;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK,IAAI,CAAC;AAAA,cACZ;AAAA,YACF;AAEA,mBAAO;AAAA,cACL,KAAK;AAAA,YACP;AAAA,UACF;AAAA,QACF;AAEA,eAAO,OAAO,SAAS,KAAK,KAAK;AAC/B,cAAI,MAAM,KAAK,MAAM,MAAM,KAAK,KAAK,GAAG;AAExC,cAAI,KAAK;AACP,gBAAID,QAAO,IAAI,CAAC,EAAE,QAAQ,aAAa,EAAE;AACzC,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,KAAK,IAAI,CAAC;AAAA,cACV,gBAAgB;AAAA,cAChB,MAAM,CAAC,KAAK,QAAQ,WAAW,MAAMA,OAAM,IAAI,IAAIA;AAAA,YACrD;AAAA,UACF;AAAA,QACF;AAEA,eAAO,SAAS,SAAS,OAAO,KAAK;AACnC,cAAI,MAAM,KAAK,MAAM,MAAM,OAAO,KAAK,GAAG;AAE1C,cAAI,KAAK;AACP,gBAAI,MAAM,IAAI,CAAC;AACf,gBAAIA,QAAO,uBAAuB,KAAK,IAAI,CAAC,KAAK,EAAE;AACnD,mBAAO;AAAA,cACL,MAAM;AAAA,cACN;AAAA,cACA,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC;AAAA,cACpC,MAAMA;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAEA,eAAO,UAAU,SAAS,QAAQ,KAAK;AACrC,cAAI,MAAM,KAAK,MAAM,MAAM,QAAQ,KAAK,GAAG;AAE3C,cAAI,KAAK;AACP,gBAAIA,QAAO,IAAI,CAAC,EAAE,KAAK;AAEvB,gBAAI,KAAK,KAAKA,KAAI,GAAG;AACnB,kBAAI,UAAU,MAAMA,OAAM,GAAG;AAE7B,kBAAI,KAAK,QAAQ,UAAU;AACzB,gBAAAA,QAAO,QAAQ,KAAK;AAAA,cACtB,WAAW,CAAC,WAAW,KAAK,KAAK,OAAO,GAAG;AAEzC,gBAAAA,QAAO,QAAQ,KAAK;AAAA,cACtB;AAAA,YACF;AAEA,gBAAI,QAAQ;AAAA,cACV,MAAM;AAAA,cACN,KAAK,IAAI,CAAC;AAAA,cACV,OAAO,IAAI,CAAC,EAAE;AAAA,cACd,MAAMA;AAAA,cACN,QAAQ,CAAC;AAAA,YACX;AACA,iBAAK,MAAM,OAAO,MAAM,MAAM,MAAM,MAAM;AAC1C,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,eAAO,KAAK,SAAS,GAAG,KAAK;AAC3B,cAAI,MAAM,KAAK,MAAM,MAAM,GAAG,KAAK,GAAG;AAEtC,cAAI,KAAK;AACP,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,KAAK,IAAI,CAAC;AAAA,YACZ;AAAA,UACF;AAAA,QACF;AAEA,eAAO,aAAa,SAAS,WAAW,KAAK;AAC3C,cAAI,MAAM,KAAK,MAAM,MAAM,WAAW,KAAK,GAAG;AAE9C,cAAI,KAAK;AACP,gBAAIA,QAAO,IAAI,CAAC,EAAE,QAAQ,YAAY,EAAE;AACxC,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,KAAK,IAAI,CAAC;AAAA,cACV,QAAQ,KAAK,MAAM,YAAYA,OAAM,CAAC,CAAC;AAAA,cACvC,MAAMA;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAEA,eAAO,OAAO,SAAS,KAAK,KAAK;AAC/B,cAAI,MAAM,KAAK,MAAM,MAAM,KAAK,KAAK,GAAG;AAExC,cAAI,KAAK;AACP,gBAAI,KAAK,QAAQ,WAAW,QAAQ,GAAG,WAAW,mBAAmB,MAAM,OAAO;AAClF,gBAAI,OAAO,IAAI,CAAC,EAAE,KAAK;AACvB,gBAAI,YAAY,KAAK,SAAS;AAC9B,gBAAIE,QAAO;AAAA,cACT,MAAM;AAAA,cACN,KAAK;AAAA,cACL,SAAS;AAAA,cACT,OAAO,YAAY,CAAC,KAAK,MAAM,GAAG,EAAE,IAAI;AAAA,cACxC,OAAO;AAAA,cACP,OAAO,CAAC;AAAA,YACV;AACA,mBAAO,YAAY,eAAe,KAAK,MAAM,EAAE,IAAI,OAAO;AAE1D,gBAAI,KAAK,QAAQ,UAAU;AACzB,qBAAO,YAAY,OAAO;AAAA,YAC5B;AAGA,gBAAI,YAAY,IAAI,OAAO,aAAa,OAAO,4CAA4C;AAE3F,mBAAO,KAAK;AACV,kBAAI,KAAK,MAAM,MAAM,GAAG,KAAK,GAAG,GAAG;AAEjC;AAAA,cACF;AAEA,kBAAI,EAAE,MAAM,UAAU,KAAK,GAAG,IAAI;AAChC;AAAA,cACF;AAEA,sBAAQ,IAAI,CAAC,EAAE,MAAM,IAAI;AAEzB,kBAAI,KAAK,QAAQ,UAAU;AACzB,yBAAS;AACT,+BAAe,MAAM,CAAC,EAAE,SAAS;AAAA,cACnC,OAAO;AACL,yBAAS,IAAI,CAAC,EAAE,OAAO,MAAM;AAE7B,yBAAS,IAAI,CAAC,EAAE,UAAU,SAAS,IAAI,IAAI;AAE3C,+BAAe,MAAM,CAAC,EAAE,MAAM,SAAS,IAAI,CAAC,EAAE,MAAM;AAAA,cACtD;AAEA,0BAAY;AACZ,oBAAM,IAAI,CAAC;AAEX,kBAAI,CAAC,MAAM,CAAC,KAAK,OAAO,KAAK,MAAM,CAAC,CAAC,GAAG;AAEtC,sBAAM,IAAI,CAAC,IAAI,MAAM,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI;AAC9C,gBAAAA,MAAK,QAAQ;AACb,wBAAQ,CAAC;AAAA,cACX;AAEA,kBAAI,kBAAkB,IAAI,OAAO,UAAU,KAAK,IAAI,GAAG,SAAS,CAAC,IAAI,yBAAyB;AAE9F,mBAAK,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACjC,uBAAO,MAAM,CAAC;AAEd,oBAAI,KAAK,QAAQ,UAAU;AAEzB,yBAAO,KAAK,QAAQ,2BAA2B,IAAI;AAAA,gBACrD;AAGA,oBAAI,gBAAgB,KAAK,IAAI,GAAG;AAC9B,wBAAM,IAAI,CAAC,IAAI,MAAM,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI;AAC9C;AAAA,gBACF;AAGA,oBAAI,CAAC,WAAW;AACd,sBAAI,CAAC,KAAK,KAAK,GAAG;AAEhB,gCAAY;AAAA,kBACd;AAGA,sBAAI,KAAK,OAAO,MAAM,KAAK,QAAQ;AACjC,oCAAgB,OAAO,KAAK,MAAM,MAAM;AAAA,kBAC1C,OAAO;AACL,oCAAgB,OAAO;AAAA,kBACzB;AAEA;AAAA,gBACF;AAGA,oBAAI,KAAK,OAAO,MAAM,KAAK,UAAU,CAAC,KAAK,KAAK,GAAG;AACjD,kCAAgB,OAAO,KAAK,MAAM,MAAM;AACxC;AAAA,gBACF,OAAO;AAEL,wBAAM,IAAI,CAAC,IAAI,MAAM,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI;AAC9C;AAAA,gBACF;AAAA,cACF;AAEA,kBAAI,CAACA,MAAK,OAAO;AAEf,oBAAI,mBAAmB;AACrB,kBAAAA,MAAK,QAAQ;AAAA,gBACf,WAAW,YAAY,KAAK,GAAG,GAAG;AAChC,sCAAoB;AAAA,gBACtB;AAAA,cACF;AAGA,kBAAI,KAAK,QAAQ,KAAK;AACpB,yBAAS,cAAc,KAAK,YAAY;AAExC,oBAAI,QAAQ;AACV,8BAAY,OAAO,CAAC,MAAM;AAC1B,iCAAe,aAAa,QAAQ,gBAAgB,EAAE;AAAA,gBACxD;AAAA,cACF;AAEA,cAAAA,MAAK,MAAM,KAAK;AAAA,gBACd,MAAM;AAAA,gBACN;AAAA,gBACA,MAAM,CAAC,CAAC;AAAA,gBACR,SAAS;AAAA,gBACT,OAAO;AAAA,gBACP,MAAM;AAAA,cACR,CAAC;AACD,cAAAA,MAAK,OAAO;AACZ,oBAAM,IAAI,MAAM,IAAI,MAAM;AAAA,YAC5B;AAGA,YAAAA,MAAK,MAAMA,MAAK,MAAM,SAAS,CAAC,EAAE,MAAM,IAAI,UAAU;AACtD,YAAAA,MAAK,MAAMA,MAAK,MAAM,SAAS,CAAC,EAAE,OAAO,aAAa,UAAU;AAChE,YAAAA,MAAK,MAAMA,MAAK,IAAI,UAAU;AAC9B,gBAAI,IAAIA,MAAK,MAAM;AAEnB,iBAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,mBAAK,MAAM,MAAM,MAAM;AACvB,cAAAA,MAAK,MAAM,CAAC,EAAE,SAAS,KAAK,MAAM,YAAYA,MAAK,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AAEpE,kBAAIA,MAAK,MAAM,CAAC,EAAE,OAAO,KAAK,SAAU,GAAG;AACzC,uBAAO,EAAE,SAAS;AAAA,cACpB,CAAC,GAAG;AACF,gBAAAA,MAAK,QAAQ;AACb,gBAAAA,MAAK,MAAM,CAAC,EAAE,QAAQ;AAAA,cACxB;AAAA,YACF;AAEA,mBAAOA;AAAA,UACT;AAAA,QACF;AAEA,eAAO,OAAO,SAAST,MAAK,KAAK;AAC/B,cAAI,MAAM,KAAK,MAAM,MAAM,KAAK,KAAK,GAAG;AAExC,cAAI,KAAK;AACP,gBAAI,QAAQ;AAAA,cACV,MAAM;AAAA,cACN,KAAK,IAAI,CAAC;AAAA,cACV,KAAK,CAAC,KAAK,QAAQ,cAAc,IAAI,CAAC,MAAM,SAAS,IAAI,CAAC,MAAM,YAAY,IAAI,CAAC,MAAM;AAAA,cACvF,MAAM,IAAI,CAAC;AAAA,YACb;AAEA,gBAAI,KAAK,QAAQ,UAAU;AACzB,oBAAM,OAAO;AACb,oBAAM,OAAO,KAAK,QAAQ,YAAY,KAAK,QAAQ,UAAU,IAAI,CAAC,CAAC,IAAI,QAAQ,IAAI,CAAC,CAAC;AACrF,oBAAM,SAAS,CAAC;AAChB,mBAAK,MAAM,OAAO,MAAM,MAAM,MAAM,MAAM;AAAA,YAC5C;AAEA,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,eAAO,MAAM,SAASU,KAAI,KAAK;AAC7B,cAAI,MAAM,KAAK,MAAM,MAAM,IAAI,KAAK,GAAG;AAEvC,cAAI,KAAK;AACP,gBAAI,IAAI,CAAC,EAAG,KAAI,CAAC,IAAI,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC,EAAE,SAAS,CAAC;AAC1D,gBAAI,MAAM,IAAI,CAAC,EAAE,YAAY,EAAE,QAAQ,QAAQ,GAAG;AAClD,mBAAO;AAAA,cACL,MAAM;AAAA,cACN;AAAA,cACA,KAAK,IAAI,CAAC;AAAA,cACV,MAAM,IAAI,CAAC;AAAA,cACX,OAAO,IAAI,CAAC;AAAA,YACd;AAAA,UACF;AAAA,QACF;AAEA,eAAO,QAAQ,SAAS,MAAM,KAAK;AACjC,cAAI,MAAM,KAAK,MAAM,MAAM,MAAM,KAAK,GAAG;AAEzC,cAAI,KAAK;AACP,gBAAI,OAAO;AAAA,cACT,MAAM;AAAA,cACN,QAAQ,WAAW,IAAI,CAAC,CAAC,EAAE,IAAI,SAAU,GAAG;AAC1C,uBAAO;AAAA,kBACL,MAAM;AAAA,gBACR;AAAA,cACF,CAAC;AAAA,cACD,OAAO,IAAI,CAAC,EAAE,QAAQ,cAAc,EAAE,EAAE,MAAM,QAAQ;AAAA,cACtD,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,QAAQ,OAAO,EAAE,EAAE,MAAM,IAAI,IAAI,CAAC;AAAA,YAC1D;AAEA,gBAAI,KAAK,OAAO,WAAW,KAAK,MAAM,QAAQ;AAC5C,mBAAK,MAAM,IAAI,CAAC;AAChB,kBAAI,IAAI,KAAK,MAAM;AACnB,kBAAI,GAAG,GAAG,GAAG;AAEb,mBAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,oBAAI,YAAY,KAAK,KAAK,MAAM,CAAC,CAAC,GAAG;AACnC,uBAAK,MAAM,CAAC,IAAI;AAAA,gBAClB,WAAW,aAAa,KAAK,KAAK,MAAM,CAAC,CAAC,GAAG;AAC3C,uBAAK,MAAM,CAAC,IAAI;AAAA,gBAClB,WAAW,YAAY,KAAK,KAAK,MAAM,CAAC,CAAC,GAAG;AAC1C,uBAAK,MAAM,CAAC,IAAI;AAAA,gBAClB,OAAO;AACL,uBAAK,MAAM,CAAC,IAAI;AAAA,gBAClB;AAAA,cACF;AAEA,kBAAI,KAAK,KAAK;AAEd,mBAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,qBAAK,KAAK,CAAC,IAAI,WAAW,KAAK,KAAK,CAAC,GAAG,KAAK,OAAO,MAAM,EAAE,IAAI,SAAU,GAAG;AAC3E,yBAAO;AAAA,oBACL,MAAM;AAAA,kBACR;AAAA,gBACF,CAAC;AAAA,cACH;AAIA,kBAAI,KAAK,OAAO;AAEhB,mBAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,qBAAK,OAAO,CAAC,EAAE,SAAS,CAAC;AACzB,qBAAK,MAAM,aAAa,KAAK,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,EAAE,MAAM;AAAA,cACpE;AAGA,kBAAI,KAAK,KAAK;AAEd,mBAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,sBAAM,KAAK,KAAK,CAAC;AAEjB,qBAAK,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AAC/B,sBAAI,CAAC,EAAE,SAAS,CAAC;AACjB,uBAAK,MAAM,aAAa,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM;AAAA,gBACpD;AAAA,cACF;AAEA,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAEA,eAAO,WAAW,SAAS,SAAS,KAAK;AACvC,cAAI,MAAM,KAAK,MAAM,MAAM,SAAS,KAAK,GAAG;AAE5C,cAAI,KAAK;AACP,gBAAI,QAAQ;AAAA,cACV,MAAM;AAAA,cACN,KAAK,IAAI,CAAC;AAAA,cACV,OAAO,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,MAAM,IAAI;AAAA,cACtC,MAAM,IAAI,CAAC;AAAA,cACX,QAAQ,CAAC;AAAA,YACX;AACA,iBAAK,MAAM,OAAO,MAAM,MAAM,MAAM,MAAM;AAC1C,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,eAAO,YAAY,SAAS,UAAU,KAAK;AACzC,cAAI,MAAM,KAAK,MAAM,MAAM,UAAU,KAAK,GAAG;AAE7C,cAAI,KAAK;AACP,gBAAI,QAAQ;AAAA,cACV,MAAM;AAAA,cACN,KAAK,IAAI,CAAC;AAAA,cACV,MAAM,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,OAAO,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE,IAAI,IAAI,CAAC;AAAA,cAC7E,QAAQ,CAAC;AAAA,YACX;AACA,iBAAK,MAAM,OAAO,MAAM,MAAM,MAAM,MAAM;AAC1C,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,eAAO,OAAO,SAASH,MAAK,KAAK;AAC/B,cAAI,MAAM,KAAK,MAAM,MAAM,KAAK,KAAK,GAAG;AAExC,cAAI,KAAK;AACP,gBAAI,QAAQ;AAAA,cACV,MAAM;AAAA,cACN,KAAK,IAAI,CAAC;AAAA,cACV,MAAM,IAAI,CAAC;AAAA,cACX,QAAQ,CAAC;AAAA,YACX;AACA,iBAAK,MAAM,OAAO,MAAM,MAAM,MAAM,MAAM;AAC1C,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,eAAO,SAAS,SAASI,QAAO,KAAK;AACnC,cAAI,MAAM,KAAK,MAAM,OAAO,OAAO,KAAK,GAAG;AAE3C,cAAI,KAAK;AACP,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,KAAK,IAAI,CAAC;AAAA,cACV,MAAM,QAAQ,IAAI,CAAC,CAAC;AAAA,YACtB;AAAA,UACF;AAAA,QACF;AAEA,eAAO,MAAM,SAAS,IAAI,KAAK;AAC7B,cAAI,MAAM,KAAK,MAAM,OAAO,IAAI,KAAK,GAAG;AAExC,cAAI,KAAK;AACP,gBAAI,CAAC,KAAK,MAAM,MAAM,UAAU,QAAQ,KAAK,IAAI,CAAC,CAAC,GAAG;AACpD,mBAAK,MAAM,MAAM,SAAS;AAAA,YAC5B,WAAW,KAAK,MAAM,MAAM,UAAU,UAAU,KAAK,IAAI,CAAC,CAAC,GAAG;AAC5D,mBAAK,MAAM,MAAM,SAAS;AAAA,YAC5B;AAEA,gBAAI,CAAC,KAAK,MAAM,MAAM,cAAc,iCAAiC,KAAK,IAAI,CAAC,CAAC,GAAG;AACjF,mBAAK,MAAM,MAAM,aAAa;AAAA,YAChC,WAAW,KAAK,MAAM,MAAM,cAAc,mCAAmC,KAAK,IAAI,CAAC,CAAC,GAAG;AACzF,mBAAK,MAAM,MAAM,aAAa;AAAA,YAChC;AAEA,mBAAO;AAAA,cACL,MAAM,KAAK,QAAQ,WAAW,SAAS;AAAA,cACvC,KAAK,IAAI,CAAC;AAAA,cACV,QAAQ,KAAK,MAAM,MAAM;AAAA,cACzB,YAAY,KAAK,MAAM,MAAM;AAAA,cAC7B,MAAM,KAAK,QAAQ,WAAW,KAAK,QAAQ,YAAY,KAAK,QAAQ,UAAU,IAAI,CAAC,CAAC,IAAI,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;AAAA,YACjH;AAAA,UACF;AAAA,QACF;AAEA,eAAO,OAAO,SAAS,KAAK,KAAK;AAC/B,cAAI,MAAM,KAAK,MAAM,OAAO,KAAK,KAAK,GAAG;AAEzC,cAAI,KAAK;AACP,gBAAI,aAAa,IAAI,CAAC,EAAE,KAAK;AAE7B,gBAAI,CAAC,KAAK,QAAQ,YAAY,KAAK,KAAK,UAAU,GAAG;AAEnD,kBAAI,CAAC,KAAK,KAAK,UAAU,GAAG;AAC1B;AAAA,cACF;AAGA,kBAAI,aAAa,MAAM,WAAW,MAAM,GAAG,EAAE,GAAG,IAAI;AAEpD,mBAAK,WAAW,SAAS,WAAW,UAAU,MAAM,GAAG;AACrD;AAAA,cACF;AAAA,YACF,OAAO;AAEL,kBAAI,iBAAiB,mBAAmB,IAAI,CAAC,GAAG,IAAI;AAEpD,kBAAI,iBAAiB,IAAI;AACvB,oBAAIC,SAAQ,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,IAAI,IAAI;AAC5C,oBAAI,UAAUA,SAAQ,IAAI,CAAC,EAAE,SAAS;AACtC,oBAAI,CAAC,IAAI,IAAI,CAAC,EAAE,UAAU,GAAG,cAAc;AAC3C,oBAAI,CAAC,IAAI,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,EAAE,KAAK;AAC3C,oBAAI,CAAC,IAAI;AAAA,cACX;AAAA,YACF;AAEA,gBAAI,OAAO,IAAI,CAAC;AAChB,gBAAI,QAAQ;AAEZ,gBAAI,KAAK,QAAQ,UAAU;AAEzB,kBAAIC,QAAO,gCAAgC,KAAK,IAAI;AAEpD,kBAAIA,OAAM;AACR,uBAAOA,MAAK,CAAC;AACb,wBAAQA,MAAK,CAAC;AAAA,cAChB;AAAA,YACF,OAAO;AACL,sBAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE,IAAI;AAAA,YACzC;AAEA,mBAAO,KAAK,KAAK;AAEjB,gBAAI,KAAK,KAAK,IAAI,GAAG;AACnB,kBAAI,KAAK,QAAQ,YAAY,CAAC,KAAK,KAAK,UAAU,GAAG;AAEnD,uBAAO,KAAK,MAAM,CAAC;AAAA,cACrB,OAAO;AACL,uBAAO,KAAK,MAAM,GAAG,EAAE;AAAA,cACzB;AAAA,YACF;AAEA,mBAAO,WAAW,KAAK;AAAA,cACrB,MAAM,OAAO,KAAK,QAAQ,KAAK,MAAM,OAAO,UAAU,IAAI,IAAI;AAAA,cAC9D,OAAO,QAAQ,MAAM,QAAQ,KAAK,MAAM,OAAO,UAAU,IAAI,IAAI;AAAA,YACnE,GAAG,IAAI,CAAC,GAAG,KAAK,KAAK;AAAA,UACvB;AAAA,QACF;AAEA,eAAO,UAAU,SAAS,QAAQ,KAAK,OAAO;AAC5C,cAAI;AAEJ,eAAK,MAAM,KAAK,MAAM,OAAO,QAAQ,KAAK,GAAG,OAAO,MAAM,KAAK,MAAM,OAAO,OAAO,KAAK,GAAG,IAAI;AAC7F,gBAAI,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,QAAQ,QAAQ,GAAG;AACjD,mBAAO,MAAM,KAAK,YAAY,CAAC;AAE/B,gBAAI,CAAC,QAAQ,CAAC,KAAK,MAAM;AACvB,kBAAIN,QAAO,IAAI,CAAC,EAAE,OAAO,CAAC;AAC1B,qBAAO;AAAA,gBACL,MAAM;AAAA,gBACN,KAAKA;AAAA,gBACL,MAAMA;AAAA,cACR;AAAA,YACF;AAEA,mBAAO,WAAW,KAAK,MAAM,IAAI,CAAC,GAAG,KAAK,KAAK;AAAA,UACjD;AAAA,QACF;AAEA,eAAO,WAAW,SAAS,SAAS,KAAK,WAAW,UAAU;AAC5D,cAAI,aAAa,QAAQ;AACvB,uBAAW;AAAA,UACb;AAEA,cAAIF,SAAQ,KAAK,MAAM,OAAO,SAAS,OAAO,KAAK,GAAG;AACtD,cAAI,CAACA,OAAO;AAEZ,cAAIA,OAAM,CAAC,KAAK,SAAS,MAAM,m9QAAm9Q,EAAG;AACr/Q,cAAI,WAAWA,OAAM,CAAC,KAAKA,OAAM,CAAC,KAAK;AAEvC,cAAI,CAAC,YAAY,aAAa,aAAa,MAAM,KAAK,MAAM,OAAO,YAAY,KAAK,QAAQ,IAAI;AAC9F,gBAAI,UAAUA,OAAM,CAAC,EAAE,SAAS;AAChC,gBAAI,QACA,SACA,aAAa,SACb,gBAAgB;AACpB,gBAAI,SAASA,OAAM,CAAC,EAAE,CAAC,MAAM,MAAM,KAAK,MAAM,OAAO,SAAS,YAAY,KAAK,MAAM,OAAO,SAAS;AACrG,mBAAO,YAAY;AAEnB,wBAAY,UAAU,MAAM,KAAK,IAAI,SAAS,OAAO;AAErD,oBAAQA,SAAQ,OAAO,KAAK,SAAS,MAAM,MAAM;AAC/C,uBAASA,OAAM,CAAC,KAAKA,OAAM,CAAC,KAAKA,OAAM,CAAC,KAAKA,OAAM,CAAC,KAAKA,OAAM,CAAC,KAAKA,OAAM,CAAC;AAC5E,kBAAI,CAAC,OAAQ;AAEb,wBAAU,OAAO;AAEjB,kBAAIA,OAAM,CAAC,KAAKA,OAAM,CAAC,GAAG;AAExB,8BAAc;AACd;AAAA,cACF,WAAWA,OAAM,CAAC,KAAKA,OAAM,CAAC,GAAG;AAE/B,oBAAI,UAAU,KAAK,GAAG,UAAU,WAAW,IAAI;AAC7C,mCAAiB;AACjB;AAAA,gBACF;AAAA,cACF;AAEA,4BAAc;AACd,kBAAI,aAAa,EAAG;AAGpB,wBAAU,KAAK,IAAI,SAAS,UAAU,aAAa,aAAa;AAEhE,kBAAI,KAAK,IAAI,SAAS,OAAO,IAAI,GAAG;AAClC,oBAAI,QAAQ,IAAI,MAAM,GAAG,UAAUA,OAAM,QAAQ,OAAO;AAExD,uBAAO;AAAA,kBACL,MAAM;AAAA,kBACN,KAAK,IAAI,MAAM,GAAG,UAAUA,OAAM,QAAQ,UAAU,CAAC;AAAA,kBACrD,MAAM;AAAA,kBACN,QAAQ,KAAK,MAAM,aAAa,OAAO,CAAC,CAAC;AAAA,gBAC3C;AAAA,cACF;AAGA,kBAAIE,QAAO,IAAI,MAAM,GAAG,UAAUF,OAAM,QAAQ,UAAU,CAAC;AAC3D,qBAAO;AAAA,gBACL,MAAM;AAAA,gBACN,KAAK,IAAI,MAAM,GAAG,UAAUA,OAAM,QAAQ,UAAU,CAAC;AAAA,gBACrD,MAAME;AAAA,gBACN,QAAQ,KAAK,MAAM,aAAaA,OAAM,CAAC,CAAC;AAAA,cAC1C;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,eAAO,WAAW,SAAS,SAAS,KAAK;AACvC,cAAI,MAAM,KAAK,MAAM,OAAO,KAAK,KAAK,GAAG;AAEzC,cAAI,KAAK;AACP,gBAAIA,QAAO,IAAI,CAAC,EAAE,QAAQ,OAAO,GAAG;AACpC,gBAAI,mBAAmB,OAAO,KAAKA,KAAI;AACvC,gBAAI,0BAA0B,KAAK,KAAKA,KAAI,KAAK,KAAK,KAAKA,KAAI;AAE/D,gBAAI,oBAAoB,yBAAyB;AAC/C,cAAAA,QAAOA,MAAK,UAAU,GAAGA,MAAK,SAAS,CAAC;AAAA,YAC1C;AAEA,YAAAA,QAAO,QAAQA,OAAM,IAAI;AACzB,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,KAAK,IAAI,CAAC;AAAA,cACV,MAAMA;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAEA,eAAO,KAAK,SAAS,GAAG,KAAK;AAC3B,cAAI,MAAM,KAAK,MAAM,OAAO,GAAG,KAAK,GAAG;AAEvC,cAAI,KAAK;AACP,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,KAAK,IAAI,CAAC;AAAA,YACZ;AAAA,UACF;AAAA,QACF;AAEA,eAAO,MAAM,SAASO,KAAI,KAAK;AAC7B,cAAI,MAAM,KAAK,MAAM,OAAO,IAAI,KAAK,GAAG;AAExC,cAAI,KAAK;AACP,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,KAAK,IAAI,CAAC;AAAA,cACV,MAAM,IAAI,CAAC;AAAA,cACX,QAAQ,KAAK,MAAM,aAAa,IAAI,CAAC,GAAG,CAAC,CAAC;AAAA,YAC5C;AAAA,UACF;AAAA,QACF;AAEA,eAAO,WAAW,SAAS,SAAS,KAAKC,SAAQ;AAC/C,cAAI,MAAM,KAAK,MAAM,OAAO,SAAS,KAAK,GAAG;AAE7C,cAAI,KAAK;AACP,gBAAIR,OAAM;AAEV,gBAAI,IAAI,CAAC,MAAM,KAAK;AAClB,cAAAA,QAAO,QAAQ,KAAK,QAAQ,SAASQ,QAAO,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;AAC5D,qBAAO,YAAYR;AAAA,YACrB,OAAO;AACL,cAAAA,QAAO,QAAQ,IAAI,CAAC,CAAC;AACrB,qBAAOA;AAAA,YACT;AAEA,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,KAAK,IAAI,CAAC;AAAA,cACV,MAAMA;AAAA,cACN;AAAA,cACA,QAAQ,CAAC;AAAA,gBACP,MAAM;AAAA,gBACN,KAAKA;AAAA,gBACL,MAAMA;AAAA,cACR,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF;AAEA,eAAO,MAAM,SAAS,IAAI,KAAKQ,SAAQ;AACrC,cAAI;AAEJ,cAAI,MAAM,KAAK,MAAM,OAAO,IAAI,KAAK,GAAG,GAAG;AACzC,gBAAIR,OAAM;AAEV,gBAAI,IAAI,CAAC,MAAM,KAAK;AAClB,cAAAA,QAAO,QAAQ,KAAK,QAAQ,SAASQ,QAAO,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;AAC5D,qBAAO,YAAYR;AAAA,YACrB,OAAO;AAEL,kBAAI;AAEJ,iBAAG;AACD,8BAAc,IAAI,CAAC;AACnB,oBAAI,CAAC,IAAI,KAAK,MAAM,OAAO,WAAW,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC;AAAA,cACtD,SAAS,gBAAgB,IAAI,CAAC;AAE9B,cAAAA,QAAO,QAAQ,IAAI,CAAC,CAAC;AAErB,kBAAI,IAAI,CAAC,MAAM,QAAQ;AACrB,uBAAO,YAAYA;AAAA,cACrB,OAAO;AACL,uBAAOA;AAAA,cACT;AAAA,YACF;AAEA,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,KAAK,IAAI,CAAC;AAAA,cACV,MAAMA;AAAA,cACN;AAAA,cACA,QAAQ,CAAC;AAAA,gBACP,MAAM;AAAA,gBACN,KAAKA;AAAA,gBACL,MAAMA;AAAA,cACR,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF;AAEA,eAAO,aAAa,SAAS,WAAW,KAAKS,cAAa;AACxD,cAAI,MAAM,KAAK,MAAM,OAAO,KAAK,KAAK,GAAG;AAEzC,cAAI,KAAK;AACP,gBAAIT;AAEJ,gBAAI,KAAK,MAAM,MAAM,YAAY;AAC/B,cAAAA,QAAO,KAAK,QAAQ,WAAW,KAAK,QAAQ,YAAY,KAAK,QAAQ,UAAU,IAAI,CAAC,CAAC,IAAI,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC;AAAA,YAClH,OAAO;AACL,cAAAA,QAAO,QAAQ,KAAK,QAAQ,cAAcS,aAAY,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;AAAA,YACxE;AAEA,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,KAAK,IAAI,CAAC;AAAA,cACV,MAAMT;AAAA,YACR;AAAA,UACF;AAAA,QACF;AAEA,eAAOC;AAAA,MACT,GAAE;AAEF,UAAI,WAAW,QAAQ,UACnB,OAAO,QAAQ,MACf,UAAU,QAAQ;AAKtB,UAAI,UAAU;AAAA,QACZ,SAAS;AAAA,QACT,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,MAAM;AAAA,QACN,MAAM;AAAA,QAUN,KAAK;AAAA,QACL,OAAO;AAAA,QACP,UAAU;AAAA;AAAA;AAAA,QAGV,YAAY;AAAA,QACZ,MAAM;AAAA,MACR;AACA,cAAQ,SAAS;AACjB,cAAQ,SAAS;AACjB,cAAQ,MAAM,KAAK,QAAQ,GAAG,EAAE,QAAQ,SAAS,QAAQ,MAAM,EAAE,QAAQ,SAAS,QAAQ,MAAM,EAAE,SAAS;AAC3G,cAAQ,SAAS;AACjB,cAAQ,gBAAgB,KAAK,eAAe,EAAE,QAAQ,QAAQ,QAAQ,MAAM,EAAE,SAAS;AACvF,cAAQ,OAAO,KAAK,QAAQ,IAAI,EAAE,QAAQ,SAAS,QAAQ,MAAM,EAAE,QAAQ,MAAM,iEAAiE,EAAE,QAAQ,OAAO,YAAY,QAAQ,IAAI,SAAS,GAAG,EAAE,SAAS;AAClN,cAAQ,OAAO;AACf,cAAQ,WAAW;AACnB,cAAQ,OAAO,KAAK,QAAQ,MAAM,GAAG,EAAE,QAAQ,WAAW,QAAQ,QAAQ,EAAE,QAAQ,OAAO,QAAQ,IAAI,EAAE,QAAQ,aAAa,0EAA0E,EAAE,SAAS;AACnN,cAAQ,YAAY,KAAK,QAAQ,UAAU,EAAE,QAAQ,MAAM,QAAQ,EAAE,EAAE,QAAQ,WAAW,eAAe,EAAE,QAAQ,aAAa,EAAE,EACjI,QAAQ,cAAc,SAAS,EAAE,QAAQ,UAAU,gDAAgD,EAAE,QAAQ,QAAQ,wBAAwB,EAC7I,QAAQ,QAAQ,6DAA6D,EAAE,QAAQ,OAAO,QAAQ,IAAI,EAC1G,SAAS;AACV,cAAQ,aAAa,KAAK,QAAQ,UAAU,EAAE,QAAQ,aAAa,QAAQ,SAAS,EAAE,SAAS;AAK/F,cAAQ,SAAS,QAAQ,CAAC,GAAG,OAAO;AAKpC,cAAQ,MAAM,QAAQ,CAAC,GAAG,QAAQ,QAAQ;AAAA,QACxC,OAAO;AAAA;AAAA,MAIT,CAAC;AACD,cAAQ,IAAI,QAAQ,KAAK,QAAQ,IAAI,KAAK,EAAE,QAAQ,MAAM,QAAQ,EAAE,EAAE,QAAQ,WAAW,eAAe,EAAE,QAAQ,cAAc,SAAS,EAAE,QAAQ,QAAQ,YAAY,EAAE,QAAQ,UAAU,gDAAgD,EAAE,QAAQ,QAAQ,wBAAwB,EACpR,QAAQ,QAAQ,6DAA6D,EAAE,QAAQ,OAAO,QAAQ,IAAI,EAC1G,SAAS;AAKV,cAAQ,WAAW,QAAQ,CAAC,GAAG,QAAQ,QAAQ;AAAA,QAC7C,MAAM,KAAK,wIAC6D,EAAE,QAAQ,WAAW,QAAQ,QAAQ,EAAE,QAAQ,QAAQ,mKAAkL,EAAE,SAAS;AAAA,QAC5T,KAAK;AAAA,QACL,SAAS;AAAA,QACT,QAAQ;AAAA;AAAA,QAER,WAAW,KAAK,QAAQ,OAAO,UAAU,EAAE,QAAQ,MAAM,QAAQ,EAAE,EAAE,QAAQ,WAAW,iBAAiB,EAAE,QAAQ,YAAY,QAAQ,QAAQ,EAAE,QAAQ,cAAc,SAAS,EAAE,QAAQ,WAAW,EAAE,EAAE,QAAQ,SAAS,EAAE,EAAE,QAAQ,SAAS,EAAE,EAAE,SAAS;AAAA,MAC9P,CAAC;AAKD,UAAI,WAAW;AAAA,QACb,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,KAAK;AAAA,QACL,KAAK;AAAA;AAAA,QAML,MAAM;AAAA,QACN,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,eAAe;AAAA,QACf,UAAU;AAAA,UACR,QAAQ;AAAA;AAAA;AAAA,UAGR,WAAW;AAAA,UACX,WAAW;AAAA;AAAA,QAEb;AAAA,QACA,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,KAAK;AAAA,QACL,MAAM;AAAA,QACN,aAAa;AAAA,MACf;AAGA,eAAS,eAAe;AACxB,eAAS,cAAc,KAAK,SAAS,WAAW,EAAE,QAAQ,gBAAgB,SAAS,YAAY,EAAE,SAAS;AAE1G,eAAS,YAAY;AACrB,eAAS,cAAc;AACvB,eAAS,WAAW,KAAK,QAAQ,QAAQ,EAAE,QAAQ,aAAa,KAAK,EAAE,SAAS;AAChF,eAAS,SAAS,SAAS,KAAK,SAAS,SAAS,MAAM,EAAE,QAAQ,UAAU,SAAS,YAAY,EAAE,SAAS;AAC5G,eAAS,SAAS,YAAY,KAAK,SAAS,SAAS,WAAW,GAAG,EAAE,QAAQ,UAAU,SAAS,YAAY,EAAE,SAAS;AACvH,eAAS,SAAS,YAAY,KAAK,SAAS,SAAS,WAAW,GAAG,EAAE,QAAQ,UAAU,SAAS,YAAY,EAAE,SAAS;AACvH,eAAS,WAAW;AACpB,eAAS,UAAU;AACnB,eAAS,SAAS;AAClB,eAAS,WAAW,KAAK,SAAS,QAAQ,EAAE,QAAQ,UAAU,SAAS,OAAO,EAAE,QAAQ,SAAS,SAAS,MAAM,EAAE,SAAS;AAC3H,eAAS,aAAa;AACtB,eAAS,MAAM,KAAK,SAAS,GAAG,EAAE,QAAQ,WAAW,SAAS,QAAQ,EAAE,QAAQ,aAAa,SAAS,UAAU,EAAE,SAAS;AAC3H,eAAS,SAAS;AAClB,eAAS,QAAQ;AACjB,eAAS,SAAS;AAClB,eAAS,OAAO,KAAK,SAAS,IAAI,EAAE,QAAQ,SAAS,SAAS,MAAM,EAAE,QAAQ,QAAQ,SAAS,KAAK,EAAE,QAAQ,SAAS,SAAS,MAAM,EAAE,SAAS;AACjJ,eAAS,UAAU,KAAK,SAAS,OAAO,EAAE,QAAQ,SAAS,SAAS,MAAM,EAAE,SAAS;AACrF,eAAS,gBAAgB,KAAK,SAAS,eAAe,GAAG,EAAE,QAAQ,WAAW,SAAS,OAAO,EAAE,QAAQ,UAAU,SAAS,MAAM,EAAE,SAAS;AAK5I,eAAS,SAAS,QAAQ,CAAC,GAAG,QAAQ;AAKtC,eAAS,WAAW,QAAQ,CAAC,GAAG,SAAS,QAAQ;AAAA,QAC/C,QAAQ;AAAA,UACN,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,QAAQ;AAAA,QACV;AAAA,QACA,IAAI;AAAA,UACF,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,QAAQ;AAAA,QACV;AAAA,QACA,MAAM,KAAK,yBAAyB,EAAE,QAAQ,SAAS,SAAS,MAAM,EAAE,SAAS;AAAA,QACjF,SAAS,KAAK,+BAA+B,EAAE,QAAQ,SAAS,SAAS,MAAM,EAAE,SAAS;AAAA,MAC5F,CAAC;AAKD,eAAS,MAAM,QAAQ,CAAC,GAAG,SAAS,QAAQ;AAAA,QAC1C,QAAQ,KAAK,SAAS,MAAM,EAAE,QAAQ,MAAM,MAAM,EAAE,SAAS;AAAA,QAC7D,iBAAiB;AAAA,QACjB,KAAK;AAAA,QACL,YAAY;AAAA,QACZ,KAAK;AAAA,QACL,MAAM;AAAA,MACR,CAAC;AACD,eAAS,IAAI,MAAM,KAAK,SAAS,IAAI,KAAK,GAAG,EAAE,QAAQ,SAAS,SAAS,IAAI,eAAe,EAAE,SAAS;AAKvG,eAAS,SAAS,QAAQ,CAAC,GAAG,SAAS,KAAK;AAAA,QAC1C,IAAI,KAAK,SAAS,EAAE,EAAE,QAAQ,QAAQ,GAAG,EAAE,SAAS;AAAA,QACpD,MAAM,KAAK,SAAS,IAAI,IAAI,EAAE,QAAQ,QAAQ,eAAe,EAAE,QAAQ,WAAW,GAAG,EAAE,SAAS;AAAA,MAClG,CAAC;AACD,UAAI,QAAQ;AAAA,QACV,OAAO;AAAA,QACP,QAAQ;AAAA,MACV;AAEA,UAAI,cAAc;AAClB,UAAI,aAAa,WAAW,QAAQ;AACpC,UAAI,QAAQ,MAAM,OACd,SAAS,MAAM;AACnB,UAAI,eAAe,QAAQ;AAK3B,eAAS,YAAYD,OAAM;AACzB,eAAOA,MACN,QAAQ,QAAQ,QAAQ,EACxB,QAAQ,OAAO,QAAQ,EACvB,QAAQ,2BAA2B,UAAU,EAC7C,QAAQ,MAAM,QAAQ,EACtB,QAAQ,gCAAgC,UAAU,EAClD,QAAQ,MAAM,QAAQ,EACtB,QAAQ,UAAU,QAAQ;AAAA,MAC7B;AAMA,eAAS,OAAOA,OAAM;AACpB,YAAI,MAAM,IACN,GACA;AACJ,YAAI,IAAIA,MAAK;AAEb,aAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,eAAKA,MAAK,WAAW,CAAC;AAEtB,cAAI,KAAK,OAAO,IAAI,KAAK;AACvB,iBAAK,MAAM,GAAG,SAAS,EAAE;AAAA,UAC3B;AAEA,iBAAO,OAAO,KAAK;AAAA,QACrB;AAEA,eAAO;AAAA,MACT;AAMA,UAAI,UAAuB,4BAAY;AACrC,iBAASU,OAAM,SAAS;AACtB,eAAK,SAAS,CAAC;AACf,eAAK,OAAO,QAAQ,uBAAO,OAAO,IAAI;AACtC,eAAK,UAAU,WAAW;AAC1B,eAAK,QAAQ,YAAY,KAAK,QAAQ,aAAa,IAAI,YAAY;AACnE,eAAK,YAAY,KAAK,QAAQ;AAC9B,eAAK,UAAU,UAAU,KAAK;AAC9B,eAAK,UAAU,QAAQ;AACvB,eAAK,cAAc,CAAC;AACpB,eAAK,QAAQ;AAAA,YACX,QAAQ;AAAA,YACR,YAAY;AAAA,YACZ,KAAK;AAAA,UACP;AACA,cAAIC,SAAQ;AAAA,YACV,OAAO,MAAM;AAAA,YACb,QAAQ,OAAO;AAAA,UACjB;AAEA,cAAI,KAAK,QAAQ,UAAU;AACzB,YAAAA,OAAM,QAAQ,MAAM;AACpB,YAAAA,OAAM,SAAS,OAAO;AAAA,UACxB,WAAW,KAAK,QAAQ,KAAK;AAC3B,YAAAA,OAAM,QAAQ,MAAM;AAEpB,gBAAI,KAAK,QAAQ,QAAQ;AACvB,cAAAA,OAAM,SAAS,OAAO;AAAA,YACxB,OAAO;AACL,cAAAA,OAAM,SAAS,OAAO;AAAA,YACxB;AAAA,UACF;AAEA,eAAK,UAAU,QAAQA;AAAA,QACzB;AASA,QAAAD,OAAM,MAAM,SAAS,IAAI,KAAK,SAAS;AACrC,cAAI,QAAQ,IAAIA,OAAM,OAAO;AAC7B,iBAAO,MAAM,IAAI,GAAG;AAAA,QACtB;AAMA,QAAAA,OAAM,YAAY,SAAS,UAAU,KAAK,SAAS;AACjD,cAAI,QAAQ,IAAIA,OAAM,OAAO;AAC7B,iBAAO,MAAM,aAAa,GAAG;AAAA,QAC/B;AAMA,YAAI,SAASA,OAAM;AAEnB,eAAO,MAAM,SAAS,IAAI,KAAK;AAC7B,gBAAM,IAAI,QAAQ,YAAY,IAAI,EAAE,QAAQ,OAAO,MAAM;AACzD,eAAK,YAAY,KAAK,KAAK,MAAM;AACjC,cAAIE;AAEJ,iBAAOA,QAAO,KAAK,YAAY,MAAM,GAAG;AACtC,iBAAK,aAAaA,MAAK,KAAKA,MAAK,MAAM;AAAA,UACzC;AAEA,iBAAO,KAAK;AAAA,QACd;AAMA,eAAO,cAAc,SAAS,YAAY,KAAK,QAAQ;AACrD,cAAI,QAAQ;AAEZ,cAAI,WAAW,QAAQ;AACrB,qBAAS,CAAC;AAAA,UACZ;AAEA,cAAI,KAAK,QAAQ,UAAU;AACzB,kBAAM,IAAI,QAAQ,UAAU,EAAE;AAAA,UAChC;AAEA,cAAI,OAAO,WAAW,QAAQ;AAE9B,iBAAO,KAAK;AACV,gBAAI,KAAK,QAAQ,cAAc,KAAK,QAAQ,WAAW,SAAS,KAAK,QAAQ,WAAW,MAAM,KAAK,SAAU,cAAc;AACzH,kBAAI,QAAQ,aAAa,KAAK;AAAA,gBAC5B,OAAO;AAAA,cACT,GAAG,KAAK,MAAM,GAAG;AACf,sBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,uBAAO,KAAK,KAAK;AACjB,uBAAO;AAAA,cACT;AAEA,qBAAO;AAAA,YACT,CAAC,GAAG;AACF;AAAA,YACF;AAGA,gBAAI,QAAQ,KAAK,UAAU,MAAM,GAAG,GAAG;AACrC,oBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AAEpC,kBAAI,MAAM,MAAM;AACd,uBAAO,KAAK,KAAK;AAAA,cACnB;AAEA;AAAA,YACF;AAGA,gBAAI,QAAQ,KAAK,UAAU,KAAK,GAAG,GAAG;AACpC,oBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,0BAAY,OAAO,OAAO,SAAS,CAAC;AAEpC,kBAAI,cAAc,UAAU,SAAS,eAAe,UAAU,SAAS,SAAS;AAC9E,0BAAU,OAAO,OAAO,MAAM;AAC9B,0BAAU,QAAQ,OAAO,MAAM;AAC/B,qBAAK,YAAY,KAAK,YAAY,SAAS,CAAC,EAAE,MAAM,UAAU;AAAA,cAChE,OAAO;AACL,uBAAO,KAAK,KAAK;AAAA,cACnB;AAEA;AAAA,YACF;AAGA,gBAAI,QAAQ,KAAK,UAAU,OAAO,GAAG,GAAG;AACtC,oBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,qBAAO,KAAK,KAAK;AACjB;AAAA,YACF;AAGA,gBAAI,QAAQ,KAAK,UAAU,QAAQ,GAAG,GAAG;AACvC,oBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,qBAAO,KAAK,KAAK;AACjB;AAAA,YACF;AAGA,gBAAI,QAAQ,KAAK,UAAU,GAAG,GAAG,GAAG;AAClC,oBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,qBAAO,KAAK,KAAK;AACjB;AAAA,YACF;AAGA,gBAAI,QAAQ,KAAK,UAAU,WAAW,GAAG,GAAG;AAC1C,oBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,qBAAO,KAAK,KAAK;AACjB;AAAA,YACF;AAGA,gBAAI,QAAQ,KAAK,UAAU,KAAK,GAAG,GAAG;AACpC,oBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,qBAAO,KAAK,KAAK;AACjB;AAAA,YACF;AAGA,gBAAI,QAAQ,KAAK,UAAU,KAAK,GAAG,GAAG;AACpC,oBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,qBAAO,KAAK,KAAK;AACjB;AAAA,YACF;AAGA,gBAAI,QAAQ,KAAK,UAAU,IAAI,GAAG,GAAG;AACnC,oBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,0BAAY,OAAO,OAAO,SAAS,CAAC;AAEpC,kBAAI,cAAc,UAAU,SAAS,eAAe,UAAU,SAAS,SAAS;AAC9E,0BAAU,OAAO,OAAO,MAAM;AAC9B,0BAAU,QAAQ,OAAO,MAAM;AAC/B,qBAAK,YAAY,KAAK,YAAY,SAAS,CAAC,EAAE,MAAM,UAAU;AAAA,cAChE,WAAW,CAAC,KAAK,OAAO,MAAM,MAAM,GAAG,GAAG;AACxC,qBAAK,OAAO,MAAM,MAAM,GAAG,IAAI;AAAA,kBAC7B,MAAM,MAAM;AAAA,kBACZ,OAAO,MAAM;AAAA,gBACf;AAAA,cACF;AAEA;AAAA,YACF;AAGA,gBAAI,QAAQ,KAAK,UAAU,MAAM,GAAG,GAAG;AACrC,oBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,qBAAO,KAAK,KAAK;AACjB;AAAA,YACF;AAGA,gBAAI,QAAQ,KAAK,UAAU,SAAS,GAAG,GAAG;AACxC,oBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,qBAAO,KAAK,KAAK;AACjB;AAAA,YACF;AAIA,qBAAS;AAET,gBAAI,KAAK,QAAQ,cAAc,KAAK,QAAQ,WAAW,YAAY;AACjE,eAAC,WAAY;AACX,oBAAI,aAAa;AACjB,oBAAI,UAAU,IAAI,MAAM,CAAC;AACzB,oBAAI,YAAY;AAEhB,sBAAM,QAAQ,WAAW,WAAW,QAAQ,SAAU,eAAe;AACnE,8BAAY,cAAc,KAAK;AAAA,oBAC7B,OAAO;AAAA,kBACT,GAAG,OAAO;AAEV,sBAAI,OAAO,cAAc,YAAY,aAAa,GAAG;AACnD,iCAAa,KAAK,IAAI,YAAY,SAAS;AAAA,kBAC7C;AAAA,gBACF,CAAC;AAED,oBAAI,aAAa,YAAY,cAAc,GAAG;AAC5C,2BAAS,IAAI,UAAU,GAAG,aAAa,CAAC;AAAA,gBAC1C;AAAA,cACF,GAAG;AAAA,YACL;AAEA,gBAAI,KAAK,MAAM,QAAQ,QAAQ,KAAK,UAAU,UAAU,MAAM,IAAI;AAChE,0BAAY,OAAO,OAAO,SAAS,CAAC;AAEpC,kBAAI,wBAAwB,UAAU,SAAS,aAAa;AAC1D,0BAAU,OAAO,OAAO,MAAM;AAC9B,0BAAU,QAAQ,OAAO,MAAM;AAC/B,qBAAK,YAAY,IAAI;AACrB,qBAAK,YAAY,KAAK,YAAY,SAAS,CAAC,EAAE,MAAM,UAAU;AAAA,cAChE,OAAO;AACL,uBAAO,KAAK,KAAK;AAAA,cACnB;AAEA,qCAAuB,OAAO,WAAW,IAAI;AAC7C,oBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC;AAAA,YACF;AAGA,gBAAI,QAAQ,KAAK,UAAU,KAAK,GAAG,GAAG;AACpC,oBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,0BAAY,OAAO,OAAO,SAAS,CAAC;AAEpC,kBAAI,aAAa,UAAU,SAAS,QAAQ;AAC1C,0BAAU,OAAO,OAAO,MAAM;AAC9B,0BAAU,QAAQ,OAAO,MAAM;AAC/B,qBAAK,YAAY,IAAI;AACrB,qBAAK,YAAY,KAAK,YAAY,SAAS,CAAC,EAAE,MAAM,UAAU;AAAA,cAChE,OAAO;AACL,uBAAO,KAAK,KAAK;AAAA,cACnB;AAEA;AAAA,YACF;AAEA,gBAAI,KAAK;AACP,kBAAI,SAAS,4BAA4B,IAAI,WAAW,CAAC;AAEzD,kBAAI,KAAK,QAAQ,QAAQ;AACvB,wBAAQ,MAAM,MAAM;AACpB;AAAA,cACF,OAAO;AACL,sBAAM,IAAI,MAAM,MAAM;AAAA,cACxB;AAAA,YACF;AAAA,UACF;AAEA,eAAK,MAAM,MAAM;AACjB,iBAAO;AAAA,QACT;AAEA,eAAO,SAAS,SAASC,QAAO,KAAK,QAAQ;AAC3C,eAAK,YAAY,KAAK;AAAA,YACpB;AAAA,YACA;AAAA,UACF,CAAC;AAAA,QACH;AAMA,eAAO,eAAe,SAAS,aAAa,KAAK,QAAQ;AACvD,cAAI,SAAS;AAEb,cAAI,WAAW,QAAQ;AACrB,qBAAS,CAAC;AAAA,UACZ;AAEA,cAAI,OAAO,WAAW;AAEtB,cAAI,YAAY;AAChB,cAAIf;AACJ,cAAI,cAAc;AAElB,cAAI,KAAK,OAAO,OAAO;AACrB,gBAAI,QAAQ,OAAO,KAAK,KAAK,OAAO,KAAK;AAEzC,gBAAI,MAAM,SAAS,GAAG;AACpB,sBAAQA,SAAQ,KAAK,UAAU,MAAM,OAAO,cAAc,KAAK,SAAS,MAAM,MAAM;AAClF,oBAAI,MAAM,SAASA,OAAM,CAAC,EAAE,MAAMA,OAAM,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG;AACrE,8BAAY,UAAU,MAAM,GAAGA,OAAM,KAAK,IAAI,MAAM,aAAa,KAAKA,OAAM,CAAC,EAAE,SAAS,CAAC,IAAI,MAAM,UAAU,MAAM,KAAK,UAAU,MAAM,OAAO,cAAc,SAAS;AAAA,gBACxK;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAGA,kBAAQA,SAAQ,KAAK,UAAU,MAAM,OAAO,UAAU,KAAK,SAAS,MAAM,MAAM;AAC9E,wBAAY,UAAU,MAAM,GAAGA,OAAM,KAAK,IAAI,MAAM,aAAa,KAAKA,OAAM,CAAC,EAAE,SAAS,CAAC,IAAI,MAAM,UAAU,MAAM,KAAK,UAAU,MAAM,OAAO,UAAU,SAAS;AAAA,UACpK;AAGA,kBAAQA,SAAQ,KAAK,UAAU,MAAM,OAAO,YAAY,KAAK,SAAS,MAAM,MAAM;AAChF,wBAAY,UAAU,MAAM,GAAGA,OAAM,KAAK,IAAI,OAAO,UAAU,MAAM,KAAK,UAAU,MAAM,OAAO,YAAY,SAAS;AAAA,UACxH;AAEA,iBAAO,KAAK;AACV,gBAAI,CAAC,cAAc;AACjB,yBAAW;AAAA,YACb;AAEA,2BAAe;AAEf,gBAAI,KAAK,QAAQ,cAAc,KAAK,QAAQ,WAAW,UAAU,KAAK,QAAQ,WAAW,OAAO,KAAK,SAAU,cAAc;AAC3H,kBAAI,QAAQ,aAAa,KAAK;AAAA,gBAC5B,OAAO;AAAA,cACT,GAAG,KAAK,MAAM,GAAG;AACf,sBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,uBAAO,KAAK,KAAK;AACjB,uBAAO;AAAA,cACT;AAEA,qBAAO;AAAA,YACT,CAAC,GAAG;AACF;AAAA,YACF;AAGA,gBAAI,QAAQ,KAAK,UAAU,OAAO,GAAG,GAAG;AACtC,oBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,qBAAO,KAAK,KAAK;AACjB;AAAA,YACF;AAGA,gBAAI,QAAQ,KAAK,UAAU,IAAI,GAAG,GAAG;AACnC,oBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,0BAAY,OAAO,OAAO,SAAS,CAAC;AAEpC,kBAAI,aAAa,MAAM,SAAS,UAAU,UAAU,SAAS,QAAQ;AACnE,0BAAU,OAAO,MAAM;AACvB,0BAAU,QAAQ,MAAM;AAAA,cAC1B,OAAO;AACL,uBAAO,KAAK,KAAK;AAAA,cACnB;AAEA;AAAA,YACF;AAGA,gBAAI,QAAQ,KAAK,UAAU,KAAK,GAAG,GAAG;AACpC,oBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,qBAAO,KAAK,KAAK;AACjB;AAAA,YACF;AAGA,gBAAI,QAAQ,KAAK,UAAU,QAAQ,KAAK,KAAK,OAAO,KAAK,GAAG;AAC1D,oBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,0BAAY,OAAO,OAAO,SAAS,CAAC;AAEpC,kBAAI,aAAa,MAAM,SAAS,UAAU,UAAU,SAAS,QAAQ;AACnE,0BAAU,OAAO,MAAM;AACvB,0BAAU,QAAQ,MAAM;AAAA,cAC1B,OAAO;AACL,uBAAO,KAAK,KAAK;AAAA,cACnB;AAEA;AAAA,YACF;AAGA,gBAAI,QAAQ,KAAK,UAAU,SAAS,KAAK,WAAW,QAAQ,GAAG;AAC7D,oBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,qBAAO,KAAK,KAAK;AACjB;AAAA,YACF;AAGA,gBAAI,QAAQ,KAAK,UAAU,SAAS,GAAG,GAAG;AACxC,oBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,qBAAO,KAAK,KAAK;AACjB;AAAA,YACF;AAGA,gBAAI,QAAQ,KAAK,UAAU,GAAG,GAAG,GAAG;AAClC,oBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,qBAAO,KAAK,KAAK;AACjB;AAAA,YACF;AAGA,gBAAI,QAAQ,KAAK,UAAU,IAAI,GAAG,GAAG;AACnC,oBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,qBAAO,KAAK,KAAK;AACjB;AAAA,YACF;AAGA,gBAAI,QAAQ,KAAK,UAAU,SAAS,KAAK,MAAM,GAAG;AAChD,oBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,qBAAO,KAAK,KAAK;AACjB;AAAA,YACF;AAGA,gBAAI,CAAC,KAAK,MAAM,WAAW,QAAQ,KAAK,UAAU,IAAI,KAAK,MAAM,IAAI;AACnE,oBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AACpC,qBAAO,KAAK,KAAK;AACjB;AAAA,YACF;AAIA,qBAAS;AAET,gBAAI,KAAK,QAAQ,cAAc,KAAK,QAAQ,WAAW,aAAa;AAClE,eAAC,WAAY;AACX,oBAAI,aAAa;AACjB,oBAAI,UAAU,IAAI,MAAM,CAAC;AACzB,oBAAI,YAAY;AAEhB,uBAAO,QAAQ,WAAW,YAAY,QAAQ,SAAU,eAAe;AACrE,8BAAY,cAAc,KAAK;AAAA,oBAC7B,OAAO;AAAA,kBACT,GAAG,OAAO;AAEV,sBAAI,OAAO,cAAc,YAAY,aAAa,GAAG;AACnD,iCAAa,KAAK,IAAI,YAAY,SAAS;AAAA,kBAC7C;AAAA,gBACF,CAAC;AAED,oBAAI,aAAa,YAAY,cAAc,GAAG;AAC5C,2BAAS,IAAI,UAAU,GAAG,aAAa,CAAC;AAAA,gBAC1C;AAAA,cACF,GAAG;AAAA,YACL;AAEA,gBAAI,QAAQ,KAAK,UAAU,WAAW,QAAQ,WAAW,GAAG;AAC1D,oBAAM,IAAI,UAAU,MAAM,IAAI,MAAM;AAEpC,kBAAI,MAAM,IAAI,MAAM,EAAE,MAAM,KAAK;AAE/B,2BAAW,MAAM,IAAI,MAAM,EAAE;AAAA,cAC/B;AAEA,6BAAe;AACf,0BAAY,OAAO,OAAO,SAAS,CAAC;AAEpC,kBAAI,aAAa,UAAU,SAAS,QAAQ;AAC1C,0BAAU,OAAO,MAAM;AACvB,0BAAU,QAAQ,MAAM;AAAA,cAC1B,OAAO;AACL,uBAAO,KAAK,KAAK;AAAA,cACnB;AAEA;AAAA,YACF;AAEA,gBAAI,KAAK;AACP,kBAAI,SAAS,4BAA4B,IAAI,WAAW,CAAC;AAEzD,kBAAI,KAAK,QAAQ,QAAQ;AACvB,wBAAQ,MAAM,MAAM;AACpB;AAAA,cACF,OAAO;AACL,sBAAM,IAAI,MAAM,MAAM;AAAA,cACxB;AAAA,YACF;AAAA,UACF;AAEA,iBAAO;AAAA,QACT;AAEA,qBAAaY,QAAO,MAAM,CAAC;AAAA,UACzB,KAAK;AAAA,UACL,KAAK,SAASI,OAAM;AAClB,mBAAO;AAAA,cACL;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,QACF,CAAC,CAAC;AAEF,eAAOJ;AAAA,MACT,GAAE;AAEF,UAAI,aAAa,WAAW,QAAQ;AACpC,UAAI,WAAW,QAAQ,UACnB,WAAW,QAAQ;AAKvB,UAAI,aAA0B,4BAAY;AACxC,iBAASK,UAAS,SAAS;AACzB,eAAK,UAAU,WAAW;AAAA,QAC5B;AAEA,YAAI,SAASA,UAAS;AAEtB,eAAO,OAAO,SAAS,KAAK,OAAO,YAAY,SAAS;AACtD,cAAI,QAAQ,cAAc,IAAI,MAAM,KAAK,EAAE,CAAC;AAE5C,cAAI,KAAK,QAAQ,WAAW;AAC1B,gBAAI,MAAM,KAAK,QAAQ,UAAU,OAAO,IAAI;AAE5C,gBAAI,OAAO,QAAQ,QAAQ,OAAO;AAChC,wBAAU;AACV,sBAAQ;AAAA,YACV;AAAA,UACF;AAEA,kBAAQ,MAAM,QAAQ,OAAO,EAAE,IAAI;AAEnC,cAAI,CAAC,MAAM;AACT,mBAAO,iBAAiB,UAAU,QAAQ,SAAS,OAAO,IAAI,KAAK;AAAA,UACrE;AAEA,iBAAO,uBAAuB,KAAK,QAAQ,aAAa,SAAS,MAAM,IAAI,IAAI,QAAQ,UAAU,QAAQ,SAAS,OAAO,IAAI,KAAK;AAAA,QACpI;AAEA,eAAO,aAAa,SAAS,WAAW,OAAO;AAC7C,iBAAO,mBAAmB,QAAQ;AAAA,QACpC;AAEA,eAAO,OAAO,SAAStB,MAAK,OAAO;AACjC,iBAAO;AAAA,QACT;AAEA,eAAO,UAAU,SAAS,QAAQO,OAAM,OAAO,KAAK,SAAS;AAC3D,cAAI,KAAK,QAAQ,WAAW;AAC1B,mBAAO,OAAO,QAAQ,UAAU,KAAK,QAAQ,eAAe,QAAQ,KAAK,GAAG,IAAI,OAAOA,QAAO,QAAQ,QAAQ;AAAA,UAChH;AAGA,iBAAO,OAAO,QAAQ,MAAMA,QAAO,QAAQ,QAAQ;AAAA,QACrD;AAEA,eAAO,KAAK,SAAS,KAAK;AACxB,iBAAO,KAAK,QAAQ,QAAQ,YAAY;AAAA,QAC1C;AAEA,eAAO,OAAO,SAAS,KAAK,MAAM,SAASK,QAAO;AAChD,cAAIW,QAAO,UAAU,OAAO,MACxB,WAAW,WAAWX,WAAU,IAAI,aAAaA,SAAQ,MAAM;AACnE,iBAAO,MAAMW,QAAO,WAAW,QAAQ,OAAO,OAAOA,QAAO;AAAA,QAC9D;AAEA,eAAO,WAAW,SAAS,SAAShB,OAAM;AACxC,iBAAO,SAASA,QAAO;AAAA,QACzB;AAEA,eAAO,WAAW,SAAS,SAAS,SAAS;AAC3C,iBAAO,aAAa,UAAU,gBAAgB,MAAM,iCAAiC,KAAK,QAAQ,QAAQ,OAAO,MAAM;AAAA,QACzH;AAEA,eAAO,YAAY,SAAS,UAAUA,OAAM;AAC1C,iBAAO,QAAQA,QAAO;AAAA,QACxB;AAEA,eAAO,QAAQ,SAAS,MAAM,QAAQ,MAAM;AAC1C,cAAI,KAAM,QAAO,YAAY,OAAO;AACpC,iBAAO,uBAA4B,SAAS,eAAe,OAAO;AAAA,QACpE;AAEA,eAAO,WAAW,SAAS,SAAS,SAAS;AAC3C,iBAAO,WAAW,UAAU;AAAA,QAC9B;AAEA,eAAO,YAAY,SAAS,UAAU,SAASiB,QAAO;AACpD,cAAID,QAAOC,OAAM,SAAS,OAAO;AACjC,cAAI,MAAMA,OAAM,QAAQ,MAAMD,QAAO,aAAaC,OAAM,QAAQ,OAAO,MAAMD,QAAO;AACpF,iBAAO,MAAM,UAAU,OAAOA,QAAO;AAAA,QACvC;AAGA,eAAO,SAAS,SAAS,OAAOhB,OAAM;AACpC,iBAAO,aAAaA,QAAO;AAAA,QAC7B;AAEA,eAAO,KAAK,SAAS,GAAGA,OAAM;AAC5B,iBAAO,SAASA,QAAO;AAAA,QACzB;AAEA,eAAO,WAAW,SAAS,SAASA,OAAM;AACxC,iBAAO,WAAWA,QAAO;AAAA,QAC3B;AAEA,eAAO,KAAK,SAAS,KAAK;AACxB,iBAAO,KAAK,QAAQ,QAAQ,UAAU;AAAA,QACxC;AAEA,eAAO,MAAM,SAASO,KAAIP,OAAM;AAC9B,iBAAO,UAAUA,QAAO;AAAA,QAC1B;AAEA,eAAO,OAAO,SAAS,KAAK,MAAM,OAAOA,OAAM;AAC7C,iBAAO,SAAS,KAAK,QAAQ,UAAU,KAAK,QAAQ,SAAS,IAAI;AAEjE,cAAI,SAAS,MAAM;AACjB,mBAAOA;AAAA,UACT;AAEA,cAAI,MAAM,cAAc,SAAS,IAAI,IAAI;AAEzC,cAAI,OAAO;AACT,mBAAO,aAAa,QAAQ;AAAA,UAC9B;AAEA,iBAAO,MAAMA,QAAO;AACpB,iBAAO;AAAA,QACT;AAEA,eAAO,QAAQ,SAAS,MAAM,MAAM,OAAOA,OAAM;AAC/C,iBAAO,SAAS,KAAK,QAAQ,UAAU,KAAK,QAAQ,SAAS,IAAI;AAEjE,cAAI,SAAS,MAAM;AACjB,mBAAOA;AAAA,UACT;AAEA,cAAI,MAAM,eAAe,OAAO,YAAYA,QAAO;AAEnD,cAAI,OAAO;AACT,mBAAO,aAAa,QAAQ;AAAA,UAC9B;AAEA,iBAAO,KAAK,QAAQ,QAAQ,OAAO;AACnC,iBAAO;AAAA,QACT;AAEA,eAAO,OAAO,SAASA,MAAK,OAAO;AACjC,iBAAO;AAAA,QACT;AAEA,eAAOe;AAAA,MACT,GAAE;AAOF,UAAI,iBAA8B,4BAAY;AAC5C,iBAASG,gBAAe;AAAA,QAAC;AAEzB,YAAI,SAASA,cAAa;AAG1B,eAAO,SAAS,SAAS,OAAOlB,OAAM;AACpC,iBAAOA;AAAA,QACT;AAEA,eAAO,KAAK,SAAS,GAAGA,OAAM;AAC5B,iBAAOA;AAAA,QACT;AAEA,eAAO,WAAW,SAAS,SAASA,OAAM;AACxC,iBAAOA;AAAA,QACT;AAEA,eAAO,MAAM,SAASO,KAAIP,OAAM;AAC9B,iBAAOA;AAAA,QACT;AAEA,eAAO,OAAO,SAASP,MAAKO,OAAM;AAChC,iBAAOA;AAAA,QACT;AAEA,eAAO,OAAO,SAASA,MAAK,OAAO;AACjC,iBAAO;AAAA,QACT;AAEA,eAAO,OAAO,SAAS,KAAK,MAAM,OAAOA,OAAM;AAC7C,iBAAO,KAAKA;AAAA,QACd;AAEA,eAAO,QAAQ,SAAS,MAAM,MAAM,OAAOA,OAAM;AAC/C,iBAAO,KAAKA;AAAA,QACd;AAEA,eAAO,KAAK,SAAS,KAAK;AACxB,iBAAO;AAAA,QACT;AAEA,eAAOkB;AAAA,MACT,GAAE;AAMF,UAAI,YAAyB,4BAAY;AACvC,iBAASC,WAAU;AACjB,eAAK,OAAO,CAAC;AAAA,QACf;AAEA,YAAI,SAASA,SAAQ;AAErB,eAAO,YAAY,SAAS,UAAU,OAAO;AAC3C,iBAAO,MAAM,YAAY,EAAE,KAAK,EAC/B,QAAQ,mBAAmB,EAAE,EAC7B,QAAQ,iEAAiE,EAAE,EAAE,QAAQ,OAAO,GAAG;AAAA,QAClG;AAMA,eAAO,kBAAkB,SAAS,gBAAgB,cAAc,UAAU;AACxE,cAAI,OAAO;AACX,cAAI,uBAAuB;AAE3B,cAAI,KAAK,KAAK,eAAe,IAAI,GAAG;AAClC,mCAAuB,KAAK,KAAK,YAAY;AAE7C,eAAG;AACD;AACA,qBAAO,eAAe,MAAM;AAAA,YAC9B,SAAS,KAAK,KAAK,eAAe,IAAI;AAAA,UACxC;AAEA,cAAI,CAAC,UAAU;AACb,iBAAK,KAAK,YAAY,IAAI;AAC1B,iBAAK,KAAK,IAAI,IAAI;AAAA,UACpB;AAEA,iBAAO;AAAA,QACT;AAQA,eAAO,OAAO,SAAS,KAAK,OAAO,SAAS;AAC1C,cAAI,YAAY,QAAQ;AACtB,sBAAU,CAAC;AAAA,UACb;AAEA,cAAIC,QAAO,KAAK,UAAU,KAAK;AAC/B,iBAAO,KAAK,gBAAgBA,OAAM,QAAQ,MAAM;AAAA,QAClD;AAEA,eAAOD;AAAA,MACT,GAAE;AAEF,UAAI,aAAa;AACjB,UAAI,iBAAiB;AACrB,UAAI,YAAY;AAChB,UAAI,aAAa,WAAW,QAAQ;AACpC,UAAIE,YAAW,QAAQ;AAKvB,UAAI,WAAwB,4BAAY;AACtC,iBAASC,QAAO,SAAS;AACvB,eAAK,UAAU,WAAW;AAC1B,eAAK,QAAQ,WAAW,KAAK,QAAQ,YAAY,IAAI,WAAW;AAChE,eAAK,WAAW,KAAK,QAAQ;AAC7B,eAAK,SAAS,UAAU,KAAK;AAC7B,eAAK,eAAe,IAAI,eAAe;AACvC,eAAK,UAAU,IAAI,UAAU;AAAA,QAC/B;AAMA,QAAAA,QAAO,QAAQ,SAASC,OAAM,QAAQ,SAAS;AAC7C,cAAI,SAAS,IAAID,QAAO,OAAO;AAC/B,iBAAO,OAAO,MAAM,MAAM;AAAA,QAC5B;AAMA,QAAAA,QAAO,cAAc,SAAS,YAAY,QAAQ,SAAS;AACzD,cAAI,SAAS,IAAIA,QAAO,OAAO;AAC/B,iBAAO,OAAO,YAAY,MAAM;AAAA,QAClC;AAMA,YAAI,SAASA,QAAO;AAEpB,eAAO,QAAQ,SAASC,OAAM,QAAQ,KAAK;AACzC,cAAI,QAAQ,QAAQ;AAClB,kBAAM;AAAA,UACR;AAEA,cAAI,MAAM,IACN,GACA,GACA,GACA,IACA,IACA,KACA,MACA,QACA,MACA,OACA,SACAlB,QACA,OACA,UACA,MACA,SACA,MACA,UACA;AACJ,cAAI,IAAI,OAAO;AAEf,eAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,oBAAQ,OAAO,CAAC;AAEhB,gBAAI,KAAK,QAAQ,cAAc,KAAK,QAAQ,WAAW,aAAa,KAAK,QAAQ,WAAW,UAAU,MAAM,IAAI,GAAG;AACjH,oBAAM,KAAK,QAAQ,WAAW,UAAU,MAAM,IAAI,EAAE,KAAK;AAAA,gBACvD,QAAQ;AAAA,cACV,GAAG,KAAK;AAER,kBAAI,QAAQ,SAAS,CAAC,CAAC,SAAS,MAAM,WAAW,QAAQ,SAAS,cAAc,QAAQ,QAAQ,aAAa,MAAM,EAAE,SAAS,MAAM,IAAI,GAAG;AACzI,uBAAO,OAAO;AACd;AAAA,cACF;AAAA,YACF;AAEA,oBAAQ,MAAM,MAAM;AAAA,cAClB,KAAK,SACH;AACE;AAAA,cACF;AAAA,cAEF,KAAK,MACH;AACE,uBAAO,KAAK,SAAS,GAAG;AACxB;AAAA,cACF;AAAA,cAEF,KAAK,WACH;AACE,uBAAO,KAAK,SAAS,QAAQ,KAAK,YAAY,MAAM,MAAM,GAAG,MAAM,OAAOgB,UAAS,KAAK,YAAY,MAAM,QAAQ,KAAK,YAAY,CAAC,GAAG,KAAK,OAAO;AACnJ;AAAA,cACF;AAAA,cAEF,KAAK,QACH;AACE,uBAAO,KAAK,SAAS,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO;AAC/D;AAAA,cACF;AAAA,cAEF,KAAK,SACH;AACE,yBAAS;AAET,uBAAO;AACP,qBAAK,MAAM,OAAO;AAElB,qBAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AACvB,0BAAQ,KAAK,SAAS,UAAU,KAAK,YAAY,MAAM,OAAO,CAAC,EAAE,MAAM,GAAG;AAAA,oBACxE,QAAQ;AAAA,oBACR,OAAO,MAAM,MAAM,CAAC;AAAA,kBACtB,CAAC;AAAA,gBACH;AAEA,0BAAU,KAAK,SAAS,SAAS,IAAI;AACrC,uBAAO;AACP,qBAAK,MAAM,KAAK;AAEhB,qBAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AACvB,wBAAM,MAAM,KAAK,CAAC;AAClB,yBAAO;AACP,uBAAK,IAAI;AAET,uBAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AACvB,4BAAQ,KAAK,SAAS,UAAU,KAAK,YAAY,IAAI,CAAC,EAAE,MAAM,GAAG;AAAA,sBAC/D,QAAQ;AAAA,sBACR,OAAO,MAAM,MAAM,CAAC;AAAA,oBACtB,CAAC;AAAA,kBACH;AAEA,0BAAQ,KAAK,SAAS,SAAS,IAAI;AAAA,gBACrC;AAEA,uBAAO,KAAK,SAAS,MAAM,QAAQ,IAAI;AACvC;AAAA,cACF;AAAA,cAEF,KAAK,cACH;AACE,uBAAO,KAAK,MAAM,MAAM,MAAM;AAC9B,uBAAO,KAAK,SAAS,WAAW,IAAI;AACpC;AAAA,cACF;AAAA,cAEF,KAAK,QACH;AACE,0BAAU,MAAM;AAChB,gBAAAhB,SAAQ,MAAM;AACd,wBAAQ,MAAM;AACd,qBAAK,MAAM,MAAM;AACjB,uBAAO;AAEP,qBAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AACvB,yBAAO,MAAM,MAAM,CAAC;AACpB,4BAAU,KAAK;AACf,yBAAO,KAAK;AACZ,6BAAW;AAEX,sBAAI,KAAK,MAAM;AACb,+BAAW,KAAK,SAAS,SAAS,OAAO;AAEzC,wBAAI,OAAO;AACT,0BAAI,KAAK,OAAO,SAAS,KAAK,KAAK,OAAO,CAAC,EAAE,SAAS,aAAa;AACjE,6BAAK,OAAO,CAAC,EAAE,OAAO,WAAW,MAAM,KAAK,OAAO,CAAC,EAAE;AAEtD,4BAAI,KAAK,OAAO,CAAC,EAAE,UAAU,KAAK,OAAO,CAAC,EAAE,OAAO,SAAS,KAAK,KAAK,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,SAAS,QAAQ;AACzG,+BAAK,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,WAAW,MAAM,KAAK,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE;AAAA,wBAC5E;AAAA,sBACF,OAAO;AACL,6BAAK,OAAO,QAAQ;AAAA,0BAClB,MAAM;AAAA,0BACN,MAAM;AAAA,wBACR,CAAC;AAAA,sBACH;AAAA,oBACF,OAAO;AACL,kCAAY;AAAA,oBACd;AAAA,kBACF;AAEA,8BAAY,KAAK,MAAM,KAAK,QAAQ,KAAK;AACzC,0BAAQ,KAAK,SAAS,SAAS,UAAU,MAAM,OAAO;AAAA,gBACxD;AAEA,uBAAO,KAAK,SAAS,KAAK,MAAM,SAASA,MAAK;AAC9C;AAAA,cACF;AAAA,cAEF,KAAK,QACH;AAEE,uBAAO,KAAK,SAAS,KAAK,MAAM,IAAI;AACpC;AAAA,cACF;AAAA,cAEF,KAAK,aACH;AACE,uBAAO,KAAK,SAAS,UAAU,KAAK,YAAY,MAAM,MAAM,CAAC;AAC7D;AAAA,cACF;AAAA,cAEF,KAAK,QACH;AACE,uBAAO,MAAM,SAAS,KAAK,YAAY,MAAM,MAAM,IAAI,MAAM;AAE7D,uBAAO,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,EAAE,SAAS,QAAQ;AACjD,0BAAQ,OAAO,EAAE,CAAC;AAClB,0BAAQ,QAAQ,MAAM,SAAS,KAAK,YAAY,MAAM,MAAM,IAAI,MAAM;AAAA,gBACxE;AAEA,uBAAO,MAAM,KAAK,SAAS,UAAU,IAAI,IAAI;AAC7C;AAAA,cACF;AAAA,cAEF,SACE;AACE,oBAAI,SAAS,iBAAiB,MAAM,OAAO;AAE3C,oBAAI,KAAK,QAAQ,QAAQ;AACvB,0BAAQ,MAAM,MAAM;AACpB;AAAA,gBACF,OAAO;AACL,wBAAM,IAAI,MAAM,MAAM;AAAA,gBACxB;AAAA,cACF;AAAA,YACJ;AAAA,UACF;AAEA,iBAAO;AAAA,QACT;AAMA,eAAO,cAAc,SAAS,YAAY,QAAQ,UAAU;AAC1D,qBAAW,YAAY,KAAK;AAC5B,cAAI,MAAM,IACN,GACA,OACA;AACJ,cAAI,IAAI,OAAO;AAEf,eAAK,IAAI,GAAG,IAAI,GAAG,KAAK;AACtB,oBAAQ,OAAO,CAAC;AAEhB,gBAAI,KAAK,QAAQ,cAAc,KAAK,QAAQ,WAAW,aAAa,KAAK,QAAQ,WAAW,UAAU,MAAM,IAAI,GAAG;AACjH,oBAAM,KAAK,QAAQ,WAAW,UAAU,MAAM,IAAI,EAAE,KAAK;AAAA,gBACvD,QAAQ;AAAA,cACV,GAAG,KAAK;AAER,kBAAI,QAAQ,SAAS,CAAC,CAAC,UAAU,QAAQ,QAAQ,SAAS,UAAU,MAAM,YAAY,MAAM,OAAO,MAAM,EAAE,SAAS,MAAM,IAAI,GAAG;AAC/H,uBAAO,OAAO;AACd;AAAA,cACF;AAAA,YACF;AAEA,oBAAQ,MAAM,MAAM;AAAA,cAClB,KAAK,UACH;AACE,uBAAO,SAAS,KAAK,MAAM,IAAI;AAC/B;AAAA,cACF;AAAA,cAEF,KAAK,QACH;AACE,uBAAO,SAAS,KAAK,MAAM,IAAI;AAC/B;AAAA,cACF;AAAA,cAEF,KAAK,QACH;AACE,uBAAO,SAAS,KAAK,MAAM,MAAM,MAAM,OAAO,KAAK,YAAY,MAAM,QAAQ,QAAQ,CAAC;AACtF;AAAA,cACF;AAAA,cAEF,KAAK,SACH;AACE,uBAAO,SAAS,MAAM,MAAM,MAAM,MAAM,OAAO,MAAM,IAAI;AACzD;AAAA,cACF;AAAA,cAEF,KAAK,UACH;AACE,uBAAO,SAAS,OAAO,KAAK,YAAY,MAAM,QAAQ,QAAQ,CAAC;AAC/D;AAAA,cACF;AAAA,cAEF,KAAK,MACH;AACE,uBAAO,SAAS,GAAG,KAAK,YAAY,MAAM,QAAQ,QAAQ,CAAC;AAC3D;AAAA,cACF;AAAA,cAEF,KAAK,YACH;AACE,uBAAO,SAAS,SAAS,MAAM,IAAI;AACnC;AAAA,cACF;AAAA,cAEF,KAAK,MACH;AACE,uBAAO,SAAS,GAAG;AACnB;AAAA,cACF;AAAA,cAEF,KAAK,OACH;AACE,uBAAO,SAAS,IAAI,KAAK,YAAY,MAAM,QAAQ,QAAQ,CAAC;AAC5D;AAAA,cACF;AAAA,cAEF,KAAK,QACH;AACE,uBAAO,SAAS,KAAK,MAAM,IAAI;AAC/B;AAAA,cACF;AAAA,cAEF,SACE;AACE,oBAAI,SAAS,iBAAiB,MAAM,OAAO;AAE3C,oBAAI,KAAK,QAAQ,QAAQ;AACvB,0BAAQ,MAAM,MAAM;AACpB;AAAA,gBACF,OAAO;AACL,wBAAM,IAAI,MAAM,MAAM;AAAA,gBACxB;AAAA,cACF;AAAA,YACJ;AAAA,UACF;AAEA,iBAAO;AAAA,QACT;AAEA,eAAOiB;AAAA,MACT,GAAE;AAEF,UAAI,QAAQ;AACZ,UAAI,SAAS;AACb,UAAI,YAAY;AAChB,UAAI,WAAW;AACf,UAAI,eAAe;AACnB,UAAI,UAAU;AACd,UAAIE,SAAQ,QAAQ,OAChB,2BAA2B,QAAQ,0BACnC,SAAS,QAAQ;AACrB,UAAI,cAAc,WAAW,QAAQ,aACjC,iBAAiB,WAAW,QAAQ,gBACpCC,YAAW,WAAW,QAAQ;AAKlC,eAASC,QAAO,KAAK,KAAK,UAAU;AAElC,YAAI,OAAO,QAAQ,eAAe,QAAQ,MAAM;AAC9C,gBAAM,IAAI,MAAM,gDAAgD;AAAA,QAClE;AAEA,YAAI,OAAO,QAAQ,UAAU;AAC3B,gBAAM,IAAI,MAAM,0CAA0C,OAAO,UAAU,SAAS,KAAK,GAAG,IAAI,mBAAmB;AAAA,QACrH;AAEA,YAAI,OAAO,QAAQ,YAAY;AAC7B,qBAAW;AACX,gBAAM;AAAA,QACR;AAEA,cAAMF,OAAM,CAAC,GAAGE,QAAO,UAAU,OAAO,CAAC,CAAC;AAC1C,iCAAyB,GAAG;AAE5B,YAAI,UAAU;AACZ,cAAI,YAAY,IAAI;AACpB,cAAI;AAEJ,cAAI;AACF,qBAAS,MAAM,IAAI,KAAK,GAAG;AAAA,UAC7B,SAAS,GAAG;AACV,mBAAO,SAAS,CAAC;AAAA,UACnB;AAEA,cAAI,OAAO,SAASC,MAAK,KAAK;AAC5B,gBAAI;AAEJ,gBAAI,CAAC,KAAK;AACR,kBAAI;AACF,oBAAI,IAAI,YAAY;AAClB,kBAAAD,QAAO,WAAW,QAAQ,IAAI,UAAU;AAAA,gBAC1C;AAEA,sBAAM,OAAO,MAAM,QAAQ,GAAG;AAAA,cAChC,SAAS,GAAG;AACV,sBAAM;AAAA,cACR;AAAA,YACF;AAEA,gBAAI,YAAY;AAChB,mBAAO,MAAM,SAAS,GAAG,IAAI,SAAS,MAAM,GAAG;AAAA,UACjD;AAEA,cAAI,CAAC,aAAa,UAAU,SAAS,GAAG;AACtC,mBAAO,KAAK;AAAA,UACd;AAEA,iBAAO,IAAI;AACX,cAAI,CAAC,OAAO,OAAQ,QAAO,KAAK;AAChC,cAAIE,WAAU;AACd,UAAAF,QAAO,WAAW,QAAQ,SAAU,OAAO;AACzC,gBAAI,MAAM,SAAS,QAAQ;AACzB,cAAAE;AACA,yBAAW,WAAY;AACrB,0BAAU,MAAM,MAAM,MAAM,MAAM,SAAU,KAAK,MAAM;AACrD,sBAAI,KAAK;AACP,2BAAO,KAAK,GAAG;AAAA,kBACjB;AAEA,sBAAI,QAAQ,QAAQ,SAAS,MAAM,MAAM;AACvC,0BAAM,OAAO;AACb,0BAAM,UAAU;AAAA,kBAClB;AAEA,kBAAAA;AAEA,sBAAIA,aAAY,GAAG;AACjB,yBAAK;AAAA,kBACP;AAAA,gBACF,CAAC;AAAA,cACH,GAAG,CAAC;AAAA,YACN;AAAA,UACF,CAAC;AAED,cAAIA,aAAY,GAAG;AACjB,iBAAK;AAAA,UACP;AAEA;AAAA,QACF;AAEA,YAAI;AACF,cAAI,UAAU,MAAM,IAAI,KAAK,GAAG;AAEhC,cAAI,IAAI,YAAY;AAClB,YAAAF,QAAO,WAAW,SAAS,IAAI,UAAU;AAAA,UAC3C;AAEA,iBAAO,OAAO,MAAM,SAAS,GAAG;AAAA,QAClC,SAAS,GAAG;AACV,YAAE,WAAW;AAEb,cAAI,IAAI,QAAQ;AACd,mBAAO,mCAAmC,OAAO,EAAE,UAAU,IAAI,IAAI,IAAI;AAAA,UAC3E;AAEA,gBAAM;AAAA,QACR;AAAA,MACF;AAMA,MAAAA,QAAO,UAAUA,QAAO,aAAa,SAAU,KAAK;AAClD,QAAAF,OAAME,QAAO,UAAU,GAAG;AAC1B,uBAAeA,QAAO,QAAQ;AAC9B,eAAOA;AAAA,MACT;AAEA,MAAAA,QAAO,cAAc;AACrB,MAAAA,QAAO,WAAWD;AAKlB,MAAAC,QAAO,MAAM,WAAY;AACvB,iBAAS,OAAO,UAAU,QAAQ,OAAO,IAAI,MAAM,IAAI,GAAGG,QAAO,GAAGA,QAAO,MAAMA,SAAQ;AACvF,eAAKA,KAAI,IAAI,UAAUA,KAAI;AAAA,QAC7B;AAEA,YAAIC,QAAON,OAAM,MAAM,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC;AAChD,YAAI,aAAaE,QAAO,SAAS,cAAc;AAAA,UAC7C,WAAW,CAAC;AAAA,UACZ,aAAa,CAAC;AAAA,QAChB;AACA,YAAI;AACJ,aAAK,QAAQ,SAAU,MAAM;AAE3B,cAAI,KAAK,YAAY;AACnB,4BAAgB;AAChB,iBAAK,WAAW,QAAQ,SAAU,KAAK;AACrC,kBAAI,CAAC,IAAI,MAAM;AACb,sBAAM,IAAI,MAAM,yBAAyB;AAAA,cAC3C;AAEA,kBAAI,IAAI,UAAU;AAEhB,oBAAI,eAAe,WAAW,YAAY,WAAW,UAAU,IAAI,IAAI,IAAI;AAE3E,oBAAI,cAAc;AAEhB,6BAAW,UAAU,IAAI,IAAI,IAAI,WAAY;AAC3C,6BAAS,QAAQ,UAAU,QAAQK,QAAO,IAAI,MAAM,KAAK,GAAGC,SAAQ,GAAGA,SAAQ,OAAOA,UAAS;AAC7F,sBAAAD,MAAKC,MAAK,IAAI,UAAUA,MAAK;AAAA,oBAC/B;AAEA,wBAAI,MAAM,IAAI,SAAS,MAAM,MAAMD,KAAI;AAEvC,wBAAI,QAAQ,OAAO;AACjB,4BAAM,aAAa,MAAM,MAAMA,KAAI;AAAA,oBACrC;AAEA,2BAAO;AAAA,kBACT;AAAA,gBACF,OAAO;AACL,6BAAW,UAAU,IAAI,IAAI,IAAI,IAAI;AAAA,gBACvC;AAAA,cACF;AAEA,kBAAI,IAAI,WAAW;AAEjB,oBAAI,CAAC,IAAI,SAAS,IAAI,UAAU,WAAW,IAAI,UAAU,UAAU;AACjE,wBAAM,IAAI,MAAM,6CAA6C;AAAA,gBAC/D;AAEA,oBAAI,WAAW,IAAI,KAAK,GAAG;AACzB,6BAAW,IAAI,KAAK,EAAE,QAAQ,IAAI,SAAS;AAAA,gBAC7C,OAAO;AACL,6BAAW,IAAI,KAAK,IAAI,CAAC,IAAI,SAAS;AAAA,gBACxC;AAEA,oBAAI,IAAI,OAAO;AAEb,sBAAI,IAAI,UAAU,SAAS;AACzB,wBAAI,WAAW,YAAY;AACzB,iCAAW,WAAW,KAAK,IAAI,KAAK;AAAA,oBACtC,OAAO;AACL,iCAAW,aAAa,CAAC,IAAI,KAAK;AAAA,oBACpC;AAAA,kBACF,WAAW,IAAI,UAAU,UAAU;AACjC,wBAAI,WAAW,aAAa;AAC1B,iCAAW,YAAY,KAAK,IAAI,KAAK;AAAA,oBACvC,OAAO;AACL,iCAAW,cAAc,CAAC,IAAI,KAAK;AAAA,oBACrC;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAEA,kBAAI,IAAI,aAAa;AAEnB,2BAAW,YAAY,IAAI,IAAI,IAAI,IAAI;AAAA,cACzC;AAAA,YACF,CAAC;AAAA,UACH;AAGA,cAAI,KAAK,UAAU;AACjB,aAAC,WAAY;AACX,kBAAI,WAAWL,QAAO,SAAS,YAAY,IAAI,SAAS;AAExD,kBAAI,QAAQ,SAASO,OAAMC,OAAM;AAC/B,oBAAI,eAAe,SAASA,KAAI;AAEhC,yBAASA,KAAI,IAAI,WAAY;AAC3B,2BAAS,QAAQ,UAAU,QAAQH,QAAO,IAAI,MAAM,KAAK,GAAG,QAAQ,GAAG,QAAQ,OAAO,SAAS;AAC7F,oBAAAA,MAAK,KAAK,IAAI,UAAU,KAAK;AAAA,kBAC/B;AAEA,sBAAI,MAAM,KAAK,SAASG,KAAI,EAAE,MAAM,UAAUH,KAAI;AAElD,sBAAI,QAAQ,OAAO;AACjB,0BAAM,aAAa,MAAM,UAAUA,KAAI;AAAA,kBACzC;AAEA,yBAAO;AAAA,gBACT;AAAA,cACF;AAEA,uBAAS,QAAQ,KAAK,UAAU;AAC9B,sBAAM,IAAI;AAAA,cACZ;AAEA,cAAAD,MAAK,WAAW;AAAA,YAClB,GAAG;AAAA,UACL;AAEA,cAAI,KAAK,WAAW;AAClB,aAAC,WAAY;AACX,kBAAI,YAAYJ,QAAO,SAAS,aAAa,IAAI,UAAU;AAE3D,kBAAI,SAAS,SAASS,QAAOD,OAAM;AACjC,oBAAI,gBAAgB,UAAUA,KAAI;AAElC,0BAAUA,KAAI,IAAI,WAAY;AAC5B,2BAAS,QAAQ,UAAU,QAAQH,QAAO,IAAI,MAAM,KAAK,GAAG,QAAQ,GAAG,QAAQ,OAAO,SAAS;AAC7F,oBAAAA,MAAK,KAAK,IAAI,UAAU,KAAK;AAAA,kBAC/B;AAEA,sBAAI,MAAM,KAAK,UAAUG,KAAI,EAAE,MAAM,WAAWH,KAAI;AAEpD,sBAAI,QAAQ,OAAO;AACjB,0BAAM,cAAc,MAAM,WAAWA,KAAI;AAAA,kBAC3C;AAEA,yBAAO;AAAA,gBACT;AAAA,cACF;AAEA,uBAAS,QAAQ,KAAK,WAAW;AAC/B,uBAAO,IAAI;AAAA,cACb;AAEA,cAAAD,MAAK,YAAY;AAAA,YACnB,GAAG;AAAA,UACL;AAGA,cAAI,KAAK,YAAY;AACnB,gBAAI,aAAaJ,QAAO,SAAS;AAEjC,YAAAI,MAAK,aAAa,SAAU,OAAO;AACjC,mBAAK,WAAW,KAAK,MAAM,KAAK;AAEhC,kBAAI,YAAY;AACd,2BAAW,KAAK,MAAM,KAAK;AAAA,cAC7B;AAAA,YACF;AAAA,UACF;AAEA,cAAI,eAAe;AACjB,YAAAA,MAAK,aAAa;AAAA,UACpB;AAEA,UAAAJ,QAAO,WAAWI,KAAI;AAAA,QACxB,CAAC;AAAA,MACH;AAMA,MAAAJ,QAAO,aAAa,SAAU,QAAQ,UAAU;AAC9C,YAAI,SAAS,SAASU,UAAS;AAC7B,cAAI,QAAQ,MAAM;AAClB,mBAAS,KAAKV,SAAQ,KAAK;AAE3B,kBAAQ,MAAM,MAAM;AAAA,YAClB,KAAK,SACH;AACE,uBAAS,aAAa,gCAAgC,MAAM,MAAM,GAAG,QAAQ,EAAE,SAAS,WAAW,GAAG,QAAO;AAC3G,oBAAI,OAAO,OAAO;AAClB,gBAAAA,QAAO,WAAW,KAAK,QAAQ,QAAQ;AAAA,cACzC;AAEA,uBAAS,aAAa,gCAAgC,MAAM,IAAI,GAAG,QAAQ,EAAE,SAAS,WAAW,GAAG,QAAO;AACzG,oBAAI,MAAM,OAAO;AAEjB,yBAAS,aAAa,gCAAgC,GAAG,GAAG,QAAQ,EAAE,SAAS,WAAW,GAAG,QAAO;AAClG,sBAAI,QAAQ,OAAO;AACnB,kBAAAA,QAAO,WAAW,MAAM,QAAQ,QAAQ;AAAA,gBAC1C;AAAA,cACF;AAEA;AAAA,YACF;AAAA,YAEF,KAAK,QACH;AACE,cAAAA,QAAO,WAAW,MAAM,OAAO,QAAQ;AACvC;AAAA,YACF;AAAA,YAEF,SACE;AACE,kBAAIA,QAAO,SAAS,cAAcA,QAAO,SAAS,WAAW,eAAeA,QAAO,SAAS,WAAW,YAAY,MAAM,IAAI,GAAG;AAE9H,gBAAAA,QAAO,SAAS,WAAW,YAAY,MAAM,IAAI,EAAE,QAAQ,SAAU,aAAa;AAChF,kBAAAA,QAAO,WAAW,MAAM,WAAW,GAAG,QAAQ;AAAA,gBAChD,CAAC;AAAA,cACH,WAAW,MAAM,QAAQ;AACvB,gBAAAA,QAAO,WAAW,MAAM,QAAQ,QAAQ;AAAA,cAC1C;AAAA,YACF;AAAA,UACJ;AAAA,QACF;AAEA,iBAAS,YAAY,gCAAgC,MAAM,GAAG,OAAO,EAAE,QAAQ,UAAU,GAAG,QAAO;AACjG,iBAAO;AAAA,QACT;AAAA,MACF;AAMA,MAAAA,QAAO,cAAc,SAAU,KAAK,KAAK;AAEvC,YAAI,OAAO,QAAQ,eAAe,QAAQ,MAAM;AAC9C,gBAAM,IAAI,MAAM,4DAA4D;AAAA,QAC9E;AAEA,YAAI,OAAO,QAAQ,UAAU;AAC3B,gBAAM,IAAI,MAAM,sDAAsD,OAAO,UAAU,SAAS,KAAK,GAAG,IAAI,mBAAmB;AAAA,QACjI;AAEA,cAAMF,OAAM,CAAC,GAAGE,QAAO,UAAU,OAAO,CAAC,CAAC;AAC1C,iCAAyB,GAAG;AAE5B,YAAI;AACF,cAAI,SAAS,MAAM,UAAU,KAAK,GAAG;AAErC,cAAI,IAAI,YAAY;AAClB,YAAAA,QAAO,WAAW,QAAQ,IAAI,UAAU;AAAA,UAC1C;AAEA,iBAAO,OAAO,YAAY,QAAQ,GAAG;AAAA,QACvC,SAAS,GAAG;AACV,YAAE,WAAW;AAEb,cAAI,IAAI,QAAQ;AACd,mBAAO,mCAAmC,OAAO,EAAE,UAAU,IAAI,IAAI,IAAI;AAAA,UAC3E;AAEA,gBAAM;AAAA,QACR;AAAA,MACF;AAMA,MAAAA,QAAO,SAAS;AAChB,MAAAA,QAAO,SAAS,OAAO;AACvB,MAAAA,QAAO,WAAW;AAClB,MAAAA,QAAO,eAAe;AACtB,MAAAA,QAAO,QAAQ;AACf,MAAAA,QAAO,QAAQ,MAAM;AACrB,MAAAA,QAAO,YAAY;AACnB,MAAAA,QAAO,UAAU;AACjB,MAAAA,QAAO,QAAQA;AACf,UAAI,WAAWA;AAEf,aAAO;AAAA,IAET,EAAE;AAAA;AAAA;;;ACv5FF;AAAA;AAAA;AASA,KAAC,SAAUW,SAAQC,UAAS;AAC1B,aAAO,YAAY,YAAY,OAAO,WAAW,cAAc,OAAO,UAAUA,SAAQ,IACxF,OAAO,WAAW,cAAc,OAAO,MAAM,OAAOA,QAAO,KAC1DD,UAASA,WAAU,MAAMA,QAAO,aAAaC,SAAQ;AAAA,IACxD,GAAE,UAAO,WAAY;AAAE;AAIrB,UAAIC,aAAY,UAAU;AAC1B,UAAIC,YAAW,UAAU;AAEzB,UAAIC,SAAQ,aAAa,KAAKF,UAAS;AACvC,UAAIG,aAAY,UAAU,KAAKH,UAAS;AACxC,UAAII,WAAU,wCAAwC,KAAKJ,UAAS;AACpE,UAAIK,QAAO,cAAc,KAAKL,UAAS;AACvC,UAAIM,MAAKH,cAAaC,YAAWC;AACjC,UAAIE,cAAaD,QAAOH,aAAY,SAAS,gBAAgB,IAAI,EAAEE,SAAQD,UAAS,CAAC;AACrF,UAAII,UAAS,CAACH,SAAQ,WAAW,KAAKL,UAAS;AAC/C,UAAIS,YAAWD,WAAU,eAAe,KAAKR,UAAS;AACtD,UAAIU,UAAS,CAACL,SAAQ,WAAW,KAAKL,UAAS;AAC/C,UAAIW,UAAS,UAAU,KAAKX,UAAS;AACrC,UAAIY,UAAS,iBAAiB,KAAK,UAAU,MAAM;AACnD,UAAIC,sBAAqB,+BAA+B,KAAKb,UAAS;AACtE,UAAIc,WAAU,YAAY,KAAKd,UAAS;AAExC,UAAIe,OAAM,CAACV,SAAQ,cAAc,KAAKL,UAAS,KAAK,cAAc,KAAKA,UAAS;AAChF,UAAIgB,WAAU,UAAU,KAAKhB,UAAS;AAEtC,UAAIiB,UAASF,QAAOC,YAAW,mDAAmD,KAAKhB,UAAS;AAChG,UAAIkB,OAAMH,QAAO,MAAM,KAAKd,SAAQ;AACpC,UAAIkB,YAAW,WAAW,KAAKnB,UAAS;AACxC,UAAIoB,WAAU,OAAO,KAAKnB,SAAQ;AAElC,UAAIoB,kBAAiBV,WAAUX,WAAU,MAAM,qBAAqB;AACpE,UAAIqB,iBAAgB;AAAE,QAAAA,kBAAiB,OAAOA,gBAAe,CAAC,CAAC;AAAA,MAAG;AAClE,UAAIA,mBAAkBA,mBAAkB,IAAI;AAAE,QAAAV,UAAS;AAAO,QAAAH,UAAS;AAAA,MAAM;AAE7E,UAAIc,eAAcJ,SAAQT,aAAYE,YAAWU,mBAAkB,QAAQA,kBAAiB;AAC5F,UAAIE,qBAAoBrB,UAAUI,OAAMC,eAAc;AAEtD,eAASiB,WAAU,KAAK;AAAE,eAAO,IAAI,OAAO,YAAY,MAAM,eAAe;AAAA,MAAE;AAE/E,UAAIC,WAAU,SAAS,MAAM,KAAK;AAChC,YAAI,UAAU,KAAK;AACnB,YAAIC,SAAQF,WAAU,GAAG,EAAE,KAAK,OAAO;AACvC,YAAIE,QAAO;AACT,cAAI,QAAQ,QAAQ,MAAMA,OAAM,QAAQA,OAAM,CAAC,EAAE,MAAM;AACvD,eAAK,YAAY,QAAQ,MAAM,GAAGA,OAAM,KAAK,KAAK,QAAQA,OAAM,CAAC,IAAI,QAAQ;AAAA,QAC/E;AAAA,MACF;AAEA,eAASC,gBAAe,GAAG;AACzB,iBAAS,QAAQ,EAAE,WAAW,QAAQ,QAAQ,GAAG,EAAE,OACjD;AAAE,YAAE,YAAY,EAAE,UAAU;AAAA,QAAG;AACjC,eAAO;AAAA,MACT;AAEA,eAASC,sBAAqB,QAAQ,GAAG;AACvC,eAAOD,gBAAe,MAAM,EAAE,YAAY,CAAC;AAAA,MAC7C;AAEA,eAASE,KAAI,KAAK,SAAS,WAAWC,QAAO;AAC3C,YAAI,IAAI,SAAS,cAAc,GAAG;AAClC,YAAI,WAAW;AAAE,YAAE,YAAY;AAAA,QAAW;AAC1C,YAAIA,QAAO;AAAE,YAAE,MAAM,UAAUA;AAAA,QAAO;AACtC,YAAI,OAAO,WAAW,UAAU;AAAE,YAAE,YAAY,SAAS,eAAe,OAAO,CAAC;AAAA,QAAG,WAC1E,SAAS;AAAE,mBAASC,KAAI,GAAGA,KAAI,QAAQ,QAAQ,EAAEA,IAAG;AAAE,cAAE,YAAY,QAAQA,EAAC,CAAC;AAAA,UAAG;AAAA,QAAE;AAC5F,eAAO;AAAA,MACT;AAEA,eAASC,MAAK,KAAK,SAAS,WAAWF,QAAO;AAC5C,YAAI,IAAID,KAAI,KAAK,SAAS,WAAWC,MAAK;AAC1C,UAAE,aAAa,QAAQ,cAAc;AACrC,eAAO;AAAA,MACT;AAEA,UAAIG;AACJ,UAAI,SAAS,aAAa;AAAE,QAAAA,SAAQ,SAAS,MAAMC,QAAO,KAAK,SAAS;AACtE,cAAI,IAAI,SAAS,YAAY;AAC7B,YAAE,OAAO,WAAW,MAAM,GAAG;AAC7B,YAAE,SAAS,MAAMA,MAAK;AACtB,iBAAO;AAAA,QACT;AAAA,MAAG,OACE;AAAE,QAAAD,SAAQ,SAAS,MAAMC,QAAO,KAAK;AACxC,cAAI,IAAI,SAAS,KAAK,gBAAgB;AACtC,cAAI;AAAE,cAAE,kBAAkB,KAAK,UAAU;AAAA,UAAG,SACtC,GAAG;AAAE,mBAAO;AAAA,UAAE;AACpB,YAAE,SAAS,IAAI;AACf,YAAE,QAAQ,aAAa,GAAG;AAC1B,YAAE,UAAU,aAAaA,MAAK;AAC9B,iBAAO;AAAA,QACT;AAAA,MAAG;AAEH,eAASC,UAAS,QAAQ,OAAO;AAC/B,YAAI,MAAM,YAAY,GACpB;AAAE,kBAAQ,MAAM;AAAA,QAAY;AAC9B,YAAI,OAAO,UACT;AAAE,iBAAO,OAAO,SAAS,KAAK;AAAA,QAAE;AAClC,WAAG;AACD,cAAI,MAAM,YAAY,IAAI;AAAE,oBAAQ,MAAM;AAAA,UAAM;AAChD,cAAI,SAAS,QAAQ;AAAE,mBAAO;AAAA,UAAK;AAAA,QACrC,SAAS,QAAQ,MAAM;AAAA,MACzB;AAEA,eAASC,aAAY;AAInB,YAAI;AACJ,YAAI;AACF,0BAAgB,SAAS;AAAA,QAC3B,SAAQ,GAAG;AACT,0BAAgB,SAAS,QAAQ;AAAA,QACnC;AACA,eAAO,iBAAiB,cAAc,cAAc,cAAc,WAAW,eAC3E;AAAE,0BAAgB,cAAc,WAAW;AAAA,QAAe;AAC5D,eAAO;AAAA,MACT;AAEA,eAASC,UAAS,MAAM,KAAK;AAC3B,YAAI,UAAU,KAAK;AACnB,YAAI,CAACb,WAAU,GAAG,EAAE,KAAK,OAAO,GAAG;AAAE,eAAK,cAAc,UAAU,MAAM,MAAM;AAAA,QAAK;AAAA,MACrF;AACA,eAASc,aAAY,GAAG,GAAG;AACzB,YAAI,KAAK,EAAE,MAAM,GAAG;AACpB,iBAASP,KAAI,GAAGA,KAAI,GAAG,QAAQA,MAC7B;AAAE,cAAI,GAAGA,EAAC,KAAK,CAACP,WAAU,GAAGO,EAAC,CAAC,EAAE,KAAK,CAAC,GAAG;AAAE,iBAAK,MAAM,GAAGA,EAAC;AAAA,UAAG;AAAA,QAAE;AAClE,eAAO;AAAA,MACT;AAEA,UAAIQ,eAAc,SAAS,MAAM;AAAE,aAAK,OAAO;AAAA,MAAG;AAClD,UAAIxB,MACF;AAAE,QAAAwB,eAAc,SAAS,MAAM;AAAE,eAAK,iBAAiB;AAAG,eAAK,eAAe,KAAK,MAAM;AAAA,QAAQ;AAAA,MAAG,WAC7FjC,KACP;AAAE,QAAAiC,eAAc,SAAS,MAAM;AAAE,cAAI;AAAE,iBAAK,OAAO;AAAA,UAAG,SAAQ,IAAI;AAAA,UAAC;AAAA,QAAE;AAAA,MAAG;AAE1E,eAASC,MAAK,GAAG;AACf,YAAI,OAAO,MAAM,UAAU,MAAM,KAAK,WAAW,CAAC;AAClD,eAAO,WAAU;AAAC,iBAAO,EAAE,MAAM,MAAM,IAAI;AAAA,QAAC;AAAA,MAC9C;AAEA,eAASC,SAAQ,KAAKC,SAAQ,WAAW;AACvC,YAAI,CAACA,SAAQ;AAAE,UAAAA,UAAS,CAAC;AAAA,QAAG;AAC5B,iBAASC,SAAQ,KACf;AAAE,cAAI,IAAI,eAAeA,KAAI,MAAM,cAAc,SAAS,CAACD,QAAO,eAAeC,KAAI,IACnF;AAAE,YAAAD,QAAOC,KAAI,IAAI,IAAIA,KAAI;AAAA,UAAG;AAAA,QAAE;AAClC,eAAOD;AAAA,MACT;AAIA,eAASE,aAAY,QAAQ,KAAK,SAAS,YAAY,YAAY;AACjE,YAAI,OAAO,MAAM;AACf,gBAAM,OAAO,OAAO,aAAa;AACjC,cAAI,OAAO,IAAI;AAAE,kBAAM,OAAO;AAAA,UAAQ;AAAA,QACxC;AACA,iBAASb,KAAI,cAAc,GAAG,IAAI,cAAc,OAAK;AACnD,cAAI,UAAU,OAAO,QAAQ,KAAMA,EAAC;AACpC,cAAI,UAAU,KAAK,WAAW,KAC5B;AAAE,mBAAO,KAAK,MAAMA;AAAA,UAAG;AACzB,eAAK,UAAUA;AACf,eAAK,UAAW,IAAI;AACpB,UAAAA,KAAI,UAAU;AAAA,QAChB;AAAA,MACF;AAEA,UAAIc,WAAU,WAAW;AACvB,aAAK,KAAK;AACV,aAAK,IAAI;AACT,aAAK,OAAO;AACZ,aAAK,UAAUL,MAAK,KAAK,WAAW,IAAI;AAAA,MAC1C;AACA,MAAAK,SAAQ,UAAU,YAAY,SAAUC,OAAM;AAC5C,QAAAA,MAAK,KAAK;AACV,YAAIA,MAAK,QAAQ,CAAC,oBAAI,QAAM;AAC1B,UAAAA,MAAK,EAAE;AAAA,QACT,OAAO;AACL,qBAAWA,MAAK,SAASA,MAAK,OAAO,CAAC,oBAAI,MAAI;AAAA,QAChD;AAAA,MACF;AACA,MAAAD,SAAQ,UAAU,MAAM,SAAU,IAAI,GAAG;AACvC,aAAK,IAAI;AACT,YAAIE,QAAO,CAAC,oBAAI,SAAO;AACvB,YAAI,CAAC,KAAK,MAAMA,QAAO,KAAK,MAAM;AAChC,uBAAa,KAAK,EAAE;AACpB,eAAK,KAAK,WAAW,KAAK,SAAS,EAAE;AACrC,eAAK,OAAOA;AAAA,QACd;AAAA,MACF;AAEA,eAASC,SAAQC,QAAOpB,MAAK;AAC3B,iBAASE,KAAI,GAAGA,KAAIkB,OAAM,QAAQ,EAAElB,IAClC;AAAE,cAAIkB,OAAMlB,EAAC,KAAKF,MAAK;AAAE,mBAAOE;AAAA,UAAE;AAAA,QAAE;AACtC,eAAO;AAAA,MACT;AAGA,UAAImB,eAAc;AAIlB,UAAI,OAAO,EAAC,UAAU,WAAU;AAAC,eAAO;AAAA,MAAiB,EAAC;AAG1D,UAAIC,kBAAiB,EAAC,QAAQ,MAAK,GAAG,YAAY,EAAC,QAAQ,SAAQ,GAAG,WAAW,EAAC,QAAQ,QAAO;AAIjG,eAAS,WAAW,QAAQ,MAAM,SAAS;AACzC,iBAAS,MAAM,GAAG,MAAM,OAAK;AAC3B,cAAI,UAAU,OAAO,QAAQ,KAAM,GAAG;AACtC,cAAI,WAAW,IAAI;AAAE,sBAAU,OAAO;AAAA,UAAQ;AAC9C,cAAI,UAAU,UAAU;AACxB,cAAI,WAAW,OAAO,UAAU,MAAM,WAAW,MAC/C;AAAE,mBAAO,MAAM,KAAK,IAAI,SAAS,OAAO,GAAG;AAAA,UAAE;AAC/C,iBAAO,UAAU;AACjB,iBAAO,UAAW,MAAM;AACxB,gBAAM,UAAU;AAChB,cAAI,OAAO,MAAM;AAAE,mBAAO;AAAA,UAAI;AAAA,QAChC;AAAA,MACF;AAEA,UAAI,YAAY,CAAC,EAAE;AACnB,eAASC,UAAS,GAAG;AACnB,eAAO,UAAU,UAAU,GACzB;AAAE,oBAAU,KAAKC,KAAI,SAAS,IAAI,GAAG;AAAA,QAAG;AAC1C,eAAO,UAAU,CAAC;AAAA,MACpB;AAEA,eAASA,KAAI,KAAK;AAAE,eAAO,IAAI,IAAI,SAAO,CAAC;AAAA,MAAE;AAE7C,eAASC,KAAIL,QAAO,GAAG;AACrB,YAAI,MAAM,CAAC;AACX,iBAASlB,KAAI,GAAGA,KAAIkB,OAAM,QAAQlB,MAAK;AAAE,cAAIA,EAAC,IAAI,EAAEkB,OAAMlB,EAAC,GAAGA,EAAC;AAAA,QAAG;AAClE,eAAO;AAAA,MACT;AAEA,eAAS,aAAakB,QAAO,OAAO,OAAO;AACzC,YAAI,MAAM,GAAG,WAAW,MAAM,KAAK;AACnC,eAAO,MAAMA,OAAM,UAAU,MAAMA,OAAM,GAAG,CAAC,KAAK,UAAU;AAAE;AAAA,QAAO;AACrE,QAAAA,OAAM,OAAO,KAAK,GAAG,KAAK;AAAA,MAC5B;AAEA,eAAS,UAAU;AAAA,MAAC;AAEpB,eAASM,WAAU,MAAMC,QAAO;AAC9B,YAAI;AACJ,YAAI,OAAO,QAAQ;AACjB,iBAAO,OAAO,OAAO,IAAI;AAAA,QAC3B,OAAO;AACL,kBAAQ,YAAY;AACpB,iBAAO,IAAI,QAAQ;AAAA,QACrB;AACA,YAAIA,QAAO;AAAE,UAAAf,SAAQe,QAAO,IAAI;AAAA,QAAG;AACnC,eAAO;AAAA,MACT;AAEA,UAAI,6BAA6B;AACjC,eAAS,gBAAgB,IAAI;AAC3B,eAAO,KAAK,KAAK,EAAE,KAAK,KAAK,WAC1B,GAAG,YAAY,KAAK,GAAG,YAAY,KAAK,2BAA2B,KAAK,EAAE;AAAA,MAC/E;AACA,eAAS,WAAW,IAAI,QAAQ;AAC9B,YAAI,CAAC,QAAQ;AAAE,iBAAO,gBAAgB,EAAE;AAAA,QAAE;AAC1C,YAAI,OAAO,OAAO,QAAQ,KAAK,IAAI,MAAM,gBAAgB,EAAE,GAAG;AAAE,iBAAO;AAAA,QAAK;AAC5E,eAAO,OAAO,KAAK,EAAE;AAAA,MACvB;AAEA,eAAS,QAAQ,KAAK;AACpB,iBAAS,KAAK,KAAK;AAAE,cAAI,IAAI,eAAe,CAAC,KAAK,IAAI,CAAC,GAAG;AAAE,mBAAO;AAAA,UAAM;AAAA,QAAE;AAC3E,eAAO;AAAA,MACT;AAOA,UAAI,iBAAiB;AACrB,eAASC,iBAAgB,IAAI;AAAE,eAAO,GAAG,WAAW,CAAC,KAAK,OAAO,eAAe,KAAK,EAAE;AAAA,MAAE;AAGzF,eAASC,oBAAmBC,MAAK,KAAK,KAAK;AACzC,gBAAQ,MAAM,IAAI,MAAM,IAAI,MAAMA,KAAI,WAAWF,iBAAgBE,KAAI,OAAO,GAAG,CAAC,GAAG;AAAE,iBAAO;AAAA,QAAK;AACjG,eAAO;AAAA,MACT;AAKA,eAASC,WAAU,MAAM,MAAM,IAAI;AAGjC,YAAI,MAAM,OAAO,KAAK,KAAK;AAC3B,mBAAS;AACP,cAAI,QAAQ,IAAI;AAAE,mBAAO;AAAA,UAAK;AAC9B,cAAI,QAAQ,OAAO,MAAM,GAAG,MAAM,MAAM,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,MAAM,IAAI;AAC7E,cAAI,OAAO,MAAM;AAAE,mBAAO,KAAK,GAAG,IAAI,OAAO;AAAA,UAAG;AAChD,cAAI,KAAK,GAAG,GAAG;AAAE,iBAAK;AAAA,UAAK,OACtB;AAAE,mBAAO,MAAM;AAAA,UAAK;AAAA,QAC3B;AAAA,MACF;AAIA,eAASC,qBAAoB,OAAO,MAAM,IAAI,GAAG;AAC/C,YAAI,CAAC,OAAO;AAAE,iBAAO,EAAE,MAAM,IAAI,OAAO,CAAC;AAAA,QAAE;AAC3C,YAAI,QAAQ;AACZ,iBAAS9B,KAAI,GAAGA,KAAI,MAAM,QAAQ,EAAEA,IAAG;AACrC,cAAI,OAAO,MAAMA,EAAC;AAClB,cAAI,KAAK,OAAO,MAAM,KAAK,KAAK,QAAQ,QAAQ,MAAM,KAAK,MAAM,MAAM;AACrE,cAAE,KAAK,IAAI,KAAK,MAAM,IAAI,GAAG,KAAK,IAAI,KAAK,IAAI,EAAE,GAAG,KAAK,SAAS,IAAI,QAAQ,OAAOA,EAAC;AACtF,oBAAQ;AAAA,UACV;AAAA,QACF;AACA,YAAI,CAAC,OAAO;AAAE,YAAE,MAAM,IAAI,KAAK;AAAA,QAAG;AAAA,MACpC;AAEA,UAAI+B,aAAY;AAChB,eAASC,eAAc,OAAO,IAAI,QAAQ;AACxC,YAAI;AACJ,QAAAD,aAAY;AACZ,iBAAS/B,KAAI,GAAGA,KAAI,MAAM,QAAQ,EAAEA,IAAG;AACrC,cAAI,MAAM,MAAMA,EAAC;AACjB,cAAI,IAAI,OAAO,MAAM,IAAI,KAAK,IAAI;AAAE,mBAAOA;AAAA,UAAE;AAC7C,cAAI,IAAI,MAAM,IAAI;AAChB,gBAAI,IAAI,QAAQ,IAAI,MAAM,UAAU,UAAU;AAAE,sBAAQA;AAAA,YAAG,OACtD;AAAE,cAAA+B,aAAY/B;AAAA,YAAG;AAAA,UACxB;AACA,cAAI,IAAI,QAAQ,IAAI;AAClB,gBAAI,IAAI,QAAQ,IAAI,MAAM,UAAU,UAAU;AAAE,sBAAQA;AAAA,YAAG,OACtD;AAAE,cAAA+B,aAAY/B;AAAA,YAAG;AAAA,UACxB;AAAA,QACF;AACA,eAAO,SAAS,OAAO,QAAQ+B;AAAA,MACjC;AAyBA,UAAI,eAAgB,4BAAW;AAE7B,YAAI,WAAW;AAEf,YAAI,cAAc;AAClB,iBAAS,SAAS,MAAM;AACtB,cAAI,QAAQ,KAAM;AAAE,mBAAO,SAAS,OAAO,IAAI;AAAA,UAAE,WACxC,QAAS,QAAQ,QAAQ,MAAO;AAAE,mBAAO;AAAA,UAAI,WAC7C,QAAS,QAAQ,QAAQ,MAAO;AAAE,mBAAO,YAAY,OAAO,OAAO,IAAK;AAAA,UAAE,WAC1E,QAAS,QAAQ,QAAQ,MAAO;AAAE,mBAAO;AAAA,UAAI,WAC7C,QAAU,QAAQ,QAAQ,MAAQ;AAAE,mBAAO;AAAA,UAAI,WAC/C,QAAQ,MAAQ;AAAE,mBAAO;AAAA,UAAI,OACjC;AAAE,mBAAO;AAAA,UAAI;AAAA,QACpB;AAEA,YAAI,SAAS;AACb,YAAI,YAAY,UAAU,WAAW,SAAS,eAAe,UAAU,cAAc;AAErF,iBAAS,SAAS,OAAO,MAAM,IAAI;AACjC,eAAK,QAAQ;AACb,eAAK,OAAO;AAAM,eAAK,KAAK;AAAA,QAC9B;AAEA,eAAO,SAASH,MAAK,WAAW;AAC9B,cAAI,YAAY,aAAa,QAAQ,MAAM;AAE3C,cAAIA,KAAI,UAAU,KAAK,aAAa,SAAS,CAAC,OAAO,KAAKA,IAAG,GAAG;AAAE,mBAAO;AAAA,UAAM;AAC/E,cAAIK,OAAML,KAAI,QAAQ,QAAQ,CAAC;AAC/B,mBAAS5B,KAAI,GAAGA,KAAIiC,MAAK,EAAEjC,IACzB;AAAE,kBAAM,KAAK,SAAS4B,KAAI,WAAW5B,EAAC,CAAC,CAAC;AAAA,UAAG;AAM7C,mBAASkC,OAAM,GAAG,OAAO,WAAWA,OAAMD,MAAK,EAAEC,MAAK;AACpD,gBAAIC,QAAO,MAAMD,IAAG;AACpB,gBAAIC,SAAQ,KAAK;AAAE,oBAAMD,IAAG,IAAI;AAAA,YAAM,OACjC;AAAE,qBAAOC;AAAA,YAAM;AAAA,UACtB;AAOA,mBAASC,OAAM,GAAG,MAAM,WAAWA,OAAMH,MAAK,EAAEG,MAAK;AACnD,gBAAI,SAAS,MAAMA,IAAG;AACtB,gBAAI,UAAU,OAAO,OAAO,KAAK;AAAE,oBAAMA,IAAG,IAAI;AAAA,YAAK,WAC5C,SAAS,KAAK,MAAM,GAAG;AAAE,oBAAM;AAAQ,kBAAI,UAAU,KAAK;AAAE,sBAAMA,IAAG,IAAI;AAAA,cAAK;AAAA,YAAE;AAAA,UAC3F;AAKA,mBAAS,MAAM,GAAG,SAAS,MAAM,CAAC,GAAG,MAAMH,OAAM,GAAG,EAAE,KAAK;AACzD,gBAAI,SAAS,MAAM,GAAG;AACtB,gBAAI,UAAU,OAAO,UAAU,OAAO,MAAM,MAAI,CAAC,KAAK,KAAK;AAAE,oBAAM,GAAG,IAAI;AAAA,YAAK,WACtE,UAAU,OAAO,UAAU,MAAM,MAAI,CAAC,MACrC,UAAU,OAAO,UAAU,MAAM;AAAE,oBAAM,GAAG,IAAI;AAAA,YAAQ;AAClE,qBAAS;AAAA,UACX;AAMA,mBAAS,MAAM,GAAG,MAAMA,MAAK,EAAE,KAAK;AAClC,gBAAI,SAAS,MAAM,GAAG;AACtB,gBAAI,UAAU,KAAK;AAAE,oBAAM,GAAG,IAAI;AAAA,YAAK,WAC9B,UAAU,KAAK;AACtB,kBAAI,MAAO;AACX,mBAAK,MAAM,MAAM,GAAG,MAAMA,QAAO,MAAM,GAAG,KAAK,KAAK,EAAE,KAAK;AAAA,cAAC;AAC5D,kBAAII,WAAW,OAAO,MAAM,MAAI,CAAC,KAAK,OAAS,MAAMJ,QAAO,MAAM,GAAG,KAAK,MAAO,MAAM;AACvF,uBAAS,IAAI,KAAK,IAAI,KAAK,EAAE,GAAG;AAAE,sBAAM,CAAC,IAAII;AAAA,cAAS;AACtD,oBAAM,MAAM;AAAA,YACd;AAAA,UACF;AAKA,mBAAS,MAAM,GAAG,QAAQ,WAAW,MAAMJ,MAAK,EAAE,KAAK;AACrD,gBAAI,SAAS,MAAM,GAAG;AACtB,gBAAI,SAAS,OAAO,UAAU,KAAK;AAAE,oBAAM,GAAG,IAAI;AAAA,YAAK,WAC9C,SAAS,KAAK,MAAM,GAAG;AAAE,sBAAQ;AAAA,YAAQ;AAAA,UACpD;AAQA,mBAAS,MAAM,GAAG,MAAMA,MAAK,EAAE,KAAK;AAClC,gBAAI,UAAU,KAAK,MAAM,GAAG,CAAC,GAAG;AAC9B,kBAAI,QAAS;AACb,mBAAK,QAAQ,MAAM,GAAG,QAAQA,QAAO,UAAU,KAAK,MAAM,KAAK,CAAC,GAAG,EAAE,OAAO;AAAA,cAAC;AAC7E,kBAAI,UAAU,MAAM,MAAM,MAAI,CAAC,IAAI,cAAc;AACjD,kBAAI,SAAS,QAAQA,OAAM,MAAM,KAAK,IAAI,cAAc;AACxD,kBAAI,YAAY,UAAU,QAAS,SAAS,MAAM,MAAO;AACzD,uBAAS,MAAM,KAAK,MAAM,OAAO,EAAE,KAAK;AAAE,sBAAM,GAAG,IAAI;AAAA,cAAW;AAClE,oBAAM,QAAQ;AAAA,YAChB;AAAA,UACF;AAOA,cAAI,QAAQ,CAAC,GAAG;AAChB,mBAAS,MAAM,GAAG,MAAMA,QAAM;AAC5B,gBAAI,aAAa,KAAK,MAAM,GAAG,CAAC,GAAG;AACjC,kBAAI9B,SAAQ;AACZ,mBAAK,EAAE,KAAK,MAAM8B,QAAO,aAAa,KAAK,MAAM,GAAG,CAAC,GAAG,EAAE,KAAK;AAAA,cAAC;AAChE,oBAAM,KAAK,IAAI,SAAS,GAAG9B,QAAO,GAAG,CAAC;AAAA,YACxC,OAAO;AACL,kBAAI,MAAM,KAAK,KAAK,MAAM,QAAQ,QAAQ,aAAa,QAAQ,IAAI;AACnE,mBAAK,EAAE,KAAK,MAAM8B,QAAO,MAAM,GAAG,KAAK,KAAK,EAAE,KAAK;AAAA,cAAC;AACpD,uBAAS,MAAM,KAAK,MAAM,OAAM;AAC9B,oBAAI,YAAY,KAAK,MAAM,GAAG,CAAC,GAAG;AAChC,sBAAI,MAAM,KAAK;AAAE,0BAAM,OAAO,IAAI,GAAG,IAAI,SAAS,GAAG,KAAK,GAAG,CAAC;AAAG,0BAAM;AAAA,kBAAO;AAC9E,sBAAI,SAAS;AACb,uBAAK,EAAE,KAAK,MAAM,OAAO,YAAY,KAAK,MAAM,GAAG,CAAC,GAAG,EAAE,KAAK;AAAA,kBAAC;AAC/D,wBAAM,OAAO,IAAI,GAAG,IAAI,SAAS,GAAG,QAAQ,GAAG,CAAC;AAChD,wBAAM;AACN,wBAAM;AAAA,gBACR,OAAO;AAAE,oBAAE;AAAA,gBAAK;AAAA,cAClB;AACA,kBAAI,MAAM,KAAK;AAAE,sBAAM,OAAO,IAAI,GAAG,IAAI,SAAS,GAAG,KAAK,GAAG,CAAC;AAAA,cAAG;AAAA,YACnE;AAAA,UACF;AACA,cAAI,aAAa,OAAO;AACtB,gBAAI,MAAM,CAAC,EAAE,SAAS,MAAM,IAAIL,KAAI,MAAM,MAAM,IAAI;AAClD,oBAAM,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;AACrB,oBAAM,QAAQ,IAAI,SAAS,GAAG,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC;AAAA,YAC/C;AACA,gBAAIN,KAAI,KAAK,EAAE,SAAS,MAAM,IAAIM,KAAI,MAAM,MAAM,IAAI;AACpD,cAAAN,KAAI,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE;AACtB,oBAAM,KAAK,IAAI,SAAS,GAAGW,OAAM,EAAE,CAAC,EAAE,QAAQA,IAAG,CAAC;AAAA,YACpD;AAAA,UACF;AAEA,iBAAO,aAAa,QAAQ,MAAM,QAAQ,IAAI;AAAA,QAChD;AAAA,MACF,GAAG;AAKH,eAASK,UAAS,MAAM,WAAW;AACjC,YAAI,QAAQ,KAAK;AACjB,YAAI,SAAS,MAAM;AAAE,kBAAQ,KAAK,QAAQ,aAAa,KAAK,MAAM,SAAS;AAAA,QAAG;AAC9E,eAAO;AAAA,MACT;AAOA,UAAIC,cAAa,CAAC;AAElB,UAAIC,MAAK,SAAS,SAASL,OAAM,GAAG;AAClC,YAAI,QAAQ,kBAAkB;AAC5B,kBAAQ,iBAAiBA,OAAM,GAAG,KAAK;AAAA,QACzC,WAAW,QAAQ,aAAa;AAC9B,kBAAQ,YAAY,OAAOA,OAAM,CAAC;AAAA,QACpC,OAAO;AACL,cAAIZ,OAAM,QAAQ,cAAc,QAAQ,YAAY,CAAC;AACrD,UAAAA,KAAIY,KAAI,KAAKZ,KAAIY,KAAI,KAAKI,aAAY,OAAO,CAAC;AAAA,QAChD;AAAA,MACF;AAEA,eAASE,aAAY,SAASN,OAAM;AAClC,eAAO,QAAQ,aAAa,QAAQ,UAAUA,KAAI,KAAKI;AAAA,MACzD;AAEA,eAASG,KAAI,SAASP,OAAM,GAAG;AAC7B,YAAI,QAAQ,qBAAqB;AAC/B,kBAAQ,oBAAoBA,OAAM,GAAG,KAAK;AAAA,QAC5C,WAAW,QAAQ,aAAa;AAC9B,kBAAQ,YAAY,OAAOA,OAAM,CAAC;AAAA,QACpC,OAAO;AACL,cAAIZ,OAAM,QAAQ,WAAW,MAAMA,QAAOA,KAAIY,KAAI;AAClD,cAAI,KAAK;AACP,gBAAIQ,SAAQ1B,SAAQ,KAAK,CAAC;AAC1B,gBAAI0B,SAAQ,IACV;AAAE,cAAApB,KAAIY,KAAI,IAAI,IAAI,MAAM,GAAGQ,MAAK,EAAE,OAAO,IAAI,MAAMA,SAAQ,CAAC,CAAC;AAAA,YAAG;AAAA,UACpE;AAAA,QACF;AAAA,MACF;AAEA,eAASC,QAAO,SAAST,OAAsB;AAC7C,YAAI,WAAWM,aAAY,SAASN,KAAI;AACxC,YAAI,CAAC,SAAS,QAAQ;AAAE;AAAA,QAAO;AAC/B,YAAI,OAAO,MAAM,UAAU,MAAM,KAAK,WAAW,CAAC;AAClD,iBAASnC,KAAI,GAAGA,KAAI,SAAS,QAAQ,EAAEA,IAAG;AAAE,mBAASA,EAAC,EAAE,MAAM,MAAM,IAAI;AAAA,QAAG;AAAA,MAC7E;AAKA,eAAS6C,gBAAe,IAAI,GAAG,UAAU;AACvC,YAAI,OAAO,KAAK,UACd;AAAE,cAAI,EAAC,MAAM,GAAG,gBAAgB,WAAW;AAAE,iBAAK,mBAAmB;AAAA,UAAM,EAAC;AAAA,QAAG;AACjF,QAAAD,QAAO,IAAI,YAAY,EAAE,MAAM,IAAI,CAAC;AACpC,eAAO,mBAAmB,CAAC,KAAK,EAAE;AAAA,MACpC;AAEA,eAASE,sBAAqB,IAAI;AAChC,YAAI,MAAM,GAAG,aAAa,GAAG,UAAU;AACvC,YAAI,CAAC,KAAK;AAAE;AAAA,QAAO;AACnB,YAAIC,OAAM,GAAG,MAAM,2BAA2B,GAAG,MAAM,yBAAyB,CAAC;AACjF,iBAAS/C,KAAI,GAAGA,KAAI,IAAI,QAAQ,EAAEA,IAAG;AAAE,cAAIiB,SAAQ8B,MAAK,IAAI/C,EAAC,CAAC,KAAK,IACjE;AAAE,YAAA+C,KAAI,KAAK,IAAI/C,EAAC,CAAC;AAAA,UAAG;AAAA,QAAE;AAAA,MAC1B;AAEA,eAASgD,YAAW,SAASb,OAAM;AACjC,eAAOM,aAAY,SAASN,KAAI,EAAE,SAAS;AAAA,MAC7C;AAIA,eAASc,YAAW,MAAM;AACxB,aAAK,UAAU,KAAK,SAASd,OAAM,GAAG;AAAC,UAAAK,IAAG,MAAML,OAAM,CAAC;AAAA,QAAE;AACzD,aAAK,UAAU,MAAM,SAASA,OAAM,GAAG;AAAC,UAAAO,KAAI,MAAMP,OAAM,CAAC;AAAA,QAAE;AAAA,MAC7D;AAKA,eAAS,iBAAiB,GAAG;AAC3B,YAAI,EAAE,gBAAgB;AAAE,YAAE,eAAe;AAAA,QAAG,OACvC;AAAE,YAAE,cAAc;AAAA,QAAO;AAAA,MAChC;AACA,eAAS,kBAAkB,GAAG;AAC5B,YAAI,EAAE,iBAAiB;AAAE,YAAE,gBAAgB;AAAA,QAAG,OACzC;AAAE,YAAE,eAAe;AAAA,QAAM;AAAA,MAChC;AACA,eAAS,mBAAmB,GAAG;AAC7B,eAAO,EAAE,oBAAoB,OAAO,EAAE,mBAAmB,EAAE,eAAe;AAAA,MAC5E;AACA,eAAS,OAAO,GAAG;AAAC,yBAAiB,CAAC;AAAG,0BAAkB,CAAC;AAAA,MAAE;AAE9D,eAASe,UAAS,GAAG;AAAC,eAAO,EAAE,UAAU,EAAE;AAAA,MAAU;AACrD,eAAS,SAAS,GAAG;AACnB,YAAI,IAAI,EAAE;AACV,YAAI,KAAK,MAAM;AACb,cAAI,EAAE,SAAS,GAAG;AAAE,gBAAI;AAAA,UAAG,WAClB,EAAE,SAAS,GAAG;AAAE,gBAAI;AAAA,UAAG,WACvB,EAAE,SAAS,GAAG;AAAE,gBAAI;AAAA,UAAG;AAAA,QAClC;AACA,YAAI/D,QAAO,EAAE,WAAW,KAAK,GAAG;AAAE,cAAI;AAAA,QAAG;AACzC,eAAO;AAAA,MACT;AAGA,UAAIgE,gBAAc,WAAW;AAG3B,YAAI5E,OAAMC,cAAa,GAAG;AAAE,iBAAO;AAAA,QAAM;AACzC,YAAI4E,OAAMtD,KAAI,KAAK;AACnB,eAAO,eAAesD,QAAO,cAAcA;AAAA,MAC7C,GAAE;AAEF,UAAI;AACJ,eAASC,kBAAiB,SAAS;AACjC,YAAI,iBAAiB,MAAM;AACzB,cAAIC,QAAOxD,KAAI,QAAQ,QAAQ;AAC/B,UAAAD,sBAAqB,SAASC,KAAI,QAAQ,CAACwD,OAAM,SAAS,eAAe,GAAG,CAAC,CAAC,CAAC;AAC/E,cAAI,QAAQ,WAAW,gBAAgB,GACrC;AAAE,4BAAgBA,MAAK,eAAe,KAAKA,MAAK,eAAe,KAAK,EAAE/E,OAAMC,cAAa;AAAA,UAAI;AAAA,QACjG;AACA,YAAI,OAAO,gBAAgBsB,KAAI,QAAQ,QAAQ,IAC7CA,KAAI,QAAQ,QAAU,MAAM,uDAAuD;AACrF,aAAK,aAAa,WAAW,EAAE;AAC/B,eAAO;AAAA,MACT;AAGA,UAAI;AACJ,eAASyD,iBAAgB,SAAS;AAChC,YAAI,gBAAgB,MAAM;AAAE,iBAAO;AAAA,QAAa;AAChD,YAAI,MAAM1D,sBAAqB,SAAS,SAAS,eAAe,UAAU,CAAC;AAC3E,YAAI,KAAKK,OAAM,KAAK,GAAG,CAAC,EAAE,sBAAsB;AAChD,YAAI,KAAKA,OAAM,KAAK,GAAG,CAAC,EAAE,sBAAsB;AAChD,QAAAN,gBAAe,OAAO;AACtB,YAAI,CAAC,MAAM,GAAG,QAAQ,GAAG,OAAO;AAAE,iBAAO;AAAA,QAAM;AAC/C,eAAO,eAAgB,GAAG,QAAQ,GAAG,QAAQ;AAAA,MAC/C;AAIA,UAAI4D,kBAAiB,QAAQ,MAAM,IAAI,EAAE,UAAU,IAAI,SAAU,QAAQ;AACvE,YAAI,MAAM,GAAG,SAAS,CAAC,GAAG,IAAI,OAAO;AACrC,eAAO,OAAO,GAAG;AACf,cAAI,KAAK,OAAO,QAAQ,MAAM,GAAG;AACjC,cAAI,MAAM,IAAI;AAAE,iBAAK,OAAO;AAAA,UAAQ;AACpC,cAAI,OAAO,OAAO,MAAM,KAAK,OAAO,OAAO,KAAK,CAAC,KAAK,OAAO,KAAK,IAAI,EAAE;AACxE,cAAI,KAAK,KAAK,QAAQ,IAAI;AAC1B,cAAI,MAAM,IAAI;AACZ,mBAAO,KAAK,KAAK,MAAM,GAAG,EAAE,CAAC;AAC7B,mBAAO,KAAK;AAAA,UACd,OAAO;AACL,mBAAO,KAAK,IAAI;AAChB,kBAAM,KAAK;AAAA,UACb;AAAA,QACF;AACA,eAAO;AAAA,MACT,IAAI,SAAU,QAAQ;AAAE,eAAO,OAAO,MAAM,UAAU;AAAA,MAAG;AAEzD,UAAIC,gBAAe,OAAO,eAAe,SAAU,IAAI;AACrD,YAAI;AAAE,iBAAO,GAAG,kBAAkB,GAAG;AAAA,QAAa,SAC5C,GAAG;AAAE,iBAAO;AAAA,QAAM;AAAA,MAC1B,IAAI,SAAU,IAAI;AAChB,YAAIvD;AACJ,YAAI;AAAC,UAAAA,SAAQ,GAAG,cAAc,UAAU,YAAY;AAAA,QAAE,SAChD,GAAG;AAAA,QAAC;AACV,YAAI,CAACA,UAASA,OAAM,cAAc,KAAK,IAAI;AAAE,iBAAO;AAAA,QAAM;AAC1D,eAAOA,OAAM,iBAAiB,cAAcA,MAAK,KAAK;AAAA,MACxD;AAEA,UAAIwD,iBAAgB,WAAY;AAC9B,YAAI,IAAI5D,KAAI,KAAK;AACjB,YAAI,YAAY,GAAG;AAAE,iBAAO;AAAA,QAAK;AACjC,UAAE,aAAa,UAAU,SAAS;AAClC,eAAO,OAAO,EAAE,UAAU;AAAA,MAC5B,GAAG;AAEH,UAAI,iBAAiB;AACrB,eAAS6D,mBAAkB,SAAS;AAClC,YAAI,kBAAkB,MAAM;AAAE,iBAAO;AAAA,QAAe;AACpD,YAAI,OAAO9D,sBAAqB,SAASC,KAAI,QAAQ,GAAG,CAAC;AACzD,YAAI,SAAS,KAAK,sBAAsB;AACxC,YAAI,YAAYI,OAAM,MAAM,GAAG,CAAC,EAAE,sBAAsB;AACxD,eAAO,iBAAiB,KAAK,IAAI,OAAO,OAAO,UAAU,IAAI,IAAI;AAAA,MACnE;AAGA,UAAI,QAAQ,CAAC,GAAG,YAAY,CAAC;AAK7B,eAAS,WAAW,MAAM,MAAM;AAC9B,YAAI,UAAU,SAAS,GACrB;AAAE,eAAK,eAAe,MAAM,UAAU,MAAM,KAAK,WAAW,CAAC;AAAA,QAAG;AAClE,cAAM,IAAI,IAAI;AAAA,MAChB;AAEA,eAAS,WAAW,MAAM,MAAM;AAC9B,kBAAU,IAAI,IAAI;AAAA,MACpB;AAIA,eAAS,YAAY,MAAM;AACzB,YAAI,OAAO,QAAQ,YAAY,UAAU,eAAe,IAAI,GAAG;AAC7D,iBAAO,UAAU,IAAI;AAAA,QACvB,WAAW,QAAQ,OAAO,KAAK,QAAQ,YAAY,UAAU,eAAe,KAAK,IAAI,GAAG;AACtF,cAAI,QAAQ,UAAU,KAAK,IAAI;AAC/B,cAAI,OAAO,SAAS,UAAU;AAAE,oBAAQ,EAAC,MAAM,MAAK;AAAA,UAAG;AACvD,iBAAOsB,WAAU,OAAO,IAAI;AAC5B,eAAK,OAAO,MAAM;AAAA,QACpB,WAAW,OAAO,QAAQ,YAAY,0BAA0B,KAAK,IAAI,GAAG;AAC1E,iBAAO,YAAY,iBAAiB;AAAA,QACtC,WAAW,OAAO,QAAQ,YAAY,2BAA2B,KAAK,IAAI,GAAG;AAC3E,iBAAO,YAAY,kBAAkB;AAAA,QACvC;AACA,YAAI,OAAO,QAAQ,UAAU;AAAE,iBAAO,EAAC,MAAM,KAAI;AAAA,QAAE,OAC9C;AAAE,iBAAO,QAAQ,EAAC,MAAM,OAAM;AAAA,QAAE;AAAA,MACvC;AAIA,eAASoC,SAAQ,SAAS,MAAM;AAC9B,eAAO,YAAY,IAAI;AACvB,YAAI,WAAW,MAAM,KAAK,IAAI;AAC9B,YAAI,CAAC,UAAU;AAAE,iBAAOA,SAAQ,SAAS,YAAY;AAAA,QAAE;AACvD,YAAI,UAAU,SAAS,SAAS,IAAI;AACpC,YAAI,eAAe,eAAe,KAAK,IAAI,GAAG;AAC5C,cAAI,OAAO,eAAe,KAAK,IAAI;AACnC,mBAAShD,SAAQ,MAAM;AACrB,gBAAI,CAAC,KAAK,eAAeA,KAAI,GAAG;AAAE;AAAA,YAAS;AAC3C,gBAAI,QAAQ,eAAeA,KAAI,GAAG;AAAE,sBAAQ,MAAMA,KAAI,IAAI,QAAQA,KAAI;AAAA,YAAG;AACzE,oBAAQA,KAAI,IAAI,KAAKA,KAAI;AAAA,UAC3B;AAAA,QACF;AACA,gBAAQ,OAAO,KAAK;AACpB,YAAI,KAAK,YAAY;AAAE,kBAAQ,aAAa,KAAK;AAAA,QAAY;AAC7D,YAAI,KAAK,WAAW;AAAE,mBAAS,UAAU,KAAK,WAC5C;AAAE,oBAAQ,MAAM,IAAI,KAAK,UAAU,MAAM;AAAA,UAAG;AAAA,QAAE;AAEhD,eAAO;AAAA,MACT;AAIA,UAAI,iBAAiB,CAAC;AACtB,eAAS,WAAW,MAAM,YAAY;AACpC,YAAI,OAAO,eAAe,eAAe,IAAI,IAAI,eAAe,IAAI,IAAK,eAAe,IAAI,IAAI,CAAC;AACjG,QAAAF,SAAQ,YAAY,IAAI;AAAA,MAC1B;AAEA,eAASmD,WAAU,MAAM,OAAO;AAC9B,YAAI,UAAU,MAAM;AAAE,iBAAO;AAAA,QAAM;AACnC,YAAI,KAAK,WAAW;AAAE,iBAAO,KAAK,UAAU,KAAK;AAAA,QAAE;AACnD,YAAI,SAAS,CAAC;AACd,iBAAS,KAAK,OAAO;AACnB,cAAI,MAAM,MAAM,CAAC;AACjB,cAAI,eAAe,OAAO;AAAE,kBAAM,IAAI,OAAO,CAAC,CAAC;AAAA,UAAG;AAClD,iBAAO,CAAC,IAAI;AAAA,QACd;AACA,eAAO;AAAA,MACT;AAIA,eAASC,WAAU,MAAM,OAAO;AAC9B,YAAI;AACJ,eAAO,KAAK,WAAW;AACrB,iBAAO,KAAK,UAAU,KAAK;AAC3B,cAAI,CAAC,QAAQ,KAAK,QAAQ,MAAM;AAAE;AAAA,UAAM;AACxC,kBAAQ,KAAK;AACb,iBAAO,KAAK;AAAA,QACd;AACA,eAAO,QAAQ,EAAC,MAAY,MAAY;AAAA,MAC1C;AAEA,eAASC,YAAW,MAAM,IAAI,IAAI;AAChC,eAAO,KAAK,aAAa,KAAK,WAAW,IAAI,EAAE,IAAI;AAAA,MACrD;AAOA,UAAI,eAAe,SAAS,QAAQ,SAAS,YAAY;AACvD,aAAK,MAAM,KAAK,QAAQ;AACxB,aAAK,SAAS;AACd,aAAK,UAAU,WAAW;AAC1B,aAAK,gBAAgB,KAAK,kBAAkB;AAC5C,aAAK,YAAY;AACjB,aAAK,aAAa;AAAA,MACpB;AAEA,mBAAa,UAAU,MAAM,WAAY;AAAC,eAAO,KAAK,OAAO,KAAK,OAAO;AAAA,MAAM;AAC/E,mBAAa,UAAU,MAAM,WAAY;AAAC,eAAO,KAAK,OAAO,KAAK;AAAA,MAAS;AAC3E,mBAAa,UAAU,OAAO,WAAY;AAAC,eAAO,KAAK,OAAO,OAAO,KAAK,GAAG,KAAK;AAAA,MAAS;AAC3F,mBAAa,UAAU,OAAO,WAAY;AACxC,YAAI,KAAK,MAAM,KAAK,OAAO,QACzB;AAAE,iBAAO,KAAK,OAAO,OAAO,KAAK,KAAK;AAAA,QAAE;AAAA,MAC5C;AACA,mBAAa,UAAU,MAAM,SAAUpE,QAAO;AAC5C,YAAI,KAAK,KAAK,OAAO,OAAO,KAAK,GAAG;AACpC,YAAI;AACJ,YAAI,OAAOA,UAAS,UAAU;AAAE,eAAK,MAAMA;AAAA,QAAO,OAC7C;AAAE,eAAK,OAAOA,OAAM,OAAOA,OAAM,KAAK,EAAE,IAAIA,OAAM,EAAE;AAAA,QAAI;AAC7D,YAAI,IAAI;AAAC,YAAE,KAAK;AAAK,iBAAO;AAAA,QAAE;AAAA,MAChC;AACA,mBAAa,UAAU,WAAW,SAAUA,QAAO;AACjD,YAAIQ,SAAQ,KAAK;AACjB,eAAO,KAAK,IAAIR,MAAK,GAAE;AAAA,QAAC;AACxB,eAAO,KAAK,MAAMQ;AAAA,MACpB;AACA,mBAAa,UAAU,WAAW,WAAY;AAC5C,YAAIA,SAAQ,KAAK;AACjB,eAAO,aAAa,KAAK,KAAK,OAAO,OAAO,KAAK,GAAG,CAAC,GAAG;AAAE,YAAE,KAAK;AAAA,QAAK;AACtE,eAAO,KAAK,MAAMA;AAAA,MACpB;AACA,mBAAa,UAAU,YAAY,WAAY;AAAC,aAAK,MAAM,KAAK,OAAO;AAAA,MAAO;AAC9E,mBAAa,UAAU,SAAS,SAAU,IAAI;AAC5C,YAAI,QAAQ,KAAK,OAAO,QAAQ,IAAI,KAAK,GAAG;AAC5C,YAAI,QAAQ,IAAI;AAAC,eAAK,MAAM;AAAO,iBAAO;AAAA,QAAI;AAAA,MAChD;AACA,mBAAa,UAAU,SAAS,SAAU,GAAG;AAAC,aAAK,OAAO;AAAA,MAAE;AAC5D,mBAAa,UAAU,SAAS,WAAY;AAC1C,YAAI,KAAK,gBAAgB,KAAK,OAAO;AACnC,eAAK,kBAAkBU,aAAY,KAAK,QAAQ,KAAK,OAAO,KAAK,SAAS,KAAK,eAAe,KAAK,eAAe;AAClH,eAAK,gBAAgB,KAAK;AAAA,QAC5B;AACA,eAAO,KAAK,mBAAmB,KAAK,YAAYA,aAAY,KAAK,QAAQ,KAAK,WAAW,KAAK,OAAO,IAAI;AAAA,MAC3G;AACA,mBAAa,UAAU,cAAc,WAAY;AAC/C,eAAOA,aAAY,KAAK,QAAQ,MAAM,KAAK,OAAO,KAC/C,KAAK,YAAYA,aAAY,KAAK,QAAQ,KAAK,WAAW,KAAK,OAAO,IAAI;AAAA,MAC/E;AACA,mBAAa,UAAU,QAAQ,SAAU,SAAS,SAAS,iBAAiB;AAC1E,YAAI,OAAO,WAAW,UAAU;AAC9B,cAAI,QAAQ,SAAUe,MAAK;AAAE,mBAAO,kBAAkBA,KAAI,YAAY,IAAIA;AAAA,UAAK;AAC/E,cAAI,SAAS,KAAK,OAAO,OAAO,KAAK,KAAK,QAAQ,MAAM;AACxD,cAAI,MAAM,MAAM,KAAK,MAAM,OAAO,GAAG;AACnC,gBAAI,YAAY,OAAO;AAAE,mBAAK,OAAO,QAAQ;AAAA,YAAQ;AACrD,mBAAO;AAAA,UACT;AAAA,QACF,OAAO;AACL,cAAIjC,SAAQ,KAAK,OAAO,MAAM,KAAK,GAAG,EAAE,MAAM,OAAO;AACrD,cAAIA,UAASA,OAAM,QAAQ,GAAG;AAAE,mBAAO;AAAA,UAAK;AAC5C,cAAIA,UAAS,YAAY,OAAO;AAAE,iBAAK,OAAOA,OAAM,CAAC,EAAE;AAAA,UAAQ;AAC/D,iBAAOA;AAAA,QACT;AAAA,MACF;AACA,mBAAa,UAAU,UAAU,WAAW;AAAC,eAAO,KAAK,OAAO,MAAM,KAAK,OAAO,KAAK,GAAG;AAAA,MAAC;AAC3F,mBAAa,UAAU,iBAAiB,SAAU,GAAG,OAAO;AAC1D,aAAK,aAAa;AAClB,YAAI;AAAE,iBAAO,MAAM;AAAA,QAAE,UACrB;AAAU,eAAK,aAAa;AAAA,QAAG;AAAA,MACjC;AACA,mBAAa,UAAU,YAAY,SAAU,GAAG;AAC9C,YAAI,SAAS,KAAK;AAClB,eAAO,UAAU,OAAO,UAAU,CAAC;AAAA,MACrC;AACA,mBAAa,UAAU,YAAY,WAAY;AAC7C,YAAI,SAAS,KAAK;AAClB,eAAO,UAAU,OAAO,UAAU,KAAK,GAAG;AAAA,MAC5C;AAGA,eAASqE,SAAQ,KAAK,GAAG;AACvB,aAAK,IAAI;AACT,YAAI,IAAI,KAAK,KAAK,IAAI,MAAM;AAAE,gBAAM,IAAI,MAAM,uBAAuB,IAAI,IAAI,SAAS,mBAAmB;AAAA,QAAE;AAC3G,YAAI,QAAQ;AACZ,eAAO,CAAC,MAAM,OAAO;AACnB,mBAAShE,KAAI,KAAI,EAAEA,IAAG;AACpB,gBAAI,QAAQ,MAAM,SAASA,EAAC,GAAG,KAAK,MAAM,UAAU;AACpD,gBAAI,IAAI,IAAI;AAAE,sBAAQ;AAAO;AAAA,YAAM;AACnC,iBAAK;AAAA,UACP;AAAA,QACF;AACA,eAAO,MAAM,MAAM,CAAC;AAAA,MACtB;AAIA,eAASiE,YAAW,KAAK9D,QAAO,KAAK;AACnC,YAAI,MAAM,CAAC,GAAG,IAAIA,OAAM;AACxB,YAAI,KAAKA,OAAM,MAAM,IAAI,OAAO,GAAG,SAAU,MAAM;AACjD,cAAI+D,QAAO,KAAK;AAChB,cAAI,KAAK,IAAI,MAAM;AAAE,YAAAA,QAAOA,MAAK,MAAM,GAAG,IAAI,EAAE;AAAA,UAAG;AACnD,cAAI,KAAK/D,OAAM,MAAM;AAAE,YAAA+D,QAAOA,MAAK,MAAM/D,OAAM,EAAE;AAAA,UAAG;AACpD,cAAI,KAAK+D,KAAI;AACb,YAAE;AAAA,QACJ,CAAC;AACD,eAAO;AAAA,MACT;AAEA,eAAS,SAAS,KAAK,MAAM,IAAI;AAC/B,YAAI,MAAM,CAAC;AACX,YAAI,KAAK,MAAM,IAAI,SAAU,MAAM;AAAE,cAAI,KAAK,KAAK,IAAI;AAAA,QAAG,CAAC;AAC3D,eAAO;AAAA,MACT;AAIA,eAASC,kBAAiB,MAAM,QAAQ;AACtC,YAAI,OAAO,SAAS,KAAK;AACzB,YAAI,MAAM;AAAE,mBAAS,IAAI,MAAM,GAAG,IAAI,EAAE,QAAQ;AAAE,cAAE,UAAU;AAAA,UAAM;AAAA,QAAE;AAAA,MACxE;AAIA,eAASC,QAAO,MAAM;AACpB,YAAI,KAAK,UAAU,MAAM;AAAE,iBAAO;AAAA,QAAK;AACvC,YAAI,MAAM,KAAK,QAAQC,MAAKpD,SAAQ,IAAI,OAAO,IAAI;AACnD,iBAAS,QAAQ,IAAI,QAAQ,OAAO,MAAM,OAAO,QAAQ,MAAM,QAAQ;AACrE,mBAASjB,KAAI,KAAI,EAAEA,IAAG;AACpB,gBAAI,MAAM,SAASA,EAAC,KAAK,KAAK;AAAE;AAAA,YAAM;AACtC,YAAAqE,OAAM,MAAM,SAASrE,EAAC,EAAE,UAAU;AAAA,UACpC;AAAA,QACF;AACA,eAAOqE,MAAK,IAAI;AAAA,MAClB;AAIA,eAASC,cAAa,OAAO,GAAG;AAC9B,YAAI,IAAI,MAAM;AACd,cAAO,IAAG;AACR,mBAASpC,OAAM,GAAGA,OAAM,MAAM,SAAS,QAAQ,EAAEA,MAAK;AACpD,gBAAI,QAAQ,MAAM,SAASA,IAAG,GAAG,KAAK,MAAM;AAC5C,gBAAI,IAAI,IAAI;AAAE,sBAAQ;AAAO,uBAAS;AAAA,YAAM;AAC5C,iBAAK;AACL,iBAAK,MAAM,UAAU;AAAA,UACvB;AACA,iBAAO;AAAA,QACT,SAAS,CAAC,MAAM;AAChB,YAAIlC,KAAI;AACR,eAAOA,KAAI,MAAM,MAAM,QAAQ,EAAEA,IAAG;AAClC,cAAI,OAAO,MAAM,MAAMA,EAAC,GAAG,KAAK,KAAK;AACrC,cAAI,IAAI,IAAI;AAAE;AAAA,UAAM;AACpB,eAAK;AAAA,QACP;AACA,eAAO,IAAIA;AAAA,MACb;AAEA,eAASuE,QAAO,KAAK,GAAG;AAAC,eAAO,KAAK,IAAI,SAAS,IAAI,IAAI,QAAQ,IAAI;AAAA,MAAI;AAE1E,eAASC,eAAc,SAASxE,IAAG;AACjC,eAAO,OAAO,QAAQ,oBAAoBA,KAAI,QAAQ,eAAe,CAAC;AAAA,MACxE;AAGA,eAASyE,KAAI,MAAM,IAAI,QAAQ;AAC7B,YAAK,WAAW,OAAS,UAAS;AAElC,YAAI,EAAE,gBAAgBA,OAAM;AAAE,iBAAO,IAAIA,KAAI,MAAM,IAAI,MAAM;AAAA,QAAE;AAC/D,aAAK,OAAO;AACZ,aAAK,KAAK;AACV,aAAK,SAAS;AAAA,MAChB;AAIA,eAASC,KAAI,GAAG,GAAG;AAAE,eAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE;AAAA,MAAG;AAE3D,eAASC,gBAAe,GAAG,GAAG;AAAE,eAAO,EAAE,UAAU,EAAE,UAAUD,KAAI,GAAG,CAAC,KAAK;AAAA,MAAE;AAE9E,eAASE,SAAQ,GAAG;AAAC,eAAOH,KAAI,EAAE,MAAM,EAAE,EAAE;AAAA,MAAC;AAC7C,eAASI,QAAO,GAAG,GAAG;AAAE,eAAOH,KAAI,GAAG,CAAC,IAAI,IAAI,IAAI;AAAA,MAAE;AACrD,eAASI,QAAO,GAAG,GAAG;AAAE,eAAOJ,KAAI,GAAG,CAAC,IAAI,IAAI,IAAI;AAAA,MAAE;AAIrD,eAAS,SAAS,KAAK,GAAG;AAAC,eAAO,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI,GAAG,IAAI,QAAQ,IAAI,OAAO,CAAC,CAAC;AAAA,MAAC;AAC5F,eAASK,SAAQ,KAAK,KAAK;AACzB,YAAI,IAAI,OAAO,IAAI,OAAO;AAAE,iBAAON,KAAI,IAAI,OAAO,CAAC;AAAA,QAAE;AACrD,YAAI,OAAO,IAAI,QAAQ,IAAI,OAAO;AAClC,YAAI,IAAI,OAAO,MAAM;AAAE,iBAAOA,KAAI,MAAMT,SAAQ,KAAK,IAAI,EAAE,KAAK,MAAM;AAAA,QAAE;AACxE,eAAO,UAAU,KAAKA,SAAQ,KAAK,IAAI,IAAI,EAAE,KAAK,MAAM;AAAA,MAC1D;AACA,eAAS,UAAU,KAAK,SAAS;AAC/B,YAAI,KAAK,IAAI;AACb,YAAI,MAAM,QAAQ,KAAK,SAAS;AAAE,iBAAOS,KAAI,IAAI,MAAM,OAAO;AAAA,QAAE,WACvD,KAAK,GAAG;AAAE,iBAAOA,KAAI,IAAI,MAAM,CAAC;AAAA,QAAE,OACtC;AAAE,iBAAO;AAAA,QAAI;AAAA,MACpB;AACA,eAAS,aAAa,KAAKvD,QAAO;AAChC,YAAI,MAAM,CAAC;AACX,iBAASlB,KAAI,GAAGA,KAAIkB,OAAM,QAAQlB,MAAK;AAAE,cAAIA,EAAC,IAAI+E,SAAQ,KAAK7D,OAAMlB,EAAC,CAAC;AAAA,QAAG;AAC1E,eAAO;AAAA,MACT;AAEA,UAAI,eAAe,SAAS,OAAO,WAAW;AAC5C,aAAK,QAAQ;AACb,aAAK,YAAY;AAAA,MACnB;AAEA,UAAI,UAAU,SAAS,KAAK,OAAO,MAAM,WAAW;AAClD,aAAK,QAAQ;AACb,aAAK,MAAM;AACX,aAAK,OAAO;AACZ,aAAK,eAAe,aAAa;AACjC,aAAK,aAAa;AAClB,aAAK,eAAe;AAAA,MACtB;AAEA,cAAQ,UAAU,YAAY,SAAU,GAAG;AACzC,YAAI,OAAO,KAAK,IAAI,QAAQ,KAAK,OAAO,CAAC;AACzC,YAAI,QAAQ,QAAQ,IAAI,KAAK,cAAc;AAAE,eAAK,eAAe;AAAA,QAAG;AACpE,eAAO;AAAA,MACT;AAEA,cAAQ,UAAU,YAAY,SAAU,GAAG;AACzC,YAAI,CAAC,KAAK,YAAY;AAAE,iBAAO;AAAA,QAAK;AACpC,eAAO,KAAK,WAAW,KAAK,YAAY,KAAK,GAC3C;AAAE,eAAK,gBAAgB;AAAA,QAAG;AAC5B,YAAImC,QAAO,KAAK,WAAW,KAAK,eAAe,CAAC;AAChD,eAAO;AAAA,UAAC,MAAMA,SAAQA,MAAK,QAAQ,mBAAmB,EAAE;AAAA,UAChD,MAAM,KAAK,WAAW,KAAK,YAAY,IAAI;AAAA,QAAC;AAAA,MACtD;AAEA,cAAQ,UAAU,WAAW,WAAY;AACvC,aAAK;AACL,YAAI,KAAK,eAAe,GAAG;AAAE,eAAK;AAAA,QAAgB;AAAA,MACpD;AAEA,cAAQ,YAAY,SAAU,KAAK,OAAO,MAAM;AAC9C,YAAI,iBAAiB,cACnB;AAAE,iBAAO,IAAI,QAAQ,KAAK0B,WAAU,IAAI,MAAM,MAAM,KAAK,GAAG,MAAM,MAAM,SAAS;AAAA,QAAE,OAEnF;AAAE,iBAAO,IAAI,QAAQ,KAAKA,WAAU,IAAI,MAAM,KAAK,GAAG,IAAI;AAAA,QAAE;AAAA,MAChE;AAEA,cAAQ,UAAU,OAAO,SAAU,MAAM;AACvC,YAAI,QAAQ,SAAS,QAAQA,WAAU,KAAK,IAAI,MAAM,KAAK,KAAK,IAAI,KAAK;AACzE,eAAO,KAAK,eAAe,IAAI,IAAI,aAAa,OAAO,KAAK,YAAY,IAAI;AAAA,MAC9E;AAOA,eAASmB,eAAc,IAAI,MAAM,SAAS,YAAY;AAGpD,YAAI,KAAK,CAAC,GAAG,MAAM,OAAO,GAAG,cAAc,CAAC;AAE5C;AAAA,UAAQ;AAAA,UAAI,KAAK;AAAA,UAAM,GAAG,IAAI;AAAA,UAAM;AAAA,UAAS,SAAU,KAAKjF,QAAO;AAAE,mBAAO,GAAG,KAAK,KAAKA,MAAK;AAAA,UAAG;AAAA,UACzF;AAAA,UAAa;AAAA,QAAU;AAC/B,YAAI,QAAQ,QAAQ;AAGpB,YAAI,OAAO,SAAWkF,IAAI;AACxB,kBAAQ,aAAa;AACrB,cAAI,UAAU,GAAG,MAAM,SAASA,EAAC,GAAGjF,KAAI,GAAG,KAAK;AAChD,kBAAQ,QAAQ;AAChB,kBAAQ,IAAI,KAAK,MAAM,QAAQ,MAAM,SAAS,SAAU,KAAKD,QAAO;AAClE,gBAAII,SAAQH;AAEZ,mBAAO,KAAK,KAAK;AACf,kBAAI,QAAQ,GAAGA,EAAC;AAChB,kBAAI,QAAQ,KACV;AAAE,mBAAG,OAAOA,IAAG,GAAG,KAAK,GAAGA,KAAE,CAAC,GAAG,KAAK;AAAA,cAAG;AAC1C,cAAAA,MAAK;AACL,mBAAK,KAAK,IAAI,KAAK,KAAK;AAAA,YAC1B;AACA,gBAAI,CAACD,QAAO;AAAE;AAAA,YAAO;AACrB,gBAAI,QAAQ,QAAQ;AAClB,iBAAG,OAAOI,QAAOH,KAAIG,QAAO,KAAK,aAAaJ,MAAK;AACnD,cAAAC,KAAIG,SAAQ;AAAA,YACd,OAAO;AACL,qBAAOA,SAAQH,IAAGG,UAAS,GAAG;AAC5B,oBAAI,MAAM,GAAGA,SAAM,CAAC;AACpB,mBAAGA,SAAM,CAAC,KAAK,MAAM,MAAM,MAAM,MAAM,aAAaJ;AAAA,cACtD;AAAA,YACF;AAAA,UACF,GAAG,WAAW;AACd,kBAAQ,QAAQ;AAChB,kBAAQ,aAAa;AACrB,kBAAQ,eAAe;AAAA,QACzB;AAEA,iBAAS,IAAI,GAAG,IAAI,GAAG,MAAM,SAAS,QAAQ,EAAE,EAAG,MAAM,CAAE;AAE3D,eAAO,EAAC,QAAQ,IAAI,SAAS,YAAY,WAAW,YAAY,YAAY,cAAc,KAAI;AAAA,MAChG;AAEA,eAASmF,eAAc,IAAI,MAAM,gBAAgB;AAC/C,YAAI,CAAC,KAAK,UAAU,KAAK,OAAO,CAAC,KAAK,GAAG,MAAM,SAAS;AACtD,cAAI,UAAUC,kBAAiB,IAAIf,QAAO,IAAI,CAAC;AAC/C,cAAI,aAAa,KAAK,KAAK,SAAS,GAAG,QAAQ,sBAAsBP,WAAU,GAAG,IAAI,MAAM,QAAQ,KAAK;AACzG,cAAI,SAASmB,eAAc,IAAI,MAAM,OAAO;AAC5C,cAAI,YAAY;AAAE,oBAAQ,QAAQ;AAAA,UAAY;AAC9C,eAAK,aAAa,QAAQ,KAAK,CAAC,UAAU;AAC1C,eAAK,SAAS,OAAO;AACrB,cAAI,OAAO,SAAS;AAAE,iBAAK,eAAe,OAAO;AAAA,UAAS,WACjD,KAAK,cAAc;AAAE,iBAAK,eAAe;AAAA,UAAM;AACxD,cAAI,mBAAmB,GAAG,IAAI,mBAC5B;AAAE,eAAG,IAAI,eAAe,KAAK,IAAI,GAAG,IAAI,cAAc,EAAE,GAAG,IAAI,iBAAiB;AAAA,UAAG;AAAA,QACvF;AACA,eAAO,KAAK;AAAA,MACd;AAEA,eAASG,kBAAiB,IAAI,GAAG,SAAS;AACxC,YAAI,MAAM,GAAG,KAAK,UAAU,GAAG;AAC/B,YAAI,CAAC,IAAI,KAAK,YAAY;AAAE,iBAAO,IAAI,QAAQ,KAAK,MAAM,CAAC;AAAA,QAAE;AAC7D,YAAIhF,SAAQ,cAAc,IAAI,GAAG,OAAO;AACxC,YAAI,QAAQA,SAAQ,IAAI,SAAS6D,SAAQ,KAAK7D,SAAQ,CAAC,EAAE;AACzD,YAAI,UAAU,QAAQ,QAAQ,UAAU,KAAK,OAAOA,MAAK,IAAI,IAAI,QAAQ,KAAK4D,YAAW,IAAI,IAAI,GAAG5D,MAAK;AAEzG,YAAI,KAAKA,QAAO,GAAG,SAAU,MAAM;AACjC,UAAAiF,aAAY,IAAI,KAAK,MAAM,OAAO;AAClC,cAAI,MAAM,QAAQ;AAClB,eAAK,aAAa,OAAO,IAAI,KAAK,MAAM,KAAK,KAAK,OAAO,QAAQ,YAAY,MAAM,QAAQ,SAAS,QAAQ,KAAK,IAAI;AACrH,kBAAQ,SAAS;AAAA,QACnB,CAAC;AACD,YAAI,SAAS;AAAE,cAAI,eAAe,QAAQ;AAAA,QAAM;AAChD,eAAO;AAAA,MACT;AAKA,eAASA,aAAY,IAAIlB,OAAM,SAAS,SAAS;AAC/C,YAAI,OAAO,GAAG,IAAI;AAClB,YAAI,SAAS,IAAI,aAAaA,OAAM,GAAG,QAAQ,SAAS,OAAO;AAC/D,eAAO,QAAQ,OAAO,MAAM,WAAW;AACvC,YAAIA,SAAQ,IAAI;AAAE,wBAAc,MAAM,QAAQ,KAAK;AAAA,QAAG;AACtD,eAAO,CAAC,OAAO,IAAI,GAAG;AACpB,oBAAU,MAAM,QAAQ,QAAQ,KAAK;AACrC,iBAAO,QAAQ,OAAO;AAAA,QACxB;AAAA,MACF;AAEA,eAAS,cAAc,MAAM,OAAO;AAClC,YAAI,KAAK,WAAW;AAAE,iBAAO,KAAK,UAAU,KAAK;AAAA,QAAE;AACnD,YAAI,CAAC,KAAK,WAAW;AAAE;AAAA,QAAO;AAC9B,YAAI,QAAQJ,WAAU,MAAM,KAAK;AACjC,YAAI,MAAM,KAAK,WAAW;AAAE,iBAAO,MAAM,KAAK,UAAU,MAAM,KAAK;AAAA,QAAE;AAAA,MACvE;AAEA,eAAS,UAAU,MAAM,QAAQ,OAAO,OAAO;AAC7C,iBAAS9D,KAAI,GAAGA,KAAI,IAAIA,MAAK;AAC3B,cAAI,OAAO;AAAE,kBAAM,CAAC,IAAI8D,WAAU,MAAM,KAAK,EAAE;AAAA,UAAM;AACrD,cAAI/D,SAAQ,KAAK,MAAM,QAAQ,KAAK;AACpC,cAAI,OAAO,MAAM,OAAO,OAAO;AAAE,mBAAOA;AAAA,UAAM;AAAA,QAChD;AACA,cAAM,IAAI,MAAM,UAAU,KAAK,OAAO,4BAA4B;AAAA,MACpE;AAEA,UAAI,QAAQ,SAAS,QAAQoC,OAAM,OAAO;AACxC,aAAK,QAAQ,OAAO;AAAO,aAAK,MAAM,OAAO;AAC7C,aAAK,SAAS,OAAO,QAAQ;AAC7B,aAAK,OAAOA,SAAQ;AACpB,aAAK,QAAQ;AAAA,MACf;AAGA,eAAS,UAAU,IAAI,KAAK,SAAS,SAAS;AAC5C,YAAI,MAAM,GAAG,KAAK,OAAO,IAAI,MAAMpC;AACnC,cAAMgF,SAAQ,KAAK,GAAG;AACtB,YAAI,OAAOf,SAAQ,KAAK,IAAI,IAAI,GAAG,UAAUmB,kBAAiB,IAAI,IAAI,MAAM,OAAO;AACnF,YAAI,SAAS,IAAI,aAAa,KAAK,MAAM,GAAG,QAAQ,SAAS,OAAO,GAAG;AACvE,YAAI,SAAS;AAAE,mBAAS,CAAC;AAAA,QAAG;AAC5B,gBAAQ,WAAW,OAAO,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,GAAG;AACxD,iBAAO,QAAQ,OAAO;AACtB,UAAApF,SAAQ,UAAU,MAAM,QAAQ,QAAQ,KAAK;AAC7C,cAAI,SAAS;AAAE,mBAAO,KAAK,IAAI,MAAM,QAAQA,QAAO8D,WAAU,IAAI,MAAM,QAAQ,KAAK,CAAC,CAAC;AAAA,UAAG;AAAA,QAC5F;AACA,eAAO,UAAU,SAAS,IAAI,MAAM,QAAQ9D,QAAO,QAAQ,KAAK;AAAA,MAClE;AAEA,eAAS,mBAAmBoC,OAAM,QAAQ;AACxC,YAAIA,OAAM;AAAE,qBAAS;AACnB,gBAAI,YAAYA,MAAK,MAAM,mCAAmC;AAC9D,gBAAI,CAAC,WAAW;AAAE;AAAA,YAAM;AACxB,YAAAA,QAAOA,MAAK,MAAM,GAAG,UAAU,KAAK,IAAIA,MAAK,MAAM,UAAU,QAAQ,UAAU,CAAC,EAAE,MAAM;AACxF,gBAAIvB,QAAO,UAAU,CAAC,IAAI,YAAY;AACtC,gBAAI,OAAOA,KAAI,KAAK,MAClB;AAAE,qBAAOA,KAAI,IAAI,UAAU,CAAC;AAAA,YAAG,WACxB,CAAE,IAAI,OAAO,cAAc,UAAU,CAAC,IAAI,WAAW,EAAG,KAAK,OAAOA,KAAI,CAAC,GAChF;AAAE,qBAAOA,KAAI,KAAK,MAAM,UAAU,CAAC;AAAA,YAAG;AAAA,UAC1C;AAAA,QAAE;AACF,eAAOuB;AAAA,MACT;AAGA,eAAS,QAAQ,IAAI+B,OAAM,MAAM,SAAS,GAAG,aAAa,YAAY;AACpE,YAAI,eAAe,KAAK;AACxB,YAAI,gBAAgB,MAAM;AAAE,yBAAe,GAAG,QAAQ;AAAA,QAAc;AACpE,YAAI,WAAW,GAAG,WAAW;AAC7B,YAAI,SAAS,IAAI,aAAaA,OAAM,GAAG,QAAQ,SAAS,OAAO,GAAGnE;AAClE,YAAI,QAAQ,GAAG,QAAQ,gBAAgB,CAAC,IAAI;AAC5C,YAAImE,SAAQ,IAAI;AAAE,6BAAmB,cAAc,MAAM,QAAQ,KAAK,GAAG,WAAW;AAAA,QAAG;AACvF,eAAO,CAAC,OAAO,IAAI,GAAG;AACpB,cAAI,OAAO,MAAM,GAAG,QAAQ,oBAAoB;AAC9C,2BAAe;AACf,gBAAI,YAAY;AAAE,cAAAkB,aAAY,IAAIlB,OAAM,SAAS,OAAO,GAAG;AAAA,YAAG;AAC9D,mBAAO,MAAMA,MAAK;AAClB,YAAAnE,SAAQ;AAAA,UACV,OAAO;AACL,YAAAA,SAAQ,mBAAmB,UAAU,MAAM,QAAQ,QAAQ,OAAO,KAAK,GAAG,WAAW;AAAA,UACvF;AACA,cAAI,OAAO;AACT,gBAAI,QAAQ,MAAM,CAAC,EAAE;AACrB,gBAAI,OAAO;AAAE,cAAAA,SAAQ,QAAQA,SAAQ,QAAQ,MAAMA,SAAQ;AAAA,YAAQ;AAAA,UACrE;AACA,cAAI,CAAC,gBAAgB,YAAYA,QAAO;AACtC,mBAAO,WAAW,OAAO,OAAO;AAC9B,yBAAW,KAAK,IAAI,OAAO,OAAO,WAAW,GAAI;AACjD,gBAAE,UAAU,QAAQ;AAAA,YACtB;AACA,uBAAWA;AAAA,UACb;AACA,iBAAO,QAAQ,OAAO;AAAA,QACxB;AACA,eAAO,WAAW,OAAO,KAAK;AAI5B,cAAI,MAAM,KAAK,IAAI,OAAO,KAAK,WAAW,GAAI;AAC9C,YAAE,KAAK,QAAQ;AACf,qBAAW;AAAA,QACb;AAAA,MACF;AAOA,eAAS,cAAc,IAAI,GAAG,SAAS;AACrC,YAAI,WAAW,SAAS,MAAM,GAAG;AACjC,YAAI,MAAM,UAAU,KAAK,KAAK,GAAG,IAAI,KAAK,YAAY,MAAO;AAC7D,iBAAS,SAAS,GAAG,SAAS,KAAK,EAAE,QAAQ;AAC3C,cAAI,UAAU,IAAI,OAAO;AAAE,mBAAO,IAAI;AAAA,UAAM;AAC5C,cAAI,OAAOiE,SAAQ,KAAK,SAAS,CAAC,GAAG,QAAQ,KAAK;AAClD,cAAI,UAAU,CAAC,WAAW,UAAU,iBAAiB,eAAe,MAAM,YAAY,MAAM,IAAI,eAC9F;AAAE,mBAAO;AAAA,UAAO;AAClB,cAAI,WAAWnD,aAAY,KAAK,MAAM,MAAM,GAAG,QAAQ,OAAO;AAC9D,cAAI,WAAW,QAAQ,YAAY,UAAU;AAC3C,sBAAU,SAAS;AACnB,wBAAY;AAAA,UACd;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,eAAS,gBAAgB,KAAK,GAAG;AAC/B,YAAI,eAAe,KAAK,IAAI,IAAI,cAAc,CAAC;AAC/C,YAAI,IAAI,oBAAoB,IAAI,IAAI;AAAE;AAAA,QAAO;AAC7C,YAAIV,SAAQ,IAAI;AAChB,iBAAS,OAAO,IAAI,GAAG,OAAOA,QAAO,QAAQ;AAC3C,cAAI,QAAQ6D,SAAQ,KAAK,IAAI,EAAE;AAI/B,cAAI,UAAU,EAAE,iBAAiB,iBAAiB,OAAO,MAAM,YAAY,IAAI;AAC7E,YAAA7D,SAAQ,OAAO;AACf;AAAA,UACF;AAAA,QACF;AACA,YAAI,oBAAoB,KAAK,IAAI,IAAI,mBAAmBA,MAAK;AAAA,MAC/D;AAGA,UAAI,mBAAmB,OAAOkF,qBAAoB;AAElD,eAAS,mBAAmB;AAC1B,2BAAmB;AAAA,MACrB;AAEA,eAAS,oBAAoB;AAC3B,QAAAA,qBAAoB;AAAA,MACtB;AAIA,eAAS,WAAW,QAAQ,MAAM,IAAI;AACpC,aAAK,SAAS;AACd,aAAK,OAAO;AAAM,aAAK,KAAK;AAAA,MAC9B;AAGA,eAAS,iBAAiB,OAAO,QAAQ;AACvC,YAAI,OAAO;AAAE,mBAASrF,KAAI,GAAGA,KAAI,MAAM,QAAQ,EAAEA,IAAG;AAClD,gBAAI,OAAO,MAAMA,EAAC;AAClB,gBAAI,KAAK,UAAU,QAAQ;AAAE,qBAAO;AAAA,YAAK;AAAA,UAC3C;AAAA,QAAE;AAAA,MACJ;AAGA,eAAS,iBAAiB,OAAO,MAAM;AACrC,YAAI;AACJ,iBAASA,KAAI,GAAGA,KAAI,MAAM,QAAQ,EAAEA,IAClC;AAAE,cAAI,MAAMA,EAAC,KAAK,MAAM;AAAE,aAAC,MAAM,IAAI,CAAC,IAAI,KAAK,MAAMA,EAAC,CAAC;AAAA,UAAG;AAAA,QAAE;AAC9D,eAAO;AAAA,MACT;AAEA,eAAS,cAAc,MAAM,MAAM;AACjC,aAAK,cAAc,KAAK,cAAc,KAAK,YAAY,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AAC7E,aAAK,OAAO,WAAW,IAAI;AAAA,MAC7B;AAMA,eAAS,kBAAkB,KAAK,SAAS,UAAU;AACjD,YAAI;AACJ,YAAI,KAAK;AAAE,mBAASA,KAAI,GAAGA,KAAI,IAAI,QAAQ,EAAEA,IAAG;AAC9C,gBAAI,OAAO,IAAIA,EAAC,GAAG,SAAS,KAAK;AACjC,gBAAI,eAAe,KAAK,QAAQ,SAAS,OAAO,gBAAgB,KAAK,QAAQ,UAAU,KAAK,OAAO;AACnG,gBAAI,gBAAgB,KAAK,QAAQ,WAAW,OAAO,QAAQ,eAAe,CAAC,YAAY,CAAC,KAAK,OAAO,aAAa;AAC/G,kBAAI,YAAY,KAAK,MAAM,SAAS,OAAO,iBAAiB,KAAK,MAAM,UAAU,KAAK,KAAK;AAC1F,eAAC,OAAO,KAAK,CAAC,IAAI,KAAK,IAAI,WAAW,QAAQ,KAAK,MAAM,YAAY,OAAO,KAAK,EAAE,CAAC;AAAA,YACvF;AAAA,UACF;AAAA,QAAE;AACF,eAAO;AAAA,MACT;AACA,eAAS,iBAAiB,KAAK,OAAO,UAAU;AAC9C,YAAI;AACJ,YAAI,KAAK;AAAE,mBAASA,KAAI,GAAGA,KAAI,IAAI,QAAQ,EAAEA,IAAG;AAC9C,gBAAI,OAAO,IAAIA,EAAC,GAAG,SAAS,KAAK;AACjC,gBAAI,YAAY,KAAK,MAAM,SAAS,OAAO,iBAAiB,KAAK,MAAM,QAAQ,KAAK,KAAK;AACzF,gBAAI,aAAa,KAAK,QAAQ,SAAS,OAAO,QAAQ,eAAe,CAAC,YAAY,KAAK,OAAO,aAAa;AACzG,kBAAI,eAAe,KAAK,QAAQ,SAAS,OAAO,gBAAgB,KAAK,QAAQ,QAAQ,KAAK,OAAO;AAChG,eAAC,OAAO,KAAK,CAAC,IAAI,KAAK,IAAI;AAAA,gBAAW;AAAA,gBAAQ,eAAe,OAAO,KAAK,OAAO;AAAA,gBAC3C,KAAK,MAAM,OAAO,OAAO,KAAK,KAAK;AAAA,cAAK,CAAC;AAAA,YACjF;AAAA,UACF;AAAA,QAAE;AACF,eAAO;AAAA,MACT;AAQA,eAASsF,wBAAuB,KAAK,QAAQ;AAC3C,YAAI,OAAO,MAAM;AAAE,iBAAO;AAAA,QAAK;AAC/B,YAAI,WAAWf,QAAO,KAAK,OAAO,KAAK,IAAI,KAAKP,SAAQ,KAAK,OAAO,KAAK,IAAI,EAAE;AAC/E,YAAI,UAAUO,QAAO,KAAK,OAAO,GAAG,IAAI,KAAKP,SAAQ,KAAK,OAAO,GAAG,IAAI,EAAE;AAC1E,YAAI,CAAC,YAAY,CAAC,SAAS;AAAE,iBAAO;AAAA,QAAK;AAEzC,YAAI,UAAU,OAAO,KAAK,IAAI,QAAQ,OAAO,GAAG,IAAI,WAAWU,KAAI,OAAO,MAAM,OAAO,EAAE,KAAK;AAE9F,YAAI,QAAQ,kBAAkB,UAAU,SAAS,QAAQ;AACzD,YAAI,OAAO,iBAAiB,SAAS,OAAO,QAAQ;AAGpD,YAAI,WAAW,OAAO,KAAK,UAAU,GAAG,SAASpD,KAAI,OAAO,IAAI,EAAE,UAAU,WAAW,UAAU;AACjG,YAAI,OAAO;AAET,mBAAStB,KAAI,GAAGA,KAAI,MAAM,QAAQ,EAAEA,IAAG;AACrC,gBAAI,OAAO,MAAMA,EAAC;AAClB,gBAAI,KAAK,MAAM,MAAM;AACnB,kBAAI,QAAQ,iBAAiB,MAAM,KAAK,MAAM;AAC9C,kBAAI,CAAC,OAAO;AAAE,qBAAK,KAAK;AAAA,cAAS,WACxB,UAAU;AAAE,qBAAK,KAAK,MAAM,MAAM,OAAO,OAAO,MAAM,KAAK;AAAA,cAAQ;AAAA,YAC9E;AAAA,UACF;AAAA,QACF;AACA,YAAI,MAAM;AAER,mBAASkC,OAAM,GAAGA,OAAM,KAAK,QAAQ,EAAEA,MAAK;AAC1C,gBAAI,SAAS,KAAKA,IAAG;AACrB,gBAAI,OAAO,MAAM,MAAM;AAAE,qBAAO,MAAM;AAAA,YAAQ;AAC9C,gBAAI,OAAO,QAAQ,MAAM;AACvB,kBAAI,UAAU,iBAAiB,OAAO,OAAO,MAAM;AACnD,kBAAI,CAAC,SAAS;AACZ,uBAAO,OAAO;AACd,oBAAI,UAAU;AAAE,mBAAC,UAAU,QAAQ,CAAC,IAAI,KAAK,MAAM;AAAA,gBAAG;AAAA,cACxD;AAAA,YACF,OAAO;AACL,qBAAO,QAAQ;AACf,kBAAI,UAAU;AAAE,iBAAC,UAAU,QAAQ,CAAC,IAAI,KAAK,MAAM;AAAA,cAAG;AAAA,YACxD;AAAA,UACF;AAAA,QACF;AAEA,YAAI,OAAO;AAAE,kBAAQ,gBAAgB,KAAK;AAAA,QAAG;AAC7C,YAAI,QAAQ,QAAQ,OAAO;AAAE,iBAAO,gBAAgB,IAAI;AAAA,QAAG;AAE3D,YAAI,aAAa,CAAC,KAAK;AACvB,YAAI,CAAC,UAAU;AAEb,cAAI,MAAM,OAAO,KAAK,SAAS,GAAG;AAClC,cAAI,MAAM,KAAK,OACb;AAAE,qBAASE,OAAM,GAAGA,OAAM,MAAM,QAAQ,EAAEA,MACxC;AAAE,kBAAI,MAAMA,IAAG,EAAE,MAAM,MACrB;AAAE,iBAAC,eAAe,aAAa,CAAC,IAAI,KAAK,IAAI,WAAW,MAAMA,IAAG,EAAE,QAAQ,MAAM,IAAI,CAAC;AAAA,cAAG;AAAA,YAAE;AAAA,UAAE;AACnG,mBAAS,MAAM,GAAG,MAAM,KAAK,EAAE,KAC7B;AAAE,uBAAW,KAAK,UAAU;AAAA,UAAG;AACjC,qBAAW,KAAK,IAAI;AAAA,QACtB;AACA,eAAO;AAAA,MACT;AAIA,eAAS,gBAAgB,OAAO;AAC9B,iBAASpC,KAAI,GAAGA,KAAI,MAAM,QAAQ,EAAEA,IAAG;AACrC,cAAI,OAAO,MAAMA,EAAC;AAClB,cAAI,KAAK,QAAQ,QAAQ,KAAK,QAAQ,KAAK,MAAM,KAAK,OAAO,mBAAmB,OAC9E;AAAE,kBAAM,OAAOA,MAAK,CAAC;AAAA,UAAG;AAAA,QAC5B;AACA,YAAI,CAAC,MAAM,QAAQ;AAAE,iBAAO;AAAA,QAAK;AACjC,eAAO;AAAA,MACT;AAGA,eAAS,qBAAqB,KAAK,MAAM,IAAI;AAC3C,YAAI,UAAU;AACd,YAAI,KAAK,KAAK,MAAM,GAAG,OAAO,GAAG,SAAU,MAAM;AAC/C,cAAI,KAAK,aAAa;AAAE,qBAASA,KAAI,GAAGA,KAAI,KAAK,YAAY,QAAQ,EAAEA,IAAG;AACxE,kBAAI,OAAO,KAAK,YAAYA,EAAC,EAAE;AAC/B,kBAAI,KAAK,aAAa,CAAC,WAAWiB,SAAQ,SAAS,IAAI,KAAK,KAC1D;AAAE,iBAAC,YAAY,UAAU,CAAC,IAAI,KAAK,IAAI;AAAA,cAAG;AAAA,YAC9C;AAAA,UAAE;AAAA,QACJ,CAAC;AACD,YAAI,CAAC,SAAS;AAAE,iBAAO;AAAA,QAAK;AAC5B,YAAI,QAAQ,CAAC,EAAC,MAAY,GAAM,CAAC;AACjC,iBAASjB,KAAI,GAAGA,KAAI,QAAQ,QAAQ,EAAEA,IAAG;AACvC,cAAI,KAAK,QAAQA,EAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAClC,mBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,EAAE,GAAG;AACrC,gBAAI,IAAI,MAAM,CAAC;AACf,gBAAI0E,KAAI,EAAE,IAAI,EAAE,IAAI,IAAI,KAAKA,KAAI,EAAE,MAAM,EAAE,EAAE,IAAI,GAAG;AAAE;AAAA,YAAS;AAC/D,gBAAI,WAAW,CAAC,GAAG,CAAC,GAAG,QAAQA,KAAI,EAAE,MAAM,EAAE,IAAI,GAAG,MAAMA,KAAI,EAAE,IAAI,EAAE,EAAE;AACxE,gBAAI,QAAQ,KAAK,CAAC,GAAG,iBAAiB,CAAC,OACrC;AAAE,uBAAS,KAAK,EAAC,MAAM,EAAE,MAAM,IAAI,EAAE,KAAI,CAAC;AAAA,YAAG;AAC/C,gBAAI,MAAM,KAAK,CAAC,GAAG,kBAAkB,CAAC,KACpC;AAAE,uBAAS,KAAK,EAAC,MAAM,EAAE,IAAI,IAAI,EAAE,GAAE,CAAC;AAAA,YAAG;AAC3C,kBAAM,OAAO,MAAM,OAAO,QAAQ;AAClC,iBAAK,SAAS,SAAS;AAAA,UACzB;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAGA,eAASa,mBAAkB,MAAM;AAC/B,YAAI,QAAQ,KAAK;AACjB,YAAI,CAAC,OAAO;AAAE;AAAA,QAAO;AACrB,iBAASvF,KAAI,GAAGA,KAAI,MAAM,QAAQ,EAAEA,IAClC;AAAE,gBAAMA,EAAC,EAAE,OAAO,WAAW,IAAI;AAAA,QAAG;AACtC,aAAK,cAAc;AAAA,MACrB;AACA,eAASwF,mBAAkB,MAAM,OAAO;AACtC,YAAI,CAAC,OAAO;AAAE;AAAA,QAAO;AACrB,iBAASxF,KAAI,GAAGA,KAAI,MAAM,QAAQ,EAAEA,IAClC;AAAE,gBAAMA,EAAC,EAAE,OAAO,WAAW,IAAI;AAAA,QAAG;AACtC,aAAK,cAAc;AAAA,MACrB;AAIA,eAAS,UAAU,QAAQ;AAAE,eAAO,OAAO,gBAAgB,KAAK;AAAA,MAAE;AAClE,eAAS,WAAW,QAAQ;AAAE,eAAO,OAAO,iBAAiB,IAAI;AAAA,MAAE;AAKnE,eAASyF,yBAAwB,GAAG,GAAG;AACrC,YAAI,UAAU,EAAE,MAAM,SAAS,EAAE,MAAM;AACvC,YAAI,WAAW,GAAG;AAAE,iBAAO;AAAA,QAAQ;AACnC,YAAI,OAAO,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK;AACnC,YAAI,UAAUf,KAAI,KAAK,MAAM,KAAK,IAAI,KAAK,UAAU,CAAC,IAAI,UAAU,CAAC;AACrE,YAAI,SAAS;AAAE,iBAAO,CAAC;AAAA,QAAQ;AAC/B,YAAI,QAAQA,KAAI,KAAK,IAAI,KAAK,EAAE,KAAK,WAAW,CAAC,IAAI,WAAW,CAAC;AACjE,YAAI,OAAO;AAAE,iBAAO;AAAA,QAAM;AAC1B,eAAO,EAAE,KAAK,EAAE;AAAA,MAClB;AAIA,eAAS,oBAAoB,MAAMvE,QAAO;AACxC,YAAI,MAAMkF,sBAAqB,KAAK,aAAa;AACjD,YAAI,KAAK;AAAE,mBAAS,KAAM,QAASrF,KAAI,GAAGA,KAAI,IAAI,QAAQ,EAAEA,IAAG;AAC7D,iBAAK,IAAIA,EAAC;AACV,gBAAI,GAAG,OAAO,cAAcG,SAAQ,GAAG,OAAO,GAAG,OAAO,SACnD,CAAC,SAASsF,yBAAwB,OAAO,GAAG,MAAM,IAAI,IACzD;AAAE,sBAAQ,GAAG;AAAA,YAAQ;AAAA,UACzB;AAAA,QAAE;AACF,eAAO;AAAA,MACT;AACA,eAAS,qBAAqB,MAAM;AAAE,eAAO,oBAAoB,MAAM,IAAI;AAAA,MAAE;AAC7E,eAAS,mBAAmB,MAAM;AAAE,eAAO,oBAAoB,MAAM,KAAK;AAAA,MAAE;AAE5E,eAASC,qBAAoB,MAAM,IAAI;AACrC,YAAI,MAAML,sBAAqB,KAAK,aAAa;AACjD,YAAI,KAAK;AAAE,mBAASrF,KAAI,GAAGA,KAAI,IAAI,QAAQ,EAAEA,IAAG;AAC9C,gBAAI,KAAK,IAAIA,EAAC;AACd,gBAAI,GAAG,OAAO,cAAc,GAAG,QAAQ,QAAQ,GAAG,OAAO,QAAQ,GAAG,MAAM,QAAQ,GAAG,KAAK,QACrF,CAAC,SAASyF,yBAAwB,OAAO,GAAG,MAAM,IAAI,IAAI;AAAE,sBAAQ,GAAG;AAAA,YAAQ;AAAA,UACtF;AAAA,QAAE;AACF,eAAO;AAAA,MACT;AAKA,eAAS,0BAA0B,KAAKrB,SAAQ,MAAM,IAAI,QAAQ;AAChE,YAAI,OAAOJ,SAAQ,KAAKI,OAAM;AAC9B,YAAI,MAAMiB,sBAAqB,KAAK;AACpC,YAAI,KAAK;AAAE,mBAASrF,KAAI,GAAGA,KAAI,IAAI,QAAQ,EAAEA,IAAG;AAC9C,gBAAI,KAAK,IAAIA,EAAC;AACd,gBAAI,CAAC,GAAG,OAAO,WAAW;AAAE;AAAA,YAAS;AACrC,gBAAI,QAAQ,GAAG,OAAO,KAAK,CAAC;AAC5B,gBAAI,UAAU0E,KAAI,MAAM,MAAM,IAAI,KAAK,UAAU,GAAG,MAAM,IAAI,UAAU,MAAM;AAC9E,gBAAI,QAAQA,KAAI,MAAM,IAAI,EAAE,KAAK,WAAW,GAAG,MAAM,IAAI,WAAW,MAAM;AAC1E,gBAAI,WAAW,KAAK,SAAS,KAAK,WAAW,KAAK,SAAS,GAAG;AAAE;AAAA,YAAS;AACzE,gBAAI,WAAW,MAAM,GAAG,OAAO,kBAAkB,OAAO,gBAAgBA,KAAI,MAAM,IAAI,IAAI,KAAK,IAAIA,KAAI,MAAM,IAAI,IAAI,IAAI,MACrH,WAAW,MAAM,GAAG,OAAO,kBAAkB,OAAO,gBAAgBA,KAAI,MAAM,MAAM,EAAE,KAAK,IAAIA,KAAI,MAAM,MAAM,EAAE,IAAI,IACvH;AAAE,qBAAO;AAAA,YAAK;AAAA,UAClB;AAAA,QAAE;AAAA,MACJ;AAMA,eAASiB,YAAW,MAAM;AACxB,YAAI;AACJ,eAAO,SAAS,qBAAqB,IAAI,GACvC;AAAE,iBAAO,OAAO,KAAK,IAAI,IAAI,EAAE;AAAA,QAAM;AACvC,eAAO;AAAA,MACT;AAEA,eAAS,cAAc,MAAM;AAC3B,YAAI;AACJ,eAAO,SAAS,mBAAmB,IAAI,GACrC;AAAE,iBAAO,OAAO,KAAK,GAAG,IAAI,EAAE;AAAA,QAAM;AACtC,eAAO;AAAA,MACT;AAIA,eAASC,qBAAoB,MAAM;AACjC,YAAI,QAAQ;AACZ,eAAO,SAAS,mBAAmB,IAAI,GAAG;AACxC,iBAAO,OAAO,KAAK,GAAG,IAAI,EAAE;AAC3B,WAAC,UAAU,QAAQ,CAAC,IAAI,KAAK,IAAI;AAAA,QACpC;AACA,eAAO;AAAA,MACT;AAIA,eAASC,cAAa,KAAK,OAAO;AAChC,YAAI,OAAO7B,SAAQ,KAAK,KAAK,GAAG,MAAM2B,YAAW,IAAI;AACrD,YAAI,QAAQ,KAAK;AAAE,iBAAO;AAAA,QAAM;AAChC,eAAOvB,QAAO,GAAG;AAAA,MACnB;AAIA,eAAS0B,iBAAgB,KAAK,OAAO;AACnC,YAAI,QAAQ,IAAI,SAAS,GAAG;AAAE,iBAAO;AAAA,QAAM;AAC3C,YAAI,OAAO9B,SAAQ,KAAK,KAAK,GAAG;AAChC,YAAI,CAAC+B,cAAa,KAAK,IAAI,GAAG;AAAE,iBAAO;AAAA,QAAM;AAC7C,eAAO,SAAS,mBAAmB,IAAI,GACrC;AAAE,iBAAO,OAAO,KAAK,GAAG,IAAI,EAAE;AAAA,QAAM;AACtC,eAAO3B,QAAO,IAAI,IAAI;AAAA,MACxB;AAKA,eAAS2B,cAAa,KAAK,MAAM;AAC/B,YAAI,MAAMV,sBAAqB,KAAK;AACpC,YAAI,KAAK;AAAE,mBAAS,KAAM,QAASrF,KAAI,GAAGA,KAAI,IAAI,QAAQ,EAAEA,IAAG;AAC7D,iBAAK,IAAIA,EAAC;AACV,gBAAI,CAAC,GAAG,OAAO,WAAW;AAAE;AAAA,YAAS;AACrC,gBAAI,GAAG,QAAQ,MAAM;AAAE,qBAAO;AAAA,YAAK;AACnC,gBAAI,GAAG,OAAO,YAAY;AAAE;AAAA,YAAS;AACrC,gBAAI,GAAG,QAAQ,KAAK,GAAG,OAAO,iBAAiB,kBAAkB,KAAK,MAAM,EAAE,GAC5E;AAAE,qBAAO;AAAA,YAAK;AAAA,UAClB;AAAA,QAAE;AAAA,MACJ;AACA,eAAS,kBAAkB,KAAK,MAAM,MAAM;AAC1C,YAAI,KAAK,MAAM,MAAM;AACnB,cAAI,MAAM,KAAK,OAAO,KAAK,GAAG,IAAI;AAClC,iBAAO,kBAAkB,KAAK,IAAI,MAAM,iBAAiB,IAAI,KAAK,aAAa,KAAK,MAAM,CAAC;AAAA,QAC7F;AACA,YAAI,KAAK,OAAO,kBAAkB,KAAK,MAAM,KAAK,KAAK,QACrD;AAAE,iBAAO;AAAA,QAAK;AAChB,iBAAS,KAAM,QAASA,KAAI,GAAGA,KAAI,KAAK,YAAY,QAAQ,EAAEA,IAAG;AAC/D,eAAK,KAAK,YAAYA,EAAC;AACvB,cAAI,GAAG,OAAO,aAAa,CAAC,GAAG,OAAO,cAAc,GAAG,QAAQ,KAAK,OAC/D,GAAG,MAAM,QAAQ,GAAG,MAAM,KAAK,UAC/B,GAAG,OAAO,iBAAiB,KAAK,OAAO,mBACxC,kBAAkB,KAAK,MAAM,EAAE,GAAG;AAAE,mBAAO;AAAA,UAAK;AAAA,QACtD;AAAA,MACF;AAGA,eAASgG,cAAa,SAAS;AAC7B,kBAAUL,YAAW,OAAO;AAE5B,YAAI,IAAI,GAAG,QAAQ,QAAQ;AAC3B,iBAAS3F,KAAI,GAAGA,KAAI,MAAM,MAAM,QAAQ,EAAEA,IAAG;AAC3C,cAAI,OAAO,MAAM,MAAMA,EAAC;AACxB,cAAI,QAAQ,SAAS;AAAE;AAAA,UAAM,OACxB;AAAE,iBAAK,KAAK;AAAA,UAAQ;AAAA,QAC3B;AACA,iBAAS,IAAI,MAAM,QAAQ,GAAG,QAAQ,GAAG,IAAI,MAAM,QAAQ;AACzD,mBAASkC,OAAM,GAAGA,OAAM,EAAE,SAAS,QAAQ,EAAEA,MAAK;AAChD,gBAAI,MAAM,EAAE,SAASA,IAAG;AACxB,gBAAI,OAAO,OAAO;AAAE;AAAA,YAAM,OACrB;AAAE,mBAAK,IAAI;AAAA,YAAQ;AAAA,UAC1B;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAKA,eAAS,WAAW,MAAM;AACxB,YAAI,KAAK,UAAU,GAAG;AAAE,iBAAO;AAAA,QAAE;AACjC,YAAID,OAAM,KAAK,KAAK,QAAQ,QAAQ,MAAM;AAC1C,eAAO,SAAS,qBAAqB,GAAG,GAAG;AACzC,cAAI,QAAQ,OAAO,KAAK,GAAG,IAAI;AAC/B,gBAAM,MAAM,KAAK;AACjB,UAAAA,QAAO,MAAM,KAAK,KAAK,MAAM,GAAG;AAAA,QAClC;AACA,cAAM;AACN,eAAO,SAAS,mBAAmB,GAAG,GAAG;AACvC,cAAI,UAAU,OAAO,KAAK,GAAG,IAAI;AACjC,UAAAA,QAAO,IAAI,KAAK,SAAS,QAAQ,KAAK;AACtC,gBAAM,QAAQ,GAAG;AACjB,UAAAA,QAAO,IAAI,KAAK,SAAS,QAAQ,GAAG;AAAA,QACtC;AACA,eAAOA;AAAA,MACT;AAGA,eAASgE,aAAY,IAAI;AACvB,YAAI,IAAI,GAAG,SAAS,MAAM,GAAG;AAC7B,UAAE,UAAUjC,SAAQ,KAAK,IAAI,KAAK;AAClC,UAAE,gBAAgB,WAAW,EAAE,OAAO;AACtC,UAAE,iBAAiB;AACnB,YAAI,KAAK,SAAU,MAAM;AACvB,cAAI/B,OAAM,WAAW,IAAI;AACzB,cAAIA,OAAM,EAAE,eAAe;AACzB,cAAE,gBAAgBA;AAClB,cAAE,UAAU;AAAA,UACd;AAAA,QACF,CAAC;AAAA,MACH;AAMA,UAAIiE,QAAO,SAAShC,OAAM,aAAaiC,iBAAgB;AACrD,aAAK,OAAOjC;AACZ,QAAAsB,mBAAkB,MAAM,WAAW;AACnC,aAAK,SAASW,kBAAiBA,gBAAe,IAAI,IAAI;AAAA,MACxD;AAEA,MAAAD,MAAK,UAAU,SAAS,WAAY;AAAE,eAAO9B,QAAO,IAAI;AAAA,MAAE;AAC1D,MAAAnB,YAAWiD,KAAI;AAKf,eAASE,YAAW,MAAMlC,OAAM,aAAaiC,iBAAgB;AAC3D,aAAK,OAAOjC;AACZ,YAAI,KAAK,YAAY;AAAE,eAAK,aAAa;AAAA,QAAM;AAC/C,YAAI,KAAK,QAAQ;AAAE,eAAK,SAAS;AAAA,QAAM;AACvC,YAAI,KAAK,SAAS,MAAM;AAAE,eAAK,QAAQ;AAAA,QAAM;AAC7C,QAAAqB,mBAAkB,IAAI;AACtB,QAAAC,mBAAkB,MAAM,WAAW;AACnC,YAAI,YAAYW,kBAAiBA,gBAAe,IAAI,IAAI;AACxD,YAAI,aAAa,KAAK,QAAQ;AAAE,UAAAhC,kBAAiB,MAAM,SAAS;AAAA,QAAG;AAAA,MACrE;AAGA,eAAS,YAAY,MAAM;AACzB,aAAK,SAAS;AACd,QAAAoB,mBAAkB,IAAI;AAAA,MACxB;AAKA,UAAI,oBAAoB,CAAC,GAAG,4BAA4B,CAAC;AACzD,eAAS,oBAAoBxF,QAAO,SAAS;AAC3C,YAAI,CAACA,UAAS,QAAQ,KAAKA,MAAK,GAAG;AAAE,iBAAO;AAAA,QAAK;AACjD,YAAIsG,SAAQ,QAAQ,eAAe,4BAA4B;AAC/D,eAAOA,OAAMtG,MAAK,MACfsG,OAAMtG,MAAK,IAAIA,OAAM,QAAQ,QAAQ,OAAO;AAAA,MACjD;AAOA,eAASuG,kBAAiB,IAAI,UAAU;AAItC,YAAI,UAAUrG,MAAK,QAAQ,MAAM,MAAMxB,UAAS,wBAAwB,IAAI;AAC5E,YAAI,UAAU;AAAA,UAAC,KAAKwB,MAAK,OAAO,CAAC,OAAO,GAAG,iBAAiB;AAAA,UAAG;AAAA,UAChD,KAAK;AAAA,UAAG,KAAK;AAAA,UAAG;AAAA,UAChB,eAAe;AAAA,UACf,aAAa,GAAG,UAAU,cAAc;AAAA,QAAC;AACxD,iBAAS,UAAU,CAAC;AAGpB,iBAASD,KAAI,GAAGA,OAAM,SAAS,OAAO,SAAS,KAAK,SAAS,IAAIA,MAAK;AACpE,cAAI,OAAOA,KAAI,SAAS,KAAKA,KAAI,CAAC,IAAI,SAAS,MAAM,QAAS;AAC9D,kBAAQ,MAAM;AACd,kBAAQ,WAAW;AAGnB,cAAIuD,iBAAgB,GAAG,QAAQ,OAAO,MAAM,QAAQjB,UAAS,MAAM,GAAG,IAAI,SAAS,IACjF;AAAE,oBAAQ,WAAW,kBAAkB,QAAQ,UAAU,KAAK;AAAA,UAAG;AACnE,kBAAQ,MAAM,CAAC;AACf,cAAI,sBAAsB,YAAY,GAAG,QAAQ,oBAAoB8B,QAAO,IAAI;AAChF,4BAAkB,MAAM,SAASc,eAAc,IAAI,MAAM,mBAAmB,CAAC;AAC7E,cAAI,KAAK,cAAc;AACrB,gBAAI,KAAK,aAAa,SACpB;AAAE,sBAAQ,UAAU3E,aAAY,KAAK,aAAa,SAAS,QAAQ,WAAW,EAAE;AAAA,YAAG;AACrF,gBAAI,KAAK,aAAa,WACpB;AAAE,sBAAQ,YAAYA,aAAY,KAAK,aAAa,WAAW,QAAQ,aAAa,EAAE;AAAA,YAAG;AAAA,UAC7F;AAGA,cAAI,QAAQ,IAAI,UAAU,GACxB;AAAE,oBAAQ,IAAI,KAAK,GAAG,GAAG,QAAQ,QAAQ,YAAY8C,kBAAiB,GAAG,QAAQ,OAAO,CAAC,CAAC;AAAA,UAAG;AAG/F,cAAIrD,MAAK,GAAG;AACV,qBAAS,QAAQ,MAAM,QAAQ;AAC/B,qBAAS,QAAQ,QAAQ,CAAC;AAAA,UAC5B,OAAO;AACX,aAAC,SAAS,QAAQ,SAAS,SAAS,QAAQ,OAAO,CAAC,IAAI,KAAK,QAAQ,GAAG;AACjE,aAAC,SAAS,QAAQ,WAAW,SAAS,QAAQ,SAAS,CAAC,IAAI,KAAK,CAAC,CAAC;AAAA,UACtE;AAAA,QACF;AAGA,YAAIvB,SAAQ;AACV,cAAI,OAAO,QAAQ,QAAQ;AAC3B,cAAI,aAAa,KAAK,KAAK,SAAS,KAAM,KAAK,iBAAiB,KAAK,cAAc,SAAS,GAC1F;AAAE,oBAAQ,QAAQ,YAAY;AAAA,UAAoB;AAAA,QACtD;AAEA,QAAAmE,QAAO,IAAI,cAAc,IAAI,SAAS,MAAM,QAAQ,GAAG;AACvD,YAAI,QAAQ,IAAI,WACd;AAAE,kBAAQ,YAAYrC,aAAY,QAAQ,IAAI,WAAW,QAAQ,aAAa,EAAE;AAAA,QAAG;AAErF,eAAO;AAAA,MACT;AAEA,eAAS,8BAA8B,IAAI;AACzC,YAAI,QAAQT,KAAI,QAAQ,UAAU,gBAAgB;AAClD,cAAM,QAAQ,QAAQ,GAAG,WAAW,CAAC,EAAE,SAAS,EAAE;AAClD,cAAM,aAAa,cAAc,MAAM,KAAK;AAC5C,eAAO;AAAA,MACT;AAIA,eAAS,WAAW,SAASoE,OAAMnE,QAAO,YAAY,UAAU,KAAK,YAAY;AAC/E,YAAI,CAACmE,OAAM;AAAE;AAAA,QAAO;AACpB,YAAI,cAAc,QAAQ,cAAc,YAAYA,OAAM,QAAQ,aAAa,IAAIA;AACnF,YAAI,UAAU,QAAQ,GAAG,MAAM,cAAc,WAAW;AACxD,YAAI;AACJ,YAAI,CAAC,QAAQ,KAAKA,KAAI,GAAG;AACvB,kBAAQ,OAAOA,MAAK;AACpB,oBAAU,SAAS,eAAe,WAAW;AAC7C,kBAAQ,IAAI,KAAK,QAAQ,KAAK,QAAQ,MAAMA,MAAK,QAAQ,OAAO;AAChE,cAAI3F,OAAMC,cAAa,GAAG;AAAE,uBAAW;AAAA,UAAM;AAC7C,kBAAQ,OAAO0F,MAAK;AAAA,QACtB,OAAO;AACL,oBAAU,SAAS,uBAAuB;AAC1C,cAAI,MAAM;AACV,iBAAO,MAAM;AACX,oBAAQ,YAAY;AACpB,gBAAI,IAAI,QAAQ,KAAKA,KAAI;AACzB,gBAAI,UAAU,IAAI,EAAE,QAAQ,MAAMA,MAAK,SAAS;AAChD,gBAAI,SAAS;AACX,kBAAI,MAAM,SAAS,eAAe,YAAY,MAAM,KAAK,MAAM,OAAO,CAAC;AACvE,kBAAI3F,OAAMC,cAAa,GAAG;AAAE,wBAAQ,YAAYsB,KAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;AAAA,cAAG,OAChE;AAAE,wBAAQ,YAAY,GAAG;AAAA,cAAG;AACjC,sBAAQ,IAAI,KAAK,QAAQ,KAAK,QAAQ,MAAM,SAAS,GAAG;AACxD,sBAAQ,OAAO;AACf,sBAAQ,OAAO;AAAA,YACjB;AACA,gBAAI,CAAC,GAAG;AAAE;AAAA,YAAM;AAChB,mBAAO,UAAU;AACjB,gBAAI,QAAS;AACb,gBAAI,EAAE,CAAC,KAAK,KAAM;AAChB,kBAAI,UAAU,QAAQ,GAAG,QAAQ,SAAS,WAAW,UAAU,QAAQ,MAAM;AAC7E,sBAAQ,QAAQ,YAAYA,KAAI,QAAQuB,UAAS,QAAQ,GAAG,QAAQ,CAAC;AACrE,oBAAM,aAAa,QAAQ,cAAc;AACzC,oBAAM,aAAa,WAAW,GAAI;AAClC,sBAAQ,OAAO;AAAA,YACjB,WAAW,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC,KAAK,MAAM;AACvC,sBAAQ,QAAQ,YAAYvB,KAAI,QAAQ,EAAE,CAAC,KAAK,OAAO,WAAW,UAAU,gBAAgB,CAAC;AAC7F,oBAAM,aAAa,WAAW,EAAE,CAAC,CAAC;AAClC,sBAAQ,OAAO;AAAA,YACjB,OAAO;AACL,sBAAQ,QAAQ,GAAG,QAAQ,uBAAuB,EAAE,CAAC,CAAC;AACtD,oBAAM,aAAa,WAAW,EAAE,CAAC,CAAC;AAClC,kBAAIvB,OAAMC,cAAa,GAAG;AAAE,wBAAQ,YAAYsB,KAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;AAAA,cAAG,OAClE;AAAE,wBAAQ,YAAY,KAAK;AAAA,cAAG;AACnC,sBAAQ,OAAO;AAAA,YACjB;AACA,oBAAQ,IAAI,KAAK,QAAQ,KAAK,QAAQ,MAAM,GAAG,KAAK;AACpD,oBAAQ;AAAA,UACV;AAAA,QACF;AACA,gBAAQ,gBAAgB,YAAY,WAAWoE,MAAK,SAAS,CAAC,KAAK;AACnE,YAAInE,UAAS,cAAc,YAAY,YAAY,OAAO,YAAY;AACpE,cAAI,YAAYA,UAAS;AACzB,cAAI,YAAY;AAAE,yBAAa;AAAA,UAAY;AAC3C,cAAI,UAAU;AAAE,yBAAa;AAAA,UAAU;AACvC,cAAI,QAAQD,KAAI,QAAQ,CAAC,OAAO,GAAG,WAAW,GAAG;AACjD,cAAI,YAAY;AACd,qBAAS,QAAQ,YAAY;AAAE,kBAAI,WAAW,eAAe,IAAI,KAAK,QAAQ,WAAW,QAAQ,SAC/F;AAAE,sBAAM,aAAa,MAAM,WAAW,IAAI,CAAC;AAAA,cAAG;AAAA,YAAE;AAAA,UACpD;AACA,iBAAO,QAAQ,QAAQ,YAAY,KAAK;AAAA,QAC1C;AACA,gBAAQ,QAAQ,YAAY,OAAO;AAAA,MACrC;AAIA,eAAS,YAAYoE,OAAM,gBAAgB;AACzC,YAAIA,MAAK,SAAS,KAAK,CAAC,KAAK,KAAKA,KAAI,GAAG;AAAE,iBAAOA;AAAA,QAAK;AACvD,YAAI,cAAc,gBAAgB,SAAS;AAC3C,iBAASlE,KAAI,GAAGA,KAAIkE,MAAK,QAAQlE,MAAK;AACpC,cAAI,KAAKkE,MAAK,OAAOlE,EAAC;AACtB,cAAI,MAAM,OAAO,gBAAgBA,MAAKkE,MAAK,SAAS,KAAKA,MAAK,WAAWlE,KAAI,CAAC,KAAK,KACjF;AAAE,iBAAK;AAAA,UAAU;AACnB,oBAAU;AACV,wBAAc,MAAM;AAAA,QACtB;AACA,eAAO;AAAA,MACT;AAIA,eAAS,kBAAkB,OAAO,OAAO;AACvC,eAAO,SAAU,SAASkE,OAAMnE,QAAO,YAAY,UAAU,KAAK,YAAY;AAC5E,UAAAA,SAAQA,SAAQA,SAAQ,qBAAqB;AAC7C,cAAII,SAAQ,QAAQ,KAAK,MAAMA,SAAQ+D,MAAK;AAC5C,qBAAS;AAEP,gBAAI,OAAQ;AACZ,qBAASlE,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AACrC,qBAAO,MAAMA,EAAC;AACd,kBAAI,KAAK,KAAKG,UAAS,KAAK,QAAQA,QAAO;AAAE;AAAA,cAAM;AAAA,YACrD;AACA,gBAAI,KAAK,MAAM,KAAK;AAAE,qBAAO,MAAM,SAAS+D,OAAMnE,QAAO,YAAY,UAAU,KAAK,UAAU;AAAA,YAAE;AAChG,kBAAM,SAASmE,MAAK,MAAM,GAAG,KAAK,KAAK/D,MAAK,GAAGJ,QAAO,YAAY,MAAM,KAAK,UAAU;AACvF,yBAAa;AACb,YAAAmE,QAAOA,MAAK,MAAM,KAAK,KAAK/D,MAAK;AACjC,YAAAA,SAAQ,KAAK;AAAA,UACf;AAAA,QACF;AAAA,MACF;AAEA,eAAS,mBAAmB,SAAS,MAAM,QAAQ,cAAc;AAC/D,YAAI,SAAS,CAAC,gBAAgB,OAAO;AACrC,YAAI,QAAQ;AAAE,kBAAQ,IAAI,KAAK,QAAQ,KAAK,QAAQ,MAAM,MAAM,MAAM;AAAA,QAAG;AACzE,YAAI,CAAC,gBAAgB,QAAQ,GAAG,QAAQ,MAAM,uBAAuB;AACnE,cAAI,CAAC,QACH;AAAE,qBAAS,QAAQ,QAAQ,YAAY,SAAS,cAAc,MAAM,CAAC;AAAA,UAAG;AAC1E,iBAAO,aAAa,aAAa,OAAO,EAAE;AAAA,QAC5C;AACA,YAAI,QAAQ;AACV,kBAAQ,GAAG,QAAQ,MAAM,cAAc,MAAM;AAC7C,kBAAQ,QAAQ,YAAY,MAAM;AAAA,QACpC;AACA,gBAAQ,OAAO;AACf,gBAAQ,gBAAgB;AAAA,MAC1B;AAIA,eAAS,kBAAkB,MAAM,SAAS,QAAQ;AAChD,YAAI,QAAQ,KAAK,aAAa,UAAU,KAAK,MAAM,KAAK;AACxD,YAAI,CAAC,OAAO;AACV,mBAAS+B,OAAM,GAAGA,OAAM,OAAO,QAAQA,QAAK,GAC1C;AAAE,oBAAQ,SAAS,SAAS,QAAQ,MAAM,IAAI,KAAK,OAAOA,IAAG,CAAC,GAAG,oBAAoB,OAAOA,OAAI,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC;AAAA,UAAG;AAC5H;AAAA,QACF;AAEA,YAAID,OAAM,QAAQ,QAAQ,MAAM,GAAGjC,KAAI,GAAGkE,QAAO,IAAInE,QAAO;AAC5D,YAAI,aAAa,GAAG,WAAW,cAAc,gBAAgB,WAAW;AACxE,mBAAS;AACP,cAAI,cAAc,KAAK;AACrB,wBAAY,eAAe,iBAAiB,MAAM;AAClD,yBAAa;AACb,wBAAY;AAAM,yBAAa;AAC/B,gBAAI,iBAAiB,CAAC,GAAG,YAAa;AACtC,qBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,EAAE,GAAG;AACrC,kBAAI,KAAK,MAAM,CAAC,GAAG,IAAI,GAAG;AAC1B,kBAAI,EAAE,QAAQ,cAAc,GAAG,QAAQ,OAAO,EAAE,YAAY;AAC1D,+BAAe,KAAK,CAAC;AAAA,cACvB,WAAW,GAAG,QAAQ,QAAQ,GAAG,MAAM,QAAQ,GAAG,KAAK,OAAO,EAAE,aAAa,GAAG,MAAM,OAAO,GAAG,QAAQ,MAAM;AAC5G,oBAAI,GAAG,MAAM,QAAQ,GAAG,MAAM,OAAO,aAAa,GAAG,IAAI;AACvD,+BAAa,GAAG;AAChB,iCAAe;AAAA,gBACjB;AACA,oBAAI,EAAE,WAAW;AAAE,+BAAa,MAAM,EAAE;AAAA,gBAAW;AACnD,oBAAI,EAAE,KAAK;AAAE,yBAAO,MAAM,MAAM,MAAM,MAAM,EAAE;AAAA,gBAAK;AACnD,oBAAI,EAAE,cAAc,GAAG,QAAQ,KAAK;AAAE,oCAAkB,MAAM,EAAE;AAAA,gBAAY;AAC5E,oBAAI,EAAE,YAAY,GAAG,MAAM,YAAY;AAAE,mBAAC,cAAc,YAAY,CAAC,IAAI,KAAK,EAAE,UAAU,GAAG,EAAE;AAAA,gBAAG;AAGlG,oBAAI,EAAE,OAAO;AAAE,mBAAC,eAAe,aAAa,CAAC,IAAI,QAAQ,EAAE;AAAA,gBAAO;AAClE,oBAAI,EAAE,YAAY;AAChB,2BAAS,QAAQ,EAAE,YACjB;AAAE,qBAAC,eAAe,aAAa,CAAC,IAAI,IAAI,IAAI,EAAE,WAAW,IAAI;AAAA,kBAAG;AAAA,gBACpE;AACA,oBAAI,EAAE,cAAc,CAAC,aAAa0F,yBAAwB,UAAU,QAAQ,CAAC,IAAI,IAC/E;AAAE,8BAAY;AAAA,gBAAI;AAAA,cACtB,WAAW,GAAG,OAAO,OAAO,aAAa,GAAG,MAAM;AAChD,6BAAa,GAAG;AAAA,cAClB;AAAA,YACF;AACA,gBAAI,WAAW;AAAE,uBAAS,MAAM,GAAG,MAAM,UAAU,QAAQ,OAAO,GAChE;AAAE,oBAAI,UAAU,MAAM,CAAC,KAAK,YAAY;AAAE,kCAAgB,MAAM,UAAU,GAAG;AAAA,gBAAG;AAAA,cAAE;AAAA,YAAE;AAEtF,gBAAI,CAAC,aAAa,UAAU,QAAQ,KAAK;AAAE,uBAAS,MAAM,GAAG,MAAM,eAAe,QAAQ,EAAE,KAC1F;AAAE,mCAAmB,SAAS,GAAG,eAAe,GAAG,CAAC;AAAA,cAAG;AAAA,YAAE;AAC3D,gBAAI,cAAc,UAAU,QAAQ,MAAM,KAAK;AAC7C;AAAA,gBAAmB;AAAA,iBAAU,UAAU,MAAM,OAAOxD,OAAM,IAAI,UAAU,MAAM;AAAA,gBAC3D,UAAU;AAAA,gBAAQ,UAAU,QAAQ;AAAA,cAAI;AAC3D,kBAAI,UAAU,MAAM,MAAM;AAAE;AAAA,cAAO;AACnC,kBAAI,UAAU,MAAM,KAAK;AAAE,4BAAY;AAAA,cAAO;AAAA,YAChD;AAAA,UACF;AACA,cAAI,OAAOA,MAAK;AAAE;AAAA,UAAM;AAExB,cAAI,OAAO,KAAK,IAAIA,MAAK,UAAU;AACnC,iBAAO,MAAM;AACX,gBAAIiC,OAAM;AACR,kBAAI,MAAM,MAAMA,MAAK;AACrB,kBAAI,CAAC,WAAW;AACd,oBAAI,YAAY,MAAM,OAAOA,MAAK,MAAM,GAAG,OAAO,GAAG,IAAIA;AACzD,wBAAQ;AAAA,kBAAS;AAAA,kBAAS;AAAA,kBAAWnE,SAAQA,SAAQ,YAAY;AAAA,kBAChD;AAAA,kBAAgB,MAAM,UAAU,UAAU,aAAa,eAAe;AAAA,kBAAI;AAAA,kBAAK;AAAA,gBAAU;AAAA,cAC5G;AACA,kBAAI,OAAO,MAAM;AAAC,gBAAAmE,QAAOA,MAAK,MAAM,OAAO,GAAG;AAAG,sBAAM;AAAM;AAAA,cAAK;AAClE,oBAAM;AACN,+BAAiB;AAAA,YACnB;AACA,YAAAA,QAAO,QAAQ,MAAM,IAAI,KAAK,OAAOlE,IAAG,CAAC;AACzC,YAAAD,SAAQ,oBAAoB,OAAOC,IAAG,GAAG,QAAQ,GAAG,OAAO;AAAA,UAC7D;AAAA,QACF;AAAA,MACF;AAMA,eAASuG,UAAS,KAAK,MAAM,OAAO;AAElC,aAAK,OAAO;AAEZ,aAAK,OAAOX,qBAAoB,IAAI;AAEpC,aAAK,OAAO,KAAK,OAAOxB,QAAO9C,KAAI,KAAK,IAAI,CAAC,IAAI,QAAQ,IAAI;AAC7D,aAAK,OAAO,KAAK,OAAO;AACxB,aAAK,SAASyE,cAAa,KAAK,IAAI;AAAA,MACtC;AAGA,eAASS,gBAAe,IAAI,MAAM,IAAI;AACpC,YAAItF,SAAQ,CAAC,GAAG;AAChB,iBAAS,MAAM,MAAM,MAAM,IAAI,MAAM,SAAS;AAC5C,cAAI,OAAO,IAAIqF,UAAS,GAAG,KAAKvC,SAAQ,GAAG,KAAK,GAAG,GAAG,GAAG;AACzD,oBAAU,MAAM,KAAK;AACrB,UAAA9C,OAAM,KAAK,IAAI;AAAA,QACjB;AACA,eAAOA;AAAA,MACT;AAEA,UAAI,iBAAiB;AAErB,eAASuF,eAAc,IAAI;AACzB,YAAI,gBAAgB;AAClB,yBAAe,IAAI,KAAK,EAAE;AAAA,QAC5B,OAAO;AACL,aAAG,YAAY,iBAAiB;AAAA,YAC9B,KAAK,CAAC,EAAE;AAAA,YACR,kBAAkB,CAAC;AAAA,UACrB;AAAA,QACF;AAAA,MACF;AAEA,eAAS,oBAAoB,OAAO;AAGlC,YAAIC,aAAY,MAAM,kBAAkB1G,KAAI;AAC5C,WAAG;AACD,iBAAOA,KAAI0G,WAAU,QAAQ1G,MAC3B;AAAE,YAAA0G,WAAU1G,EAAC,EAAE,KAAK,IAAI;AAAA,UAAG;AAC7B,mBAAS,IAAI,GAAG,IAAI,MAAM,IAAI,QAAQ,KAAK;AACzC,gBAAI,KAAK,MAAM,IAAI,CAAC;AACpB,gBAAI,GAAG,wBACL;AAAE,qBAAO,GAAG,uBAAuB,GAAG,uBAAuB,QAC3D;AAAE,mBAAG,uBAAuB,GAAG,sBAAsB,EAAE,KAAK,MAAM,GAAG,EAAE;AAAA,cAAG;AAAA,YAAE;AAAA,UAClF;AAAA,QACF,SAASA,KAAI0G,WAAU;AAAA,MACzB;AAEA,eAASC,iBAAgB,IAAI,OAAO;AAClC,YAAI,QAAQ,GAAG;AACf,YAAI,CAAC,OAAO;AAAE;AAAA,QAAO;AAErB,YAAI;AAAE,8BAAoB,KAAK;AAAA,QAAG,UAClC;AACE,2BAAiB;AACjB,gBAAM,KAAK;AAAA,QACb;AAAA,MACF;AAEA,UAAI,yBAAyB;AAS7B,eAASC,aAAY,SAASzE,OAAsB;AAClD,YAAI,MAAMM,aAAY,SAASN,KAAI;AACnC,YAAI,CAAC,IAAI,QAAQ;AAAE;AAAA,QAAO;AAC1B,YAAI,OAAO,MAAM,UAAU,MAAM,KAAK,WAAW,CAAC,GAAG;AACrD,YAAI,gBAAgB;AAClB,iBAAO,eAAe;AAAA,QACxB,WAAW,wBAAwB;AACjC,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO,yBAAyB,CAAC;AACjC,qBAAW,mBAAmB,CAAC;AAAA,QACjC;AACA,YAAI,OAAO,SAAWnC,IAAI;AACxB,eAAK,KAAK,WAAY;AAAE,mBAAO,IAAIA,EAAC,EAAE,MAAM,MAAM,IAAI;AAAA,UAAG,CAAC;AAAA,QAC5D;AAEA,iBAASA,KAAI,GAAGA,KAAI,IAAI,QAAQ,EAAEA;AAChC,eAAMA,EAAE;AAAA,MACZ;AAEA,eAAS,oBAAoB;AAC3B,YAAI,UAAU;AACd,iCAAyB;AACzB,iBAASA,KAAI,GAAGA,KAAI,QAAQ,QAAQ,EAAEA,IAAG;AAAE,kBAAQA,EAAC,EAAE;AAAA,QAAG;AAAA,MAC3D;AAKA,eAAS6G,sBAAqB,IAAI,UAAU,OAAO,MAAM;AACvD,iBAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,QAAQ,KAAK;AAChD,cAAI1E,QAAO,SAAS,QAAQ,CAAC;AAC7B,cAAIA,SAAQ,QAAQ;AAAE,2BAAe,IAAI,QAAQ;AAAA,UAAG,WAC3CA,SAAQ,UAAU;AAAE,6BAAiB,IAAI,UAAU,OAAO,IAAI;AAAA,UAAG,WACjEA,SAAQ,SAAS;AAAE,8BAAkB,IAAI,QAAQ;AAAA,UAAG,WACpDA,SAAQ,UAAU;AAAE,8BAAkB,IAAI,UAAU,IAAI;AAAA,UAAG;AAAA,QACtE;AACA,iBAAS,UAAU;AAAA,MACrB;AAIA,eAAS,kBAAkB,UAAU;AACnC,YAAI,SAAS,QAAQ,SAAS,MAAM;AAClC,mBAAS,OAAOrC,KAAI,OAAO,MAAM,MAAM,oBAAoB;AAC3D,cAAI,SAAS,KAAK,YAChB;AAAE,qBAAS,KAAK,WAAW,aAAa,SAAS,MAAM,SAAS,IAAI;AAAA,UAAG;AACzE,mBAAS,KAAK,YAAY,SAAS,IAAI;AACvC,cAAIvB,OAAMC,cAAa,GAAG;AAAE,qBAAS,KAAK,MAAM,SAAS;AAAA,UAAG;AAAA,QAC9D;AACA,eAAO,SAAS;AAAA,MAClB;AAEA,eAAS,qBAAqB,IAAI,UAAU;AAC1C,YAAI,MAAM,SAAS,UAAU,SAAS,UAAU,OAAO,SAAS,KAAK,WAAW,MAAM,SAAS,KAAK;AACpG,YAAI,KAAK;AAAE,iBAAO;AAAA,QAA8B;AAChD,YAAI,SAAS,YAAY;AACvB,cAAI,KAAK;AAAE,qBAAS,WAAW,YAAY;AAAA,UAAK,OAC3C;AAAE,qBAAS,WAAW,WAAW,YAAY,SAAS,UAAU;AAAG,qBAAS,aAAa;AAAA,UAAM;AAAA,QACtG,WAAW,KAAK;AACd,cAAI,OAAO,kBAAkB,QAAQ;AACrC,mBAAS,aAAa,KAAK,aAAasB,KAAI,OAAO,MAAM,GAAG,GAAG,KAAK,UAAU;AAC9E,aAAG,QAAQ,MAAM,cAAc,SAAS,UAAU;AAAA,QACpD;AAAA,MACF;AAIA,eAAS,eAAe,IAAI,UAAU;AACpC,YAAI,MAAM,GAAG,QAAQ;AACrB,YAAI,OAAO,IAAI,QAAQ,SAAS,MAAM;AACpC,aAAG,QAAQ,mBAAmB;AAC9B,mBAAS,UAAU,IAAI;AACvB,iBAAO,IAAI;AAAA,QACb;AACA,eAAOwG,kBAAiB,IAAI,QAAQ;AAAA,MACtC;AAKA,eAAS,eAAe,IAAI,UAAU;AACpC,YAAI,MAAM,SAAS,KAAK;AACxB,YAAI,QAAQ,eAAe,IAAI,QAAQ;AACvC,YAAI,SAAS,QAAQ,SAAS,MAAM;AAAE,mBAAS,OAAO,MAAM;AAAA,QAAK;AACjE,iBAAS,KAAK,WAAW,aAAa,MAAM,KAAK,SAAS,IAAI;AAC9D,iBAAS,OAAO,MAAM;AACtB,YAAI,MAAM,WAAW,SAAS,WAAW,MAAM,aAAa,SAAS,WAAW;AAC9E,mBAAS,UAAU,MAAM;AACzB,mBAAS,YAAY,MAAM;AAC3B,4BAAkB,IAAI,QAAQ;AAAA,QAChC,WAAW,KAAK;AACd,mBAAS,KAAK,YAAY;AAAA,QAC5B;AAAA,MACF;AAEA,eAAS,kBAAkB,IAAI,UAAU;AACvC,6BAAqB,IAAI,QAAQ;AACjC,YAAI,SAAS,KAAK,WAChB;AAAE,4BAAkB,QAAQ,EAAE,YAAY,SAAS,KAAK;AAAA,QAAW,WAC5D,SAAS,QAAQ,SAAS,MACjC;AAAE,mBAAS,KAAK,YAAY;AAAA,QAAI;AAClC,YAAI,YAAY,SAAS,YAAY,SAAS,YAAY,OAAO,SAAS,KAAK,aAAa,MAAM,SAAS,KAAK;AAChH,iBAAS,KAAK,YAAY,aAAa;AAAA,MACzC;AAEA,eAAS,iBAAiB,IAAI,UAAU,OAAO,MAAM;AACnD,YAAI,SAAS,QAAQ;AACnB,mBAAS,KAAK,YAAY,SAAS,MAAM;AACzC,mBAAS,SAAS;AAAA,QACpB;AACA,YAAI,SAAS,kBAAkB;AAC7B,mBAAS,KAAK,YAAY,SAAS,gBAAgB;AACnD,mBAAS,mBAAmB;AAAA,QAC9B;AACA,YAAI,SAAS,KAAK,aAAa;AAC7B,cAAI,OAAO,kBAAkB,QAAQ;AACrC,mBAAS,mBAAmBxG;AAAA,YAAI;AAAA,YAAO;AAAA,YAAM,kCAAkC,SAAS,KAAK;AAAA,YAC5D,YAAY,GAAG,QAAQ,cAAc,KAAK,WAAW,CAAC,KAAK,oBAAoB,gBAAiB,KAAK,mBAAoB;AAAA,UAAK;AAC/J,aAAG,QAAQ,MAAM,cAAc,SAAS,gBAAgB;AACxD,eAAK,aAAa,SAAS,kBAAkB,SAAS,IAAI;AAAA,QAC5D;AACA,YAAI,UAAU,SAAS,KAAK;AAC5B,YAAI,GAAG,QAAQ,eAAe,SAAS;AACrC,cAAI,SAAS,kBAAkB,QAAQ;AACvC,cAAI,aAAa,SAAS,SAASA,KAAI,OAAO,MAAM,6BAA8B,YAAY,GAAG,QAAQ,cAAc,KAAK,WAAW,CAAC,KAAK,oBAAoB,IAAK;AACtK,aAAG,QAAQ,MAAM,cAAc,UAAU;AACzC,iBAAO,aAAa,YAAY,SAAS,IAAI;AAC7C,cAAI,SAAS,KAAK,aAChB;AAAE,uBAAW,aAAa,MAAM,SAAS,KAAK;AAAA,UAAa;AAC7D,cAAI,GAAG,QAAQ,gBAAgB,CAAC,WAAW,CAAC,QAAQ,wBAAwB,IAC1E;AAAE,qBAAS,aAAa,WAAW;AAAA,cACjCA;AAAA,gBAAI;AAAA,gBAAO0E,eAAc,GAAG,SAAS,KAAK;AAAA,gBACtC;AAAA,gBACC,WAAY,KAAK,WAAW,wBAAwB,IAAK,gBAAiB,GAAG,QAAQ,oBAAqB;AAAA,cAAK;AAAA,YAAC;AAAA,UAAG;AAC5H,cAAI,SAAS;AAAE,qBAAS,IAAI,GAAG,IAAI,GAAG,QAAQ,YAAY,QAAQ,EAAE,GAAG;AACrE,kBAAIsC,MAAK,GAAG,QAAQ,YAAY,CAAC,EAAE,WAAW,QAAQ,QAAQ,eAAeA,GAAE,KAAK,QAAQA,GAAE;AAC9F,kBAAI,OACF;AAAE,2BAAW,YAAYhH;AAAA,kBAAI;AAAA,kBAAO,CAAC,KAAK;AAAA,kBAAG;AAAA,kBACjB,WAAY,KAAK,WAAWgH,GAAE,IAAK,gBAAiB,KAAK,YAAYA,GAAE,IAAK;AAAA,gBAAK,CAAC;AAAA,cAAG;AAAA,YACrH;AAAA,UAAE;AAAA,QACJ;AAAA,MACF;AAEA,eAAS,kBAAkB,IAAI,UAAU,MAAM;AAC7C,YAAI,SAAS,WAAW;AAAE,mBAAS,YAAY;AAAA,QAAM;AACrD,YAAI,WAAWrH,WAAU,uBAAuB;AAChD,iBAAS,OAAO,SAAS,KAAK,YAAYsH,QAAQ,QAAS,MAAM,OAAOA,OAAM;AAC5E,UAAAA,QAAO,KAAK;AACZ,cAAI,SAAS,KAAK,KAAK,SAAS,GAAG;AAAE,qBAAS,KAAK,YAAY,IAAI;AAAA,UAAG;AAAA,QACxE;AACA,0BAAkB,IAAI,UAAU,IAAI;AAAA,MACtC;AAGA,eAASC,kBAAiB,IAAI,UAAU,OAAO,MAAM;AACnD,YAAI,QAAQ,eAAe,IAAI,QAAQ;AACvC,iBAAS,OAAO,SAAS,OAAO,MAAM;AACtC,YAAI,MAAM,SAAS;AAAE,mBAAS,UAAU,MAAM;AAAA,QAAS;AACvD,YAAI,MAAM,WAAW;AAAE,mBAAS,YAAY,MAAM;AAAA,QAAW;AAE7D,0BAAkB,IAAI,QAAQ;AAC9B,yBAAiB,IAAI,UAAU,OAAO,IAAI;AAC1C,0BAAkB,IAAI,UAAU,IAAI;AACpC,eAAO,SAAS;AAAA,MAClB;AAIA,eAAS,kBAAkB,IAAI,UAAU,MAAM;AAC7C,6BAAqB,IAAI,SAAS,MAAM,UAAU,MAAM,IAAI;AAC5D,YAAI,SAAS,MAAM;AAAE,mBAAShH,KAAI,GAAGA,KAAI,SAAS,KAAK,QAAQA,MAC7D;AAAE,iCAAqB,IAAI,SAAS,KAAKA,EAAC,GAAG,UAAU,MAAM,KAAK;AAAA,UAAG;AAAA,QAAE;AAAA,MAC3E;AAEA,eAAS,qBAAqB,IAAI,MAAM,UAAU,MAAM,YAAY;AAClE,YAAI,CAAC,KAAK,SAAS;AAAE;AAAA,QAAO;AAC5B,YAAI,OAAO,kBAAkB,QAAQ;AACrC,iBAASA,KAAI,GAAG,KAAK,KAAK,SAASA,KAAI,GAAG,QAAQ,EAAEA,IAAG;AACrD,cAAI,SAAS,GAAGA,EAAC,GAAG,OAAOF,KAAI,OAAO,CAAC,OAAO,IAAI,GAAG,2BAA2B,OAAO,YAAY,MAAM,OAAO,YAAY,GAAG;AAC/H,cAAI,CAAC,OAAO,mBAAmB;AAAE,iBAAK,aAAa,oBAAoB,MAAM;AAAA,UAAG;AAChF,6BAAmB,QAAQ,MAAM,UAAU,IAAI;AAC/C,aAAG,QAAQ,MAAM,cAAc,IAAI;AACnC,cAAI,cAAc,OAAO,OACvB;AAAE,iBAAK,aAAa,MAAM,SAAS,UAAU,SAAS,IAAI;AAAA,UAAG,OAE7D;AAAE,iBAAK,YAAY,IAAI;AAAA,UAAG;AAC5B,UAAA8G,aAAY,QAAQ,QAAQ;AAAA,QAC9B;AAAA,MACF;AAEA,eAAS,mBAAmB,QAAQ,MAAM,UAAU,MAAM;AACxD,YAAI,OAAO,WAAW;AACxB,WAAC,SAAS,cAAc,SAAS,YAAY,CAAC,IAAI,KAAK,IAAI;AACvD,cAAI,QAAQ,KAAK;AACjB,eAAK,MAAM,OAAO,KAAK,WAAW;AAClC,cAAI,CAAC,OAAO,aAAa;AACvB,qBAAS,KAAK;AACd,iBAAK,MAAM,cAAc,KAAK,mBAAmB;AAAA,UACnD;AACA,eAAK,MAAM,QAAQ,QAAQ;AAAA,QAC7B;AACA,YAAI,OAAO,aAAa;AACtB,eAAK,MAAM,SAAS;AACpB,eAAK,MAAM,WAAW;AACtB,cAAI,CAAC,OAAO,WAAW;AAAE,iBAAK,MAAM,aAAa,CAAC,KAAK,mBAAmB;AAAA,UAAM;AAAA,QAClF;AAAA,MACF;AAEA,eAASK,cAAa,QAAQ;AAC5B,YAAI,OAAO,UAAU,MAAM;AAAE,iBAAO,OAAO;AAAA,QAAO;AAClD,YAAI,KAAK,OAAO,IAAI;AACpB,YAAI,CAAC,IAAI;AAAE,iBAAO;AAAA,QAAE;AACpB,YAAI,CAAC7G,UAAS,SAAS,MAAM,OAAO,IAAI,GAAG;AACzC,cAAI,cAAc;AAClB,cAAI,OAAO,aACT;AAAE,2BAAe,mBAAmB,GAAG,QAAQ,QAAQ,cAAc;AAAA,UAAO;AAC9E,cAAI,OAAO,WACT;AAAE,2BAAe,YAAY,GAAG,QAAQ,QAAQ,cAAc;AAAA,UAAO;AACvE,UAAAP,sBAAqB,GAAG,QAAQ,SAASC,KAAI,OAAO,CAAC,OAAO,IAAI,GAAG,MAAM,WAAW,CAAC;AAAA,QACvF;AACA,eAAO,OAAO,SAAS,OAAO,KAAK,WAAW;AAAA,MAChD;AAGA,eAAS,cAAc,SAAS,GAAG;AACjC,iBAAS,IAAIoD,UAAS,CAAC,GAAG,KAAK,QAAQ,SAAS,IAAI,EAAE,YAAY;AAChE,cAAI,CAAC,KAAM,EAAE,YAAY,KAAK,EAAE,aAAa,kBAAkB,KAAK,UAC/D,EAAE,cAAc,QAAQ,SAAS,KAAK,QAAQ,OACjD;AAAE,mBAAO;AAAA,UAAK;AAAA,QAClB;AAAA,MACF;AAIA,eAASgE,YAAW,SAAS;AAAC,eAAO,QAAQ,UAAU;AAAA,MAAS;AAChE,eAASC,aAAY,SAAS;AAAC,eAAO,QAAQ,MAAM,eAAe,QAAQ,UAAU;AAAA,MAAY;AACjG,eAASC,UAAS,SAAS;AACzB,YAAI,QAAQ,gBAAgB;AAAE,iBAAO,QAAQ;AAAA,QAAe;AAC5D,YAAI,IAAIvH,sBAAqB,QAAQ,SAASC,KAAI,OAAO,KAAK,sBAAsB,CAAC;AACrF,YAAIC,SAAQ,OAAO,mBAAmB,OAAO,iBAAiB,CAAC,IAAI,EAAE;AACrE,YAAI,OAAO,EAAC,MAAM,SAASA,OAAM,WAAW,GAAG,OAAO,SAASA,OAAM,YAAY,EAAC;AAClF,YAAI,CAAC,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,GAAG;AAAE,kBAAQ,iBAAiB;AAAA,QAAM;AAC9E,eAAO;AAAA,MACT;AAEA,eAASsH,WAAU,IAAI;AAAE,eAAOlG,eAAc,GAAG,QAAQ;AAAA,MAAe;AACxE,eAASmG,cAAa,IAAI;AACxB,eAAO,GAAG,QAAQ,SAAS,cAAcD,WAAU,EAAE,IAAI,GAAG,QAAQ;AAAA,MACtE;AACA,eAASE,eAAc,IAAI;AACzB,eAAO,GAAG,QAAQ,SAAS,eAAeF,WAAU,EAAE,IAAI,GAAG,QAAQ;AAAA,MACvE;AAMA,eAAS,kBAAkB,IAAI,UAAU,MAAM;AAC7C,YAAI,WAAW,GAAG,QAAQ;AAC1B,YAAI,WAAW,YAAYC,cAAa,EAAE;AAC1C,YAAI,CAAC,SAAS,QAAQ,WAAW,YAAY,SAAS,QAAQ,SAAS,UAAU;AAC/E,cAAI,UAAU,SAAS,QAAQ,UAAU,CAAC;AAC1C,cAAI,UAAU;AACZ,qBAAS,QAAQ,QAAQ;AACzB,gBAAI,QAAQ,SAAS,KAAK,WAAW,eAAe;AACpD,qBAAStH,KAAI,GAAGA,KAAI,MAAM,SAAS,GAAGA,MAAK;AACzC,kBAAI,MAAM,MAAMA,EAAC,GAAG+G,QAAO,MAAM/G,KAAI,CAAC;AACtC,kBAAI,KAAK,IAAI,IAAI,SAAS+G,MAAK,MAAM,IAAI,GACvC;AAAE,wBAAQ,MAAM,IAAI,SAASA,MAAK,OAAO,IAAI,KAAK,GAAG;AAAA,cAAG;AAAA,YAC5D;AAAA,UACF;AACA,kBAAQ,KAAK,KAAK,SAAS,KAAK,GAAG;AAAA,QACrC;AAAA,MACF;AAKA,eAAS,gBAAgB,UAAU,MAAM,OAAO;AAC9C,YAAI,SAAS,QAAQ,MACnB;AAAE,iBAAO,EAAC,KAAK,SAAS,QAAQ,KAAK,OAAO,SAAS,QAAQ,MAAK;AAAA,QAAE;AACtE,iBAAS/G,KAAI,GAAGA,KAAI,SAAS,KAAK,QAAQA,MACxC;AAAE,cAAI,SAAS,KAAKA,EAAC,KAAK,MACxB;AAAE,mBAAO,EAAC,KAAK,SAAS,QAAQ,KAAKA,EAAC,GAAG,OAAO,SAAS,QAAQ,OAAOA,EAAC,EAAC;AAAA,UAAE;AAAA,QAAE;AAClF,iBAASkC,OAAM,GAAGA,OAAM,SAAS,KAAK,QAAQA,QAC5C;AAAE,cAAIkC,QAAO,SAAS,KAAKlC,IAAG,CAAC,IAAI,OACjC;AAAE,mBAAO,EAAC,KAAK,SAAS,QAAQ,KAAKA,IAAG,GAAG,OAAO,SAAS,QAAQ,OAAOA,IAAG,GAAG,QAAQ,KAAI;AAAA,UAAE;AAAA,QAAE;AAAA,MACtG;AAIA,eAAS,0BAA0B,IAAI,MAAM;AAC3C,eAAOyD,YAAW,IAAI;AACtB,YAAI,QAAQvB,QAAO,IAAI;AACvB,YAAI,OAAO,GAAG,QAAQ,mBAAmB,IAAImC,UAAS,GAAG,KAAK,MAAM,KAAK;AACzE,aAAK,QAAQ;AACb,YAAI,QAAQ,KAAK,QAAQD,kBAAiB,IAAI,IAAI;AAClD,aAAK,OAAO,MAAM;AAClB,QAAAzG,sBAAqB,GAAG,QAAQ,aAAa,MAAM,GAAG;AACtD,eAAO;AAAA,MACT;AAIA,eAAS2H,aAAY,IAAI,MAAM,IAAI,MAAM;AACvC,eAAO,oBAAoB,IAAI,sBAAsB,IAAI,IAAI,GAAG,IAAI,IAAI;AAAA,MAC1E;AAGA,eAAS,gBAAgB,IAAI,OAAO;AAClC,YAAI,SAAS,GAAG,QAAQ,YAAY,QAAQ,GAAG,QAAQ,QACrD;AAAE,iBAAO,GAAG,QAAQ,KAAKC,eAAc,IAAI,KAAK,CAAC;AAAA,QAAE;AACrD,YAAI,MAAM,GAAG,QAAQ;AACrB,YAAI,OAAO,SAAS,IAAI,SAAS,QAAQ,IAAI,QAAQ,IAAI,MACvD;AAAE,iBAAO;AAAA,QAAI;AAAA,MACjB;AAOA,eAAS,sBAAsB,IAAI,MAAM;AACvC,YAAI,QAAQrD,QAAO,IAAI;AACvB,YAAI,OAAO,gBAAgB,IAAI,KAAK;AACpC,YAAI,QAAQ,CAAC,KAAK,MAAM;AACtB,iBAAO;AAAA,QACT,WAAW,QAAQ,KAAK,SAAS;AAC/B,UAAAyC,sBAAqB,IAAI,MAAM,OAAOa,eAAc,EAAE,CAAC;AACvD,aAAG,MAAM,cAAc;AAAA,QACzB;AACA,YAAI,CAAC,MACH;AAAE,iBAAO,0BAA0B,IAAI,IAAI;AAAA,QAAG;AAEhD,YAAI,OAAO,gBAAgB,MAAM,MAAM,KAAK;AAC5C,eAAO;AAAA,UACL;AAAA,UAAY;AAAA,UAAY,MAAM;AAAA,UAC9B,KAAK,KAAK;AAAA,UAAK,OAAO,KAAK;AAAA,UAAO,QAAQ,KAAK;AAAA,UAC/C,YAAY;AAAA,QACd;AAAA,MACF;AAIA,eAAS,oBAAoB,IAAI,UAAU,IAAI,MAAM,WAAW;AAC9D,YAAI,SAAS,QAAQ;AAAE,eAAK;AAAA,QAAI;AAChC,YAAI,MAAM,MAAM,QAAQ,KAAK;AAC7B,YAAI,SAAS,MAAM,eAAe,GAAG,GAAG;AACtC,kBAAQ,SAAS,MAAM,GAAG;AAAA,QAC5B,OAAO;AACL,cAAI,CAAC,SAAS,MACZ;AAAE,qBAAS,OAAO,SAAS,KAAK,KAAK,sBAAsB;AAAA,UAAG;AAChE,cAAI,CAAC,SAAS,YAAY;AACxB,8BAAkB,IAAI,SAAS,MAAM,SAAS,IAAI;AAClD,qBAAS,aAAa;AAAA,UACxB;AACA,kBAAQ,iBAAiB,IAAI,UAAU,IAAI,IAAI;AAC/C,cAAI,CAAC,MAAM,OAAO;AAAE,qBAAS,MAAM,GAAG,IAAI;AAAA,UAAO;AAAA,QACnD;AACA,eAAO;AAAA,UAAC,MAAM,MAAM;AAAA,UAAM,OAAO,MAAM;AAAA,UAC/B,KAAK,YAAY,MAAM,OAAO,MAAM;AAAA,UACpC,QAAQ,YAAY,MAAM,UAAU,MAAM;AAAA,QAAM;AAAA,MAC1D;AAEA,UAAI,WAAW,EAAC,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,EAAC;AAEpD,eAAS,uBAAuBnG,MAAK,IAAI,MAAM;AAC7C,YAAI,MAAMpB,QAAO,KAAK,UAAU,QAAQ;AAGxC,iBAASH,KAAI,GAAGA,KAAIuB,KAAI,QAAQvB,MAAK,GAAG;AACtC,mBAASuB,KAAIvB,EAAC;AACd,iBAAOuB,KAAIvB,KAAI,CAAC;AAChB,cAAI,KAAK,QAAQ;AACf,YAAAG,SAAQ;AAAG,kBAAM;AACjB,uBAAW;AAAA,UACb,WAAW,KAAK,MAAM;AACpB,YAAAA,SAAQ,KAAK;AACb,kBAAMA,SAAQ;AAAA,UAChB,WAAWH,MAAKuB,KAAI,SAAS,KAAK,MAAM,QAAQA,KAAIvB,KAAI,CAAC,IAAI,IAAI;AAC/D,kBAAM,OAAO;AACb,YAAAG,SAAQ,MAAM;AACd,gBAAI,MAAM,MAAM;AAAE,yBAAW;AAAA,YAAS;AAAA,UACxC;AACA,cAAIA,UAAS,MAAM;AACjB,mBAAOoB,KAAIvB,KAAI,CAAC;AAChB,gBAAI,UAAU,QAAQ,SAAS,KAAK,aAAa,SAAS,UACxD;AAAE,yBAAW;AAAA,YAAM;AACrB,gBAAI,QAAQ,UAAUG,UAAS,GAC7B;AAAE,qBAAOH,MAAKuB,KAAIvB,KAAI,CAAC,KAAKuB,KAAIvB,KAAI,CAAC,KAAKuB,KAAIvB,KAAI,CAAC,EAAE,YAAY;AAC/D,uBAAOuB,MAAKvB,MAAK,KAAK,CAAC;AACvB,2BAAW;AAAA,cACb;AAAA,YAAE;AACJ,gBAAI,QAAQ,WAAWG,UAAS,OAAO,QACrC;AAAE,qBAAOH,KAAIuB,KAAI,SAAS,KAAKA,KAAIvB,KAAI,CAAC,KAAKuB,KAAIvB,KAAI,CAAC,KAAK,CAACuB,KAAIvB,KAAI,CAAC,EAAE,YAAY;AACjF,uBAAOuB,MAAKvB,MAAK,KAAK,CAAC;AACvB,2BAAW;AAAA,cACb;AAAA,YAAE;AACJ;AAAA,UACF;AAAA,QACF;AACA,eAAO,EAAC,MAAY,OAAOG,QAAO,KAAU,UAAoB,YAAY,QAAQ,UAAU,KAAI;AAAA,MACpG;AAEA,eAAS,cAAc,OAAO,MAAM;AAClC,YAAI,OAAO;AACX,YAAI,QAAQ,QAAQ;AAAE,mBAASH,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AAC3D,iBAAK,OAAO,MAAMA,EAAC,GAAG,QAAQ,KAAK,OAAO;AAAE;AAAA,YAAM;AAAA,UACpD;AAAA,QAAE,OAAO;AAAE,mBAASkC,OAAM,MAAM,SAAS,GAAGA,QAAO,GAAGA,QAAO;AAC3D,iBAAK,OAAO,MAAMA,IAAG,GAAG,QAAQ,KAAK,OAAO;AAAE;AAAA,YAAM;AAAA,UACtD;AAAA,QAAE;AACF,eAAO;AAAA,MACT;AAEA,eAAS,iBAAiB,IAAI,UAAU,IAAI,MAAM;AAChD,YAAI,QAAQ,uBAAuB,SAAS,KAAK,IAAI,IAAI;AACzD,YAAI,OAAO,MAAM,MAAM/B,SAAQ,MAAM,OAAO,MAAM,MAAM,KAAK,WAAW,MAAM;AAE9E,YAAI;AACJ,YAAI,KAAK,YAAY,GAAG;AACtB,mBAAS+B,OAAM,GAAGA,OAAM,GAAGA,QAAO;AAChC,mBAAO/B,UAASuB,iBAAgB,SAAS,KAAK,KAAK,OAAO,MAAM,aAAavB,MAAK,CAAC,GAAG;AAAE,gBAAEA;AAAA,YAAO;AACjG,mBAAO,MAAM,aAAa,MAAM,MAAM,YAAYuB,iBAAgB,SAAS,KAAK,KAAK,OAAO,MAAM,aAAa,GAAG,CAAC,GAAG;AAAE,gBAAE;AAAA,YAAK;AAC/H,gBAAInD,OAAMC,cAAa,KAAK2B,UAAS,KAAK,OAAO,MAAM,WAAW,MAAM,YACtE;AAAE,qBAAO,KAAK,WAAW,sBAAsB;AAAA,YAAG,OAElD;AAAE,qBAAO,cAAcD,OAAM,MAAMC,QAAO,GAAG,EAAE,eAAe,GAAG,IAAI;AAAA,YAAG;AAC1E,gBAAI,KAAK,QAAQ,KAAK,SAASA,UAAS,GAAG;AAAE;AAAA,YAAM;AACnD,kBAAMA;AACN,YAAAA,SAAQA,SAAQ;AAChB,uBAAW;AAAA,UACb;AACA,cAAI5B,OAAMC,cAAa,IAAI;AAAE,mBAAO,0BAA0B,GAAG,QAAQ,SAAS,IAAI;AAAA,UAAG;AAAA,QAC3F,OAAO;AACL,cAAI2B,SAAQ,GAAG;AAAE,uBAAW,OAAO;AAAA,UAAS;AAC5C,cAAI;AACJ,cAAI,GAAG,QAAQ,iBAAiB,QAAQ,KAAK,eAAe,GAAG,SAAS,GACtE;AAAE,mBAAO,MAAM,QAAQ,UAAU,MAAM,SAAS,IAAI,CAAC;AAAA,UAAG,OAExD;AAAE,mBAAO,KAAK,sBAAsB;AAAA,UAAG;AAAA,QAC3C;AACA,YAAI5B,OAAMC,cAAa,KAAK,CAAC2B,WAAU,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,KAAK,QAAQ;AAC1E,cAAI,QAAQ,KAAK,WAAW,eAAe,EAAE,CAAC;AAC9C,cAAI,OACF;AAAE,mBAAO,EAAC,MAAM,MAAM,MAAM,OAAO,MAAM,OAAOwH,WAAU,GAAG,OAAO,GAAG,KAAK,MAAM,KAAK,QAAQ,MAAM,OAAM;AAAA,UAAG,OAE9G;AAAE,mBAAO;AAAA,UAAU;AAAA,QACvB;AAEA,YAAI,OAAO,KAAK,MAAM,SAAS,KAAK,KAAK,OAAO,KAAK,SAAS,SAAS,KAAK;AAC5E,YAAI,OAAO,OAAO,QAAQ;AAC1B,YAAI,UAAU,SAAS,KAAK,QAAQ;AACpC,YAAI3H,KAAI;AACR,eAAOA,KAAI,QAAQ,SAAS,GAAGA,MAC7B;AAAE,cAAI,MAAM,QAAQA,EAAC,GAAG;AAAE;AAAA,UAAM;AAAA,QAAE;AACpC,YAAI,MAAMA,KAAI,QAAQA,KAAI,CAAC,IAAI,GAAG,MAAM,QAAQA,EAAC;AACjD,YAAI,SAAS;AAAA,UAAC,OAAO,YAAY,UAAU,KAAK,QAAQ,KAAK,QAAQ,SAAS,KAAK;AAAA,UACrE,QAAQ,YAAY,SAAS,KAAK,OAAO,KAAK,SAAS,SAAS,KAAK;AAAA,UACrE;AAAA,UAAU,QAAQ;AAAA,QAAG;AACnC,YAAI,CAAC,KAAK,QAAQ,CAAC,KAAK,OAAO;AAAE,iBAAO,QAAQ;AAAA,QAAM;AACtD,YAAI,CAAC,GAAG,QAAQ,2BAA2B;AAAE,iBAAO,OAAO;AAAM,iBAAO,UAAU;AAAA,QAAM;AAExF,eAAO;AAAA,MACT;AAIA,eAAS,0BAA0B,SAAS,MAAM;AAChD,YAAI,CAAC,OAAO,UAAU,OAAO,eAAe,QACxC,OAAO,eAAe,OAAO,cAAc,CAAC2D,mBAAkB,OAAO,GACvE;AAAE,iBAAO;AAAA,QAAK;AAChB,YAAI,SAAS,OAAO,cAAc,OAAO;AACzC,YAAI,SAAS,OAAO,cAAc,OAAO;AACzC,eAAO;AAAA,UAAC,MAAM,KAAK,OAAO;AAAA,UAAQ,OAAO,KAAK,QAAQ;AAAA,UAC9C,KAAK,KAAK,MAAM;AAAA,UAAQ,QAAQ,KAAK,SAAS;AAAA,QAAM;AAAA,MAC9D;AAEA,eAAS,6BAA6B,UAAU;AAC9C,YAAI,SAAS,SAAS;AACpB,mBAAS,QAAQ,QAAQ,CAAC;AAC1B,mBAAS,QAAQ,UAAU;AAC3B,cAAI,SAAS,MAAM;AAAE,qBAAS3D,KAAI,GAAGA,KAAI,SAAS,KAAK,QAAQA,MAC7D;AAAE,uBAAS,QAAQ,OAAOA,EAAC,IAAI,CAAC;AAAA,YAAG;AAAA,UAAE;AAAA,QACzC;AAAA,MACF;AAEA,eAAS,0BAA0B,IAAI;AACrC,WAAG,QAAQ,kBAAkB;AAC7B,QAAAJ,gBAAe,GAAG,QAAQ,WAAW;AACrC,iBAASI,KAAI,GAAGA,KAAI,GAAG,QAAQ,KAAK,QAAQA,MAC1C;AAAE,uCAA6B,GAAG,QAAQ,KAAKA,EAAC,CAAC;AAAA,QAAG;AAAA,MACxD;AAEA,eAAS,YAAY,IAAI;AACvB,kCAA0B,EAAE;AAC5B,WAAG,QAAQ,kBAAkB,GAAG,QAAQ,mBAAmB,GAAG,QAAQ,iBAAiB;AACvF,YAAI,CAAC,GAAG,QAAQ,cAAc;AAAE,aAAG,QAAQ,iBAAiB;AAAA,QAAM;AAClE,WAAG,QAAQ,eAAe;AAAA,MAC5B;AAEA,eAAS,cAAc;AAIrB,YAAIrB,WAAUM,UAAS;AAAE,iBAAO,EAAE,SAAS,KAAK,sBAAsB,EAAE,OAAO,SAAS,iBAAiB,SAAS,IAAI,EAAE,UAAU;AAAA,QAAG;AACrI,eAAO,OAAO,gBAAgB,SAAS,mBAAmB,SAAS,MAAM;AAAA,MAC3E;AACA,eAAS,cAAc;AACrB,YAAIN,WAAUM,UAAS;AAAE,iBAAO,EAAE,SAAS,KAAK,sBAAsB,EAAE,MAAM,SAAS,iBAAiB,SAAS,IAAI,EAAE,SAAS;AAAA,QAAG;AACnI,eAAO,OAAO,gBAAgB,SAAS,mBAAmB,SAAS,MAAM;AAAA,MAC3E;AAEA,eAAS,gBAAgB,SAAS;AAChC,YAAI,SAAS;AACb,YAAI,QAAQ,SAAS;AAAE,mBAASe,KAAI,GAAGA,KAAI,QAAQ,QAAQ,QAAQ,EAAEA,IAAG;AAAE,gBAAI,QAAQ,QAAQA,EAAC,EAAE,OAC/F;AAAE,wBAAUiH,cAAa,QAAQ,QAAQjH,EAAC,CAAC;AAAA,YAAG;AAAA,UAAE;AAAA,QAAE;AACpD,eAAO;AAAA,MACT;AAMA,eAAS,gBAAgB,IAAI,SAAS,MAAM,SAAS,gBAAgB;AACnE,YAAI,CAAC,gBAAgB;AACnB,cAAI,SAAS,gBAAgB,OAAO;AACpC,eAAK,OAAO;AAAQ,eAAK,UAAU;AAAA,QACrC;AACA,YAAI,WAAW,QAAQ;AAAE,iBAAO;AAAA,QAAK;AACrC,YAAI,CAAC,SAAS;AAAE,oBAAU;AAAA,QAAS;AACnC,YAAI,OAAOgG,cAAa,OAAO;AAC/B,YAAI,WAAW,SAAS;AAAE,kBAAQkB,YAAW,GAAG,OAAO;AAAA,QAAG,OACrD;AAAE,kBAAQ,GAAG,QAAQ;AAAA,QAAY;AACtC,YAAI,WAAW,UAAU,WAAW,UAAU;AAC5C,cAAI,OAAO,GAAG,QAAQ,UAAU,sBAAsB;AACtD,kBAAQ,KAAK,OAAO,WAAW,WAAW,IAAI,YAAY;AAC1D,cAAI,OAAO,KAAK,QAAQ,WAAW,WAAW,IAAI,YAAY;AAC9D,eAAK,QAAQ;AAAM,eAAK,SAAS;AAAA,QACnC;AACA,aAAK,OAAO;AAAM,aAAK,UAAU;AACjC,eAAO;AAAA,MACT;AAIA,eAAS,gBAAgB,IAAI,QAAQ,SAAS;AAC5C,YAAI,WAAW,OAAO;AAAE,iBAAO;AAAA,QAAO;AACtC,YAAI,OAAO,OAAO,MAAM,MAAM,OAAO;AAErC,YAAI,WAAW,QAAQ;AACrB,kBAAQ,YAAY;AACpB,iBAAO,YAAY;AAAA,QACrB,WAAW,WAAW,WAAW,CAAC,SAAS;AACzC,cAAI,WAAW,GAAG,QAAQ,MAAM,sBAAsB;AACtD,kBAAQ,SAAS;AACjB,iBAAO,SAAS;AAAA,QAClB;AAEA,YAAI,eAAe,GAAG,QAAQ,UAAU,sBAAsB;AAC9D,eAAO,EAAC,MAAM,OAAO,aAAa,MAAM,KAAK,MAAM,aAAa,IAAG;AAAA,MACrE;AAEA,eAASU,YAAW,IAAI,KAAK,SAAS,SAAS,MAAM;AACnD,YAAI,CAAC,SAAS;AAAE,oBAAU5D,SAAQ,GAAG,KAAK,IAAI,IAAI;AAAA,QAAG;AACrD,eAAO,gBAAgB,IAAI,SAASwD,aAAY,IAAI,SAAS,IAAI,IAAI,IAAI,GAAG,OAAO;AAAA,MACrF;AAkBA,eAASK,cAAa,IAAI,KAAK,SAAS,SAAS,iBAAiB,WAAW;AAC3E,kBAAU,WAAW7D,SAAQ,GAAG,KAAK,IAAI,IAAI;AAC7C,YAAI,CAAC,iBAAiB;AAAE,4BAAkB,sBAAsB,IAAI,OAAO;AAAA,QAAG;AAC9E,iBAAS8D,KAAIC,KAAI,OAAO;AACtB,cAAI,IAAI,oBAAoB,IAAI,iBAAiBA,KAAI,QAAQ,UAAU,QAAQ,SAAS;AACxF,cAAI,OAAO;AAAE,cAAE,OAAO,EAAE;AAAA,UAAO,OAAO;AAAE,cAAE,QAAQ,EAAE;AAAA,UAAM;AAC1D,iBAAO,gBAAgB,IAAI,SAAS,GAAG,OAAO;AAAA,QAChD;AACA,YAAI,QAAQzF,UAAS,SAAS,GAAG,IAAI,SAAS,GAAG,KAAK,IAAI,IAAI,SAAS,IAAI;AAC3E,YAAI,MAAM,QAAQ,KAAK,QAAQ;AAC7B,eAAK,QAAQ,KAAK;AAClB,mBAAS;AAAA,QACX,WAAW,MAAM,GAAG;AAClB,eAAK;AACL,mBAAS;AAAA,QACX;AACA,YAAI,CAAC,OAAO;AAAE,iBAAOwF,KAAI,UAAU,WAAW,KAAK,IAAI,IAAI,UAAU,QAAQ;AAAA,QAAE;AAE/E,iBAAS,QAAQC,KAAIC,UAAS,QAAQ;AACpC,cAAI,OAAO,MAAMA,QAAO,GAAG,QAAQ,KAAK,SAAS;AACjD,iBAAOF,KAAI,SAASC,MAAK,IAAIA,KAAI,SAAS,MAAM;AAAA,QAClD;AACA,YAAI,UAAU/F,eAAc,OAAO,IAAI,MAAM;AAC7C,YAAI,QAAQD;AACZ,YAAI,MAAM,QAAQ,IAAI,SAAS,UAAU,QAAQ;AACjD,YAAI,SAAS,MAAM;AAAE,cAAI,QAAQ,QAAQ,IAAI,OAAO,UAAU,QAAQ;AAAA,QAAG;AACzE,eAAO;AAAA,MACT;AAIA,eAASkG,gBAAe,IAAI,KAAK;AAC/B,YAAI,OAAO;AACX,cAAMlD,SAAQ,GAAG,KAAK,GAAG;AACzB,YAAI,CAAC,GAAG,QAAQ,cAAc;AAAE,iBAAO4C,WAAU,GAAG,OAAO,IAAI,IAAI;AAAA,QAAI;AACvE,YAAI,UAAU3D,SAAQ,GAAG,KAAK,IAAI,IAAI;AACtC,YAAI,MAAMgC,cAAa,OAAO,IAAIkB,YAAW,GAAG,OAAO;AACvD,eAAO,EAAC,MAAY,OAAO,MAAM,KAAU,QAAQ,MAAM,QAAQ,OAAM;AAAA,MACzE;AAQA,eAAS,YAAY,MAAM,IAAI,QAAQ,SAAS,MAAM;AACpD,YAAI,MAAMzC,KAAI,MAAM,IAAI,MAAM;AAC9B,YAAI,OAAO;AACX,YAAI,SAAS;AAAE,cAAI,UAAU;AAAA,QAAS;AACtC,eAAO;AAAA,MACT;AAIA,eAAS,WAAW,IAAI,GAAG,GAAG;AAC5B,YAAI,MAAM,GAAG;AACb,aAAK,GAAG,QAAQ;AAChB,YAAI,IAAI,GAAG;AAAE,iBAAO,YAAY,IAAI,OAAO,GAAG,MAAM,IAAI,EAAE;AAAA,QAAE;AAC5D,YAAI,QAAQH,cAAa,KAAK,CAAC,GAAG,OAAO,IAAI,QAAQ,IAAI,OAAO;AAChE,YAAI,QAAQ,MACV;AAAE,iBAAO,YAAY,IAAI,QAAQ,IAAI,OAAO,GAAGN,SAAQ,KAAK,IAAI,EAAE,KAAK,QAAQ,MAAM,GAAG,CAAC;AAAA,QAAE;AAC7F,YAAI,IAAI,GAAG;AAAE,cAAI;AAAA,QAAG;AAEpB,YAAI,UAAUA,SAAQ,KAAK,KAAK;AAChC,mBAAS;AACP,cAAI,QAAQ,gBAAgB,IAAI,SAAS,OAAO,GAAG,CAAC;AACpD,cAAI,YAAY0B,qBAAoB,SAAS,MAAM,MAAM,MAAM,OAAO,KAAK,MAAM,UAAU,IAAI,IAAI,EAAE;AACrG,cAAI,CAAC,WAAW;AAAE,mBAAO;AAAA,UAAM;AAC/B,cAAI,WAAW,UAAU,KAAK,CAAC;AAC/B,cAAI,SAAS,QAAQ,OAAO;AAAE,mBAAO;AAAA,UAAS;AAC9C,oBAAU1B,SAAQ,KAAK,QAAQ,SAAS,IAAI;AAAA,QAC9C;AAAA,MACF;AAEA,eAAS,kBAAkB,IAAI,SAAS,iBAAiB,GAAG;AAC1D,aAAK,gBAAgB,OAAO;AAC5B,YAAI,MAAM,QAAQ,KAAK;AACvB,YAAI,QAAQnC,WAAU,SAAU,IAAI;AAAE,iBAAO,oBAAoB,IAAI,iBAAiB,KAAK,CAAC,EAAE,UAAU;AAAA,QAAG,GAAG,KAAK,CAAC;AACpH,cAAMA,WAAU,SAAU,IAAI;AAAE,iBAAO,oBAAoB,IAAI,iBAAiB,EAAE,EAAE,MAAM;AAAA,QAAG,GAAG,OAAO,GAAG;AAC1G,eAAO,EAAC,OAAc,IAAQ;AAAA,MAChC;AAEA,eAASqG,uBAAsB,IAAI,SAAS,iBAAiBvH,SAAQ;AACnE,YAAI,CAAC,iBAAiB;AAAE,4BAAkB,sBAAsB,IAAI,OAAO;AAAA,QAAG;AAC9E,YAAI,YAAY,gBAAgB,IAAI,SAAS,oBAAoB,IAAI,iBAAiBA,OAAM,GAAG,MAAM,EAAE;AACvG,eAAO,kBAAkB,IAAI,SAAS,iBAAiB,SAAS;AAAA,MAClE;AAIA,eAAS,WAAW,KAAK,GAAG,GAAG,MAAM;AACnC,eAAO,IAAI,UAAU,IAAI,QAAQ,IAAI,MAAM,IAAI,QAAQ,OAAO,IAAI,OAAO,IAAI,SAAS;AAAA,MACxF;AAEA,eAAS,gBAAgB,IAAI,SAASyD,SAAQ,GAAG,GAAG;AAElD,aAAK4B,cAAa,OAAO;AACzB,YAAI,kBAAkB,sBAAsB,IAAI,OAAO;AAGvD,YAAIiB,gBAAe,gBAAgB,OAAO;AAC1C,YAAI,QAAQ,GAAG,MAAM,QAAQ,KAAK,QAAQ,MAAM;AAEhD,YAAI,QAAQ3E,UAAS,SAAS,GAAG,IAAI,SAAS;AAG9C,YAAI,OAAO;AACT,cAAI,QAAQ,GAAG,QAAQ,eAAe,wBAAwB,gBAChD,IAAI,SAAS8B,SAAQ,iBAAiB,OAAO,GAAG,CAAC;AAC/D,gBAAM,KAAK,SAAS;AAKpB,kBAAQ,MAAM,KAAK,OAAO,KAAK,KAAK;AACpC,gBAAM,MAAM,KAAK,KAAK,KAAK,OAAO;AAAA,QACpC;AAKA,YAAI,WAAW,MAAM,YAAY;AACjC,YAAI,KAAKvC,WAAU,SAAUkG,KAAI;AAC/B,cAAI,MAAM,oBAAoB,IAAI,iBAAiBA,GAAE;AACrD,cAAI,OAAOd;AAAc,cAAI,UAAUA;AACvC,cAAI,CAAC,WAAW,KAAK,GAAG,GAAG,KAAK,GAAG;AAAE,mBAAO;AAAA,UAAM;AAClD,cAAI,IAAI,OAAO,KAAK,IAAI,QAAQ,GAAG;AACjC,uBAAWc;AACX,wBAAY;AAAA,UACd;AACA,iBAAO;AAAA,QACT,GAAG,OAAO,GAAG;AAEb,YAAI,OAAO,QAAQ,UAAU;AAE7B,YAAI,WAAW;AAEb,cAAI,SAAS,IAAI,UAAU,OAAO,UAAU,QAAQ,GAAG,UAAU,UAAU;AAC3E,eAAK,YAAY,UAAU,IAAI;AAC/B,mBAAS,UAAU,UAAU;AAC7B,kBAAQ,SAAS,UAAU,OAAO,UAAU;AAAA,QAC9C,OAAO;AAEL,cAAI,CAAC,QAAQ,MAAM,OAAO,MAAM,QAAQ;AAAE;AAAA,UAAM;AAIhD,mBAAS,MAAM,IAAI,UAAU,MAAM,QAAQ,KAAK,SAAS,WACtD,oBAAoB,IAAI,iBAAiB,MAAM,MAAM,IAAI,EAAE,EAAE,SAASd,iBAAgB,KAAM,MAC7F,UAAU;AAGZ,cAAI,SAASY,cAAa,IAAIpD,KAAIL,SAAQ,IAAI,MAAM,GAAG,QAAQ,SAAS,eAAe;AACvF,kBAAQ,OAAO;AACf,oBAAU,IAAI,OAAO,MAAM,KAAK,KAAK,OAAO,SAAS,IAAI;AAAA,QAC3D;AAEA,aAAKzC,oBAAmB,QAAQ,MAAM,IAAI,CAAC;AAC3C,eAAO,YAAYyC,SAAQ,IAAI,QAAQ,SAAS,IAAI,KAAK;AAAA,MAC3D;AAEA,eAAS,eAAe,IAAI,SAASA,SAAQ,iBAAiB,OAAO,GAAG,GAAG;AAKzE,YAAIzB,SAAQd,WAAU,SAAU7B,IAAG;AACjC,cAAImI,QAAO,MAAMnI,EAAC,GAAGoI,OAAMD,MAAK,SAAS;AACzC,iBAAO,WAAWN;AAAA,YAAa;AAAA,YAAIpD,KAAIL,SAAQgE,OAAMD,MAAK,KAAKA,MAAK,MAAMC,OAAM,WAAW,OAAO;AAAA,YACnE;AAAA,YAAQ;AAAA,YAAS;AAAA,UAAe,GAAG,GAAG,GAAG,IAAI;AAAA,QAC9E,GAAG,GAAG,MAAM,SAAS,CAAC;AACtB,YAAI,OAAO,MAAMzF,MAAK;AAItB,YAAIA,SAAQ,GAAG;AACb,cAAI,MAAM,KAAK,SAAS;AACxB,cAAIxC,SAAQ0H;AAAA,YAAa;AAAA,YAAIpD,KAAIL,SAAQ,MAAM,KAAK,OAAO,KAAK,IAAI,MAAM,UAAU,QAAQ;AAAA,YACnE;AAAA,YAAQ;AAAA,YAAS;AAAA,UAAe;AACzD,cAAI,WAAWjE,QAAO,GAAG,GAAG,IAAI,KAAKA,OAAM,MAAM,GAC/C;AAAE,mBAAO,MAAMwC,SAAQ,CAAC;AAAA,UAAG;AAAA,QAC/B;AACA,eAAO;AAAA,MACT;AAEA,eAAS,sBAAsB,IAAI,SAAS,SAAS,iBAAiB,OAAO,GAAG,GAAG;AAQjF,YAAI0F,OAAM,kBAAkB,IAAI,SAAS,iBAAiB,CAAC;AAC3D,YAAI,QAAQA,KAAI;AAChB,YAAI,MAAMA,KAAI;AACd,YAAI,KAAK,KAAK,QAAQ,KAAK,OAAO,MAAM,CAAC,CAAC,GAAG;AAAE;AAAA,QAAO;AACtD,YAAI,OAAO,MAAM,cAAc;AAC/B,iBAASrI,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AACrC,cAAI,IAAI,MAAMA,EAAC;AACf,cAAI,EAAE,QAAQ,OAAO,EAAE,MAAM,OAAO;AAAE;AAAA,UAAS;AAC/C,cAAI,MAAM,EAAE,SAAS;AACrB,cAAI,OAAO,oBAAoB,IAAI,iBAAiB,MAAM,KAAK,IAAI,KAAK,EAAE,EAAE,IAAI,IAAI,KAAK,IAAI,OAAO,EAAE,IAAI,CAAC,EAAE;AAG7G,cAAI,OAAO,OAAO,IAAI,IAAI,OAAO,MAAM,OAAO;AAC9C,cAAI,CAAC,QAAQ,cAAc,MAAM;AAC/B,mBAAO;AACP,0BAAc;AAAA,UAChB;AAAA,QACF;AACA,YAAI,CAAC,MAAM;AAAE,iBAAO,MAAM,MAAM,SAAS,CAAC;AAAA,QAAG;AAE7C,YAAI,KAAK,OAAO,OAAO;AAAE,iBAAO,EAAC,MAAM,OAAO,IAAI,KAAK,IAAI,OAAO,KAAK,MAAK;AAAA,QAAG;AAC/E,YAAI,KAAK,KAAK,KAAK;AAAE,iBAAO,EAAC,MAAM,KAAK,MAAM,IAAI,KAAK,OAAO,KAAK,MAAK;AAAA,QAAG;AAC3E,eAAO;AAAA,MACT;AAEA,UAAI;AAEJ,eAASsI,YAAW,SAAS;AAC3B,YAAI,QAAQ,oBAAoB,MAAM;AAAE,iBAAO,QAAQ;AAAA,QAAiB;AACxE,YAAI,eAAe,MAAM;AACvB,wBAAcxI,KAAI,OAAO,MAAM,sBAAsB;AAGrD,mBAASE,KAAI,GAAGA,KAAI,IAAI,EAAEA,IAAG;AAC3B,wBAAY,YAAY,SAAS,eAAe,GAAG,CAAC;AACpD,wBAAY,YAAYF,KAAI,IAAI,CAAC;AAAA,UACnC;AACA,sBAAY,YAAY,SAAS,eAAe,GAAG,CAAC;AAAA,QACtD;AACA,QAAAD,sBAAqB,QAAQ,SAAS,WAAW;AACjD,YAAI,SAAS,YAAY,eAAe;AACxC,YAAI,SAAS,GAAG;AAAE,kBAAQ,mBAAmB;AAAA,QAAQ;AACrD,QAAAD,gBAAe,QAAQ,OAAO;AAC9B,eAAO,UAAU;AAAA,MACnB;AAGA,eAAS+H,WAAU,SAAS;AAC1B,YAAI,QAAQ,mBAAmB,MAAM;AAAE,iBAAO,QAAQ;AAAA,QAAgB;AACtE,YAAI,SAAS7H,KAAI,QAAQ,YAAY;AACrC,YAAI,MAAMA,KAAI,OAAO,CAAC,MAAM,GAAG,sBAAsB;AACrD,QAAAD,sBAAqB,QAAQ,SAAS,GAAG;AACzC,YAAI,OAAO,OAAO,sBAAsB,GAAG,SAAS,KAAK,QAAQ,KAAK,QAAQ;AAC9E,YAAI,QAAQ,GAAG;AAAE,kBAAQ,kBAAkB;AAAA,QAAO;AAClD,eAAO,SAAS;AAAA,MAClB;AAIA,eAAS6H,eAAc,IAAI;AACzB,YAAI,IAAI,GAAG,SAAS,OAAO,CAAC,GAAG,QAAQ,CAAC;AACxC,YAAI,aAAa,EAAE,QAAQ;AAC3B,iBAAS,IAAI,EAAE,QAAQ,YAAY1H,KAAI,GAAG,GAAG,IAAI,EAAE,aAAa,EAAEA,IAAG;AACnE,cAAI8G,MAAK,GAAG,QAAQ,YAAY9G,EAAC,EAAE;AACnC,eAAK8G,GAAE,IAAI,EAAE,aAAa,EAAE,aAAa;AACzC,gBAAMA,GAAE,IAAI,EAAE;AAAA,QAChB;AACA,eAAO;AAAA,UAAC,UAAUyB,sBAAqB,CAAC;AAAA,UAChC,kBAAkB,EAAE,QAAQ;AAAA,UAC5B,YAAY;AAAA,UACZ,aAAa;AAAA,UACb,cAAc,EAAE,QAAQ;AAAA,QAAW;AAAA,MAC7C;AAKA,eAASA,sBAAqB,SAAS;AACrC,eAAO,QAAQ,SAAS,sBAAsB,EAAE,OAAO,QAAQ,MAAM,sBAAsB,EAAE;AAAA,MAC/F;AAKA,eAAS,eAAe,IAAI;AAC1B,YAAI,KAAKD,YAAW,GAAG,OAAO,GAAG,WAAW,GAAG,QAAQ;AACvD,YAAI,UAAU,YAAY,KAAK,IAAI,GAAG,GAAG,QAAQ,SAAS,cAAcX,WAAU,GAAG,OAAO,IAAI,CAAC;AACjG,eAAO,SAAU,MAAM;AACrB,cAAI5B,cAAa,GAAG,KAAK,IAAI,GAAG;AAAE,mBAAO;AAAA,UAAE;AAE3C,cAAI,gBAAgB;AACpB,cAAI,KAAK,SAAS;AAAE,qBAAS/F,KAAI,GAAGA,KAAI,KAAK,QAAQ,QAAQA,MAAK;AAChE,kBAAI,KAAK,QAAQA,EAAC,EAAE,QAAQ;AAAE,iCAAiB,KAAK,QAAQA,EAAC,EAAE;AAAA,cAAQ;AAAA,YACzE;AAAA,UAAE;AAEF,cAAI,UACF;AAAE,mBAAO,iBAAiB,KAAK,KAAK,KAAK,KAAK,SAAS,OAAO,KAAK,KAAK;AAAA,UAAG,OAE3E;AAAE,mBAAO,gBAAgB;AAAA,UAAG;AAAA,QAChC;AAAA,MACF;AAEA,eAASwI,qBAAoB,IAAI;AAC/B,YAAI,MAAM,GAAG,KAAK,MAAM,eAAe,EAAE;AACzC,YAAI,KAAK,SAAU,MAAM;AACvB,cAAI,YAAY,IAAI,IAAI;AACxB,cAAI,aAAa,KAAK,QAAQ;AAAE,YAAArE,kBAAiB,MAAM,SAAS;AAAA,UAAG;AAAA,QACrE,CAAC;AAAA,MACH;AAOA,eAAS,aAAa,IAAI,GAAG,SAAS,SAAS;AAC7C,YAAI,UAAU,GAAG;AACjB,YAAI,CAAC,WAAWjB,UAAS,CAAC,EAAE,aAAa,gBAAgB,KAAK,QAAQ;AAAE,iBAAO;AAAA,QAAK;AAEpF,YAAI,GAAG,GAAG,QAAQ,QAAQ,UAAU,sBAAsB;AAE1D,YAAI;AAAE,cAAI,EAAE,UAAU,MAAM;AAAM,cAAI,EAAE,UAAU,MAAM;AAAA,QAAK,SACtD,KAAK;AAAE,iBAAO;AAAA,QAAK;AAC1B,YAAI,SAAS,WAAW,IAAI,GAAG,CAAC,GAAG;AACnC,YAAI,WAAW,OAAO,OAAO,MAAM,OAAOc,SAAQ,GAAG,KAAK,OAAO,IAAI,EAAE,MAAM,UAAU,OAAO,IAAI;AAChG,cAAI,UAAUnD,aAAY,MAAM,KAAK,QAAQ,GAAG,QAAQ,OAAO,IAAI,KAAK;AACxE,mBAAS4D,KAAI,OAAO,MAAM,KAAK,IAAI,GAAG,KAAK,OAAO,IAAI2C,UAAS,GAAG,OAAO,EAAE,QAAQO,WAAU,GAAG,OAAO,CAAC,IAAI,OAAO,CAAC;AAAA,QACtH;AACA,eAAO;AAAA,MACT;AAIA,eAASF,eAAc,IAAI,GAAG;AAC5B,YAAI,KAAK,GAAG,QAAQ,QAAQ;AAAE,iBAAO;AAAA,QAAK;AAC1C,aAAK,GAAG,QAAQ;AAChB,YAAI,IAAI,GAAG;AAAE,iBAAO;AAAA,QAAK;AACzB,YAAI,OAAO,GAAG,QAAQ;AACtB,iBAASzH,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AACpC,eAAK,KAAKA,EAAC,EAAE;AACb,cAAI,IAAI,GAAG;AAAE,mBAAOA;AAAA,UAAE;AAAA,QACxB;AAAA,MACF;AAQA,eAASyI,WAAU,IAAI,MAAM,IAAI,SAAS;AACxC,YAAI,QAAQ,MAAM;AAAE,iBAAO,GAAG,IAAI;AAAA,QAAO;AACzC,YAAI,MAAM,MAAM;AAAE,eAAK,GAAG,IAAI,QAAQ,GAAG,IAAI;AAAA,QAAM;AACnD,YAAI,CAAC,SAAS;AAAE,oBAAU;AAAA,QAAG;AAE7B,YAAI,UAAU,GAAG;AACjB,YAAI,WAAW,KAAK,QAAQ,WACvB,QAAQ,qBAAqB,QAAQ,QAAQ,oBAAoB,OACpE;AAAE,kBAAQ,oBAAoB;AAAA,QAAM;AAEtC,WAAG,MAAM,cAAc;AAEvB,YAAI,QAAQ,QAAQ,QAAQ;AAC1B,cAAIpD,sBAAqBQ,cAAa,GAAG,KAAK,IAAI,IAAI,QAAQ,QAC5D;AAAE,YAAA6C,WAAU,EAAE;AAAA,UAAG;AAAA,QACrB,WAAW,MAAM,QAAQ,UAAU;AACjC,cAAIrD,sBAAqBS,iBAAgB,GAAG,KAAK,KAAK,OAAO,IAAI,QAAQ,UAAU;AACjF,YAAA4C,WAAU,EAAE;AAAA,UACd,OAAO;AACL,oBAAQ,YAAY;AACpB,oBAAQ,UAAU;AAAA,UACpB;AAAA,QACF,WAAW,QAAQ,QAAQ,YAAY,MAAM,QAAQ,QAAQ;AAC3D,UAAAA,WAAU,EAAE;AAAA,QACd,WAAW,QAAQ,QAAQ,UAAU;AACnC,cAAI,MAAM,iBAAiB,IAAI,IAAI,KAAK,SAAS,CAAC;AAClD,cAAI,KAAK;AACP,oBAAQ,OAAO,QAAQ,KAAK,MAAM,IAAI,KAAK;AAC3C,oBAAQ,WAAW,IAAI;AACvB,oBAAQ,UAAU;AAAA,UACpB,OAAO;AACL,YAAAA,WAAU,EAAE;AAAA,UACd;AAAA,QACF,WAAW,MAAM,QAAQ,QAAQ;AAC/B,cAAI,QAAQ,iBAAiB,IAAI,MAAM,MAAM,EAAE;AAC/C,cAAI,OAAO;AACT,oBAAQ,OAAO,QAAQ,KAAK,MAAM,GAAG,MAAM,KAAK;AAChD,oBAAQ,SAAS,MAAM;AAAA,UACzB,OAAO;AACL,YAAAA,WAAU,EAAE;AAAA,UACd;AAAA,QACF,OAAO;AACL,cAAI,SAAS,iBAAiB,IAAI,MAAM,MAAM,EAAE;AAChD,cAAI,SAAS,iBAAiB,IAAI,IAAI,KAAK,SAAS,CAAC;AACrD,cAAI,UAAU,QAAQ;AACpB,oBAAQ,OAAO,QAAQ,KAAK,MAAM,GAAG,OAAO,KAAK,EAC9C,OAAOlC,gBAAe,IAAI,OAAO,OAAO,OAAO,KAAK,CAAC,EACrD,OAAO,QAAQ,KAAK,MAAM,OAAO,KAAK,CAAC;AAC1C,oBAAQ,UAAU;AAAA,UACpB,OAAO;AACL,YAAAkC,WAAU,EAAE;AAAA,UACd;AAAA,QACF;AAEA,YAAI,MAAM,QAAQ;AAClB,YAAI,KAAK;AACP,cAAI,KAAK,IAAI,OACX;AAAE,gBAAI,SAAS;AAAA,UAAS,WACjB,OAAO,IAAI,QAAQ,IAAI,MAC9B;AAAE,oBAAQ,mBAAmB;AAAA,UAAM;AAAA,QACvC;AAAA,MACF;AAIA,eAASC,eAAc,IAAI,MAAMxG,OAAM;AACrC,WAAG,MAAM,cAAc;AACvB,YAAI,UAAU,GAAG,SAAS,MAAM,GAAG,QAAQ;AAC3C,YAAI,OAAO,QAAQ,IAAI,SAAS,OAAO,IAAI,QAAQ,IAAI,MACrD;AAAE,kBAAQ,mBAAmB;AAAA,QAAM;AAErC,YAAI,OAAO,QAAQ,YAAY,QAAQ,QAAQ,QAAQ;AAAE;AAAA,QAAO;AAChE,YAAI,WAAW,QAAQ,KAAKsF,eAAc,IAAI,IAAI,CAAC;AACnD,YAAI,SAAS,QAAQ,MAAM;AAAE;AAAA,QAAO;AACpC,YAAI,MAAM,SAAS,YAAY,SAAS,UAAU,CAAC;AACnD,YAAIxG,SAAQ,KAAKkB,KAAI,KAAK,IAAI;AAAE,cAAI,KAAKA,KAAI;AAAA,QAAG;AAAA,MAClD;AAGA,eAASuG,WAAU,IAAI;AACrB,WAAG,QAAQ,WAAW,GAAG,QAAQ,SAAS,GAAG,IAAI;AACjD,WAAG,QAAQ,OAAO,CAAC;AACnB,WAAG,QAAQ,aAAa;AAAA,MAC1B;AAEA,eAAS,iBAAiB,IAAI,MAAM,MAAM,KAAK;AAC7C,YAAI/F,SAAQ8E,eAAc,IAAI,IAAI,GAAG,MAAM,OAAO,GAAG,QAAQ;AAC7D,YAAI,CAACpC,sBAAqB,QAAQ,GAAG,IAAI,QAAQ,GAAG,IAAI,MACtD;AAAE,iBAAO,EAAC,OAAO1C,QAAO,OAAO,KAAI;AAAA,QAAE;AACvC,YAAI,IAAI,GAAG,QAAQ;AACnB,iBAAS3C,KAAI,GAAGA,KAAI2C,QAAO3C,MACzB;AAAE,eAAK,KAAKA,EAAC,EAAE;AAAA,QAAM;AACvB,YAAI,KAAK,MAAM;AACb,cAAI,MAAM,GAAG;AACX,gBAAI2C,UAAS,KAAK,SAAS,GAAG;AAAE,qBAAO;AAAA,YAAK;AAC5C,mBAAQ,IAAI,KAAKA,MAAK,EAAE,OAAQ;AAChC,YAAAA;AAAA,UACF,OAAO;AACL,mBAAO,IAAI;AAAA,UACb;AACA,kBAAQ;AAAM,kBAAQ;AAAA,QACxB;AACA,eAAOkD,cAAa,GAAG,KAAK,IAAI,KAAK,MAAM;AACzC,cAAIlD,WAAU,MAAM,IAAI,IAAI,KAAK,SAAS,IAAI;AAAE,mBAAO;AAAA,UAAK;AAC5D,kBAAQ,MAAM,KAAKA,UAAS,MAAM,IAAI,IAAI,EAAE,EAAE;AAC9C,UAAAA,UAAS;AAAA,QACX;AACA,eAAO,EAAC,OAAOA,QAAO,OAAO,KAAI;AAAA,MACnC;AAIA,eAASiG,YAAW,IAAI,MAAM,IAAI;AAChC,YAAI,UAAU,GAAG,SAAS,OAAO,QAAQ;AACzC,YAAI,KAAK,UAAU,KAAK,QAAQ,QAAQ,UAAU,MAAM,QAAQ,UAAU;AACxE,kBAAQ,OAAOpC,gBAAe,IAAI,MAAM,EAAE;AAC1C,kBAAQ,WAAW;AAAA,QACrB,OAAO;AACL,cAAI,QAAQ,WAAW,MACrB;AAAE,oBAAQ,OAAOA,gBAAe,IAAI,MAAM,QAAQ,QAAQ,EAAE,OAAO,QAAQ,IAAI;AAAA,UAAG,WAC3E,QAAQ,WAAW,MAC1B;AAAE,oBAAQ,OAAO,QAAQ,KAAK,MAAMiB,eAAc,IAAI,IAAI,CAAC;AAAA,UAAG;AAChE,kBAAQ,WAAW;AACnB,cAAI,QAAQ,SAAS,IACnB;AAAE,oBAAQ,OAAO,QAAQ,KAAK,OAAOjB,gBAAe,IAAI,QAAQ,QAAQ,EAAE,CAAC;AAAA,UAAG,WACvE,QAAQ,SAAS,IACxB;AAAE,oBAAQ,OAAO,QAAQ,KAAK,MAAM,GAAGiB,eAAc,IAAI,EAAE,CAAC;AAAA,UAAG;AAAA,QACnE;AACA,gBAAQ,SAAS;AAAA,MACnB;AAIA,eAASoB,gBAAe,IAAI;AAC1B,YAAI,OAAO,GAAG,QAAQ,MAAM,QAAQ;AACpC,iBAAS7I,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AACpC,cAAI,WAAW,KAAKA,EAAC;AACrB,cAAI,CAAC,SAAS,WAAW,CAAC,SAAS,QAAQ,SAAS,UAAU;AAAE,cAAE;AAAA,UAAO;AAAA,QAC3E;AACA,eAAO;AAAA,MACT;AAEA,eAAS8I,iBAAgB,IAAI;AAC3B,WAAG,QAAQ,MAAM,cAAc,GAAG,QAAQ,MAAM,iBAAiB,CAAC;AAAA,MACpE;AAEA,eAAS,iBAAiB,IAAI,SAAS;AACrC,YAAK,YAAY,OAAS,WAAU;AAEpC,YAAI,MAAM,GAAG,KAAK,SAAS,CAAC;AAC5B,YAAI,cAAc,OAAO,UAAU,SAAS,uBAAuB;AACnE,YAAI,cAAc,OAAO,YAAY,SAAS,uBAAuB;AAErE,iBAAS9I,KAAI,GAAGA,KAAI,IAAI,IAAI,OAAO,QAAQA,MAAK;AAC9C,cAAI,CAAC,WAAWA,MAAK,IAAI,IAAI,WAAW;AAAE;AAAA,UAAS;AACnD,cAAIE,SAAQ,IAAI,IAAI,OAAOF,EAAC;AAC5B,cAAIE,OAAM,KAAK,EAAE,QAAQ,GAAG,QAAQ,UAAUA,OAAM,GAAG,EAAE,OAAO,GAAG,QAAQ,UAAU;AAAE;AAAA,UAAS;AAChG,cAAI,YAAYA,OAAM,MAAM;AAC5B,cAAI,aAAa,GAAG,QAAQ,yBAC1B;AAAE,gCAAoB,IAAIA,OAAM,MAAM,WAAW;AAAA,UAAG;AACtD,cAAI,CAAC,WACH;AAAE,+BAAmB,IAAIA,QAAO,WAAW;AAAA,UAAG;AAAA,QAClD;AACA,eAAO;AAAA,MACT;AAGA,eAAS,oBAAoB,IAAI,MAAM,QAAQ;AAC7C,YAAI,MAAM2H,cAAa,IAAI,MAAM,OAAO,MAAM,MAAM,CAAC,GAAG,QAAQ,yBAAyB;AAEzF,YAAI,SAAS,OAAO,YAAY/H,KAAI,OAAO,QAAU,mBAAmB,CAAC;AACzE,eAAO,MAAM,OAAO,IAAI,OAAO;AAC/B,eAAO,MAAM,MAAM,IAAI,MAAM;AAC7B,eAAO,MAAM,SAAS,KAAK,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,GAAG,QAAQ,eAAe;AAEpF,YAAI,IAAI,OAAO;AAEb,cAAI,cAAc,OAAO,YAAYA,KAAI,OAAO,QAAU,8CAA8C,CAAC;AACzG,sBAAY,MAAM,UAAU;AAC5B,sBAAY,MAAM,OAAO,IAAI,MAAM,OAAO;AAC1C,sBAAY,MAAM,MAAM,IAAI,MAAM,MAAM;AACxC,sBAAY,MAAM,UAAU,IAAI,MAAM,SAAS,IAAI,MAAM,OAAO,OAAM;AAAA,QACxE;AAAA,MACF;AAEA,eAAS,UAAU,GAAG,GAAG;AAAE,eAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE;AAAA,MAAK;AAGnE,eAAS,mBAAmB,IAAII,QAAO,QAAQ;AAC7C,YAAI,UAAU,GAAG,SAAS,MAAM,GAAG;AACnC,YAAI,WAAW,SAAS,uBAAuB;AAC/C,YAAI,UAAUkH,UAAS,GAAG,OAAO,GAAG,WAAW,QAAQ;AACvD,YAAI,YAAY,KAAK,IAAI,QAAQ,YAAYE,cAAa,EAAE,IAAI,QAAQ,MAAM,UAAU,IAAI,QAAQ;AACpG,YAAI,SAAS,IAAI,aAAa;AAE9B,iBAASyB,KAAI,MAAM,KAAK,OAAO,QAAQ;AACrC,cAAI,MAAM,GAAG;AAAE,kBAAM;AAAA,UAAG;AACxB,gBAAM,KAAK,MAAM,GAAG;AACpB,mBAAS,KAAK,MAAM,MAAM;AAC1B,mBAAS,YAAYjJ,KAAI,OAAO,MAAM,uBAAwB,+BAA+B,OAAO,4CAA4C,MAAM,iBAAiB,SAAS,OAAO,YAAY,OAAO,SAAS,gDAAgD,SAAS,OAAO,IAAK,CAAC;AAAA,QAC3R;AAEA,iBAAS,YAAY,MAAM,SAAS,OAAO;AACzC,cAAI,UAAUkE,SAAQ,KAAK,IAAI;AAC/B,cAAI,UAAU,QAAQ,KAAK;AAC3B,cAAI7D,QAAO;AACX,mBAAS,OAAO,IAAI,MAAM;AACxB,mBAAOyH,YAAW,IAAInD,KAAI,MAAM,EAAE,GAAG,OAAO,SAAS,IAAI;AAAA,UAC3D;AAEA,mBAAS,MAAM,KAAK,KAAK,MAAM;AAC7B,gBAAIuE,UAASd,uBAAsB,IAAI,SAAS,MAAM,GAAG;AACzD,gBAAItH,QAAQ,OAAO,UAAW,QAAQ,WAAW,SAAS;AAC1D,gBAAI,KAAK,QAAQ,UAAUoI,QAAO,QAAQA,QAAO,OAAO,KAAK,KAAK,QAAQ,KAAK,OAAOA,QAAO,MAAM,CAAC,CAAC,IAAI,IAAI;AAC7G,mBAAO,OAAO,IAAIpI,KAAI,EAAEA,KAAI;AAAA,UAC9B;AAEA,cAAI,QAAQ0B,UAAS,SAAS,IAAI,SAAS;AAC3C,UAAAR,qBAAoB,OAAO,WAAW,GAAG,SAAS,OAAO,UAAU,OAAO,SAAU,MAAM,IAAI,KAAK9B,IAAG;AACpG,gBAAI,MAAM,OAAO;AACjB,gBAAI,UAAU,OAAO,MAAM,MAAM,SAAS,OAAO;AACjD,gBAAI,QAAQ,OAAO,KAAK,GAAG,MAAM,UAAU,MAAM;AAEjD,gBAAI,YAAY,WAAW,QAAQ,QAAQ,GAAG,UAAU,SAAS,QAAQ,MAAM;AAC/E,gBAAI,QAAQA,MAAK,GAAG,OAAO,CAAC,SAASA,MAAK,MAAM,SAAS;AACzD,gBAAI,MAAM,MAAM,QAAQ,OAAO,GAAG;AAChC,kBAAI,YAAY,SAAS,YAAY,YAAY;AACjD,kBAAI,aAAa,SAAS,UAAU,cAAc;AAClD,kBAAI,OAAO,WAAW,YAAY,MAAM,UAAU,OAAO;AACzD,kBAAI,QAAQ,YAAY,aAAa,MAAM,QAAQ,SAAS;AAC5D,cAAA+I,KAAI,MAAM,QAAQ,KAAK,QAAQ,MAAM,QAAQ,MAAM;AAAA,YACrD,OAAO;AACL,kBAAI,SAAS,UAAU,SAAS;AAChC,kBAAI,KAAK;AACP,0BAAU,UAAU,aAAa,QAAQ,WAAW,QAAQ;AAC5D,2BAAW,SAAS,YAAY,MAAM,MAAM,KAAK,QAAQ;AACzD,0BAAU,SAAS,WAAW,MAAM,IAAI,KAAK,OAAO;AACpD,2BAAW,UAAU,WAAW,OAAO,YAAY,MAAM;AAAA,cAC3D,OAAO;AACL,0BAAU,CAAC,SAAS,WAAW,MAAM,MAAM,KAAK,QAAQ;AACxD,2BAAW,CAAC,UAAU,aAAa,QAAQ,YAAY,QAAQ;AAC/D,0BAAU,CAAC,UAAU,WAAW,OAAO,WAAW,MAAM;AACxD,2BAAW,CAAC,SAAS,YAAY,MAAM,IAAI,KAAK,OAAO;AAAA,cACzD;AACA,cAAAA,KAAI,SAAS,QAAQ,KAAK,WAAW,SAAS,QAAQ,MAAM;AAC5D,kBAAI,QAAQ,SAAS,MAAM,KAAK;AAAE,gBAAAA,KAAI,UAAU,QAAQ,QAAQ,MAAM,MAAM,GAAG;AAAA,cAAG;AAClF,cAAAA,KAAI,SAAS,MAAM,KAAK,WAAW,SAAS,MAAM,MAAM;AAAA,YAC1D;AAEA,gBAAI,CAAC5I,UAAS,UAAU,SAASA,MAAK,IAAI,GAAG;AAAE,cAAAA,SAAQ;AAAA,YAAS;AAChE,gBAAI,UAAU,OAAOA,MAAK,IAAI,GAAG;AAAE,cAAAA,SAAQ;AAAA,YAAO;AAClD,gBAAI,CAAC,OAAO,UAAU,SAAS,GAAG,IAAI,GAAG;AAAE,oBAAM;AAAA,YAAS;AAC1D,gBAAI,UAAU,OAAO,GAAG,IAAI,GAAG;AAAE,oBAAM;AAAA,YAAO;AAAA,UAChD,CAAC;AACD,iBAAO,EAAC,OAAOA,QAAO,IAAQ;AAAA,QAChC;AAEA,YAAI,QAAQD,OAAM,KAAK,GAAG,MAAMA,OAAM,GAAG;AACzC,YAAI,MAAM,QAAQ,IAAI,MAAM;AAC1B,sBAAY,MAAM,MAAM,MAAM,IAAI,IAAI,EAAE;AAAA,QAC1C,OAAO;AACL,cAAI,WAAW8D,SAAQ,KAAK,MAAM,IAAI,GAAG,SAASA,SAAQ,KAAK,IAAI,IAAI;AACvE,cAAI,cAAc2B,YAAW,QAAQ,KAAKA,YAAW,MAAM;AAC3D,cAAI,UAAU,YAAY,MAAM,MAAM,MAAM,IAAI,cAAc,SAAS,KAAK,SAAS,IAAI,IAAI,EAAE;AAC/F,cAAI,aAAa,YAAY,IAAI,MAAM,cAAc,IAAI,MAAM,IAAI,EAAE,EAAE;AACvE,cAAI,aAAa;AACf,gBAAI,QAAQ,MAAM,WAAW,MAAM,GAAG;AACpC,cAAAoD,KAAI,QAAQ,OAAO,QAAQ,KAAK,MAAM,QAAQ,MAAM;AACpD,cAAAA,KAAI,UAAU,WAAW,KAAK,WAAW,MAAM,WAAW,MAAM;AAAA,YAClE,OAAO;AACL,cAAAA,KAAI,QAAQ,OAAO,QAAQ,KAAK,WAAW,OAAO,QAAQ,OAAO,QAAQ,MAAM;AAAA,YACjF;AAAA,UACF;AACA,cAAI,QAAQ,SAAS,WAAW,KAC9B;AAAE,YAAAA,KAAI,UAAU,QAAQ,QAAQ,MAAM,WAAW,GAAG;AAAA,UAAG;AAAA,QAC3D;AAEA,eAAO,YAAY,QAAQ;AAAA,MAC7B;AAGA,eAASE,cAAa,IAAI;AACxB,YAAI,CAAC,GAAG,MAAM,SAAS;AAAE;AAAA,QAAO;AAChC,YAAI,UAAU,GAAG;AACjB,sBAAc,QAAQ,OAAO;AAC7B,YAAIzG,MAAK;AACT,gBAAQ,UAAU,MAAM,aAAa;AACrC,YAAI,GAAG,QAAQ,kBAAkB,GAC/B;AAAE,kBAAQ,UAAU,YAAY,WAAY;AAC1C,gBAAI,CAAC,GAAG,SAAS,GAAG;AAAE,cAAA0G,QAAO,EAAE;AAAA,YAAG;AAClC,oBAAQ,UAAU,MAAM,cAAc1G,MAAK,CAACA,OAAM,KAAK;AAAA,UACzD,GAAG,GAAG,QAAQ,eAAe;AAAA,QAAG,WACzB,GAAG,QAAQ,kBAAkB,GACpC;AAAE,kBAAQ,UAAU,MAAM,aAAa;AAAA,QAAU;AAAA,MACrD;AAEA,eAAS2G,aAAY,IAAI;AACvB,YAAI,CAAC,GAAG,MAAM,SAAS;AAAE,aAAG,QAAQ,MAAM,MAAM;AAAG,kBAAQ,EAAE;AAAA,QAAG;AAAA,MAClE;AAEA,eAAS,eAAe,IAAI;AAC1B,WAAG,MAAM,oBAAoB;AAC7B,mBAAW,WAAY;AAAE,cAAI,GAAG,MAAM,mBAAmB;AACvD,eAAG,MAAM,oBAAoB;AAC7B,YAAAD,QAAO,EAAE;AAAA,UACX;AAAA,QAAE,GAAG,GAAG;AAAA,MACV;AAEA,eAAS,QAAQ,IAAI,GAAG;AACtB,YAAI,GAAG,MAAM,mBAAmB;AAAE,aAAG,MAAM,oBAAoB;AAAA,QAAO;AAEtE,YAAI,GAAG,QAAQ,YAAY,YAAY;AAAE;AAAA,QAAO;AAChD,YAAI,CAAC,GAAG,MAAM,SAAS;AACrB,UAAAtG,QAAO,IAAI,SAAS,IAAI,CAAC;AACzB,aAAG,MAAM,UAAU;AACnB,UAAAtC,UAAS,GAAG,QAAQ,SAAS,oBAAoB;AAIjD,cAAI,CAAC,GAAG,SAAS,GAAG,QAAQ,qBAAqB,GAAG,IAAI,KAAK;AAC3D,eAAG,QAAQ,MAAM,MAAM;AACvB,gBAAI7B,SAAQ;AAAE,yBAAW,WAAY;AAAE,uBAAO,GAAG,QAAQ,MAAM,MAAM,IAAI;AAAA,cAAG,GAAG,EAAE;AAAA,YAAG;AAAA,UACtF;AACA,aAAG,QAAQ,MAAM,cAAc;AAAA,QACjC;AACA,QAAAwK,cAAa,EAAE;AAAA,MACjB;AACA,eAASC,QAAO,IAAI,GAAG;AACrB,YAAI,GAAG,MAAM,mBAAmB;AAAE;AAAA,QAAO;AAEzC,YAAI,GAAG,MAAM,SAAS;AACpB,UAAAtG,QAAO,IAAI,QAAQ,IAAI,CAAC;AACxB,aAAG,MAAM,UAAU;AACnB,UAAAlD,SAAQ,GAAG,QAAQ,SAAS,oBAAoB;AAAA,QAClD;AACA,sBAAc,GAAG,QAAQ,OAAO;AAChC,mBAAW,WAAY;AAAE,cAAI,CAAC,GAAG,MAAM,SAAS;AAAE,eAAG,QAAQ,QAAQ;AAAA,UAAO;AAAA,QAAE,GAAG,GAAG;AAAA,MACtF;AAIA,eAAS0J,yBAAwB,IAAI;AACnC,YAAI,UAAU,GAAG;AACjB,YAAI,aAAa,QAAQ,QAAQ;AACjC,iBAASpJ,KAAI,GAAGA,KAAI,QAAQ,KAAK,QAAQA,MAAK;AAC5C,cAAI,MAAM,QAAQ,KAAKA,EAAC,GAAG,WAAW,GAAG,QAAQ;AACjD,cAAI,SAAU,QAAS,QAAQ;AAC/B,cAAI,IAAI,QAAQ;AAAE;AAAA,UAAS;AAC3B,cAAIzB,OAAMC,cAAa,GAAG;AACxB,gBAAI,MAAM,IAAI,KAAK,YAAY,IAAI,KAAK;AACxC,qBAAS,MAAM;AACf,yBAAa;AAAA,UACf,OAAO;AACL,gBAAI,MAAM,IAAI,KAAK,sBAAsB;AACzC,qBAAS,IAAI,SAAS,IAAI;AAG1B,gBAAI,CAAC,YAAY,IAAI,KAAK,YACxB;AAAE,sBAAQ,IAAI,KAAK,WAAW,sBAAsB,EAAE,QAAQ,IAAI,OAAO;AAAA,YAAG;AAAA,UAChF;AACA,cAAI,OAAO,IAAI,KAAK,SAAS;AAC7B,cAAI,OAAO,QAAQ,OAAO,OAAO;AAC/B,YAAA2F,kBAAiB,IAAI,MAAM,MAAM;AACjC,+BAAmB,IAAI,IAAI;AAC3B,gBAAI,IAAI,MAAM;AAAE,uBAAS,IAAI,GAAG,IAAI,IAAI,KAAK,QAAQ,KACnD;AAAE,mCAAmB,IAAI,KAAK,CAAC,CAAC;AAAA,cAAG;AAAA,YAAE;AAAA,UACzC;AACA,cAAI,QAAQ,GAAG,QAAQ,YAAY;AACjC,gBAAI,UAAU,KAAK,KAAK,QAAQwD,WAAU,GAAG,OAAO,CAAC;AACrD,gBAAI,UAAU,GAAG,QAAQ,eAAe;AACtC,iBAAG,QAAQ,gBAAgB;AAC3B,iBAAG,QAAQ,UAAU,IAAI;AACzB,iBAAG,QAAQ,iBAAiB;AAAA,YAC9B;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAIA,eAAS,mBAAmB,MAAM;AAChC,YAAI,KAAK,SAAS;AAAE,mBAAS3H,KAAI,GAAGA,KAAI,KAAK,QAAQ,QAAQ,EAAEA,IAAG;AAChE,gBAAI,IAAI,KAAK,QAAQA,EAAC,GAAG,SAAS,EAAE,KAAK;AACzC,gBAAI,QAAQ;AAAE,gBAAE,SAAS,OAAO;AAAA,YAAc;AAAA,UAChD;AAAA,QAAE;AAAA,MACJ;AAKA,eAASqJ,cAAa,SAAS,KAAK,UAAU;AAC5C,YAAI,MAAM,YAAY,SAAS,OAAO,OAAO,KAAK,IAAI,GAAG,SAAS,GAAG,IAAI,QAAQ,SAAS;AAC1F,cAAM,KAAK,MAAM,MAAMnC,YAAW,OAAO,CAAC;AAC1C,YAAI,SAAS,YAAY,SAAS,UAAU,OAAO,SAAS,SAAS,MAAM,QAAQ,QAAQ;AAE3F,YAAI,OAAO5C,cAAa,KAAK,GAAG,GAAG,KAAKA,cAAa,KAAK,MAAM;AAGhE,YAAI,YAAY,SAAS,QAAQ;AAC/B,cAAI,aAAa,SAAS,OAAO,KAAK,MAAM,WAAW,SAAS,OAAO,GAAG;AAC1E,cAAI,aAAa,MAAM;AACrB,mBAAO;AACP,iBAAKA,cAAa,KAAK0B,cAAahC,SAAQ,KAAK,UAAU,CAAC,IAAI,QAAQ,QAAQ,YAAY;AAAA,UAC9F,WAAW,KAAK,IAAI,UAAU,IAAI,SAAS,CAAC,KAAK,IAAI;AACnD,mBAAOM,cAAa,KAAK0B,cAAahC,SAAQ,KAAK,QAAQ,CAAC,IAAI,QAAQ,QAAQ,YAAY;AAC5F,iBAAK;AAAA,UACP;AAAA,QACF;AACA,eAAO,EAAC,MAAY,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,EAAC;AAAA,MAChD;AAMA,eAASsF,mBAAkB,IAAI,MAAM;AACnC,YAAIzG,gBAAe,IAAI,sBAAsB,GAAG;AAAE;AAAA,QAAO;AAEzD,YAAI,UAAU,GAAG,SAAS,MAAM,QAAQ,MAAM,sBAAsB,GAAG,WAAW;AAClF,YAAI,KAAK,MAAM,IAAI,MAAM,GAAG;AAAE,qBAAW;AAAA,QAAM,WACtC,KAAK,SAAS,IAAI,OAAO,OAAO,eAAe,SAAS,gBAAgB,eAAe;AAAE,qBAAW;AAAA,QAAO;AACpH,YAAI,YAAY,QAAQ,CAAC9D,UAAS;AAChC,cAAI,aAAae,KAAI,OAAO,UAAU,MAAO,yDAAyD,KAAK,MAAM,QAAQ,aAAaoH,YAAW,GAAG,OAAO,KAAK,4CAA4C,KAAK,SAAS,KAAK,MAAMG,WAAU,EAAE,IAAI,QAAQ,aAAa,yCAA0C,KAAK,OAAQ,gBAAiB,KAAK,IAAI,GAAG,KAAK,QAAQ,KAAK,IAAI,IAAK,KAAM;AAC/X,aAAG,QAAQ,UAAU,YAAY,UAAU;AAC3C,qBAAW,eAAe,QAAQ;AAClC,aAAG,QAAQ,UAAU,YAAY,UAAU;AAAA,QAC7C;AAAA,MACF;AAKA,eAASkC,mBAAkB,IAAI,KAAK,KAAK,QAAQ;AAC/C,YAAI,UAAU,MAAM;AAAE,mBAAS;AAAA,QAAG;AAClC,YAAI;AACJ,YAAI,CAAC,GAAG,QAAQ,gBAAgB,OAAO,KAAK;AAI1C,gBAAM,IAAI,KAAK9E,KAAI,IAAI,MAAM,IAAI,UAAU,WAAW,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,IAAI;AACtF,gBAAM,IAAI,UAAU,WAAWA,KAAI,IAAI,MAAM,IAAI,KAAK,GAAG,QAAQ,IAAI;AAAA,QACvE;AACA,iBAAS,QAAQ,GAAG,QAAQ,GAAG,SAAS;AACtC,cAAI,UAAU;AACd,cAAI,SAASoD,cAAa,IAAI,GAAG;AACjC,cAAI,YAAY,CAAC,OAAO,OAAO,MAAM,SAASA,cAAa,IAAI,GAAG;AAClE,iBAAO;AAAA,YAAC,MAAM,KAAK,IAAI,OAAO,MAAM,UAAU,IAAI;AAAA,YAC1C,KAAK,KAAK,IAAI,OAAO,KAAK,UAAU,GAAG,IAAI;AAAA,YAC3C,OAAO,KAAK,IAAI,OAAO,MAAM,UAAU,IAAI;AAAA,YAC3C,QAAQ,KAAK,IAAI,OAAO,QAAQ,UAAU,MAAM,IAAI;AAAA,UAAM;AAClE,cAAI,YAAY,mBAAmB,IAAI,IAAI;AAC3C,cAAI,WAAW,GAAG,IAAI,WAAW,YAAY,GAAG,IAAI;AACpD,cAAI,UAAU,aAAa,MAAM;AAC/B,YAAA2B,iBAAgB,IAAI,UAAU,SAAS;AACvC,gBAAI,KAAK,IAAI,GAAG,IAAI,YAAY,QAAQ,IAAI,GAAG;AAAE,wBAAU;AAAA,YAAM;AAAA,UACnE;AACA,cAAI,UAAU,cAAc,MAAM;AAChC,YAAAC,eAAc,IAAI,UAAU,UAAU;AACtC,gBAAI,KAAK,IAAI,GAAG,IAAI,aAAa,SAAS,IAAI,GAAG;AAAE,wBAAU;AAAA,YAAM;AAAA,UACrE;AACA,cAAI,CAAC,SAAS;AAAE;AAAA,UAAM;AAAA,QACxB;AACA,eAAO;AAAA,MACT;AAGA,eAAS,eAAe,IAAI,MAAM;AAChC,YAAI,YAAY,mBAAmB,IAAI,IAAI;AAC3C,YAAI,UAAU,aAAa,MAAM;AAAE,UAAAD,iBAAgB,IAAI,UAAU,SAAS;AAAA,QAAG;AAC7E,YAAI,UAAU,cAAc,MAAM;AAAE,UAAAC,eAAc,IAAI,UAAU,UAAU;AAAA,QAAG;AAAA,MAC/E;AAMA,eAAS,mBAAmB,IAAI,MAAM;AACpC,YAAI,UAAU,GAAG,SAAS,aAAanB,YAAW,GAAG,OAAO;AAC5D,YAAI,KAAK,MAAM,GAAG;AAAE,eAAK,MAAM;AAAA,QAAG;AAClC,YAAI,YAAY,GAAG,SAAS,GAAG,MAAM,aAAa,OAAO,GAAG,MAAM,YAAY,QAAQ,SAAS;AAC/F,YAAIoB,UAASnC,eAAc,EAAE,GAAG,SAAS,CAAC;AAC1C,YAAI,KAAK,SAAS,KAAK,MAAMmC,SAAQ;AAAE,eAAK,SAAS,KAAK,MAAMA;AAAA,QAAQ;AACxE,YAAI,YAAY,GAAG,IAAI,SAASvC,aAAY,OAAO;AACnD,YAAI,QAAQ,KAAK,MAAM,YAAY,WAAW,KAAK,SAAS,YAAY;AACxE,YAAI,KAAK,MAAM,WAAW;AACxB,iBAAO,YAAY,QAAQ,IAAI,KAAK;AAAA,QACtC,WAAW,KAAK,SAAS,YAAYuC,SAAQ;AAC3C,cAAI,SAAS,KAAK,IAAI,KAAK,MAAM,WAAW,YAAY,KAAK,UAAUA,OAAM;AAC7E,cAAI,UAAU,WAAW;AAAE,mBAAO,YAAY;AAAA,UAAQ;AAAA,QACxD;AAEA,YAAI,cAAc,GAAG,QAAQ,cAAc,IAAI,QAAQ,QAAQ;AAC/D,YAAI,aAAa,GAAG,SAAS,GAAG,MAAM,cAAc,OAAO,GAAG,MAAM,aAAa,QAAQ,SAAS,aAAa;AAC/G,YAAI,UAAUpC,cAAa,EAAE,IAAI,QAAQ,QAAQ;AACjD,YAAI,UAAU,KAAK,QAAQ,KAAK,OAAO;AACvC,YAAI,SAAS;AAAE,eAAK,QAAQ,KAAK,OAAO;AAAA,QAAS;AACjD,YAAI,KAAK,OAAO,IACd;AAAE,iBAAO,aAAa;AAAA,QAAG,WAClB,KAAK,OAAO,YACnB;AAAE,iBAAO,aAAa,KAAK,IAAI,GAAG,KAAK,OAAO,eAAe,UAAU,IAAI,GAAG;AAAA,QAAG,WAC1E,KAAK,QAAQ,UAAU,aAAa,GAC3C;AAAE,iBAAO,aAAa,KAAK,SAAS,UAAU,IAAI,MAAM;AAAA,QAAS;AACnE,eAAO;AAAA,MACT;AAIA,eAAS,eAAe,IAAI,KAAK;AAC/B,YAAI,OAAO,MAAM;AAAE;AAAA,QAAO;AAC1B,2BAAmB,EAAE;AACrB,WAAG,MAAM,aAAa,GAAG,MAAM,aAAa,OAAO,GAAG,IAAI,YAAY,GAAG,MAAM,aAAa;AAAA,MAC9F;AAIA,eAASqC,qBAAoB,IAAI;AAC/B,2BAAmB,EAAE;AACrB,YAAI,MAAM,GAAG,UAAU;AACvB,WAAG,MAAM,cAAc,EAAC,MAAM,KAAK,IAAI,KAAK,QAAQ,GAAG,QAAQ,mBAAkB;AAAA,MACnF;AAEA,eAAS,eAAe,IAAI,GAAG,GAAG;AAChC,YAAI,KAAK,QAAQ,KAAK,MAAM;AAAE,6BAAmB,EAAE;AAAA,QAAG;AACtD,YAAI,KAAK,MAAM;AAAE,aAAG,MAAM,aAAa;AAAA,QAAG;AAC1C,YAAI,KAAK,MAAM;AAAE,aAAG,MAAM,YAAY;AAAA,QAAG;AAAA,MAC3C;AAEA,eAAS,cAAc,IAAIzJ,QAAO;AAChC,2BAAmB,EAAE;AACrB,WAAG,MAAM,cAAcA;AAAA,MACzB;AAMA,eAAS,mBAAmB,IAAI;AAC9B,YAAIA,SAAQ,GAAG,MAAM;AACrB,YAAIA,QAAO;AACT,aAAG,MAAM,cAAc;AACvB,cAAI,OAAO+H,gBAAe,IAAI/H,OAAM,IAAI,GAAG,KAAK+H,gBAAe,IAAI/H,OAAM,EAAE;AAC3E,8BAAoB,IAAI,MAAM,IAAIA,OAAM,MAAM;AAAA,QAChD;AAAA,MACF;AAEA,eAAS,oBAAoB,IAAI,MAAM,IAAI,QAAQ;AACjD,YAAI,OAAO,mBAAmB,IAAI;AAAA,UAChC,MAAM,KAAK,IAAI,KAAK,MAAM,GAAG,IAAI;AAAA,UACjC,KAAK,KAAK,IAAI,KAAK,KAAK,GAAG,GAAG,IAAI;AAAA,UAClC,OAAO,KAAK,IAAI,KAAK,OAAO,GAAG,KAAK;AAAA,UACpC,QAAQ,KAAK,IAAI,KAAK,QAAQ,GAAG,MAAM,IAAI;AAAA,QAC7C,CAAC;AACD,uBAAe,IAAI,KAAK,YAAY,KAAK,SAAS;AAAA,MACpD;AAIA,eAASsJ,iBAAgB,IAAI,KAAK;AAChC,YAAI,KAAK,IAAI,GAAG,IAAI,YAAY,GAAG,IAAI,GAAG;AAAE;AAAA,QAAO;AACnD,YAAI,CAACrL,QAAO;AAAE,UAAAyL,qBAAoB,IAAI,EAAC,KAAK,IAAG,CAAC;AAAA,QAAG;AACnD,QAAAC,cAAa,IAAI,KAAK,IAAI;AAC1B,YAAI1L,QAAO;AAAE,UAAAyL,qBAAoB,EAAE;AAAA,QAAG;AACtC,QAAAE,aAAY,IAAI,GAAG;AAAA,MACrB;AAEA,eAASD,cAAa,IAAI,KAAK,aAAa;AAC1C,cAAM,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,QAAQ,SAAS,eAAe,GAAG,QAAQ,SAAS,cAAc,GAAG,CAAC;AACpG,YAAI,GAAG,QAAQ,SAAS,aAAa,OAAO,CAAC,aAAa;AAAE;AAAA,QAAO;AACnE,WAAG,IAAI,YAAY;AACnB,WAAG,QAAQ,WAAW,aAAa,GAAG;AACtC,YAAI,GAAG,QAAQ,SAAS,aAAa,KAAK;AAAE,aAAG,QAAQ,SAAS,YAAY;AAAA,QAAK;AAAA,MACnF;AAIA,eAASJ,eAAc,IAAI,KAAK,YAAY,aAAa;AACvD,cAAM,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,GAAG,QAAQ,SAAS,cAAc,GAAG,QAAQ,SAAS,WAAW,CAAC;AAClG,aAAK,aAAa,OAAO,GAAG,IAAI,aAAa,KAAK,IAAI,GAAG,IAAI,aAAa,GAAG,IAAI,MAAM,CAAC,aAAa;AAAE;AAAA,QAAO;AAC9G,WAAG,IAAI,aAAa;AACpB,QAAAM,mBAAkB,EAAE;AACpB,YAAI,GAAG,QAAQ,SAAS,cAAc,KAAK;AAAE,aAAG,QAAQ,SAAS,aAAa;AAAA,QAAK;AACnF,WAAG,QAAQ,WAAW,cAAc,GAAG;AAAA,MACzC;AAMA,eAASC,sBAAqB,IAAI;AAChC,YAAI,IAAI,GAAG,SAAS,UAAU,EAAE,QAAQ;AACxC,YAAI,OAAO,KAAK,MAAM,GAAG,IAAI,SAAS7C,aAAY,GAAG,OAAO,CAAC;AAC7D,eAAO;AAAA,UACL,cAAc,EAAE,SAAS;AAAA,UACzB,YAAY,EAAE,QAAQ;AAAA,UACtB,aAAa,EAAE,SAAS;AAAA,UAAa,aAAa,EAAE,SAAS;AAAA,UAC7D,WAAW,EAAE,QAAQ;AAAA,UACrB,SAAS,GAAG,QAAQ,cAAc,UAAU;AAAA,UAC5C,WAAW;AAAA,UACX,cAAc,OAAOE,WAAU,EAAE,IAAI,EAAE;AAAA,UACvC,gBAAgB,EAAE;AAAA,UAClB,aAAa;AAAA,QACf;AAAA,MACF;AAEA,UAAI,mBAAmB,SAAS,OAAO,QAAQ,IAAI;AACjD,aAAK,KAAK;AACV,YAAI,OAAO,KAAK,OAAOvH,KAAI,OAAO,CAACA,KAAI,OAAO,MAAM,MAAM,gBAAgB,CAAC,GAAG,uBAAuB;AACrG,YAAI,QAAQ,KAAK,QAAQA,KAAI,OAAO,CAACA,KAAI,OAAO,MAAM,MAAM,+BAA+B,CAAC,GAAG,uBAAuB;AACtH,aAAK,WAAW,MAAM,WAAW;AACjC,cAAM,IAAI;AAAG,cAAM,KAAK;AAExB,QAAA0C,IAAG,MAAM,UAAU,WAAY;AAC7B,cAAI,KAAK,cAAc;AAAE,mBAAO,KAAK,WAAW,UAAU;AAAA,UAAG;AAAA,QAC/D,CAAC;AACD,QAAAA,IAAG,OAAO,UAAU,WAAY;AAC9B,cAAI,MAAM,aAAa;AAAE,mBAAO,MAAM,YAAY,YAAY;AAAA,UAAG;AAAA,QACnE,CAAC;AAED,aAAK,mBAAmB;AAExB,YAAIjE,OAAMC,cAAa,GAAG;AAAE,eAAK,MAAM,MAAM,YAAY,KAAK,KAAK,MAAM,WAAW;AAAA,QAAQ;AAAA,MAC9F;AAEA,uBAAiB,UAAU,SAAS,SAAU,SAAS;AACrD,YAAI,SAAS,QAAQ,cAAc,QAAQ,cAAc;AACzD,YAAI,SAAS,QAAQ,eAAe,QAAQ,eAAe;AAC3D,YAAI,SAAS,QAAQ;AAErB,YAAI,QAAQ;AACV,eAAK,KAAK,MAAM,UAAU;AAC1B,eAAK,KAAK,MAAM,SAAS,SAAS,SAAS,OAAO;AAClD,cAAI,cAAc,QAAQ,cAAc,SAAS,SAAS;AAE1D,eAAK,KAAK,WAAW,MAAM,SACzB,KAAK,IAAI,GAAG,QAAQ,eAAe,QAAQ,eAAe,WAAW,IAAI;AAAA,QAC7E,OAAO;AACL,eAAK,KAAK,MAAM,UAAU;AAC1B,eAAK,KAAK,WAAW,MAAM,SAAS;AAAA,QACtC;AAEA,YAAI,QAAQ;AACV,eAAK,MAAM,MAAM,UAAU;AAC3B,eAAK,MAAM,MAAM,QAAQ,SAAS,SAAS,OAAO;AAClD,eAAK,MAAM,MAAM,OAAO,QAAQ,UAAU;AAC1C,cAAI,aAAa,QAAQ,YAAY,QAAQ,WAAW,SAAS,SAAS;AAC1E,eAAK,MAAM,WAAW,MAAM,QAC1B,KAAK,IAAI,GAAG,QAAQ,cAAc,QAAQ,cAAc,UAAU,IAAI;AAAA,QAC1E,OAAO;AACL,eAAK,MAAM,MAAM,UAAU;AAC3B,eAAK,MAAM,WAAW,MAAM,QAAQ;AAAA,QACtC;AAEA,YAAI,CAAC,KAAK,oBAAoB,QAAQ,eAAe,GAAG;AACtD,cAAI,UAAU,GAAG;AAAE,iBAAK,cAAc;AAAA,UAAG;AACzC,eAAK,mBAAmB;AAAA,QAC1B;AAEA,eAAO,EAAC,OAAO,SAAS,SAAS,GAAG,QAAQ,SAAS,SAAS,EAAC;AAAA,MACjE;AAEA,uBAAiB,UAAU,gBAAgB,SAAU,KAAK;AACxD,YAAI,KAAK,MAAM,cAAc,KAAK;AAAE,eAAK,MAAM,aAAa;AAAA,QAAK;AACjE,YAAI,KAAK,cAAc;AAAE,eAAK,mBAAmB,KAAK,OAAO,KAAK,cAAc,OAAO;AAAA,QAAG;AAAA,MAC5F;AAEA,uBAAiB,UAAU,eAAe,SAAU,KAAK;AACvD,YAAI,KAAK,KAAK,aAAa,KAAK;AAAE,eAAK,KAAK,YAAY;AAAA,QAAK;AAC7D,YAAI,KAAK,aAAa;AAAE,eAAK,mBAAmB,KAAK,MAAM,KAAK,aAAa,MAAM;AAAA,QAAG;AAAA,MACxF;AAEA,uBAAiB,UAAU,gBAAgB,WAAY;AACrD,YAAI,IAAIW,QAAO,CAACL,sBAAqB,SAAS;AAC9C,aAAK,MAAM,MAAM,SAAS,KAAK,KAAK,MAAM,QAAQ;AAClD,aAAK,MAAM,MAAM,gBAAgB,KAAK,KAAK,MAAM,gBAAgB;AACjE,aAAK,eAAe,IAAIgC;AACxB,aAAK,cAAc,IAAIA;AAAA,MACzB;AAEA,uBAAiB,UAAU,qBAAqB,SAAU,KAAK,OAAOqB,OAAM;AAC1E,YAAI,MAAM,gBAAgB;AAC1B,iBAAS,eAAe;AAOtB,cAAI,MAAM,IAAI,sBAAsB;AACpC,cAAIrC,OAAMqC,SAAQ,SAAS,SAAS,iBAAiB,IAAI,QAAQ,IAAI,IAAI,MAAM,IAAI,UAAU,CAAC,IACxF,SAAS,kBAAkB,IAAI,QAAQ,IAAI,QAAQ,GAAG,IAAI,SAAS,CAAC;AAC1E,cAAIrC,QAAO,KAAK;AAAE,gBAAI,MAAM,gBAAgB;AAAA,UAAQ,OAC/C;AAAE,kBAAM,IAAI,KAAM,YAAY;AAAA,UAAG;AAAA,QACxC;AACA,cAAM,IAAI,KAAM,YAAY;AAAA,MAC9B;AAEA,uBAAiB,UAAU,QAAQ,WAAY;AAC7C,YAAI,SAAS,KAAK,MAAM;AACxB,eAAO,YAAY,KAAK,KAAK;AAC7B,eAAO,YAAY,KAAK,IAAI;AAAA,MAC9B;AAEA,UAAI,iBAAiB,WAAY;AAAA,MAAC;AAElC,qBAAe,UAAU,SAAS,WAAY;AAAE,eAAO,EAAC,QAAQ,GAAG,OAAO,EAAC;AAAA,MAAE;AAC7E,qBAAe,UAAU,gBAAgB,WAAY;AAAA,MAAC;AACtD,qBAAe,UAAU,eAAe,WAAY;AAAA,MAAC;AACrD,qBAAe,UAAU,QAAQ,WAAY;AAAA,MAAC;AAE9C,eAASmK,kBAAiB,IAAI,SAAS;AACrC,YAAI,CAAC,SAAS;AAAE,oBAAUD,sBAAqB,EAAE;AAAA,QAAG;AACpD,YAAI,aAAa,GAAG,QAAQ,UAAU,cAAc,GAAG,QAAQ;AAC/D,8BAAsB,IAAI,OAAO;AACjC,iBAAShK,KAAI,GAAGA,KAAI,KAAK,cAAc,GAAG,QAAQ,YAAY,eAAe,GAAG,QAAQ,WAAWA,MAAK;AACtG,cAAI,cAAc,GAAG,QAAQ,YAAY,GAAG,QAAQ,cAClD;AAAE,YAAAoJ,yBAAwB,EAAE;AAAA,UAAG;AACjC,gCAAsB,IAAIY,sBAAqB,EAAE,CAAC;AAClD,uBAAa,GAAG,QAAQ;AAAU,wBAAc,GAAG,QAAQ;AAAA,QAC7D;AAAA,MACF;AAIA,eAAS,sBAAsB,IAAI,SAAS;AAC1C,YAAI,IAAI,GAAG;AACX,YAAI,QAAQ,EAAE,WAAW,OAAO,OAAO;AAEvC,UAAE,MAAM,MAAM,gBAAgB,EAAE,WAAW,MAAM,SAAS;AAC1D,UAAE,MAAM,MAAM,iBAAiB,EAAE,YAAY,MAAM,UAAU;AAC7D,UAAE,aAAa,MAAM,eAAe,MAAM,SAAS;AAEnD,YAAI,MAAM,SAAS,MAAM,QAAQ;AAC/B,YAAE,gBAAgB,MAAM,UAAU;AAClC,YAAE,gBAAgB,MAAM,SAAS,MAAM,SAAS;AAChD,YAAE,gBAAgB,MAAM,QAAQ,MAAM,QAAQ;AAAA,QAChD,OAAO;AAAE,YAAE,gBAAgB,MAAM,UAAU;AAAA,QAAI;AAC/C,YAAI,MAAM,UAAU,GAAG,QAAQ,8BAA8B,GAAG,QAAQ,aAAa;AACnF,YAAE,aAAa,MAAM,UAAU;AAC/B,YAAE,aAAa,MAAM,SAAS,MAAM,SAAS;AAC7C,YAAE,aAAa,MAAM,QAAQ,QAAQ,cAAc;AAAA,QACrD,OAAO;AAAE,YAAE,aAAa,MAAM,UAAU;AAAA,QAAI;AAAA,MAC9C;AAEA,UAAI,iBAAiB,EAAC,UAAU,kBAAkB,QAAQ,eAAc;AAExE,eAAS,eAAe,IAAI;AAC1B,YAAI,GAAG,QAAQ,YAAY;AACzB,aAAG,QAAQ,WAAW,MAAM;AAC5B,cAAI,GAAG,QAAQ,WAAW,UACxB;AAAE,YAAAtK,SAAQ,GAAG,QAAQ,SAAS,GAAG,QAAQ,WAAW,QAAQ;AAAA,UAAG;AAAA,QACnE;AAEA,WAAG,QAAQ,aAAa,IAAI,eAAe,GAAG,QAAQ,cAAc,EAAE,SAAU,MAAM;AACpF,aAAG,QAAQ,QAAQ,aAAa,MAAM,GAAG,QAAQ,eAAe;AAEhE,UAAA8C,IAAG,MAAM,aAAa,WAAY;AAChC,gBAAI,GAAG,MAAM,SAAS;AAAE,yBAAW,WAAY;AAAE,uBAAO,GAAG,QAAQ,MAAM,MAAM;AAAA,cAAG,GAAG,CAAC;AAAA,YAAG;AAAA,UAC3F,CAAC;AACD,eAAK,aAAa,kBAAkB,MAAM;AAAA,QAC5C,GAAG,SAAU,KAAK,MAAM;AACtB,cAAI,QAAQ,cAAc;AAAE,YAAAiH,eAAc,IAAI,GAAG;AAAA,UAAG,OAC/C;AAAE,YAAAD,iBAAgB,IAAI,GAAG;AAAA,UAAG;AAAA,QACnC,GAAG,EAAE;AACL,YAAI,GAAG,QAAQ,WAAW,UACxB;AAAE,UAAAlJ,UAAS,GAAG,QAAQ,SAAS,GAAG,QAAQ,WAAW,QAAQ;AAAA,QAAG;AAAA,MACpE;AAQA,UAAI,WAAW;AAEf,eAAS,eAAe,IAAI;AAC1B,WAAG,QAAQ;AAAA,UACT;AAAA,UACA,aAAa;AAAA;AAAA,UACb,aAAa,GAAG,IAAI;AAAA;AAAA,UACpB,aAAa;AAAA;AAAA,UACb,aAAa;AAAA;AAAA,UACb,QAAQ;AAAA;AAAA,UACR,YAAY;AAAA;AAAA,UACZ,wBAAwB;AAAA;AAAA,UACxB,sBAAsB;AAAA;AAAA,UACtB,kBAAkB;AAAA;AAAA,UAClB,eAAe;AAAA;AAAA,UACf,YAAY;AAAA,UAAM,WAAW;AAAA;AAAA,UAC7B,aAAa;AAAA;AAAA,UACb,OAAO;AAAA,UACP,IAAI,EAAE;AAAA;AAAA,QACR;AACA,QAAAmG,eAAc,GAAG,KAAK;AAAA,MACxB;AAGA,eAAS,aAAa,IAAI;AACxB,YAAI,KAAK,GAAG;AACZ,YAAI,IAAI;AAAE,UAAAE,iBAAgB,IAAI,SAAU,OAAO;AAC7C,qBAAS3G,KAAI,GAAGA,KAAI,MAAM,IAAI,QAAQA,MACpC;AAAE,oBAAM,IAAIA,EAAC,EAAE,GAAG,QAAQ;AAAA,YAAM;AAClC,0BAAc,KAAK;AAAA,UACrB,CAAC;AAAA,QAAG;AAAA,MACN;AAIA,eAAS,cAAc,OAAO;AAC5B,YAAI,MAAM,MAAM;AAChB,iBAASA,KAAI,GAAGA,KAAI,IAAI,QAAQA,MAC9B;AAAE,0BAAgB,IAAIA,EAAC,CAAC;AAAA,QAAG;AAC7B,iBAASkC,OAAM,GAAGA,OAAM,IAAI,QAAQA,QAClC;AAAE,0BAAgB,IAAIA,IAAG,CAAC;AAAA,QAAG;AAC/B,iBAASE,OAAM,GAAGA,OAAM,IAAI,QAAQA,QAClC;AAAE,0BAAgB,IAAIA,IAAG,CAAC;AAAA,QAAG;AAC/B,iBAAS,MAAM,GAAG,MAAM,IAAI,QAAQ,OAClC;AAAE,0BAAgB,IAAI,GAAG,CAAC;AAAA,QAAG;AAC/B,iBAAS,MAAM,GAAG,MAAM,IAAI,QAAQ,OAClC;AAAE,8BAAoB,IAAI,GAAG,CAAC;AAAA,QAAG;AAAA,MACrC;AAEA,eAAS,gBAAgB,IAAI;AAC3B,YAAI,KAAK,GAAG,IAAI,UAAU,GAAG;AAC7B,QAAA8H,qBAAoB,EAAE;AACtB,YAAI,GAAG,eAAe;AAAE,UAAAjE,aAAY,EAAE;AAAA,QAAG;AAEzC,WAAG,aAAa,GAAG,eAAe,GAAG,eAAe,GAAG,aAAa,QAClE,GAAG,gBAAgB,GAAG,YAAY,KAAK,OAAO,QAAQ,YACnC,GAAG,YAAY,GAAG,QAAQ,QAAQ,WACrD,QAAQ,kBAAkB,GAAG,QAAQ;AACvC,WAAG,SAAS,GAAG,cACb,IAAIkE,eAAc,IAAI,GAAG,cAAc,EAAC,KAAK,GAAG,WAAW,QAAQ,GAAG,YAAW,GAAG,GAAG,WAAW;AAAA,MACtG;AAEA,eAAS,gBAAgB,IAAI;AAC3B,WAAG,iBAAiB,GAAG,cAAcC,uBAAsB,GAAG,IAAI,GAAG,MAAM;AAAA,MAC7E;AAEA,eAAS,gBAAgB,IAAI;AAC3B,YAAI,KAAK,GAAG,IAAI,UAAU,GAAG;AAC7B,YAAI,GAAG,gBAAgB;AAAE,UAAAhB,yBAAwB,EAAE;AAAA,QAAG;AAEtD,WAAG,aAAaY,sBAAqB,EAAE;AAKvC,YAAI,QAAQ,kBAAkB,CAAC,GAAG,QAAQ,cAAc;AACtD,aAAG,gBAAgBxC,aAAY,IAAI,QAAQ,SAAS,QAAQ,QAAQ,KAAK,MAAM,EAAE,OAAO;AACxF,aAAG,QAAQ,aAAa,GAAG;AAC3B,aAAG,WAAW,cACZ,KAAK,IAAI,QAAQ,SAAS,aAAa,QAAQ,MAAM,aAAa,GAAG,gBAAgBH,WAAU,EAAE,IAAI,GAAG,QAAQ,QAAQ;AAC1H,aAAG,gBAAgB,KAAK,IAAI,GAAG,QAAQ,MAAM,aAAa,GAAG,gBAAgBC,cAAa,EAAE,CAAC;AAAA,QAC/F;AAEA,YAAI,GAAG,kBAAkB,GAAG,kBAC1B;AAAE,aAAG,oBAAoB,QAAQ,MAAM,iBAAiB;AAAA,QAAG;AAAA,MAC/D;AAEA,eAAS,gBAAgB,IAAI;AAC3B,YAAI,KAAK,GAAG;AAEZ,YAAI,GAAG,iBAAiB,MAAM;AAC5B,aAAG,QAAQ,MAAM,MAAM,WAAW,GAAG,gBAAgB;AACrD,cAAI,GAAG,gBAAgB,GAAG,IAAI,YAC5B;AAAE,YAAAmC,eAAc,IAAI,KAAK,IAAI,GAAG,QAAQ,SAAS,YAAY,GAAG,aAAa,GAAG,IAAI;AAAA,UAAG;AACzF,aAAG,QAAQ,iBAAiB;AAAA,QAC9B;AAEA,YAAI,YAAY,GAAG,SAAS,GAAG,SAASpJ,WAAU;AAClD,YAAI,GAAG,mBACL;AAAE,aAAG,QAAQ,MAAM,cAAc,GAAG,mBAAmB,SAAS;AAAA,QAAG;AACrE,YAAI,GAAG,kBAAkB,GAAG,eAAe,GAAG,IAAI,QAChD;AAAE,UAAA4J,kBAAiB,IAAI,GAAG,UAAU;AAAA,QAAG;AACzC,YAAI,GAAG,gBACL;AAAE,UAAAI,mBAAkB,IAAI,GAAG,UAAU;AAAA,QAAG;AAE1C,YAAI,GAAG,kBAAkB;AAAE,UAAApB,cAAa,EAAE;AAAA,QAAG;AAE7C,YAAI,GAAG,MAAM,WAAW,GAAG,aACzB;AAAE,aAAG,QAAQ,MAAM,MAAM,GAAG,MAAM;AAAA,QAAG;AACvC,YAAI,WAAW;AAAE,UAAAE,aAAY,GAAG,EAAE;AAAA,QAAG;AAAA,MACvC;AAEA,eAAS,oBAAoB,IAAI;AAC/B,YAAI,KAAK,GAAG,IAAI,UAAU,GAAG,SAAS,MAAM,GAAG;AAE/C,YAAI,GAAG,gBAAgB;AAAE,UAAAmB,mBAAkB,IAAI,GAAG,MAAM;AAAA,QAAG;AAG3D,YAAI,QAAQ,eAAe,SAAS,GAAG,aAAa,QAAQ,GAAG,cAAc,QAAQ,GAAG,cACtF;AAAE,kBAAQ,cAAc,QAAQ,cAAc;AAAA,QAAM;AAGtD,YAAI,GAAG,aAAa,MAAM;AAAE,UAAAT,cAAa,IAAI,GAAG,WAAW,GAAG,WAAW;AAAA,QAAG;AAE5E,YAAI,GAAG,cAAc,MAAM;AAAE,UAAAJ,eAAc,IAAI,GAAG,YAAY,MAAM,IAAI;AAAA,QAAG;AAE3E,YAAI,GAAG,aAAa;AAClB,cAAI,OAAOF;AAAA,YAAkB;AAAA,YAAIxE,SAAQ,KAAK,GAAG,YAAY,IAAI;AAAA,YACpCA,SAAQ,KAAK,GAAG,YAAY,EAAE;AAAA,YAAG,GAAG,YAAY;AAAA,UAAM;AACnF,UAAAuE,mBAAkB,IAAI,IAAI;AAAA,QAC5B;AAIA,YAAI,SAAS,GAAG,oBAAoB,WAAW,GAAG;AAClD,YAAI,QAAQ;AAAE,mBAAStJ,KAAI,GAAGA,KAAI,OAAO,QAAQ,EAAEA,IACjD;AAAE,gBAAI,CAAC,OAAOA,EAAC,EAAE,MAAM,QAAQ;AAAE,cAAA4C,QAAO,OAAO5C,EAAC,GAAG,MAAM;AAAA,YAAG;AAAA,UAAE;AAAA,QAAE;AAClE,YAAI,UAAU;AAAE,mBAASkC,OAAM,GAAGA,OAAM,SAAS,QAAQ,EAAEA,MACzD;AAAE,gBAAI,SAASA,IAAG,EAAE,MAAM,QAAQ;AAAE,cAAAU,QAAO,SAASV,IAAG,GAAG,QAAQ;AAAA,YAAG;AAAA,UAAE;AAAA,QAAE;AAE3E,YAAI,QAAQ,QAAQ,cAClB;AAAE,cAAI,YAAY,GAAG,QAAQ,SAAS;AAAA,QAAW;AAGnD,YAAI,GAAG,YACL;AAAE,UAAAU,QAAO,IAAI,WAAW,IAAI,GAAG,UAAU;AAAA,QAAG;AAC9C,YAAI,GAAG,QACL;AAAE,aAAG,OAAO,OAAO;AAAA,QAAG;AAAA,MAC1B;AAGA,eAAS2H,SAAQ,IAAI,GAAG;AACtB,YAAI,GAAG,OAAO;AAAE,iBAAO,EAAE;AAAA,QAAE;AAC3B,uBAAe,EAAE;AACjB,YAAI;AAAE,iBAAO,EAAE;AAAA,QAAE,UACjB;AAAU,uBAAa,EAAE;AAAA,QAAG;AAAA,MAC9B;AAEA,eAAS,UAAU,IAAI,GAAG;AACxB,eAAO,WAAW;AAChB,cAAI,GAAG,OAAO;AAAE,mBAAO,EAAE,MAAM,IAAI,SAAS;AAAA,UAAE;AAC9C,yBAAe,EAAE;AACjB,cAAI;AAAE,mBAAO,EAAE,MAAM,IAAI,SAAS;AAAA,UAAE,UACpC;AAAU,yBAAa,EAAE;AAAA,UAAG;AAAA,QAC9B;AAAA,MACF;AAGA,eAAS,SAAS,GAAG;AACnB,eAAO,WAAW;AAChB,cAAI,KAAK,OAAO;AAAE,mBAAO,EAAE,MAAM,MAAM,SAAS;AAAA,UAAE;AAClD,yBAAe,IAAI;AACnB,cAAI;AAAE,mBAAO,EAAE,MAAM,MAAM,SAAS;AAAA,UAAE,UACtC;AAAU,yBAAa,IAAI;AAAA,UAAG;AAAA,QAChC;AAAA,MACF;AACA,eAAS,YAAY,GAAG;AACtB,eAAO,WAAW;AAChB,cAAI,KAAK,KAAK;AACd,cAAI,CAAC,MAAM,GAAG,OAAO;AAAE,mBAAO,EAAE,MAAM,MAAM,SAAS;AAAA,UAAE;AACvD,yBAAe,EAAE;AACjB,cAAI;AAAE,mBAAO,EAAE,MAAM,MAAM,SAAS;AAAA,UAAE,UACtC;AAAU,yBAAa,EAAE;AAAA,UAAG;AAAA,QAC9B;AAAA,MACF;AAIA,eAAST,aAAY,IAAI9I,OAAM;AAC7B,YAAI,GAAG,IAAI,oBAAoB,GAAG,QAAQ,QACxC;AAAE,aAAG,MAAM,UAAU,IAAIA,OAAMP,MAAK,iBAAiB,EAAE,CAAC;AAAA,QAAG;AAAA,MAC/D;AAEA,eAAS,gBAAgB,IAAI;AAC3B,YAAI,MAAM,GAAG;AACb,YAAI,IAAI,qBAAqB,GAAG,QAAQ,QAAQ;AAAE;AAAA,QAAO;AACzD,YAAI,MAAM,CAAC,oBAAI,SAAO,GAAG,QAAQ;AACjC,YAAI,UAAU0E,kBAAiB,IAAI,IAAI,iBAAiB;AACxD,YAAI,eAAe,CAAC;AAEpB,YAAI,KAAK,QAAQ,MAAM,KAAK,IAAI,IAAI,QAAQ,IAAI,MAAM,GAAG,QAAQ,SAAS,GAAG,GAAG,SAAU,MAAM;AAC9F,cAAI,QAAQ,QAAQ,GAAG,QAAQ,UAAU;AACvC,gBAAI,YAAY,KAAK;AACrB,gBAAI,aAAa,KAAK,KAAK,SAAS,GAAG,QAAQ,qBAAqBtB,WAAU,IAAI,MAAM,QAAQ,KAAK,IAAI;AACzG,gBAAI,cAAcmB,eAAc,IAAI,MAAM,SAAS,IAAI;AACvD,gBAAI,YAAY;AAAE,sBAAQ,QAAQ;AAAA,YAAY;AAC9C,iBAAK,SAAS,YAAY;AAC1B,gBAAI,SAAS,KAAK,cAAc,SAAS,YAAY;AACrD,gBAAI,QAAQ;AAAE,mBAAK,eAAe;AAAA,YAAQ,WACjC,QAAQ;AAAE,mBAAK,eAAe;AAAA,YAAM;AAC7C,gBAAI,WAAW,CAAC,aAAa,UAAU,UAAU,KAAK,OAAO,UAC3D,UAAU,WAAW,CAAC,UAAU,CAAC,UAAU,OAAO,WAAW,OAAO,WAAW,OAAO,aAAa,OAAO;AAC5G,qBAAShF,KAAI,GAAG,CAAC,YAAYA,KAAI,UAAU,QAAQ,EAAEA,IAAG;AAAE,yBAAW,UAAUA,EAAC,KAAK,KAAK,OAAOA,EAAC;AAAA,YAAG;AACrG,gBAAI,UAAU;AAAE,2BAAa,KAAK,QAAQ,IAAI;AAAA,YAAG;AACjD,iBAAK,aAAa,QAAQ,KAAK;AAC/B,oBAAQ,SAAS;AAAA,UACnB,OAAO;AACL,gBAAI,KAAK,KAAK,UAAU,GAAG,QAAQ,oBACjC;AAAE,cAAAoF,aAAY,IAAI,KAAK,MAAM,OAAO;AAAA,YAAG;AACzC,iBAAK,aAAa,QAAQ,OAAO,KAAK,IAAI,QAAQ,KAAK,IAAI;AAC3D,oBAAQ,SAAS;AAAA,UACnB;AACA,cAAI,CAAC,oBAAI,SAAO,KAAK;AACnB,YAAA0E,aAAY,IAAI,GAAG,QAAQ,SAAS;AACpC,mBAAO;AAAA,UACT;AAAA,QACF,CAAC;AACD,YAAI,oBAAoB,QAAQ;AAChC,YAAI,eAAe,KAAK,IAAI,IAAI,cAAc,QAAQ,IAAI;AAC1D,YAAI,aAAa,QAAQ;AAAE,UAAAS,SAAQ,IAAI,WAAY;AACjD,qBAASvK,KAAI,GAAGA,KAAI,aAAa,QAAQA,MACvC;AAAE,cAAA2I,eAAc,IAAI,aAAa3I,EAAC,GAAG,MAAM;AAAA,YAAG;AAAA,UAClD,CAAC;AAAA,QAAG;AAAA,MACN;AAIA,UAAImK,iBAAgB,SAAS,IAAI,UAAU,OAAO;AAChD,YAAI,UAAU,GAAG;AAEjB,aAAK,WAAW;AAEhB,aAAK,UAAUd,cAAa,SAAS,GAAG,KAAK,QAAQ;AACrD,aAAK,iBAAiB,CAAC,QAAQ,QAAQ;AACvC,aAAK,gBAAgB,QAAQ,QAAQ;AACrC,aAAK,eAAe,QAAQ,QAAQ;AACpC,aAAK,kBAAkB/B,cAAa,EAAE;AACtC,aAAK,QAAQ;AACb,aAAK,OAAOI,eAAc,EAAE;AAC5B,aAAK,SAAS,CAAC;AAAA,MACjB;AAEA,MAAAyC,eAAc,UAAU,SAAS,SAAU,SAAShI,OAAM;AACxD,YAAIa,YAAW,SAASb,KAAI,GAC1B;AAAE,eAAK,OAAO,KAAK,SAAS;AAAA,QAAG;AAAA,MACnC;AACA,MAAAgI,eAAc,UAAU,SAAS,WAAY;AAC3C,iBAASnK,KAAI,GAAGA,KAAI,KAAK,OAAO,QAAQA,MACtC;AAAE,UAAA4C,QAAO,MAAM,MAAM,KAAK,OAAO5C,EAAC,CAAC;AAAA,QAAG;AAAA,MAC1C;AAEA,eAASkK,qBAAoB,IAAI;AAC/B,YAAI,UAAU,GAAG;AACjB,YAAI,CAAC,QAAQ,qBAAqB,QAAQ,SAAS,aAAa;AAC9D,kBAAQ,iBAAiB,QAAQ,SAAS,cAAc,QAAQ,SAAS;AACzE,kBAAQ,aAAa,MAAM,SAAS7C,WAAU,EAAE,IAAI;AACpD,kBAAQ,MAAM,MAAM,eAAe,CAAC,QAAQ,iBAAiB;AAC7D,kBAAQ,MAAM,MAAM,mBAAmBA,WAAU,EAAE,IAAI;AACvD,kBAAQ,oBAAoB;AAAA,QAC9B;AAAA,MACF;AAEA,eAAS,kBAAkB,IAAI;AAC7B,YAAI,GAAG,SAAS,GAAG;AAAE,iBAAO;AAAA,QAAK;AACjC,YAAI,SAAShH,WAAU;AACvB,YAAI,CAAC,UAAU,CAACD,UAAS,GAAG,QAAQ,SAAS,MAAM,GAAG;AAAE,iBAAO;AAAA,QAAK;AACpE,YAAI,SAAS,EAAC,WAAW,OAAM;AAC/B,YAAI,OAAO,cAAc;AACvB,cAAI,MAAM,OAAO,aAAa;AAC9B,cAAI,IAAI,cAAc,IAAI,UAAUA,UAAS,GAAG,QAAQ,SAAS,IAAI,UAAU,GAAG;AAChF,mBAAO,aAAa,IAAI;AACxB,mBAAO,eAAe,IAAI;AAC1B,mBAAO,YAAY,IAAI;AACvB,mBAAO,cAAc,IAAI;AAAA,UAC3B;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,eAAS,iBAAiB,UAAU;AAClC,YAAI,CAAC,YAAY,CAAC,SAAS,aAAa,SAAS,aAAaC,WAAU,GAAG;AAAE;AAAA,QAAO;AACpF,iBAAS,UAAU,MAAM;AACzB,YAAI,CAAC,qBAAqB,KAAK,SAAS,UAAU,QAAQ,KACtD,SAAS,cAAcD,UAAS,SAAS,MAAM,SAAS,UAAU,KAAKA,UAAS,SAAS,MAAM,SAAS,SAAS,GAAG;AACtH,cAAI,MAAM,OAAO,aAAa,GAAGF,SAAQ,SAAS,YAAY;AAC9D,UAAAA,OAAM,OAAO,SAAS,YAAY,SAAS,YAAY;AACvD,UAAAA,OAAM,SAAS,KAAK;AACpB,cAAI,gBAAgB;AACpB,cAAI,SAASA,MAAK;AAClB,cAAI,OAAO,SAAS,WAAW,SAAS,WAAW;AAAA,QACrD;AAAA,MACF;AAKA,eAASkK,uBAAsB,IAAI,QAAQ;AACzC,YAAI,UAAU,GAAG,SAAS,MAAM,GAAG;AAEnC,YAAI,OAAO,gBAAgB;AACzB,UAAA1B,WAAU,EAAE;AACZ,iBAAO;AAAA,QACT;AAGA,YAAI,CAAC,OAAO,SACR,OAAO,QAAQ,QAAQ,QAAQ,YAAY,OAAO,QAAQ,MAAM,QAAQ,WACvE,QAAQ,qBAAqB,QAAQ,QAAQ,qBAAqB,QAAQ,WAC3E,QAAQ,gBAAgB,QAAQ,QAAQG,gBAAe,EAAE,KAAK,GAChE;AAAE,iBAAO;AAAA,QAAM;AAEjB,YAAI2B,4BAA2B,EAAE,GAAG;AAClC,UAAA9B,WAAU,EAAE;AACZ,iBAAO,OAAOhB,eAAc,EAAE;AAAA,QAChC;AAGA,YAAI,MAAM,IAAI,QAAQ,IAAI;AAC1B,YAAI,OAAO,KAAK,IAAI,OAAO,QAAQ,OAAO,GAAG,QAAQ,gBAAgB,IAAI,KAAK;AAC9E,YAAI,KAAK,KAAK,IAAI,KAAK,OAAO,QAAQ,KAAK,GAAG,QAAQ,cAAc;AACpE,YAAI,QAAQ,WAAW,QAAQ,OAAO,QAAQ,WAAW,IAAI;AAAE,iBAAO,KAAK,IAAI,IAAI,OAAO,QAAQ,QAAQ;AAAA,QAAG;AAC7G,YAAI,QAAQ,SAAS,MAAM,QAAQ,SAAS,KAAK,IAAI;AAAE,eAAK,KAAK,IAAI,KAAK,QAAQ,MAAM;AAAA,QAAG;AAC3F,YAAIrC,oBAAmB;AACrB,iBAAOQ,cAAa,GAAG,KAAK,IAAI;AAChC,eAAKC,iBAAgB,GAAG,KAAK,EAAE;AAAA,QACjC;AAEA,YAAI,YAAY,QAAQ,QAAQ,YAAY,MAAM,QAAQ,UACxD,QAAQ,kBAAkB,OAAO,iBAAiB,QAAQ,iBAAiB,OAAO;AACpF,QAAA8C,YAAW,IAAI,MAAM,EAAE;AAEvB,gBAAQ,aAAa5C,cAAahC,SAAQ,GAAG,KAAK,QAAQ,QAAQ,CAAC;AAEnE,WAAG,QAAQ,MAAM,MAAM,MAAM,QAAQ,aAAa;AAElD,YAAI,WAAW6E,gBAAe,EAAE;AAChC,YAAI,CAAC,aAAa,YAAY,KAAK,CAAC,OAAO,SAAS,QAAQ,gBAAgB,QAAQ,SAC/E,QAAQ,qBAAqB,QAAQ,QAAQ,qBAAqB,QAAQ,SAC7E;AAAE,iBAAO;AAAA,QAAM;AAIjB,YAAI,cAAc,kBAAkB,EAAE;AACtC,YAAI,WAAW,GAAG;AAAE,kBAAQ,QAAQ,MAAM,UAAU;AAAA,QAAQ;AAC5D,qBAAa,IAAI,QAAQ,mBAAmB,OAAO,IAAI;AACvD,YAAI,WAAW,GAAG;AAAE,kBAAQ,QAAQ,MAAM,UAAU;AAAA,QAAI;AACxD,gBAAQ,eAAe,QAAQ;AAG/B,yBAAiB,WAAW;AAI5B,QAAAjJ,gBAAe,QAAQ,SAAS;AAChC,QAAAA,gBAAe,QAAQ,YAAY;AACnC,gBAAQ,QAAQ,MAAM,SAAS,QAAQ,MAAM,MAAM,YAAY;AAE/D,YAAI,WAAW;AACb,kBAAQ,iBAAiB,OAAO;AAChC,kBAAQ,gBAAgB,OAAO;AAC/B,UAAAkK,aAAY,IAAI,GAAG;AAAA,QACrB;AAEA,gBAAQ,oBAAoB;AAE5B,eAAO;AAAA,MACT;AAEA,eAASQ,mBAAkB,IAAI,QAAQ;AACrC,YAAI,WAAW,OAAO;AAEtB,iBAAS,QAAQ,QAAO,QAAQ,OAAO;AACrC,cAAI,CAAC,SAAS,CAAC,GAAG,QAAQ,gBAAgB,OAAO,mBAAmBhD,cAAa,EAAE,GAAG;AAEpF,gBAAI,YAAY,SAAS,OAAO,MAC9B;AAAE,yBAAW,EAAC,KAAK,KAAK,IAAI,GAAG,IAAI,SAASH,aAAY,GAAG,OAAO,IAAII,eAAc,EAAE,GAAG,SAAS,GAAG,EAAC;AAAA,YAAG;AAG3G,mBAAO,UAAU8B,cAAa,GAAG,SAAS,GAAG,KAAK,QAAQ;AAC1D,gBAAI,OAAO,QAAQ,QAAQ,GAAG,QAAQ,YAAY,OAAO,QAAQ,MAAM,GAAG,QAAQ,QAChF;AAAE;AAAA,YAAM;AAAA,UACZ,WAAW,OAAO;AAChB,mBAAO,UAAUA,cAAa,GAAG,SAAS,GAAG,KAAK,QAAQ;AAAA,UAC5D;AACA,cAAI,CAACe,uBAAsB,IAAI,MAAM,GAAG;AAAE;AAAA,UAAM;AAChD,UAAAhB,yBAAwB,EAAE;AAC1B,cAAI,aAAaY,sBAAqB,EAAE;AACxC,UAAAlB,iBAAgB,EAAE;AAClB,UAAAmB,kBAAiB,IAAI,UAAU;AAC/B,UAAAI,mBAAkB,IAAI,UAAU;AAChC,iBAAO,QAAQ;AAAA,QACjB;AAEA,eAAO,OAAO,IAAI,UAAU,EAAE;AAC9B,YAAI,GAAG,QAAQ,YAAY,GAAG,QAAQ,oBAAoB,GAAG,QAAQ,UAAU,GAAG,QAAQ,gBAAgB;AACxG,iBAAO,OAAO,IAAI,kBAAkB,IAAI,GAAG,QAAQ,UAAU,GAAG,QAAQ,MAAM;AAC9E,aAAG,QAAQ,mBAAmB,GAAG,QAAQ;AAAU,aAAG,QAAQ,iBAAiB,GAAG,QAAQ;AAAA,QAC5F;AAAA,MACF;AAEA,eAAST,qBAAoB,IAAI,UAAU;AACzC,YAAI,SAAS,IAAIO,eAAc,IAAI,QAAQ;AAC3C,YAAIC,uBAAsB,IAAI,MAAM,GAAG;AACrC,UAAAhB,yBAAwB,EAAE;AAC1B,UAAAkB,mBAAkB,IAAI,MAAM;AAC5B,cAAI,aAAaN,sBAAqB,EAAE;AACxC,UAAAlB,iBAAgB,EAAE;AAClB,UAAAmB,kBAAiB,IAAI,UAAU;AAC/B,UAAAI,mBAAkB,IAAI,UAAU;AAChC,iBAAO,OAAO;AAAA,QAChB;AAAA,MACF;AAMA,eAAS,aAAa,IAAI,mBAAmB,MAAM;AACjD,YAAI,UAAU,GAAG,SAAS,cAAc,GAAG,QAAQ;AACnD,YAAI,YAAY,QAAQ,SAAS,MAAM,UAAU;AAEjD,iBAAS,GAAGI,OAAM;AAChB,cAAI1D,QAAO0D,MAAK;AAEhB,cAAIhM,WAAUU,QAAO,GAAG,QAAQ,sBAAsBsL,OACpD;AAAE,YAAAA,MAAK,MAAM,UAAU;AAAA,UAAQ,OAE/B;AAAE,YAAAA,MAAK,WAAW,YAAYA,KAAI;AAAA,UAAG;AACvC,iBAAO1D;AAAA,QACT;AAEA,YAAI,OAAO,QAAQ,MAAM,QAAQ,QAAQ;AAGzC,iBAAS/G,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AACpC,cAAI,WAAW,KAAKA,EAAC;AACrB,cAAI,SAAS,OAAQ;AAAA,mBAAW,CAAC,SAAS,QAAQ,SAAS,KAAK,cAAc,WAAW;AACvF,gBAAI,OAAOgH,kBAAiB,IAAI,UAAU,OAAO,IAAI;AACrD,sBAAU,aAAa,MAAM,GAAG;AAAA,UAClC,OAAO;AACL,mBAAO,OAAO,SAAS,MAAM;AAAE,oBAAM,GAAG,GAAG;AAAA,YAAG;AAC9C,gBAAI,eAAe,eAAe,qBAAqB,QACrD,qBAAqB,SAAS,SAAS;AACzC,gBAAI,SAAS,SAAS;AACpB,kBAAI/F,SAAQ,SAAS,SAAS,QAAQ,IAAI,IAAI;AAAE,+BAAe;AAAA,cAAO;AACtE,cAAA4F,sBAAqB,IAAI,UAAU,OAAO,IAAI;AAAA,YAChD;AACA,gBAAI,cAAc;AAChB,cAAAjH,gBAAe,SAAS,UAAU;AAClC,uBAAS,WAAW,YAAY,SAAS,eAAe4E,eAAc,GAAG,SAAS,KAAK,CAAC,CAAC;AAAA,YAC3F;AACA,kBAAM,SAAS,KAAK;AAAA,UACtB;AACA,mBAAS,SAAS;AAAA,QACpB;AACA,eAAO,KAAK;AAAE,gBAAM,GAAG,GAAG;AAAA,QAAG;AAAA,MAC/B;AAEA,eAASkG,mBAAkB,SAAS;AAClC,YAAI,QAAQ,QAAQ,QAAQ;AAC5B,gBAAQ,MAAM,MAAM,aAAa,QAAQ;AAAA,MAC3C;AAEA,eAASL,mBAAkB,IAAI,SAAS;AACtC,WAAG,QAAQ,MAAM,MAAM,YAAY,QAAQ,YAAY;AACvD,WAAG,QAAQ,aAAa,MAAM,MAAM,QAAQ,YAAY;AACxD,WAAG,QAAQ,QAAQ,MAAM,SAAU,QAAQ,YAAY,GAAG,QAAQ,YAAYhD,WAAU,EAAE,IAAK;AAAA,MACjG;AAIA,eAAS0C,mBAAkB,IAAI;AAC7B,YAAI,UAAU,GAAG,SAAS,OAAO,QAAQ;AACzC,YAAI,CAAC,QAAQ,iBAAiB,CAAC,QAAQ,QAAQ,cAAc,CAAC,GAAG,QAAQ,cAAc;AAAE;AAAA,QAAO;AAChG,YAAI,OAAOxB,sBAAqB,OAAO,IAAI,QAAQ,SAAS,aAAa,GAAG,IAAI;AAChF,YAAI,UAAU,QAAQ,QAAQ,aAAa,OAAO,OAAO;AACzD,iBAASvI,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AAAE,cAAI,CAAC,KAAKA,EAAC,EAAE,QAAQ;AAC3D,gBAAI,GAAG,QAAQ,aAAa;AAC1B,kBAAI,KAAKA,EAAC,EAAE,QACV;AAAE,qBAAKA,EAAC,EAAE,OAAO,MAAM,OAAO;AAAA,cAAM;AACtC,kBAAI,KAAKA,EAAC,EAAE,kBACV;AAAE,qBAAKA,EAAC,EAAE,iBAAiB,MAAM,OAAO;AAAA,cAAM;AAAA,YAClD;AACA,gBAAI,QAAQ,KAAKA,EAAC,EAAE;AACpB,gBAAI,OAAO;AAAE,uBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAC7C;AAAE,sBAAM,CAAC,EAAE,MAAM,OAAO;AAAA,cAAM;AAAA,YAAE;AAAA,UACpC;AAAA,QAAE;AACF,YAAI,GAAG,QAAQ,aACb;AAAE,kBAAQ,QAAQ,MAAM,OAAQ,OAAO,UAAW;AAAA,QAAM;AAAA,MAC5D;AAKA,eAASwK,4BAA2B,IAAI;AACtC,YAAI,CAAC,GAAG,QAAQ,aAAa;AAAE,iBAAO;AAAA,QAAM;AAC5C,YAAI,MAAM,GAAG,KAAK,OAAOhG,eAAc,GAAG,SAAS,IAAI,QAAQ,IAAI,OAAO,CAAC,GAAG,UAAU,GAAG;AAC3F,YAAI,KAAK,UAAU,QAAQ,cAAc;AACvC,cAAIlB,QAAO,QAAQ,QAAQ,YAAYxD;AAAA,YAAI;AAAA,YAAO,CAACA,KAAI,OAAO,IAAI,CAAC;AAAA,YACxB;AAAA,UAA6C,CAAC;AACzF,cAAI,SAASwD,MAAK,WAAW,aAAa,UAAUA,MAAK,cAAc;AACvE,kBAAQ,WAAW,MAAM,QAAQ;AACjC,kBAAQ,oBAAoB,KAAK,IAAI,QAAQ,QAAQ,WAAW,cAAc,OAAO,IAAI;AACzF,kBAAQ,eAAe,QAAQ,oBAAoB;AACnD,kBAAQ,eAAe,QAAQ,oBAAoB,KAAK,SAAS;AACjE,kBAAQ,WAAW,MAAM,QAAQ,QAAQ,eAAe;AACxD,UAAAoH,mBAAkB,GAAG,OAAO;AAC5B,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAEA,eAAS,WAAW,SAAS,aAAa;AACxC,YAAI,SAAS,CAAC,GAAG,iBAAiB;AAClC,iBAAS1K,KAAI,GAAGA,KAAI,QAAQ,QAAQA,MAAK;AACvC,cAAI,OAAO,QAAQA,EAAC,GAAGD,SAAQ;AAC/B,cAAI,OAAO,QAAQ,UAAU;AAAE,YAAAA,SAAQ,KAAK;AAAO,mBAAO,KAAK;AAAA,UAAW;AAC1E,cAAI,QAAQ,0BAA0B;AACpC,gBAAI,CAAC,aAAa;AAAE;AAAA,YAAS,OACxB;AAAE,+BAAiB;AAAA,YAAM;AAAA,UAChC;AACA,iBAAO,KAAK,EAAC,WAAW,MAAM,OAAOA,OAAK,CAAC;AAAA,QAC7C;AACA,YAAI,eAAe,CAAC,gBAAgB;AAAE,iBAAO,KAAK,EAAC,WAAW,0BAA0B,OAAO,KAAI,CAAC;AAAA,QAAG;AACvG,eAAO;AAAA,MACT;AAIA,eAAS,cAAc,SAAS;AAC9B,YAAI,UAAU,QAAQ,SAAS,QAAQ,QAAQ;AAC/C,QAAAH,gBAAe,OAAO;AACtB,gBAAQ,aAAa;AACrB,iBAASI,KAAI,GAAGA,KAAI,MAAM,QAAQ,EAAEA,IAAG;AACrC,cAAIqI,OAAM,MAAMrI,EAAC;AACjB,cAAI,YAAYqI,KAAI;AACpB,cAAItI,SAAQsI,KAAI;AAChB,cAAI,OAAO,QAAQ,YAAYvI,KAAI,OAAO,MAAM,uBAAuB,SAAS,CAAC;AACjF,cAAIC,QAAO;AAAE,iBAAK,MAAM,UAAUA;AAAA,UAAO;AACzC,cAAI,aAAa,0BAA0B;AACzC,oBAAQ,aAAa;AACrB,iBAAK,MAAM,SAAS,QAAQ,gBAAgB,KAAK;AAAA,UACnD;AAAA,QACF;AACA,gBAAQ,MAAM,UAAU,MAAM,SAAS,KAAK;AAC5C,QAAA2K,mBAAkB,OAAO;AAAA,MAC3B;AAEA,eAAS,cAAc,IAAI;AACzB,sBAAc,GAAG,OAAO;AACxB,QAAAjC,WAAU,EAAE;AACZ,QAAAsB,mBAAkB,EAAE;AAAA,MACtB;AAMA,eAAS,QAAQ,OAAO,KAAK,OAAO,SAAS;AAC3C,YAAI,IAAI;AACR,aAAK,QAAQ;AAGb,UAAE,kBAAkBjK,KAAI,OAAO,MAAM,6BAA6B;AAClE,UAAE,gBAAgB,aAAa,kBAAkB,MAAM;AAGvD,UAAE,eAAeA,KAAI,OAAO,MAAM,0BAA0B;AAC5D,UAAE,aAAa,aAAa,kBAAkB,MAAM;AAEpD,UAAE,UAAUG,MAAK,OAAO,MAAM,iBAAiB;AAE/C,UAAE,eAAeH,KAAI,OAAO,MAAM,MAAM,gCAAgC;AACxE,UAAE,YAAYA,KAAI,OAAO,MAAM,oBAAoB;AAEnD,UAAE,UAAUA,KAAI,OAAO,MAAM,oBAAoB;AAEjD,UAAE,cAAcA,KAAI,OAAO,MAAM,oBAAoB;AAErD,UAAE,YAAYG;AAAA,UAAK;AAAA,UAAO,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,OAAO;AAAA,UACzE;AAAA,UAAM;AAAA,QAAmC;AAC3D,YAAI,QAAQA,MAAK,OAAO,CAAC,EAAE,SAAS,GAAG,kBAAkB;AAEzD,UAAE,QAAQH,KAAI,OAAO,CAAC,KAAK,GAAG,MAAM,oBAAoB;AAExD,UAAE,QAAQA,KAAI,OAAO,CAAC,EAAE,KAAK,GAAG,kBAAkB;AAClD,UAAE,aAAa;AAIf,UAAE,eAAeA,KAAI,OAAO,MAAM,MAAM,iCAAiCqB,eAAc,iBAAiB;AAExG,UAAE,UAAUrB,KAAI,OAAO,MAAM,oBAAoB;AACjD,UAAE,aAAa;AAEf,UAAE,WAAWA,KAAI,OAAO,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,GAAG,mBAAmB;AACjF,UAAE,SAAS,aAAa,YAAY,IAAI;AAExC,UAAE,UAAUA,KAAI,OAAO,CAAC,EAAE,iBAAiB,EAAE,cAAc,EAAE,QAAQ,GAAG,YAAY;AAGpF,YAAIvB,OAAMC,cAAa,GAAG;AAAE,YAAE,QAAQ,MAAM,SAAS;AAAI,YAAE,SAAS,MAAM,eAAe;AAAA,QAAG;AAC5F,YAAI,CAACC,WAAU,EAAEN,UAASe,UAAS;AAAE,YAAE,SAAS,YAAY;AAAA,QAAM;AAElE,YAAI,OAAO;AACT,cAAI,MAAM,aAAa;AAAE,kBAAM,YAAY,EAAE,OAAO;AAAA,UAAG,OAClD;AAAE,kBAAM,EAAE,OAAO;AAAA,UAAG;AAAA,QAC3B;AAGA,UAAE,WAAW,EAAE,SAAS,IAAI;AAC5B,UAAE,mBAAmB,EAAE,iBAAiB,IAAI;AAE5C,UAAE,OAAO,CAAC;AACV,UAAE,eAAe;AAGjB,UAAE,mBAAmB;AAErB,UAAE,aAAa;AACf,UAAE,iBAAiB,EAAE,gBAAgB;AACrC,UAAE,oBAAoB;AAEtB,UAAE,iBAAiB,EAAE,YAAY,EAAE,WAAW;AAC9C,UAAE,oBAAoB;AAItB,UAAE,eAAe,EAAE,oBAAoB,EAAE,eAAe;AAIxD,UAAE,eAAe;AAEjB,UAAE,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB;AAI5D,UAAE,UAAU;AACZ,UAAE,gBAAgB;AAClB,UAAE,iBAAiB;AAGnB,UAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc;AAGxD,UAAE,QAAQ;AAIV,UAAE,oBAAoB;AAEtB,UAAE,cAAc;AAEhB,UAAE,cAAc,WAAW,QAAQ,SAAS,QAAQ,WAAW;AAC/D,sBAAc,CAAC;AAEf,cAAM,KAAK,CAAC;AAAA,MACd;AAaA,UAAI,eAAe,GAAG,qBAAqB;AAK3C,UAAIX,KAAI;AAAE,6BAAqB;AAAA,MAAM,WAC5BJ,QAAO;AAAE,6BAAqB;AAAA,MAAI,WAClCQ,SAAQ;AAAE,6BAAqB;AAAA,MAAK,WACpCE,SAAQ;AAAE,6BAAqB,KAAG;AAAA,MAAG;AAE9C,eAAS,gBAAgB,GAAG;AAC1B,YAAI,KAAK,EAAE,aAAa,KAAK,EAAE;AAC/B,YAAI,MAAM,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,iBAAiB;AAAE,eAAK,EAAE;AAAA,QAAQ;AAC5E,YAAI,MAAM,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe;AAAE,eAAK,EAAE;AAAA,QAAQ,WACjE,MAAM,MAAM;AAAE,eAAK,EAAE;AAAA,QAAY;AAC1C,eAAO,EAAC,GAAG,IAAI,GAAG,GAAE;AAAA,MACtB;AACA,eAAS,iBAAiB,GAAG;AAC3B,YAAI,QAAQ,gBAAgB,CAAC;AAC7B,cAAM,KAAK;AACX,cAAM,KAAK;AACX,eAAO;AAAA,MACT;AAEA,eAAS,cAAc,IAAI,GAAG;AAC5B,YAAI,QAAQ,gBAAgB,CAAC,GAAG,KAAK,MAAM,GAAG,KAAK,MAAM;AAEzD,YAAI,UAAU,GAAG,SAAS,SAAS,QAAQ;AAE3C,YAAI,aAAa,OAAO,cAAc,OAAO;AAC7C,YAAI,aAAa,OAAO,eAAe,OAAO;AAC9C,YAAI,EAAE,MAAM,cAAc,MAAM,aAAa;AAAE;AAAA,QAAO;AAMtD,YAAI,MAAMM,QAAOV,SAAQ;AACvB,gBAAO,UAAS,MAAM,EAAE,QAAQ,OAAO,QAAQ,MAAM,OAAO,QAAQ,MAAM,IAAI,YAAY;AACxF,qBAASuB,KAAI,GAAGA,KAAI,KAAK,QAAQA,MAAK;AACpC,kBAAI,KAAKA,EAAC,EAAE,QAAQ,KAAK;AACvB,mBAAG,QAAQ,qBAAqB;AAChC,sBAAM;AAAA,cACR;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAQA,YAAI,MAAM,CAAC7B,UAAS,CAACS,WAAU,sBAAsB,MAAM;AACzD,cAAI,MAAM,YACR;AAAE,YAAA4K,iBAAgB,IAAI,KAAK,IAAI,GAAG,OAAO,YAAY,KAAK,kBAAkB,CAAC;AAAA,UAAG;AAClF,UAAAC,eAAc,IAAI,KAAK,IAAI,GAAG,OAAO,aAAa,KAAK,kBAAkB,CAAC;AAK1E,cAAI,CAAC,MAAO,MAAM,YAChB;AAAE,6BAAiB,CAAC;AAAA,UAAG;AACzB,kBAAQ,cAAc;AACtB;AAAA,QACF;AAIA,YAAI,MAAM,sBAAsB,MAAM;AACpC,cAAI,SAAS,KAAK;AAClB,cAAI,MAAM,GAAG,IAAI,WAAW,MAAM,MAAM,QAAQ,QAAQ;AACxD,cAAI,SAAS,GAAG;AAAE,kBAAM,KAAK,IAAI,GAAG,MAAM,SAAS,EAAE;AAAA,UAAG,OACnD;AAAE,kBAAM,KAAK,IAAI,GAAG,IAAI,QAAQ,MAAM,SAAS,EAAE;AAAA,UAAG;AACzD,UAAAG,qBAAoB,IAAI,EAAC,KAAU,QAAQ,IAAG,CAAC;AAAA,QACjD;AAEA,YAAI,eAAe,IAAI;AACrB,cAAI,QAAQ,eAAe,MAAM;AAC/B,oBAAQ,cAAc,OAAO;AAAY,oBAAQ,cAAc,OAAO;AACtE,oBAAQ,UAAU;AAAI,oBAAQ,UAAU;AACxC,uBAAW,WAAY;AACrB,kBAAI,QAAQ,eAAe,MAAM;AAAE;AAAA,cAAO;AAC1C,kBAAI,SAAS,OAAO,aAAa,QAAQ;AACzC,kBAAI,SAAS,OAAO,YAAY,QAAQ;AACxC,kBAAI,SAAU,UAAU,QAAQ,WAAW,SAAS,QAAQ,WACzD,UAAU,QAAQ,WAAW,SAAS,QAAQ;AACjD,sBAAQ,cAAc,QAAQ,cAAc;AAC5C,kBAAI,CAAC,QAAQ;AAAE;AAAA,cAAO;AACtB,oCAAsB,qBAAqB,eAAe,WAAW,eAAe;AACpF,gBAAE;AAAA,YACJ,GAAG,GAAG;AAAA,UACR,OAAO;AACL,oBAAQ,WAAW;AAAI,oBAAQ,WAAW;AAAA,UAC5C;AAAA,QACF;AAAA,MACF;AAOA,UAAIe,aAAY,SAAS,QAAQ,WAAW;AAC1C,aAAK,SAAS;AACd,aAAK,YAAY;AAAA,MACnB;AAEA,MAAAA,WAAU,UAAU,UAAU,WAAY;AAAE,eAAO,KAAK,OAAO,KAAK,SAAS;AAAA,MAAE;AAE/E,MAAAA,WAAU,UAAU,SAAS,SAAU,OAAO;AAC5C,YAAI,SAAS,MAAM;AAAE,iBAAO;AAAA,QAAK;AACjC,YAAI,MAAM,aAAa,KAAK,aAAa,MAAM,OAAO,UAAU,KAAK,OAAO,QAAQ;AAAE,iBAAO;AAAA,QAAM;AACnG,iBAAS3K,KAAI,GAAGA,KAAI,KAAK,OAAO,QAAQA,MAAK;AAC3C,cAAI,OAAO,KAAK,OAAOA,EAAC,GAAG,QAAQ,MAAM,OAAOA,EAAC;AACjD,cAAI,CAAC2E,gBAAe,KAAK,QAAQ,MAAM,MAAM,KAAK,CAACA,gBAAe,KAAK,MAAM,MAAM,IAAI,GAAG;AAAE,mBAAO;AAAA,UAAM;AAAA,QAC3G;AACA,eAAO;AAAA,MACT;AAEA,MAAAgG,WAAU,UAAU,WAAW,WAAY;AACzC,YAAI,MAAM,CAAC;AACX,iBAAS3K,KAAI,GAAGA,KAAI,KAAK,OAAO,QAAQA,MACtC;AAAE,cAAIA,EAAC,IAAI,IAAI4K,OAAMhG,SAAQ,KAAK,OAAO5E,EAAC,EAAE,MAAM,GAAG4E,SAAQ,KAAK,OAAO5E,EAAC,EAAE,IAAI,CAAC;AAAA,QAAG;AACtF,eAAO,IAAI2K,WAAU,KAAK,KAAK,SAAS;AAAA,MAC1C;AAEA,MAAAA,WAAU,UAAU,oBAAoB,WAAY;AAClD,iBAAS3K,KAAI,GAAGA,KAAI,KAAK,OAAO,QAAQA,MACtC;AAAE,cAAI,CAAC,KAAK,OAAOA,EAAC,EAAE,MAAM,GAAG;AAAE,mBAAO;AAAA,UAAK;AAAA,QAAE;AACjD,eAAO;AAAA,MACT;AAEA,MAAA2K,WAAU,UAAU,WAAW,SAAU,KAAK,KAAK;AACjD,YAAI,CAAC,KAAK;AAAE,gBAAM;AAAA,QAAK;AACvB,iBAAS3K,KAAI,GAAGA,KAAI,KAAK,OAAO,QAAQA,MAAK;AAC3C,cAAIE,SAAQ,KAAK,OAAOF,EAAC;AACzB,cAAI0E,KAAI,KAAKxE,OAAM,KAAK,CAAC,KAAK,KAAKwE,KAAI,KAAKxE,OAAM,GAAG,CAAC,KAAK,GACzD;AAAE,mBAAOF;AAAA,UAAE;AAAA,QACf;AACA,eAAO;AAAA,MACT;AAEA,UAAI4K,SAAQ,SAAS,QAAQ,MAAM;AACjC,aAAK,SAAS;AAAQ,aAAK,OAAO;AAAA,MACpC;AAEA,MAAAA,OAAM,UAAU,OAAO,WAAY;AAAE,eAAO9F,QAAO,KAAK,QAAQ,KAAK,IAAI;AAAA,MAAE;AAC3E,MAAA8F,OAAM,UAAU,KAAK,WAAY;AAAE,eAAO/F,QAAO,KAAK,QAAQ,KAAK,IAAI;AAAA,MAAE;AACzE,MAAA+F,OAAM,UAAU,QAAQ,WAAY;AAAE,eAAO,KAAK,KAAK,QAAQ,KAAK,OAAO,QAAQ,KAAK,KAAK,MAAM,KAAK,OAAO;AAAA,MAAG;AAKlH,eAASC,oBAAmB,IAAI,QAAQ,WAAW;AACjD,YAAI,WAAW,MAAM,GAAG,QAAQ;AAChC,YAAI,OAAO,OAAO,SAAS;AAC3B,eAAO,KAAK,SAAU,GAAG,GAAG;AAAE,iBAAOnG,KAAI,EAAE,KAAK,GAAG,EAAE,KAAK,CAAC;AAAA,QAAG,CAAC;AAC/D,oBAAYzD,SAAQ,QAAQ,IAAI;AAChC,iBAASjB,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,cAAI,MAAM,OAAOA,EAAC,GAAG,OAAO,OAAOA,KAAI,CAAC;AACxC,cAAI,OAAO0E,KAAI,KAAK,GAAG,GAAG,IAAI,KAAK,CAAC;AACpC,cAAI,YAAY,CAAC,IAAI,MAAM,IAAI,OAAO,IAAI,QAAQ,GAAG;AACnD,gBAAI,OAAOI,QAAO,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAKD,QAAO,KAAK,GAAG,GAAG,IAAI,GAAG,CAAC;AAC3E,gBAAI,MAAM,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,KAAK,KAAK;AACtE,gBAAI7E,MAAK,WAAW;AAAE,gBAAE;AAAA,YAAW;AACnC,mBAAO,OAAO,EAAEA,IAAG,GAAG,IAAI4K,OAAM,MAAM,KAAK,MAAM,MAAM,OAAO,EAAE,CAAC;AAAA,UACnE;AAAA,QACF;AACA,eAAO,IAAID,WAAU,QAAQ,SAAS;AAAA,MACxC;AAEA,eAASG,iBAAgB,QAAQ,MAAM;AACrC,eAAO,IAAIH,WAAU,CAAC,IAAIC,OAAM,QAAQ,QAAQ,MAAM,CAAC,GAAG,CAAC;AAAA,MAC7D;AAIA,eAASG,WAAU,QAAQ;AACzB,YAAI,CAAC,OAAO,MAAM;AAAE,iBAAO,OAAO;AAAA,QAAG;AACrC,eAAOtG;AAAA,UAAI,OAAO,KAAK,OAAO,OAAO,KAAK,SAAS;AAAA,UACxCnD,KAAI,OAAO,IAAI,EAAE,UAAU,OAAO,KAAK,UAAU,IAAI,OAAO,KAAK,KAAK;AAAA,QAAE;AAAA,MACrF;AAIA,eAAS,gBAAgB,KAAK,QAAQ;AACpC,YAAIoD,KAAI,KAAK,OAAO,IAAI,IAAI,GAAG;AAAE,iBAAO;AAAA,QAAI;AAC5C,YAAIA,KAAI,KAAK,OAAO,EAAE,KAAK,GAAG;AAAE,iBAAOqG,WAAU,MAAM;AAAA,QAAE;AAEzD,YAAI,OAAO,IAAI,OAAO,OAAO,KAAK,UAAU,OAAO,GAAG,OAAO,OAAO,KAAK,QAAQ,GAAG,KAAK,IAAI;AAC7F,YAAI,IAAI,QAAQ,OAAO,GAAG,MAAM;AAAE,gBAAMA,WAAU,MAAM,EAAE,KAAK,OAAO,GAAG;AAAA,QAAI;AAC7E,eAAOtG,KAAI,MAAM,EAAE;AAAA,MACrB;AAEA,eAAS,sBAAsB,KAAK,QAAQ;AAC1C,YAAI,MAAM,CAAC;AACX,iBAASzE,KAAI,GAAGA,KAAI,IAAI,IAAI,OAAO,QAAQA,MAAK;AAC9C,cAAIE,SAAQ,IAAI,IAAI,OAAOF,EAAC;AAC5B,cAAI,KAAK,IAAI4K;AAAA,YAAM,gBAAgB1K,OAAM,QAAQ,MAAM;AAAA,YACpC,gBAAgBA,OAAM,MAAM,MAAM;AAAA,UAAC,CAAC;AAAA,QACzD;AACA,eAAO2K,oBAAmB,IAAI,IAAI,KAAK,IAAI,IAAI,SAAS;AAAA,MAC1D;AAEA,eAAS,UAAU,KAAK,KAAK,IAAI;AAC/B,YAAI,IAAI,QAAQ,IAAI,MAClB;AAAE,iBAAOpG,KAAI,GAAG,MAAM,IAAI,KAAK,IAAI,KAAK,GAAG,EAAE;AAAA,QAAE,OAE/C;AAAE,iBAAOA,KAAI,GAAG,QAAQ,IAAI,OAAO,IAAI,OAAO,IAAI,EAAE;AAAA,QAAE;AAAA,MAC1D;AAIA,eAAS,mBAAmB,KAAK,SAAS,MAAM;AAC9C,YAAI,MAAM,CAAC;AACX,YAAI,UAAUA,KAAI,IAAI,OAAO,CAAC,GAAG,UAAU;AAC3C,iBAASzE,KAAI,GAAGA,KAAI,QAAQ,QAAQA,MAAK;AACvC,cAAI,SAAS,QAAQA,EAAC;AACtB,cAAI,OAAO,UAAU,OAAO,MAAM,SAAS,OAAO;AAClD,cAAI,KAAK,UAAU+K,WAAU,MAAM,GAAG,SAAS,OAAO;AACtD,oBAAU,OAAO;AACjB,oBAAU;AACV,cAAI,QAAQ,UAAU;AACpB,gBAAI7K,SAAQ,IAAI,IAAI,OAAOF,EAAC,GAAG,MAAM0E,KAAIxE,OAAM,MAAMA,OAAM,MAAM,IAAI;AACrE,gBAAIF,EAAC,IAAI,IAAI4K,OAAM,MAAM,KAAK,MAAM,MAAM,OAAO,EAAE;AAAA,UACrD,OAAO;AACL,gBAAI5K,EAAC,IAAI,IAAI4K,OAAM,MAAM,IAAI;AAAA,UAC/B;AAAA,QACF;AACA,eAAO,IAAID,WAAU,KAAK,IAAI,IAAI,SAAS;AAAA,MAC7C;AAIA,eAASK,UAAS,IAAI;AACpB,WAAG,IAAI,OAAOpH,SAAQ,GAAG,SAAS,GAAG,IAAI,UAAU;AACnD,uBAAe,EAAE;AAAA,MACnB;AAEA,eAAS,eAAe,IAAI;AAC1B,WAAG,IAAI,KAAK,SAAU,MAAM;AAC1B,cAAI,KAAK,YAAY;AAAE,iBAAK,aAAa;AAAA,UAAM;AAC/C,cAAI,KAAK,QAAQ;AAAE,iBAAK,SAAS;AAAA,UAAM;AAAA,QACzC,CAAC;AACD,WAAG,IAAI,eAAe,GAAG,IAAI,oBAAoB,GAAG,IAAI;AACxD,QAAAkG,aAAY,IAAI,GAAG;AACnB,WAAG,MAAM;AACT,YAAI,GAAG,OAAO;AAAE,UAAArB,WAAU,EAAE;AAAA,QAAG;AAAA,MACjC;AAOA,eAAS,kBAAkB,KAAK,QAAQ;AACtC,eAAO,OAAO,KAAK,MAAM,KAAK,OAAO,GAAG,MAAM,KAAKnH,KAAI,OAAO,IAAI,KAAK,OACpE,CAAC,IAAI,MAAM,IAAI,GAAG,QAAQ;AAAA,MAC/B;AAGA,eAAS,UAAU,KAAK,QAAQ,aAAa6E,iBAAgB;AAC3D,iBAAS,SAAS,GAAG;AAAC,iBAAO,cAAc,YAAY,CAAC,IAAI;AAAA,QAAI;AAChE,iBAAS,OAAO,MAAMjC,OAAM,OAAO;AACjC,UAAAkC,YAAW,MAAMlC,OAAM,OAAOiC,eAAc;AAC5C,UAAAS,aAAY,MAAM,UAAU,MAAM,MAAM;AAAA,QAC1C;AACA,iBAAS,SAASzG,QAAO,KAAK;AAC5B,cAAI,SAAS,CAAC;AACd,mBAASH,KAAIG,QAAOH,KAAI,KAAK,EAAEA,IAC7B;AAAE,mBAAO,KAAK,IAAIkG,MAAKhC,MAAKlE,EAAC,GAAG,SAASA,EAAC,GAAGmG,eAAc,CAAC;AAAA,UAAG;AACjE,iBAAO;AAAA,QACT;AAEA,YAAI,OAAO,OAAO,MAAM,KAAK,OAAO,IAAIjC,QAAO,OAAO;AACtD,YAAI,YAAYF,SAAQ,KAAK,KAAK,IAAI,GAAG,WAAWA,SAAQ,KAAK,GAAG,IAAI;AACxE,YAAI,WAAW1C,KAAI4C,KAAI,GAAG,YAAY,SAASA,MAAK,SAAS,CAAC,GAAG,SAAS,GAAG,OAAO,KAAK;AAGzF,YAAI,OAAO,MAAM;AACf,cAAI,OAAO,GAAG,SAAS,GAAGA,MAAK,MAAM,CAAC;AACtC,cAAI,OAAOA,MAAK,QAAQ,IAAI,OAAOA,MAAK,MAAM;AAAA,QAChD,WAAW,kBAAkB,KAAK,MAAM,GAAG;AAGzC,cAAI,QAAQ,SAAS,GAAGA,MAAK,SAAS,CAAC;AACvC,iBAAO,UAAU,SAAS,MAAM,SAAS;AACzC,cAAI,QAAQ;AAAE,gBAAI,OAAO,KAAK,MAAM,MAAM;AAAA,UAAG;AAC7C,cAAI,MAAM,QAAQ;AAAE,gBAAI,OAAO,KAAK,MAAM,KAAK;AAAA,UAAG;AAAA,QACpD,WAAW,aAAa,UAAU;AAChC,cAAIA,MAAK,UAAU,GAAG;AACpB,mBAAO,WAAW,UAAU,KAAK,MAAM,GAAG,KAAK,EAAE,IAAI,WAAW,UAAU,KAAK,MAAM,GAAG,EAAE,GAAG,SAAS;AAAA,UACxG,OAAO;AACL,gBAAI,UAAU,SAAS,GAAGA,MAAK,SAAS,CAAC;AACzC,oBAAQ,KAAK,IAAIgC,MAAK,WAAW,UAAU,KAAK,MAAM,GAAG,EAAE,GAAG,WAAWC,eAAc,CAAC;AACxF,mBAAO,WAAW,UAAU,KAAK,MAAM,GAAG,KAAK,EAAE,IAAIjC,MAAK,CAAC,GAAG,SAAS,CAAC,CAAC;AACzE,gBAAI,OAAO,KAAK,OAAO,GAAG,OAAO;AAAA,UACnC;AAAA,QACF,WAAWA,MAAK,UAAU,GAAG;AAC3B,iBAAO,WAAW,UAAU,KAAK,MAAM,GAAG,KAAK,EAAE,IAAIA,MAAK,CAAC,IAAI,SAAS,KAAK,MAAM,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;AACtG,cAAI,OAAO,KAAK,OAAO,GAAG,MAAM;AAAA,QAClC,OAAO;AACL,iBAAO,WAAW,UAAU,KAAK,MAAM,GAAG,KAAK,EAAE,IAAIA,MAAK,CAAC,GAAG,SAAS,CAAC,CAAC;AACzE,iBAAO,UAAU,WAAW,SAAS,KAAK,MAAM,GAAG,EAAE,GAAG,SAAS;AACjE,cAAI,UAAU,SAAS,GAAGA,MAAK,SAAS,CAAC;AACzC,cAAI,SAAS,GAAG;AAAE,gBAAI,OAAO,KAAK,OAAO,GAAG,SAAS,CAAC;AAAA,UAAG;AACzD,cAAI,OAAO,KAAK,OAAO,GAAG,OAAO;AAAA,QACnC;AAEA,QAAA0C,aAAY,KAAK,UAAU,KAAK,MAAM;AAAA,MACxC;AAGA,eAASqE,YAAW,KAAK,GAAG,gBAAgB;AAC1C,iBAAS,UAAUC,MAAK,MAAM,YAAY;AACxC,cAAIA,KAAI,QAAQ;AAAE,qBAASlL,KAAI,GAAGA,KAAIkL,KAAI,OAAO,QAAQ,EAAElL,IAAG;AAC5D,kBAAI,MAAMkL,KAAI,OAAOlL,EAAC;AACtB,kBAAI,IAAI,OAAO,MAAM;AAAE;AAAA,cAAS;AAChC,kBAAI,SAAS,cAAc,IAAI;AAC/B,kBAAI,kBAAkB,CAAC,QAAQ;AAAE;AAAA,cAAS;AAC1C,gBAAE,IAAI,KAAK,MAAM;AACjB,wBAAU,IAAI,KAAKkL,MAAK,MAAM;AAAA,YAChC;AAAA,UAAE;AAAA,QACJ;AACA,kBAAU,KAAK,MAAM,IAAI;AAAA,MAC3B;AAGA,eAAS,UAAU,IAAI,KAAK;AAC1B,YAAI,IAAI,IAAI;AAAE,gBAAM,IAAI,MAAM,kCAAkC;AAAA,QAAE;AAClE,WAAG,MAAM;AACT,YAAI,KAAK;AACT,QAAA1C,qBAAoB,EAAE;AACtB,QAAAwC,UAAS,EAAE;AACX,0BAAkB,EAAE;AACpB,YAAI,CAAC,GAAG,QAAQ,cAAc;AAAE,UAAA/E,aAAY,EAAE;AAAA,QAAG;AACjD,WAAG,QAAQ,OAAO,IAAI;AACtB,QAAAwC,WAAU,EAAE;AAAA,MACd;AAEA,eAAS,kBAAkB,IAAI;AAC/B,SAAC,GAAG,IAAI,aAAa,QAAQnI,YAAWZ,UAAS,GAAG,QAAQ,SAAS,gBAAgB;AAAA,MACrF;AAEA,eAAS,iBAAiB,IAAI;AAC5B,QAAA6K,SAAQ,IAAI,WAAY;AACtB,4BAAkB,EAAE;AACpB,UAAA9B,WAAU,EAAE;AAAA,QACd,CAAC;AAAA,MACH;AAEA,eAAS0C,SAAQ,UAAU;AAIzB,aAAK,OAAO,CAAC;AAAG,aAAK,SAAS,CAAC;AAC/B,aAAK,YAAY;AAGjB,aAAK,cAAc,KAAK,cAAc;AACtC,aAAK,SAAS,KAAK,YAAY;AAC/B,aAAK,aAAa,KAAK,gBAAgB;AAEvC,aAAK,aAAa,KAAK,gBAAgB,YAAY;AAAA,MACrD;AAIA,eAAS,wBAAwB,KAAK,QAAQ;AAC5C,YAAI,aAAa,EAAC,MAAMvG,SAAQ,OAAO,IAAI,GAAG,IAAImG,WAAU,MAAM,GAAG,MAAM9G,YAAW,KAAK,OAAO,MAAM,OAAO,EAAE,EAAC;AAClH,yBAAiB,KAAK,YAAY,OAAO,KAAK,MAAM,OAAO,GAAG,OAAO,CAAC;AACtE,QAAAgH,YAAW,KAAK,SAAUC,MAAK;AAAE,iBAAO,iBAAiBA,MAAK,YAAY,OAAO,KAAK,MAAM,OAAO,GAAG,OAAO,CAAC;AAAA,QAAG,GAAG,IAAI;AACxH,eAAO;AAAA,MACT;AAIA,eAAS,qBAAqBhK,QAAO;AACnC,eAAOA,OAAM,QAAQ;AACnB,cAAI,OAAOI,KAAIJ,MAAK;AACpB,cAAI,KAAK,QAAQ;AAAE,YAAAA,OAAM,IAAI;AAAA,UAAG,OAC3B;AAAE;AAAA,UAAM;AAAA,QACf;AAAA,MACF;AAIA,eAAS,gBAAgB,MAAM,OAAO;AACpC,YAAI,OAAO;AACT,+BAAqB,KAAK,IAAI;AAC9B,iBAAOI,KAAI,KAAK,IAAI;AAAA,QACtB,WAAW,KAAK,KAAK,UAAU,CAACA,KAAI,KAAK,IAAI,EAAE,QAAQ;AACrD,iBAAOA,KAAI,KAAK,IAAI;AAAA,QACtB,WAAW,KAAK,KAAK,SAAS,KAAK,CAAC,KAAK,KAAK,KAAK,KAAK,SAAS,CAAC,EAAE,QAAQ;AAC1E,eAAK,KAAK,IAAI;AACd,iBAAOA,KAAI,KAAK,IAAI;AAAA,QACtB;AAAA,MACF;AAKA,eAAS,mBAAmB,KAAK,QAAQ,UAAU,MAAM;AACvD,YAAI,OAAO,IAAI;AACf,aAAK,OAAO,SAAS;AACrB,YAAIN,QAAO,CAAC,oBAAI,QAAM;AACtB,YAAI;AAEJ,aAAK,KAAK,UAAU,QACf,KAAK,cAAc,OAAO,UAAU,OAAO,WACzC,OAAO,OAAO,OAAO,CAAC,KAAK,OAAO,KAAK,cAAcA,SAAQ,IAAI,KAAK,IAAI,GAAG,QAAQ,oBAAoB,QAC1G,OAAO,OAAO,OAAO,CAAC,KAAK,UAC5B,MAAM,gBAAgB,MAAM,KAAK,UAAU,IAAI,IAAI;AAEtD,iBAAOM,KAAI,IAAI,OAAO;AACtB,cAAIoD,KAAI,OAAO,MAAM,OAAO,EAAE,KAAK,KAAKA,KAAI,OAAO,MAAM,KAAK,EAAE,KAAK,GAAG;AAGtE,iBAAK,KAAKqG,WAAU,MAAM;AAAA,UAC5B,OAAO;AAEL,gBAAI,QAAQ,KAAK,wBAAwB,KAAK,MAAM,CAAC;AAAA,UACvD;AAAA,QACF,OAAO;AAEL,cAAI,SAASzJ,KAAI,KAAK,IAAI;AAC1B,cAAI,CAAC,UAAU,CAAC,OAAO,QACrB;AAAE,mCAAuB,IAAI,KAAK,KAAK,IAAI;AAAA,UAAG;AAChD,gBAAM;AAAA,YAAC,SAAS,CAAC,wBAAwB,KAAK,MAAM,CAAC;AAAA,YAC9C,YAAY,KAAK;AAAA,UAAU;AAClC,eAAK,KAAK,KAAK,GAAG;AAClB,iBAAO,KAAK,KAAK,SAAS,KAAK,WAAW;AACxC,iBAAK,KAAK,MAAM;AAChB,gBAAI,CAAC,KAAK,KAAK,CAAC,EAAE,QAAQ;AAAE,mBAAK,KAAK,MAAM;AAAA,YAAG;AAAA,UACjD;AAAA,QACF;AACA,aAAK,KAAK,KAAK,QAAQ;AACvB,aAAK,aAAa,EAAE,KAAK;AACzB,aAAK,cAAc,KAAK,cAAcN;AACtC,aAAK,SAAS,KAAK,YAAY;AAC/B,aAAK,aAAa,KAAK,gBAAgB,OAAO;AAE9C,YAAI,CAAC,MAAM;AAAE,UAAA4B,QAAO,KAAK,cAAc;AAAA,QAAG;AAAA,MAC5C;AAEA,eAAS,0BAA0B,KAAKwI,SAAQ,MAAM,KAAK;AACzD,YAAI,KAAKA,QAAO,OAAO,CAAC;AACxB,eAAO,MAAM,OACX,MAAM,OACN,KAAK,OAAO,UAAU,IAAI,OAAO,UACjC,KAAK,kBAAkB,KAAK,IAAI,kBAAkB,KAClD,oBAAI,SAAO,IAAI,QAAQ,gBAAgB,IAAI,KAAK,IAAI,GAAG,QAAQ,oBAAoB;AAAA,MACvF;AAMA,eAASC,uBAAsB,KAAK,KAAK,MAAM,SAAS;AACtD,YAAI,OAAO,IAAI,SAASD,UAAS,WAAW,QAAQ;AAMpD,YAAI,QAAQ,KAAK,aACZA,WAAU,KAAK,iBAAiBA,YAC/B,KAAK,eAAe,KAAK,eAAe,KAAK,cAAcA,WAC3D,0BAA0B,KAAKA,SAAQ9J,KAAI,KAAK,IAAI,GAAG,GAAG,IAC9D;AAAE,eAAK,KAAK,KAAK,KAAK,SAAS,CAAC,IAAI;AAAA,QAAK,OAEzC;AAAE,iCAAuB,KAAK,KAAK,IAAI;AAAA,QAAG;AAE5C,aAAK,cAAc,CAAC,oBAAI;AACxB,aAAK,gBAAgB8J;AACrB,aAAK,YAAY;AACjB,YAAI,WAAW,QAAQ,cAAc,OACnC;AAAE,+BAAqB,KAAK,MAAM;AAAA,QAAG;AAAA,MACzC;AAEA,eAAS,uBAAuB,KAAK,MAAM;AACzC,YAAI,MAAM9J,KAAI,IAAI;AAClB,YAAI,EAAE,OAAO,IAAI,UAAU,IAAI,OAAO,GAAG,IACvC;AAAE,eAAK,KAAK,GAAG;AAAA,QAAG;AAAA,MACtB;AAGA,eAAS,iBAAiB,KAAK,QAAQ,MAAM,IAAI;AAC/C,YAAI,WAAW,OAAO,WAAW,IAAI,EAAE,GAAG,IAAI;AAC9C,YAAI,KAAK,KAAK,IAAI,IAAI,OAAO,IAAI,GAAG,KAAK,IAAI,IAAI,QAAQ,IAAI,MAAM,EAAE,GAAG,SAAU,MAAM;AACtF,cAAI,KAAK,aACP;AAAE,aAAC,aAAa,WAAW,OAAO,WAAW,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK;AAAA,UAAa;AACrF,YAAE;AAAA,QACJ,CAAC;AAAA,MACH;AAIA,eAAS,mBAAmB,OAAO;AACjC,YAAI,CAAC,OAAO;AAAE,iBAAO;AAAA,QAAK;AAC1B,YAAI;AACJ,iBAAStB,KAAI,GAAGA,KAAI,MAAM,QAAQ,EAAEA,IAAG;AACrC,cAAI,MAAMA,EAAC,EAAE,OAAO,mBAAmB;AAAE,gBAAI,CAAC,KAAK;AAAE,oBAAM,MAAM,MAAM,GAAGA,EAAC;AAAA,YAAG;AAAA,UAAE,WACvE,KAAK;AAAE,gBAAI,KAAK,MAAMA,EAAC,CAAC;AAAA,UAAG;AAAA,QACtC;AACA,eAAO,CAAC,MAAM,QAAQ,IAAI,SAAS,MAAM;AAAA,MAC3C;AAGA,eAAS,YAAY,KAAK,QAAQ;AAChC,YAAI,QAAQ,OAAO,WAAW,IAAI,EAAE;AACpC,YAAI,CAAC,OAAO;AAAE,iBAAO;AAAA,QAAK;AAC1B,YAAI,KAAK,CAAC;AACV,iBAASA,KAAI,GAAGA,KAAI,OAAO,KAAK,QAAQ,EAAEA,IACxC;AAAE,aAAG,KAAK,mBAAmB,MAAMA,EAAC,CAAC,CAAC;AAAA,QAAG;AAC3C,eAAO;AAAA,MACT;AAMA,eAAS,cAAc,KAAK,QAAQ;AAClC,YAAI,MAAM,YAAY,KAAK,MAAM;AACjC,YAAI,YAAYsF,wBAAuB,KAAK,MAAM;AAClD,YAAI,CAAC,KAAK;AAAE,iBAAO;AAAA,QAAU;AAC7B,YAAI,CAAC,WAAW;AAAE,iBAAO;AAAA,QAAI;AAE7B,iBAAStF,KAAI,GAAGA,KAAI,IAAI,QAAQ,EAAEA,IAAG;AACnC,cAAI,SAAS,IAAIA,EAAC,GAAG,aAAa,UAAUA,EAAC;AAC7C,cAAI,UAAU,YAAY;AACxB,kBAAO,UAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,EAAE,GAAG;AACjD,kBAAI,OAAO,WAAW,CAAC;AACvB,uBAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,EAAE,GACnC;AAAE,oBAAI,OAAO,CAAC,EAAE,UAAU,KAAK,QAAQ;AAAE,2BAAS;AAAA,gBAAM;AAAA,cAAE;AAC5D,qBAAO,KAAK,IAAI;AAAA,YAClB;AAAA,UACF,WAAW,YAAY;AACrB,gBAAIA,EAAC,IAAI;AAAA,UACX;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAIA,eAAS,iBAAiBsL,SAAQ,UAAU,gBAAgB;AAC1D,YAAI,OAAO,CAAC;AACZ,iBAAStL,KAAI,GAAGA,KAAIsL,QAAO,QAAQ,EAAEtL,IAAG;AACtC,cAAI,QAAQsL,QAAOtL,EAAC;AACpB,cAAI,MAAM,QAAQ;AAChB,iBAAK,KAAK,iBAAiB2K,WAAU,UAAU,SAAS,KAAK,KAAK,IAAI,KAAK;AAC3E;AAAA,UACF;AACA,cAAI,UAAU,MAAM,SAAS,aAAa,CAAC;AAC3C,eAAK,KAAK,EAAC,SAAS,WAAU,CAAC;AAC/B,mBAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,EAAE,GAAG;AACvC,gBAAI,SAAS,QAAQ,CAAC,GAAG,IAAK;AAC9B,uBAAW,KAAK,EAAC,MAAM,OAAO,MAAM,IAAI,OAAO,IAAI,MAAM,OAAO,KAAI,CAAC;AACrE,gBAAI,UAAU;AAAE,uBAAS/J,SAAQ,QAAQ;AAAE,oBAAI,IAAIA,MAAK,MAAM,eAAe,GAAG;AAC9E,sBAAIK,SAAQ,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI;AACxC,oBAAAK,KAAI,UAAU,EAAEV,KAAI,IAAI,OAAOA,KAAI;AACnC,2BAAO,OAAOA,KAAI;AAAA,kBACpB;AAAA,gBACF;AAAA,cAAE;AAAA,YAAE;AAAA,UACN;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAUA,eAAS,YAAYV,QAAO,MAAM,OAAOqL,SAAQ;AAC/C,YAAIA,SAAQ;AACV,cAAI,SAASrL,OAAM;AACnB,cAAI,OAAO;AACT,gBAAI,YAAYwE,KAAI,MAAM,MAAM,IAAI;AACpC,gBAAI,aAAcA,KAAI,OAAO,MAAM,IAAI,GAAI;AACzC,uBAAS;AACT,qBAAO;AAAA,YACT,WAAW,aAAcA,KAAI,MAAM,KAAK,IAAI,GAAI;AAC9C,qBAAO;AAAA,YACT;AAAA,UACF;AACA,iBAAO,IAAIkG,OAAM,QAAQ,IAAI;AAAA,QAC/B,OAAO;AACL,iBAAO,IAAIA,OAAM,SAAS,MAAM,IAAI;AAAA,QACtC;AAAA,MACF;AAGA,eAAS,gBAAgB,KAAK,MAAM,OAAO,SAASW,SAAQ;AAC1D,YAAIA,WAAU,MAAM;AAAE,UAAAA,UAAS,IAAI,OAAO,IAAI,GAAG,QAAQ,SAAS,IAAI;AAAA,QAAS;AAC/E,qBAAa,KAAK,IAAIZ,WAAU,CAAC,YAAY,IAAI,IAAI,QAAQ,GAAG,MAAM,OAAOY,OAAM,CAAC,GAAG,CAAC,GAAG,OAAO;AAAA,MACpG;AAIA,eAAS,iBAAiB,KAAK,OAAO,SAAS;AAC7C,YAAI,MAAM,CAAC;AACX,YAAIA,UAAS,IAAI,OAAO,IAAI,GAAG,QAAQ,SAAS,IAAI;AACpD,iBAASvL,KAAI,GAAGA,KAAI,IAAI,IAAI,OAAO,QAAQA,MACzC;AAAE,cAAIA,EAAC,IAAI,YAAY,IAAI,IAAI,OAAOA,EAAC,GAAG,MAAMA,EAAC,GAAG,MAAMuL,OAAM;AAAA,QAAG;AACrE,YAAI,SAASV,oBAAmB,IAAI,IAAI,KAAK,IAAI,IAAI,SAAS;AAC9D,qBAAa,KAAK,QAAQ,OAAO;AAAA,MACnC;AAGA,eAAS,oBAAoB,KAAK7K,IAAGE,QAAO,SAAS;AACnD,YAAI,SAAS,IAAI,IAAI,OAAO,MAAM,CAAC;AACnC,eAAOF,EAAC,IAAIE;AACZ,qBAAa,KAAK2K,oBAAmB,IAAI,IAAI,QAAQ,IAAI,IAAI,SAAS,GAAG,OAAO;AAAA,MAClF;AAGA,eAAS,mBAAmB,KAAK,QAAQ,MAAM,SAAS;AACtD,qBAAa,KAAKC,iBAAgB,QAAQ,IAAI,GAAG,OAAO;AAAA,MAC1D;AAIA,eAAS,sBAAsB,KAAK,KAAK,SAAS;AAChD,YAAI,MAAM;AAAA,UACR,QAAQ,IAAI;AAAA,UACZ,QAAQ,SAAS,QAAQ;AACvB,iBAAK,SAAS,CAAC;AACf,qBAAS9K,KAAI,GAAGA,KAAI,OAAO,QAAQA,MACjC;AAAE,mBAAK,OAAOA,EAAC,IAAI,IAAI4K;AAAA,gBAAM7F,SAAQ,KAAK,OAAO/E,EAAC,EAAE,MAAM;AAAA,gBAC/B+E,SAAQ,KAAK,OAAO/E,EAAC,EAAE,IAAI;AAAA,cAAC;AAAA,YAAG;AAAA,UAC9D;AAAA,UACA,QAAQ,WAAW,QAAQ;AAAA,QAC7B;AACA,QAAA4C,QAAO,KAAK,yBAAyB,KAAK,GAAG;AAC7C,YAAI,IAAI,IAAI;AAAE,UAAAA,QAAO,IAAI,IAAI,yBAAyB,IAAI,IAAI,GAAG;AAAA,QAAG;AACpE,YAAI,IAAI,UAAU,IAAI,QAAQ;AAAE,iBAAOiI,oBAAmB,IAAI,IAAI,IAAI,QAAQ,IAAI,OAAO,SAAS,CAAC;AAAA,QAAE,OAChG;AAAE,iBAAO;AAAA,QAAI;AAAA,MACpB;AAEA,eAAS,2BAA2B,KAAK,KAAK,SAAS;AACrD,YAAI,OAAO,IAAI,QAAQ,MAAM,OAAOvJ,KAAI,IAAI;AAC5C,YAAI,QAAQ,KAAK,QAAQ;AACvB,eAAK,KAAK,SAAS,CAAC,IAAI;AACxB,6BAAmB,KAAK,KAAK,OAAO;AAAA,QACtC,OAAO;AACL,uBAAa,KAAK,KAAK,OAAO;AAAA,QAChC;AAAA,MACF;AAGA,eAAS,aAAa,KAAK,KAAK,SAAS;AACvC,2BAAmB,KAAK,KAAK,OAAO;AACpC,QAAA+J,uBAAsB,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG,MAAM,KAAK,KAAK,OAAO;AAAA,MAC7E;AAEA,eAAS,mBAAmB,KAAK,KAAK,SAAS;AAC7C,YAAIrI,YAAW,KAAK,uBAAuB,KAAK,IAAI,MAAMA,YAAW,IAAI,IAAI,uBAAuB,GAClG;AAAE,gBAAM,sBAAsB,KAAK,KAAK,OAAO;AAAA,QAAG;AAEpD,YAAI,OAAO,WAAW,QAAQ,SAC3B0B,KAAI,IAAI,QAAQ,EAAE,MAAM,IAAI,IAAI,QAAQ,EAAE,IAAI,IAAI,IAAI,KAAK;AAC9D,0BAAkB,KAAK,sBAAsB,KAAK,KAAK,MAAM,IAAI,CAAC;AAElE,YAAI,EAAE,WAAW,QAAQ,WAAW,UAAU,IAAI,IAChD;AAAE,UAAAiF,qBAAoB,IAAI,EAAE;AAAA,QAAG;AAAA,MACnC;AAEA,eAAS,kBAAkB,KAAK,KAAK;AACnC,YAAI,IAAI,OAAO,IAAI,GAAG,GAAG;AAAE;AAAA,QAAO;AAElC,YAAI,MAAM;AAEV,YAAI,IAAI,IAAI;AACV,cAAI,GAAG,MAAM,cAAc;AAC3B,cAAI,GAAG,MAAM,mBAAmB;AAChC,UAAA7G,sBAAqB,IAAI,EAAE;AAAA,QAC7B;AACA,QAAA8D,aAAY,KAAK,kBAAkB,GAAG;AAAA,MACxC;AAIA,eAAS,iBAAiB,KAAK;AAC7B,0BAAkB,KAAK,sBAAsB,KAAK,IAAI,KAAK,MAAM,KAAK,CAAC;AAAA,MACzE;AAIA,eAAS,sBAAsB,KAAK,KAAK,MAAM,UAAU;AACvD,YAAI;AACJ,iBAAS5G,KAAI,GAAGA,KAAI,IAAI,OAAO,QAAQA,MAAK;AAC1C,cAAIE,SAAQ,IAAI,OAAOF,EAAC;AACxB,cAAI,MAAM,IAAI,OAAO,UAAU,IAAI,IAAI,OAAO,UAAU,IAAI,IAAI,OAAOA,EAAC;AACxE,cAAI,YAAY,WAAW,KAAKE,OAAM,QAAQ,OAAO,IAAI,QAAQ,MAAM,QAAQ;AAC/E,cAAI,UAAU,WAAW,KAAKA,OAAM,MAAM,OAAO,IAAI,MAAM,MAAM,QAAQ;AACzE,cAAI,OAAO,aAAaA,OAAM,UAAU,WAAWA,OAAM,MAAM;AAC7D,gBAAI,CAAC,KAAK;AAAE,oBAAM,IAAI,OAAO,MAAM,GAAGF,EAAC;AAAA,YAAG;AAC1C,gBAAIA,EAAC,IAAI,IAAI4K,OAAM,WAAW,OAAO;AAAA,UACvC;AAAA,QACF;AACA,eAAO,MAAMC,oBAAmB,IAAI,IAAI,KAAK,IAAI,SAAS,IAAI;AAAA,MAChE;AAEA,eAAS,gBAAgB,KAAK,KAAK,QAAQ,KAAK,UAAU;AACxD,YAAI,OAAO7G,SAAQ,KAAK,IAAI,IAAI;AAChC,YAAI,KAAK,aAAa;AAAE,mBAAShE,KAAI,GAAGA,KAAI,KAAK,YAAY,QAAQ,EAAEA,IAAG;AACxE,gBAAI,KAAK,KAAK,YAAYA,EAAC,GAAG,IAAI,GAAG;AAKrC,gBAAI,oBAAqB,gBAAgB,IAAK,CAAC,EAAE,aAAa,EAAE;AAChE,gBAAI,qBAAsB,iBAAiB,IAAK,CAAC,EAAE,cAAc,EAAE;AAEnE,iBAAK,GAAG,QAAQ,SAAS,oBAAoB,GAAG,QAAQ,IAAI,KAAK,GAAG,OAAO,IAAI,SAC1E,GAAG,MAAM,SAAS,qBAAqB,GAAG,MAAM,IAAI,KAAK,GAAG,KAAK,IAAI,MAAM;AAC9E,kBAAI,UAAU;AACZ,gBAAA4C,QAAO,GAAG,mBAAmB;AAC7B,oBAAI,EAAE,mBAAmB;AACvB,sBAAI,CAAC,KAAK,aAAa;AAAE;AAAA,kBAAM,OAC1B;AAAC,sBAAE5C;AAAG;AAAA,kBAAQ;AAAA,gBACrB;AAAA,cACF;AACA,kBAAI,CAAC,EAAE,QAAQ;AAAE;AAAA,cAAS;AAE1B,kBAAI,QAAQ;AACV,oBAAI,OAAO,EAAE,KAAK,MAAM,IAAI,IAAI,EAAE,GAAG,OAAQ;AAC7C,oBAAI,MAAM,IAAI,qBAAqB,mBACjC;AAAE,yBAAO,QAAQ,KAAK,MAAM,CAAC,KAAK,QAAQ,KAAK,QAAQ,IAAI,OAAO,OAAO,IAAI;AAAA,gBAAG;AAClF,oBAAI,QAAQ,KAAK,QAAQ,IAAI,SAAS,OAAO0E,KAAI,MAAM,MAAM,OAAO,MAAM,IAAI,OAAO,IAAI,OAAO,IAC9F;AAAE,yBAAO,gBAAgB,KAAK,MAAM,KAAK,KAAK,QAAQ;AAAA,gBAAE;AAAA,cAC5D;AAEA,kBAAI,MAAM,EAAE,KAAK,MAAM,IAAI,KAAK,CAAC;AACjC,kBAAI,MAAM,IAAI,oBAAoB,oBAChC;AAAE,sBAAM,QAAQ,KAAK,KAAK,KAAK,IAAI,QAAQ,IAAI,OAAO,OAAO,IAAI;AAAA,cAAG;AACtE,qBAAO,MAAM,gBAAgB,KAAK,KAAK,KAAK,KAAK,QAAQ,IAAI;AAAA,YAC/D;AAAA,UACF;AAAA,QAAE;AACF,eAAO;AAAA,MACT;AAGA,eAAS,WAAW,KAAK,KAAK,QAAQ,MAAM,UAAU;AACpD,YAAI,MAAM,QAAQ;AAClB,YAAI,QAAQ,gBAAgB,KAAK,KAAK,QAAQ,KAAK,QAAQ,KACtD,CAAC,YAAY,gBAAgB,KAAK,KAAK,QAAQ,KAAK,IAAI,KACzD,gBAAgB,KAAK,KAAK,QAAQ,CAAC,KAAK,QAAQ,KAC/C,CAAC,YAAY,gBAAgB,KAAK,KAAK,QAAQ,CAAC,KAAK,IAAI;AAC9D,YAAI,CAAC,OAAO;AACV,cAAI,WAAW;AACf,iBAAOD,KAAI,IAAI,OAAO,CAAC;AAAA,QACzB;AACA,eAAO;AAAA,MACT;AAEA,eAAS,QAAQ,KAAK,KAAK,KAAK,MAAM;AACpC,YAAI,MAAM,KAAK,IAAI,MAAM,GAAG;AAC1B,cAAI,IAAI,OAAO,IAAI,OAAO;AAAE,mBAAOM,SAAQ,KAAKN,KAAI,IAAI,OAAO,CAAC,CAAC;AAAA,UAAE,OAC9D;AAAE,mBAAO;AAAA,UAAK;AAAA,QACrB,WAAW,MAAM,KAAK,IAAI,OAAO,QAAQT,SAAQ,KAAK,IAAI,IAAI,GAAG,KAAK,QAAQ;AAC5E,cAAI,IAAI,OAAO,IAAI,QAAQ,IAAI,OAAO,GAAG;AAAE,mBAAOS,KAAI,IAAI,OAAO,GAAG,CAAC;AAAA,UAAE,OAClE;AAAE,mBAAO;AAAA,UAAK;AAAA,QACrB,OAAO;AACL,iBAAO,IAAIA,KAAI,IAAI,MAAM,IAAI,KAAK,GAAG;AAAA,QACvC;AAAA,MACF;AAEA,eAAS,UAAU,IAAI;AACrB,WAAG,aAAaA,KAAI,GAAG,UAAU,GAAG,CAAC,GAAGA,KAAI,GAAG,SAAS,CAAC,GAAGrD,eAAc;AAAA,MAC5E;AAKA,eAAS,aAAa,KAAK,QAAQ,QAAQ;AACzC,YAAI,MAAM;AAAA,UACR,UAAU;AAAA,UACV,MAAM,OAAO;AAAA,UACb,IAAI,OAAO;AAAA,UACX,MAAM,OAAO;AAAA,UACb,QAAQ,OAAO;AAAA,UACf,QAAQ,WAAY;AAAE,mBAAO,IAAI,WAAW;AAAA,UAAM;AAAA,QACpD;AACA,YAAI,QAAQ;AAAE,cAAI,SAAS,SAAU,MAAM,IAAI8C,OAAMkH,SAAQ;AAC3D,gBAAI,MAAM;AAAE,kBAAI,OAAOrG,SAAQ,KAAK,IAAI;AAAA,YAAG;AAC3C,gBAAI,IAAI;AAAE,kBAAI,KAAKA,SAAQ,KAAK,EAAE;AAAA,YAAG;AACrC,gBAAIb,OAAM;AAAE,kBAAI,OAAOA;AAAA,YAAM;AAC7B,gBAAIkH,YAAW,QAAW;AAAE,kBAAI,SAASA;AAAA,YAAQ;AAAA,UACnD;AAAA,QAAG;AACH,QAAAxI,QAAO,KAAK,gBAAgB,KAAK,GAAG;AACpC,YAAI,IAAI,IAAI;AAAE,UAAAA,QAAO,IAAI,IAAI,gBAAgB,IAAI,IAAI,GAAG;AAAA,QAAG;AAE3D,YAAI,IAAI,UAAU;AAChB,cAAI,IAAI,IAAI;AAAE,gBAAI,GAAG,MAAM,cAAc;AAAA,UAAG;AAC5C,iBAAO;AAAA,QACT;AACA,eAAO,EAAC,MAAM,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,IAAI,MAAM,QAAQ,IAAI,OAAM;AAAA,MACxE;AAIA,eAAS,WAAW,KAAK,QAAQ,gBAAgB;AAC/C,YAAI,IAAI,IAAI;AACV,cAAI,CAAC,IAAI,GAAG,OAAO;AAAE,mBAAO,UAAU,IAAI,IAAI,UAAU,EAAE,KAAK,QAAQ,cAAc;AAAA,UAAE;AACvF,cAAI,IAAI,GAAG,MAAM,eAAe;AAAE;AAAA,UAAO;AAAA,QAC3C;AAEA,YAAII,YAAW,KAAK,cAAc,KAAK,IAAI,MAAMA,YAAW,IAAI,IAAI,cAAc,GAAG;AACnF,mBAAS,aAAa,KAAK,QAAQ,IAAI;AACvC,cAAI,CAAC,QAAQ;AAAE;AAAA,UAAO;AAAA,QACxB;AAIA,YAAI,QAAQ,oBAAoB,CAAC,kBAAkB,qBAAqB,KAAK,OAAO,MAAM,OAAO,EAAE;AACnG,YAAI,OAAO;AACT,mBAAShD,KAAI,MAAM,SAAS,GAAGA,MAAK,GAAG,EAAEA,IACvC;AAAE,4BAAgB,KAAK,EAAC,MAAM,MAAMA,EAAC,EAAE,MAAM,IAAI,MAAMA,EAAC,EAAE,IAAI,MAAMA,KAAI,CAAC,EAAE,IAAI,OAAO,MAAM,QAAQ,OAAO,OAAM,CAAC;AAAA,UAAG;AAAA,QACzH,OAAO;AACL,0BAAgB,KAAK,MAAM;AAAA,QAC7B;AAAA,MACF;AAEA,eAAS,gBAAgB,KAAK,QAAQ;AACpC,YAAI,OAAO,KAAK,UAAU,KAAK,OAAO,KAAK,CAAC,KAAK,MAAM0E,KAAI,OAAO,MAAM,OAAO,EAAE,KAAK,GAAG;AAAE;AAAA,QAAO;AAClG,YAAI,WAAW,sBAAsB,KAAK,MAAM;AAChD,2BAAmB,KAAK,QAAQ,UAAU,IAAI,KAAK,IAAI,GAAG,MAAM,KAAK,GAAG;AAExE,4BAAoB,KAAK,QAAQ,UAAUY,wBAAuB,KAAK,MAAM,CAAC;AAC9E,YAAI,UAAU,CAAC;AAEf,QAAA2F,YAAW,KAAK,SAAUC,MAAK,YAAY;AACzC,cAAI,CAAC,cAAcjK,SAAQ,SAASiK,KAAI,OAAO,KAAK,IAAI;AACtD,uBAAWA,KAAI,SAAS,MAAM;AAC9B,oBAAQ,KAAKA,KAAI,OAAO;AAAA,UAC1B;AACA,8BAAoBA,MAAK,QAAQ,MAAM5F,wBAAuB4F,MAAK,MAAM,CAAC;AAAA,QAC5E,CAAC;AAAA,MACH;AAGA,eAAS,sBAAsB,KAAK/I,OAAM,oBAAoB;AAC5D,YAAI,WAAW,IAAI,MAAM,IAAI,GAAG,MAAM;AACtC,YAAI,YAAY,CAAC,oBAAoB;AAAE;AAAA,QAAO;AAE9C,YAAI,OAAO,IAAI,SAAS,OAAO,WAAW,IAAI;AAC9C,YAAI,SAASA,SAAQ,SAAS,KAAK,OAAO,KAAK,QAAQ,OAAOA,SAAQ,SAAS,KAAK,SAAS,KAAK;AAIlG,YAAInC,KAAI;AACR,eAAOA,KAAI,OAAO,QAAQA,MAAK;AAC7B,kBAAQ,OAAOA,EAAC;AAChB,cAAI,qBAAqB,MAAM,UAAU,CAAC,MAAM,OAAO,IAAI,GAAG,IAAI,CAAC,MAAM,QACvE;AAAE;AAAA,UAAM;AAAA,QACZ;AACA,YAAIA,MAAK,OAAO,QAAQ;AAAE;AAAA,QAAO;AACjC,aAAK,aAAa,KAAK,gBAAgB;AAEvC,mBAAS;AACP,kBAAQ,OAAO,IAAI;AACnB,cAAI,MAAM,QAAQ;AAChB,mCAAuB,OAAO,IAAI;AAClC,gBAAI,sBAAsB,CAAC,MAAM,OAAO,IAAI,GAAG,GAAG;AAChD,2BAAa,KAAK,OAAO,EAAC,WAAW,MAAK,CAAC;AAC3C;AAAA,YACF;AACA,uBAAW;AAAA,UACb,WAAW,UAAU;AACnB,mBAAO,KAAK,KAAK;AACjB;AAAA,UACF,OAAO;AAAE;AAAA,UAAM;AAAA,QACjB;AAIA,YAAI,cAAc,CAAC;AACnB,+BAAuB,UAAU,IAAI;AACrC,aAAK,KAAK,EAAC,SAAS,aAAa,YAAY,KAAK,WAAU,CAAC;AAC7D,aAAK,aAAa,MAAM,cAAc,EAAE,KAAK;AAE7C,YAAIwL,UAASxI,YAAW,KAAK,cAAc,KAAK,IAAI,MAAMA,YAAW,IAAI,IAAI,cAAc;AAE3F,YAAI,OAAO,SAAWhD,IAAI;AACxB,cAAI,SAAS,MAAM,QAAQA,EAAC;AAC5B,iBAAO,SAASmC;AAChB,cAAIqJ,WAAU,CAAC,aAAa,KAAK,QAAQ,KAAK,GAAG;AAC/C,mBAAO,SAAS;AAChB,mBAAO,CAAC;AAAA,UACV;AAEA,sBAAY,KAAK,wBAAwB,KAAK,MAAM,CAAC;AAErD,cAAI,QAAQxL,KAAI,sBAAsB,KAAK,MAAM,IAAIsB,KAAI,MAAM;AAC/D,8BAAoB,KAAK,QAAQ,OAAO,cAAc,KAAK,MAAM,CAAC;AAClE,cAAI,CAACtB,MAAK,IAAI,IAAI;AAAE,gBAAI,GAAG,eAAe,EAAC,MAAM,OAAO,MAAM,IAAI+K,WAAU,MAAM,EAAC,CAAC;AAAA,UAAG;AACvF,cAAI,UAAU,CAAC;AAGf,UAAAE,YAAW,KAAK,SAAUC,MAAK,YAAY;AACzC,gBAAI,CAAC,cAAcjK,SAAQ,SAASiK,KAAI,OAAO,KAAK,IAAI;AACtD,yBAAWA,KAAI,SAAS,MAAM;AAC9B,sBAAQ,KAAKA,KAAI,OAAO;AAAA,YAC1B;AACA,gCAAoBA,MAAK,QAAQ,MAAM,cAAcA,MAAK,MAAM,CAAC;AAAA,UACnE,CAAC;AAAA,QACH;AAEA,iBAAShJ,OAAM,MAAM,QAAQ,SAAS,GAAGA,QAAO,GAAG,EAAEA,MAAK;AACxD,cAAI,WAAW,KAAMA,IAAI;AAEzB,cAAK,SAAW,QAAO,SAAS;AAAA,QAClC;AAAA,MACF;AAIA,eAAS,SAAS,KAAK,UAAU;AAC/B,YAAI,YAAY,GAAG;AAAE;AAAA,QAAO;AAC5B,YAAI,SAAS;AACb,YAAI,MAAM,IAAIyI,WAAUpJ,KAAI,IAAI,IAAI,QAAQ,SAAUrB,QAAO;AAAE,iBAAO,IAAI0K;AAAA,YACxEnG,KAAIvE,OAAM,OAAO,OAAO,UAAUA,OAAM,OAAO,EAAE;AAAA,YACjDuE,KAAIvE,OAAM,KAAK,OAAO,UAAUA,OAAM,KAAK,EAAE;AAAA,UAC/C;AAAA,QAAG,CAAC,GAAG,IAAI,IAAI,SAAS;AACxB,YAAI,IAAI,IAAI;AACV,UAAAuI,WAAU,IAAI,IAAI,IAAI,OAAO,IAAI,QAAQ,UAAU,QAAQ;AAC3D,mBAAS,IAAI,IAAI,GAAG,SAAS,IAAI,EAAE,UAAU,IAAI,EAAE,QAAQ,KACzD;AAAE,YAAAE,eAAc,IAAI,IAAI,GAAG,QAAQ;AAAA,UAAG;AAAA,QAC1C;AAAA,MACF;AAIA,eAAS,oBAAoB,KAAK,QAAQ,UAAU,OAAO;AACzD,YAAI,IAAI,MAAM,CAAC,IAAI,GAAG,OACpB;AAAE,iBAAO,UAAU,IAAI,IAAI,mBAAmB,EAAE,KAAK,QAAQ,UAAU,KAAK;AAAA,QAAE;AAEhF,YAAI,OAAO,GAAG,OAAO,IAAI,OAAO;AAC9B,mBAAS,KAAK,OAAO,KAAK,SAAS,KAAK,OAAO,GAAG,OAAO,OAAO,KAAK,KAAK;AAC1E;AAAA,QACF;AACA,YAAI,OAAO,KAAK,OAAO,IAAI,SAAS,GAAG;AAAE;AAAA,QAAO;AAGhD,YAAI,OAAO,KAAK,OAAO,IAAI,OAAO;AAChC,cAAI,QAAQ,OAAO,KAAK,SAAS,KAAK,IAAI,QAAQ,OAAO,KAAK;AAC9D,mBAAS,KAAK,KAAK;AACnB,mBAAS;AAAA,YAAC,MAAMlE,KAAI,IAAI,OAAO,CAAC;AAAA,YAAG,IAAIA,KAAI,OAAO,GAAG,OAAO,OAAO,OAAO,GAAG,EAAE;AAAA,YACrE,MAAM,CAACnD,KAAI,OAAO,IAAI,CAAC;AAAA,YAAG,QAAQ,OAAO;AAAA,UAAM;AAAA,QAC3D;AACA,YAAI,OAAO,IAAI,SAAS;AACxB,YAAI,OAAO,GAAG,OAAO,MAAM;AACzB,mBAAS;AAAA,YAAC,MAAM,OAAO;AAAA,YAAM,IAAImD,KAAI,MAAMT,SAAQ,KAAK,IAAI,EAAE,KAAK,MAAM;AAAA,YAC/D,MAAM,CAAC,OAAO,KAAK,CAAC,CAAC;AAAA,YAAG,QAAQ,OAAO;AAAA,UAAM;AAAA,QACzD;AAEA,eAAO,UAAUC,YAAW,KAAK,OAAO,MAAM,OAAO,EAAE;AAEvD,YAAI,CAAC,UAAU;AAAE,qBAAW,sBAAsB,KAAK,MAAM;AAAA,QAAG;AAChE,YAAI,IAAI,IAAI;AAAE,sCAA4B,IAAI,IAAI,QAAQ,KAAK;AAAA,QAAG,OAC7D;AAAE,oBAAU,KAAK,QAAQ,KAAK;AAAA,QAAG;AACtC,2BAAmB,KAAK,UAAU7C,eAAc;AAEhD,YAAI,IAAI,YAAY,WAAW,KAAKqD,KAAI,IAAI,UAAU,GAAG,CAAC,CAAC,GACzD;AAAE,cAAI,WAAW;AAAA,QAAO;AAAA,MAC5B;AAIA,eAAS,4BAA4B,IAAI,QAAQ,OAAO;AACtD,YAAI,MAAM,GAAG,KAAK,UAAU,GAAG,SAAS,OAAO,OAAO,MAAM,KAAK,OAAO;AAExE,YAAI,qBAAqB,OAAO,kBAAkB,KAAK;AACvD,YAAI,CAAC,GAAG,QAAQ,cAAc;AAC5B,4BAAkBL,QAAOuB,YAAW3B,SAAQ,KAAK,KAAK,IAAI,CAAC,CAAC;AAC5D,cAAI,KAAK,iBAAiB,GAAG,OAAO,GAAG,SAAU,MAAM;AACrD,gBAAI,QAAQ,QAAQ,SAAS;AAC3B,mCAAqB;AACrB,qBAAO;AAAA,YACT;AAAA,UACF,CAAC;AAAA,QACH;AAEA,YAAI,IAAI,IAAI,SAAS,OAAO,MAAM,OAAO,EAAE,IAAI,IAC7C;AAAE,UAAAlB,sBAAqB,EAAE;AAAA,QAAG;AAE9B,kBAAU,KAAK,QAAQ,OAAO,eAAe,EAAE,CAAC;AAEhD,YAAI,CAAC,GAAG,QAAQ,cAAc;AAC5B,cAAI,KAAK,iBAAiB,KAAK,OAAO,OAAO,KAAK,QAAQ,SAAU,MAAM;AACxE,gBAAIb,OAAM,WAAW,IAAI;AACzB,gBAAIA,OAAM,QAAQ,eAAe;AAC/B,sBAAQ,UAAU;AAClB,sBAAQ,gBAAgBA;AACxB,sBAAQ,iBAAiB;AACzB,mCAAqB;AAAA,YACvB;AAAA,UACF,CAAC;AACD,cAAI,oBAAoB;AAAE,eAAG,MAAM,gBAAgB;AAAA,UAAM;AAAA,QAC3D;AAEA,wBAAgB,KAAK,KAAK,IAAI;AAC9B,QAAA6H,aAAY,IAAI,GAAG;AAEnB,YAAI,UAAU,OAAO,KAAK,UAAU,GAAG,OAAO,KAAK,QAAQ;AAE3D,YAAI,OAAO,MACT;AAAE,UAAArB,WAAU,EAAE;AAAA,QAAG,WACV,KAAK,QAAQ,GAAG,QAAQ,OAAO,KAAK,UAAU,KAAK,CAAC,kBAAkB,GAAG,KAAK,MAAM,GAC3F;AAAE,UAAAE,eAAc,IAAI,KAAK,MAAM,MAAM;AAAA,QAAG,OAExC;AAAE,UAAAF,WAAU,IAAI,KAAK,MAAM,GAAG,OAAO,GAAG,OAAO;AAAA,QAAG;AAEpD,YAAI,iBAAiBzF,YAAW,IAAI,SAAS,GAAG,gBAAgBA,YAAW,IAAI,QAAQ;AACvF,YAAI,iBAAiB,gBAAgB;AACnC,cAAI,MAAM;AAAA,YACR;AAAA,YAAY;AAAA,YACZ,MAAM,OAAO;AAAA,YACb,SAAS,OAAO;AAAA,YAChB,QAAQ,OAAO;AAAA,UACjB;AACA,cAAI,eAAe;AAAE,YAAA4D,aAAY,IAAI,UAAU,IAAI,GAAG;AAAA,UAAG;AACzD,cAAI,gBAAgB;AAAE,aAAC,GAAG,MAAM,eAAe,GAAG,MAAM,aAAa,CAAC,IAAI,KAAK,GAAG;AAAA,UAAG;AAAA,QACvF;AACA,WAAG,QAAQ,oBAAoB;AAAA,MACjC;AAEA,eAAS,aAAa,KAAK,MAAM,MAAM,IAAIwE,SAAQ;AACjD,YAAI;AAEJ,YAAI,CAAC,IAAI;AAAE,eAAK;AAAA,QAAM;AACtB,YAAI1G,KAAI,IAAI,IAAI,IAAI,GAAG;AAAE,UAAC,SAAS,CAAC,IAAI,IAAI,GAAG,OAAO,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC;AAAA,QAAI;AAClF,YAAI,OAAO,QAAQ,UAAU;AAAE,iBAAO,IAAI,WAAW,IAAI;AAAA,QAAG;AAC5D,mBAAW,KAAK,EAAC,MAAY,IAAQ,MAAM,MAAM,QAAQ0G,QAAM,CAAC;AAAA,MAClE;AAIA,eAAS,oBAAoB,KAAK,MAAM,IAAI,MAAM;AAChD,YAAI,KAAK,IAAI,MAAM;AACjB,cAAI,QAAQ;AAAA,QACd,WAAW,OAAO,IAAI,MAAM;AAC1B,cAAI,OAAO;AACX,cAAI,KAAK;AAAA,QACX;AAAA,MACF;AASA,eAAS,gBAAgBlK,QAAO,MAAM,IAAI,MAAM;AAC9C,iBAASlB,KAAI,GAAGA,KAAIkB,OAAM,QAAQ,EAAElB,IAAG;AACrC,cAAI,MAAMkB,OAAMlB,EAAC,GAAG,KAAK;AACzB,cAAI,IAAI,QAAQ;AACd,gBAAI,CAAC,IAAI,QAAQ;AAAE,oBAAMkB,OAAMlB,EAAC,IAAI,IAAI,SAAS;AAAG,kBAAI,SAAS;AAAA,YAAM;AACvE,qBAAS,IAAI,GAAG,IAAI,IAAI,OAAO,QAAQ,KAAK;AAC1C,kCAAoB,IAAI,OAAO,CAAC,EAAE,QAAQ,MAAM,IAAI,IAAI;AACxD,kCAAoB,IAAI,OAAO,CAAC,EAAE,MAAM,MAAM,IAAI,IAAI;AAAA,YACxD;AACA;AAAA,UACF;AACA,mBAAS,MAAM,GAAG,MAAM,IAAI,QAAQ,QAAQ,EAAE,KAAK;AACjD,gBAAI,MAAM,IAAI,QAAQ,GAAG;AACzB,gBAAI,KAAK,IAAI,KAAK,MAAM;AACtB,kBAAI,OAAOyE,KAAI,IAAI,KAAK,OAAO,MAAM,IAAI,KAAK,EAAE;AAChD,kBAAI,KAAKA,KAAI,IAAI,GAAG,OAAO,MAAM,IAAI,GAAG,EAAE;AAAA,YAC5C,WAAW,QAAQ,IAAI,GAAG,MAAM;AAC9B,mBAAK;AACL;AAAA,YACF;AAAA,UACF;AACA,cAAI,CAAC,IAAI;AACP,YAAAvD,OAAM,OAAO,GAAGlB,KAAI,CAAC;AACrB,YAAAA,KAAI;AAAA,UACN;AAAA,QACF;AAAA,MACF;AAEA,eAAS,WAAW,MAAM,QAAQ;AAChC,YAAI,OAAO,OAAO,KAAK,MAAM,KAAK,OAAO,GAAG,MAAM,OAAO,OAAO,KAAK,UAAU,KAAK,QAAQ;AAC5F,wBAAgB,KAAK,MAAM,MAAM,IAAI,IAAI;AACzC,wBAAgB,KAAK,QAAQ,MAAM,IAAI,IAAI;AAAA,MAC7C;AAKA,eAAS,WAAW,KAAK,QAAQ,YAAY,IAAI;AAC/C,YAAIqE,MAAK,QAAQ,OAAO;AACxB,YAAI,OAAO,UAAU,UAAU;AAAE,iBAAOL,SAAQ,KAAK,SAAS,KAAK,MAAM,CAAC;AAAA,QAAG,OACxE;AAAE,UAAAK,MAAKD,QAAO,MAAM;AAAA,QAAG;AAC5B,YAAIC,OAAM,MAAM;AAAE,iBAAO;AAAA,QAAK;AAC9B,YAAI,GAAG,MAAMA,GAAE,KAAK,IAAI,IAAI;AAAE,UAAAsE,eAAc,IAAI,IAAItE,KAAI,UAAU;AAAA,QAAG;AACrE,eAAO;AAAA,MACT;AAeA,eAAS,UAAU,OAAO;AACxB,aAAK,QAAQ;AACb,aAAK,SAAS;AACd,YAAI,SAAS;AACb,iBAASrE,KAAI,GAAGA,KAAI,MAAM,QAAQ,EAAEA,IAAG;AACrC,gBAAMA,EAAC,EAAE,SAAS;AAClB,oBAAU,MAAMA,EAAC,EAAE;AAAA,QACrB;AACA,aAAK,SAAS;AAAA,MAChB;AAEA,gBAAU,YAAY;AAAA,QACpB,WAAW,WAAW;AAAE,iBAAO,KAAK,MAAM;AAAA,QAAO;AAAA;AAAA,QAGjD,aAAa,SAAS,IAAI,GAAG;AAC3B,mBAASA,KAAI,IAAI,IAAI,KAAK,GAAGA,KAAI,GAAG,EAAEA,IAAG;AACvC,gBAAI,OAAO,KAAK,MAAMA,EAAC;AACvB,iBAAK,UAAU,KAAK;AACpB,wBAAY,IAAI;AAChB,YAAA4G,aAAY,MAAM,QAAQ;AAAA,UAC5B;AACA,eAAK,MAAM,OAAO,IAAI,CAAC;AAAA,QACzB;AAAA;AAAA,QAGA,UAAU,SAAS,OAAO;AACxB,gBAAM,KAAK,MAAM,OAAO,KAAK,KAAK;AAAA,QACpC;AAAA;AAAA;AAAA,QAIA,aAAa,SAAS,IAAI,OAAO,QAAQ;AACvC,eAAK,UAAU;AACf,eAAK,QAAQ,KAAK,MAAM,MAAM,GAAG,EAAE,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK,MAAM,MAAM,EAAE,CAAC;AAC9E,mBAAS5G,KAAI,GAAGA,KAAI,MAAM,QAAQ,EAAEA,IAAG;AAAE,kBAAMA,EAAC,EAAE,SAAS;AAAA,UAAM;AAAA,QACnE;AAAA;AAAA,QAGA,OAAO,SAAS,IAAI,GAAG,IAAI;AACzB,mBAAS,IAAI,KAAK,GAAG,KAAK,GAAG,EAAE,IAC7B;AAAE,gBAAI,GAAG,KAAK,MAAM,EAAE,CAAC,GAAG;AAAE,qBAAO;AAAA,YAAK;AAAA,UAAE;AAAA,QAC9C;AAAA,MACF;AAEA,eAAS,YAAYyL,WAAU;AAC7B,aAAK,WAAWA;AAChB,YAAI,OAAO,GAAG,SAAS;AACvB,iBAASzL,KAAI,GAAGA,KAAIyL,UAAS,QAAQ,EAAEzL,IAAG;AACxC,cAAI,KAAKyL,UAASzL,EAAC;AACnB,kBAAQ,GAAG,UAAU;AAAG,oBAAU,GAAG;AACrC,aAAG,SAAS;AAAA,QACd;AACA,aAAK,OAAO;AACZ,aAAK,SAAS;AACd,aAAK,SAAS;AAAA,MAChB;AAEA,kBAAY,YAAY;AAAA,QACtB,WAAW,WAAW;AAAE,iBAAO,KAAK;AAAA,QAAK;AAAA,QAEzC,aAAa,SAAS,IAAI,GAAG;AAC3B,eAAK,QAAQ;AACb,mBAASA,KAAI,GAAGA,KAAI,KAAK,SAAS,QAAQ,EAAEA,IAAG;AAC7C,gBAAI,QAAQ,KAAK,SAASA,EAAC,GAAG,KAAK,MAAM,UAAU;AACnD,gBAAI,KAAK,IAAI;AACX,kBAAI,KAAK,KAAK,IAAI,GAAG,KAAK,EAAE,GAAG,YAAY,MAAM;AACjD,oBAAM,YAAY,IAAI,EAAE;AACxB,mBAAK,UAAU,YAAY,MAAM;AACjC,kBAAI,MAAM,IAAI;AAAE,qBAAK,SAAS,OAAOA,MAAK,CAAC;AAAG,sBAAM,SAAS;AAAA,cAAM;AACnE,mBAAK,KAAK,OAAO,GAAG;AAAE;AAAA,cAAM;AAC5B,mBAAK;AAAA,YACP,OAAO;AAAE,oBAAM;AAAA,YAAI;AAAA,UACrB;AAGA,cAAI,KAAK,OAAO,IAAI,OACf,KAAK,SAAS,SAAS,KAAK,EAAE,KAAK,SAAS,CAAC,aAAa,aAAa;AAC1E,gBAAI,QAAQ,CAAC;AACb,iBAAK,SAAS,KAAK;AACnB,iBAAK,WAAW,CAAC,IAAI,UAAU,KAAK,CAAC;AACrC,iBAAK,SAAS,CAAC,EAAE,SAAS;AAAA,UAC5B;AAAA,QACF;AAAA,QAEA,UAAU,SAAS,OAAO;AACxB,mBAASA,KAAI,GAAGA,KAAI,KAAK,SAAS,QAAQ,EAAEA,IAAG;AAAE,iBAAK,SAASA,EAAC,EAAE,SAAS,KAAK;AAAA,UAAG;AAAA,QACrF;AAAA,QAEA,aAAa,SAAS,IAAI,OAAO,QAAQ;AACvC,eAAK,QAAQ,MAAM;AACnB,eAAK,UAAU;AACf,mBAASA,KAAI,GAAGA,KAAI,KAAK,SAAS,QAAQ,EAAEA,IAAG;AAC7C,gBAAI,QAAQ,KAAK,SAASA,EAAC,GAAG,KAAK,MAAM,UAAU;AACnD,gBAAI,MAAM,IAAI;AACZ,oBAAM,YAAY,IAAI,OAAO,MAAM;AACnC,kBAAI,MAAM,SAAS,MAAM,MAAM,SAAS,IAAI;AAG1C,oBAAI,YAAY,MAAM,MAAM,SAAS,KAAK;AAC1C,yBAAS,MAAM,WAAW,MAAM,MAAM,MAAM,UAAS;AACnD,sBAAI,OAAO,IAAI,UAAU,MAAM,MAAM,MAAM,KAAK,OAAO,EAAE,CAAC;AAC1D,wBAAM,UAAU,KAAK;AACrB,uBAAK,SAAS,OAAO,EAAEA,IAAG,GAAG,IAAI;AACjC,uBAAK,SAAS;AAAA,gBAChB;AACA,sBAAM,QAAQ,MAAM,MAAM,MAAM,GAAG,SAAS;AAC5C,qBAAK,WAAW;AAAA,cAClB;AACA;AAAA,YACF;AACA,kBAAM;AAAA,UACR;AAAA,QACF;AAAA;AAAA,QAGA,YAAY,WAAW;AACrB,cAAI,KAAK,SAAS,UAAU,IAAI;AAAE;AAAA,UAAO;AACzC,cAAI,KAAK;AACT,aAAG;AACD,gBAAI,UAAU,GAAG,SAAS,OAAO,GAAG,SAAS,SAAS,GAAG,CAAC;AAC1D,gBAAI,UAAU,IAAI,YAAY,OAAO;AACrC,gBAAI,CAAC,GAAG,QAAQ;AACd,kBAAI,OAAO,IAAI,YAAY,GAAG,QAAQ;AACtC,mBAAK,SAAS;AACd,iBAAG,WAAW,CAAC,MAAM,OAAO;AAC5B,mBAAK;AAAA,YACR,OAAO;AACJ,iBAAG,QAAQ,QAAQ;AACnB,iBAAG,UAAU,QAAQ;AACrB,kBAAI,UAAUiB,SAAQ,GAAG,OAAO,UAAU,EAAE;AAC5C,iBAAG,OAAO,SAAS,OAAO,UAAU,GAAG,GAAG,OAAO;AAAA,YACnD;AACA,oBAAQ,SAAS,GAAG;AAAA,UACtB,SAAS,GAAG,SAAS,SAAS;AAC9B,aAAG,OAAO,WAAW;AAAA,QACvB;AAAA,QAEA,OAAO,SAAS,IAAI,GAAG,IAAI;AACzB,mBAASjB,KAAI,GAAGA,KAAI,KAAK,SAAS,QAAQ,EAAEA,IAAG;AAC7C,gBAAI,QAAQ,KAAK,SAASA,EAAC,GAAG,KAAK,MAAM,UAAU;AACnD,gBAAI,KAAK,IAAI;AACX,kBAAI,OAAO,KAAK,IAAI,GAAG,KAAK,EAAE;AAC9B,kBAAI,MAAM,MAAM,IAAI,MAAM,EAAE,GAAG;AAAE,uBAAO;AAAA,cAAK;AAC7C,mBAAK,KAAK,SAAS,GAAG;AAAE;AAAA,cAAM;AAC9B,mBAAK;AAAA,YACP,OAAO;AAAE,oBAAM;AAAA,YAAI;AAAA,UACrB;AAAA,QACF;AAAA,MACF;AAIA,UAAI,aAAa,SAAS,KAAK,MAAM,SAAS;AAC5C,YAAI,SAAS;AAAE,mBAAS,OAAO,SAAS;AAAE,gBAAI,QAAQ,eAAe,GAAG,GACtE;AAAE,mBAAK,GAAG,IAAI,QAAQ,GAAG;AAAA,YAAG;AAAA,UAAE;AAAA,QAAE;AAClC,aAAK,MAAM;AACX,aAAK,OAAO;AAAA,MACd;AAEA,iBAAW,UAAU,QAAQ,WAAY;AACvC,YAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,SAAS,OAAO,KAAK,MAAMqE,MAAKD,QAAO,IAAI;AAChF,YAAIC,OAAM,QAAQ,CAAC,IAAI;AAAE;AAAA,QAAO;AAChC,iBAASrE,KAAI,GAAGA,KAAI,GAAG,QAAQ,EAAEA,IAAG;AAAE,cAAI,GAAGA,EAAC,KAAK,MAAM;AAAE,eAAG,OAAOA,MAAK,CAAC;AAAA,UAAG;AAAA,QAAE;AAChF,YAAI,CAAC,GAAG,QAAQ;AAAE,eAAK,UAAU;AAAA,QAAM;AACvC,YAAI,SAASiH,cAAa,IAAI;AAC9B,QAAA9C,kBAAiB,MAAM,KAAK,IAAI,GAAG,KAAK,SAAS,MAAM,CAAC;AACxD,YAAI,IAAI;AACN,UAAAoG,SAAQ,IAAI,WAAY;AACtB,yCAA6B,IAAI,MAAM,CAAC,MAAM;AAC9C,YAAA5B,eAAc,IAAItE,KAAI,QAAQ;AAAA,UAChC,CAAC;AACD,UAAAuC,aAAY,IAAI,qBAAqB,IAAI,MAAMvC,GAAE;AAAA,QACnD;AAAA,MACF;AAEA,iBAAW,UAAU,UAAU,WAAY;AACvC,YAAI,SAAS;AAEf,YAAI,OAAO,KAAK,QAAQ,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK;AACtD,aAAK,SAAS;AACd,YAAI,OAAO4C,cAAa,IAAI,IAAI;AAChC,YAAI,CAAC,MAAM;AAAE;AAAA,QAAO;AACpB,YAAI,CAAClB,cAAa,KAAK,KAAK,IAAI,GAAG;AAAE,UAAA5B,kBAAiB,MAAM,KAAK,SAAS,IAAI;AAAA,QAAG;AACjF,YAAI,IAAI;AACN,UAAAoG,SAAQ,IAAI,WAAY;AACtB,eAAG,MAAM,cAAc;AACvB,yCAA6B,IAAI,MAAM,IAAI;AAC3C,YAAA3D,aAAY,IAAI,qBAAqB,IAAI,QAAQxC,QAAO,IAAI,CAAC;AAAA,UAC/D,CAAC;AAAA,QACH;AAAA,MACF;AACA,MAAAnB,YAAW,UAAU;AAErB,eAAS,6BAA6B,IAAI,MAAM,MAAM;AACpD,YAAI+C,cAAa,IAAI,KAAM,GAAG,SAAS,GAAG,MAAM,aAAc,GAAG,IAAI,YACnE;AAAE,yBAAe,IAAI,IAAI;AAAA,QAAG;AAAA,MAChC;AAEA,eAAS,cAAc,KAAK,QAAQ,MAAM,SAAS;AACjD,YAAI,SAAS,IAAI,WAAW,KAAK,MAAM,OAAO;AAC9C,YAAI,KAAK,IAAI;AACb,YAAI,MAAM,OAAO,WAAW;AAAE,aAAG,QAAQ,eAAe;AAAA,QAAM;AAC9D,mBAAW,KAAK,QAAQ,UAAU,SAAU,MAAM;AAChD,cAAI,UAAU,KAAK,YAAY,KAAK,UAAU,CAAC;AAC/C,cAAI,OAAO,YAAY,MAAM;AAAE,oBAAQ,KAAK,MAAM;AAAA,UAAG,OAChD;AAAE,oBAAQ,OAAO,KAAK,IAAI,QAAQ,SAAS,GAAG,KAAK,IAAI,GAAG,OAAO,QAAQ,CAAC,GAAG,GAAG,MAAM;AAAA,UAAG;AAC9F,iBAAO,OAAO;AACd,cAAI,MAAM,CAACD,cAAa,KAAK,IAAI,GAAG;AAClC,gBAAI,eAAeC,cAAa,IAAI,IAAI,IAAI;AAC5C,YAAA7B,kBAAiB,MAAM,KAAK,SAAS8C,cAAa,MAAM,CAAC;AACzD,gBAAI,cAAc;AAAE,6BAAe,IAAI,OAAO,MAAM;AAAA,YAAG;AACvD,eAAG,MAAM,cAAc;AAAA,UACzB;AACA,iBAAO;AAAA,QACT,CAAC;AACD,YAAI,IAAI;AAAE,UAAAL,aAAY,IAAI,mBAAmB,IAAI,QAAQ,OAAO,UAAU,WAAW,SAASxC,QAAO,MAAM,CAAC;AAAA,QAAG;AAC/G,eAAO;AAAA,MACT;AAiBA,UAAI,eAAe;AAEnB,UAAI,aAAa,SAAS,KAAKjC,OAAM;AACnC,aAAK,QAAQ,CAAC;AACd,aAAK,OAAOA;AACZ,aAAK,MAAM;AACX,aAAK,KAAK,EAAE;AAAA,MACd;AAGA,iBAAW,UAAU,QAAQ,WAAY;AACvC,YAAI,KAAK,mBAAmB;AAAE;AAAA,QAAO;AACrC,YAAI,KAAK,KAAK,IAAI,IAAI,SAAS,MAAM,CAAC,GAAG;AACzC,YAAI,QAAQ;AAAE,yBAAe,EAAE;AAAA,QAAG;AAClC,YAAIa,YAAW,MAAM,OAAO,GAAG;AAC7B,cAAI,QAAQ,KAAK,KAAK;AACtB,cAAI,OAAO;AAAE,YAAA4D,aAAY,MAAM,SAAS,MAAM,MAAM,MAAM,EAAE;AAAA,UAAG;AAAA,QACjE;AACA,YAAI8E,OAAM,MAAMC,OAAM;AACtB,iBAAS3L,KAAI,GAAGA,KAAI,KAAK,MAAM,QAAQ,EAAEA,IAAG;AAC1C,cAAI,OAAO,KAAK,MAAMA,EAAC;AACvB,cAAI,OAAO,iBAAiB,KAAK,aAAa,IAAI;AAClD,cAAI,MAAM,CAAC,KAAK,WAAW;AAAE,YAAA2I,eAAc,IAAIvE,QAAO,IAAI,GAAG,MAAM;AAAA,UAAG,WAC7D,IAAI;AACX,gBAAI,KAAK,MAAM,MAAM;AAAE,cAAAuH,OAAMvH,QAAO,IAAI;AAAA,YAAG;AAC3C,gBAAI,KAAK,QAAQ,MAAM;AAAE,cAAAsH,OAAMtH,QAAO,IAAI;AAAA,YAAG;AAAA,UAC/C;AACA,eAAK,cAAc,iBAAiB,KAAK,aAAa,IAAI;AAC1D,cAAI,KAAK,QAAQ,QAAQ,KAAK,aAAa,CAAC2B,cAAa,KAAK,KAAK,IAAI,KAAK,IAC1E;AAAE,YAAA5B,kBAAiB,MAAMmE,YAAW,GAAG,OAAO,CAAC;AAAA,UAAG;AAAA,QACtD;AACA,YAAI,MAAM,KAAK,aAAa,CAAC,GAAG,QAAQ,cAAc;AAAE,mBAASpG,OAAM,GAAGA,OAAM,KAAK,MAAM,QAAQ,EAAEA,MAAK;AACxG,gBAAI,SAASyD,YAAW,KAAK,MAAMzD,IAAG,CAAC,GAAGD,OAAM,WAAW,MAAM;AACjE,gBAAIA,OAAM,GAAG,QAAQ,eAAe;AAClC,iBAAG,QAAQ,UAAU;AACrB,iBAAG,QAAQ,gBAAgBA;AAC3B,iBAAG,QAAQ,iBAAiB;AAAA,YAC9B;AAAA,UACF;AAAA,QAAE;AAEF,YAAIyJ,QAAO,QAAQ,MAAM,KAAK,WAAW;AAAE,UAAAjD,WAAU,IAAIiD,MAAKC,OAAM,CAAC;AAAA,QAAG;AACxE,aAAK,MAAM,SAAS;AACpB,aAAK,oBAAoB;AACzB,YAAI,KAAK,UAAU,KAAK,IAAI,UAAU;AACpC,eAAK,IAAI,WAAW;AACpB,cAAI,IAAI;AAAE,6BAAiB,GAAG,GAAG;AAAA,UAAG;AAAA,QACtC;AACA,YAAI,IAAI;AAAE,UAAA/E,aAAY,IAAI,iBAAiB,IAAI,MAAM8E,MAAKC,IAAG;AAAA,QAAG;AAChE,YAAI,QAAQ;AAAE,uBAAa,EAAE;AAAA,QAAG;AAChC,YAAI,KAAK,QAAQ;AAAE,eAAK,OAAO,MAAM;AAAA,QAAG;AAAA,MAC1C;AAOA,iBAAW,UAAU,OAAO,SAAU,MAAM,SAAS;AACnD,YAAI,QAAQ,QAAQ,KAAK,QAAQ,YAAY;AAAE,iBAAO;AAAA,QAAG;AACzD,YAAI,MAAM;AACV,iBAAS3L,KAAI,GAAGA,KAAI,KAAK,MAAM,QAAQ,EAAEA,IAAG;AAC1C,cAAI,OAAO,KAAK,MAAMA,EAAC;AACvB,cAAI,OAAO,iBAAiB,KAAK,aAAa,IAAI;AAClD,cAAI,KAAK,QAAQ,MAAM;AACrB,mBAAOyE,KAAI,UAAU,OAAOL,QAAO,IAAI,GAAG,KAAK,IAAI;AACnD,gBAAI,QAAQ,IAAI;AAAE,qBAAO;AAAA,YAAK;AAAA,UAChC;AACA,cAAI,KAAK,MAAM,MAAM;AACnB,iBAAKK,KAAI,UAAU,OAAOL,QAAO,IAAI,GAAG,KAAK,EAAE;AAC/C,gBAAI,QAAQ,GAAG;AAAE,qBAAO;AAAA,YAAG;AAAA,UAC7B;AAAA,QACF;AACA,eAAO,QAAQ,EAAC,MAAY,GAAM;AAAA,MACpC;AAIA,iBAAW,UAAU,UAAU,WAAY;AACvC,YAAI,SAAS;AAEf,YAAI,MAAM,KAAK,KAAK,IAAI,IAAI,GAAG,SAAS,MAAM,KAAK,KAAK,IAAI;AAC5D,YAAI,CAAC,OAAO,CAAC,IAAI;AAAE;AAAA,QAAO;AAC1B,QAAAmG,SAAQ,IAAI,WAAY;AACtB,cAAI,OAAO,IAAI,MAAM,QAAQnG,QAAO,IAAI,IAAI;AAC5C,cAAI,OAAO,gBAAgB,IAAI,KAAK;AACpC,cAAI,MAAM;AACR,yCAA6B,IAAI;AACjC,eAAG,MAAM,mBAAmB,GAAG,MAAM,cAAc;AAAA,UACrD;AACA,aAAG,MAAM,gBAAgB;AACzB,cAAI,CAAC2B,cAAa,OAAO,KAAK,IAAI,KAAK,OAAO,UAAU,MAAM;AAC5D,gBAAI,YAAY,OAAO;AACvB,mBAAO,SAAS;AAChB,gBAAI,UAAUkB,cAAa,MAAM,IAAI;AACrC,gBAAI,SACF;AAAE,cAAA9C,kBAAiB,MAAM,KAAK,SAAS,OAAO;AAAA,YAAG;AAAA,UACrD;AACA,UAAAyC,aAAY,IAAI,iBAAiB,IAAI,MAAM;AAAA,QAC7C,CAAC;AAAA,MACH;AAEA,iBAAW,UAAU,aAAa,SAAU,MAAM;AAChD,YAAI,CAAC,KAAK,MAAM,UAAU,KAAK,IAAI,IAAI;AACrC,cAAI,KAAK,KAAK,IAAI,GAAG;AACrB,cAAI,CAAC,GAAG,sBAAsB3F,SAAQ,GAAG,oBAAoB,IAAI,KAAK,IACpE;AAAE,aAAC,GAAG,yBAAyB,GAAG,uBAAuB,CAAC,IAAI,KAAK,IAAI;AAAA,UAAG;AAAA,QAC9E;AACA,aAAK,MAAM,KAAK,IAAI;AAAA,MACtB;AAEA,iBAAW,UAAU,aAAa,SAAU,MAAM;AAChD,aAAK,MAAM,OAAOA,SAAQ,KAAK,OAAO,IAAI,GAAG,CAAC;AAC9C,YAAI,CAAC,KAAK,MAAM,UAAU,KAAK,IAAI,IAAI;AACrC,cAAI,KAAK,KAAK,IAAI,GAAG;AACpB,WAAC,GAAG,uBAAuB,GAAG,qBAAqB,CAAC,IAAI,KAAK,IAAI;AAAA,QACpE;AAAA,MACF;AACA,MAAAgC,YAAW,UAAU;AAGrB,eAAS,SAAS,KAAK,MAAM,IAAI,SAASd,OAAM;AAI9C,YAAI,WAAW,QAAQ,QAAQ;AAAE,iBAAO,eAAe,KAAK,MAAM,IAAI,SAASA,KAAI;AAAA,QAAE;AAErF,YAAI,IAAI,MAAM,CAAC,IAAI,GAAG,OAAO;AAAE,iBAAO,UAAU,IAAI,IAAI,QAAQ,EAAE,KAAK,MAAM,IAAI,SAASA,KAAI;AAAA,QAAE;AAEhG,YAAI,SAAS,IAAI,WAAW,KAAKA,KAAI,GAAG,OAAOuC,KAAI,MAAM,EAAE;AAC3D,YAAI,SAAS;AAAE,UAAAhE,SAAQ,SAAS,QAAQ,KAAK;AAAA,QAAG;AAEhD,YAAI,OAAO,KAAK,QAAQ,KAAK,OAAO,mBAAmB,OACrD;AAAE,iBAAO;AAAA,QAAO;AAClB,YAAI,OAAO,cAAc;AAEvB,iBAAO,YAAY;AACnB,iBAAO,aAAaT,MAAK,QAAQ,CAAC,OAAO,YAAY,GAAG,mBAAmB;AAC3E,cAAI,CAAC,QAAQ,mBAAmB;AAAE,mBAAO,WAAW,aAAa,oBAAoB,MAAM;AAAA,UAAG;AAC9F,cAAI,QAAQ,YAAY;AAAE,mBAAO,WAAW,aAAa;AAAA,UAAM;AAAA,QACjE;AACA,YAAI,OAAO,WAAW;AACpB,cAAI,0BAA0B,KAAK,KAAK,MAAM,MAAM,IAAI,MAAM,KAC1D,KAAK,QAAQ,GAAG,QAAQ,0BAA0B,KAAK,GAAG,MAAM,MAAM,IAAI,MAAM,GAClF;AAAE,kBAAM,IAAI,MAAM,kEAAkE;AAAA,UAAE;AACxF,4BAAkB;AAAA,QACpB;AAEA,YAAI,OAAO,cACT;AAAE,6BAAmB,KAAK,EAAC,MAAY,IAAQ,QAAQ,WAAU,GAAG,IAAI,KAAK,GAAG;AAAA,QAAG;AAErF,YAAI,UAAU,KAAK,MAAM,KAAK,IAAI,IAAI;AACtC,YAAI,KAAK,SAAS,GAAG,OAAO,GAAG,SAAU,MAAM;AAC7C,cAAI,MAAM,OAAO,aAAa,CAAC,GAAG,QAAQ,gBAAgB0F,YAAW,IAAI,KAAK,GAAG,QAAQ,SACvF;AAAE,4BAAgB;AAAA,UAAM;AAC1B,cAAI,OAAO,aAAa,WAAW,KAAK,MAAM;AAAE,YAAAxB,kBAAiB,MAAM,CAAC;AAAA,UAAG;AAC3E,wBAAc,MAAM,IAAI;AAAA,YAAW;AAAA,YACA,WAAW,KAAK,OAAO,KAAK,KAAK;AAAA,YACjC,WAAW,GAAG,OAAO,GAAG,KAAK;AAAA,UAAI,CAAC;AACrE,YAAE;AAAA,QACJ,CAAC;AAED,YAAI,OAAO,WAAW;AAAE,cAAI,KAAK,KAAK,MAAM,GAAG,OAAO,GAAG,SAAU,MAAM;AACvE,gBAAI4B,cAAa,KAAK,IAAI,GAAG;AAAE,cAAA5B,kBAAiB,MAAM,CAAC;AAAA,YAAG;AAAA,UAC5D,CAAC;AAAA,QAAG;AAEJ,YAAI,OAAO,cAAc;AAAE,UAAA3B,IAAG,QAAQ,qBAAqB,WAAY;AAAE,mBAAO,OAAO,MAAM;AAAA,UAAG,CAAC;AAAA,QAAG;AAEpG,YAAI,OAAO,UAAU;AACnB,2BAAiB;AACjB,cAAI,IAAI,QAAQ,KAAK,UAAU,IAAI,QAAQ,OAAO,QAChD;AAAE,gBAAI,aAAa;AAAA,UAAG;AAAA,QAC1B;AACA,YAAI,OAAO,WAAW;AACpB,iBAAO,KAAK,EAAE;AACd,iBAAO,SAAS;AAAA,QAClB;AACA,YAAI,IAAI;AAEN,cAAI,eAAe;AAAE,eAAG,MAAM,gBAAgB;AAAA,UAAM;AACpD,cAAI,OAAO,WACT;AAAE,YAAAiG,WAAU,IAAI,KAAK,MAAM,GAAG,OAAO,CAAC;AAAA,UAAG,WAClC,OAAO,aAAa,OAAO,cAAc,OAAO,YAAY,OAAO,OACnE,OAAO,cAAc,OAAO,OACnC;AAAE,qBAASzI,KAAI,KAAK,MAAMA,MAAK,GAAG,MAAMA,MAAK;AAAE,cAAA2I,eAAc,IAAI3I,IAAG,MAAM;AAAA,YAAG;AAAA,UAAE;AACjF,cAAI,OAAO,QAAQ;AAAE,6BAAiB,GAAG,GAAG;AAAA,UAAG;AAC/C,UAAA4G,aAAY,IAAI,eAAe,IAAI,MAAM;AAAA,QAC3C;AACA,eAAO;AAAA,MACT;AAOA,UAAI,mBAAmB,SAAS,SAAS,SAAS;AAChD,aAAK,UAAU;AACf,aAAK,UAAU;AACf,iBAAS5G,KAAI,GAAGA,KAAI,QAAQ,QAAQ,EAAEA,IACpC;AAAE,kBAAQA,EAAC,EAAE,SAAS;AAAA,QAAM;AAAA,MAChC;AAEA,uBAAiB,UAAU,QAAQ,WAAY;AAC7C,YAAI,KAAK,mBAAmB;AAAE;AAAA,QAAO;AACrC,aAAK,oBAAoB;AACzB,iBAASA,KAAI,GAAGA,KAAI,KAAK,QAAQ,QAAQ,EAAEA,IACzC;AAAE,eAAK,QAAQA,EAAC,EAAE,MAAM;AAAA,QAAG;AAC7B,QAAA4G,aAAY,MAAM,OAAO;AAAA,MAC3B;AAEA,uBAAiB,UAAU,OAAO,SAAU,MAAM,SAAS;AACzD,eAAO,KAAK,QAAQ,KAAK,MAAM,OAAO;AAAA,MACxC;AACA,MAAA3D,YAAW,gBAAgB;AAE3B,eAAS,eAAe,KAAK,MAAM,IAAI,SAASd,OAAM;AACpD,kBAAUzB,SAAQ,OAAO;AACzB,gBAAQ,SAAS;AACjB,YAAI,UAAU,CAAC,SAAS,KAAK,MAAM,IAAI,SAASyB,KAAI,CAAC,GAAG,UAAU,QAAQ,CAAC;AAC3E,YAAI,SAAS,QAAQ;AACrB,QAAA8I,YAAW,KAAK,SAAUC,MAAK;AAC7B,cAAI,QAAQ;AAAE,oBAAQ,aAAa,OAAO,UAAU,IAAI;AAAA,UAAG;AAC3D,kBAAQ,KAAK,SAASA,MAAKnG,SAAQmG,MAAK,IAAI,GAAGnG,SAAQmG,MAAK,EAAE,GAAG,SAAS/I,KAAI,CAAC;AAC/E,mBAASnC,KAAI,GAAGA,KAAIkL,KAAI,OAAO,QAAQ,EAAElL,IACvC;AAAE,gBAAIkL,KAAI,OAAOlL,EAAC,EAAE,UAAU;AAAE;AAAA,YAAO;AAAA,UAAE;AAC3C,oBAAUsB,KAAI,OAAO;AAAA,QACvB,CAAC;AACD,eAAO,IAAI,iBAAiB,SAAS,OAAO;AAAA,MAC9C;AAEA,eAAS,kBAAkB,KAAK;AAC9B,eAAO,IAAI,UAAUmD,KAAI,IAAI,OAAO,CAAC,GAAG,IAAI,QAAQA,KAAI,IAAI,SAAS,CAAC,CAAC,GAAG,SAAU,GAAG;AAAE,iBAAO,EAAE;AAAA,QAAQ,CAAC;AAAA,MAC7G;AAEA,eAAS,kBAAkB,KAAK,SAAS;AACvC,iBAASzE,KAAI,GAAGA,KAAI,QAAQ,QAAQA,MAAK;AACvC,cAAI,SAAS,QAAQA,EAAC,GAAG,MAAM,OAAO,KAAK;AAC3C,cAAI,QAAQ,IAAI,QAAQ,IAAI,IAAI,GAAG,MAAM,IAAI,QAAQ,IAAI,EAAE;AAC3D,cAAI0E,KAAI,OAAO,GAAG,GAAG;AACnB,gBAAI,UAAU,SAAS,KAAK,OAAO,KAAK,OAAO,SAAS,OAAO,QAAQ,IAAI;AAC3E,mBAAO,QAAQ,KAAK,OAAO;AAC3B,oBAAQ,SAAS;AAAA,UACnB;AAAA,QACF;AAAA,MACF;AAEA,eAAS,oBAAoB,SAAS;AACpC,YAAI,OAAO,SAAW1E,IAAI;AACxB,cAAI,SAAS,QAAQA,EAAC,GAAG,SAAS,CAAC,OAAO,QAAQ,GAAG;AACrD,UAAAiL,YAAW,OAAO,QAAQ,KAAK,SAAU,GAAG;AAAE,mBAAO,OAAO,KAAK,CAAC;AAAA,UAAG,CAAC;AACtE,mBAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,QAAQ,KAAK;AAC9C,gBAAI,YAAY,OAAO,QAAQ,CAAC;AAChC,gBAAIhK,SAAQ,QAAQ,UAAU,GAAG,KAAK,IAAI;AACxC,wBAAU,SAAS;AACnB,qBAAO,QAAQ,OAAO,KAAK,CAAC;AAAA,YAC9B;AAAA,UACF;AAAA,QACF;AAEA,iBAASjB,KAAI,GAAGA,KAAI,QAAQ,QAAQA,KAAK,MAAMA,EAAE;AAAA,MACnD;AAEA,UAAI,YAAY;AAChB,UAAI,MAAM,SAASkE,OAAM,MAAM,WAAW,SAAS,WAAW;AAC5D,YAAI,EAAE,gBAAgB,MAAM;AAAE,iBAAO,IAAI,IAAIA,OAAM,MAAM,WAAW,SAAS,SAAS;AAAA,QAAE;AACxF,YAAI,aAAa,MAAM;AAAE,sBAAY;AAAA,QAAG;AAExC,oBAAY,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,IAAIgC,MAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5D,aAAK,QAAQ;AACb,aAAK,YAAY,KAAK,aAAa;AACnC,aAAK,WAAW;AAChB,aAAK,kBAAkB;AACvB,aAAK,eAAe,KAAK,oBAAoB;AAC7C,YAAI/F,SAAQsE,KAAI,WAAW,CAAC;AAC5B,aAAK,MAAMqG,iBAAgB3K,MAAK;AAChC,aAAK,UAAU,IAAIgL,SAAQ,IAAI;AAC/B,aAAK,KAAK,EAAE;AACZ,aAAK,aAAa;AAClB,aAAK,UAAU;AACf,aAAK,YAAa,aAAa,QAAS,QAAQ;AAChD,aAAK,SAAS;AAEd,YAAI,OAAOjH,SAAQ,UAAU;AAAE,UAAAA,QAAO,KAAK,WAAWA,KAAI;AAAA,QAAG;AAC7D,kBAAU,MAAM,EAAC,MAAM/D,QAAO,IAAIA,QAAO,MAAM+D,MAAI,CAAC;AACpD,qBAAa,MAAM4G,iBAAgB3K,MAAK,GAAGiB,eAAc;AAAA,MAC3D;AAEA,UAAI,YAAYI,WAAU,YAAY,WAAW;AAAA,QAC/C,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,QAKb,MAAM,SAAS,MAAM,IAAI,IAAI;AAC3B,cAAI,IAAI;AAAE,iBAAK,MAAM,OAAO,KAAK,OAAO,KAAK,MAAM,EAAE;AAAA,UAAG,OACnD;AAAE,iBAAK,MAAM,KAAK,OAAO,KAAK,QAAQ,KAAK,MAAM,IAAI;AAAA,UAAG;AAAA,QAC/D;AAAA;AAAA,QAGA,QAAQ,SAAS,IAAI,OAAO;AAC1B,cAAI,SAAS;AACb,mBAASxB,KAAI,GAAGA,KAAI,MAAM,QAAQ,EAAEA,IAAG;AAAE,sBAAU,MAAMA,EAAC,EAAE;AAAA,UAAQ;AACpE,eAAK,YAAY,KAAK,KAAK,OAAO,OAAO,MAAM;AAAA,QACjD;AAAA,QACA,QAAQ,SAAS,IAAI,GAAG;AAAE,eAAK,YAAY,KAAK,KAAK,OAAO,CAAC;AAAA,QAAG;AAAA;AAAA;AAAA,QAKhE,UAAU,SAAS,SAAS;AAC1B,cAAI,QAAQ,SAAS,MAAM,KAAK,OAAO,KAAK,QAAQ,KAAK,IAAI;AAC7D,cAAI,YAAY,OAAO;AAAE,mBAAO;AAAA,UAAM;AACtC,iBAAO,MAAM,KAAK,WAAW,KAAK,cAAc,CAAC;AAAA,QACnD;AAAA,QACA,UAAU,YAAY,SAAS,MAAM;AACnC,cAAI,MAAMyE,KAAI,KAAK,OAAO,CAAC,GAAG,OAAO,KAAK,QAAQ,KAAK,OAAO;AAC9D,qBAAW,MAAM;AAAA,YAAC,MAAM;AAAA,YAAK,IAAIA,KAAI,MAAMT,SAAQ,MAAM,IAAI,EAAE,KAAK,MAAM;AAAA,YACxD,MAAM,KAAK,WAAW,IAAI;AAAA,YAAG,QAAQ;AAAA,YAAY,MAAM;AAAA,UAAI,GAAG,IAAI;AACpF,cAAI,KAAK,IAAI;AAAE,2BAAe,KAAK,IAAI,GAAG,CAAC;AAAA,UAAG;AAC9C,uBAAa,MAAM8G,iBAAgB,GAAG,GAAG1J,eAAc;AAAA,QACzD,CAAC;AAAA,QACD,cAAc,SAAS,MAAM,MAAM,IAAIgK,SAAQ;AAC7C,iBAAOrG,SAAQ,MAAM,IAAI;AACzB,eAAK,KAAKA,SAAQ,MAAM,EAAE,IAAI;AAC9B,uBAAa,MAAM,MAAM,MAAM,IAAIqG,OAAM;AAAA,QAC3C;AAAA,QACA,UAAU,SAAS,MAAM,IAAI,SAAS;AACpC,cAAI,QAAQnH,YAAW,MAAMc,SAAQ,MAAM,IAAI,GAAGA,SAAQ,MAAM,EAAE,CAAC;AACnE,cAAI,YAAY,OAAO;AAAE,mBAAO;AAAA,UAAM;AACtC,iBAAO,MAAM,KAAK,WAAW,KAAK,cAAc,CAAC;AAAA,QACnD;AAAA,QAEA,SAAS,SAAS,MAAM;AAAC,cAAI,IAAI,KAAK,cAAc,IAAI;AAAG,iBAAO,KAAK,EAAE;AAAA,QAAI;AAAA,QAE7E,eAAe,SAAS,MAAM;AAAC,cAAIR,QAAO,MAAM,IAAI,GAAG;AAAE,mBAAOP,SAAQ,MAAM,IAAI;AAAA,UAAE;AAAA,QAAC;AAAA,QACrF,eAAe,SAAS,MAAM;AAAC,iBAAOI,QAAO,IAAI;AAAA,QAAC;AAAA,QAElD,0BAA0B,SAAS,MAAM;AACvC,cAAI,OAAO,QAAQ,UAAU;AAAE,mBAAOJ,SAAQ,MAAM,IAAI;AAAA,UAAG;AAC3D,iBAAO2B,YAAW,IAAI;AAAA,QACxB;AAAA,QAEA,WAAW,WAAW;AAAC,iBAAO,KAAK;AAAA,QAAI;AAAA,QACvC,WAAW,WAAW;AAAC,iBAAO,KAAK;AAAA,QAAK;AAAA,QACxC,UAAU,WAAW;AAAC,iBAAO,KAAK,QAAQ,KAAK,OAAO;AAAA,QAAC;AAAA,QAEvD,SAAS,SAAS,KAAK;AAAC,iBAAOZ,SAAQ,MAAM,GAAG;AAAA,QAAC;AAAA,QAEjD,WAAW,SAAS5E,QAAO;AACzB,cAAID,SAAQ,KAAK,IAAI,QAAQ,GAAG;AAChC,cAAIC,UAAS,QAAQA,UAAS,QAAQ;AAAE,kBAAMD,OAAM;AAAA,UAAM,WACjDC,UAAS,UAAU;AAAE,kBAAMD,OAAM;AAAA,UAAQ,WACzCC,UAAS,SAASA,UAAS,QAAQA,WAAU,OAAO;AAAE,kBAAMD,OAAM,GAAG;AAAA,UAAG,OAC5E;AAAE,kBAAMA,OAAM,KAAK;AAAA,UAAG;AAC3B,iBAAO;AAAA,QACT;AAAA,QACA,gBAAgB,WAAW;AAAE,iBAAO,KAAK,IAAI;AAAA,QAAO;AAAA,QACpD,mBAAmB,WAAW;AAAC,iBAAO,KAAK,IAAI,kBAAkB;AAAA,QAAC;AAAA,QAElE,WAAW,YAAY,SAAS,MAAM,IAAI,SAAS;AACjD,6BAAmB,MAAM6E,SAAQ,MAAM,OAAO,QAAQ,WAAWN,KAAI,MAAM,MAAM,CAAC,IAAI,IAAI,GAAG,MAAM,OAAO;AAAA,QAC5G,CAAC;AAAA,QACD,cAAc,YAAY,SAAS,QAAQ,MAAM,SAAS;AACxD,6BAAmB,MAAMM,SAAQ,MAAM,MAAM,GAAGA,SAAQ,MAAM,QAAQ,MAAM,GAAG,OAAO;AAAA,QACxF,CAAC;AAAA,QACD,iBAAiB,YAAY,SAAS,MAAM,OAAO,SAAS;AAC1D,0BAAgB,MAAMA,SAAQ,MAAM,IAAI,GAAG,SAASA,SAAQ,MAAM,KAAK,GAAG,OAAO;AAAA,QACnF,CAAC;AAAA,QACD,kBAAkB,YAAY,SAAS,OAAO,SAAS;AACrD,2BAAiB,MAAM,aAAa,MAAM,KAAK,GAAG,OAAO;AAAA,QAC3D,CAAC;AAAA,QACD,oBAAoB,YAAY,SAAS,GAAG,SAAS;AACnD,cAAI,QAAQxD,KAAI,KAAK,IAAI,QAAQ,CAAC;AAClC,2BAAiB,MAAM,aAAa,MAAM,KAAK,GAAG,OAAO;AAAA,QAC3D,CAAC;AAAA,QACD,eAAe,YAAY,SAAS,QAAQ,SAAS,SAAS;AAC5D,cAAI,CAAC,OAAO,QAAQ;AAAE;AAAA,UAAO;AAC7B,cAAI,MAAM,CAAC;AACX,mBAASvB,KAAI,GAAGA,KAAI,OAAO,QAAQA,MACjC;AAAE,gBAAIA,EAAC,IAAI,IAAI4K;AAAA,cAAM7F,SAAQ,MAAM,OAAO/E,EAAC,EAAE,MAAM;AAAA,cAChC+E,SAAQ,MAAM,OAAO/E,EAAC,EAAE,IAAI;AAAA,YAAC;AAAA,UAAG;AACrD,cAAI,WAAW,MAAM;AAAE,sBAAU,KAAK,IAAI,OAAO,SAAS,GAAG,KAAK,IAAI,SAAS;AAAA,UAAG;AAClF,uBAAa,MAAM6K,oBAAmB,KAAK,IAAI,KAAK,OAAO,GAAG,OAAO;AAAA,QACvE,CAAC;AAAA,QACD,cAAc,YAAY,SAAS,QAAQ,MAAM,SAAS;AACxD,cAAI,SAAS,KAAK,IAAI,OAAO,MAAM,CAAC;AACpC,iBAAO,KAAK,IAAID,OAAM7F,SAAQ,MAAM,MAAM,GAAGA,SAAQ,MAAM,QAAQ,MAAM,CAAC,CAAC;AAC3E,uBAAa,MAAM8F,oBAAmB,KAAK,IAAI,QAAQ,OAAO,SAAS,CAAC,GAAG,OAAO;AAAA,QACpF,CAAC;AAAA,QAED,cAAc,SAAS,SAAS;AAC9B,cAAI,SAAS,KAAK,IAAI,QAAQ;AAC9B,mBAAS7K,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,gBAAI,MAAMiE,YAAW,MAAM,OAAOjE,EAAC,EAAE,KAAK,GAAG,OAAOA,EAAC,EAAE,GAAG,CAAC;AAC3D,oBAAQ,QAAQ,MAAM,OAAO,GAAG,IAAI;AAAA,UACtC;AACA,cAAI,YAAY,OAAO;AAAE,mBAAO;AAAA,UAAM,OACjC;AAAE,mBAAO,MAAM,KAAK,WAAW,KAAK,cAAc,CAAC;AAAA,UAAE;AAAA,QAC5D;AAAA,QACA,eAAe,SAAS,SAAS;AAC/B,cAAI,QAAQ,CAAC,GAAG,SAAS,KAAK,IAAI;AAClC,mBAASA,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,gBAAI,MAAMiE,YAAW,MAAM,OAAOjE,EAAC,EAAE,KAAK,GAAG,OAAOA,EAAC,EAAE,GAAG,CAAC;AAC3D,gBAAI,YAAY,OAAO;AAAE,oBAAM,IAAI,KAAK,WAAW,KAAK,cAAc,CAAC;AAAA,YAAG;AAC1E,kBAAMA,EAAC,IAAI;AAAA,UACb;AACA,iBAAO;AAAA,QACT;AAAA,QACA,kBAAkB,SAAS,MAAM,UAAUoL,SAAQ;AACjD,cAAI,MAAM,CAAC;AACX,mBAASpL,KAAI,GAAGA,KAAI,KAAK,IAAI,OAAO,QAAQA,MAC1C;AAAE,gBAAIA,EAAC,IAAI;AAAA,UAAM;AACnB,eAAK,kBAAkB,KAAK,UAAUoL,WAAU,QAAQ;AAAA,QAC1D;AAAA,QACA,mBAAmB,YAAY,SAAS,MAAM,UAAUA,SAAQ;AAC9D,cAAI,UAAU,CAAC,GAAG,MAAM,KAAK;AAC7B,mBAASpL,KAAI,GAAGA,KAAI,IAAI,OAAO,QAAQA,MAAK;AAC1C,gBAAIE,SAAQ,IAAI,OAAOF,EAAC;AACxB,oBAAQA,EAAC,IAAI,EAAC,MAAME,OAAM,KAAK,GAAG,IAAIA,OAAM,GAAG,GAAG,MAAM,KAAK,WAAW,KAAKF,EAAC,CAAC,GAAG,QAAQoL,QAAM;AAAA,UAClG;AACA,cAAI,SAAS,YAAY,YAAY,SAAS,mBAAmB,MAAM,SAAS,QAAQ;AACxF,mBAASlJ,OAAM,QAAQ,SAAS,GAAGA,QAAO,GAAGA,QAC3C;AAAE,uBAAW,MAAM,QAAQA,IAAG,CAAC;AAAA,UAAG;AACpC,cAAI,QAAQ;AAAE,uCAA2B,MAAM,MAAM;AAAA,UAAG,WAC/C,KAAK,IAAI;AAAE,YAAAyH,qBAAoB,KAAK,EAAE;AAAA,UAAG;AAAA,QACpD,CAAC;AAAA,QACD,MAAM,YAAY,WAAW;AAAC,gCAAsB,MAAM,MAAM;AAAA,QAAE,CAAC;AAAA,QACnE,MAAM,YAAY,WAAW;AAAC,gCAAsB,MAAM,MAAM;AAAA,QAAE,CAAC;AAAA,QACnE,eAAe,YAAY,WAAW;AAAC,gCAAsB,MAAM,QAAQ,IAAI;AAAA,QAAE,CAAC;AAAA,QAClF,eAAe,YAAY,WAAW;AAAC,gCAAsB,MAAM,QAAQ,IAAI;AAAA,QAAE,CAAC;AAAA,QAElF,cAAc,SAAS,KAAK;AAAC,eAAK,SAAS;AAAA,QAAI;AAAA,QAC/C,cAAc,WAAW;AAAC,iBAAO,KAAK;AAAA,QAAM;AAAA,QAE5C,aAAa,WAAW;AACtB,cAAI,OAAO,KAAK,SAAS,OAAO,GAAG,SAAS;AAC5C,mBAAS3J,KAAI,GAAGA,KAAI,KAAK,KAAK,QAAQA,MAAK;AAAE,gBAAI,CAAC,KAAK,KAAKA,EAAC,EAAE,QAAQ;AAAE,gBAAE;AAAA,YAAM;AAAA,UAAE;AACnF,mBAASkC,OAAM,GAAGA,OAAM,KAAK,OAAO,QAAQA,QAAO;AAAE,gBAAI,CAAC,KAAK,OAAOA,IAAG,EAAE,QAAQ;AAAE,gBAAE;AAAA,YAAQ;AAAA,UAAE;AACjG,iBAAO,EAAC,MAAM,MAAM,MAAM,OAAM;AAAA,QAClC;AAAA,QACA,cAAc,WAAW;AACvB,cAAI,SAAS;AAEb,eAAK,UAAU,IAAIiJ,SAAQ,KAAK,QAAQ,aAAa;AACrD,UAAAF,YAAW,MAAM,SAAU,KAAK;AAAE,mBAAO,IAAI,UAAU,OAAO;AAAA,UAAS,GAAG,IAAI;AAAA,QAChF;AAAA,QAEA,WAAW,WAAW;AACpB,eAAK,kBAAkB,KAAK,iBAAiB,IAAI;AAAA,QACnD;AAAA,QACA,kBAAkB,SAAS,YAAY;AACrC,cAAI,YACF;AAAE,iBAAK,QAAQ,SAAS,KAAK,QAAQ,YAAY,KAAK,QAAQ,aAAa;AAAA,UAAM;AACnF,iBAAO,KAAK,QAAQ;AAAA,QACtB;AAAA,QACA,SAAS,SAAU,KAAK;AACtB,iBAAO,KAAK,QAAQ,eAAe,OAAO,KAAK;AAAA,QACjD;AAAA,QAEA,YAAY,WAAW;AACrB,iBAAO;AAAA,YAAC,MAAM,iBAAiB,KAAK,QAAQ,IAAI;AAAA,YACxC,QAAQ,iBAAiB,KAAK,QAAQ,MAAM;AAAA,UAAC;AAAA,QACvD;AAAA,QACA,YAAY,SAAS,UAAU;AAC7B,cAAI,OAAO,KAAK,UAAU,IAAIE,SAAQ,KAAK,QAAQ,aAAa;AAChE,eAAK,OAAO,iBAAiB,SAAS,KAAK,MAAM,CAAC,GAAG,MAAM,IAAI;AAC/D,eAAK,SAAS,iBAAiB,SAAS,OAAO,MAAM,CAAC,GAAG,MAAM,IAAI;AAAA,QACrE;AAAA,QAEA,iBAAiB,YAAY,SAAS,MAAM,UAAU,OAAO;AAC3D,iBAAO,WAAW,MAAM,MAAM,UAAU,SAAUS,OAAM;AACtD,gBAAI,UAAUA,MAAK,kBAAkBA,MAAK,gBAAgB,CAAC;AAC3D,oBAAQ,QAAQ,IAAI;AACpB,gBAAI,CAAC,SAAS,QAAQ,OAAO,GAAG;AAAE,cAAAA,MAAK,gBAAgB;AAAA,YAAM;AAC7D,mBAAO;AAAA,UACT,CAAC;AAAA,QACH,CAAC;AAAA,QAED,aAAa,YAAY,SAAS,UAAU;AAC1C,cAAI,SAAS;AAEb,eAAK,KAAK,SAAU,MAAM;AACxB,gBAAI,KAAK,iBAAiB,KAAK,cAAc,QAAQ,GAAG;AACtD,yBAAW,QAAQ,MAAM,UAAU,WAAY;AAC7C,qBAAK,cAAc,QAAQ,IAAI;AAC/B,oBAAI,QAAQ,KAAK,aAAa,GAAG;AAAE,uBAAK,gBAAgB;AAAA,gBAAM;AAC9D,uBAAO;AAAA,cACT,CAAC;AAAA,YACH;AAAA,UACF,CAAC;AAAA,QACH,CAAC;AAAA,QAED,UAAU,SAAS,MAAM;AACvB,cAAI;AACJ,cAAI,OAAO,QAAQ,UAAU;AAC3B,gBAAI,CAACrH,QAAO,MAAM,IAAI,GAAG;AAAE,qBAAO;AAAA,YAAK;AACvC,gBAAI;AACJ,mBAAOP,SAAQ,MAAM,IAAI;AACzB,gBAAI,CAAC,MAAM;AAAE,qBAAO;AAAA,YAAK;AAAA,UAC3B,OAAO;AACL,gBAAII,QAAO,IAAI;AACf,gBAAI,KAAK,MAAM;AAAE,qBAAO;AAAA,YAAK;AAAA,UAC/B;AACA,iBAAO;AAAA,YAAC,MAAM;AAAA,YAAG,QAAQ;AAAA,YAAM,MAAM,KAAK;AAAA,YAAM,eAAe,KAAK;AAAA,YAC5D,WAAW,KAAK;AAAA,YAAW,SAAS,KAAK;AAAA,YAAS,WAAW,KAAK;AAAA,YAClE,SAAS,KAAK;AAAA,UAAO;AAAA,QAC/B;AAAA,QAEA,cAAc,YAAY,SAAS,QAAQ,OAAO,KAAK;AACrD,iBAAO,WAAW,MAAM,QAAQ,SAAS,WAAW,WAAW,SAAS,SAAU,MAAM;AACtF,gBAAIxD,QAAO,SAAS,SAAS,cAClB,SAAS,eAAe,YACxB,SAAS,WAAW,gBAAgB;AAC/C,gBAAI,CAAC,KAAKA,KAAI,GAAG;AAAE,mBAAKA,KAAI,IAAI;AAAA,YAAK,WAC5BnB,WAAU,GAAG,EAAE,KAAK,KAAKmB,KAAI,CAAC,GAAG;AAAE,qBAAO;AAAA,YAAM,OACpD;AAAE,mBAAKA,KAAI,KAAK,MAAM;AAAA,YAAK;AAChC,mBAAO;AAAA,UACT,CAAC;AAAA,QACH,CAAC;AAAA,QACD,iBAAiB,YAAY,SAAS,QAAQ,OAAO,KAAK;AACxD,iBAAO,WAAW,MAAM,QAAQ,SAAS,WAAW,WAAW,SAAS,SAAU,MAAM;AACtF,gBAAIA,QAAO,SAAS,SAAS,cAClB,SAAS,eAAe,YACxB,SAAS,WAAW,gBAAgB;AAC/C,gBAAI,MAAM,KAAKA,KAAI;AACnB,gBAAI,CAAC,KAAK;AAAE,qBAAO;AAAA,YAAM,WAChB,OAAO,MAAM;AAAE,mBAAKA,KAAI,IAAI;AAAA,YAAM,OACtC;AACH,kBAAI,QAAQ,IAAI,MAAMnB,WAAU,GAAG,CAAC;AACpC,kBAAI,CAAC,OAAO;AAAE,uBAAO;AAAA,cAAM;AAC3B,kBAAI,MAAM,MAAM,QAAQ,MAAM,CAAC,EAAE;AACjC,mBAAKmB,KAAI,IAAI,IAAI,MAAM,GAAG,MAAM,KAAK,KAAK,CAAC,MAAM,SAAS,OAAO,IAAI,SAAS,KAAK,OAAO,IAAI,MAAM,GAAG,KAAK;AAAA,YAC9G;AACA,mBAAO;AAAA,UACT,CAAC;AAAA,QACH,CAAC;AAAA,QAED,eAAe,YAAY,SAAS,QAAQ,MAAM,SAAS;AACzD,iBAAO,cAAc,MAAM,QAAQ,MAAM,OAAO;AAAA,QAClD,CAAC;AAAA,QACD,kBAAkB,SAAS,QAAQ;AAAE,iBAAO,MAAM;AAAA,QAAG;AAAA,QAErD,UAAU,SAAS,MAAM,IAAI,SAAS;AACpC,iBAAO,SAAS,MAAMmE,SAAQ,MAAM,IAAI,GAAGA,SAAQ,MAAM,EAAE,GAAG,SAAS,WAAW,QAAQ,QAAQ,OAAO;AAAA,QAC3G;AAAA,QACA,aAAa,SAAS,KAAK,SAAS;AAClC,cAAI,WAAW;AAAA,YAAC,cAAc,YAAY,QAAQ,YAAY,OAAO,QAAQ,SAAS;AAAA,YACtE,YAAY,WAAW,QAAQ;AAAA,YAC/B,gBAAgB;AAAA,YAAO,QAAQ,WAAW,QAAQ;AAAA,YAClD,mBAAmB,WAAW,QAAQ;AAAA,UAAiB;AACvE,gBAAMA,SAAQ,MAAM,GAAG;AACvB,iBAAO,SAAS,MAAM,KAAK,KAAK,UAAU,UAAU;AAAA,QACtD;AAAA,QACA,aAAa,SAAS,KAAK;AACzB,gBAAMA,SAAQ,MAAM,GAAG;AACvB,cAAI,UAAU,CAAC,GAAG,QAAQf,SAAQ,MAAM,IAAI,IAAI,EAAE;AAClD,cAAI,OAAO;AAAE,qBAAShE,KAAI,GAAGA,KAAI,MAAM,QAAQ,EAAEA,IAAG;AAClD,kBAAI,OAAO,MAAMA,EAAC;AAClB,mBAAK,KAAK,QAAQ,QAAQ,KAAK,QAAQ,IAAI,QACtC,KAAK,MAAM,QAAQ,KAAK,MAAM,IAAI,KACrC;AAAE,wBAAQ,KAAK,KAAK,OAAO,UAAU,KAAK,MAAM;AAAA,cAAG;AAAA,YACvD;AAAA,UAAE;AACF,iBAAO;AAAA,QACT;AAAA,QACA,WAAW,SAAS,MAAM,IAAIwL,SAAQ;AACpC,iBAAOzG,SAAQ,MAAM,IAAI;AAAG,eAAKA,SAAQ,MAAM,EAAE;AACjD,cAAI,QAAQ,CAAC,GAAGX,UAAS,KAAK;AAC9B,eAAK,KAAK,KAAK,MAAM,GAAG,OAAO,GAAG,SAAU,MAAM;AAChD,gBAAI,QAAQ,KAAK;AACjB,gBAAI,OAAO;AAAE,uBAASpE,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AAClD,oBAAI,OAAO,MAAMA,EAAC;AAClB,oBAAI,EAAE,KAAK,MAAM,QAAQoE,WAAU,KAAK,QAAQ,KAAK,MAAM,KAAK,MAC1D,KAAK,QAAQ,QAAQA,WAAU,KAAK,QACpC,KAAK,QAAQ,QAAQA,WAAU,GAAG,QAAQ,KAAK,QAAQ,GAAG,QAC3D,CAACoH,WAAUA,QAAO,KAAK,MAAM,IAChC;AAAE,wBAAM,KAAK,KAAK,OAAO,UAAU,KAAK,MAAM;AAAA,gBAAG;AAAA,cACrD;AAAA,YAAE;AACF,cAAEpH;AAAA,UACJ,CAAC;AACD,iBAAO;AAAA,QACT;AAAA,QACA,aAAa,WAAW;AACtB,cAAI,UAAU,CAAC;AACf,eAAK,KAAK,SAAU,MAAM;AACxB,gBAAI,MAAM,KAAK;AACf,gBAAI,KAAK;AAAE,uBAASpE,KAAI,GAAGA,KAAI,IAAI,QAAQ,EAAEA,IAC3C;AAAE,oBAAI,IAAIA,EAAC,EAAE,QAAQ,MAAM;AAAE,0BAAQ,KAAK,IAAIA,EAAC,EAAE,MAAM;AAAA,gBAAG;AAAA,cAAE;AAAA,YAAE;AAAA,UAClE,CAAC;AACD,iBAAO;AAAA,QACT;AAAA,QAEA,cAAc,SAAS0C,MAAK;AAC1B,cAAI,IAAI0B,UAAS,KAAK,OAAO,UAAU,KAAK,cAAc,EAAE;AAC5D,eAAK,KAAK,SAAU,MAAM;AACxB,gBAAI,KAAK,KAAK,KAAK,SAAS;AAC5B,gBAAI,KAAK1B,MAAK;AAAE,mBAAKA;AAAK,qBAAO;AAAA,YAAK;AACtC,YAAAA,QAAO;AACP,cAAE0B;AAAA,UACJ,CAAC;AACD,iBAAOW,SAAQ,MAAMN,KAAIL,SAAQ,EAAE,CAAC;AAAA,QACtC;AAAA,QACA,cAAc,SAAU,QAAQ;AAC9B,mBAASW,SAAQ,MAAM,MAAM;AAC7B,cAAIpC,SAAQ,OAAO;AACnB,cAAI,OAAO,OAAO,KAAK,SAAS,OAAO,KAAK,GAAG;AAAE,mBAAO;AAAA,UAAE;AAC1D,cAAI,UAAU,KAAK,cAAc,EAAE;AACnC,eAAK,KAAK,KAAK,OAAO,OAAO,MAAM,SAAU,MAAM;AACjD,YAAAA,UAAS,KAAK,KAAK,SAAS;AAAA,UAC9B,CAAC;AACD,iBAAOA;AAAA,QACT;AAAA,QAEA,MAAM,SAAS,aAAa;AAC1B,cAAI,MAAM,IAAI;AAAA,YAAI,SAAS,MAAM,KAAK,OAAO,KAAK,QAAQ,KAAK,IAAI;AAAA,YACjD,KAAK;AAAA,YAAY,KAAK;AAAA,YAAO,KAAK;AAAA,YAAS,KAAK;AAAA,UAAS;AAC3E,cAAI,YAAY,KAAK;AAAW,cAAI,aAAa,KAAK;AACtD,cAAI,MAAM,KAAK;AACf,cAAI,SAAS;AACb,cAAI,aAAa;AACf,gBAAI,QAAQ,YAAY,KAAK,QAAQ;AACrC,gBAAI,WAAW,KAAK,WAAW,CAAC;AAAA,UAClC;AACA,iBAAO;AAAA,QACT;AAAA,QAEA,WAAW,SAAS,SAAS;AAC3B,cAAI,CAAC,SAAS;AAAE,sBAAU,CAAC;AAAA,UAAG;AAC9B,cAAI,OAAO,KAAK,OAAO,KAAK,KAAK,QAAQ,KAAK;AAC9C,cAAI,QAAQ,QAAQ,QAAQ,QAAQ,OAAO,MAAM;AAAE,mBAAO,QAAQ;AAAA,UAAM;AACxE,cAAI,QAAQ,MAAM,QAAQ,QAAQ,KAAK,IAAI;AAAE,iBAAK,QAAQ;AAAA,UAAI;AAC9D,cAAI,OAAO,IAAI,IAAI,SAAS,MAAM,MAAM,EAAE,GAAG,QAAQ,QAAQ,KAAK,YAAY,MAAM,KAAK,SAAS,KAAK,SAAS;AAChH,cAAI,QAAQ,YAAY;AAAE,iBAAK,UAAU,KAAK;AAAA,UAC5C;AAAC,WAAC,KAAK,WAAW,KAAK,SAAS,CAAC,IAAI,KAAK,EAAC,KAAK,MAAM,YAAY,QAAQ,WAAU,CAAC;AACvF,eAAK,SAAS,CAAC,EAAC,KAAK,MAAM,UAAU,MAAM,YAAY,QAAQ,WAAU,CAAC;AAC1E,4BAAkB,MAAM,kBAAkB,IAAI,CAAC;AAC/C,iBAAO;AAAA,QACT;AAAA,QACA,WAAW,SAAS,OAAO;AACzB,cAAI,iBAAiBkJ,aAAY;AAAE,oBAAQ,MAAM;AAAA,UAAK;AACtD,cAAI,KAAK,QAAQ;AAAE,qBAAS7L,KAAI,GAAGA,KAAI,KAAK,OAAO,QAAQ,EAAEA,IAAG;AAC9D,kBAAI,OAAO,KAAK,OAAOA,EAAC;AACxB,kBAAI,KAAK,OAAO,OAAO;AAAE;AAAA,cAAS;AAClC,mBAAK,OAAO,OAAOA,IAAG,CAAC;AACvB,oBAAM,UAAU,IAAI;AACpB,kCAAoB,kBAAkB,IAAI,CAAC;AAC3C;AAAA,YACF;AAAA,UAAE;AAEF,cAAI,MAAM,WAAW,KAAK,SAAS;AACjC,gBAAI,WAAW,CAAC,MAAM,EAAE;AACxB,YAAAiL,YAAW,OAAO,SAAU,KAAK;AAAE,qBAAO,SAAS,KAAK,IAAI,EAAE;AAAA,YAAG,GAAG,IAAI;AACxE,kBAAM,UAAU,IAAIE,SAAQ,IAAI;AAChC,kBAAM,QAAQ,OAAO,iBAAiB,KAAK,QAAQ,MAAM,QAAQ;AACjE,kBAAM,QAAQ,SAAS,iBAAiB,KAAK,QAAQ,QAAQ,QAAQ;AAAA,UACvE;AAAA,QACF;AAAA,QACA,gBAAgB,SAAS,GAAG;AAAC,UAAAF,YAAW,MAAM,CAAC;AAAA,QAAE;AAAA,QAEjD,SAAS,WAAW;AAAC,iBAAO,KAAK;AAAA,QAAI;AAAA,QACrC,WAAW,WAAW;AAAC,iBAAO,KAAK;AAAA,QAAE;AAAA,QAErC,YAAY,SAASrJ,MAAK;AACxB,cAAI,KAAK,SAAS;AAAE,mBAAOA,KAAI,MAAM,KAAK,OAAO;AAAA,UAAE;AACnD,iBAAO4B,gBAAe5B,IAAG;AAAA,QAC3B;AAAA,QACA,eAAe,WAAW;AAAE,iBAAO,KAAK,WAAW;AAAA,QAAK;AAAA,QAExD,cAAc,YAAY,SAAU,KAAK;AACvC,cAAI,OAAO,OAAO;AAAE,kBAAM;AAAA,UAAO;AACjC,cAAI,OAAO,KAAK,WAAW;AAAE;AAAA,UAAO;AACpC,eAAK,YAAY;AACjB,eAAK,KAAK,SAAU,MAAM;AAAE,mBAAO,KAAK,QAAQ;AAAA,UAAM,CAAC;AACvD,cAAI,KAAK,IAAI;AAAE,6BAAiB,KAAK,EAAE;AAAA,UAAG;AAAA,QAC5C,CAAC;AAAA,MACH,CAAC;AAGD,UAAI,UAAU,WAAW,IAAI,UAAU;AAIvC,UAAI,WAAW;AAEf,eAAS,OAAO,GAAG;AACjB,YAAI,KAAK;AACT,wBAAgB,EAAE;AAClB,YAAIiB,gBAAe,IAAI,CAAC,KAAK,cAAc,GAAG,SAAS,CAAC,GACtD;AAAE;AAAA,QAAO;AACX,yBAAiB,CAAC;AAClB,YAAItE,KAAI;AAAE,qBAAW,CAAC,oBAAI;AAAA,QAAM;AAChC,YAAI,MAAM,aAAa,IAAI,GAAG,IAAI,GAAG,QAAQ,EAAE,aAAa;AAC5D,YAAI,CAAC,OAAO,GAAG,WAAW,GAAG;AAAE;AAAA,QAAO;AAGtC,YAAI,SAAS,MAAM,UAAU,OAAO,cAAc,OAAO,MAAM;AAC7D,cAAI,IAAI,MAAM,QAAQ2F,QAAO,MAAM,CAAC,GAAG,OAAO;AAC9C,cAAI,sCAAsC,WAAY;AACpD,gBAAI,EAAE,QAAQ,GAAG;AACf,wBAAU,IAAI,WAAY;AACxB,sBAAMa,SAAQ,GAAG,KAAK,GAAG;AACzB,oBAAI,SAAS;AAAA,kBAAC,MAAM;AAAA,kBAAK,IAAI;AAAA,kBACf,MAAM,GAAG,IAAI;AAAA,oBACTb,MAAK,OAAO,SAAU,GAAG;AAAE,6BAAO,KAAK;AAAA,oBAAM,CAAC,EAAE,KAAK,GAAG,IAAI,cAAc,CAAC;AAAA,kBAAC;AAAA,kBAChF,QAAQ;AAAA,gBAAO;AAC7B,2BAAW,GAAG,KAAK,MAAM;AACzB,2CAA2B,GAAG,KAAK4G,iBAAgB/F,SAAQ,GAAG,KAAK,GAAG,GAAGA,SAAQ,GAAG,KAAKgG,WAAU,MAAM,CAAC,CAAC,CAAC;AAAA,cAC9G,CAAC,EAAE;AAAA,YACL;AAAA,UACF;AACA,cAAI,mBAAmB,SAAU,MAAM/K,IAAG;AACxC,gBAAI,GAAG,QAAQ,sBACXiB,SAAQ,GAAG,QAAQ,oBAAoB,KAAK,IAAI,KAAK,IAAI;AAC3D,kDAAoC;AACpC;AAAA,YACF;AACA,gBAAI,SAAS,IAAI;AACjB,mBAAO,UAAU,WAAY;AAAE,qBAAO,oCAAoC;AAAA,YAAG;AAC7E,mBAAO,SAAS,WAAY;AAC1B,kBAAI,UAAU,OAAO;AACrB,kBAAI,0BAA0B,KAAK,OAAO,GAAG;AAC3C,oDAAoC;AACpC;AAAA,cACF;AACA,cAAAiD,MAAKlE,EAAC,IAAI;AACV,kDAAoC;AAAA,YACtC;AACA,mBAAO,WAAW,IAAI;AAAA,UACxB;AACA,mBAASA,KAAI,GAAGA,KAAI,MAAM,QAAQA,MAAK;AAAE,6BAAiB,MAAMA,EAAC,GAAGA,EAAC;AAAA,UAAG;AAAA,QAC1E,OAAO;AAEL,cAAI,GAAG,MAAM,gBAAgB,GAAG,IAAI,IAAI,SAAS,GAAG,IAAI,IAAI;AAC1D,eAAG,MAAM,aAAa,CAAC;AAEvB,uBAAW,WAAY;AAAE,qBAAO,GAAG,QAAQ,MAAM,MAAM;AAAA,YAAG,GAAG,EAAE;AAC/D;AAAA,UACF;AACA,cAAI;AACF,gBAAI,SAAS,EAAE,aAAa,QAAQ,MAAM;AAC1C,gBAAI,QAAQ;AACV,kBAAI;AACJ,kBAAI,GAAG,MAAM,gBAAgB,CAAC,GAAG,MAAM,aAAa,MAClD;AAAE,2BAAW,GAAG,eAAe;AAAA,cAAG;AACpC,iCAAmB,GAAG,KAAK8K,iBAAgB,KAAK,GAAG,CAAC;AACpD,kBAAI,UAAU;AAAE,yBAAS5I,OAAM,GAAGA,OAAM,SAAS,QAAQ,EAAEA,MACzD;AAAE,+BAAa,GAAG,KAAK,IAAI,SAASA,IAAG,EAAE,QAAQ,SAASA,IAAG,EAAE,MAAM,MAAM;AAAA,gBAAG;AAAA,cAAE;AAClF,iBAAG,iBAAiB,QAAQ,UAAU,OAAO;AAC7C,iBAAG,QAAQ,MAAM,MAAM;AAAA,YACzB;AAAA,UACF,SACM,KAAI;AAAA,UAAC;AAAA,QACb;AAAA,MACF;AAEA,eAAS,YAAY,IAAI,GAAG;AAC1B,YAAI3D,QAAO,CAAC,GAAG,MAAM,gBAAgB,CAAC,oBAAI,SAAO,WAAW,MAAM;AAAE,iBAAO,CAAC;AAAG;AAAA,QAAO;AACtF,YAAIsE,gBAAe,IAAI,CAAC,KAAK,cAAc,GAAG,SAAS,CAAC,GAAG;AAAE;AAAA,QAAO;AAEpE,UAAE,aAAa,QAAQ,QAAQ,GAAG,aAAa,CAAC;AAChD,UAAE,aAAa,gBAAgB;AAI/B,YAAI,EAAE,aAAa,gBAAgB,CAAChE,SAAQ;AAC1C,cAAI,MAAMiB,KAAI,OAAO,MAAM,MAAM,mCAAmC;AACpE,cAAI,MAAM;AACV,cAAIlB,SAAQ;AACV,gBAAI,QAAQ,IAAI,SAAS;AACzB,eAAG,QAAQ,QAAQ,YAAY,GAAG;AAElC,gBAAI,OAAO,IAAI;AAAA,UACjB;AACA,YAAE,aAAa,aAAa,KAAK,GAAG,CAAC;AACrC,cAAIA,SAAQ;AAAE,gBAAI,WAAW,YAAY,GAAG;AAAA,UAAG;AAAA,QACjD;AAAA,MACF;AAEA,eAAS,WAAW,IAAI,GAAG;AACzB,YAAI,MAAM,aAAa,IAAI,CAAC;AAC5B,YAAI,CAAC,KAAK;AAAE;AAAA,QAAO;AACnB,YAAI,OAAO,SAAS,uBAAuB;AAC3C,4BAAoB,IAAI,KAAK,IAAI;AACjC,YAAI,CAAC,GAAG,QAAQ,YAAY;AAC1B,aAAG,QAAQ,aAAakB,KAAI,OAAO,MAAM,2CAA2C;AACpF,aAAG,QAAQ,UAAU,aAAa,GAAG,QAAQ,YAAY,GAAG,QAAQ,SAAS;AAAA,QAC/E;AACA,QAAAD,sBAAqB,GAAG,QAAQ,YAAY,IAAI;AAAA,MAClD;AAEA,eAAS,gBAAgB,IAAI;AAC3B,YAAI,GAAG,QAAQ,YAAY;AACzB,aAAG,QAAQ,UAAU,YAAY,GAAG,QAAQ,UAAU;AACtD,aAAG,QAAQ,aAAa;AAAA,QAC1B;AAAA,MACF;AAMA,eAAS,kBAAkB,GAAG;AAC5B,YAAI,CAAC,SAAS,wBAAwB;AAAE;AAAA,QAAO;AAC/C,YAAI,UAAU,SAAS,uBAAuB,YAAY,GAAG,UAAU,CAAC;AACxE,iBAASG,KAAI,GAAGA,KAAI,QAAQ,QAAQA,MAAK;AACvC,cAAI,KAAK,QAAQA,EAAC,EAAE;AACpB,cAAI,IAAI;AAAE,oBAAQ,KAAK,EAAE;AAAA,UAAG;AAAA,QAC9B;AACA,YAAI,QAAQ,QAAQ;AAAE,kBAAQ,CAAC,EAAE,UAAU,WAAY;AACrD,qBAASA,KAAI,GAAGA,KAAI,QAAQ,QAAQA,MAAK;AAAE,gBAAE,QAAQA,EAAC,CAAC;AAAA,YAAG;AAAA,UAC5D,CAAC;AAAA,QAAG;AAAA,MACN;AAEA,UAAI,oBAAoB;AACxB,eAAS,uBAAuB;AAC9B,YAAI,mBAAmB;AAAE;AAAA,QAAO;AAChC,+BAAuB;AACvB,4BAAoB;AAAA,MACtB;AACA,eAAS,yBAAyB;AAEhC,YAAI;AACJ,QAAAwC,IAAG,QAAQ,UAAU,WAAY;AAC/B,cAAI,eAAe,MAAM;AAAE,0BAAc,WAAW,WAAY;AAC9D,4BAAc;AACd,gCAAkB,QAAQ;AAAA,YAC5B,GAAG,GAAG;AAAA,UAAG;AAAA,QACX,CAAC;AAED,QAAAA,IAAG,QAAQ,QAAQ,WAAY;AAAE,iBAAO,kBAAkB0G,OAAM;AAAA,QAAG,CAAC;AAAA,MACtE;AAEA,eAAS,SAAS,IAAI;AACpB,YAAI,IAAI,GAAG;AAEX,UAAE,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB;AAC5D,UAAE,oBAAoB;AACtB,WAAG,QAAQ;AAAA,MACb;AAEA,UAAI4C,YAAW;AAAA,QACb,GAAG;AAAA,QAAS,GAAG;AAAA,QAAa,GAAG;AAAA,QAAO,IAAI;AAAA,QAAS,IAAI;AAAA,QAAS,IAAI;AAAA,QAAQ,IAAI;AAAA,QAChF,IAAI;AAAA,QAAS,IAAI;AAAA,QAAY,IAAI;AAAA,QAAO,IAAI;AAAA,QAAS,IAAI;AAAA,QAAU,IAAI;AAAA,QAAY,IAAI;AAAA,QACvF,IAAI;AAAA,QAAQ,IAAI;AAAA,QAAQ,IAAI;AAAA,QAAM,IAAI;AAAA,QAAS,IAAI;AAAA,QAAQ,IAAI;AAAA,QAAa,IAAI;AAAA,QAChF,IAAI;AAAA,QAAU,IAAI;AAAA,QAAK,IAAI;AAAA,QAAK,IAAI;AAAA,QAAO,IAAI;AAAA,QAAO,IAAI;AAAA,QAC1D,KAAK;AAAA,QAAK,KAAK;AAAA,QAAK,KAAK;AAAA,QAAK,KAAK;AAAA,QAAK,KAAK;AAAA,QAAK,KAAK;AAAA,QACvD,KAAK;AAAA,QAAK,KAAK;AAAA,QAAK,KAAK;AAAA,QAAK,KAAK;AAAA,QAAK,KAAK;AAAA,QAAK,KAAK;AAAA,QAAK,KAAK;AAAA,QAAK,KAAK;AAAA,QAAK,KAAK;AAAA,QAAK,KAAK;AAAA,QAC/F,KAAK;AAAA,QAAK,KAAK;AAAA,QAAK,KAAK;AAAA,QAAO,OAAO;AAAA,QAAM,OAAO;AAAA,QAAQ,OAAO;AAAA,QAAQ,OAAO;AAAA,QAAS,OAAO;AAAA,QAClG,OAAO;AAAA,QAAQ,OAAO;AAAA,QAAO,OAAO;AAAA,QAAU,OAAO;AAAA,QAAY,OAAO;AAAA,MAC1E;AAGA,eAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAAE,QAAAA,UAAS,IAAI,EAAE,IAAIA,UAAS,IAAI,EAAE,IAAI,OAAO,CAAC;AAAA,MAAG;AAEhF,eAAS,MAAM,IAAI,OAAO,IAAI,OAAO;AAAE,QAAAA,UAAS,GAAG,IAAI,OAAO,aAAa,GAAG;AAAA,MAAG;AAEjF,eAAS,MAAM,GAAG,OAAO,IAAI,OAAO;AAAE,QAAAA,UAAS,MAAM,GAAG,IAAIA,UAAS,MAAM,KAAK,IAAI,MAAM;AAAA,MAAK;AAE/F,UAAI,SAAS,CAAC;AAEd,aAAO,QAAQ;AAAA,QACb,QAAQ;AAAA,QAAc,SAAS;AAAA,QAAe,MAAM;AAAA,QAAY,QAAQ;AAAA,QACxE,OAAO;AAAA,QAAa,QAAQ;AAAA,QAAoB,UAAU;AAAA,QAAY,YAAY;AAAA,QAClF,UAAU;AAAA,QAAgB,aAAa;AAAA,QAAiB,mBAAmB;AAAA,QAC3E,OAAO;AAAA,QAAc,aAAa;AAAA,QAClC,SAAS;AAAA,QAAoB,UAAU;AAAA,QACvC,OAAO;AAAA,MACT;AAIA,aAAO,YAAY;AAAA,QACjB,UAAU;AAAA,QAAa,UAAU;AAAA,QAAc,UAAU;AAAA,QAAQ,gBAAgB;AAAA,QAAQ,UAAU;AAAA,QACnG,aAAa;AAAA,QAAc,YAAY;AAAA,QAAY,WAAW;AAAA,QAAY,aAAa;AAAA,QACvF,aAAa;AAAA,QAAe,cAAc;AAAA,QAAgB,YAAY;AAAA,QAAe,aAAa;AAAA,QAClG,kBAAkB;AAAA,QAAkB,eAAe;AAAA,QAAiB,UAAU;AAAA,QAAQ,UAAU;AAAA,QAChG,UAAU;AAAA,QAAY,gBAAgB;AAAA,QAAY,gBAAgB;AAAA,QAAW,gBAAgB;AAAA,QAC7F,UAAU;AAAA,QAAc,UAAU;AAAA,QAClC,UAAU;AAAA,QAAiB,gBAAgB;AAAA,QAAiB,SAAS;AAAA,QACrE,eAAe;AAAA,MACjB;AAEA,aAAO,SAAS;AAAA,QACd,UAAU;AAAA,QAAe,UAAU;AAAA,QAAc,UAAU;AAAA,QAAY,UAAU;AAAA,QACjF,SAAS;AAAA,QAAe,SAAS;AAAA,QAAc,UAAU;AAAA,QAAe,UAAU;AAAA,QAClF,UAAU;AAAA,QAAc,gBAAgB;AAAA,QAAY,UAAU;AAAA,QAAgB,UAAU;AAAA,QACxF,SAAS;AAAA,QAAgB,iBAAiB;AAAA,QAAiB,UAAU;AAAA,QAAY,UAAU;AAAA,QAC3F,UAAU;AAAA,MACZ;AACA,aAAO,aAAa;AAAA,QAClB,SAAS;AAAA,QAAa,SAAS;AAAA,QAAc,SAAS;AAAA,QAAQ,eAAe;AAAA,QAAQ,SAAS;AAAA,QAC9F,YAAY;AAAA,QAAc,UAAU;AAAA,QAAc,WAAW;AAAA,QAAY,YAAY;AAAA,QAAY,YAAY;AAAA,QAC7G,aAAa;AAAA,QAAgB,YAAY;AAAA,QAAc,aAAa;AAAA,QAAe,iBAAiB;AAAA,QACpG,sBAAsB;AAAA,QAAiB,cAAc;AAAA,QAAiB,SAAS;AAAA,QAAQ,SAAS;AAAA,QAChG,SAAS;AAAA,QAAY,eAAe;AAAA,QAAY,aAAa;AAAA,QAAW,mBAAmB;AAAA,QAC3F,SAAS;AAAA,QAAc,SAAS;AAAA,QAAc,iBAAiB;AAAA,QAAsB,cAAc;AAAA,QACnG,SAAS;AAAA,QAAiB,eAAe;AAAA,QAAiB,WAAW;AAAA,QAAc,aAAa;AAAA,QAChG,eAAe,CAAC,SAAS,QAAQ;AAAA,MACnC;AACA,aAAO,SAAS,IAAI3M,OAAM,OAAO,aAAa,OAAO;AAIrD,eAAS,iBAAiB,MAAM;AAC9B,YAAI,QAAQ,KAAK,MAAM,QAAQ;AAC/B,eAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,YAAI,KAAK,MAAM,OAAO;AACtB,iBAASa,KAAI,GAAGA,KAAI,MAAM,SAAS,GAAGA,MAAK;AACzC,cAAI,MAAM,MAAMA,EAAC;AACjB,cAAI,kBAAkB,KAAK,GAAG,GAAG;AAAE,kBAAM;AAAA,UAAM,WACtC,YAAY,KAAK,GAAG,GAAG;AAAE,kBAAM;AAAA,UAAM,WACrC,sBAAsB,KAAK,GAAG,GAAG;AAAE,mBAAO;AAAA,UAAM,WAChD,cAAc,KAAK,GAAG,GAAG;AAAE,oBAAQ;AAAA,UAAM,OAC7C;AAAE,kBAAM,IAAI,MAAM,iCAAiC,GAAG;AAAA,UAAE;AAAA,QAC/D;AACA,YAAI,KAAK;AAAE,iBAAO,SAAS;AAAA,QAAM;AACjC,YAAI,MAAM;AAAE,iBAAO,UAAU;AAAA,QAAM;AACnC,YAAI,KAAK;AAAE,iBAAO,SAAS;AAAA,QAAM;AACjC,YAAI,OAAO;AAAE,iBAAO,WAAW;AAAA,QAAM;AACrC,eAAO;AAAA,MACT;AAOA,eAAS,gBAAgB,QAAQ;AAC/B,YAAI,OAAO,CAAC;AACZ,iBAAS,WAAW,QAAQ;AAAE,cAAI,OAAO,eAAe,OAAO,GAAG;AAChE,gBAAI,QAAQ,OAAO,OAAO;AAC1B,gBAAI,mCAAmC,KAAK,OAAO,GAAG;AAAE;AAAA,YAAS;AACjE,gBAAI,SAAS,OAAO;AAAE,qBAAO,OAAO,OAAO;AAAG;AAAA,YAAS;AAEvD,gBAAI+L,QAAOxK,KAAI,QAAQ,MAAM,GAAG,GAAG,gBAAgB;AACnD,qBAASvB,KAAI,GAAGA,KAAI+L,MAAK,QAAQ/L,MAAK;AACpC,kBAAI,MAAO,QAAS,OAAQ;AAC5B,kBAAIA,MAAK+L,MAAK,SAAS,GAAG;AACxB,uBAAOA,MAAK,KAAK,GAAG;AACpB,sBAAM;AAAA,cACR,OAAO;AACL,uBAAOA,MAAK,MAAM,GAAG/L,KAAI,CAAC,EAAE,KAAK,GAAG;AACpC,sBAAM;AAAA,cACR;AACA,kBAAI,OAAO,KAAK,IAAI;AACpB,kBAAI,CAAC,MAAM;AAAE,qBAAK,IAAI,IAAI;AAAA,cAAK,WACtB,QAAQ,KAAK;AAAE,sBAAM,IAAI,MAAM,+BAA+B,IAAI;AAAA,cAAE;AAAA,YAC/E;AACA,mBAAO,OAAO,OAAO;AAAA,UACvB;AAAA,QAAE;AACF,iBAASY,SAAQ,MAAM;AAAE,iBAAOA,KAAI,IAAI,KAAKA,KAAI;AAAA,QAAG;AACpD,eAAO;AAAA,MACT;AAEA,eAAS,UAAU,KAAKW,MAAK,QAAQ,SAAS;AAC5C,QAAAA,OAAM,UAAUA,IAAG;AACnB,YAAI,QAAQA,KAAI,OAAOA,KAAI,KAAK,KAAK,OAAO,IAAIA,KAAI,GAAG;AACvD,YAAI,UAAU,OAAO;AAAE,iBAAO;AAAA,QAAU;AACxC,YAAI,UAAU,OAAO;AAAE,iBAAO;AAAA,QAAQ;AACtC,YAAI,SAAS,QAAQ,OAAO,KAAK,GAAG;AAAE,iBAAO;AAAA,QAAU;AAEvD,YAAIA,KAAI,aAAa;AACnB,cAAI,OAAO,UAAU,SAAS,KAAKA,KAAI,WAAW,KAAK,kBACrD;AAAE,mBAAO,UAAU,KAAKA,KAAI,aAAa,QAAQ,OAAO;AAAA,UAAE;AAC5D,mBAASvB,KAAI,GAAGA,KAAIuB,KAAI,YAAY,QAAQvB,MAAK;AAC/C,gBAAI,SAAS,UAAU,KAAKuB,KAAI,YAAYvB,EAAC,GAAG,QAAQ,OAAO;AAC/D,gBAAI,QAAQ;AAAE,qBAAO;AAAA,YAAO;AAAA,UAC9B;AAAA,QACF;AAAA,MACF;AAIA,eAAS,cAAc,OAAO;AAC5B,YAAI,OAAO,OAAO,SAAS,WAAW,QAAQ8L,UAAS,MAAM,OAAO;AACpE,eAAO,QAAQ,UAAU,QAAQ,SAAS,QAAQ,WAAW,QAAQ;AAAA,MACvE;AAEA,eAAS,iBAAiB,MAAM,OAAO,SAAS;AAC9C,YAAI,OAAO;AACX,YAAI,MAAM,UAAU,QAAQ,OAAO;AAAE,iBAAO,SAAS;AAAA,QAAM;AAC3D,aAAKvM,eAAc,MAAM,UAAU,MAAM,YAAY,QAAQ,QAAQ;AAAE,iBAAO,UAAU;AAAA,QAAM;AAC9F,aAAKA,eAAc,MAAM,UAAU,MAAM,YAAY,QAAQ,OAAO;AAAE,iBAAO,SAAS;AAAA,QAAM;AAC5F,YAAI,CAAC,WAAW,MAAM,YAAY,QAAQ,SAAS;AAAE,iBAAO,WAAW;AAAA,QAAM;AAC7E,eAAO;AAAA,MACT;AAGA,eAAS,QAAQ,OAAO,SAAS;AAC/B,YAAIX,WAAU,MAAM,WAAW,MAAM,MAAM,MAAM,GAAG;AAAE,iBAAO;AAAA,QAAM;AACnE,YAAI,OAAOkN,UAAS,MAAM,OAAO;AACjC,YAAI,QAAQ,QAAQ,MAAM,aAAa;AAAE,iBAAO;AAAA,QAAM;AAGtD,YAAI,MAAM,WAAW,KAAK,MAAM,MAAM;AAAE,iBAAO,MAAM;AAAA,QAAM;AAC3D,eAAO,iBAAiB,MAAM,OAAO,OAAO;AAAA,MAC9C;AAEA,eAAS,UAAU,KAAK;AACtB,eAAO,OAAO,OAAO,WAAW,OAAO,GAAG,IAAI;AAAA,MAChD;AAIA,eAAS,oBAAoB,IAAI,SAAS;AACxC,YAAI,SAAS,GAAG,IAAI,IAAI,QAAQ,OAAO,CAAC;AAGxC,iBAAS9L,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,cAAI,SAAS,QAAQ,OAAOA,EAAC,CAAC;AAC9B,iBAAO,KAAK,UAAU0E,KAAI,OAAO,MAAMpD,KAAI,IAAI,EAAE,EAAE,KAAK,GAAG;AACzD,gBAAI,WAAW,KAAK,IAAI;AACxB,gBAAIoD,KAAI,SAAS,MAAM,OAAO,IAAI,IAAI,GAAG;AACvC,qBAAO,OAAO,SAAS;AACvB;AAAA,YACF;AAAA,UACF;AACA,eAAK,KAAK,MAAM;AAAA,QAClB;AAEA,QAAA6F,SAAQ,IAAI,WAAY;AACtB,mBAASvK,KAAI,KAAK,SAAS,GAAGA,MAAK,GAAGA,MACpC;AAAE,yBAAa,GAAG,KAAK,IAAI,KAAKA,EAAC,EAAE,MAAM,KAAKA,EAAC,EAAE,IAAI,SAAS;AAAA,UAAG;AACnE,UAAA2J,qBAAoB,EAAE;AAAA,QACxB,CAAC;AAAA,MACH;AAEA,eAAS,kBAAkB,MAAM,IAAI,KAAK;AACxC,YAAIhJ,UAASgB,oBAAmB,KAAK,MAAM,KAAK,KAAK,GAAG;AACxD,eAAOhB,UAAS,KAAKA,UAAS,KAAK,KAAK,SAAS,OAAOA;AAAA,MAC1D;AAEA,eAAS,cAAc,MAAMR,QAAO,KAAK;AACvC,YAAI,KAAK,kBAAkB,MAAMA,OAAM,IAAI,GAAG;AAC9C,eAAO,MAAM,OAAO,OAAO,IAAIsE,KAAItE,OAAM,MAAM,IAAI,MAAM,IAAI,UAAU,QAAQ;AAAA,MACjF;AAEA,eAAS,UAAU,UAAU,IAAI,SAASiE,SAAQ,KAAK;AACrD,YAAI,UAAU;AACZ,cAAI,GAAG,IAAI,aAAa,OAAO;AAAE,kBAAM,CAAC;AAAA,UAAK;AAC7C,cAAI,QAAQ9B,UAAS,SAAS,GAAG,IAAI,SAAS;AAC9C,cAAI,OAAO;AACT,gBAAI,OAAO,MAAM,IAAIhB,KAAI,KAAK,IAAI,MAAM,CAAC;AACzC,gBAAI,qBAAsB,MAAM,MAAO,KAAK,SAAS;AACrD,gBAAI,SAAS,qBAAqB,UAAU;AAC5C,gBAAI;AAOJ,gBAAI,KAAK,QAAQ,KAAK,GAAG,IAAI,aAAa,OAAO;AAC/C,kBAAI,OAAO,sBAAsB,IAAI,OAAO;AAC5C,mBAAK,MAAM,IAAI,QAAQ,KAAK,SAAS,IAAI;AACzC,kBAAI,YAAY,oBAAoB,IAAI,MAAM,EAAE,EAAE;AAClD,mBAAKO,WAAU,SAAUkG,KAAI;AAAE,uBAAO,oBAAoB,IAAI,MAAMA,GAAE,EAAE,OAAO;AAAA,cAAW,GAAI,MAAM,MAAO,KAAK,SAAS,KAAK,KAAK,OAAO,KAAK,KAAK,GAAG,EAAE;AACzJ,kBAAI,UAAU,UAAU;AAAE,qBAAK,kBAAkB,SAAS,IAAI,CAAC;AAAA,cAAG;AAAA,YACpE,OAAO;AAAE,mBAAK,MAAM,IAAI,KAAK,KAAK,KAAK;AAAA,YAAM;AAC7C,mBAAO,IAAItD,KAAIL,SAAQ,IAAI,MAAM;AAAA,UACnC;AAAA,QACF;AACA,eAAO,IAAIK,KAAIL,SAAQ,MAAM,IAAI,QAAQ,KAAK,SAAS,GAAG,MAAM,IAAI,WAAW,OAAO;AAAA,MACxF;AAEA,eAAS,aAAa,IAAI,MAAMjE,QAAO,KAAK;AAC1C,YAAI,OAAOmC,UAAS,MAAM,GAAG,IAAI,SAAS;AAC1C,YAAI,CAAC,MAAM;AAAE,iBAAO,cAAc,MAAMnC,QAAO,GAAG;AAAA,QAAE;AACpD,YAAIA,OAAM,MAAM,KAAK,KAAK,QAAQ;AAChC,UAAAA,OAAM,KAAK,KAAK,KAAK;AACrB,UAAAA,OAAM,SAAS;AAAA,QACjB,WAAWA,OAAM,MAAM,GAAG;AACxB,UAAAA,OAAM,KAAK;AACX,UAAAA,OAAM,SAAS;AAAA,QACjB;AACA,YAAI,UAAU6B,eAAc,MAAM7B,OAAM,IAAIA,OAAM,MAAM,GAAG,OAAO,KAAK,OAAO;AAC9E,YAAI,GAAG,IAAI,aAAa,SAAS,KAAK,QAAQ,KAAK,MAAM,MAAM,IAAI,KAAK,KAAKA,OAAM,KAAK,KAAK,OAAOA,OAAM,KAAK;AAG7G,iBAAO,cAAc,MAAMA,QAAO,GAAG;AAAA,QACvC;AAEA,YAAI,KAAK,SAAU,KAAK6L,MAAK;AAAE,iBAAO,kBAAkB,MAAM,eAAevH,OAAM,IAAI,KAAK,KAAKuH,IAAG;AAAA,QAAG;AACvG,YAAI;AACJ,YAAI,uBAAuB,SAAUjE,KAAI;AACvC,cAAI,CAAC,GAAG,QAAQ,cAAc;AAAE,mBAAO,EAAC,OAAO,GAAG,KAAK,KAAK,KAAK,OAAM;AAAA,UAAE;AACzE,iBAAO,QAAQ,sBAAsB,IAAI,IAAI;AAC7C,iBAAOG,uBAAsB,IAAI,MAAM,MAAMH,GAAE;AAAA,QACjD;AACA,YAAIkE,qBAAoB,qBAAqB9L,OAAM,UAAU,WAAW,GAAGA,QAAO,EAAE,IAAIA,OAAM,EAAE;AAEhG,YAAI,GAAG,IAAI,aAAa,SAAS,KAAK,SAAS,GAAG;AAChD,cAAI,qBAAsB,KAAK,SAAS,KAAO,MAAM;AACrD,cAAI,KAAK,GAAGA,QAAO,qBAAqB,IAAI,EAAE;AAC9C,cAAI,MAAM,SAAS,CAAC,qBAAqB,MAAM,KAAK,QAAQ,MAAM8L,mBAAkB,QAAQ,MAAM,KAAK,MAAM,MAAMA,mBAAkB,MAAM;AAEzI,gBAAI,SAAS,qBAAqB,WAAW;AAC7C,mBAAO,IAAIxH,KAAItE,OAAM,MAAM,IAAI,MAAM;AAAA,UACvC;AAAA,QACF;AAKA,YAAI,qBAAqB,SAAU6H,UAASgE,MAAKC,oBAAmB;AAClE,cAAI,SAAS,SAAUlE,KAAImE,qBAAoB;AAAE,mBAAOA,sBACpD,IAAIzH,KAAItE,OAAM,MAAM,GAAG4H,KAAI,CAAC,GAAG,QAAQ,IACvC,IAAItD,KAAItE,OAAM,MAAM4H,KAAI,OAAO;AAAA,UAAG;AAEtC,iBAAOC,YAAW,KAAKA,WAAU,KAAK,QAAQA,YAAWgE,MAAK;AAC5D,gBAAI7D,QAAO,KAAKH,QAAO;AACvB,gBAAIkE,sBAAsBF,OAAM,MAAO7D,MAAK,SAAS;AACrD,gBAAIJ,MAAKmE,sBAAqBD,mBAAkB,QAAQ,GAAGA,mBAAkB,KAAK,EAAE;AACpF,gBAAI9D,MAAK,QAAQJ,OAAMA,MAAKI,MAAK,IAAI;AAAE,qBAAO,OAAOJ,KAAImE,mBAAkB;AAAA,YAAE;AAC7E,YAAAnE,MAAKmE,sBAAqB/D,MAAK,OAAO,GAAGA,MAAK,IAAI,EAAE;AACpD,gBAAI8D,mBAAkB,SAASlE,OAAMA,MAAKkE,mBAAkB,KAAK;AAAE,qBAAO,OAAOlE,KAAImE,mBAAkB;AAAA,YAAE;AAAA,UAC3G;AAAA,QACF;AAGA,YAAI,MAAM,mBAAmB,UAAU,KAAK,KAAKD,kBAAiB;AAClE,YAAI,KAAK;AAAE,iBAAO;AAAA,QAAI;AAGtB,YAAI,SAAS,MAAM,IAAIA,mBAAkB,MAAM,GAAGA,mBAAkB,OAAO,EAAE;AAC7E,YAAI,UAAU,QAAQ,EAAE,MAAM,KAAK,UAAU,KAAK,KAAK,SAAS;AAC9D,gBAAM,mBAAmB,MAAM,IAAI,IAAI,KAAK,SAAS,GAAG,KAAK,qBAAqB,MAAM,CAAC;AACzF,cAAI,KAAK;AAAE,mBAAO;AAAA,UAAI;AAAA,QACxB;AAGA,eAAO;AAAA,MACT;AAIA,UAAI,WAAW;AAAA,QACb;AAAA,QACA,iBAAiB,SAAU,IAAI;AAAE,iBAAO,GAAG,aAAa,GAAG,UAAU,QAAQ,GAAG,GAAG,UAAU,MAAM,GAAG7K,eAAc;AAAA,QAAG;AAAA,QACvH,UAAU,SAAU,IAAI;AAAE,iBAAO,oBAAoB,IAAI,SAAUlB,QAAO;AACxE,gBAAIA,OAAM,MAAM,GAAG;AACjB,kBAAI+B,OAAM+B,SAAQ,GAAG,KAAK9D,OAAM,KAAK,IAAI,EAAE,KAAK;AAChD,kBAAIA,OAAM,KAAK,MAAM+B,QAAO/B,OAAM,KAAK,OAAO,GAAG,SAAS,GACxD;AAAE,uBAAO,EAAC,MAAMA,OAAM,MAAM,IAAIuE,KAAIvE,OAAM,KAAK,OAAO,GAAG,CAAC,EAAC;AAAA,cAAE,OAE7D;AAAE,uBAAO,EAAC,MAAMA,OAAM,MAAM,IAAIuE,KAAIvE,OAAM,KAAK,MAAM+B,IAAG,EAAC;AAAA,cAAE;AAAA,YAC/D,OAAO;AACL,qBAAO,EAAC,MAAM/B,OAAM,KAAK,GAAG,IAAIA,OAAM,GAAG,EAAC;AAAA,YAC5C;AAAA,UACF,CAAC;AAAA,QAAG;AAAA,QACJ,YAAY,SAAU,IAAI;AAAE,iBAAO,oBAAoB,IAAI,SAAUA,QAAO;AAAE,mBAAQ;AAAA,cACpF,MAAMuE,KAAIvE,OAAM,KAAK,EAAE,MAAM,CAAC;AAAA,cAC9B,IAAI6E,SAAQ,GAAG,KAAKN,KAAIvE,OAAM,GAAG,EAAE,OAAO,GAAG,CAAC,CAAC;AAAA,YACjD;AAAA,UAAI,CAAC;AAAA,QAAG;AAAA,QACR,aAAa,SAAU,IAAI;AAAE,iBAAO,oBAAoB,IAAI,SAAUA,QAAO;AAAE,mBAAQ;AAAA,cACrF,MAAMuE,KAAIvE,OAAM,KAAK,EAAE,MAAM,CAAC;AAAA,cAAG,IAAIA,OAAM,KAAK;AAAA,YAClD;AAAA,UAAI,CAAC;AAAA,QAAG;AAAA,QACR,oBAAoB,SAAU,IAAI;AAAE,iBAAO,oBAAoB,IAAI,SAAUA,QAAO;AAClF,gBAAI,MAAM,GAAG,WAAWA,OAAM,MAAM,KAAK,EAAE,MAAM;AACjD,gBAAI,UAAU,GAAG,WAAW,EAAC,MAAM,GAAG,IAAQ,GAAG,KAAK;AACtD,mBAAO,EAAC,MAAM,SAAS,IAAIA,OAAM,KAAK,EAAC;AAAA,UACzC,CAAC;AAAA,QAAG;AAAA,QACJ,qBAAqB,SAAU,IAAI;AAAE,iBAAO,oBAAoB,IAAI,SAAUA,QAAO;AACnF,gBAAI,MAAM,GAAG,WAAWA,OAAM,MAAM,KAAK,EAAE,MAAM;AACjD,gBAAI,WAAW,GAAG,WAAW,EAAC,MAAM,GAAG,QAAQ,QAAQ,cAAc,KAAK,IAAQ,GAAG,KAAK;AAC1F,mBAAO,EAAC,MAAMA,OAAM,KAAK,GAAG,IAAI,SAAS;AAAA,UAC3C,CAAC;AAAA,QAAG;AAAA,QACJ,MAAM,SAAU,IAAI;AAAE,iBAAO,GAAG,KAAK;AAAA,QAAG;AAAA,QACxC,MAAM,SAAU,IAAI;AAAE,iBAAO,GAAG,KAAK;AAAA,QAAG;AAAA,QACxC,eAAe,SAAU,IAAI;AAAE,iBAAO,GAAG,cAAc;AAAA,QAAG;AAAA,QAC1D,eAAe,SAAU,IAAI;AAAE,iBAAO,GAAG,cAAc;AAAA,QAAG;AAAA,QAC1D,YAAY,SAAU,IAAI;AAAE,iBAAO,GAAG,gBAAgBuE,KAAI,GAAG,UAAU,GAAG,CAAC,CAAC;AAAA,QAAG;AAAA,QAC/E,UAAU,SAAU,IAAI;AAAE,iBAAO,GAAG,gBAAgBA,KAAI,GAAG,SAAS,CAAC,CAAC;AAAA,QAAG;AAAA,QACzE,aAAa,SAAU,IAAI;AAAE,iBAAO,GAAG;AAAA,YAAmB,SAAUvE,QAAO;AAAE,qBAAO,UAAU,IAAIA,OAAM,KAAK,IAAI;AAAA,YAAG;AAAA,YAClH,EAAC,QAAQ,SAAS,MAAM,EAAC;AAAA,UAC3B;AAAA,QAAG;AAAA,QACH,kBAAkB,SAAU,IAAI;AAAE,iBAAO,GAAG;AAAA,YAAmB,SAAUA,QAAO;AAAE,qBAAO,eAAe,IAAIA,OAAM,IAAI;AAAA,YAAG;AAAA,YACvH,EAAC,QAAQ,SAAS,MAAM,EAAC;AAAA,UAC3B;AAAA,QAAG;AAAA,QACH,WAAW,SAAU,IAAI;AAAE,iBAAO,GAAG;AAAA,YAAmB,SAAUA,QAAO;AAAE,qBAAO,QAAQ,IAAIA,OAAM,KAAK,IAAI;AAAA,YAAG;AAAA,YAC9G,EAAC,QAAQ,SAAS,MAAM,GAAE;AAAA,UAC5B;AAAA,QAAG;AAAA,QACH,aAAa,SAAU,IAAI;AAAE,iBAAO,GAAG,mBAAmB,SAAUA,QAAO;AACzE,gBAAI,MAAM,GAAG,aAAaA,OAAM,MAAM,KAAK,EAAE,MAAM;AACnD,mBAAO,GAAG,WAAW,EAAC,MAAM,GAAG,QAAQ,QAAQ,cAAc,KAAK,IAAQ,GAAG,KAAK;AAAA,UACpF,GAAG,QAAQ;AAAA,QAAG;AAAA,QACd,YAAY,SAAU,IAAI;AAAE,iBAAO,GAAG,mBAAmB,SAAUA,QAAO;AACxE,gBAAI,MAAM,GAAG,aAAaA,OAAM,MAAM,KAAK,EAAE,MAAM;AACnD,mBAAO,GAAG,WAAW,EAAC,MAAM,GAAG,IAAQ,GAAG,KAAK;AAAA,UACjD,GAAG,QAAQ;AAAA,QAAG;AAAA,QACd,iBAAiB,SAAU,IAAI;AAAE,iBAAO,GAAG,mBAAmB,SAAUA,QAAO;AAC7E,gBAAI,MAAM,GAAG,aAAaA,OAAM,MAAM,KAAK,EAAE,MAAM;AACnD,gBAAI,MAAM,GAAG,WAAW,EAAC,MAAM,GAAG,IAAQ,GAAG,KAAK;AAClD,gBAAI,IAAI,KAAK,GAAG,QAAQ,IAAI,IAAI,EAAE,OAAO,IAAI,GAAG;AAAE,qBAAO,eAAe,IAAIA,OAAM,IAAI;AAAA,YAAE;AACxF,mBAAO;AAAA,UACT,GAAG,QAAQ;AAAA,QAAG;AAAA,QACd,UAAU,SAAU,IAAI;AAAE,iBAAO,GAAG,MAAM,IAAI,MAAM;AAAA,QAAG;AAAA,QACvD,YAAY,SAAU,IAAI;AAAE,iBAAO,GAAG,MAAM,GAAG,MAAM;AAAA,QAAG;AAAA,QACxD,UAAU,SAAU,IAAI;AAAE,iBAAO,GAAG,MAAM,IAAI,MAAM;AAAA,QAAG;AAAA,QACvD,YAAY,SAAU,IAAI;AAAE,iBAAO,GAAG,MAAM,GAAG,MAAM;AAAA,QAAG;AAAA,QACxD,YAAY,SAAU,IAAI;AAAE,iBAAO,GAAG,MAAM,IAAI,MAAM;AAAA,QAAG;AAAA,QACzD,aAAa,SAAU,IAAI;AAAE,iBAAO,GAAG,MAAM,GAAG,MAAM;AAAA,QAAG;AAAA,QACzD,cAAc,SAAU,IAAI;AAAE,iBAAO,GAAG,MAAM,IAAI,QAAQ;AAAA,QAAG;AAAA,QAC7D,eAAe,SAAU,IAAI;AAAE,iBAAO,GAAG,MAAM,GAAG,QAAQ;AAAA,QAAG;AAAA,QAC7D,YAAY,SAAU,IAAI;AAAE,iBAAO,GAAG,MAAM,IAAI,MAAM;AAAA,QAAG;AAAA,QACzD,cAAc,SAAU,IAAI;AAAE,iBAAO,GAAG,MAAM,GAAG,OAAO;AAAA,QAAG;AAAA,QAC3D,aAAa,SAAU,IAAI;AAAE,iBAAO,GAAG,MAAM,IAAI,OAAO;AAAA,QAAG;AAAA,QAC3D,aAAa,SAAU,IAAI;AAAE,iBAAO,GAAG,MAAM,GAAG,MAAM;AAAA,QAAG;AAAA,QACzD,eAAe,SAAU,IAAI;AAAE,iBAAO,GAAG,QAAQ,IAAI,WAAW;AAAA,QAAG;AAAA,QACnE,cAAc,SAAU,IAAI;AAAE,iBAAO,GAAG,QAAQ,GAAG,MAAM;AAAA,QAAG;AAAA,QAC5D,eAAe,SAAU,IAAI;AAAE,iBAAO,GAAG,QAAQ,IAAI,MAAM;AAAA,QAAG;AAAA,QAC9D,cAAc,SAAU,IAAI;AAAE,iBAAO,GAAG,QAAQ,GAAG,MAAM;AAAA,QAAG;AAAA,QAC5D,gBAAgB,SAAU,IAAI;AAAE,iBAAO,GAAG,QAAQ,IAAI,OAAO;AAAA,QAAG;AAAA,QAChE,eAAe,SAAU,IAAI;AAAE,iBAAO,GAAG,QAAQ,GAAG,OAAO;AAAA,QAAG;AAAA,QAC9D,YAAY,SAAU,IAAI;AAAE,iBAAO,GAAG,gBAAgB,OAAO;AAAA,QAAG;AAAA,QAChE,YAAY,SAAU,IAAI;AAAE,iBAAO,GAAG,gBAAgB,KAAK;AAAA,QAAG;AAAA,QAC9D,YAAY,SAAU,IAAI;AAAE,iBAAO,GAAG,gBAAgB,UAAU;AAAA,QAAG;AAAA,QACnE,WAAW,SAAU,IAAI;AAAE,iBAAO,GAAG,iBAAiB,GAAI;AAAA,QAAG;AAAA,QAC7D,eAAe,SAAU,IAAI;AAC3B,cAAI,SAAS,CAAC,GAAG,SAAS,GAAG,eAAe,GAAG,UAAU,GAAG,QAAQ;AACpE,mBAASF,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,gBAAI,MAAM,OAAOA,EAAC,EAAE,KAAK;AACzB,gBAAI,MAAMa,aAAY,GAAG,QAAQ,IAAI,IAAI,GAAG,IAAI,IAAI,OAAO;AAC3D,mBAAO,KAAKQ,UAAS,UAAU,MAAM,OAAO,CAAC;AAAA,UAC/C;AACA,aAAG,kBAAkB,MAAM;AAAA,QAC7B;AAAA,QACA,YAAY,SAAU,IAAI;AACxB,cAAI,GAAG,kBAAkB,GAAG;AAAE,eAAG,gBAAgB,KAAK;AAAA,UAAG,OACpD;AAAE,eAAG,YAAY,WAAW;AAAA,UAAG;AAAA,QACtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAQA,gBAAgB,SAAU,IAAI;AAAE,iBAAOkJ,SAAQ,IAAI,WAAY;AAC7D,gBAAI,SAAS,GAAG,eAAe,GAAG,SAAS,CAAC;AAC5C,qBAASvK,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,kBAAI,CAAC,OAAOA,EAAC,EAAE,MAAM,GAAG;AAAE;AAAA,cAAS;AACnC,kBAAI,MAAM,OAAOA,EAAC,EAAE,MAAM,OAAOgE,SAAQ,GAAG,KAAK,IAAI,IAAI,EAAE;AAC3D,kBAAI,MAAM;AACR,oBAAI,IAAI,MAAM,KAAK,QAAQ;AAAE,wBAAM,IAAIS,KAAI,IAAI,MAAM,IAAI,KAAK,CAAC;AAAA,gBAAG;AAClE,oBAAI,IAAI,KAAK,GAAG;AACd,wBAAM,IAAIA,KAAI,IAAI,MAAM,IAAI,KAAK,CAAC;AAClC,qBAAG;AAAA,oBAAa,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC;AAAA,oBAChDA,KAAI,IAAI,MAAM,IAAI,KAAK,CAAC;AAAA,oBAAG;AAAA,oBAAK;AAAA,kBAAY;AAAA,gBAC9D,WAAW,IAAI,OAAO,GAAG,IAAI,OAAO;AAClC,sBAAI,OAAOT,SAAQ,GAAG,KAAK,IAAI,OAAO,CAAC,EAAE;AACzC,sBAAI,MAAM;AACR,0BAAM,IAAIS,KAAI,IAAI,MAAM,CAAC;AACzB,uBAAG;AAAA,sBAAa,KAAK,OAAO,CAAC,IAAI,GAAG,IAAI,cAAc,IACtC,KAAK,OAAO,KAAK,SAAS,CAAC;AAAA,sBAC3BA,KAAI,IAAI,OAAO,GAAG,KAAK,SAAS,CAAC;AAAA,sBAAG;AAAA,sBAAK;AAAA,oBAAY;AAAA,kBACvE;AAAA,gBACF;AAAA,cACF;AACA,qBAAO,KAAK,IAAImG,OAAM,KAAK,GAAG,CAAC;AAAA,YACjC;AACA,eAAG,cAAc,MAAM;AAAA,UACzB,CAAC;AAAA,QAAG;AAAA,QACJ,kBAAkB,SAAU,IAAI;AAAE,iBAAOL,SAAQ,IAAI,WAAY;AAC/D,gBAAI,OAAO,GAAG,eAAe;AAC7B,qBAASvK,KAAI,KAAK,SAAS,GAAGA,MAAK,GAAGA,MACpC;AAAE,iBAAG,aAAa,GAAG,IAAI,cAAc,GAAG,KAAKA,EAAC,EAAE,QAAQ,KAAKA,EAAC,EAAE,MAAM,QAAQ;AAAA,YAAG;AACrF,mBAAO,GAAG,eAAe;AACzB,qBAASkC,OAAM,GAAGA,OAAM,KAAK,QAAQA,QACnC;AAAE,iBAAG,WAAW,KAAKA,IAAG,EAAE,KAAK,EAAE,MAAM,MAAM,IAAI;AAAA,YAAG;AACtD,YAAAyH,qBAAoB,EAAE;AAAA,UACxB,CAAC;AAAA,QAAG;AAAA,QACJ,UAAU,SAAU,IAAI;AAAE,iBAAO,GAAG,iBAAiB,MAAM,OAAO;AAAA,QAAG;AAAA,QACrE,iBAAiB,SAAU,IAAI;AAAE,iBAAO,GAAG,gBAAgB;AAAA,QAAG;AAAA,MAChE;AAGA,eAAS,UAAU,IAAI,OAAO;AAC5B,YAAI,OAAO3F,SAAQ,GAAG,KAAK,KAAK;AAChC,YAAI,SAAS2B,YAAW,IAAI;AAC5B,YAAI,UAAU,MAAM;AAAE,kBAAQvB,QAAO,MAAM;AAAA,QAAG;AAC9C,eAAO,UAAU,MAAM,IAAI,QAAQ,OAAO,CAAC;AAAA,MAC7C;AACA,eAAS,QAAQ,IAAI,OAAO;AAC1B,YAAI,OAAOJ,SAAQ,GAAG,KAAK,KAAK;AAChC,YAAI,SAAS,cAAc,IAAI;AAC/B,YAAI,UAAU,MAAM;AAAE,kBAAQI,QAAO,MAAM;AAAA,QAAG;AAC9C,eAAO,UAAU,MAAM,IAAI,MAAM,OAAO,EAAE;AAAA,MAC5C;AACA,eAAS,eAAe,IAAI,KAAK;AAC/B,YAAIjE,SAAQ,UAAU,IAAI,IAAI,IAAI;AAClC,YAAI,OAAO6D,SAAQ,GAAG,KAAK7D,OAAM,IAAI;AACrC,YAAI,QAAQmC,UAAS,MAAM,GAAG,IAAI,SAAS;AAC3C,YAAI,CAAC,SAAS,MAAM,CAAC,EAAE,SAAS,GAAG;AACjC,cAAI,aAAa,KAAK,IAAInC,OAAM,IAAI,KAAK,KAAK,OAAO,IAAI,CAAC;AAC1D,cAAI,OAAO,IAAI,QAAQA,OAAM,QAAQ,IAAI,MAAM,cAAc,IAAI;AACjE,iBAAOsE,KAAItE,OAAM,MAAM,OAAO,IAAI,YAAYA,OAAM,MAAM;AAAA,QAC5D;AACA,eAAOA;AAAA,MACT;AAGA,eAAS,gBAAgB,IAAI,OAAO,WAAW;AAC7C,YAAI,OAAO,SAAS,UAAU;AAC5B,kBAAQ,SAAS,KAAK;AACtB,cAAI,CAAC,OAAO;AAAE,mBAAO;AAAA,UAAM;AAAA,QAC7B;AAGA,WAAG,QAAQ,MAAM,aAAa;AAC9B,YAAI,YAAY,GAAG,QAAQ,OAAO,OAAO;AACzC,YAAI;AACF,cAAI,GAAG,WAAW,GAAG;AAAE,eAAG,MAAM,gBAAgB;AAAA,UAAM;AACtD,cAAI,WAAW;AAAE,eAAG,QAAQ,QAAQ;AAAA,UAAO;AAC3C,iBAAO,MAAM,EAAE,KAAK;AAAA,QACtB,UAAE;AACA,aAAG,QAAQ,QAAQ;AACnB,aAAG,MAAM,gBAAgB;AAAA,QAC3B;AACA,eAAO;AAAA,MACT;AAEA,eAAS,mBAAmB,IAAI,MAAM,QAAQ;AAC5C,iBAASH,KAAI,GAAGA,KAAI,GAAG,MAAM,QAAQ,QAAQA,MAAK;AAChD,cAAI,SAAS,UAAU,MAAM,GAAG,MAAM,QAAQA,EAAC,GAAG,QAAQ,EAAE;AAC5D,cAAI,QAAQ;AAAE,mBAAO;AAAA,UAAO;AAAA,QAC9B;AACA,eAAQ,GAAG,QAAQ,aAAa,UAAU,MAAM,GAAG,QAAQ,WAAW,QAAQ,EAAE,KAC3E,UAAU,MAAM,GAAG,QAAQ,QAAQ,QAAQ,EAAE;AAAA,MACpD;AAKA,UAAI,UAAU,IAAIc;AAElB,eAAS,YAAY,IAAI,MAAM,GAAG,QAAQ;AACxC,YAAI,MAAM,GAAG,MAAM;AACnB,YAAI,KAAK;AACP,cAAI,cAAc,IAAI,GAAG;AAAE,mBAAO;AAAA,UAAU;AAC5C,cAAI,MAAM,KAAK,IAAI,GACjB;AAAE,eAAG,MAAM,SAAS;AAAA,UAAM,OAE1B;AAAE,oBAAQ,IAAI,IAAI,WAAY;AAC5B,kBAAI,GAAG,MAAM,UAAU,KAAK;AAC1B,mBAAG,MAAM,SAAS;AAClB,mBAAG,QAAQ,MAAM,MAAM;AAAA,cACzB;AAAA,YACF,CAAC;AAAA,UAAG;AACN,cAAI,iBAAiB,IAAI,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG;AAAE,mBAAO;AAAA,UAAK;AAAA,QACvE;AACA,eAAO,iBAAiB,IAAI,MAAM,GAAG,MAAM;AAAA,MAC7C;AAEA,eAAS,iBAAiB,IAAI,MAAM,GAAG,QAAQ;AAC7C,YAAI,SAAS,mBAAmB,IAAI,MAAM,MAAM;AAEhD,YAAI,UAAU,SACZ;AAAE,aAAG,MAAM,SAAS;AAAA,QAAM;AAC5B,YAAI,UAAU,WACZ;AAAE,UAAA8F,aAAY,IAAI,cAAc,IAAI,MAAM,CAAC;AAAA,QAAG;AAEhD,YAAI,UAAU,aAAa,UAAU,SAAS;AAC5C,2BAAiB,CAAC;AAClB,UAAAqC,cAAa,EAAE;AAAA,QACjB;AAEA,eAAO,CAAC,CAAC;AAAA,MACX;AAGA,eAAS,iBAAiB,IAAI,GAAG;AAC/B,YAAI,OAAO,QAAQ,GAAG,IAAI;AAC1B,YAAI,CAAC,MAAM;AAAE,iBAAO;AAAA,QAAM;AAE1B,YAAI,EAAE,YAAY,CAAC,GAAG,MAAM,QAAQ;AAIlC,iBAAO,YAAY,IAAI,WAAW,MAAM,GAAG,SAAU,GAAG;AAAE,mBAAO,gBAAgB,IAAI,GAAG,IAAI;AAAA,UAAG,CAAC,KACzF,YAAY,IAAI,MAAM,GAAG,SAAU,GAAG;AACpC,gBAAI,OAAO,KAAK,WAAW,WAAW,KAAK,CAAC,IAAI,EAAE,QAChD;AAAE,qBAAO,gBAAgB,IAAI,CAAC;AAAA,YAAE;AAAA,UACpC,CAAC;AAAA,QACV,OAAO;AACL,iBAAO,YAAY,IAAI,MAAM,GAAG,SAAU,GAAG;AAAE,mBAAO,gBAAgB,IAAI,CAAC;AAAA,UAAG,CAAC;AAAA,QACjF;AAAA,MACF;AAGA,eAAS,kBAAkB,IAAI,GAAG,IAAI;AACpC,eAAO,YAAY,IAAI,MAAM,KAAK,KAAK,GAAG,SAAU,GAAG;AAAE,iBAAO,gBAAgB,IAAI,GAAG,IAAI;AAAA,QAAG,CAAC;AAAA,MACjG;AAEA,UAAI,iBAAiB;AACrB,eAAS,UAAU,GAAG;AACpB,YAAI,KAAK;AACT,YAAI,EAAE,UAAU,EAAE,UAAU,GAAG,QAAQ,MAAM,SAAS,GAAG;AAAE;AAAA,QAAO;AAClE,WAAG,MAAM,QAAQ5I,WAAU;AAC3B,YAAIwC,gBAAe,IAAI,CAAC,GAAG;AAAE;AAAA,QAAO;AAEpC,YAAItE,OAAMC,cAAa,MAAM,EAAE,WAAW,IAAI;AAAE,YAAE,cAAc;AAAA,QAAO;AACvE,YAAI,OAAO,EAAE;AACb,WAAG,QAAQ,QAAQ,QAAQ,MAAM,EAAE;AACnC,YAAI,UAAU,iBAAiB,IAAI,CAAC;AACpC,YAAII,SAAQ;AACV,2BAAiB,UAAU,OAAO;AAElC,cAAI,CAAC,WAAW,QAAQ,MAAM,CAAC8E,kBAAiBvE,OAAM,EAAE,UAAU,EAAE,UAClE;AAAE,eAAG,iBAAiB,IAAI,MAAM,KAAK;AAAA,UAAG;AAAA,QAC5C;AACA,YAAIhB,UAAS,CAACgB,QAAO,CAAC,WAAW,QAAQ,MAAM,EAAE,YAAY,CAAC,EAAE,WAAW,SAAS,aAClF;AAAE,mBAAS,YAAY,KAAK;AAAA,QAAG;AAGjC,YAAI,QAAQ,MAAM,CAAC,2BAA2B,KAAK,GAAG,QAAQ,QAAQ,SAAS,GAC7E;AAAE,wBAAc,EAAE;AAAA,QAAG;AAAA,MACzB;AAEA,eAAS,cAAc,IAAI;AACzB,YAAI,UAAU,GAAG,QAAQ;AACzB,QAAAmB,UAAS,SAAS,sBAAsB;AAExC,iBAAS,GAAG,GAAG;AACb,cAAI,EAAE,WAAW,MAAM,CAAC,EAAE,QAAQ;AAChC,YAAAZ,SAAQ,SAAS,sBAAsB;AACvC,YAAAgD,KAAI,UAAU,SAAS,EAAE;AACzB,YAAAA,KAAI,UAAU,aAAa,EAAE;AAAA,UAC/B;AAAA,QACF;AACA,QAAAF,IAAG,UAAU,SAAS,EAAE;AACxB,QAAAA,IAAG,UAAU,aAAa,EAAE;AAAA,MAC9B;AAEA,eAAS,QAAQ,GAAG;AAClB,YAAI,EAAE,WAAW,IAAI;AAAE,eAAK,IAAI,IAAI,QAAQ;AAAA,QAAO;AACnD,QAAAK,gBAAe,MAAM,CAAC;AAAA,MACxB;AAEA,eAAS,WAAW,GAAG;AACrB,YAAI,KAAK;AACT,YAAI,EAAE,UAAU,EAAE,UAAU,GAAG,QAAQ,MAAM,SAAS,GAAG;AAAE;AAAA,QAAO;AAClE,YAAI,cAAc,GAAG,SAAS,CAAC,KAAKA,gBAAe,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,UAAU1D,QAAO,EAAE,SAAS;AAAE;AAAA,QAAO;AAClH,YAAI,UAAU,EAAE,SAAS,WAAW,EAAE;AACtC,YAAIP,WAAU,WAAW,gBAAgB;AAAC,2BAAiB;AAAM,2BAAiB,CAAC;AAAG;AAAA,QAAM;AAC5F,YAAKA,YAAW,CAAC,EAAE,SAAS,EAAE,QAAQ,OAAQ,iBAAiB,IAAI,CAAC,GAAG;AAAE;AAAA,QAAO;AAChF,YAAI,KAAK,OAAO,aAAa,YAAY,OAAO,UAAU,QAAQ;AAElE,YAAI,MAAM,MAAQ;AAAE;AAAA,QAAO;AAC3B,YAAI,kBAAkB,IAAI,GAAG,EAAE,GAAG;AAAE;AAAA,QAAO;AAC3C,WAAG,QAAQ,MAAM,WAAW,CAAC;AAAA,MAC/B;AAEA,UAAI,oBAAoB;AAExB,UAAI,YAAY,SAASoC,OAAM,KAAK,QAAQ;AAC1C,aAAK,OAAOA;AACZ,aAAK,MAAM;AACX,aAAK,SAAS;AAAA,MAChB;AAEA,gBAAU,UAAU,UAAU,SAAUA,OAAM,KAAK,QAAQ;AACzD,eAAO,KAAK,OAAO,oBAAoBA,SACrC0D,KAAI,KAAK,KAAK,GAAG,KAAK,KAAK,UAAU,KAAK;AAAA,MAC9C;AAEA,UAAI,WAAW;AACf,eAAS,YAAY,KAAK,QAAQ;AAChC,YAAIyH,OAAM,CAAC,oBAAI;AACf,YAAI,mBAAmB,gBAAgB,QAAQA,MAAK,KAAK,MAAM,GAAG;AAChE,sBAAY,kBAAkB;AAC9B,iBAAO;AAAA,QACT,WAAW,aAAa,UAAU,QAAQA,MAAK,KAAK,MAAM,GAAG;AAC3D,4BAAkB,IAAI,UAAUA,MAAK,KAAK,MAAM;AAChD,sBAAY;AACZ,iBAAO;AAAA,QACT,OAAO;AACL,sBAAY,IAAI,UAAUA,MAAK,KAAK,MAAM;AAC1C,4BAAkB;AAClB,iBAAO;AAAA,QACT;AAAA,MACF;AAOA,eAAS,YAAY,GAAG;AACtB,YAAI,KAAK,MAAM,UAAU,GAAG;AAC5B,YAAItJ,gBAAe,IAAI,CAAC,KAAK,QAAQ,eAAe,QAAQ,MAAM,cAAc,GAAG;AAAE;AAAA,QAAO;AAC5F,gBAAQ,MAAM,aAAa;AAC3B,gBAAQ,QAAQ,EAAE;AAElB,YAAI,cAAc,SAAS,CAAC,GAAG;AAC7B,cAAI,CAACpE,SAAQ;AAGX,oBAAQ,SAAS,YAAY;AAC7B,uBAAW,WAAY;AAAE,qBAAO,QAAQ,SAAS,YAAY;AAAA,YAAM,GAAG,GAAG;AAAA,UAC3E;AACA;AAAA,QACF;AACA,YAAI,cAAc,IAAI,CAAC,GAAG;AAAE;AAAA,QAAO;AACnC,YAAI,MAAM,aAAa,IAAI,CAAC,GAAG,SAAS,SAAS,CAAC,GAAG,SAAS,MAAM,YAAY,KAAK,MAAM,IAAI;AAC/F,eAAO,MAAM;AAGb,YAAI,UAAU,KAAK,GAAG,MAAM,eAC1B;AAAE,aAAG,MAAM,cAAc,CAAC;AAAA,QAAG;AAE/B,YAAI,OAAO,mBAAmB,IAAI,QAAQ,KAAK,QAAQ,CAAC,GAAG;AAAE;AAAA,QAAO;AAEpE,YAAI,UAAU,GAAG;AACf,cAAI,KAAK;AAAE,2BAAe,IAAI,KAAK,QAAQ,CAAC;AAAA,UAAG,WACtCyE,UAAS,CAAC,KAAK,QAAQ,UAAU;AAAE,6BAAiB,CAAC;AAAA,UAAG;AAAA,QACnE,WAAW,UAAU,GAAG;AACtB,cAAI,KAAK;AAAE,4BAAgB,GAAG,KAAK,GAAG;AAAA,UAAG;AACzC,qBAAW,WAAY;AAAE,mBAAO,QAAQ,MAAM,MAAM;AAAA,UAAG,GAAG,EAAE;AAAA,QAC9D,WAAW,UAAU,GAAG;AACtB,cAAI1D,oBAAmB;AAAE,eAAG,QAAQ,MAAM,cAAc,CAAC;AAAA,UAAG,OACvD;AAAE,2BAAe,EAAE;AAAA,UAAG;AAAA,QAC7B;AAAA,MACF;AAEA,eAAS,mBAAmB,IAAI,QAAQ,KAAK,QAAQ,OAAO;AAC1D,YAAI,OAAO;AACX,YAAI,UAAU,UAAU;AAAE,iBAAO,WAAW;AAAA,QAAM,WACzC,UAAU,UAAU;AAAE,iBAAO,WAAW;AAAA,QAAM;AACvD,gBAAQ,UAAU,IAAI,SAAS,UAAU,IAAI,WAAW,WAAW;AAEnE,eAAO,YAAY,IAAK,iBAAiB,MAAM,KAAK,GAAG,OAAO,SAAU,OAAO;AAC7E,cAAI,OAAO,SAAS,UAAU;AAAE,oBAAQ,SAAS,KAAK;AAAA,UAAG;AACzD,cAAI,CAAC,OAAO;AAAE,mBAAO;AAAA,UAAM;AAC3B,cAAI,OAAO;AACX,cAAI;AACF,gBAAI,GAAG,WAAW,GAAG;AAAE,iBAAG,MAAM,gBAAgB;AAAA,YAAM;AACtD,mBAAO,MAAM,IAAI,GAAG,KAAK;AAAA,UAC3B,UAAE;AACA,eAAG,MAAM,gBAAgB;AAAA,UAC3B;AACA,iBAAO;AAAA,QACT,CAAC;AAAA,MACH;AAEA,eAAS,eAAe,IAAI,QAAQ,OAAO;AACzC,YAAI,SAAS,GAAG,UAAU,gBAAgB;AAC1C,YAAI,QAAQ,SAAS,OAAO,IAAI,QAAQ,KAAK,IAAI,CAAC;AAClD,YAAI,MAAM,QAAQ,MAAM;AACtB,cAAI,OAAOJ,YAAW,MAAM,YAAY,MAAM,UAAU,MAAM;AAC9D,gBAAM,OAAO,OAAO,cAAc,UAAU,WAAW,SAAS,UAAU,WAAW,SAAS;AAAA,QAChG;AACA,YAAI,MAAM,UAAU,QAAQ,GAAG,IAAI,QAAQ;AAAE,gBAAM,SAAS,GAAG,IAAI,UAAU,MAAM;AAAA,QAAU;AAC7F,YAAI,MAAM,UAAU,MAAM;AAAE,gBAAM,SAASD,OAAM,MAAM,UAAU,MAAM;AAAA,QAAS;AAChF,YAAI,MAAM,cAAc,MAAM;AAAE,gBAAM,aAAa,EAAEA,OAAM,MAAM,SAAS,MAAM;AAAA,QAAU;AAC1F,eAAO;AAAA,MACT;AAEA,eAAS,eAAe,IAAI,KAAK,QAAQ,OAAO;AAC9C,YAAIZ,KAAI;AAAE,qBAAWkC,MAAK0I,cAAa,EAAE,GAAG,CAAC;AAAA,QAAG,OAC3C;AAAE,aAAG,MAAM,QAAQ9I,WAAU;AAAA,QAAG;AAErC,YAAI,WAAW,eAAe,IAAI,QAAQ,KAAK;AAE/C,YAAI,MAAM,GAAG,IAAI,KAAK;AACtB,YAAI,GAAG,QAAQ,YAAY8C,gBAAe,CAAC,GAAG,WAAW,KACrD,UAAU,aAAa,YAAY,IAAI,SAAS,GAAG,KAAK,OACvDuB,MAAK,YAAY,IAAI,OAAO,SAAS,GAAG,KAAK,GAAG,GAAG,IAAI,KAAK,IAAI,OAAO,OACvEA,KAAI,UAAU,GAAG,GAAG,GAAG,IAAI,KAAK,IAAI,OAAO,IAC9C;AAAE,8BAAoB,IAAI,OAAO,KAAK,QAAQ;AAAA,QAAG,OAEjD;AAAE,2BAAiB,IAAI,OAAO,KAAK,QAAQ;AAAA,QAAG;AAAA,MAClD;AAIA,eAAS,oBAAoB,IAAI,OAAO,KAAK,UAAU;AACrD,YAAI,UAAU,GAAG,SAAS,QAAQ;AAClC,YAAI,UAAU,UAAU,IAAI,SAAU,GAAG;AACvC,cAAIjG,SAAQ;AAAE,oBAAQ,SAAS,YAAY;AAAA,UAAO;AAClD,aAAG,MAAM,eAAe;AACxB,UAAAiE,KAAI,QAAQ,QAAQ,eAAe,WAAW,OAAO;AACrD,UAAAA,KAAI,QAAQ,QAAQ,eAAe,aAAa,SAAS;AACzD,UAAAA,KAAI,QAAQ,UAAU,aAAa,SAAS;AAC5C,UAAAA,KAAI,QAAQ,UAAU,QAAQ,OAAO;AACrC,cAAI,CAAC,OAAO;AACV,6BAAiB,CAAC;AAClB,gBAAI,CAAC,SAAS,QACZ;AAAE,8BAAgB,GAAG,KAAK,KAAK,MAAM,MAAM,SAAS,MAAM;AAAA,YAAG;AAE/D,gBAAKjE,WAAU,CAACI,WAAWN,OAAMC,eAAc,GAC7C;AAAE,yBAAW,WAAY;AAAC,wBAAQ,QAAQ,cAAc,KAAK,MAAM,EAAC,eAAe,KAAI,CAAC;AAAG,wBAAQ,MAAM,MAAM;AAAA,cAAE,GAAG,EAAE;AAAA,YAAG,OAEzH;AAAE,sBAAQ,MAAM,MAAM;AAAA,YAAG;AAAA,UAC7B;AAAA,QACF,CAAC;AACD,YAAI,YAAY,SAAS,IAAI;AAC3B,kBAAQ,SAAS,KAAK,IAAI,MAAM,UAAU,GAAG,OAAO,IAAI,KAAK,IAAI,MAAM,UAAU,GAAG,OAAO,KAAK;AAAA,QAClG;AACA,YAAI,YAAY,WAAY;AAAE,iBAAO,QAAQ;AAAA,QAAM;AAEnD,YAAIC,SAAQ;AAAE,kBAAQ,SAAS,YAAY;AAAA,QAAM;AACjD,WAAG,MAAM,eAAe;AACxB,gBAAQ,OAAO,CAAC,SAAS;AAEzB,YAAI,QAAQ,SAAS,UAAU;AAAE,kBAAQ,SAAS,SAAS;AAAA,QAAG;AAC9D,QAAA+D,IAAG,QAAQ,QAAQ,eAAe,WAAW,OAAO;AACpD,QAAAA,IAAG,QAAQ,QAAQ,eAAe,aAAa,SAAS;AACxD,QAAAA,IAAG,QAAQ,UAAU,aAAa,SAAS;AAC3C,QAAAA,IAAG,QAAQ,UAAU,QAAQ,OAAO;AAEpC,uBAAe,EAAE;AACjB,mBAAW,WAAY;AAAE,iBAAO,QAAQ,MAAM,MAAM;AAAA,QAAG,GAAG,EAAE;AAAA,MAC9D;AAEA,eAAS,aAAa,IAAI,KAAK,MAAM;AACnC,YAAI,QAAQ,QAAQ;AAAE,iBAAO,IAAIoI,OAAM,KAAK,GAAG;AAAA,QAAE;AACjD,YAAI,QAAQ,QAAQ;AAAE,iBAAO,GAAG,WAAW,GAAG;AAAA,QAAE;AAChD,YAAI,QAAQ,QAAQ;AAAE,iBAAO,IAAIA,OAAMnG,KAAI,IAAI,MAAM,CAAC,GAAGM,SAAQ,GAAG,KAAKN,KAAI,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;AAAA,QAAE;AAChG,YAAI,SAAS,KAAK,IAAI,GAAG;AACzB,eAAO,IAAImG,OAAM,OAAO,MAAM,OAAO,EAAE;AAAA,MACzC;AAGA,eAAS,iBAAiB,IAAI,OAAOzK,QAAO,UAAU;AACpD,YAAI,UAAU,GAAG,SAAS,MAAM,GAAG;AACnC,yBAAiB,KAAK;AAEtB,YAAI,UAAU,UAAU,WAAW,IAAI,KAAK,SAAS,SAAS;AAC9D,YAAI,SAAS,UAAU,CAAC,SAAS,QAAQ;AACvC,qBAAW,IAAI,IAAI,SAASA,MAAK;AACjC,cAAI,WAAW,IACb;AAAE,uBAAW,OAAO,QAAQ;AAAA,UAAG,OAE/B;AAAE,uBAAW,IAAIyK,OAAMzK,QAAOA,MAAK;AAAA,UAAG;AAAA,QAC1C,OAAO;AACL,qBAAW,IAAI,IAAI,QAAQ;AAC3B,qBAAW,IAAI,IAAI;AAAA,QACrB;AAEA,YAAI,SAAS,QAAQ,aAAa;AAChC,cAAI,CAAC,SAAS,QAAQ;AAAE,uBAAW,IAAIyK,OAAMzK,QAAOA,MAAK;AAAA,UAAG;AAC5D,UAAAA,SAAQ,aAAa,IAAI,OAAO,MAAM,IAAI;AAC1C,qBAAW;AAAA,QACb,OAAO;AACL,cAAID,SAAQ,aAAa,IAAIC,QAAO,SAAS,IAAI;AACjD,cAAI,SAAS,QACX;AAAE,uBAAW,YAAY,UAAUD,OAAM,QAAQA,OAAM,MAAM,SAAS,MAAM;AAAA,UAAG,OAE/E;AAAE,uBAAWA;AAAA,UAAO;AAAA,QACxB;AAEA,YAAI,CAAC,SAAS,QAAQ;AACpB,qBAAW;AACX,uBAAa,KAAK,IAAIyK,WAAU,CAAC,QAAQ,GAAG,CAAC,GAAG,SAAS;AACzD,qBAAW,IAAI;AAAA,QACjB,WAAW,YAAY,IAAI;AACzB,qBAAW,OAAO;AAClB;AAAA,YAAa;AAAA,YAAKE,oBAAmB,IAAI,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ;AAAA,YAC/D,EAAC,QAAQ,OAAO,QAAQ,SAAQ;AAAA,UAAC;AAAA,QAChD,WAAW,OAAO,SAAS,KAAK,OAAO,QAAQ,EAAE,MAAM,KAAK,SAAS,QAAQ,UAAU,CAAC,SAAS,QAAQ;AACvG;AAAA,YAAa;AAAA,YAAKA,oBAAmB,IAAI,OAAO,MAAM,GAAG,QAAQ,EAAE,OAAO,OAAO,MAAM,WAAW,CAAC,CAAC,GAAG,CAAC;AAAA,YAC3F,EAAC,QAAQ,OAAO,QAAQ,SAAQ;AAAA,UAAC;AAC9C,qBAAW,IAAI;AAAA,QACjB,OAAO;AACL,8BAAoB,KAAK,UAAU,UAAU,SAAS;AAAA,QACxD;AAEA,YAAI,UAAU1K;AACd,iBAAS,SAAS,KAAK;AACrB,cAAIuE,KAAI,SAAS,GAAG,KAAK,GAAG;AAAE;AAAA,UAAO;AACrC,oBAAU;AAEV,cAAI,SAAS,QAAQ,aAAa;AAChC,gBAAI0H,UAAS,CAAC,GAAG,UAAU,GAAG,QAAQ;AACtC,gBAAI,WAAWvL,aAAYmD,SAAQ,KAAK7D,OAAM,IAAI,EAAE,MAAMA,OAAM,IAAI,OAAO;AAC3E,gBAAI,SAASU,aAAYmD,SAAQ,KAAK,IAAI,IAAI,EAAE,MAAM,IAAI,IAAI,OAAO;AACrE,gBAAI,OAAO,KAAK,IAAI,UAAU,MAAM,GAAG,QAAQ,KAAK,IAAI,UAAU,MAAM;AACxE,qBAAS,OAAO,KAAK,IAAI7D,OAAM,MAAM,IAAI,IAAI,GAAG,MAAM,KAAK,IAAI,GAAG,SAAS,GAAG,KAAK,IAAIA,OAAM,MAAM,IAAI,IAAI,CAAC,GACvG,QAAQ,KAAK,QAAQ;AACxB,kBAAI+D,QAAOF,SAAQ,KAAK,IAAI,EAAE,MAAM,UAAU,WAAWE,OAAM,MAAM,OAAO;AAC5E,kBAAI,QAAQ,OACV;AAAE,gBAAAkI,QAAO,KAAK,IAAIxB,OAAMnG,KAAI,MAAM,OAAO,GAAGA,KAAI,MAAM,OAAO,CAAC,CAAC;AAAA,cAAG,WAC3DP,MAAK,SAAS,SACrB;AAAE,gBAAAkI,QAAO,KAAK,IAAIxB,OAAMnG,KAAI,MAAM,OAAO,GAAGA,KAAI,MAAM,WAAWP,OAAM,OAAO,OAAO,CAAC,CAAC,CAAC;AAAA,cAAG;AAAA,YAC/F;AACA,gBAAI,CAACkI,QAAO,QAAQ;AAAE,cAAAA,QAAO,KAAK,IAAIxB,OAAMzK,QAAOA,MAAK,CAAC;AAAA,YAAG;AAC5D;AAAA,cAAa;AAAA,cAAK0K,oBAAmB,IAAI,SAAS,OAAO,MAAM,GAAG,QAAQ,EAAE,OAAOuB,OAAM,GAAG,QAAQ;AAAA,cACvF,EAAC,QAAQ,UAAU,QAAQ,MAAK;AAAA,YAAC;AAC9C,eAAG,eAAe,GAAG;AAAA,UACvB,OAAO;AACL,gBAAI,WAAW;AACf,gBAAIlM,SAAQ,aAAa,IAAI,KAAK,SAAS,IAAI;AAC/C,gBAAI,SAAS,SAAS,QAAQ;AAC9B,gBAAIwE,KAAIxE,OAAM,QAAQ,MAAM,IAAI,GAAG;AACjC,qBAAOA,OAAM;AACb,uBAAS4E,QAAO,SAAS,KAAK,GAAG5E,OAAM,MAAM;AAAA,YAC/C,OAAO;AACL,qBAAOA,OAAM;AACb,uBAAS2E,QAAO,SAAS,GAAG,GAAG3E,OAAM,IAAI;AAAA,YAC3C;AACA,gBAAI,WAAW,SAAS,OAAO,MAAM,CAAC;AACtC,qBAAS,QAAQ,IAAI,aAAa,IAAI,IAAI0K,OAAM7F,SAAQ,KAAK,MAAM,GAAG,IAAI,CAAC;AAC3E,yBAAa,KAAK8F,oBAAmB,IAAI,UAAU,QAAQ,GAAG,SAAS;AAAA,UACzE;AAAA,QACF;AAEA,YAAI,aAAa,QAAQ,QAAQ,sBAAsB;AAKvD,YAAI,UAAU;AAEd,iBAASU,QAAO,GAAG;AACjB,cAAI,WAAW,EAAE;AACjB,cAAI,MAAM,aAAa,IAAI,GAAG,MAAM,SAAS,QAAQ,WAAW;AAChE,cAAI,CAAC,KAAK;AAAE;AAAA,UAAO;AACnB,cAAI7G,KAAI,KAAK,OAAO,KAAK,GAAG;AAC1B,eAAG,MAAM,QAAQrE,WAAU;AAC3B,qBAAS,GAAG;AACZ,gBAAI,UAAUgJ,cAAa,SAAS,GAAG;AACvC,gBAAI,IAAI,QAAQ,QAAQ,MAAM,IAAI,OAAO,QAAQ,MAC/C;AAAE,yBAAW,UAAU,IAAI,WAAY;AAAC,oBAAI,WAAW,UAAU;AAAE,kBAAAkC,QAAO,CAAC;AAAA,gBAAG;AAAA,cAAC,CAAC,GAAG,GAAG;AAAA,YAAG;AAAA,UAC7F,OAAO;AACL,gBAAI,UAAU,EAAE,UAAU,WAAW,MAAM,MAAM,EAAE,UAAU,WAAW,SAAS,KAAK;AACtF,gBAAI,SAAS;AAAE,yBAAW,UAAU,IAAI,WAAY;AAClD,oBAAI,WAAW,UAAU;AAAE;AAAA,gBAAO;AAClC,wBAAQ,SAAS,aAAa;AAC9B,gBAAAA,QAAO,CAAC;AAAA,cACV,CAAC,GAAG,EAAE;AAAA,YAAG;AAAA,UACX;AAAA,QACF;AAEA,iBAAS,KAAK,GAAG;AACf,aAAG,MAAM,gBAAgB;AACzB,oBAAU;AAIV,cAAI,GAAG;AACL,6BAAiB,CAAC;AAClB,oBAAQ,MAAM,MAAM;AAAA,UACtB;AACA,UAAA7I,KAAI,QAAQ,QAAQ,eAAe,aAAa,IAAI;AACpD,UAAAA,KAAI,QAAQ,QAAQ,eAAe,WAAW,EAAE;AAChD,cAAI,QAAQ,gBAAgB;AAAA,QAC9B;AAEA,YAAI,OAAO,UAAU,IAAI,SAAU,GAAG;AACpC,cAAI,EAAE,YAAY,KAAK,CAAC,SAAS,CAAC,GAAG;AAAE,iBAAK,CAAC;AAAA,UAAG,OAC3C;AAAE,YAAA6I,QAAO,CAAC;AAAA,UAAG;AAAA,QACpB,CAAC;AACD,YAAI,KAAK,UAAU,IAAI,IAAI;AAC3B,WAAG,MAAM,gBAAgB;AACzB,QAAA/I,IAAG,QAAQ,QAAQ,eAAe,aAAa,IAAI;AACnD,QAAAA,IAAG,QAAQ,QAAQ,eAAe,WAAW,EAAE;AAAA,MACjD;AAIA,eAAS,aAAa,IAAItC,QAAO;AAC/B,YAAI,SAASA,OAAM;AACnB,YAAI,OAAOA,OAAM;AACjB,YAAI,aAAa8D,SAAQ,GAAG,KAAK,OAAO,IAAI;AAC5C,YAAIU,KAAI,QAAQ,IAAI,KAAK,KAAK,OAAO,UAAU,KAAK,QAAQ;AAAE,iBAAOxE;AAAA,QAAM;AAC3E,YAAI,QAAQoC,UAAS,UAAU;AAC/B,YAAI,CAAC,OAAO;AAAE,iBAAOpC;AAAA,QAAM;AAC3B,YAAIyC,SAAQX,eAAc,OAAO,OAAO,IAAI,OAAO,MAAM,GAAG,OAAO,MAAMW,MAAK;AAC9E,YAAI,KAAK,QAAQ,OAAO,MAAM,KAAK,MAAM,OAAO,IAAI;AAAE,iBAAOzC;AAAA,QAAM;AACnE,YAAI,WAAWyC,UAAU,KAAK,QAAQ,OAAO,OAAQ,KAAK,SAAS,KAAK,IAAI;AAC5E,YAAI,YAAY,KAAK,YAAY,MAAM,QAAQ;AAAE,iBAAOzC;AAAA,QAAM;AAI9D,YAAI;AACJ,YAAI,KAAK,QAAQ,OAAO,MAAM;AAC5B,sBAAY,KAAK,OAAO,OAAO,SAAS,GAAG,IAAI,aAAa,QAAQ,IAAI,MAAM;AAAA,QAChF,OAAO;AACL,cAAI,YAAY8B,eAAc,OAAO,KAAK,IAAI,KAAK,MAAM;AACzD,cAAI,MAAM,YAAYW,WAAU,KAAK,KAAK,OAAO,OAAO,KAAK,SAAS,IAAI,KAAK;AAC/E,cAAI,aAAa,WAAW,KAAK,aAAa,UAC5C;AAAE,uBAAW,MAAM;AAAA,UAAG,OAEtB;AAAE,uBAAW,MAAM;AAAA,UAAG;AAAA,QAC1B;AAEA,YAAI,UAAU,MAAM,YAAY,WAAW,KAAK,EAAE;AAClD,YAAI,OAAO,aAAa,QAAQ,SAAS;AACzC,YAAI,KAAK,OAAO,QAAQ,OAAO,QAAQ,IAAI,SAAS,OAAO,UAAU;AACrE,eAAO,OAAO,MAAM,MAAM,OAAO,UAAU,SAASzC,SAAQ,IAAI0K,OAAM,IAAInG,KAAI,OAAO,MAAM,IAAI,MAAM,GAAG,IAAI;AAAA,MAC9G;AAKA,eAAS,YAAY,IAAI,GAAGtC,OAAM,SAAS;AACzC,YAAI,IAAI;AACR,YAAI,EAAE,SAAS;AACb,eAAK,EAAE,QAAQ,CAAC,EAAE;AAClB,eAAK,EAAE,QAAQ,CAAC,EAAE;AAAA,QACpB,OAAO;AACL,cAAI;AAAE,iBAAK,EAAE;AAAS,iBAAK,EAAE;AAAA,UAAS,SAChC,KAAK;AAAE,mBAAO;AAAA,UAAM;AAAA,QAC5B;AACA,YAAI,MAAM,KAAK,MAAM,GAAG,QAAQ,QAAQ,sBAAsB,EAAE,KAAK,GAAG;AAAE,iBAAO;AAAA,QAAM;AACvF,YAAI,SAAS;AAAE,2BAAiB,CAAC;AAAA,QAAG;AAEpC,YAAI,UAAU,GAAG;AACjB,YAAI,UAAU,QAAQ,QAAQ,sBAAsB;AAEpD,YAAI,KAAK,QAAQ,UAAU,CAACa,YAAW,IAAIb,KAAI,GAAG;AAAE,iBAAO,mBAAmB,CAAC;AAAA,QAAE;AACjF,cAAM,QAAQ,MAAM,QAAQ;AAE5B,iBAASnC,KAAI,GAAGA,KAAI,GAAG,QAAQ,YAAY,QAAQ,EAAEA,IAAG;AACtD,cAAI,IAAI,QAAQ,QAAQ,WAAWA,EAAC;AACpC,cAAI,KAAK,EAAE,sBAAsB,EAAE,SAAS,IAAI;AAC9C,gBAAI,OAAOsE,cAAa,GAAG,KAAK,EAAE;AAClC,gBAAI,SAAS,GAAG,QAAQ,YAAYtE,EAAC;AACrC,YAAA4C,QAAO,IAAIT,OAAM,IAAI,MAAM,OAAO,WAAW,CAAC;AAC9C,mBAAO,mBAAmB,CAAC;AAAA,UAC7B;AAAA,QACF;AAAA,MACF;AAEA,eAAS,cAAc,IAAI,GAAG;AAC5B,eAAO,YAAY,IAAI,GAAG,eAAe,IAAI;AAAA,MAC/C;AAOA,eAAS,cAAc,IAAI,GAAG;AAC5B,YAAI,cAAc,GAAG,SAAS,CAAC,KAAK,oBAAoB,IAAI,CAAC,GAAG;AAAE;AAAA,QAAO;AACzE,YAAIU,gBAAe,IAAI,GAAG,aAAa,GAAG;AAAE;AAAA,QAAO;AACnD,YAAI,CAACrD,oBAAmB;AAAE,aAAG,QAAQ,MAAM,cAAc,CAAC;AAAA,QAAG;AAAA,MAC/D;AAEA,eAAS,oBAAoB,IAAI,GAAG;AAClC,YAAI,CAACwD,YAAW,IAAI,mBAAmB,GAAG;AAAE,iBAAO;AAAA,QAAM;AACzD,eAAO,YAAY,IAAI,GAAG,qBAAqB,KAAK;AAAA,MACtD;AAEA,eAAS,aAAa,IAAI;AACxB,WAAG,QAAQ,QAAQ,YAAY,GAAG,QAAQ,QAAQ,UAAU,QAAQ,gBAAgB,EAAE,IACpF,GAAG,QAAQ,MAAM,QAAQ,cAAc,QAAQ;AACjD,oBAAY,EAAE;AAAA,MAChB;AAEA,UAAI,OAAO,EAAC,UAAU,WAAU;AAAC,eAAO;AAAA,MAAiB,EAAC;AAE1D,UAAIqJ,YAAW,CAAC;AAChB,UAAI,iBAAiB,CAAC;AAEtB,eAAS,cAAcR,aAAY;AACjC,YAAIS,kBAAiBT,YAAW;AAEhC,iBAAS,OAAO,MAAM,OAAO,QAAQ,WAAW;AAC9C,UAAAA,YAAW,SAAS,IAAI,IAAI;AAC5B,cAAI,QAAQ;AAAE,YAAAS,gBAAe,IAAI,IAC/B,YAAY,SAAU,IAAI,KAAK,KAAK;AAAC,kBAAI,OAAO,MAAM;AAAE,uBAAO,IAAI,KAAK,GAAG;AAAA,cAAG;AAAA,YAAC,IAAI;AAAA,UAAQ;AAAA,QAC/F;AAEA,QAAAT,YAAW,eAAe;AAG1B,QAAAA,YAAW,OAAO;AAIlB,eAAO,SAAS,IAAI,SAAU,IAAI,KAAK;AAAE,iBAAO,GAAG,SAAS,GAAG;AAAA,QAAG,GAAG,IAAI;AACzE,eAAO,QAAQ,MAAM,SAAU,IAAI,KAAK;AACtC,aAAG,IAAI,aAAa;AACpB,UAAAb,UAAS,EAAE;AAAA,QACb,GAAG,IAAI;AAEP,eAAO,cAAc,GAAGA,WAAU,IAAI;AACtC,eAAO,kBAAkB,KAAK;AAC9B,eAAO,eAAe,IAAI;AAC1B,eAAO,WAAW,GAAG,SAAU,IAAI;AACjC,yBAAe,EAAE;AACjB,sBAAY,EAAE;AACd,UAAAvC,WAAU,EAAE;AAAA,QACd,GAAG,IAAI;AAEP,eAAO,iBAAiB,MAAM,SAAU,IAAI,KAAK;AAC/C,aAAG,IAAI,UAAU;AACjB,cAAI,CAAC,KAAK;AAAE;AAAA,UAAO;AACnB,cAAI,YAAY,CAAC,GAAGrE,UAAS,GAAG,IAAI;AACpC,aAAG,IAAI,KAAK,SAAU,MAAM;AAC1B,qBAAS,MAAM,OAAK;AAClB,kBAAI,QAAQ,KAAK,KAAK,QAAQ,KAAK,GAAG;AACtC,kBAAI,SAAS,IAAI;AAAE;AAAA,cAAM;AACzB,oBAAM,QAAQ,IAAI;AAClB,wBAAU,KAAKK,KAAIL,SAAQ,KAAK,CAAC;AAAA,YACnC;AACA,YAAAA;AAAA,UACF,CAAC;AACD,mBAASpE,KAAI,UAAU,SAAS,GAAGA,MAAK,GAAGA,MACzC;AAAE,yBAAa,GAAG,KAAK,KAAK,UAAUA,EAAC,GAAGyE,KAAI,UAAUzE,EAAC,EAAE,MAAM,UAAUA,EAAC,EAAE,KAAK,IAAI,MAAM,CAAC;AAAA,UAAG;AAAA,QACrG,CAAC;AACD,eAAO,gBAAgB,qGAAqG,SAAU,IAAI,KAAK,KAAK;AAClJ,aAAG,MAAM,eAAe,IAAI,OAAO,IAAI,UAAU,IAAI,KAAK,GAAI,IAAI,KAAK,OAAQ,GAAG;AAClF,cAAI,OAAO,MAAM;AAAE,eAAG,QAAQ;AAAA,UAAG;AAAA,QACnC,CAAC;AACD,eAAO,0BAA0B,+BAA+B,SAAU,IAAI;AAAE,iBAAO,GAAG,QAAQ;AAAA,QAAG,GAAG,IAAI;AAC5G,eAAO,iBAAiB,IAAI;AAC5B,eAAO,cAAcd,UAAS,oBAAoB,YAAY,WAAY;AACxE,gBAAM,IAAI,MAAM,yDAAyD;AAAA,QAC3E,GAAG,IAAI;AACP,eAAO,cAAc,OAAO,SAAU,IAAI,KAAK;AAAE,iBAAO,GAAG,cAAc,EAAE,aAAa;AAAA,QAAK,GAAG,IAAI;AACpG,eAAO,eAAe,OAAO,SAAU,IAAI,KAAK;AAAE,iBAAO,GAAG,cAAc,EAAE,cAAc;AAAA,QAAK,GAAG,IAAI;AACtG,eAAO,kBAAkB,OAAO,SAAU,IAAI,KAAK;AAAE,iBAAO,GAAG,cAAc,EAAE,iBAAiB;AAAA,QAAK,GAAG,IAAI;AAC5G,eAAO,mBAAmB,CAACG,QAAO;AAClC,eAAO,yBAAyB,IAAI;AAEpC,eAAO,SAAS,WAAW,SAAU,IAAI;AACvC,uBAAa,EAAE;AACf,wBAAc,EAAE;AAAA,QAClB,GAAG,IAAI;AACP,eAAO,UAAU,WAAW,SAAU,IAAI,KAAK,KAAK;AAClD,cAAI0H,QAAO,UAAU,GAAG;AACxB,cAAI,OAAO,OAAO,QAAQ,UAAU,GAAG;AACvC,cAAI,QAAQ,KAAK,QAAQ;AAAE,iBAAK,OAAO,IAAIA,KAAI;AAAA,UAAG;AAClD,cAAIA,MAAK,QAAQ;AAAE,YAAAA,MAAK,OAAO,IAAI,QAAQ,IAAI;AAAA,UAAG;AAAA,QACpD,CAAC;AACD,eAAO,aAAa,IAAI;AACxB,eAAO,kBAAkB,IAAI;AAE7B,eAAO,gBAAgB,OAAO,iBAAiB,IAAI;AACnD,eAAO,WAAW,CAAC,GAAG,SAAU,IAAI,KAAK;AACvC,aAAG,QAAQ,cAAc,WAAW,KAAK,GAAG,QAAQ,WAAW;AAC/D,wBAAc,EAAE;AAAA,QAClB,GAAG,IAAI;AACP,eAAO,eAAe,MAAM,SAAU,IAAI,KAAK;AAC7C,aAAG,QAAQ,QAAQ,MAAM,OAAO,MAAMwB,sBAAqB,GAAG,OAAO,IAAI,OAAO;AAChF,aAAG,QAAQ;AAAA,QACb,GAAG,IAAI;AACP,eAAO,8BAA8B,OAAO,SAAU,IAAI;AAAE,iBAAO0B,kBAAiB,EAAE;AAAA,QAAG,GAAG,IAAI;AAChG,eAAO,kBAAkB,UAAU,SAAU,IAAI;AAC/C,yBAAe,EAAE;AACjB,UAAAA,kBAAiB,EAAE;AACnB,aAAG,QAAQ,WAAW,aAAa,GAAG,IAAI,SAAS;AACnD,aAAG,QAAQ,WAAW,cAAc,GAAG,IAAI,UAAU;AAAA,QACvD,GAAG,IAAI;AACP,eAAO,eAAe,OAAO,SAAU,IAAI,KAAK;AAC9C,aAAG,QAAQ,cAAc,WAAW,GAAG,QAAQ,SAAS,GAAG;AAC3D,wBAAc,EAAE;AAAA,QAClB,GAAG,IAAI;AACP,eAAO,mBAAmB,GAAG,eAAe,IAAI;AAChD,eAAO,uBAAuB,SAAU,SAAS;AAAE,iBAAO;AAAA,QAAS,GAAG,eAAe,IAAI;AACzF,eAAO,2BAA2B,OAAOnB,kBAAiB,IAAI;AAE9D,eAAO,+BAA+B,IAAI;AAC1C,eAAO,mBAAmB,IAAI;AAC9B,eAAO,0BAA0B,IAAI;AACrC,eAAO,sBAAsB,KAAK;AAElC,eAAO,YAAY,OAAO,SAAU,IAAI,KAAK;AAC3C,cAAI,OAAO,YAAY;AACrB,YAAAI,QAAO,EAAE;AACT,eAAG,QAAQ,MAAM,KAAK;AAAA,UACxB;AACA,aAAG,QAAQ,MAAM,gBAAgB,GAAG;AAAA,QACtC,CAAC;AAED,eAAO,qBAAqB,MAAM,SAAU,IAAI,KAAK;AACnD,gBAAO,QAAQ,KAAM,OAAO;AAC5B,aAAG,QAAQ,MAAM,yBAAyB,GAAG;AAAA,QAC/C,CAAC;AAED,eAAO,gBAAgB,OAAO,SAAU,IAAI,KAAK;AAAC,cAAI,CAAC,KAAK;AAAE,eAAG,QAAQ,MAAM,MAAM;AAAA,UAAG;AAAA,QAAC,GAAG,IAAI;AAChG,eAAO,YAAY,MAAM,eAAe;AACxC,eAAO,sBAAsB,IAAI;AAEjC,eAAO,mBAAmB,GAAG;AAC7B,eAAO,sBAAsB,CAAC;AAC9B,eAAO,gBAAgB,GAAGJ,kBAAiB,IAAI;AAC/C,eAAO,6BAA6B,MAAMA,kBAAiB,IAAI;AAC/D,eAAO,YAAY,GAAG;AACtB,eAAO,aAAa,GAAG;AACvB,eAAO,gBAAgB,MAAM,gBAAgB,IAAI;AACjD,eAAO,gBAAgB,OAAO,gBAAgB,IAAI;AAClD,eAAO,gBAAgB,GAAG;AAC1B,eAAO,aAAa,KAAK,SAAU,IAAI,KAAK;AAAE,iBAAO,GAAG,IAAI,QAAQ,YAAY;AAAA,QAAK,CAAC;AACtF,eAAO,qBAAqB,IAAI;AAChC,eAAO,kBAAkB,IAAI,SAAU,IAAI;AAAE,iBAAO,GAAG,QAAQ;AAAA,QAAG,GAAG,IAAI;AACzE,eAAO,sBAAsB,KAAO,gBAAgB,IAAI;AACxD,eAAO,uBAAuB,MAAM,SAAU,IAAI,KAAK;AACrD,cAAI,CAAC,KAAK;AAAE,eAAG,QAAQ,MAAM,cAAc;AAAA,UAAG;AAAA,QAChD,CAAC;AAED,eAAO,YAAY,MAAM,SAAU,IAAI,KAAK;AAAE,iBAAO,GAAG,QAAQ,MAAM,SAAS,EAAE,WAAW,OAAO;AAAA,QAAI,CAAC;AACxG,eAAO,aAAa,IAAI;AACxB,eAAO,aAAa,OAAO,SAAU,IAAI,KAAK;AAAE,iBAAO,GAAG,IAAI,aAAa,GAAG;AAAA,QAAG,GAAG,IAAI;AACxF,eAAO,WAAW,IAAI;AAAA,MACxB;AAEA,eAAS,gBAAgB,IAAI,OAAO,KAAK;AACvC,YAAI,QAAQ,OAAO,OAAO;AAC1B,YAAI,CAAC,SAAS,CAAC,OAAO;AACpB,cAAI,QAAQ,GAAG,QAAQ;AACvB,cAAI,SAAS,QAAQtG,MAAKE;AAC1B,iBAAO,GAAG,QAAQ,UAAU,aAAa,MAAM,KAAK;AACpD,iBAAO,GAAG,QAAQ,UAAU,aAAa,MAAM,KAAK;AACpD,iBAAO,GAAG,QAAQ,UAAU,YAAY,MAAM,IAAI;AAClD,iBAAO,GAAG,QAAQ,UAAU,aAAa,MAAM,KAAK;AACpD,iBAAO,GAAG,QAAQ,UAAU,QAAQ,MAAM,IAAI;AAAA,QAChD;AAAA,MACF;AAEA,eAAS,gBAAgB,IAAI;AAC3B,YAAI,GAAG,QAAQ,cAAc;AAC3B,UAAApC,UAAS,GAAG,QAAQ,SAAS,iBAAiB;AAC9C,aAAG,QAAQ,MAAM,MAAM,WAAW;AAClC,aAAG,QAAQ,aAAa;AAAA,QAC1B,OAAO;AACL,UAAAZ,SAAQ,GAAG,QAAQ,SAAS,iBAAiB;AAC7C,UAAAuG,aAAY,EAAE;AAAA,QAChB;AACA,QAAAuC,qBAAoB,EAAE;AACtB,QAAAC,WAAU,EAAE;AACZ,oBAAY,EAAE;AACd,mBAAW,WAAY;AAAE,iBAAOwB,kBAAiB,EAAE;AAAA,QAAG,GAAG,GAAG;AAAA,MAC9D;AAKA,eAAS4B,YAAW,OAAO,SAAS;AAClC,YAAI,SAAS;AAEb,YAAI,EAAE,gBAAgBA,cAAa;AAAE,iBAAO,IAAIA,YAAW,OAAO,OAAO;AAAA,QAAE;AAE3E,aAAK,UAAU,UAAU,UAAUnL,SAAQ,OAAO,IAAI,CAAC;AAEvD,QAAAA,SAAQ2L,WAAU,SAAS,KAAK;AAEhC,YAAI,MAAM,QAAQ;AAClB,YAAI,OAAO,OAAO,UAAU;AAAE,gBAAM,IAAI,IAAI,KAAK,QAAQ,MAAM,MAAM,QAAQ,eAAe,QAAQ,SAAS;AAAA,QAAG,WACvG,QAAQ,MAAM;AAAE,cAAI,aAAa,QAAQ;AAAA,QAAM;AACxD,aAAK,MAAM;AAEX,YAAI,QAAQ,IAAIR,YAAW,YAAY,QAAQ,UAAU,EAAE,IAAI;AAC/D,YAAI,UAAU,KAAK,UAAU,IAAI,QAAQ,OAAO,KAAK,OAAO,OAAO;AACnE,gBAAQ,QAAQ,aAAa;AAC7B,qBAAa,IAAI;AACjB,YAAI,QAAQ,cACV;AAAE,eAAK,QAAQ,QAAQ,aAAa;AAAA,QAAoB;AAC1D,uBAAe,IAAI;AAEnB,aAAK,QAAQ;AAAA,UACX,SAAS,CAAC;AAAA;AAAA,UACV,UAAU,CAAC;AAAA;AAAA,UACX,SAAS;AAAA;AAAA,UACT,WAAW;AAAA,UACX,mBAAmB;AAAA,UACnB,SAAS;AAAA,UACT,eAAe;AAAA;AAAA,UACf,eAAe;AAAA,UAAI,aAAa;AAAA;AAAA,UAChC,eAAe;AAAA,UACf,cAAc;AAAA,UACd,WAAW,IAAI/K,SAAQ;AAAA;AAAA,UACvB,QAAQ;AAAA;AAAA,UACR,cAAc;AAAA,QAChB;AAEA,YAAI,QAAQ,aAAa,CAAC5B,SAAQ;AAAE,kBAAQ,MAAM,MAAM;AAAA,QAAG;AAI3D,YAAIX,OAAMC,cAAa,IAAI;AAAE,qBAAW,WAAY;AAAE,mBAAO,OAAO,QAAQ,MAAM,MAAM,IAAI;AAAA,UAAG,GAAG,EAAE;AAAA,QAAG;AAEvG,8BAAsB,IAAI;AAC1B,6BAAqB;AAErB,uBAAe,IAAI;AACnB,aAAK,MAAM,cAAc;AACzB,kBAAU,MAAM,GAAG;AAEnB,YAAK,QAAQ,aAAa,CAACU,WAAW,KAAK,SAAS,GAClD;AAAE,qBAAW,WAAY;AACvB,gBAAI,OAAO,SAAS,KAAK,CAAC,OAAO,MAAM,SAAS;AAAE,sBAAQ,MAAM;AAAA,YAAG;AAAA,UACrE,GAAG,EAAE;AAAA,QAAG,OAER;AAAE,UAAAgK,QAAO,IAAI;AAAA,QAAG;AAElB,iBAAS,OAAO,gBAAgB;AAAE,cAAI,eAAe,eAAe,GAAG,GACrE;AAAE,2BAAe,GAAG,EAAE,MAAM,QAAQ,GAAG,GAAG,IAAI;AAAA,UAAG;AAAA,QAAE;AACrD,QAAAsB,4BAA2B,IAAI;AAC/B,YAAI,QAAQ,YAAY;AAAE,kBAAQ,WAAW,IAAI;AAAA,QAAG;AACpD,iBAASxK,KAAI,GAAGA,KAAI,UAAU,QAAQ,EAAEA,IAAG;AAAE,oBAAUA,EAAC,EAAE,IAAI;AAAA,QAAG;AACjE,qBAAa,IAAI;AAGjB,YAAIvB,WAAU,QAAQ,gBAClB,iBAAiB,QAAQ,OAAO,EAAE,iBAAiB,sBACrD;AAAE,kBAAQ,QAAQ,MAAM,gBAAgB;AAAA,QAAQ;AAAA,MACpD;AAGA,MAAAoN,YAAW,WAAWQ;AAEtB,MAAAR,YAAW,iBAAiB;AAG5B,eAAS,sBAAsB,IAAI;AACjC,YAAI,IAAI,GAAG;AACX,QAAArJ,IAAG,EAAE,UAAU,aAAa,UAAU,IAAI,WAAW,CAAC;AAEtD,YAAIjE,OAAMC,cAAa,IACrB;AAAE,UAAAgE,IAAG,EAAE,UAAU,YAAY,UAAU,IAAI,SAAU,GAAG;AACtD,gBAAIK,gBAAe,IAAI,CAAC,GAAG;AAAE;AAAA,YAAO;AACpC,gBAAI,MAAM,aAAa,IAAI,CAAC;AAC5B,gBAAI,CAAC,OAAO,cAAc,IAAI,CAAC,KAAK,cAAc,GAAG,SAAS,CAAC,GAAG;AAAE;AAAA,YAAO;AAC3E,6BAAiB,CAAC;AAClB,gBAAI,OAAO,GAAG,WAAW,GAAG;AAC5B,4BAAgB,GAAG,KAAK,KAAK,QAAQ,KAAK,IAAI;AAAA,UAChD,CAAC,CAAC;AAAA,QAAG,OAEL;AAAE,UAAAL,IAAG,EAAE,UAAU,YAAY,SAAU,GAAG;AAAE,mBAAOK,gBAAe,IAAI,CAAC,KAAK,iBAAiB,CAAC;AAAA,UAAG,CAAC;AAAA,QAAG;AAIvG,QAAAL,IAAG,EAAE,UAAU,eAAe,SAAU,GAAG;AAAE,iBAAO,cAAc,IAAI,CAAC;AAAA,QAAG,CAAC;AAC3E,QAAAA,IAAG,EAAE,MAAM,SAAS,GAAG,eAAe,SAAU,GAAG;AACjD,cAAI,CAAC,EAAE,SAAS,SAAS,EAAE,MAAM,GAAG;AAAE,0BAAc,IAAI,CAAC;AAAA,UAAG;AAAA,QAC9D,CAAC;AAGD,YAAI,eAAe,YAAY,EAAC,KAAK,EAAC;AACtC,iBAAS,cAAc;AACrB,cAAI,EAAE,aAAa;AACjB,4BAAgB,WAAW,WAAY;AAAE,qBAAO,EAAE,cAAc;AAAA,YAAM,GAAG,GAAI;AAC7E,wBAAY,EAAE;AACd,sBAAU,MAAM,CAAC,oBAAI;AAAA,UACvB;AAAA,QACF;AACA,iBAAS,sBAAsB,GAAG;AAChC,cAAI,EAAE,QAAQ,UAAU,GAAG;AAAE,mBAAO;AAAA,UAAM;AAC1C,cAAI,QAAQ,EAAE,QAAQ,CAAC;AACvB,iBAAO,MAAM,WAAW,KAAK,MAAM,WAAW;AAAA,QAChD;AACA,iBAAS,QAAQ,OAAO,OAAO;AAC7B,cAAI,MAAM,QAAQ,MAAM;AAAE,mBAAO;AAAA,UAAK;AACtC,cAAI,KAAK,MAAM,OAAO,MAAM,MAAM,KAAK,MAAM,MAAM,MAAM;AACzD,iBAAO,KAAK,KAAK,KAAK,KAAK,KAAK;AAAA,QAClC;AACA,QAAAA,IAAG,EAAE,UAAU,cAAc,SAAU,GAAG;AACxC,cAAI,CAACK,gBAAe,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,GAAG;AAChF,cAAE,MAAM,aAAa;AACrB,yBAAa,aAAa;AAC1B,gBAAIsJ,OAAM,CAAC,oBAAI;AACf,cAAE,cAAc;AAAA,cAAC,OAAOA;AAAA,cAAK,OAAO;AAAA,cACnB,MAAMA,OAAM,UAAU,OAAO,MAAM,YAAY;AAAA,YAAI;AACpE,gBAAI,EAAE,QAAQ,UAAU,GAAG;AACzB,gBAAE,YAAY,OAAO,EAAE,QAAQ,CAAC,EAAE;AAClC,gBAAE,YAAY,MAAM,EAAE,QAAQ,CAAC,EAAE;AAAA,YACnC;AAAA,UACF;AAAA,QACF,CAAC;AACD,QAAA3J,IAAG,EAAE,UAAU,aAAa,WAAY;AACtC,cAAI,EAAE,aAAa;AAAE,cAAE,YAAY,QAAQ;AAAA,UAAM;AAAA,QACnD,CAAC;AACD,QAAAA,IAAG,EAAE,UAAU,YAAY,SAAU,GAAG;AACtC,cAAI,QAAQ,EAAE;AACd,cAAI,SAAS,CAAC,cAAc,GAAG,CAAC,KAAK,MAAM,QAAQ,QAC/C,CAAC,MAAM,SAAS,oBAAI,SAAO,MAAM,QAAQ,KAAK;AAChD,gBAAI,MAAM,GAAG,WAAW,EAAE,aAAa,MAAM,GAAGtC;AAChD,gBAAI,CAAC,MAAM,QAAQ,QAAQ,OAAO,MAAM,IAAI,GAC1C;AAAE,cAAAA,SAAQ,IAAI0K,OAAM,KAAK,GAAG;AAAA,YAAG,WACxB,CAAC,MAAM,KAAK,QAAQ,QAAQ,OAAO,MAAM,KAAK,IAAI,GACzD;AAAE,cAAA1K,SAAQ,GAAG,WAAW,GAAG;AAAA,YAAG,OAE9B;AAAE,cAAAA,SAAQ,IAAI0K,OAAMnG,KAAI,IAAI,MAAM,CAAC,GAAGM,SAAQ,GAAG,KAAKN,KAAI,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;AAAA,YAAG;AAChF,eAAG,aAAavE,OAAM,QAAQA,OAAM,IAAI;AACxC,eAAG,MAAM;AACT,6BAAiB,CAAC;AAAA,UACpB;AACA,sBAAY;AAAA,QACd,CAAC;AACD,QAAAsC,IAAG,EAAE,UAAU,eAAe,WAAW;AAIzC,QAAAA,IAAG,EAAE,UAAU,UAAU,WAAY;AACnC,cAAI,EAAE,SAAS,cAAc;AAC3B,YAAAgH,iBAAgB,IAAI,EAAE,SAAS,SAAS;AACxC,YAAAC,eAAc,IAAI,EAAE,SAAS,YAAY,IAAI;AAC7C,YAAA7G,QAAO,IAAI,UAAU,EAAE;AAAA,UACzB;AAAA,QACF,CAAC;AAGD,QAAAJ,IAAG,EAAE,UAAU,cAAc,SAAU,GAAG;AAAE,iBAAO,cAAc,IAAI,CAAC;AAAA,QAAG,CAAC;AAC1E,QAAAA,IAAG,EAAE,UAAU,kBAAkB,SAAU,GAAG;AAAE,iBAAO,cAAc,IAAI,CAAC;AAAA,QAAG,CAAC;AAG9E,QAAAA,IAAG,EAAE,SAAS,UAAU,WAAY;AAAE,iBAAO,EAAE,QAAQ,YAAY,EAAE,QAAQ,aAAa;AAAA,QAAG,CAAC;AAE9F,UAAE,gBAAgB;AAAA,UAChB,OAAO,SAAU,GAAG;AAAC,gBAAI,CAACK,gBAAe,IAAI,CAAC,GAAG;AAAE,qBAAO,CAAC;AAAA,YAAG;AAAA,UAAC;AAAA,UAC/D,MAAM,SAAU,GAAG;AAAC,gBAAI,CAACA,gBAAe,IAAI,CAAC,GAAG;AAAE,yBAAW,IAAI,CAAC;AAAG,qBAAO,CAAC;AAAA,YAAG;AAAA,UAAC;AAAA,UACjF,OAAO,SAAU,GAAG;AAAE,mBAAO,YAAY,IAAI,CAAC;AAAA,UAAG;AAAA,UACjD,MAAM,UAAU,IAAI,MAAM;AAAA,UAC1B,OAAO,SAAU,GAAG;AAAC,gBAAI,CAACA,gBAAe,IAAI,CAAC,GAAG;AAAE,8BAAgB,EAAE;AAAA,YAAG;AAAA,UAAC;AAAA,QAC3E;AAEA,YAAI,MAAM,EAAE,MAAM,SAAS;AAC3B,QAAAL,IAAG,KAAK,SAAS,SAAU,GAAG;AAAE,iBAAO,QAAQ,KAAK,IAAI,CAAC;AAAA,QAAG,CAAC;AAC7D,QAAAA,IAAG,KAAK,WAAW,UAAU,IAAI,SAAS,CAAC;AAC3C,QAAAA,IAAG,KAAK,YAAY,UAAU,IAAI,UAAU,CAAC;AAC7C,QAAAA,IAAG,KAAK,SAAS,SAAU,GAAG;AAAE,iBAAO,QAAQ,IAAI,CAAC;AAAA,QAAG,CAAC;AACxD,QAAAA,IAAG,KAAK,QAAQ,SAAU,GAAG;AAAE,iBAAO0G,QAAO,IAAI,CAAC;AAAA,QAAG,CAAC;AAAA,MACxD;AAEA,UAAI,YAAY,CAAC;AACjB,MAAA2C,YAAW,iBAAiB,SAAU,GAAG;AAAE,eAAO,UAAU,KAAK,CAAC;AAAA,MAAG;AAOrE,eAAS,WAAW,IAAI,GAAG,KAAK,YAAY;AAC1C,YAAI,MAAM,GAAG,KAAK;AAClB,YAAI,OAAO,MAAM;AAAE,gBAAM;AAAA,QAAO;AAChC,YAAI,OAAO,SAAS;AAGlB,cAAI,CAAC,IAAI,KAAK,QAAQ;AAAE,kBAAM;AAAA,UAAQ,OACjC;AAAE,oBAAQ1G,kBAAiB,IAAI,CAAC,EAAE;AAAA,UAAO;AAAA,QAChD;AAEA,YAAI,UAAU,GAAG,QAAQ;AACzB,YAAI,OAAOnB,SAAQ,KAAK,CAAC,GAAG,WAAWnD,aAAY,KAAK,MAAM,MAAM,OAAO;AAC3E,YAAI,KAAK,YAAY;AAAE,eAAK,aAAa;AAAA,QAAM;AAC/C,YAAI,iBAAiB,KAAK,KAAK,MAAM,MAAM,EAAE,CAAC,GAAG;AACjD,YAAI,CAAC,cAAc,CAAC,KAAK,KAAK,KAAK,IAAI,GAAG;AACxC,wBAAc;AACd,gBAAM;AAAA,QACR,WAAW,OAAO,SAAS;AACzB,wBAAc,IAAI,KAAK,OAAO,OAAO,KAAK,KAAK,MAAM,eAAe,MAAM,GAAG,KAAK,IAAI;AACtF,cAAI,eAAe,QAAQ,cAAc,KAAK;AAC5C,gBAAI,CAAC,YAAY;AAAE;AAAA,YAAO;AAC1B,kBAAM;AAAA,UACR;AAAA,QACF;AACA,YAAI,OAAO,QAAQ;AACjB,cAAI,IAAI,IAAI,OAAO;AAAE,0BAAcA,aAAYmD,SAAQ,KAAK,IAAE,CAAC,EAAE,MAAM,MAAM,OAAO;AAAA,UAAG,OAClF;AAAE,0BAAc;AAAA,UAAG;AAAA,QAC1B,WAAW,OAAO,OAAO;AACvB,wBAAc,WAAW,GAAG,QAAQ;AAAA,QACtC,WAAW,OAAO,YAAY;AAC5B,wBAAc,WAAW,GAAG,QAAQ;AAAA,QACtC,WAAW,OAAO,OAAO,UAAU;AACjC,wBAAc,WAAW;AAAA,QAC3B;AACA,sBAAc,KAAK,IAAI,GAAG,WAAW;AAErC,YAAI,eAAe,IAAI,MAAM;AAC7B,YAAI,GAAG,QAAQ,gBACb;AAAE,mBAAShE,KAAI,KAAK,MAAM,cAAc,OAAO,GAAGA,IAAG,EAAEA,IAAG;AAAC,mBAAO;AAAS,4BAAgB;AAAA,UAAK;AAAA,QAAE;AACpG,YAAI,MAAM,aAAa;AAAE,0BAAgBqB,UAAS,cAAc,GAAG;AAAA,QAAG;AAEtE,YAAI,gBAAgB,gBAAgB;AAClC,uBAAa,KAAK,cAAcoD,KAAI,GAAG,CAAC,GAAGA,KAAI,GAAG,eAAe,MAAM,GAAG,QAAQ;AAClF,eAAK,aAAa;AAClB,iBAAO;AAAA,QACT,OAAO;AAGL,mBAASvC,OAAM,GAAGA,OAAM,IAAI,IAAI,OAAO,QAAQA,QAAO;AACpD,gBAAIhC,SAAQ,IAAI,IAAI,OAAOgC,IAAG;AAC9B,gBAAIhC,OAAM,KAAK,QAAQ,KAAKA,OAAM,KAAK,KAAK,eAAe,QAAQ;AACjE,kBAAI,QAAQuE,KAAI,GAAG,eAAe,MAAM;AACxC,kCAAoB,KAAKvC,MAAK,IAAI0I,OAAM,OAAO,KAAK,CAAC;AACrD;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAKA,UAAI,aAAa;AAEjB,eAAS,cAAc,eAAe;AACpC,qBAAa;AAAA,MACf;AAEA,eAAS,eAAe,IAAI,UAAU,SAAS,KAAKQ,SAAQ;AAC1D,YAAI,MAAM,GAAG;AACb,WAAG,QAAQ,QAAQ;AACnB,YAAI,CAAC,KAAK;AAAE,gBAAM,IAAI;AAAA,QAAK;AAE3B,YAAI,SAAS,CAAC,oBAAI,SAAO;AACzB,YAAI,QAAQA,WAAU,WAAW,GAAG,MAAM,gBAAgB;AAC1D,YAAI,YAAY5H,gBAAe,QAAQ,GAAG,aAAa;AAEvD,YAAI,SAAS,IAAI,OAAO,SAAS,GAAG;AAClC,cAAI,cAAc,WAAW,KAAK,KAAK,IAAI,KAAK,UAAU;AACxD,gBAAI,IAAI,OAAO,SAAS,WAAW,KAAK,UAAU,GAAG;AACnD,2BAAa,CAAC;AACd,uBAASxD,KAAI,GAAGA,KAAI,WAAW,KAAK,QAAQA,MAC1C;AAAE,2BAAW,KAAK,IAAI,WAAW,WAAW,KAAKA,EAAC,CAAC,CAAC;AAAA,cAAG;AAAA,YAC3D;AAAA,UACF,WAAW,UAAU,UAAU,IAAI,OAAO,UAAU,GAAG,QAAQ,wBAAwB;AACrF,yBAAauB,KAAI,WAAW,SAAU,GAAG;AAAE,qBAAO,CAAC,CAAC;AAAA,YAAG,CAAC;AAAA,UAC1D;AAAA,QACF;AAEA,YAAI,cAAc,GAAG,MAAM;AAE3B,iBAASW,OAAM,IAAI,OAAO,SAAS,GAAGA,QAAO,GAAGA,QAAO;AACrD,cAAIhC,SAAQ,IAAI,OAAOgC,IAAG;AAC1B,cAAI,OAAOhC,OAAM,KAAK,GAAG,KAAKA,OAAM,GAAG;AACvC,cAAIA,OAAM,MAAM,GAAG;AACjB,gBAAI,WAAW,UAAU,GACvB;AAAE,qBAAOuE,KAAI,KAAK,MAAM,KAAK,KAAK,OAAO;AAAA,YAAG,WACrC,GAAG,MAAM,aAAa,CAAC,OAC9B;AAAE,mBAAKA,KAAI,GAAG,MAAM,KAAK,IAAIT,SAAQ,KAAK,GAAG,IAAI,EAAE,KAAK,QAAQ,GAAG,KAAK1C,KAAI,SAAS,EAAE,MAAM,CAAC;AAAA,YAAG,WAC1F,SAAS,cAAc,WAAW,YAAY,WAAW,KAAK,KAAK,IAAI,KAAK,UAAU,KAAK,IAAI,GACtG;AAAE,qBAAO,KAAKmD,KAAI,KAAK,MAAM,CAAC;AAAA,YAAG;AAAA,UACrC;AACA,cAAI,cAAc;AAAA,YAAC;AAAA,YAAY;AAAA,YAAQ,MAAM,aAAa,WAAWvC,OAAM,WAAW,MAAM,IAAI;AAAA,YAC7E,QAAQkJ,YAAW,QAAQ,UAAU,GAAG,MAAM,cAAc,SAAS,QAAQ;AAAA,UAAS;AACzG,qBAAW,GAAG,KAAK,WAAW;AAC9B,UAAAxE,aAAY,IAAI,aAAa,IAAI,WAAW;AAAA,QAC9C;AACA,YAAI,YAAY,CAAC,OACf;AAAE,0BAAgB,IAAI,QAAQ;AAAA,QAAG;AAEnC,QAAA+C,qBAAoB,EAAE;AACtB,YAAI,GAAG,MAAM,cAAc,GAAG;AAAE,aAAG,MAAM,cAAc;AAAA,QAAa;AACpE,WAAG,MAAM,SAAS;AAClB,WAAG,MAAM,gBAAgB,GAAG,MAAM,cAAc;AAAA,MAClD;AAEA,eAAS,YAAY,GAAG,IAAI;AAC1B,YAAI,SAAS,EAAE,iBAAiB,EAAE,cAAc,QAAQ,MAAM;AAC9D,YAAI,QAAQ;AACV,YAAE,eAAe;AACjB,cAAI,CAAC,GAAG,WAAW,KAAK,CAAC,GAAG,QAAQ,cAClC;AAAE,YAAAY,SAAQ,IAAI,WAAY;AAAE,qBAAO,eAAe,IAAI,QAAQ,GAAG,MAAM,OAAO;AAAA,YAAG,CAAC;AAAA,UAAG;AACvF,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,eAAS,gBAAgB,IAAI,UAAU;AAErC,YAAI,CAAC,GAAG,QAAQ,iBAAiB,CAAC,GAAG,QAAQ,aAAa;AAAE;AAAA,QAAO;AACnE,YAAI,MAAM,GAAG,IAAI;AAEjB,iBAASvK,KAAI,IAAI,OAAO,SAAS,GAAGA,MAAK,GAAGA,MAAK;AAC/C,cAAIE,SAAQ,IAAI,OAAOF,EAAC;AACxB,cAAIE,OAAM,KAAK,KAAK,OAAQF,MAAK,IAAI,OAAOA,KAAI,CAAC,EAAE,KAAK,QAAQE,OAAM,KAAK,MAAO;AAAE;AAAA,UAAS;AAC7F,cAAI,OAAO,GAAG,UAAUA,OAAM,IAAI;AAClC,cAAI,WAAW;AACf,cAAI,KAAK,eAAe;AACtB,qBAAS,IAAI,GAAG,IAAI,KAAK,cAAc,QAAQ,KAC7C;AAAE,kBAAI,SAAS,QAAQ,KAAK,cAAc,OAAO,CAAC,CAAC,IAAI,IAAI;AACzD,2BAAW,WAAW,IAAIA,OAAM,KAAK,MAAM,OAAO;AAClD;AAAA,cACF;AAAA,YAAE;AAAA,UACN,WAAW,KAAK,eAAe;AAC7B,gBAAI,KAAK,cAAc,KAAK8D,SAAQ,GAAG,KAAK9D,OAAM,KAAK,IAAI,EAAE,KAAK,MAAM,GAAGA,OAAM,KAAK,EAAE,CAAC,GACvF;AAAE,yBAAW,WAAW,IAAIA,OAAM,KAAK,MAAM,OAAO;AAAA,YAAG;AAAA,UAC3D;AACA,cAAI,UAAU;AAAE,YAAA0G,aAAY,IAAI,iBAAiB,IAAI1G,OAAM,KAAK,IAAI;AAAA,UAAG;AAAA,QACzE;AAAA,MACF;AAEA,eAAS,eAAe,IAAI;AAC1B,YAAIgE,QAAO,CAAC,GAAG,SAAS,CAAC;AACzB,iBAASlE,KAAI,GAAGA,KAAI,GAAG,IAAI,IAAI,OAAO,QAAQA,MAAK;AACjD,cAAI,OAAO,GAAG,IAAI,IAAI,OAAOA,EAAC,EAAE,KAAK;AACrC,cAAI,YAAY,EAAC,QAAQyE,KAAI,MAAM,CAAC,GAAG,MAAMA,KAAI,OAAO,GAAG,CAAC,EAAC;AAC7D,iBAAO,KAAK,SAAS;AACrB,UAAAP,MAAK,KAAK,GAAG,SAAS,UAAU,QAAQ,UAAU,IAAI,CAAC;AAAA,QACzD;AACA,eAAO,EAAC,MAAMA,OAAM,OAAc;AAAA,MACpC;AAEA,eAAS,oBAAoB,OAAO,YAAY,aAAa,gBAAgB;AAC3E,cAAM,aAAa,eAAe,cAAc,KAAK,KAAK;AAC1D,cAAM,aAAa,kBAAkB,iBAAiB,KAAK,KAAK;AAChE,cAAM,aAAa,cAAc,CAAC,CAAC,UAAU;AAAA,MAC/C;AAEA,eAAS,iBAAiB;AACxB,YAAI,KAAKpE,KAAI,YAAY,MAAM,MAAM,sFAAsF;AAC3H,YAAIsD,OAAMtD,KAAI,OAAO,CAAC,EAAE,GAAG,MAAM,gEAAgE;AAKjG,YAAIrB,SAAQ;AAAE,aAAG,MAAM,QAAQ;AAAA,QAAU,OACpC;AAAE,aAAG,aAAa,QAAQ,KAAK;AAAA,QAAG;AAEvC,YAAIO,MAAK;AAAE,aAAG,MAAM,SAAS;AAAA,QAAmB;AAChD,4BAAoB,EAAE;AACtB,eAAOoE;AAAA,MACT;AAUA,eAAS,iBAAiByI,aAAY;AACpC,YAAIS,kBAAiBT,YAAW;AAEhC,YAAI,UAAUA,YAAW,UAAU,CAAC;AAEpC,QAAAA,YAAW,YAAY;AAAA,UACrB,aAAaA;AAAA,UACb,OAAO,WAAU;AAAC,mBAAO,MAAM;AAAG,iBAAK,QAAQ,MAAM,MAAM;AAAA,UAAE;AAAA,UAE7D,WAAW,SAAS,QAAQ,OAAO;AACjC,gBAAI,UAAU,KAAK,SAAS,MAAM,QAAQ,MAAM;AAChD,gBAAI,QAAQ,MAAM,KAAK,SAAS,UAAU,QAAQ;AAAE;AAAA,YAAO;AAC3D,oBAAQ,MAAM,IAAI;AAClB,gBAAIS,gBAAe,eAAe,MAAM,GACtC;AAAE,wBAAU,MAAMA,gBAAe,MAAM,CAAC,EAAE,MAAM,OAAO,GAAG;AAAA,YAAG;AAC/D,YAAA1J,QAAO,MAAM,gBAAgB,MAAM,MAAM;AAAA,UAC3C;AAAA,UAEA,WAAW,SAAS,QAAQ;AAAC,mBAAO,KAAK,QAAQ,MAAM;AAAA,UAAC;AAAA,UACxD,QAAQ,WAAW;AAAC,mBAAO,KAAK;AAAA,UAAG;AAAA,UAEnC,WAAW,SAASrB,MAAK,QAAQ;AAC/B,iBAAK,MAAM,QAAQ,SAAS,SAAS,SAAS,EAAE,UAAUA,IAAG,CAAC;AAAA,UAChE;AAAA,UACA,cAAc,SAASA,MAAK;AAC1B,gBAAI,OAAO,KAAK,MAAM;AACtB,qBAASvB,KAAI,GAAGA,KAAI,KAAK,QAAQ,EAAEA,IACjC;AAAE,kBAAI,KAAKA,EAAC,KAAKuB,QAAO,KAAKvB,EAAC,EAAE,QAAQuB,MAAK;AAC3C,qBAAK,OAAOvB,IAAG,CAAC;AAChB,uBAAO;AAAA,cACT;AAAA,YAAE;AAAA,UACN;AAAA,UAEA,YAAY,SAAS,SAAS,MAAM,SAAS;AAC3C,gBAAI,OAAO,KAAK,QAAQ,OAAO6L,YAAW,QAAQ,KAAK,SAAS,IAAI;AACpE,gBAAI,KAAK,YAAY;AAAE,oBAAM,IAAI,MAAM,+BAA+B;AAAA,YAAE;AACxE;AAAA,cAAa,KAAK,MAAM;AAAA,cACX;AAAA,gBAAC;AAAA,gBAAY,UAAU;AAAA,gBAAM,QAAQ,WAAW,QAAQ;AAAA,gBACvD,UAAW,WAAW,QAAQ,YAAa;AAAA,cAAC;AAAA,cAC7C,SAAU,SAAS;AAAE,uBAAO,QAAQ;AAAA,cAAU;AAAA,YAAC;AAC5D,iBAAK,MAAM;AACX,YAAApD,WAAU,IAAI;AAAA,UAChB,CAAC;AAAA,UACD,eAAe,SAAS,SAAS,MAAM;AACrC,gBAAI,WAAW,KAAK,MAAM;AAC1B,qBAASzI,KAAI,GAAGA,KAAI,SAAS,QAAQ,EAAEA,IAAG;AACxC,kBAAI,MAAM,SAASA,EAAC,EAAE;AACtB,kBAAI,OAAO,QAAQ,OAAO,QAAQ,YAAY,IAAI,QAAQ,MAAM;AAC9D,yBAAS,OAAOA,IAAG,CAAC;AACpB,qBAAK,MAAM;AACX,gBAAAyI,WAAU,IAAI;AACd;AAAA,cACF;AAAA,YACF;AAAA,UACF,CAAC;AAAA,UAED,YAAY,SAAS,SAAS,GAAG,KAAK,YAAY;AAChD,gBAAI,OAAO,OAAO,YAAY,OAAO,OAAO,UAAU;AACpD,kBAAI,OAAO,MAAM;AAAE,sBAAM,KAAK,QAAQ,cAAc,UAAU;AAAA,cAAQ,OACjE;AAAE,sBAAM,MAAM,QAAQ;AAAA,cAAY;AAAA,YACzC;AACA,gBAAIlE,QAAO,KAAK,KAAK,CAAC,GAAG;AAAE,yBAAW,MAAM,GAAG,KAAK,UAAU;AAAA,YAAG;AAAA,UACnE,CAAC;AAAA,UACD,iBAAiB,SAAS,SAAS,KAAK;AACtC,gBAAI,SAAS,KAAK,IAAI,IAAI,QAAQ,MAAM;AACxC,qBAASvE,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,kBAAIE,SAAQ,OAAOF,EAAC;AACpB,kBAAI,CAACE,OAAM,MAAM,GAAG;AAClB,oBAAI,OAAOA,OAAM,KAAK,GAAG,KAAKA,OAAM,GAAG;AACvC,oBAAIC,SAAQ,KAAK,IAAI,KAAK,KAAK,IAAI;AACnC,sBAAM,KAAK,IAAI,KAAK,SAAS,GAAG,GAAG,QAAQ,GAAG,KAAK,IAAI,EAAE,IAAI;AAC7D,yBAAS,IAAIA,QAAO,IAAI,KAAK,EAAE,GAC7B;AAAE,6BAAW,MAAM,GAAG,GAAG;AAAA,gBAAG;AAC9B,oBAAI,YAAY,KAAK,IAAI,IAAI;AAC7B,oBAAI,KAAK,MAAM,KAAK,OAAO,UAAU,UAAU,UAAU,UAAUH,EAAC,EAAE,KAAK,EAAE,KAAK,GAChF;AAAE,sCAAoB,KAAK,KAAKA,IAAG,IAAI4K,OAAM,MAAM,UAAU5K,EAAC,EAAE,GAAG,CAAC,GAAGoB,eAAc;AAAA,gBAAG;AAAA,cAC5F,WAAWlB,OAAM,KAAK,OAAO,KAAK;AAChC,2BAAW,MAAMA,OAAM,KAAK,MAAM,KAAK,IAAI;AAC3C,sBAAMA,OAAM,KAAK;AACjB,oBAAIF,MAAK,KAAK,IAAI,IAAI,WAAW;AAAE,kBAAA2J,qBAAoB,IAAI;AAAA,gBAAG;AAAA,cAChE;AAAA,YACF;AAAA,UACF,CAAC;AAAA;AAAA;AAAA,UAID,YAAY,SAAS,KAAK,SAAS;AACjC,mBAAO,UAAU,MAAM,KAAK,OAAO;AAAA,UACrC;AAAA,UAEA,eAAe,SAAS,MAAM,SAAS;AACrC,mBAAO,UAAU,MAAMlF,KAAI,IAAI,GAAG,SAAS,IAAI;AAAA,UACjD;AAAA,UAEA,gBAAgB,SAAS,KAAK;AAC5B,kBAAMM,SAAQ,KAAK,KAAK,GAAG;AAC3B,gBAAI,SAASG,eAAc,MAAMlB,SAAQ,KAAK,KAAK,IAAI,IAAI,CAAC;AAC5D,gBAAI,SAAS,GAAG,SAAS,OAAO,SAAS,KAAK,GAAG,KAAK,IAAI;AAC1D,gBAAI7B;AACJ,gBAAI,MAAM,GAAG;AAAE,cAAAA,QAAO,OAAO,CAAC;AAAA,YAAG,OAC5B;AAAE,yBAAS;AACd,oBAAI,MAAO,SAAS,SAAU;AAC9B,qBAAK,MAAM,OAAO,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI;AAAE,0BAAQ;AAAA,gBAAK,WACjD,OAAO,MAAM,IAAI,CAAC,IAAI,IAAI;AAAE,2BAAS,MAAM;AAAA,gBAAG,OAClD;AAAE,kBAAAA,QAAO,OAAO,MAAM,IAAI,CAAC;AAAG;AAAA,gBAAM;AAAA,cAC3C;AAAA,YAAE;AACF,gBAAI,MAAMA,QAAOA,MAAK,QAAQ,UAAU,IAAI;AAC5C,mBAAO,MAAM,IAAIA,QAAO,OAAO,IAAI,OAAOA,MAAK,MAAM,GAAG,MAAM,CAAC;AAAA,UACjE;AAAA,UAEA,WAAW,SAAS,KAAK;AACvB,gBAAI,OAAO,KAAK,IAAI;AACpB,gBAAI,CAAC,KAAK,WAAW;AAAE,qBAAO;AAAA,YAAK;AACnC,mBAAO0J,YAAW,UAAU,MAAM,KAAK,WAAW,GAAG,EAAE,KAAK,EAAE;AAAA,UAChE;AAAA,UAEA,WAAW,SAAS,KAAK1J,OAAM;AAC7B,mBAAO,KAAK,WAAW,KAAKA,KAAI,EAAE,CAAC;AAAA,UACrC;AAAA,UAEA,YAAY,SAAS,KAAKA,OAAM;AAC9B,gBAAI,QAAQ,CAAC;AACb,gBAAI,CAAC,QAAQ,eAAeA,KAAI,GAAG;AAAE,qBAAO;AAAA,YAAM;AAClD,gBAAI,OAAO,QAAQA,KAAI,GAAG,OAAO,KAAK,UAAU,GAAG;AACnD,gBAAI,OAAO,KAAKA,KAAI,KAAK,UAAU;AACjC,kBAAI,KAAK,KAAKA,KAAI,CAAC,GAAG;AAAE,sBAAM,KAAK,KAAK,KAAKA,KAAI,CAAC,CAAC;AAAA,cAAG;AAAA,YACxD,WAAW,KAAKA,KAAI,GAAG;AACrB,uBAASnC,KAAI,GAAGA,KAAI,KAAKmC,KAAI,EAAE,QAAQnC,MAAK;AAC1C,oBAAI,MAAM,KAAK,KAAKmC,KAAI,EAAEnC,EAAC,CAAC;AAC5B,oBAAI,KAAK;AAAE,wBAAM,KAAK,GAAG;AAAA,gBAAG;AAAA,cAC9B;AAAA,YACF,WAAW,KAAK,cAAc,KAAK,KAAK,UAAU,GAAG;AACnD,oBAAM,KAAK,KAAK,KAAK,UAAU,CAAC;AAAA,YAClC,WAAW,KAAK,KAAK,IAAI,GAAG;AAC1B,oBAAM,KAAK,KAAK,KAAK,IAAI,CAAC;AAAA,YAC5B;AACA,qBAASkC,OAAM,GAAGA,OAAM,KAAK,QAAQ,QAAQA,QAAO;AAClD,kBAAI,MAAM,KAAK,QAAQA,IAAG;AAC1B,kBAAI,IAAI,KAAK,MAAM,IAAI,KAAKjB,SAAQ,OAAO,IAAI,GAAG,KAAK,IACrD;AAAE,sBAAM,KAAK,IAAI,GAAG;AAAA,cAAG;AAAA,YAC3B;AACA,mBAAO;AAAA,UACT;AAAA,UAEA,eAAe,SAAS,MAAM,SAAS;AACrC,gBAAI,MAAM,KAAK;AACf,mBAAO,SAAS,KAAK,QAAQ,OAAO,IAAI,QAAQ,IAAI,OAAO,IAAG,IAAI;AAClE,mBAAOkE,kBAAiB,MAAM,OAAO,GAAG,OAAO,EAAE;AAAA,UACnD;AAAA,UAEA,cAAc,SAAShF,QAAO,MAAM;AAClC,gBAAI,KAAKD,SAAQ,KAAK,IAAI,IAAI,QAAQ;AACtC,gBAAIC,UAAS,MAAM;AAAE,oBAAMD,OAAM;AAAA,YAAM,WAC9B,OAAOC,UAAS,UAAU;AAAE,oBAAM4E,SAAQ,KAAK,KAAK5E,MAAK;AAAA,YAAG,OAChE;AAAE,oBAAMA,SAAQD,OAAM,KAAK,IAAIA,OAAM,GAAG;AAAA,YAAG;AAChD,mBAAO2H,cAAa,MAAM,KAAK,QAAQ,MAAM;AAAA,UAC/C;AAAA,UAEA,YAAY,SAAS,KAAK,MAAM;AAC9B,mBAAOD,YAAW,MAAM7C,SAAQ,KAAK,KAAK,GAAG,GAAG,QAAQ,MAAM;AAAA,UAChE;AAAA,UAEA,YAAY,SAAS,QAAQ,MAAM;AACjC,qBAAS,gBAAgB,MAAM,QAAQ,QAAQ,MAAM;AACrD,mBAAO,WAAW,MAAM,OAAO,MAAM,OAAO,GAAG;AAAA,UACjD;AAAA,UAEA,cAAc,SAAS,QAAQ,MAAM;AACnC,qBAAS,gBAAgB,MAAM,EAAC,KAAK,QAAQ,MAAM,EAAC,GAAG,QAAQ,MAAM,EAAE;AACvE,mBAAOT,cAAa,KAAK,KAAK,SAAS,KAAK,QAAQ,UAAU;AAAA,UAChE;AAAA,UACA,cAAc,SAAS,MAAM,MAAM,gBAAgB;AACjD,gBAAI,MAAM,OAAO;AACjB,gBAAI,OAAO,QAAQ,UAAU;AAC3B,kBAAI,OAAO,KAAK,IAAI,QAAQ,KAAK,IAAI,OAAO;AAC5C,kBAAI,OAAO,KAAK,IAAI,OAAO;AAAE,uBAAO,KAAK,IAAI;AAAA,cAAO,WAC3C,OAAO,MAAM;AAAE,uBAAO;AAAM,sBAAM;AAAA,cAAM;AACjD,wBAAUN,SAAQ,KAAK,KAAK,IAAI;AAAA,YAClC,OAAO;AACL,wBAAU;AAAA,YACZ;AACA,mBAAO,gBAAgB,MAAM,SAAS,EAAC,KAAK,GAAG,MAAM,EAAC,GAAG,QAAQ,QAAQ,kBAAkB,GAAG,EAAE,OAC7F,MAAM,KAAK,IAAI,SAASgC,cAAa,OAAO,IAAI;AAAA,UACrD;AAAA,UAEA,mBAAmB,WAAW;AAAE,mBAAOsC,YAAW,KAAK,OAAO;AAAA,UAAE;AAAA,UAChE,kBAAkB,WAAW;AAAE,mBAAOX,WAAU,KAAK,OAAO;AAAA,UAAE;AAAA,UAE9D,aAAa,WAAW;AAAE,mBAAO,EAAC,MAAM,KAAK,QAAQ,UAAU,IAAI,KAAK,QAAQ,OAAM;AAAA,UAAC;AAAA,UAEvF,WAAW,SAAS,KAAK,MAAM,QAAQ,MAAM,OAAO;AAClD,gBAAI,UAAU,KAAK;AACnB,kBAAME,cAAa,MAAM9C,SAAQ,KAAK,KAAK,GAAG,CAAC;AAC/C,gBAAI,MAAM,IAAI,QAAQ,OAAO,IAAI;AACjC,iBAAK,MAAM,WAAW;AACtB,iBAAK,aAAa,oBAAoB,MAAM;AAC5C,iBAAK,QAAQ,MAAM,cAAc,IAAI;AACrC,oBAAQ,MAAM,YAAY,IAAI;AAC9B,gBAAI,QAAQ,QAAQ;AAClB,oBAAM,IAAI;AAAA,YACZ,WAAW,QAAQ,WAAW,QAAQ,QAAQ;AAC5C,kBAAI,SAAS,KAAK,IAAI,QAAQ,QAAQ,cAAc,KAAK,IAAI,MAAM,GACnE,SAAS,KAAK,IAAI,QAAQ,MAAM,aAAa,QAAQ,UAAU,WAAW;AAE1E,mBAAK,QAAQ,WAAW,IAAI,SAAS,KAAK,eAAe,WAAW,IAAI,MAAM,KAAK,cACjF;AAAE,sBAAM,IAAI,MAAM,KAAK;AAAA,cAAc,WAC9B,IAAI,SAAS,KAAK,gBAAgB,QACzC;AAAE,sBAAM,IAAI;AAAA,cAAQ;AACtB,kBAAI,OAAO,KAAK,cAAc,QAC5B;AAAE,uBAAO,SAAS,KAAK;AAAA,cAAa;AAAA,YACxC;AACA,iBAAK,MAAM,MAAM,MAAM;AACvB,iBAAK,MAAM,OAAO,KAAK,MAAM,QAAQ;AACrC,gBAAI,SAAS,SAAS;AACpB,qBAAO,QAAQ,MAAM,cAAc,KAAK;AACxC,mBAAK,MAAM,QAAQ;AAAA,YACrB,OAAO;AACL,kBAAI,SAAS,QAAQ;AAAE,uBAAO;AAAA,cAAG,WACxB,SAAS,UAAU;AAAE,wBAAQ,QAAQ,MAAM,cAAc,KAAK,eAAe;AAAA,cAAG;AACzF,mBAAK,MAAM,OAAO,OAAO;AAAA,YAC3B;AACA,gBAAI,QACF;AAAE,6BAAe,MAAM,EAAC,MAAY,KAAU,OAAO,OAAO,KAAK,aAAa,QAAQ,MAAM,KAAK,aAAY,CAAC;AAAA,YAAG;AAAA,UACrH;AAAA,UAEA,kBAAkB,SAAS,SAAS;AAAA,UACpC,mBAAmB,SAAS,UAAU;AAAA,UACtC,gBAAgB;AAAA,UAChB,oBAAoB,SAAS,WAAW;AAAA,UAExC,aAAa,SAAS,KAAK;AACzB,gBAAI,SAAS,eAAe,GAAG,GAC7B;AAAE,qBAAO,SAAS,GAAG,EAAE,KAAK,MAAM,IAAI;AAAA,YAAE;AAAA,UAC5C;AAAA,UAEA,iBAAiB,SAAS,SAASb,OAAM;AAAE,4BAAgB,MAAMA,KAAI;AAAA,UAAG,CAAC;AAAA,UAEzE,UAAU,SAAS,MAAM,QAAQ,MAAM,UAAU;AAC/C,gBAAI,MAAM;AACV,gBAAI,SAAS,GAAG;AAAE,oBAAM;AAAI,uBAAS,CAAC;AAAA,YAAQ;AAC9C,gBAAI,MAAMa,SAAQ,KAAK,KAAK,IAAI;AAChC,qBAAS/E,KAAI,GAAGA,KAAI,QAAQ,EAAEA,IAAG;AAC/B,oBAAM,SAAS,KAAK,KAAK,KAAK,KAAK,MAAM,QAAQ;AACjD,kBAAI,IAAI,SAAS;AAAE;AAAA,cAAM;AAAA,YAC3B;AACA,mBAAO;AAAA,UACT;AAAA,UAEA,OAAO,SAAS,SAAS,KAAK,MAAM;AAClC,gBAAI,SAAS;AAEb,iBAAK,mBAAmB,SAAUE,QAAO;AACvC,kBAAI,OAAO,QAAQ,SAAS,OAAO,IAAI,UAAUA,OAAM,MAAM,GAC3D;AAAE,uBAAO,SAAS,OAAO,KAAKA,OAAM,MAAM,KAAK,MAAM,OAAO,QAAQ,eAAe;AAAA,cAAE,OAErF;AAAE,uBAAO,MAAM,IAAIA,OAAM,KAAK,IAAIA,OAAM,GAAG;AAAA,cAAE;AAAA,YACjD,GAAG,QAAQ;AAAA,UACb,CAAC;AAAA,UAED,SAAS,SAAS,SAAS,KAAK,MAAM;AACpC,gBAAI,MAAM,KAAK,IAAI,KAAK,MAAM,KAAK;AACnC,gBAAI,IAAI,kBAAkB,GACxB;AAAE,kBAAI,iBAAiB,IAAI,MAAM,SAAS;AAAA,YAAG,OAE7C;AAAE,kCAAoB,MAAM,SAAUA,QAAO;AAC3C,oBAAI,QAAQ,SAAS,KAAKA,OAAM,MAAM,KAAK,MAAM,KAAK;AACtD,uBAAO,MAAM,IAAI,EAAC,MAAM,OAAO,IAAIA,OAAM,KAAI,IAAI,EAAC,MAAMA,OAAM,MAAM,IAAI,MAAK;AAAA,cAC/E,CAAC;AAAA,YAAG;AAAA,UACR,CAAC;AAAA,UAED,UAAU,SAAS,MAAM,QAAQ,MAAM,YAAY;AACjD,gBAAI,MAAM,GAAG,IAAI;AACjB,gBAAI,SAAS,GAAG;AAAE,oBAAM;AAAI,uBAAS,CAAC;AAAA,YAAQ;AAC9C,gBAAI,MAAM6E,SAAQ,KAAK,KAAK,IAAI;AAChC,qBAAS/E,KAAI,GAAGA,KAAI,QAAQ,EAAEA,IAAG;AAC/B,kBAAI,SAAS6H,cAAa,MAAM,KAAK,KAAK;AAC1C,kBAAI,KAAK,MAAM;AAAE,oBAAI,OAAO;AAAA,cAAM,OAC7B;AAAE,uBAAO,OAAO;AAAA,cAAG;AACxB,oBAAM,SAAS,MAAM,QAAQ,KAAK,IAAI;AACtC,kBAAI,IAAI,SAAS;AAAE;AAAA,cAAM;AAAA,YAC3B;AACA,mBAAO;AAAA,UACT;AAAA,UAEA,OAAO,SAAS,SAAS,KAAK,MAAM;AAClC,gBAAI,SAAS;AAEb,gBAAI,MAAM,KAAK,KAAK,QAAQ,CAAC;AAC7B,gBAAI,WAAW,CAAC,KAAK,QAAQ,SAAS,CAAC,IAAI,UAAU,IAAI,IAAI,kBAAkB;AAC/E,gBAAI,mBAAmB,SAAU3H,QAAO;AACtC,kBAAI,UACF;AAAE,uBAAO,MAAM,IAAIA,OAAM,KAAK,IAAIA,OAAM,GAAG;AAAA,cAAE;AAC/C,kBAAI,UAAU2H,cAAa,QAAQ3H,OAAM,MAAM,KAAK;AACpD,kBAAIA,OAAM,cAAc,MAAM;AAAE,wBAAQ,OAAOA,OAAM;AAAA,cAAY;AACjE,oBAAM,KAAK,QAAQ,IAAI;AACvB,kBAAI,MAAM,SAAS,QAAQ,SAAS,KAAK,IAAI;AAC7C,kBAAI,QAAQ,UAAUA,UAAS,IAAI,IAAI,QAAQ,GAC7C;AAAE,+BAAe,QAAQ0H,YAAW,QAAQ,KAAK,KAAK,EAAE,MAAM,QAAQ,GAAG;AAAA,cAAG;AAC9E,qBAAO;AAAA,YACT,GAAG,QAAQ;AACX,gBAAI,MAAM,QAAQ;AAAE,uBAAS5H,KAAI,GAAGA,KAAI,IAAI,IAAI,OAAO,QAAQA,MAC7D;AAAE,oBAAI,IAAI,OAAOA,EAAC,EAAE,aAAa,MAAMA,EAAC;AAAA,cAAG;AAAA,YAAE;AAAA,UACjD,CAAC;AAAA;AAAA,UAGD,YAAY,SAAS,KAAK;AACxB,gBAAI,MAAM,KAAK,KAAK,OAAOgE,SAAQ,KAAK,IAAI,IAAI,EAAE;AAClD,gBAAI7D,SAAQ,IAAI,IAAI,MAAM,IAAI;AAC9B,gBAAI,MAAM;AACR,kBAAI,SAAS,KAAK,UAAU,KAAK,WAAW;AAC5C,mBAAK,IAAI,UAAU,YAAY,OAAO,KAAK,WAAWA,QAAO;AAAE,kBAAEA;AAAA,cAAO,OAAO;AAAE,kBAAE;AAAA,cAAK;AACxF,kBAAI,YAAY,KAAK,OAAOA,MAAK;AACjC,kBAAI,QAAQ,WAAW,WAAW,MAAM,IACpC,SAAU,IAAI;AAAE,uBAAO,WAAW,IAAI,MAAM;AAAA,cAAG,IAC/C,KAAK,KAAK,SAAS,IAAI,SAAU,IAAI;AAAE,uBAAO,KAAK,KAAK,EAAE;AAAA,cAAG,IAC7D,SAAU,IAAI;AAAE,uBAAQ,CAAC,KAAK,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE;AAAA,cAAI;AAChE,qBAAOA,SAAQ,KAAK,MAAM,KAAK,OAAOA,SAAQ,CAAC,CAAC,GAAG;AAAE,kBAAEA;AAAA,cAAO;AAC9D,qBAAO,MAAM,KAAK,UAAU,MAAM,KAAK,OAAO,GAAG,CAAC,GAAG;AAAE,kBAAE;AAAA,cAAK;AAAA,YAChE;AACA,mBAAO,IAAIyK,OAAMnG,KAAI,IAAI,MAAMtE,MAAK,GAAGsE,KAAI,IAAI,MAAM,GAAG,CAAC;AAAA,UAC3D;AAAA,UAEA,iBAAiB,SAAS,OAAO;AAC/B,gBAAI,SAAS,QAAQ,SAAS,KAAK,MAAM,WAAW;AAAE;AAAA,YAAO;AAC7D,gBAAI,KAAK,MAAM,YAAY,CAAC,KAAK,MAAM,WACrC;AAAE,cAAAnE,UAAS,KAAK,QAAQ,WAAW,sBAAsB;AAAA,YAAG,OAE5D;AAAE,cAAAZ,SAAQ,KAAK,QAAQ,WAAW,sBAAsB;AAAA,YAAG;AAE7D,YAAAkD,QAAO,MAAM,mBAAmB,MAAM,KAAK,MAAM,SAAS;AAAA,UAC5D;AAAA,UACA,UAAU,WAAW;AAAE,mBAAO,KAAK,QAAQ,MAAM,SAAS,KAAKvC,WAAU;AAAA,UAAE;AAAA,UAC3E,YAAY,WAAW;AAAE,mBAAO,CAAC,EAAE,KAAK,QAAQ,YAAY,KAAK,IAAI;AAAA,UAAU;AAAA,UAE/E,UAAU,SAAS,SAAU,GAAG,GAAG;AAAE,2BAAe,MAAM,GAAG,CAAC;AAAA,UAAG,CAAC;AAAA,UAClE,eAAe,WAAW;AACxB,gBAAI,WAAW,KAAK,QAAQ;AAC5B,mBAAO;AAAA,cAAC,MAAM,SAAS;AAAA,cAAY,KAAK,SAAS;AAAA,cACzC,QAAQ,SAAS,eAAegH,WAAU,IAAI,IAAI,KAAK,QAAQ;AAAA,cAC/D,OAAO,SAAS,cAAcA,WAAU,IAAI,IAAI,KAAK,QAAQ;AAAA,cAC7D,cAAcE,eAAc,IAAI;AAAA,cAAG,aAAaD,cAAa,IAAI;AAAA,YAAC;AAAA,UAC5E;AAAA,UAEA,gBAAgB,SAAS,SAASpH,QAAO,QAAQ;AAC/C,gBAAIA,UAAS,MAAM;AACjB,cAAAA,SAAQ,EAAC,MAAM,KAAK,IAAI,IAAI,QAAQ,EAAE,MAAM,IAAI,KAAI;AACpD,kBAAI,UAAU,MAAM;AAAE,yBAAS,KAAK,QAAQ;AAAA,cAAoB;AAAA,YAClE,WAAW,OAAOA,UAAS,UAAU;AACnC,cAAAA,SAAQ,EAAC,MAAMuE,KAAIvE,QAAO,CAAC,GAAG,IAAI,KAAI;AAAA,YACxC,WAAWA,OAAM,QAAQ,MAAM;AAC7B,cAAAA,SAAQ,EAAC,MAAMA,QAAO,IAAI,KAAI;AAAA,YAChC;AACA,gBAAI,CAACA,OAAM,IAAI;AAAE,cAAAA,OAAM,KAAKA,OAAM;AAAA,YAAM;AACxC,YAAAA,OAAM,SAAS,UAAU;AAEzB,gBAAIA,OAAM,KAAK,QAAQ,MAAM;AAC3B,4BAAc,MAAMA,MAAK;AAAA,YAC3B,OAAO;AACL,kCAAoB,MAAMA,OAAM,MAAMA,OAAM,IAAIA,OAAM,MAAM;AAAA,YAC9D;AAAA,UACF,CAAC;AAAA,UAED,SAAS,SAAS,SAAS,OAAO,QAAQ;AACxC,gBAAI,SAAS;AAEb,gBAAI,YAAY,SAAU,KAAK;AAAE,qBAAO,OAAO,OAAO,YAAY,QAAQ,KAAK,OAAO,GAAG,CAAC,IAAI,MAAM,OAAO;AAAA,YAAK;AAChH,gBAAI,SAAS,MAAM;AAAE,mBAAK,QAAQ,QAAQ,MAAM,QAAQ,UAAU,KAAK;AAAA,YAAG;AAC1E,gBAAI,UAAU,MAAM;AAAE,mBAAK,QAAQ,QAAQ,MAAM,SAAS,UAAU,MAAM;AAAA,YAAG;AAC7E,gBAAI,KAAK,QAAQ,cAAc;AAAE,wCAA0B,IAAI;AAAA,YAAG;AAClE,gBAAIkE,UAAS,KAAK,QAAQ;AAC1B,iBAAK,IAAI,KAAKA,SAAQ,KAAK,QAAQ,QAAQ,SAAU,MAAM;AACzD,kBAAI,KAAK,SAAS;AAAE,yBAASpE,KAAI,GAAGA,KAAI,KAAK,QAAQ,QAAQA,MAC3D;AAAE,sBAAI,KAAK,QAAQA,EAAC,EAAE,WAAW;AAAE,oBAAA2I,eAAc,QAAQvE,SAAQ,QAAQ;AAAG;AAAA,kBAAM;AAAA,gBAAE;AAAA,cAAE;AACxF,gBAAEA;AAAA,YACJ,CAAC;AACD,iBAAK,MAAM,cAAc;AACzB,YAAAxB,QAAO,MAAM,WAAW,IAAI;AAAA,UAC9B,CAAC;AAAA,UAED,WAAW,SAAS,GAAE;AAAC,mBAAO2H,SAAQ,MAAM,CAAC;AAAA,UAAC;AAAA,UAC9C,gBAAgB,WAAU;AAAC,mBAAO,eAAe,IAAI;AAAA,UAAC;AAAA,UACtD,cAAc,WAAU;AAAC,mBAAO,aAAa,IAAI;AAAA,UAAC;AAAA,UAElD,SAAS,SAAS,WAAW;AAC3B,gBAAI,YAAY,KAAK,QAAQ;AAC7B,YAAA9B,WAAU,IAAI;AACd,iBAAK,MAAM,cAAc;AACzB,wBAAY,IAAI;AAChB,2BAAe,MAAM,KAAK,IAAI,YAAY,KAAK,IAAI,SAAS;AAC5D,YAAAiC,mBAAkB,KAAK,OAAO;AAC9B,gBAAI,aAAa,QAAQ,KAAK,IAAI,YAAYpC,YAAW,KAAK,OAAO,CAAC,IAAI,OAAM,KAAK,QAAQ,cAC3F;AAAE,cAAAE,qBAAoB,IAAI;AAAA,YAAG;AAC/B,YAAA5F,QAAO,MAAM,WAAW,IAAI;AAAA,UAC9B,CAAC;AAAA,UAED,SAAS,SAAS,SAAS,KAAK;AAC9B,gBAAI,MAAM,KAAK;AACf,gBAAI,KAAK;AAET,gBAAI,KAAK,MAAM,eAAe;AAAE,mBAAK,MAAM,cAAc;AAAA,YAAG;AAC5D,sBAAU,MAAM,GAAG;AACnB,wBAAY,IAAI;AAChB,iBAAK,QAAQ,MAAM,MAAM;AACzB,2BAAe,MAAM,IAAI,YAAY,IAAI,SAAS;AAClD,iBAAK,MAAM,cAAc;AACzB,YAAAgE,aAAY,MAAM,WAAW,MAAM,GAAG;AACtC,mBAAO;AAAA,UACT,CAAC;AAAA,UAED,QAAQ,SAAS,YAAY;AAC3B,gBAAI,UAAU,KAAK,QAAQ;AAC3B,mBAAO,WAAW,OAAO,UAAU,eAAe,KAAK,SAAS,UAAU,IAAI,QAAQ,UAAU,IAAI;AAAA,UACtG;AAAA,UAEA,eAAe,WAAU;AAAC,mBAAO,KAAK,QAAQ,MAAM,SAAS;AAAA,UAAC;AAAA,UAC9D,mBAAmB,WAAU;AAAC,mBAAO,KAAK,QAAQ;AAAA,UAAO;AAAA,UACzD,oBAAoB,WAAU;AAAC,mBAAO,KAAK,QAAQ;AAAA,UAAQ;AAAA,UAC3D,kBAAkB,WAAU;AAAC,mBAAO,KAAK,QAAQ;AAAA,UAAO;AAAA,QAC1D;AACA,QAAA3D,YAAW4I,WAAU;AAErB,QAAAA,YAAW,iBAAiB,SAAS1J,OAAM,MAAM,OAAO;AACtD,cAAI,CAAC,QAAQ,eAAeA,KAAI,GAAG;AAAE,oBAAQA,KAAI,IAAI0J,YAAW1J,KAAI,IAAI,EAAC,SAAS,CAAC,EAAC;AAAA,UAAG;AACvF,kBAAQA,KAAI,EAAE,IAAI,IAAI;AAAA,QACxB;AACA,QAAA0J,YAAW,uBAAuB,SAAS1J,OAAM,MAAM,WAAW,OAAO;AACvE,UAAA0J,YAAW,eAAe1J,OAAM,MAAM,KAAK;AAC3C,kBAAQA,KAAI,EAAE,QAAQ,KAAK,EAAC,MAAM,WAAW,KAAK,MAAK,CAAC;AAAA,QAC1D;AAAA,MACF;AAWA,eAAS,SAAS,KAAK,KAAK,KAAK,MAAM,UAAU;AAC/C,YAAI,SAAS;AACb,YAAI,UAAU;AACd,YAAI,UAAU6B,SAAQ,KAAK,IAAI,IAAI;AACnC,YAAI,UAAU,YAAY,IAAI,aAAa,QAAQ,CAAC,MAAM;AAC1D,iBAAS,eAAe;AACtB,cAAI,IAAI,IAAI,OAAO;AACnB,cAAI,IAAI,IAAI,SAAS,KAAK,IAAI,QAAQ,IAAI,MAAM;AAAE,mBAAO;AAAA,UAAM;AAC/D,gBAAM,IAAIS,KAAI,GAAG,IAAI,IAAI,IAAI,MAAM;AACnC,iBAAO,UAAUT,SAAQ,KAAK,CAAC;AAAA,QACjC;AACA,iBAAS,SAAS,aAAa;AAC7B,cAAI+C;AACJ,cAAI,QAAQ,aAAa;AACvB,gBAAI,KAAK,QAAQ,KAAK,WAAW,IAAI,MAAM,OAAO,IAAI,IAAI,GAAG;AAC7D,gBAAI,MAAM,EAAE,GAAG;AAAE,cAAAA,QAAO;AAAA,YAAM,OACzB;AAAE,cAAAA,QAAO,IAAItC;AAAA,gBAAI,IAAI;AAAA,gBAAM,KAAK,IAAI,GAAG,KAAK,IAAI,QAAQ,KAAK,QAAQ,IAAI,KAAK,OAAO,MAAM,SAAU,KAAK,QAAS,IAAI,EAAE,CAAC;AAAA,gBAC3G,CAAC;AAAA,cAAG;AAAA,YAAG;AAAA,UAC7B,WAAW,UAAU;AACnB,YAAAsC,QAAO,aAAa,IAAI,IAAI,SAAS,KAAK,GAAG;AAAA,UAC/C,OAAO;AACL,YAAAA,QAAO,cAAc,SAAS,KAAK,GAAG;AAAA,UACxC;AACA,cAAIA,SAAQ,MAAM;AAChB,gBAAI,CAAC,eAAe,aAAa,GAC/B;AAAE,oBAAM,UAAU,UAAU,IAAI,IAAI,SAAS,IAAI,MAAM,OAAO;AAAA,YAAG,OAEjE;AAAE,qBAAO;AAAA,YAAM;AAAA,UACnB,OAAO;AACL,kBAAMA;AAAA,UACR;AACA,iBAAO;AAAA,QACT;AAEA,YAAI,QAAQ,UAAU,QAAQ,aAAa;AACzC,mBAAS;AAAA,QACX,WAAW,QAAQ,UAAU;AAC3B,mBAAS,IAAI;AAAA,QACf,WAAW,QAAQ,UAAU,QAAQ,SAAS;AAC5C,cAAI,UAAU,MAAM,QAAQ,QAAQ;AACpC,cAAI,SAAS,IAAI,MAAM,IAAI,GAAG,UAAU,KAAK,WAAW;AACxD,mBAAS,QAAQ,QAAO,QAAQ,OAAO;AACrC,gBAAI,MAAM,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG;AAAE;AAAA,YAAM;AAC1C,gBAAI,MAAM,QAAQ,KAAK,OAAO,IAAI,EAAE,KAAK;AACzC,gBAAI5E,QAAO,WAAW,KAAK,MAAM,IAAI,MACjC,SAAS,OAAO,OAAO,MACvB,CAAC,SAAS,KAAK,KAAK,GAAG,IAAI,OAC3B;AACJ,gBAAI,SAAS,CAAC,SAAS,CAACA,OAAM;AAAE,cAAAA,QAAO;AAAA,YAAK;AAC5C,gBAAI,WAAW,WAAWA,OAAM;AAC9B,kBAAI,MAAM,GAAG;AAAC,sBAAM;AAAG,yBAAS;AAAG,oBAAI,SAAS;AAAA,cAAQ;AACxD;AAAA,YACF;AAEA,gBAAIA,OAAM;AAAE,wBAAUA;AAAA,YAAM;AAC5B,gBAAI,MAAM,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG;AAAE;AAAA,YAAM;AAAA,UAC5C;AAAA,QACF;AACA,YAAI,SAAS,WAAW,KAAK,KAAK,QAAQ,SAAS,IAAI;AACvD,YAAIwC,gBAAe,QAAQ,MAAM,GAAG;AAAE,iBAAO,UAAU;AAAA,QAAM;AAC7D,eAAO;AAAA,MACT;AAKA,eAAS,SAAS,IAAI,KAAK,KAAK,MAAM;AACpC,YAAI,MAAM,GAAG,KAAK,IAAI,IAAI,MAAM;AAChC,YAAI,QAAQ,QAAQ;AAClB,cAAI,WAAW,KAAK,IAAI,GAAG,QAAQ,QAAQ,cAAc,OAAO,eAAe,SAAS,gBAAgB,YAAY;AACpH,cAAI,aAAa,KAAK,IAAI,WAAW,MAAK2D,YAAW,GAAG,OAAO,GAAG,CAAC;AACnE,eAAK,MAAM,IAAI,IAAI,SAAS,IAAI,OAAO,MAAM;AAAA,QAE/C,WAAW,QAAQ,QAAQ;AACzB,cAAI,MAAM,IAAI,IAAI,SAAS,IAAI,IAAI,MAAM;AAAA,QAC3C;AACA,YAAI3H;AACJ,mBAAS;AACP,UAAAA,UAAS,WAAW,IAAI,GAAG,CAAC;AAC5B,cAAI,CAACA,QAAO,SAAS;AAAE;AAAA,UAAM;AAC7B,cAAI,MAAM,IAAI,KAAK,IAAI,KAAK,IAAI,QAAQ;AAAE,YAAAA,QAAO,UAAU;AAAM;AAAA,UAAM;AACvE,eAAK,MAAM;AAAA,QACb;AACA,eAAOA;AAAA,MACT;AAIA,UAAI,uBAAuB,SAAS,IAAI;AACtC,aAAK,KAAK;AACV,aAAK,iBAAiB,KAAK,mBAAmB,KAAK,gBAAgB,KAAK,kBAAkB;AAC1F,aAAK,UAAU,IAAIG,SAAQ;AAC3B,aAAK,YAAY;AACjB,aAAK,cAAc;AACnB,aAAK,iBAAiB;AAAA,MACxB;AAEA,2BAAqB,UAAU,OAAO,SAAU,SAAS;AACrD,YAAI,SAAS;AAEf,YAAI,QAAQ,MAAM,KAAK,MAAM;AAC7B,YAAIsC,OAAM,MAAM,MAAM,QAAQ;AAC9B,4BAAoBA,MAAK,GAAG,QAAQ,YAAY,GAAG,QAAQ,aAAa,GAAG,QAAQ,cAAc;AAEjG,iBAAS,eAAe,GAAG;AACzB,mBAAS,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,YAAY;AAC1C,gBAAI,KAAKA,MAAK;AAAE,qBAAO;AAAA,YAAK;AAC5B,gBAAI,iCAAiC,KAAK,EAAE,SAAS,GAAG;AAAE;AAAA,YAAM;AAAA,UAClE;AACA,iBAAO;AAAA,QACT;AAEA,QAAAZ,IAAGY,MAAK,SAAS,SAAU,GAAG;AAC5B,cAAI,CAAC,eAAe,CAAC,KAAKP,gBAAe,IAAI,CAAC,KAAK,YAAY,GAAG,EAAE,GAAG;AAAE;AAAA,UAAO;AAEhF,cAAIrE,eAAc,IAAI;AAAE,uBAAW,UAAU,IAAI,WAAY;AAAE,qBAAO,OAAO,cAAc;AAAA,YAAG,CAAC,GAAG,EAAE;AAAA,UAAG;AAAA,QACzG,CAAC;AAED,QAAAgE,IAAGY,MAAK,oBAAoB,SAAU,GAAG;AACvC,iBAAO,YAAY,EAAC,MAAM,EAAE,MAAM,MAAM,MAAK;AAAA,QAC/C,CAAC;AACD,QAAAZ,IAAGY,MAAK,qBAAqB,SAAU,GAAG;AACxC,cAAI,CAAC,OAAO,WAAW;AAAE,mBAAO,YAAY,EAAC,MAAM,EAAE,MAAM,MAAM,MAAK;AAAA,UAAG;AAAA,QAC3E,CAAC;AACD,QAAAZ,IAAGY,MAAK,kBAAkB,SAAU,GAAG;AACrC,cAAI,OAAO,WAAW;AACpB,gBAAI,EAAE,QAAQ,OAAO,UAAU,MAAM;AAAE,qBAAO,gBAAgB;AAAA,YAAG;AACjE,mBAAO,UAAU,OAAO;AAAA,UAC1B;AAAA,QACF,CAAC;AAED,QAAAZ,IAAGY,MAAK,cAAc,WAAY;AAAE,iBAAO,MAAM,oBAAoB;AAAA,QAAG,CAAC;AAEzE,QAAAZ,IAAGY,MAAK,SAAS,WAAY;AAC3B,cAAI,CAAC,OAAO,WAAW;AAAE,mBAAO,gBAAgB;AAAA,UAAG;AAAA,QACrD,CAAC;AAED,iBAAS,UAAU,GAAG;AACpB,cAAI,CAAC,eAAe,CAAC,KAAKP,gBAAe,IAAI,CAAC,GAAG;AAAE;AAAA,UAAO;AAC1D,cAAI,GAAG,kBAAkB,GAAG;AAC1B,0BAAc,EAAC,UAAU,OAAO,MAAM,GAAG,cAAc,EAAC,CAAC;AACzD,gBAAI,EAAE,QAAQ,OAAO;AAAE,iBAAG,iBAAiB,IAAI,MAAM,KAAK;AAAA,YAAG;AAAA,UAC/D,WAAW,CAAC,GAAG,QAAQ,iBAAiB;AACtC;AAAA,UACF,OAAO;AACL,gBAAI,SAAS,eAAe,EAAE;AAC9B,0BAAc,EAAC,UAAU,MAAM,MAAM,OAAO,KAAI,CAAC;AACjD,gBAAI,EAAE,QAAQ,OAAO;AACnB,iBAAG,UAAU,WAAY;AACvB,mBAAG,cAAc,OAAO,QAAQ,GAAGzB,eAAc;AACjD,mBAAG,iBAAiB,IAAI,MAAM,KAAK;AAAA,cACrC,CAAC;AAAA,YACH;AAAA,UACF;AACA,cAAI,EAAE,eAAe;AACnB,cAAE,cAAc,UAAU;AAC1B,gBAAI,UAAU,WAAW,KAAK,KAAK,IAAI;AAEvC,cAAE,cAAc,QAAQ,QAAQ,OAAO;AACvC,gBAAI,EAAE,cAAc,QAAQ,MAAM,KAAK,SAAS;AAC9C,gBAAE,eAAe;AACjB;AAAA,YACF;AAAA,UACF;AAEA,cAAI,SAAS,eAAe,GAAG,KAAK,OAAO;AAC3C,aAAG,QAAQ,UAAU,aAAa,QAAQ,GAAG,QAAQ,UAAU,UAAU;AACzE,aAAG,QAAQ,WAAW,KAAK,KAAK,IAAI;AACpC,cAAI,WAAW,SAAS;AACxB,UAAAZ,aAAY,EAAE;AACd,qBAAW,WAAY;AACrB,eAAG,QAAQ,UAAU,YAAY,MAAM;AACvC,qBAAS,MAAM;AACf,gBAAI,YAAY4C,MAAK;AAAE,oBAAM,qBAAqB;AAAA,YAAG;AAAA,UACvD,GAAG,EAAE;AAAA,QACP;AACA,QAAAZ,IAAGY,MAAK,QAAQ,SAAS;AACzB,QAAAZ,IAAGY,MAAK,OAAO,SAAS;AAAA,MAC1B;AAEA,2BAAqB,UAAU,2BAA2B,SAAU,OAAO;AAEzE,YAAG,OAAO;AACR,eAAK,IAAI,aAAa,cAAc,KAAK;AAAA,QAC3C,OAAO;AACL,eAAK,IAAI,gBAAgB,YAAY;AAAA,QACvC;AAAA,MACF;AAEA,2BAAqB,UAAU,mBAAmB,WAAY;AAC5D,YAAI,SAAS,iBAAiB,KAAK,IAAI,KAAK;AAC5C,eAAO,QAAQ,SAAS,iBAAiB,KAAK;AAC9C,eAAO;AAAA,MACT;AAEA,2BAAqB,UAAU,gBAAgB,SAAU,MAAM,WAAW;AACxE,YAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,QAAQ,KAAK,QAAQ;AAAE;AAAA,QAAO;AACpD,YAAI,KAAK,SAAS,WAAW;AAAE,eAAK,qBAAqB;AAAA,QAAG;AAC5D,aAAK,uBAAuB,IAAI;AAAA,MAClC;AAEA,2BAAqB,UAAU,eAAe,WAAY;AACxD,eAAO,KAAK,GAAG,QAAQ,QAAQ,cAAc,aAAa;AAAA,MAC5D;AAEA,2BAAqB,UAAU,uBAAuB,WAAY;AAChE,YAAI,MAAM,KAAK,aAAa,GAAG,KAAK,KAAK,IAAI,OAAO,GAAG,IAAI,IAAI,QAAQ;AACvE,YAAI,OAAO,KAAK,KAAK,GAAG,KAAK,KAAK,GAAG;AAErC,YAAI,GAAG,QAAQ,UAAU,GAAG,QAAQ,YAAY,KAAK,QAAQ,GAAG,QAAQ,UAAU,GAAG,OAAO,GAAG,QAAQ,UAAU;AAC/G,cAAI,gBAAgB;AACpB;AAAA,QACF;AAEA,YAAI,YAAY,SAAS,IAAI,IAAI,YAAY,IAAI,YAAY;AAC7D,YAAI,WAAW,SAAS,IAAI,IAAI,WAAW,IAAI,WAAW;AAC1D,YAAI,aAAa,CAAC,UAAU,OAAO,YAAY,CAAC,SAAS,OACrDsB,KAAII,QAAO,WAAW,QAAQ,GAAG,IAAI,KAAK,KAC1CJ,KAAIG,QAAO,WAAW,QAAQ,GAAG,EAAE,KAAK,GAC1C;AAAE;AAAA,QAAO;AAEX,YAAI,OAAO,GAAG,QAAQ;AACtB,YAAI1E,SAAS,KAAK,QAAQ,GAAG,QAAQ,YAAY,SAAS,IAAI,IAAI,KAC9D,EAAC,MAAM,KAAK,CAAC,EAAE,QAAQ,IAAI,CAAC,GAAG,QAAQ,EAAC;AAC5C,YAAI,MAAM,GAAG,OAAO,GAAG,QAAQ,UAAU,SAAS,IAAI,EAAE;AACxD,YAAI,CAAC,KAAK;AACR,cAAI,UAAU,KAAK,KAAK,SAAS,CAAC,EAAE;AACpC,cAAIoB,OAAM,QAAQ,OAAO,QAAQ,KAAK,QAAQ,KAAK,SAAS,CAAC,IAAI,QAAQ;AACzE,gBAAM,EAAC,MAAMA,KAAIA,KAAI,SAAS,CAAC,GAAG,QAAQA,KAAIA,KAAI,SAAS,CAAC,IAAIA,KAAIA,KAAI,SAAS,CAAC,EAAC;AAAA,QACrF;AAEA,YAAI,CAACpB,UAAS,CAAC,KAAK;AAClB,cAAI,gBAAgB;AACpB;AAAA,QACF;AAEA,YAAI,MAAM,IAAI,cAAc,IAAI,WAAW,CAAC,GAAG;AAC/C,YAAI;AAAE,gBAAMD,OAAMC,OAAM,MAAMA,OAAM,QAAQ,IAAI,QAAQ,IAAI,IAAI;AAAA,QAAG,SAC7D,GAAG;AAAA,QAAC;AACV,YAAI,KAAK;AACP,cAAI,CAAChC,UAAS,GAAG,MAAM,SAAS;AAC9B,gBAAI,SAASgC,OAAM,MAAMA,OAAM,MAAM;AACrC,gBAAI,CAAC,IAAI,WAAW;AAClB,kBAAI,gBAAgB;AACpB,kBAAI,SAAS,GAAG;AAAA,YAClB;AAAA,UACF,OAAO;AACL,gBAAI,gBAAgB;AACpB,gBAAI,SAAS,GAAG;AAAA,UAClB;AACA,cAAI,OAAO,IAAI,cAAc,MAAM;AAAE,gBAAI,SAAS,GAAG;AAAA,UAAG,WAC/ChC,QAAO;AAAE,iBAAK,iBAAiB;AAAA,UAAG;AAAA,QAC7C;AACA,aAAK,kBAAkB;AAAA,MACzB;AAEA,2BAAqB,UAAU,mBAAmB,WAAY;AAC1D,YAAI,SAAS;AAEf,qBAAa,KAAK,WAAW;AAC7B,aAAK,cAAc,WAAW,WAAY;AACxC,iBAAO,cAAc;AACrB,cAAI,OAAO,iBAAiB,GAC1B;AAAE,mBAAO,GAAG,UAAU,WAAY;AAAE,qBAAO,OAAO,GAAG,MAAM,mBAAmB;AAAA,YAAM,CAAC;AAAA,UAAG;AAAA,QAC5F,GAAG,EAAE;AAAA,MACP;AAEA,2BAAqB,UAAU,yBAAyB,SAAU,MAAM;AACtE,QAAA0B,sBAAqB,KAAK,GAAG,QAAQ,WAAW,KAAK,OAAO;AAC5D,QAAAA,sBAAqB,KAAK,GAAG,QAAQ,cAAc,KAAK,SAAS;AAAA,MACnE;AAEA,2BAAqB,UAAU,oBAAoB,WAAY;AAC7D,YAAI,MAAM,KAAK,aAAa;AAC5B,aAAK,iBAAiB,IAAI;AAAY,aAAK,mBAAmB,IAAI;AAClE,aAAK,gBAAgB,IAAI;AAAW,aAAK,kBAAkB,IAAI;AAAA,MACjE;AAEA,2BAAqB,UAAU,oBAAoB,WAAY;AAC7D,YAAI,MAAM,KAAK,aAAa;AAC5B,YAAI,CAAC,IAAI,YAAY;AAAE,iBAAO;AAAA,QAAM;AACpC,YAAI,OAAO,IAAI,WAAW,CAAC,EAAE;AAC7B,eAAOO,UAAS,KAAK,KAAK,IAAI;AAAA,MAChC;AAEA,2BAAqB,UAAU,QAAQ,WAAY;AACjD,YAAI,KAAK,GAAG,QAAQ,YAAY,YAAY;AAC1C,cAAI,CAAC,KAAK,kBAAkB,KAAK,SAAS,iBAAiB,KAAK,KAC9D;AAAE,iBAAK,cAAc,KAAK,iBAAiB,GAAG,IAAI;AAAA,UAAG;AACvD,eAAK,IAAI,MAAM;AAAA,QACjB;AAAA,MACF;AACA,2BAAqB,UAAU,OAAO,WAAY;AAAE,aAAK,IAAI,KAAK;AAAA,MAAG;AACrE,2BAAqB,UAAU,WAAW,WAAY;AAAE,eAAO,KAAK;AAAA,MAAI;AAExE,2BAAqB,UAAU,gBAAgB,WAAY;AAAE,eAAO;AAAA,MAAK;AAEzE,2BAAqB,UAAU,gBAAgB,WAAY;AACzD,YAAI,QAAQ;AACZ,YAAI,KAAK,kBAAkB,GACzB;AAAE,eAAK,cAAc;AAAA,QAAG,OAExB;AAAE,UAAAmK,SAAQ,KAAK,IAAI,WAAY;AAAE,mBAAO,MAAM,GAAG,MAAM,mBAAmB;AAAA,UAAM,CAAC;AAAA,QAAG;AAEtF,iBAAS,OAAO;AACd,cAAI,MAAM,GAAG,MAAM,SAAS;AAC1B,kBAAM,cAAc;AACpB,kBAAM,QAAQ,IAAI,MAAM,GAAG,QAAQ,cAAc,IAAI;AAAA,UACvD;AAAA,QACF;AACA,aAAK,QAAQ,IAAI,KAAK,GAAG,QAAQ,cAAc,IAAI;AAAA,MACrD;AAEA,2BAAqB,UAAU,mBAAmB,WAAY;AAC5D,YAAI,MAAM,KAAK,aAAa;AAC5B,eAAO,IAAI,cAAc,KAAK,kBAAkB,IAAI,gBAAgB,KAAK,oBACvE,IAAI,aAAa,KAAK,iBAAiB,IAAI,eAAe,KAAK;AAAA,MACnE;AAEA,2BAAqB,UAAU,gBAAgB,WAAY;AACzD,YAAI,KAAK,kBAAkB,QAAQ,KAAK,eAAe,CAAC,KAAK,iBAAiB,GAAG;AAAE;AAAA,QAAO;AAC1F,YAAI,MAAM,KAAK,aAAa,GAAG,KAAK,KAAK;AAOzC,YAAItL,YAAWN,WAAU,KAAK,GAAG,QAAQ,YAAY,UAAU,WAAW,IAAI,UAAU,GAAG;AACzF,eAAK,GAAG,iBAAiB,EAAC,MAAM,WAAW,SAAS,GAAG,gBAAgB,KAAK,IAAG,CAAC;AAChF,eAAK,KAAK;AACV,eAAK,MAAM;AACX;AAAA,QACF;AACA,YAAI,KAAK,WAAW;AAAE;AAAA,QAAO;AAC7B,aAAK,kBAAkB;AACvB,YAAI,SAAS,SAAS,IAAI,IAAI,YAAY,IAAI,YAAY;AAC1D,YAAI,OAAO,SAAS,IAAI,IAAI,WAAW,IAAI,WAAW;AACtD,YAAI,UAAU,MAAM;AAAE,UAAA4L,SAAQ,IAAI,WAAY;AAC5C,yBAAa,GAAG,KAAKO,iBAAgB,QAAQ,IAAI,GAAG1J,eAAc;AAClE,gBAAI,OAAO,OAAO,KAAK,KAAK;AAAE,iBAAG,MAAM,mBAAmB;AAAA,YAAM;AAAA,UAClE,CAAC;AAAA,QAAG;AAAA,MACN;AAEA,2BAAqB,UAAU,cAAc,WAAY;AACvD,YAAI,KAAK,kBAAkB,MAAM;AAC/B,uBAAa,KAAK,cAAc;AAChC,eAAK,iBAAiB;AAAA,QACxB;AAEA,YAAI,KAAK,KAAK,IAAI,UAAU,GAAG,SAAS,MAAM,GAAG,IAAI,IAAI,QAAQ;AACjE,YAAI,OAAO,IAAI,KAAK,GAAG,KAAK,IAAI,GAAG;AACnC,YAAI,KAAK,MAAM,KAAK,KAAK,OAAO,GAAG,UAAU,GAC3C;AAAE,iBAAOqD,KAAI,KAAK,OAAO,GAAGT,SAAQ,GAAG,KAAK,KAAK,OAAO,CAAC,EAAE,MAAM;AAAA,QAAG;AACtE,YAAI,GAAG,MAAMA,SAAQ,GAAG,KAAK,GAAG,IAAI,EAAE,KAAK,UAAU,GAAG,OAAO,GAAG,SAAS,GACzE;AAAE,eAAKS,KAAI,GAAG,OAAO,GAAG,CAAC;AAAA,QAAG;AAC9B,YAAI,KAAK,OAAO,QAAQ,YAAY,GAAG,OAAO,QAAQ,SAAS,GAAG;AAAE,iBAAO;AAAA,QAAM;AAEjF,YAAI,WAAW,UAAU;AACzB,YAAI,KAAK,QAAQ,QAAQ,aAAa,YAAYgD,eAAc,IAAI,KAAK,IAAI,MAAM,GAAG;AACpF,qBAAWrD,QAAO,QAAQ,KAAK,CAAC,EAAE,IAAI;AACtC,qBAAW,QAAQ,KAAK,CAAC,EAAE;AAAA,QAC7B,OAAO;AACL,qBAAWA,QAAO,QAAQ,KAAK,SAAS,EAAE,IAAI;AAC9C,qBAAW,QAAQ,KAAK,YAAY,CAAC,EAAE,KAAK;AAAA,QAC9C;AACA,YAAI,UAAUqD,eAAc,IAAI,GAAG,IAAI;AACvC,YAAI,QAAQ;AACZ,YAAI,WAAW,QAAQ,KAAK,SAAS,GAAG;AACtC,mBAAS,QAAQ,SAAS;AAC1B,mBAAS,QAAQ,QAAQ;AAAA,QAC3B,OAAO;AACL,mBAASrD,QAAO,QAAQ,KAAK,UAAU,CAAC,EAAE,IAAI,IAAI;AAClD,mBAAS,QAAQ,KAAK,UAAU,CAAC,EAAE,KAAK;AAAA,QAC1C;AAEA,YAAI,CAAC,UAAU;AAAE,iBAAO;AAAA,QAAM;AAC9B,YAAI,UAAU,GAAG,IAAI,WAAW,eAAe,IAAI,UAAU,QAAQ,UAAU,MAAM,CAAC;AACtF,YAAI,UAAUH,YAAW,GAAG,KAAKQ,KAAI,UAAU,CAAC,GAAGA,KAAI,QAAQT,SAAQ,GAAG,KAAK,MAAM,EAAE,KAAK,MAAM,CAAC;AACnG,eAAO,QAAQ,SAAS,KAAK,QAAQ,SAAS,GAAG;AAC/C,cAAI1C,KAAI,OAAO,KAAKA,KAAI,OAAO,GAAG;AAAE,oBAAQ,IAAI;AAAG,oBAAQ,IAAI;AAAG;AAAA,UAAU,WACnE,QAAQ,CAAC,KAAK,QAAQ,CAAC,GAAG;AAAE,oBAAQ,MAAM;AAAG,oBAAQ,MAAM;AAAG;AAAA,UAAY,OAC9E;AAAE;AAAA,UAAM;AAAA,QACf;AAEA,YAAI,WAAW,GAAG,SAAS;AAC3B,YAAI,SAAS,QAAQ,CAAC,GAAG,SAAS,QAAQ,CAAC,GAAG,cAAc,KAAK,IAAI,OAAO,QAAQ,OAAO,MAAM;AACjG,eAAO,WAAW,eAAe,OAAO,WAAW,QAAQ,KAAK,OAAO,WAAW,QAAQ,GACxF;AAAE,YAAE;AAAA,QAAU;AAChB,YAAI,SAASA,KAAI,OAAO,GAAG,SAASA,KAAI,OAAO;AAC/C,YAAI,YAAY,KAAK;AAAA,UAAI,OAAO,UAAU,QAAQ,UAAU,IAAI,WAAW;AAAA,UAClD,OAAO,UAAU,QAAQ,UAAU,IAAI,WAAW;AAAA,QAAE;AAC7E,eAAO,SAAS,aACT,OAAO,WAAW,OAAO,SAAS,SAAS,CAAC,KAAK,OAAO,WAAW,OAAO,SAAS,SAAS,CAAC,GAClG;AAAE,YAAE;AAAA,QAAQ;AAEd,YAAI,QAAQ,UAAU,KAAK,QAAQ,UAAU,KAAK,YAAY,KAAK,MAAM;AACvE,iBAAO,YAAY,WAAW,KAAK,MAC5B,OAAO,WAAW,OAAO,SAAS,SAAS,CAAC,KAAK,OAAO,WAAW,OAAO,SAAS,SAAS,CAAC,GAAG;AACrG;AACA;AAAA,UACF;AAAA,QACF;AAEA,gBAAQ,QAAQ,SAAS,CAAC,IAAI,OAAO,MAAM,GAAG,OAAO,SAAS,MAAM,EAAE,QAAQ,YAAY,EAAE;AAC5F,gBAAQ,CAAC,IAAI,QAAQ,CAAC,EAAE,MAAM,QAAQ,EAAE,QAAQ,YAAY,EAAE;AAE9D,YAAI,SAASmD,KAAI,UAAU,QAAQ;AACnC,YAAI,OAAOA,KAAI,QAAQ,QAAQ,SAASnD,KAAI,OAAO,EAAE,SAAS,SAAS,CAAC;AACxE,YAAI,QAAQ,SAAS,KAAK,QAAQ,CAAC,KAAKoD,KAAI,QAAQ,IAAI,GAAG;AACzD,uBAAa,GAAG,KAAK,SAAS,QAAQ,MAAM,QAAQ;AACpD,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,2BAAqB,UAAU,eAAe,WAAY;AACxD,aAAK,oBAAoB;AAAA,MAC3B;AACA,2BAAqB,UAAU,QAAQ,WAAY;AACjD,aAAK,oBAAoB;AAAA,MAC3B;AACA,2BAAqB,UAAU,sBAAsB,WAAY;AAC/D,YAAI,CAAC,KAAK,WAAW;AAAE;AAAA,QAAO;AAC9B,qBAAa,KAAK,cAAc;AAChC,aAAK,YAAY;AACjB,aAAK,cAAc;AACnB,aAAK,IAAI,KAAK;AACd,aAAK,IAAI,MAAM;AAAA,MACjB;AACA,2BAAqB,UAAU,kBAAkB,WAAY;AACzD,YAAI,SAAS;AAEf,YAAI,KAAK,kBAAkB,MAAM;AAAE;AAAA,QAAO;AAC1C,aAAK,iBAAiB,WAAW,WAAY;AAC3C,iBAAO,iBAAiB;AACxB,cAAI,OAAO,WAAW;AACpB,gBAAI,OAAO,UAAU,MAAM;AAAE,qBAAO,YAAY;AAAA,YAAM,OACjD;AAAE;AAAA,YAAO;AAAA,UAChB;AACA,iBAAO,cAAc;AAAA,QACvB,GAAG,EAAE;AAAA,MACP;AAEA,2BAAqB,UAAU,gBAAgB,WAAY;AACvD,YAAI,SAAS;AAEf,YAAI,KAAK,GAAG,WAAW,KAAK,CAAC,KAAK,YAAY,GAC5C;AAAE,UAAA6F,SAAQ,KAAK,IAAI,WAAY;AAAE,mBAAO9B,WAAU,OAAO,EAAE;AAAA,UAAG,CAAC;AAAA,QAAG;AAAA,MACtE;AAEA,2BAAqB,UAAU,gBAAgB,SAAU,MAAM;AAC7D,aAAK,kBAAkB;AAAA,MACzB;AAEA,2BAAqB,UAAU,aAAa,SAAU,GAAG;AACvD,YAAI,EAAE,YAAY,KAAK,KAAK,WAAW;AAAE;AAAA,QAAO;AAChD,UAAE,eAAe;AACjB,YAAI,CAAC,KAAK,GAAG,WAAW,GACtB;AAAE,oBAAU,KAAK,IAAI,cAAc,EAAE,KAAK,IAAI,OAAO,aAAa,EAAE,YAAY,OAAO,EAAE,UAAU,EAAE,QAAQ,GAAG,CAAC;AAAA,QAAG;AAAA,MACxH;AAEA,2BAAqB,UAAU,kBAAkB,SAAU,KAAK;AAC9D,aAAK,IAAI,kBAAkB,OAAO,OAAO,UAAU;AAAA,MACrD;AAEA,2BAAqB,UAAU,gBAAgB,WAAY;AAAA,MAAC;AAC5D,2BAAqB,UAAU,gBAAgB,WAAY;AAAA,MAAC;AAE5D,2BAAqB,UAAU,wBAAwB;AAEvD,eAAS,SAAS,IAAI,KAAK;AACzB,YAAI,OAAO,gBAAgB,IAAI,IAAI,IAAI;AACvC,YAAI,CAAC,QAAQ,KAAK,QAAQ;AAAE,iBAAO;AAAA,QAAK;AACxC,YAAI,OAAOzE,SAAQ,GAAG,KAAK,IAAI,IAAI;AACnC,YAAI,OAAO,gBAAgB,MAAM,MAAM,IAAI,IAAI;AAE/C,YAAI,QAAQ1B,UAAS,MAAM,GAAG,IAAI,SAAS,GAAG,OAAO;AACrD,YAAI,OAAO;AACT,cAAI,UAAUN,eAAc,OAAO,IAAI,EAAE;AACzC,iBAAO,UAAU,IAAI,UAAU;AAAA,QACjC;AACA,YAAI,SAAS,uBAAuB,KAAK,KAAK,IAAI,IAAI,IAAI;AAC1D,eAAO,SAAS,OAAO,YAAY,UAAU,OAAO,MAAM,OAAO;AACjE,eAAO;AAAA,MACT;AAEA,eAAS,WAAW,MAAM;AACxB,iBAAS,OAAO,MAAM,MAAM,OAAO,KAAK,YACtC;AAAE,cAAI,4BAA4B,KAAK,KAAK,SAAS,GAAG;AAAE,mBAAO;AAAA,UAAK;AAAA,QAAE;AAC1E,eAAO;AAAA,MACT;AAEA,eAAS,OAAO,KAAK,KAAK;AAAE,YAAI,KAAK;AAAE,cAAI,MAAM;AAAA,QAAM;AAAE,eAAO;AAAA,MAAI;AAEpE,eAAS,eAAe,IAAI,MAAM,IAAI,UAAU,QAAQ;AACtD,YAAIkC,QAAO,IAAI,UAAU,OAAO,UAAU,GAAG,IAAI,cAAc,GAAG,iBAAiB;AACnF,iBAAS,gBAAgB4C,KAAI;AAAE,iBAAO,SAAU,QAAQ;AAAE,mBAAO,OAAO,MAAMA;AAAA,UAAI;AAAA,QAAE;AACpF,iBAAS,QAAQ;AACf,cAAI,SAAS;AACX,YAAA5C,SAAQ;AACR,gBAAI,gBAAgB;AAAE,cAAAA,SAAQ;AAAA,YAAS;AACvC,sBAAU,iBAAiB;AAAA,UAC7B;AAAA,QACF;AACA,iBAAS,QAAQtC,MAAK;AACpB,cAAIA,MAAK;AACP,kBAAM;AACN,YAAAsC,SAAQtC;AAAA,UACV;AAAA,QACF;AACA,iBAAS,KAAK,MAAM;AAClB,cAAI,KAAK,YAAY,GAAG;AACtB,gBAAI,SAAS,KAAK,aAAa,SAAS;AACxC,gBAAI,QAAQ;AACV,sBAAQ,MAAM;AACd;AAAA,YACF;AACA,gBAAI,WAAW,KAAK,aAAa,WAAW,GAAG1B;AAC/C,gBAAI,UAAU;AACZ,kBAAI,QAAQ,GAAG,UAAUuE,KAAI,UAAU,CAAC,GAAGA,KAAI,SAAS,GAAG,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC;AACzF,kBAAI,MAAM,WAAWvE,SAAQ,MAAM,CAAC,EAAE,KAAK,CAAC,IAC1C;AAAE,wBAAQ+D,YAAW,GAAG,KAAK/D,OAAM,MAAMA,OAAM,EAAE,EAAE,KAAK,OAAO,CAAC;AAAA,cAAG;AACrE;AAAA,YACF;AACA,gBAAI,KAAK,aAAa,iBAAiB,KAAK,SAAS;AAAE;AAAA,YAAO;AAC9D,gBAAI,UAAU,6BAA6B,KAAK,KAAK,QAAQ;AAC7D,gBAAI,CAAC,QAAQ,KAAK,KAAK,QAAQ,KAAK,KAAK,YAAY,UAAU,GAAG;AAAE;AAAA,YAAO;AAE3E,gBAAI,SAAS;AAAE,oBAAM;AAAA,YAAG;AACxB,qBAASF,KAAI,GAAGA,KAAI,KAAK,WAAW,QAAQA,MAC1C;AAAE,mBAAK,KAAK,WAAWA,EAAC,CAAC;AAAA,YAAG;AAE9B,gBAAI,aAAa,KAAK,KAAK,QAAQ,GAAG;AAAE,+BAAiB;AAAA,YAAM;AAC/D,gBAAI,SAAS;AAAE,wBAAU;AAAA,YAAM;AAAA,UACjC,WAAW,KAAK,YAAY,GAAG;AAC7B,oBAAQ,KAAK,UAAU,QAAQ,WAAW,EAAE,EAAE,QAAQ,WAAW,GAAG,CAAC;AAAA,UACvE;AAAA,QACF;AACA,mBAAS;AACP,eAAK,IAAI;AACT,cAAI,QAAQ,IAAI;AAAE;AAAA,UAAM;AACxB,iBAAO,KAAK;AACZ,2BAAiB;AAAA,QACnB;AACA,eAAOkE;AAAA,MACT;AAEA,eAAS,SAAS,IAAI,MAAM,QAAQ;AAClC,YAAI;AACJ,YAAI,QAAQ,GAAG,QAAQ,SAAS;AAC9B,qBAAW,GAAG,QAAQ,QAAQ,WAAW,MAAM;AAC/C,cAAI,CAAC,UAAU;AAAE,mBAAO,OAAO,GAAG,QAAQO,KAAI,GAAG,QAAQ,SAAS,CAAC,CAAC,GAAG,IAAI;AAAA,UAAE;AAC7E,iBAAO;AAAM,mBAAS;AAAA,QACxB,OAAO;AACL,eAAK,WAAW,QAAO,WAAW,SAAS,YAAY;AACrD,gBAAI,CAAC,YAAY,YAAY,GAAG,QAAQ,SAAS;AAAE,qBAAO;AAAA,YAAK;AAC/D,gBAAI,SAAS,cAAc,SAAS,cAAc,GAAG,QAAQ,SAAS;AAAE;AAAA,YAAM;AAAA,UAChF;AAAA,QACF;AACA,iBAASzE,KAAI,GAAGA,KAAI,GAAG,QAAQ,KAAK,QAAQA,MAAK;AAC/C,cAAI,WAAW,GAAG,QAAQ,KAAKA,EAAC;AAChC,cAAI,SAAS,QAAQ,UACnB;AAAE,mBAAO,qBAAqB,UAAU,MAAM,MAAM;AAAA,UAAE;AAAA,QAC1D;AAAA,MACF;AAEA,eAAS,qBAAqB,UAAU,MAAM,QAAQ;AACpD,YAAI,UAAU,SAAS,KAAK,YAAY,MAAM;AAC9C,YAAI,CAAC,QAAQ,CAACI,UAAS,SAAS,IAAI,GAAG;AAAE,iBAAO,OAAOqE,KAAIL,QAAO,SAAS,IAAI,GAAG,CAAC,GAAG,IAAI;AAAA,QAAE;AAC5F,YAAI,QAAQ,SAAS;AACnB,gBAAM;AACN,iBAAO,QAAQ,WAAW,MAAM;AAChC,mBAAS;AACT,cAAI,CAAC,MAAM;AACT,gBAAI,OAAO,SAAS,OAAO9C,KAAI,SAAS,IAAI,IAAI,SAAS;AACzD,mBAAO,OAAOmD,KAAIL,QAAO,IAAI,GAAG,KAAK,KAAK,MAAM,GAAG,GAAG;AAAA,UACxD;AAAA,QACF;AAEA,YAAI,WAAW,KAAK,YAAY,IAAI,OAAO,MAAM,UAAU;AAC3D,YAAI,CAAC,YAAY,KAAK,WAAW,UAAU,KAAK,KAAK,WAAW,YAAY,GAAG;AAC7E,qBAAW,KAAK;AAChB,cAAI,QAAQ;AAAE,qBAAS,SAAS,UAAU;AAAA,UAAQ;AAAA,QACpD;AACA,eAAO,QAAQ,cAAc,SAAS;AAAE,oBAAU,QAAQ;AAAA,QAAY;AACtE,YAAI,UAAU,SAAS,SAAS,OAAO,QAAQ;AAE/C,iBAASmI,MAAKC,WAAUC,UAASC,SAAQ;AACvC,mBAAS1M,KAAI,IAAIA,MAAK,OAAO,KAAK,SAAS,IAAIA,MAAK;AAClD,gBAAIuB,OAAMvB,KAAI,IAAI,QAAQ,MAAM,KAAKA,EAAC;AACtC,qBAAS,IAAI,GAAG,IAAIuB,KAAI,QAAQ,KAAK,GAAG;AACtC,kBAAI,UAAUA,KAAI,IAAI,CAAC;AACvB,kBAAI,WAAWiL,aAAY,WAAWC,UAAS;AAC7C,oBAAIb,QAAOxH,QAAOpE,KAAI,IAAI,SAAS,OAAO,SAAS,KAAKA,EAAC,CAAC;AAC1D,oBAAI,KAAKuB,KAAI,CAAC,IAAImL;AAClB,oBAAIA,UAAS,KAAK,WAAWF,WAAU;AAAE,uBAAKjL,KAAI,KAAKmL,UAAS,IAAI,EAAE;AAAA,gBAAG;AACzE,uBAAOjI,KAAImH,OAAM,EAAE;AAAA,cACrB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,YAAI,QAAQW,MAAK,UAAU,SAAS,MAAM;AAC1C,YAAI,OAAO;AAAE,iBAAO,OAAO,OAAO,GAAG;AAAA,QAAE;AAGvC,iBAAS,QAAQ,QAAQ,aAAa,OAAO,WAAW,SAAS,UAAU,SAAS,SAAS,GAAG,OAAO,QAAQ,MAAM,aAAa;AAChI,kBAAQA,MAAK,OAAO,MAAM,YAAY,CAAC;AACvC,cAAI,OACF;AAAE,mBAAO,OAAO9H,KAAI,MAAM,MAAM,MAAM,KAAK,IAAI,GAAG,GAAG;AAAA,UAAE,OAEvD;AAAE,oBAAQ,MAAM,YAAY;AAAA,UAAQ;AAAA,QACxC;AACA,iBAAS,SAAS,QAAQ,iBAAiB,SAAS,QAAQ,QAAQ,SAAS,OAAO,iBAAiB;AACnG,kBAAQ8H,MAAK,QAAQ,OAAO,YAAY,EAAE;AAC1C,cAAI,OACF;AAAE,mBAAO,OAAO9H,KAAI,MAAM,MAAM,MAAM,KAAK,MAAM,GAAG,GAAG;AAAA,UAAE,OAEzD;AAAE,sBAAU,OAAO,YAAY;AAAA,UAAQ;AAAA,QAC3C;AAAA,MACF;AAIA,UAAI,gBAAgB,SAAS,IAAI;AAC/B,aAAK,KAAK;AAEV,aAAK,YAAY;AAKjB,aAAK,cAAc;AAEnB,aAAK,UAAU,IAAI3D,SAAQ;AAE3B,aAAK,eAAe;AACpB,aAAK,YAAY;AAAA,MACnB;AAEA,oBAAc,UAAU,OAAO,SAAU,SAAS;AAC9C,YAAI,SAAS;AAEf,YAAI,QAAQ,MAAM,KAAK,KAAK;AAC5B,aAAK,YAAY,OAAO;AACxB,YAAI,KAAK,KAAK;AAEd,gBAAQ,QAAQ,aAAa,KAAK,SAAS,QAAQ,QAAQ,UAAU;AAGrE,YAAI9B,MAAK;AAAE,aAAG,MAAM,QAAQ;AAAA,QAAO;AAEnC,QAAAwD,IAAG,IAAI,SAAS,WAAY;AAC1B,cAAIjE,OAAMC,eAAc,KAAK,OAAO,cAAc;AAAE,mBAAO,eAAe;AAAA,UAAM;AAChF,gBAAM,KAAK;AAAA,QACb,CAAC;AAED,QAAAgE,IAAG,IAAI,SAAS,SAAU,GAAG;AAC3B,cAAIK,gBAAe,IAAI,CAAC,KAAK,YAAY,GAAG,EAAE,GAAG;AAAE;AAAA,UAAO;AAE1D,aAAG,MAAM,gBAAgB,CAAC,oBAAI;AAC9B,gBAAM,SAAS;AAAA,QACjB,CAAC;AAED,iBAAS,eAAe,GAAG;AACzB,cAAIA,gBAAe,IAAI,CAAC,GAAG;AAAE;AAAA,UAAO;AACpC,cAAI,GAAG,kBAAkB,GAAG;AAC1B,0BAAc,EAAC,UAAU,OAAO,MAAM,GAAG,cAAc,EAAC,CAAC;AAAA,UAC3D,WAAW,CAAC,GAAG,QAAQ,iBAAiB;AACtC;AAAA,UACF,OAAO;AACL,gBAAI,SAAS,eAAe,EAAE;AAC9B,0BAAc,EAAC,UAAU,MAAM,MAAM,OAAO,KAAI,CAAC;AACjD,gBAAI,EAAE,QAAQ,OAAO;AACnB,iBAAG,cAAc,OAAO,QAAQ,MAAMzB,eAAc;AAAA,YACtD,OAAO;AACL,oBAAM,YAAY;AAClB,iBAAG,QAAQ,OAAO,KAAK,KAAK,IAAI;AAChC,cAAAZ,aAAY,EAAE;AAAA,YAChB;AAAA,UACF;AACA,cAAI,EAAE,QAAQ,OAAO;AAAE,eAAG,MAAM,cAAc,CAAC,oBAAI;AAAA,UAAM;AAAA,QAC3D;AACA,QAAAgC,IAAG,IAAI,OAAO,cAAc;AAC5B,QAAAA,IAAG,IAAI,QAAQ,cAAc;AAE7B,QAAAA,IAAG,QAAQ,UAAU,SAAS,SAAU,GAAG;AACzC,cAAI,cAAc,SAAS,CAAC,KAAKK,gBAAe,IAAI,CAAC,GAAG;AAAE;AAAA,UAAO;AACjE,cAAI,CAAC,GAAG,eAAe;AACrB,eAAG,MAAM,gBAAgB,CAAC,oBAAI;AAC9B,kBAAM,MAAM;AACZ;AAAA,UACF;AAGA,cAAI,QAAQ,IAAI,MAAM,OAAO;AAC7B,gBAAM,gBAAgB,EAAE;AACxB,aAAG,cAAc,KAAK;AAAA,QACxB,CAAC;AAGD,QAAAL,IAAG,QAAQ,WAAW,eAAe,SAAU,GAAG;AAChD,cAAI,CAAC,cAAc,SAAS,CAAC,GAAG;AAAE,6BAAiB,CAAC;AAAA,UAAG;AAAA,QACzD,CAAC;AAED,QAAAA,IAAG,IAAI,oBAAoB,WAAY;AACrC,cAAIrC,SAAQ,GAAG,UAAU,MAAM;AAC/B,cAAI,MAAM,WAAW;AAAE,kBAAM,UAAU,MAAM,MAAM;AAAA,UAAG;AACtD,gBAAM,YAAY;AAAA,YAChB,OAAOA;AAAA,YACP,OAAO,GAAG,SAASA,QAAO,GAAG,UAAU,IAAI,GAAG,EAAC,WAAW,uBAAsB,CAAC;AAAA,UACnF;AAAA,QACF,CAAC;AACD,QAAAqC,IAAG,IAAI,kBAAkB,WAAY;AACnC,cAAI,MAAM,WAAW;AACnB,kBAAM,KAAK;AACX,kBAAM,UAAU,MAAM,MAAM;AAC5B,kBAAM,YAAY;AAAA,UACpB;AAAA,QACF,CAAC;AAAA,MACH;AAEA,oBAAc,UAAU,cAAc,SAAU,UAAU;AAExD,aAAK,UAAU,eAAe;AAG9B,aAAK,WAAW,KAAK,QAAQ;AAAA,MAC/B;AAEA,oBAAc,UAAU,2BAA2B,SAAU,OAAO;AAElE,YAAG,OAAO;AACR,eAAK,SAAS,aAAa,cAAc,KAAK;AAAA,QAChD,OAAO;AACL,eAAK,SAAS,gBAAgB,YAAY;AAAA,QAC5C;AAAA,MACF;AAEA,oBAAc,UAAU,mBAAmB,WAAY;AAErD,YAAI,KAAK,KAAK,IAAI,UAAU,GAAG,SAAS,MAAM,GAAG;AACjD,YAAI,SAAS,iBAAiB,EAAE;AAGhC,YAAI,GAAG,QAAQ,qBAAqB;AAClC,cAAI,UAAUqF,cAAa,IAAI,IAAI,IAAI,QAAQ,EAAE,MAAM,KAAK;AAC5D,cAAI,UAAU,QAAQ,QAAQ,sBAAsB,GAAG,UAAU,QAAQ,QAAQ,sBAAsB;AACvG,iBAAO,QAAQ,KAAK,IAAI,GAAG,KAAK;AAAA,YAAI,QAAQ,QAAQ,eAAe;AAAA,YAC/B,QAAQ,MAAM,QAAQ,MAAM,QAAQ;AAAA,UAAG,CAAC;AAC5E,iBAAO,SAAS,KAAK,IAAI,GAAG,KAAK;AAAA,YAAI,QAAQ,QAAQ,cAAc;AAAA,YAC9B,QAAQ,OAAO,QAAQ,OAAO,QAAQ;AAAA,UAAI,CAAC;AAAA,QAClF;AAEA,eAAO;AAAA,MACT;AAEA,oBAAc,UAAU,gBAAgB,SAAU,OAAO;AACvD,YAAI,KAAK,KAAK,IAAI,UAAU,GAAG;AAC/B,QAAAhI,sBAAqB,QAAQ,WAAW,MAAM,OAAO;AACrD,QAAAA,sBAAqB,QAAQ,cAAc,MAAM,SAAS;AAC1D,YAAI,MAAM,SAAS,MAAM;AACvB,eAAK,QAAQ,MAAM,MAAM,MAAM,QAAQ;AACvC,eAAK,QAAQ,MAAM,OAAO,MAAM,SAAS;AAAA,QAC3C;AAAA,MACF;AAIA,oBAAc,UAAU,QAAQ,SAAU,QAAQ;AAChD,YAAI,KAAK,sBAAsB,KAAK,WAAW;AAAE;AAAA,QAAO;AACxD,YAAI,KAAK,KAAK;AACd,YAAI,GAAG,kBAAkB,GAAG;AAC1B,eAAK,YAAY;AACjB,cAAI,UAAU,GAAG,aAAa;AAC9B,eAAK,SAAS,QAAQ;AACtB,cAAI,GAAG,MAAM,SAAS;AAAE,YAAAW,aAAY,KAAK,QAAQ;AAAA,UAAG;AACpD,cAAIjC,OAAMC,eAAc,GAAG;AAAE,iBAAK,eAAe;AAAA,UAAS;AAAA,QAC5D,WAAW,CAAC,QAAQ;AAClB,eAAK,YAAY,KAAK,SAAS,QAAQ;AACvC,cAAID,OAAMC,eAAc,GAAG;AAAE,iBAAK,eAAe;AAAA,UAAM;AAAA,QACzD;AAAA,MACF;AAEA,oBAAc,UAAU,WAAW,WAAY;AAAE,eAAO,KAAK;AAAA,MAAS;AAEtE,oBAAc,UAAU,gBAAgB,WAAY;AAAE,eAAO;AAAA,MAAM;AAEnE,oBAAc,UAAU,QAAQ,WAAY;AAC1C,YAAI,KAAK,GAAG,QAAQ,YAAY,eAAe,CAACU,WAAUmB,WAAU,KAAK,KAAK,WAAW;AACvF,cAAI;AAAE,iBAAK,SAAS,MAAM;AAAA,UAAG,SACtB,GAAG;AAAA,UAAC;AAAA,QACb;AAAA,MACF;AAEA,oBAAc,UAAU,OAAO,WAAY;AAAE,aAAK,SAAS,KAAK;AAAA,MAAG;AAEnE,oBAAc,UAAU,gBAAgB,WAAY;AAClD,aAAK,QAAQ,MAAM,MAAM,KAAK,QAAQ,MAAM,OAAO;AAAA,MACrD;AAEA,oBAAc,UAAU,gBAAgB,WAAY;AAAE,aAAK,SAAS;AAAA,MAAG;AAIvE,oBAAc,UAAU,WAAW,WAAY;AAC3C,YAAI,SAAS;AAEf,YAAI,KAAK,aAAa;AAAE;AAAA,QAAO;AAC/B,aAAK,QAAQ,IAAI,KAAK,GAAG,QAAQ,cAAc,WAAY;AACzD,iBAAO,KAAK;AACZ,cAAI,OAAO,GAAG,MAAM,SAAS;AAAE,mBAAO,SAAS;AAAA,UAAG;AAAA,QACpD,CAAC;AAAA,MACH;AAKA,oBAAc,UAAU,WAAW,WAAY;AAC7C,YAAI,SAAS,OAAO,QAAQ;AAC5B,cAAM,cAAc;AACpB,iBAAS,IAAI;AACX,cAAI,UAAU,MAAM,KAAK;AACzB,cAAI,CAAC,WAAW,CAAC,QAAQ;AAAC,qBAAS;AAAM,kBAAM,QAAQ,IAAI,IAAI,CAAC;AAAA,UAAE,OAC7D;AAAC,kBAAM,cAAc;AAAO,kBAAM,SAAS;AAAA,UAAE;AAAA,QACpD;AACA,cAAM,QAAQ,IAAI,IAAI,CAAC;AAAA,MACzB;AAQA,oBAAc,UAAU,OAAO,WAAY;AACvC,YAAI,SAAS;AAEf,YAAI,KAAK,KAAK,IAAI,QAAQ,KAAK,UAAU,YAAY,KAAK;AAK1D,YAAI,KAAK,sBAAsB,CAAC,GAAG,MAAM,WACpCoD,cAAa,KAAK,KAAK,CAAC,aAAa,CAAC,KAAK,aAC5C,GAAG,WAAW,KAAK,GAAG,QAAQ,gBAAgB,GAAG,MAAM,QACzD;AAAE,iBAAO;AAAA,QAAM;AAEjB,YAAIS,QAAO,MAAM;AAEjB,YAAIA,SAAQ,aAAa,CAAC,GAAG,kBAAkB,GAAG;AAAE,iBAAO;AAAA,QAAM;AAIjE,YAAI3F,OAAMC,eAAc,KAAK,KAAK,iBAAiB0F,SAC/C/E,QAAO,kBAAkB,KAAK+E,KAAI,GAAG;AACvC,aAAG,QAAQ,MAAM,MAAM;AACvB,iBAAO;AAAA,QACT;AAEA,YAAI,GAAG,IAAI,OAAO,GAAG,QAAQ,mBAAmB;AAC9C,cAAI,QAAQA,MAAK,WAAW,CAAC;AAC7B,cAAI,SAAS,QAAU,CAAC,WAAW;AAAE,wBAAY;AAAA,UAAU;AAC3D,cAAI,SAAS,MAAQ;AAAE,iBAAK,MAAM;AAAG,mBAAO,KAAK,GAAG,YAAY,MAAM;AAAA,UAAE;AAAA,QAC1E;AAEA,YAAI,OAAO,GAAG,IAAI,KAAK,IAAI,UAAU,QAAQA,MAAK,MAAM;AACxD,eAAO,OAAO,KAAK,UAAU,WAAW,IAAI,KAAKA,MAAK,WAAW,IAAI,GAAG;AAAE,YAAE;AAAA,QAAM;AAElF,QAAAqG,SAAQ,IAAI,WAAY;AACtB;AAAA,YAAe;AAAA,YAAIrG,MAAK,MAAM,IAAI;AAAA,YAAG,UAAU,SAAS;AAAA,YACzC;AAAA,YAAM,OAAO,YAAY,aAAa;AAAA,UAAI;AAGzD,cAAIA,MAAK,SAAS,OAAQA,MAAK,QAAQ,IAAI,IAAI,IAAI;AAAE,kBAAM,QAAQ,OAAO,YAAY;AAAA,UAAI,OACrF;AAAE,mBAAO,YAAYA;AAAA,UAAM;AAEhC,cAAI,OAAO,WAAW;AACpB,mBAAO,UAAU,MAAM,MAAM;AAC7B,mBAAO,UAAU,QAAQ,GAAG;AAAA,cAAS,OAAO,UAAU;AAAA,cAAO,GAAG,UAAU,IAAI;AAAA,cAC3C,EAAC,WAAW,uBAAsB;AAAA,YAAC;AAAA,UACxE;AAAA,QACF,CAAC;AACD,eAAO;AAAA,MACT;AAEA,oBAAc,UAAU,eAAe,WAAY;AACjD,YAAI,KAAK,eAAe,KAAK,KAAK,GAAG;AAAE,eAAK,cAAc;AAAA,QAAO;AAAA,MACnE;AAEA,oBAAc,UAAU,aAAa,WAAY;AAC/C,YAAI3F,OAAMC,eAAc,GAAG;AAAE,eAAK,eAAe;AAAA,QAAM;AACvD,aAAK,SAAS;AAAA,MAChB;AAEA,oBAAc,UAAU,gBAAgB,SAAU,GAAG;AACnD,YAAI,QAAQ,MAAM,KAAK,MAAM,IAAI,UAAU,GAAG,SAAS,KAAK,MAAM;AAClE,YAAI,MAAM,oBAAoB;AAAE,gBAAM,mBAAmB;AAAA,QAAG;AAC5D,YAAI,MAAM,aAAa,IAAI,CAAC,GAAG,YAAY,QAAQ,SAAS;AAC5D,YAAI,CAAC,OAAOI,SAAQ;AAAE;AAAA,QAAO;AAI7B,YAAI,QAAQ,GAAG,QAAQ;AACvB,YAAI,SAAS,GAAG,IAAI,IAAI,SAAS,GAAG,KAAK,IACvC;AAAE,oBAAU,IAAI,YAAY,EAAE,GAAG,KAAKkM,iBAAgB,GAAG,GAAG1J,eAAc;AAAA,QAAG;AAE/E,YAAI,SAAS,GAAG,MAAM,SAAS,gBAAgB,MAAM,QAAQ,MAAM;AACnE,YAAI,aAAa,MAAM,QAAQ,aAAa,sBAAsB;AAClE,cAAM,QAAQ,MAAM,UAAU;AAC9B,WAAG,MAAM,UAAU,iEAAiE,EAAE,UAAU,WAAW,MAAM,KAAK,gBAAgB,EAAE,UAAU,WAAW,OAAO,KAAK,4CAA4C7C,MAAK,6BAA6B,iBAAiB;AACxQ,YAAI;AACJ,YAAIE,SAAQ;AAAE,uBAAa,OAAO;AAAA,QAAS;AAC3C,gBAAQ,MAAM,MAAM;AACpB,YAAIA,SAAQ;AAAE,iBAAO,SAAS,MAAM,UAAU;AAAA,QAAG;AACjD,gBAAQ,MAAM,MAAM;AAEpB,YAAI,CAAC,GAAG,kBAAkB,GAAG;AAAE,aAAG,QAAQ,MAAM,YAAY;AAAA,QAAK;AACjE,cAAM,qBAAqB;AAC3B,gBAAQ,oBAAoB,GAAG,IAAI;AACnC,qBAAa,QAAQ,kBAAkB;AAKvC,iBAAS,uBAAuB;AAC9B,cAAI,GAAG,kBAAkB,MAAM;AAC7B,gBAAI,WAAW,GAAG,kBAAkB;AACpC,gBAAI,SAAS,YAAY,WAAW,GAAG,QAAQ;AAC/C,eAAG,QAAQ;AACX,eAAG,QAAQ;AACX,kBAAM,YAAY,WAAW,KAAK;AAClC,eAAG,iBAAiB;AAAG,eAAG,eAAe,OAAO;AAGhD,oBAAQ,oBAAoB,GAAG,IAAI;AAAA,UACrC;AAAA,QACF;AACA,iBAAS,SAAS;AAChB,cAAI,MAAM,sBAAsB,QAAQ;AAAE;AAAA,UAAO;AACjD,gBAAM,qBAAqB;AAC3B,gBAAM,QAAQ,MAAM,UAAU;AAC9B,aAAG,MAAM,UAAU;AACnB,cAAIF,OAAMC,cAAa,GAAG;AAAE,oBAAQ,WAAW,aAAa,QAAQ,SAAS,YAAY,SAAS;AAAA,UAAG;AAGrG,cAAI,GAAG,kBAAkB,MAAM;AAC7B,gBAAI,CAACD,OAAOA,OAAMC,cAAa,GAAI;AAAE,mCAAqB;AAAA,YAAG;AAC7D,gBAAIwB,KAAI,GAAG,OAAO,WAAY;AAC5B,kBAAI,QAAQ,qBAAqB,GAAG,IAAI,OAAO,GAAG,kBAAkB,KAChE,GAAG,eAAe,KAAK,MAAM,aAAa,UAAU;AACtD,0BAAU,IAAI,SAAS,EAAE,EAAE;AAAA,cAC7B,WAAWA,OAAM,IAAI;AACnB,wBAAQ,qBAAqB,WAAW,MAAM,GAAG;AAAA,cACnD,OAAO;AACL,wBAAQ,oBAAoB;AAC5B,wBAAQ,MAAM,MAAM;AAAA,cACtB;AAAA,YACF;AACA,oBAAQ,qBAAqB,WAAW,MAAM,GAAG;AAAA,UACnD;AAAA,QACF;AAEA,YAAIzB,OAAMC,eAAc,GAAG;AAAE,+BAAqB;AAAA,QAAG;AACrD,YAAIgB,oBAAmB;AACrB,iBAAO,CAAC;AACR,cAAI,UAAU,WAAY;AACxB,YAAAkD,KAAI,QAAQ,WAAW,OAAO;AAC9B,uBAAW,QAAQ,EAAE;AAAA,UACvB;AACA,UAAAF,IAAG,QAAQ,WAAW,OAAO;AAAA,QAC/B,OAAO;AACL,qBAAW,QAAQ,EAAE;AAAA,QACvB;AAAA,MACF;AAEA,oBAAc,UAAU,kBAAkB,SAAU,KAAK;AACvD,YAAI,CAAC,KAAK;AAAE,eAAK,MAAM;AAAA,QAAG;AAC1B,aAAK,SAAS,WAAW,OAAO;AAChC,aAAK,SAAS,WAAW,CAAC,CAAC;AAAA,MAC7B;AAEA,oBAAc,UAAU,gBAAgB,WAAY;AAAA,MAAC;AAErD,oBAAc,UAAU,wBAAwB;AAEhD,eAAS,aAAa,UAAU,SAAS;AACvC,kBAAU,UAAU9B,SAAQ,OAAO,IAAI,CAAC;AACxC,gBAAQ,QAAQ,SAAS;AACzB,YAAI,CAAC,QAAQ,YAAY,SAAS,UAChC;AAAE,kBAAQ,WAAW,SAAS;AAAA,QAAU;AAC1C,YAAI,CAAC,QAAQ,eAAe,SAAS,aACnC;AAAE,kBAAQ,cAAc,SAAS;AAAA,QAAa;AAGhD,YAAI,QAAQ,aAAa,MAAM;AAC7B,cAAI,WAAWL,WAAU;AACzB,kBAAQ,YAAY,YAAY,YAC9B,SAAS,aAAa,WAAW,KAAK,QAAQ,YAAY,SAAS;AAAA,QACvE;AAEA,iBAAS,OAAO;AAAC,mBAAS,QAAQ,GAAG,SAAS;AAAA,QAAE;AAEhD,YAAI;AACJ,YAAI,SAAS,MAAM;AACjB,UAAAmC,IAAG,SAAS,MAAM,UAAU,IAAI;AAEhC,cAAI,CAAC,QAAQ,wBAAwB;AACnC,gBAAI,OAAO,SAAS;AACpB,yBAAa,KAAK;AAClB,gBAAI;AACF,kBAAI,gBAAgB,KAAK,SAAS,WAAY;AAC5C,qBAAK;AACL,qBAAK,SAAS;AACd,qBAAK,OAAO;AACZ,qBAAK,SAAS;AAAA,cAChB;AAAA,YACF,SAAQ,GAAG;AAAA,YAAC;AAAA,UACd;AAAA,QACF;AAEA,gBAAQ,aAAa,SAAUmK,KAAI;AACjC,UAAAA,IAAG,OAAO;AACV,UAAAA,IAAG,cAAc,WAAY;AAAE,mBAAO;AAAA,UAAU;AAChD,UAAAA,IAAG,aAAa,WAAY;AAC1B,YAAAA,IAAG,aAAa;AAChB,iBAAK;AACL,qBAAS,WAAW,YAAYA,IAAG,kBAAkB,CAAC;AACtD,qBAAS,MAAM,UAAU;AACzB,gBAAI,SAAS,MAAM;AACjB,cAAAjK,KAAI,SAAS,MAAM,UAAU,IAAI;AACjC,kBAAI,CAAC,QAAQ,0BAA0B,OAAO,SAAS,KAAK,UAAU,YACpE;AAAE,yBAAS,KAAK,SAAS;AAAA,cAAY;AAAA,YACzC;AAAA,UACF;AAAA,QACF;AAEA,iBAAS,MAAM,UAAU;AACzB,YAAI,KAAKmJ;AAAA,UAAW,SAAU,MAAM;AAAE,mBAAO,SAAS,WAAW,aAAa,MAAM,SAAS,WAAW;AAAA,UAAG;AAAA,UACzG;AAAA,QAAO;AACT,eAAO;AAAA,MACT;AAEA,eAAS,eAAeA,aAAY;AAClC,QAAAA,YAAW,MAAMnJ;AACjB,QAAAmJ,YAAW,KAAKrJ;AAChB,QAAAqJ,YAAW,mBAAmB;AAC9B,QAAAA,YAAW,MAAM;AACjB,QAAAA,YAAW,aAAarI;AACxB,QAAAqI,YAAW,cAAchL;AACzB,QAAAgL,YAAW,aAAa;AACxB,QAAAA,YAAW,aAAa;AACxB,QAAAA,YAAW,OAAO;AAClB,QAAAA,YAAW,SAASjJ;AACpB,QAAAiJ,YAAW,OAAO3F;AAClB,QAAA2F,YAAW,YAAYd;AACvB,QAAAc,YAAW,iBAAiB;AAC5B,QAAAA,YAAW,MAAMpH;AACjB,QAAAoH,YAAW,SAASnH;AACpB,QAAAmH,YAAW,QAAQ;AACnB,QAAAA,YAAW,YAAY;AACvB,QAAAA,YAAW,cAAc;AACzB,QAAAA,YAAW,UAAUjI;AACrB,QAAAiI,YAAW,iBAAiB;AAC5B,QAAAA,YAAW,aAAa;AACxB,QAAAA,YAAW,YAAYhI;AACvB,QAAAgI,YAAW,aAAa9H;AACxB,QAAA8H,YAAW,YAAY/H;AACvB,QAAA+H,YAAW,WAAW;AACtB,QAAAA,YAAW,SAAS;AACpB,QAAAA,YAAW,UAAU;AACrB,QAAAA,YAAW,gBAAgB;AAC3B,QAAAA,YAAW,YAAY;AACvB,QAAAA,YAAW,kBAAkB;AAC7B,QAAAA,YAAW,eAAe;AAC1B,QAAAA,YAAW,mBAAmB;AAC9B,QAAAA,YAAW,aAAa;AACxB,QAAAA,YAAW,aAAa;AACxB,QAAAA,YAAW,mBAAmB;AAC9B,QAAAA,YAAW,oBAAoB;AAC/B,QAAAA,YAAW,SAAS;AACpB,QAAAA,YAAW,WAAWvL;AACtB,QAAAuL,YAAW,WAAWzL;AACtB,QAAAyL,YAAW,UAAUnM;AACrB,QAAAmM,YAAW,WAAWC;AAAA,MACxB;AAIA,oBAAcD,WAAU;AAExB,uBAAiBA,WAAU;AAG3B,UAAI,eAAe,gDAAgD,MAAM,GAAG;AAC5E,eAAS,QAAQ,IAAI,WAAW;AAAE,YAAI,IAAI,UAAU,eAAe,IAAI,KAAK5K,SAAQ,cAAc,IAAI,IAAI,GACxG;AAAE,UAAA4K,YAAW,UAAU,IAAI,IAAK,0BAAS,QAAQ;AAC/C,mBAAO,WAAW;AAAC,qBAAO,OAAO,MAAM,KAAK,KAAK,SAAS;AAAA,YAAC;AAAA,UAC7D,GAAG,IAAI,UAAU,IAAI,CAAC;AAAA,QAAG;AAAA,MAAE;AAE7B,MAAA5I,YAAW,GAAG;AACd,MAAA4I,YAAW,cAAc,EAAC,YAAY,eAAe,mBAAmB,qBAAoB;AAK5F,MAAAA,YAAW,aAAa,SAAS,MAAmB;AAClD,YAAI,CAACA,YAAW,SAAS,QAAQ,QAAQ,QAAQ;AAAE,UAAAA,YAAW,SAAS,OAAO;AAAA,QAAM;AACpF,mBAAW,MAAM,MAAM,SAAS;AAAA,MAClC;AAEA,MAAAA,YAAW,aAAa;AAGxB,MAAAA,YAAW,WAAW,QAAQ,WAAY;AAAE,eAAQ,EAAC,OAAO,SAAU,QAAQ;AAAE,iBAAO,OAAO,UAAU;AAAA,QAAG,EAAC;AAAA,MAAI,CAAC;AACjH,MAAAA,YAAW,WAAW,cAAc,MAAM;AAI1C,MAAAA,YAAW,kBAAkB,SAAU,MAAM,MAAM;AACjD,QAAAA,YAAW,UAAU,IAAI,IAAI;AAAA,MAC/B;AACA,MAAAA,YAAW,qBAAqB,SAAU,MAAM,MAAM;AACpD,YAAI,UAAU,IAAI,IAAI;AAAA,MACxB;AAEA,MAAAA,YAAW,eAAe;AAE1B,qBAAeA,WAAU;AAEzB,MAAAA,YAAW,UAAU;AAErB,aAAOA;AAAA,IAET,EAAE;AAAA;AAAA;;;AC5jTF;AAAA;AAAA;AAGA,KAAC,SAAS,KAAK;AACb,UAAI,OAAO,WAAW,YAAY,OAAO,UAAU;AACjD,YAAI,oBAA+B;AAAA,eAC5B,OAAO,UAAU,cAAc,OAAO;AAC7C,eAAO,CAAC,sBAAsB,GAAG,GAAG;AAAA;AAEpC,YAAI,UAAU;AAAA,IAClB,GAAG,SAASe,aAAY;AACxB;AAEA,MAAAA,YAAW,WAAW,OAAO,SAASC,SAAQ,cAAc;AAC1D,YAAI,SAAiB,aAAa,UAAU,CAAC,GACzC,QAAiB,aAAa,SAAS,EAAC,SAAS,MAAM,QAAQ,MAAM,QAAQ,KAAI,GACjF,UAAiB,aAAa,WAAWC,KAAI,cAAc,GAC3D,WAAiB,aAAa,YAAYA,KAAIC,YAAW,GACzD,gBAAiB,aAAa,iBAAiB,sBAC/C,UAAiB,aAAa,WAAW,CAAC,GAC1CC,SAAiB,aAAa,SAAS,CAAC,GACxC,UAAiB,aAAa,WAAW,EAAC,QAAS,MAAM,QAAS,MAAM,aAAc,KAAI,GAC1F,yBAAyB,aAAa,2BAA2B,OACjE,WAAiB,aAAa,YAAY,kBAC1C,cAAiB,aAAa,eAAe;AAEjD,iBAAS,UAAU,QAAQ,OAAO;AAChC,cAAI,KAAK,OAAO,KAAK;AAGrB,cAAIA,OAAM,EAAE,GAAG;AACb,gBAAI,SAASA,OAAM,EAAE,EAAE,QAAQ,KAAK;AACpC,gBAAI,WAAW,MAAO,QAAO;AAAA,UAC/B;AAEA,cAAI,QAAQ,cACR,MAAM,OAAO,OAAO,MAAM,mBAAmB,MAC3C,MAAM,OAAO,MAAM,QAAQ,OAAO,MAAM,iBAAiB,IAAI;AAGjE,mBAAO;AAAA,UACT,WAAW,QAAQ,kBACd,MAAM,OAAO,MAAM,QAAQ,OAAO,MAAM,UAAU,KACjD,MAAM,OAAO,OAAO,MAAM,SAAS,IAAK;AAG5C,mBAAO;AAAA,UACT,WAAW,GAAG,WAAW,CAAC,IAAI,MAAM,GAAG,WAAW,CAAC,IAAI,IAAI;AAGzD,mBAAO,MAAM,sCAAsC;AACnD,oBAAQ,oBAAoB,OAAO,MAAM,WAAW;AACpD,mBAAO;AAAA,UACT,WAAW,MAAM,QAAQ,OAAO,SAAS,KAAK,OAAO,IAAI,KAAK,OAAO,IAAI,GAAG,IAAI;AAE9E,mBAAO;AAAA,UACT,WAAW,MAAM,OAAQ,MAAM,OAAO,QAAQ,aAAc;AAG1D,kBAAM,WAAW,aAAa,EAAE;AAChC,mBAAO,MAAM,SAAS,QAAQ,KAAK;AAAA,UACrC,YAAc,QAAQ,cAAc,MAAM,OAAO,MAAM,QAC/C,QAAQ,eAAe,MAAM,OAAO,OAAO,MAAM,iBAAiB,OAClE,OAAO,KAAK,KAAK,OAAO,OAAO,KAAK,KAAK,MAAO;AAGtD,mBAAO;AAAA,UACT,WAAW,QAAQ,mBAAmB,MAAM,OAAO,MAAM,SACjD,OAAO,KAAK,KAAK,OAAQ,OAAO,KAAK,KAAK,OAAO,QAAQ,cAAe;AAG9E,kBAAM,WAAW,SAASC,SAAQC,QAAO;AACvC,sBAAQA,OAAM,WAAW,aAAaD,QAAO,KAAK,GAAG,IAAI,GAAGA,SAAQC,MAAK;AAAA,YAC3E;AACA,mBAAO;AAAA,UACT,WAAW,QAAQ,qBAAqB,MAAM,OAAO,OAAO,IAAI,GAAG,GAAG;AAEpE,mBAAO,UAAU;AACjB,mBAAO;AAAA,UACT,WAAY,QAAQ,eAAe,MAAM,OACjC,MAAM,OAAO,OAAO,IAAI,GAAG,MAAM,CAAC,QAAQ,wBAAwB,OAAO,IAAI,GAAG,IAAK;AAG3F,mBAAO,UAAU;AACjB,mBAAO;AAAA,UACT,WAAW,MAAM,OAAO,OAAO,IAAI,GAAG,GAAG;AAGvC,kBAAM,WAAW,aAAa,CAAC;AAC/B,mBAAO,MAAM,SAAS,QAAQ,KAAK;AAAA,UACrC,WAAW,MAAM,KAAK;AAEpB,gBAAI,QAAQ,iBAAiB,OAAO,MAAM,yBAAyB;AACjE,qBAAO;AACT,gBAAI,OAAO,MAAM,MAAM;AACrB,qBAAO;AAGT,gBAAI,QAAQ,gBAAgB,OAAO,MAAM,aAAa;AACpD,qBAAO;AAAA,UACX,WAAW,cAAc,KAAK,EAAE,GAAG;AAEjC,mBAAO,SAAS,aAAa;AAC7B,mBAAO;AAAA,UACT,WAAW,SAAS,KAAK,EAAE,GAAG;AAE5B,mBAAO;AAAA,UACT,WAAW,YAAY,KAAK,EAAE,GAAG;AAE/B,mBAAO,SAAS,WAAW;AAC3B,mBAAO;AAAA,UACT,WAAW,MAAM,QACZ,OAAO,MAAM,sCAAsC,KAAK,OAAO,MAAM,sCAAsC,IAAI;AAGlH,mBAAO;AAAA,UACT,OAAO;AACL,mBAAO,SAAS,UAAU;AAC1B,gBAAI,OAAO,OAAO,QAAQ,EAAE,YAAY;AAGxC,gBAAI,QAAQ,eAAe,IAAI,MAAM,OAAO,MAAM,cAAc,KAAK,OAAO,MAAM,cAAc;AAC9F,qBAAO;AACT,gBAAI,MAAM,eAAe,IAAI,EAAG,QAAO;AACvC,gBAAI,QAAQ,eAAe,IAAI,EAAG,QAAO;AACzC,gBAAI,SAAS,eAAe,IAAI,EAAG,QAAO;AAC1C,gBAAI,OAAO,eAAe,IAAI,EAAG,QAAO;AACxC,mBAAO;AAAA,UACT;AAAA,QACF;AAGA,iBAAS,aAAa,OAAO,kBAAkB;AAC7C,iBAAO,SAAS,QAAQ,OAAO;AAC7B,gBAAI,UAAU,OAAO;AACrB,oBAAQ,KAAK,OAAO,KAAK,MAAM,MAAM;AACnC,kBAAI,MAAM,SAAS,CAAC,SAAS;AAC3B,sBAAM,WAAW;AACjB;AAAA,cACF;AACA,yBAAW,0BAA0B,qBAAqB,CAAC,WAAW,MAAM;AAAA,YAC9E;AACA,mBAAO;AAAA,UACT;AAAA,QACF;AACA,iBAAS,aAAa,OAAO;AAC3B,iBAAO,SAAS,QAAQ,OAAO;AAC7B,gBAAI,IAAI,OAAO,MAAM,iBAAiB;AACtC,gBAAI,CAAC,EAAG,QAAO,UAAU;AAAA,qBAChB,EAAE,CAAC,KAAK,KAAM,OAAM,WAAW,aAAa,QAAQ,CAAC;AAAA,qBACrD,QAAQ,EAAG,OAAM,WAAW,aAAa,QAAQ,CAAC;AAAA,gBACtD,OAAM,WAAW;AACtB,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,iBAAS,YAAY,QAAQ,OAAOC,OAAM;AACxC,gBAAM,UAAU;AAAA,YACd,MAAM,MAAM;AAAA,YACZ,QAAQ,OAAO,YAAY;AAAA,YAC3B,KAAK,OAAO,OAAO;AAAA,YACnB,MAAMA;AAAA,UACR;AAAA,QACF;AAEA,iBAAS,WAAW,OAAO;AACzB,gBAAM,SAAS,MAAM,QAAQ;AAC7B,gBAAM,UAAU,MAAM,QAAQ;AAAA,QAChC;AAEA,eAAO;AAAA,UACL,YAAY,WAAW;AACrB,mBAAO,EAAC,UAAU,WAAW,SAAS,KAAI;AAAA,UAC5C;AAAA,UAEA,OAAO,SAAS,QAAQ,OAAO;AAC7B,gBAAI,OAAO,IAAI,GAAG;AAChB,kBAAI,MAAM,WAAW,MAAM,QAAQ,SAAS;AAC1C,sBAAM,QAAQ,QAAQ;AAAA,YAC1B;AACA,gBAAI,MAAM,YAAY,aAAa,OAAO,SAAS,EAAG,QAAO;AAE7D,gBAAIC,SAAQ,MAAM,SAAS,QAAQ,KAAK;AACxC,gBAAIA,UAAS,UAAW,QAAOA;AAE/B,gBAAI,MAAM,WAAW,MAAM,QAAQ,SAAS;AAC1C,oBAAM,QAAQ,QAAQ;AAExB,gBAAI,MAAM,OAAO,QAAQ;AACzB,gBAAI,OAAO;AACT,0BAAY,QAAQ,OAAO,GAAG;AAAA,qBACvB,OAAO;AACd,0BAAY,QAAQ,OAAO,GAAG;AAAA,qBACvB,MAAM,WAAW,MAAM,QAAQ,QAAQ;AAC9C,yBAAW,KAAK;AAClB,mBAAOA;AAAA,UACT;AAAA,UAEA,QAAQ,SAAS,OAAO,WAAW;AACjC,gBAAI,KAAK,MAAM;AACf,gBAAI,CAAC,GAAI,QAAOR,YAAW;AAC3B,gBAAI,UAAU,UAAU,OAAO,CAAC,KAAK,GAAG;AACxC,gBAAI,GAAG,MAAO,QAAO,GAAG,OAAO,UAAU,IAAI;AAAA,gBACxC,QAAO,GAAG,UAAU,UAAU,IAAIC,QAAO;AAAA,UAChD;AAAA,UAEA,mBAAmB;AAAA,UACnB,iBAAiB;AAAA,UACjB,aAAa,QAAQ,oBAAoB,OAAO,QAAQ,cAAc,MAAM;AAAA,UAC5E,eAAe;AAAA,QACjB;AAAA,MACF,CAAC;AAGC,eAAS,eAAe,QAAQ;AAG9B,YAAI;AACJ,gBAAQ,KAAK,OAAO,KAAK,MAAM,MAAM;AACnC,cAAI,MAAM,OAAO,CAAC,OAAO,IAAI,GAAG,EAAG,QAAO;AAAA,QAC5C;AACA,eAAO,OAAO,OAAO,QAAQ,EAAE,SAAS,CAAC;AACzC,eAAO,OAAO,SAAS,IAAI,IAAI,eAAe;AAAA,MAChD;AAGA,eAAS,0BAA0B,QAAQ;AAIzC,YAAI;AACJ,gBAAQ,KAAK,OAAO,KAAK,MAAM,MAAM;AACnC,cAAI,MAAM,OAAQ,CAAC,OAAO,IAAI,GAAI,EAAG,QAAO;AAAA,QAC9C;AACA,eAAO,OAAO,OAAO,QAAQ,EAAE,SAAS,CAAC;AACzC,eAAO,OAAO,SAAS,IAAI,IAAI,eAAe;AAAA,MAChD;AAGA,eAAS,QAAQ,QAAQ;AAKvB,YAAI,OAAO,IAAI,GAAG,GAAG;AACnB,iBAAO,MAAM,YAAY;AACzB,iBAAO,MAAM,UAAU;AACvB,iBAAO,MAAM,WAAW;AAAA,QAC1B;AAEA,YAAI,OAAO,IAAI,GAAG,GAAG;AACnB,iBAAO,MAAM,MAAM;AACnB,iBAAO;AAAA,QACT,WAAW,OAAO,IAAI,GAAG,GAAG;AAC1B,iBAAO,MAAM,MAAM;AACnB,iBAAO;AAAA,QACT,WAAW,OAAO,IAAI,GAAG,GAAG;AAC1B,iBAAO,MAAM,MAAM;AACnB,iBAAO;AAAA,QACT,WAAW,OAAO,MAAM,oBAAoB,GAAG;AAC7C,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAAC;AAGD,eAAS,WAAW,QAAQ;AAG1B,YAAI,OAAO,IAAI,GAAG,GAAG;AACjB,iBAAO;AAAA,QACX;AAGA,eAAO,OAAO,MAAM,eAAe,IAAI,eAAe;AAAA,MACxD;AAGA,UAAIE,eAAc;AAGlB,eAASD,KAAIO,MAAK;AAChB,YAAI,MAAM,CAAC,GAAG,QAAQA,KAAI,MAAM,GAAG;AACnC,iBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,EAAE,EAAG,KAAI,MAAM,CAAC,CAAC,IAAI;AACvD,eAAO;AAAA,MACT;AAEA,UAAI,iBAAiB;AAGrB,MAAAT,YAAW,WAAW,cAAc;AAAA,QAClC,MAAM;AAAA,QACN,UAAUE,KAAIC,eAAc,OAAO;AAAA,QACnC,SAASD,KAAI,cAAc;AAAA,QAC3B,OAAOA,KAAI,yBAAyB;AAAA,QACpC,SAASA,KAAI,qBAAqB;AAAA,QAClC,SAASA,KAAI,iDAAiD;AAAA,MAChE,CAAC;AAED,MAAAF,YAAW,WAAW,gBAAgB;AAAA,QACpC,MAAM;AAAA,QACN,QAAQE,KAAI,uVAAuV;AAAA,QACnW,UAAUA,KAAIC,eAAc,qSAAqS;AAAA,QACjU,SAASD,KAAI,gNAAgN;AAAA,QAC7N,OAAOA,KAAI,wGAAwG;AAAA,QACnH,eAAe;AAAA,QACf,UAAU;AAAA,QACV,aAAa;AAAA,QACb,wBAAwB;AAAA,QACxB,SAASA,KAAI,2DAA2D;AAAA,QACxE,OAAO;AAAA,UACL,KAAO;AAAA,QACT;AAAA,MACF,CAAC;AAED,MAAAF,YAAW,WAAW,gBAAgB;AAAA,QACpC,MAAM;AAAA,QACN,QAAQE,KAAI,6HAA6H;AAAA,QACzI,UAAUA,KAAIC,eAAc,o9FAAo9F;AAAA,QACh/F,SAASD,KAAI,wTAAwT;AAAA,QACrU,OAAOA,KAAI,yBAAyB;AAAA,QACpC,eAAe;AAAA,QACf,SAASA,KAAI,qBAAqB;AAAA,QAClC,SAASA,KAAI,uIAAuI;AAAA,QACpJ,OAAO;AAAA,UACL,KAAO;AAAA,UACP,KAAO;AAAA,UACP,MAAO;AAAA,QACT;AAAA,MACF,CAAC;AAED,MAAAF,YAAW,WAAW,kBAAkB;AAAA,QACtC,MAAM;AAAA,QACN,QAAQE,KAAI,6HAA6H;AAAA,QACzI,UAAUA,KAAIC,eAAc,6gGAA6gG;AAAA,QACziG,SAASD,KAAI,wTAAwT;AAAA,QACrU,OAAOA,KAAI,yBAAyB;AAAA,QACpC,eAAe;AAAA,QACf,SAASA,KAAI,qBAAqB;AAAA,QAClC,SAASA,KAAI,uIAAuI;AAAA,QACpJ,OAAO;AAAA,UACL,KAAO;AAAA,UACP,KAAO;AAAA,UACP,MAAO;AAAA,QACT;AAAA,MACF,CAAC;AAGD,MAAAF,YAAW,WAAW,iBAAiB;AAAA,QACrC,MAAM;AAAA;AAAA,QAEN,QAAQE,KAAI,sWAAsW;AAAA;AAAA,QAElX,UAAUA,KAAIC,eAAc,6pBAA6pB;AAAA;AAAA,QAEzrB,SAASD,KAAI,oQAAoQ;AAAA;AAAA,QAEjR,OAAOA,KAAI,kDAAkD;AAAA;AAAA,QAE7D,eAAe;AAAA;AAAA,QAEf,SAASA,KAAI,8BAA8B;AAAA,QAC3C,SAASA,KAAI,gCAAgC;AAAA,QAC7C,iBAAiB;AAAA;AAAA,QACjB,OAAO;AAAA;AAAA,UAEL,KAAO;AAAA,UACP,KAAO;AAAA,UACP,KAAO;AAAA,UACP,KAAO;AAAA;AAAA,UAEP,KAAQ;AAAA;AAAA,UAER,KAAO;AAAA,QACT;AAAA,MACF,CAAC;AAID,MAAAF,YAAW,WAAW,oBAAoB;AAAA,QACxC,MAAM;AAAA,QACN,QAAQ,CAAE;AAAA,QACV,UAAUE,KAAI,2hBAA2hB;AAAA,QACziB,SAASA,KAAI,0IAA0I;AAAA,QACvJ,OAAOA,KAAI,yBAAyB;AAAA,QACpC,eAAe;AAAA,QACf,SAAS,CAAE;AAAA,QACX,SAASA,KAAI,oCAAoC;AAAA,QACjD,OAAO,CAAE;AAAA,MACX,CAAC;AAGD,MAAAF,YAAW,WAAW,gBAAgB;AAAA,QACpC,MAAY;AAAA,QACZ,QAAYE,KAAI,gqBAAgqB;AAAA,QAChrB,UAAYA,KAAI,itDAAitD;AAAA,QACjuD,SAAYA,KAAI,i9BAAi9B;AAAA,QACj+B,eAAe;AAAA,QACf,SAAYA,KAAI,qBAAqB;AAAA,QACrC,SAAYA,KAAI,4DAA4D;AAAA,MAC9E,CAAC;AAGD,MAAAF,YAAW,WAAW,eAAe;AAAA,QACnC,MAAM;AAAA,QACN,UAAUE,KAAI,k1DAAk1D;AAAA,QACh2D,SAASA,KAAI,wKAAwK;AAAA,QACrL,OAAOA,KAAI,yBAAyB;AAAA,QACpC,eAAe;AAAA,QACf,SAASA,KAAI,gBAAgB;AAAA,QAC7B,SAASA,KAAI,iDAAiD;AAAA,MAChE,CAAC;AAED,MAAAF,YAAW,WAAW,gBAAgB;AAAA,QACpC,MAAM;AAAA,QACN,QAAQE,KAAI,QAAQ;AAAA;AAAA;AAAA,QAGpB,UAAUA,KAAIC,eAAc,m3NAAm3N;AAAA;AAAA,QAE/4N,SAASD,KAAI,4ZAA4Z;AAAA,QACza,OAAOA,KAAI,yBAAyB;AAAA,QACpC,eAAe;AAAA,QACf,wBAAwB;AAAA,QACxB,SAASA,KAAI,qBAAqB;AAAA,QAClC,SAASA,KAAI,yGAAyG;AAAA,MACxH,CAAC;AAGD,MAAAF,YAAW,WAAW,cAAc;AAAA,QAClC,MAAM;AAAA,QACN,UAAUE,KAAI,wHAAwH;AAAA,QACtI,OAAOA,KAAI,YAAY;AAAA,QACvB,SAASA,KAAI,oEAAoE;AAAA,QACjF,eAAe;AAAA,MACjB,CAAC;AAGD,MAAAF,YAAW,WAAW,gBAAgB;AAAA,QACpC,MAAM;AAAA,QACN,QAAQE,KAAI,QAAQ;AAAA;AAAA,QAEpB,UAAUA,KAAI,y7GAAy7G;AAAA,QACv8G,SAASA,KAAI,kaAAka;AAAA,QAC/a,OAAOA,KAAI,yBAAyB;AAAA,QACpC,eAAe;AAAA,QACf,SAASA,KAAI,qBAAqB;AAAA,QAClC,SAASA,KAAI,0FAA0F;AAAA,MACzG,CAAC;AAGD,MAAAF,YAAW,WAAW,mBAAmB;AAAA,QACvC,MAAM;AAAA,QACN,UAAUE,KAAI,m+CAAm+C;AAAA,QACj/C,SAASA,KAAI,mLAAmL;AAAA,QAChM,OAAOA,KAAI,iBAAiB;AAAA,QAC5B,eAAe;AAAA,QACf,SAASA,KAAI,qBAAqB;AAAA,QAClC,SAASA,KAAI,wCAAwC;AAAA,MACvD,CAAC;AAGD,MAAAF,YAAW,WAAW,gBAAgB;AAAA,QACpC,MAAM;AAAA,QACN,QAAQE,KAAI,QAAQ;AAAA;AAAA,QAEpB,UAAUA,KAAI,60BAA60B;AAAA,QAC31B,SAAS,CAAC;AAAA,QACV,OAAOA,KAAI,iBAAiB;AAAA,QAC5B,eAAe;AAAA,QACf,SAASA,KAAI,MAAM;AAAA,QACnB,SAASA,KAAI,uDAAuD;AAAA,MACtE,CAAC;AAAA,IACH,CAAC;AAAA;AAAA;;;ACzdD;AAAA;AAAA;AACA,MAAC,SAAS,GAAE,GAAE;AAAC,UAAG,YAAU,OAAO,WAAS,YAAU,OAAO,OAAO,QAAO,UAAQ,EAAE;AAAA,eAAU,cAAY,OAAO,UAAQ,OAAO,IAAI,QAAO,CAAC,GAAE,CAAC;AAAA,WAAM;AAAC,YAAI,IAAE,EAAE;AAAE,iBAAQ,KAAK,EAAE,EAAC,YAAU,OAAO,UAAQ,UAAQ,GAAG,CAAC,IAAE,EAAE,CAAC;AAAA,MAAC;AAAA,IAAC,GAAE,UAAM,WAAU;AAAC,cAAO,MAAI;AAAC,YAAI,IAAE,EAAC,IAAG,CAACQ,IAAEC,IAAEC,OAAI;AAAC;AAAa,UAAAA,GAAE,EAAED,IAAE,EAAC,GAAE,MAAI,EAAC,CAAC;AAAE,cAAIE,KAAED,GAAE,GAAG,GAAE,IAAEA,GAAE,EAAEC,EAAC,EAAE,GAAG,SAASH,IAAE;AAAC,mBAAOA,GAAE,CAAC;AAAA,UAAC,EAAE;AAAE,YAAE,KAAK,CAACA,GAAE,IAAG,y6BAAw6B,EAAE,CAAC;AAAE,gBAAM,IAAE;AAAA,QAAC,GAAE,KAAI,CAAAA,OAAG;AAAC;AAAa,UAAAA,GAAE,UAAQ,SAASA,IAAE;AAAC,gBAAIC,KAAE,CAAC;AAAE,mBAAOA,GAAE,WAAS,WAAU;AAAC,qBAAO,KAAK,KAAK,SAASA,IAAE;AAAC,oBAAIC,KAAEF,GAAEC,EAAC;AAAE,uBAAOA,GAAE,CAAC,IAAE,UAAU,OAAOA,GAAE,CAAC,GAAE,IAAI,EAAE,OAAOC,IAAE,GAAG,IAAEA;AAAA,cAAC,EAAE,EAAE,KAAK,EAAE;AAAA,YAAC,GAAED,GAAE,IAAE,SAASD,IAAEE,IAAEC,IAAE;AAAC,0BAAU,OAAOH,OAAIA,KAAE,CAAC,CAAC,MAAKA,IAAE,EAAE,CAAC;AAAG,kBAAI,IAAE,CAAC;AAAE,kBAAGG,GAAE,UAAQ,IAAE,GAAE,IAAE,KAAK,QAAO,KAAI;AAAC,oBAAI,IAAE,KAAK,CAAC,EAAE,CAAC;AAAE,wBAAM,MAAI,EAAE,CAAC,IAAE;AAAA,cAAG;AAAC,uBAAQ,IAAE,GAAE,IAAEH,GAAE,QAAO,KAAI;AAAC,oBAAI,IAAE,CAAC,EAAE,OAAOA,GAAE,CAAC,CAAC;AAAE,gBAAAG,MAAG,EAAE,EAAE,CAAC,CAAC,MAAID,OAAI,EAAE,CAAC,IAAE,EAAE,CAAC,IAAE,GAAG,OAAOA,IAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,IAAE,EAAE,CAAC,IAAEA,KAAGD,GAAE,KAAK,CAAC;AAAA,cAAE;AAAA,YAAC,GAAEA;AAAA,UAAC;AAAA,QAAC,GAAE,KAAI,SAASD,IAAEC,IAAE;AAAC,YAAC,SAASD,IAAE;AAAC;AAAa,qBAASC,GAAED,IAAE;AAAC,kBAAIC,IAAEC,IAAEC,IAAEC;AAAE,mBAAIF,KAAE,GAAEC,KAAE,UAAU,QAAOD,KAAEC,IAAED,KAAI,MAAID,MAAKG,KAAE,UAAUF,EAAC,EAAE,CAAAF,GAAEC,EAAC,IAAEG,GAAEH,EAAC;AAAE,qBAAOD;AAAA,YAAC;AAAC,gBAAIE,KAAE,OAAO,UAAQ,4BAAU;AAAC,uBAASF,KAAG;AAAA,cAAC;AAAC,qBAAO,SAASC,IAAE;AAAC,uBAAOD,GAAE,YAAUC,IAAE,IAAID;AAAA,cAAC;AAAA,YAAC,GAAE;AAAE,qBAASG,GAAEH,IAAEC,IAAE;AAAC,kBAAIC,KAAE,MAAM,UAAU;AAAM,kBAAGF,GAAE,KAAK,QAAOA,GAAE,KAAK,MAAMA,IAAEE,GAAE,KAAK,WAAU,CAAC,CAAC;AAAE,kBAAIC,KAAED,GAAE,KAAK,WAAU,CAAC;AAAE,qBAAO,WAAU;AAAC,uBAAOF,GAAE,MAAMC,IAAEE,GAAE,SAAOA,GAAE,OAAOD,GAAE,KAAK,SAAS,CAAC,IAAE,SAAS;AAAA,cAAC;AAAA,YAAC;AAAC,gBAAI,IAAE;AAAE,qBAAS,EAAEF,IAAE;AAAC,qBAAOA,GAAE,cAAYA,GAAE,eAAa,EAAE,GAAEA,GAAE;AAAA,YAAW;AAAC,qBAAS,EAAEA,IAAEC,IAAEC,IAAE;AAAC,kBAAIC,IAAEC,IAAEC,IAAEC;AAAE,qBAAOA,KAAE,WAAU;AAAC,gBAAAH,KAAE,OAAGC,OAAIC,GAAE,MAAMH,IAAEE,EAAC,GAAEA,KAAE;AAAA,cAAG,GAAEC,KAAE,WAAU;AAAC,gBAAAF,KAAEC,KAAE,aAAWJ,GAAE,MAAME,IAAE,SAAS,GAAE,WAAWI,IAAEL,EAAC,GAAEE,KAAE;AAAA,cAAG;AAAA,YAAC;AAAC,qBAAS,EAAEH,IAAEC,IAAEC,IAAE;AAAC,kBAAIC,KAAEF,GAAE,CAAC,GAAEG,KAAEH,GAAE,CAAC,GAAEI,KAAEF,KAAEC;AAAE,qBAAOJ,OAAIG,MAAGD,KAAEF,OAAIA,KAAEI,MAAGC,KAAEA,MAAGA,KAAED;AAAA,YAAC;AAAC,qBAAS,IAAG;AAAC,qBAAM;AAAA,YAAE;AAAC,qBAAS,EAAEJ,IAAEC,IAAE;AAAC,kBAAIC,KAAE,KAAK,IAAI,IAAG,WAASD,KAAE,IAAEA,EAAC;AAAE,qBAAO,KAAK,MAAMD,KAAEE,EAAC,IAAEA;AAAA,YAAC;AAAC,qBAAS,EAAEF,IAAE;AAAC,qBAAOA,GAAE,OAAKA,GAAE,KAAK,IAAEA,GAAE,QAAQ,cAAa,EAAE;AAAA,YAAC;AAAC,qBAAS,EAAEA,IAAE;AAAC,qBAAO,EAAEA,EAAC,EAAE,MAAM,KAAK;AAAA,YAAC;AAAC,qBAAS,EAAEA,IAAEC,IAAE;AAAC,uBAAQE,MAAK,OAAO,UAAU,eAAe,KAAKH,IAAE,SAAS,MAAIA,GAAE,UAAQA,GAAE,UAAQE,GAAEF,GAAE,OAAO,IAAE,CAAC,IAAGC,GAAE,CAAAD,GAAE,QAAQG,EAAC,IAAEF,GAAEE,EAAC;AAAE,qBAAOH,GAAE;AAAA,YAAO;AAAC,qBAAS,EAAEA,IAAEC,IAAEC,IAAE;AAAC,kBAAIC,KAAE,CAAC;AAAE,uBAAQC,MAAKJ,GAAE,CAAAG,GAAE,KAAK,mBAAmBD,KAAEE,GAAE,YAAY,IAAEA,EAAC,IAAE,MAAI,mBAAmBJ,GAAEI,EAAC,CAAC,CAAC;AAAE,sBAAOH,MAAG,OAAKA,GAAE,QAAQ,GAAG,IAAE,MAAI,OAAKE,GAAE,KAAK,GAAG;AAAA,YAAC;AAAC,gBAAI,IAAE;AAAqB,qBAAS,EAAEH,IAAEC,IAAE;AAAC,qBAAOD,GAAE,QAAQ,IAAG,SAASA,IAAEE,IAAE;AAAC,oBAAIC,KAAEF,GAAEC,EAAC;AAAE,oBAAG,WAASC,GAAE,OAAM,IAAI,MAAM,oCAAkCH,EAAC;AAAE,uBAAM,cAAY,OAAOG,OAAIA,KAAEA,GAAEF,EAAC,IAAGE;AAAA,cAAC,EAAE;AAAA,YAAC;AAAC,gBAAI,IAAE,MAAM,WAAS,SAASH,IAAE;AAAC,qBAAM,qBAAmB,OAAO,UAAU,SAAS,KAAKA,EAAC;AAAA,YAAC;AAAE,qBAAS,EAAEA,IAAEC,IAAE;AAAC,uBAAQC,KAAE,GAAEA,KAAEF,GAAE,QAAOE,KAAI,KAAGF,GAAEE,EAAC,MAAID,GAAE,QAAOC;AAAE,qBAAM;AAAA,YAAE;AAAC,gBAAI,IAAE;AAA6D,qBAAS,EAAEF,IAAE;AAAC,qBAAO,OAAO,WAASA,EAAC,KAAG,OAAO,QAAMA,EAAC,KAAG,OAAO,OAAKA,EAAC;AAAA,YAAC;AAAC,gBAAI,IAAE;AAAE,qBAAS,EAAEA,IAAE;AAAC,kBAAIC,KAAE,CAAC,oBAAI,QAAKC,KAAE,KAAK,IAAI,GAAE,MAAID,KAAE,EAAE;AAAE,qBAAO,IAAEA,KAAEC,IAAE,OAAO,WAAWF,IAAEE,EAAC;AAAA,YAAC;AAAC,gBAAI,IAAE,OAAO,yBAAuB,EAAE,uBAAuB,KAAG,GAAE,IAAE,OAAO,wBAAsB,EAAE,sBAAsB,KAAG,EAAE,6BAA6B,KAAG,SAASF,IAAE;AAAC,qBAAO,aAAaA,EAAC;AAAA,YAAC;AAAE,qBAAS,EAAEA,IAAEC,IAAEC,IAAE;AAAC,kBAAG,CAACA,MAAG,MAAI,EAAE,QAAO,EAAE,KAAK,QAAOC,GAAEH,IAAEC,EAAC,CAAC;AAAE,cAAAD,GAAE,KAAKC,EAAC;AAAA,YAAC;AAAC,qBAAS,EAAED,IAAE;AAAC,cAAAA,MAAG,EAAE,KAAK,QAAOA,EAAC;AAAA,YAAC;AAAC,gBAAI,IAAE,EAAC,QAAOC,IAAE,QAAOC,IAAE,MAAKC,IAAE,QAAO,GAAE,OAAM,GAAE,UAAS,GAAE,SAAQ,GAAE,SAAQ,GAAE,WAAU,GAAE,MAAK,GAAE,YAAW,GAAE,YAAW,GAAE,gBAAe,GAAE,UAAS,GAAE,SAAQ,GAAE,SAAQ,GAAE,eAAc,GAAE,WAAU,GAAE,UAAS,GAAE,kBAAiB,GAAE,iBAAgB,EAAC;AAAE,qBAAS,IAAG;AAAA,YAAC;AAAC,cAAE,SAAO,SAASH,IAAE;AAAC,kBAAIG,KAAE,WAAU;AAAC,qBAAK,cAAY,KAAK,WAAW,MAAM,MAAK,SAAS,GAAE,KAAK,cAAc;AAAA,cAAC,GAAEC,KAAED,GAAE,YAAU,KAAK,WAAUE,KAAEH,GAAEE,EAAC;AAAE,uBAAQE,MAAKD,GAAE,cAAYF,IAAEA,GAAE,YAAUE,IAAE,KAAK,QAAO,UAAU,eAAe,KAAK,MAAKC,EAAC,KAAG,gBAAcA,MAAG,gBAAcA,OAAIH,GAAEG,EAAC,IAAE,KAAKA,EAAC;AAAG,qBAAON,GAAE,YAAUC,GAAEE,IAAEH,GAAE,OAAO,GAAE,OAAOA,GAAE,UAASA,GAAE,cAAW,SAASA,IAAE;AAAC,oBAAG,eAAa,OAAO,KAAG,KAAG,EAAE,OAAM;AAAC,kBAAAA,KAAE,EAAEA,EAAC,IAAEA,KAAE,CAACA,EAAC;AAAE,2BAAQC,KAAE,GAAEA,KAAED,GAAE,QAAOC,KAAI,CAAAD,GAAEC,EAAC,MAAI,EAAE,MAAM,UAAQ,QAAQ,KAAK,kIAAkI,IAAI,QAAO,KAAK;AAAA,gBAAC;AAAA,cAAC,GAAED,GAAE,QAAQ,GAAEC,GAAE,MAAM,MAAK,CAACI,EAAC,EAAE,OAAOL,GAAE,QAAQ,CAAC,GAAE,OAAOA,GAAE,WAAUK,GAAE,YAAUL,GAAE,UAAQC,GAAEC,GAAEG,GAAE,OAAO,GAAEL,GAAE,OAAO,IAAGC,GAAEI,IAAEL,EAAC,GAAEK,GAAE,aAAW,CAAC,GAAEA,GAAE,gBAAc,WAAU;AAAC,oBAAG,CAAC,KAAK,kBAAiB;AAAC,kBAAAD,GAAE,iBAAeA,GAAE,cAAc,KAAK,IAAI,GAAE,KAAK,mBAAiB;AAAG,2BAAQJ,KAAE,GAAEC,KAAEI,GAAE,WAAW,QAAOL,KAAEC,IAAED,KAAI,CAAAK,GAAE,WAAWL,EAAC,EAAE,KAAK,IAAI;AAAA,gBAAC;AAAA,cAAC,GAAEG;AAAA,YAAC,GAAE,EAAE,UAAQ,SAASH,IAAE;AAAC,qBAAOC,GAAE,KAAK,WAAUD,EAAC,GAAE;AAAA,YAAI,GAAE,EAAE,eAAa,SAASA,IAAE;AAAC,qBAAOC,GAAE,KAAK,UAAU,SAAQD,EAAC,GAAE;AAAA,YAAI,GAAE,EAAE,cAAY,SAASA,IAAE;AAAC,kBAAIC,KAAE,MAAM,UAAU,MAAM,KAAK,WAAU,CAAC,GAAEC,KAAE,cAAY,OAAOF,KAAEA,KAAE,WAAU;AAAC,qBAAKA,EAAC,EAAE,MAAM,MAAKC,EAAC;AAAA,cAAC;AAAE,qBAAO,KAAK,UAAU,aAAW,KAAK,UAAU,cAAY,CAAC,GAAE,KAAK,UAAU,WAAW,KAAKC,EAAC,GAAE;AAAA,YAAI;AAAE,gBAAI,IAAE,EAAC,IAAG,SAASF,IAAEC,IAAEC,IAAE;AAAC,kBAAG,YAAU,OAAOF,GAAE,UAAQG,MAAKH,GAAE,MAAK,IAAIG,IAAEH,GAAEG,EAAC,GAAEF,EAAC;AAAA,kBAAO,UAAQG,KAAE,GAAEC,MAAGL,KAAE,EAAEA,EAAC,GAAG,QAAOI,KAAEC,IAAED,KAAI,MAAK,IAAIJ,GAAEI,EAAC,GAAEH,IAAEC,EAAC;AAAE,qBAAO;AAAA,YAAI,GAAE,KAAI,SAASF,IAAEC,IAAEC,IAAE;AAAC,kBAAGF,GAAE,KAAG,YAAU,OAAOA,GAAE,UAAQG,MAAKH,GAAE,MAAK,KAAKG,IAAEH,GAAEG,EAAC,GAAEF,EAAC;AAAA,kBAAO,UAAQG,KAAE,GAAEC,MAAGL,KAAE,EAAEA,EAAC,GAAG,QAAOI,KAAEC,IAAED,KAAI,MAAK,KAAKJ,GAAEI,EAAC,GAAEH,IAAEC,EAAC;AAAA,kBAAO,QAAO,KAAK;AAAQ,qBAAO;AAAA,YAAI,GAAE,KAAI,SAASF,IAAEC,IAAEC,IAAE;AAAC,mBAAK,UAAQ,KAAK,WAAS,CAAC;AAAE,kBAAIC,KAAE,KAAK,QAAQH,EAAC;AAAE,cAAAG,OAAIA,KAAE,CAAC,GAAE,KAAK,QAAQH,EAAC,IAAEG,KAAGD,OAAI,SAAOA,KAAE;AAAQ,uBAAQE,KAAE,EAAC,IAAGH,IAAE,KAAIC,GAAC,GAAEG,KAAEF,IAAEG,KAAE,GAAEC,KAAEF,GAAE,QAAOC,KAAEC,IAAED,KAAI,KAAGD,GAAEC,EAAC,EAAE,OAAKL,MAAGI,GAAEC,EAAC,EAAE,QAAMJ,GAAE;AAAO,cAAAG,GAAE,KAAKD,EAAC;AAAA,YAAC,GAAE,MAAK,SAASJ,IAAEC,IAAEC,IAAE;AAAC,kBAAIC,IAAEC,IAAEC;AAAE,kBAAG,KAAK,YAAUF,KAAE,KAAK,QAAQH,EAAC,GAAG,KAAGC,IAAE;AAAC,oBAAGC,OAAI,SAAOA,KAAE,SAAQC,GAAE,MAAIC,KAAE,GAAEC,KAAEF,GAAE,QAAOC,KAAEC,IAAED,MAAI;AAAC,sBAAIE,KAAEH,GAAEC,EAAC;AAAE,sBAAGE,GAAE,QAAMJ,MAAGI,GAAE,OAAKL,GAAE,QAAOK,GAAE,KAAG,GAAE,KAAK,iBAAe,KAAK,QAAQN,EAAC,IAAEG,KAAEA,GAAE,MAAM,IAAG,KAAKA,GAAE,OAAOC,IAAE,CAAC;AAAA,gBAAC;AAAA,cAAC,OAAK;AAAC,qBAAIA,KAAE,GAAEC,KAAEF,GAAE,QAAOC,KAAEC,IAAED,KAAI,CAAAD,GAAEC,EAAC,EAAE,KAAG;AAAE,uBAAO,KAAK,QAAQJ,EAAC;AAAA,cAAC;AAAA,YAAC,GAAE,MAAK,SAASA,IAAEE,IAAEC,IAAE;AAAC,kBAAG,CAAC,KAAK,QAAQH,IAAEG,EAAC,EAAE,QAAO;AAAK,kBAAIC,KAAEH,GAAE,CAAC,GAAEC,IAAE,EAAC,MAAKF,IAAE,QAAO,MAAK,cAAaE,MAAGA,GAAE,gBAAc,KAAI,CAAC;AAAE,kBAAG,KAAK,SAAQ;AAAC,oBAAIG,KAAE,KAAK,QAAQL,EAAC;AAAE,oBAAGK,IAAE;AAAC,uBAAK,eAAa,KAAK,eAAa,KAAG;AAAE,2BAAQC,KAAE,GAAEC,KAAEF,GAAE,QAAOC,KAAEC,IAAED,MAAI;AAAC,wBAAIE,KAAEH,GAAEC,EAAC;AAAE,oBAAAE,GAAE,GAAG,KAAKA,GAAE,OAAK,MAAKJ,EAAC;AAAA,kBAAC;AAAC,uBAAK;AAAA,gBAAc;AAAA,cAAC;AAAC,qBAAOD,MAAG,KAAK,gBAAgBC,EAAC,GAAE;AAAA,YAAI,GAAE,SAAQ,SAASJ,IAAEC,IAAE;AAAC,kBAAIC,KAAE,KAAK,WAAS,KAAK,QAAQF,EAAC;AAAE,kBAAGE,MAAGA,GAAE,OAAO,QAAM;AAAG,kBAAGD;AAAE,yBAAQE,MAAK,KAAK,cAAc,KAAG,KAAK,cAAcA,EAAC,EAAE,QAAQH,IAAEC,EAAC,EAAE,QAAM;AAAA;AAAG,qBAAM;AAAA,YAAE,GAAE,MAAK,SAASD,IAAEC,IAAEC,IAAE;AAAC,kBAAG,YAAU,OAAOF,IAAE;AAAC,yBAAQI,MAAKJ,GAAE,MAAK,KAAKI,IAAEJ,GAAEI,EAAC,GAAEH,EAAC;AAAE,uBAAO;AAAA,cAAI;AAAC,kBAAII,KAAEF,IAAG,WAAU;AAAC,qBAAK,IAAIH,IAAEC,IAAEC,EAAC,EAAE,IAAIF,IAAEK,IAAEH,EAAC;AAAA,cAAC,IAAG,IAAI;AAAE,qBAAO,KAAK,GAAGF,IAAEC,IAAEC,EAAC,EAAE,GAAGF,IAAEK,IAAEH,EAAC;AAAA,YAAC,GAAE,gBAAe,SAASF,IAAE;AAAC,qBAAO,KAAK,gBAAc,KAAK,iBAAe,CAAC,GAAE,KAAK,cAAc,EAAEA,EAAC,CAAC,IAAEA,IAAE;AAAA,YAAI,GAAE,mBAAkB,SAASA,IAAE;AAAC,qBAAO,KAAK,iBAAe,OAAO,KAAK,cAAc,EAAEA,EAAC,CAAC,GAAE;AAAA,YAAI,GAAE,iBAAgB,SAASA,IAAE;AAAC,uBAAQE,MAAK,KAAK,cAAc,MAAK,cAAcA,EAAC,EAAE,KAAKF,GAAE,MAAKC,GAAE,EAAC,OAAMD,GAAE,QAAO,gBAAeA,GAAE,OAAM,GAAEA,EAAC,GAAE,IAAE;AAAA,YAAC,EAAC;AAAE,cAAE,mBAAiB,EAAE,IAAG,EAAE,sBAAoB,EAAE,yBAAuB,EAAE,KAAI,EAAE,0BAAwB,EAAE,MAAK,EAAE,YAAU,EAAE,MAAK,EAAE,oBAAkB,EAAE;AAAQ,gBAAI,IAAE,EAAE,OAAO,CAAC;AAAE,qBAAS,EAAEA,IAAEC,IAAEC,IAAE;AAAC,mBAAK,IAAEA,KAAE,KAAK,MAAMF,EAAC,IAAEA,IAAE,KAAK,IAAEE,KAAE,KAAK,MAAMD,EAAC,IAAEA;AAAA,YAAC;AAAC,gBAAI,IAAE,KAAK,SAAO,SAASD,IAAE;AAAC,qBAAOA,KAAE,IAAE,KAAK,MAAMA,EAAC,IAAE,KAAK,KAAKA,EAAC;AAAA,YAAC;AAAE,qBAAS,EAAEA,IAAEC,IAAEC,IAAE;AAAC,qBAAOF,cAAa,IAAEA,KAAE,EAAEA,EAAC,IAAE,IAAI,EAAEA,GAAE,CAAC,GAAEA,GAAE,CAAC,CAAC,IAAE,QAAMA,KAAEA,KAAE,YAAU,OAAOA,MAAG,OAAMA,MAAG,OAAMA,KAAE,IAAI,EAAEA,GAAE,GAAEA,GAAE,CAAC,IAAE,IAAI,EAAEA,IAAEC,IAAEC,EAAC;AAAA,YAAC;AAAC,qBAAS,EAAEF,IAAEC,IAAE;AAAC,kBAAGD,GAAE,UAAQE,KAAED,KAAE,CAACD,IAAEC,EAAC,IAAED,IAAEG,KAAE,GAAEC,KAAEF,GAAE,QAAOC,KAAEC,IAAED,KAAI,MAAK,OAAOD,GAAEC,EAAC,CAAC;AAAA,YAAC;AAAC,qBAAS,EAAEH,IAAEC,IAAE;AAAC,qBAAM,CAACD,MAAGA,cAAa,IAAEA,KAAE,IAAI,EAAEA,IAAEC,EAAC;AAAA,YAAC;AAAC,qBAAS,EAAED,IAAEC,IAAE;AAAC,kBAAGD,GAAE,UAAQE,KAAED,KAAE,CAACD,IAAEC,EAAC,IAAED,IAAEG,KAAE,GAAEC,KAAEF,GAAE,QAAOC,KAAEC,IAAED,KAAI,MAAK,OAAOD,GAAEC,EAAC,CAAC;AAAA,YAAC;AAAC,qBAAS,EAAEH,IAAEC,IAAE;AAAC,qBAAOD,cAAa,IAAEA,KAAE,IAAI,EAAEA,IAAEC,EAAC;AAAA,YAAC;AAAC,qBAAS,EAAED,IAAEC,IAAEC,IAAE;AAAC,kBAAG,MAAMF,EAAC,KAAG,MAAMC,EAAC,EAAE,OAAM,IAAI,MAAM,6BAA2BD,KAAE,OAAKC,KAAE,GAAG;AAAE,mBAAK,MAAI,CAACD,IAAE,KAAK,MAAI,CAACC,IAAE,WAASC,OAAI,KAAK,MAAI,CAACA;AAAA,YAAE;AAAC,qBAAS,EAAEF,IAAEC,IAAEC,IAAE;AAAC,qBAAOF,cAAa,IAAEA,KAAE,EAAEA,EAAC,KAAG,YAAU,OAAOA,GAAE,CAAC,IAAE,MAAIA,GAAE,SAAO,IAAI,EAAEA,GAAE,CAAC,GAAEA,GAAE,CAAC,GAAEA,GAAE,CAAC,CAAC,IAAE,MAAIA,GAAE,SAAO,IAAI,EAAEA,GAAE,CAAC,GAAEA,GAAE,CAAC,CAAC,IAAE,OAAK,QAAMA,KAAEA,KAAE,YAAU,OAAOA,MAAG,SAAQA,KAAE,IAAI,EAAEA,GAAE,KAAI,SAAQA,KAAEA,GAAE,MAAIA,GAAE,KAAIA,GAAE,GAAG,IAAE,WAASC,KAAE,OAAK,IAAI,EAAED,IAAEC,IAAEC,EAAC;AAAA,YAAC;AAAC,cAAE,YAAU,EAAC,OAAM,WAAU;AAAC,qBAAO,IAAI,EAAE,KAAK,GAAE,KAAK,CAAC;AAAA,YAAC,GAAE,KAAI,SAASF,IAAE;AAAC,qBAAO,KAAK,MAAM,EAAE,KAAK,EAAEA,EAAC,CAAC;AAAA,YAAC,GAAE,MAAK,SAASA,IAAE;AAAC,qBAAO,KAAK,KAAGA,GAAE,GAAE,KAAK,KAAGA,GAAE,GAAE;AAAA,YAAI,GAAE,UAAS,SAASA,IAAE;AAAC,qBAAO,KAAK,MAAM,EAAE,UAAU,EAAEA,EAAC,CAAC;AAAA,YAAC,GAAE,WAAU,SAASA,IAAE;AAAC,qBAAO,KAAK,KAAGA,GAAE,GAAE,KAAK,KAAGA,GAAE,GAAE;AAAA,YAAI,GAAE,UAAS,SAASA,IAAE;AAAC,qBAAO,KAAK,MAAM,EAAE,UAAUA,EAAC;AAAA,YAAC,GAAE,WAAU,SAASA,IAAE;AAAC,qBAAO,KAAK,KAAGA,IAAE,KAAK,KAAGA,IAAE;AAAA,YAAI,GAAE,YAAW,SAASA,IAAE;AAAC,qBAAO,KAAK,MAAM,EAAE,YAAYA,EAAC;AAAA,YAAC,GAAE,aAAY,SAASA,IAAE;AAAC,qBAAO,KAAK,KAAGA,IAAE,KAAK,KAAGA,IAAE;AAAA,YAAI,GAAE,SAAQ,SAASA,IAAE;AAAC,qBAAO,IAAI,EAAE,KAAK,IAAEA,GAAE,GAAE,KAAK,IAAEA,GAAE,CAAC;AAAA,YAAC,GAAE,WAAU,SAASA,IAAE;AAAC,qBAAO,IAAI,EAAE,KAAK,IAAEA,GAAE,GAAE,KAAK,IAAEA,GAAE,CAAC;AAAA,YAAC,GAAE,OAAM,WAAU;AAAC,qBAAO,KAAK,MAAM,EAAE,OAAO;AAAA,YAAC,GAAE,QAAO,WAAU;AAAC,qBAAO,KAAK,IAAE,KAAK,MAAM,KAAK,CAAC,GAAE,KAAK,IAAE,KAAK,MAAM,KAAK,CAAC,GAAE;AAAA,YAAI,GAAE,OAAM,WAAU;AAAC,qBAAO,KAAK,MAAM,EAAE,OAAO;AAAA,YAAC,GAAE,QAAO,WAAU;AAAC,qBAAO,KAAK,IAAE,KAAK,MAAM,KAAK,CAAC,GAAE,KAAK,IAAE,KAAK,MAAM,KAAK,CAAC,GAAE;AAAA,YAAI,GAAE,MAAK,WAAU;AAAC,qBAAO,KAAK,MAAM,EAAE,MAAM;AAAA,YAAC,GAAE,OAAM,WAAU;AAAC,qBAAO,KAAK,IAAE,KAAK,KAAK,KAAK,CAAC,GAAE,KAAK,IAAE,KAAK,KAAK,KAAK,CAAC,GAAE;AAAA,YAAI,GAAE,OAAM,WAAU;AAAC,qBAAO,KAAK,MAAM,EAAE,OAAO;AAAA,YAAC,GAAE,QAAO,WAAU;AAAC,qBAAO,KAAK,IAAE,EAAE,KAAK,CAAC,GAAE,KAAK,IAAE,EAAE,KAAK,CAAC,GAAE;AAAA,YAAI,GAAE,YAAW,SAASA,IAAE;AAAC,kBAAIC,MAAGD,KAAE,EAAEA,EAAC,GAAG,IAAE,KAAK,GAAEE,KAAEF,GAAE,IAAE,KAAK;AAAE,qBAAO,KAAK,KAAKC,KAAEA,KAAEC,KAAEA,EAAC;AAAA,YAAC,GAAE,QAAO,SAASF,IAAE;AAAC,sBAAOA,KAAE,EAAEA,EAAC,GAAG,MAAI,KAAK,KAAGA,GAAE,MAAI,KAAK;AAAA,YAAC,GAAE,UAAS,SAASA,IAAE;AAAC,qBAAOA,KAAE,EAAEA,EAAC,GAAE,KAAK,IAAIA,GAAE,CAAC,KAAG,KAAK,IAAI,KAAK,CAAC,KAAG,KAAK,IAAIA,GAAE,CAAC,KAAG,KAAK,IAAI,KAAK,CAAC;AAAA,YAAC,GAAE,UAAS,WAAU;AAAC,qBAAM,WAAS,EAAE,KAAK,CAAC,IAAE,OAAK,EAAE,KAAK,CAAC,IAAE;AAAA,YAAG,EAAC,GAAE,EAAE,YAAU,EAAC,QAAO,SAASA,IAAE;AAAC,qBAAOA,KAAE,EAAEA,EAAC,GAAE,KAAK,OAAK,KAAK,OAAK,KAAK,IAAI,IAAE,KAAK,IAAIA,GAAE,GAAE,KAAK,IAAI,CAAC,GAAE,KAAK,IAAI,IAAE,KAAK,IAAIA,GAAE,GAAE,KAAK,IAAI,CAAC,GAAE,KAAK,IAAI,IAAE,KAAK,IAAIA,GAAE,GAAE,KAAK,IAAI,CAAC,GAAE,KAAK,IAAI,IAAE,KAAK,IAAIA,GAAE,GAAE,KAAK,IAAI,CAAC,MAAI,KAAK,MAAIA,GAAE,MAAM,GAAE,KAAK,MAAIA,GAAE,MAAM,IAAG;AAAA,YAAI,GAAE,WAAU,SAASA,IAAE;AAAC,qBAAO,IAAI,GAAG,KAAK,IAAI,IAAE,KAAK,IAAI,KAAG,IAAG,KAAK,IAAI,IAAE,KAAK,IAAI,KAAG,GAAEA,EAAC;AAAA,YAAC,GAAE,eAAc,WAAU;AAAC,qBAAO,IAAI,EAAE,KAAK,IAAI,GAAE,KAAK,IAAI,CAAC;AAAA,YAAC,GAAE,aAAY,WAAU;AAAC,qBAAO,IAAI,EAAE,KAAK,IAAI,GAAE,KAAK,IAAI,CAAC;AAAA,YAAC,GAAE,YAAW,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAG,GAAE,gBAAe,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAG,GAAE,SAAQ,WAAU;AAAC,qBAAO,KAAK,IAAI,SAAS,KAAK,GAAG;AAAA,YAAC,GAAE,UAAS,SAASA,IAAE;AAAC,kBAAIC,IAAEC;AAAE,sBAAOF,KAAE,YAAU,OAAOA,GAAE,CAAC,KAAGA,cAAa,IAAE,EAAEA,EAAC,IAAE,EAAEA,EAAC,cAAa,KAAGC,KAAED,GAAE,KAAIE,KAAEF,GAAE,OAAKC,KAAEC,KAAEF,IAAEC,GAAE,KAAG,KAAK,IAAI,KAAGC,GAAE,KAAG,KAAK,IAAI,KAAGD,GAAE,KAAG,KAAK,IAAI,KAAGC,GAAE,KAAG,KAAK,IAAI;AAAA,YAAC,GAAE,YAAW,SAASF,IAAE;AAAC,cAAAA,KAAE,EAAEA,EAAC;AAAE,kBAAIC,KAAE,KAAK,KAAIC,KAAE,KAAK,KAAIC,KAAEH,GAAE,KAAII,KAAEJ,GAAE,KAAIK,KAAED,GAAE,KAAGH,GAAE,KAAGE,GAAE,KAAGD,GAAE,GAAEI,KAAEF,GAAE,KAAGH,GAAE,KAAGE,GAAE,KAAGD,GAAE;AAAE,qBAAOG,MAAGC;AAAA,YAAC,GAAE,UAAS,SAASN,IAAE;AAAC,cAAAA,KAAE,EAAEA,EAAC;AAAE,kBAAIC,KAAE,KAAK,KAAIC,KAAE,KAAK,KAAIC,KAAEH,GAAE,KAAII,KAAEJ,GAAE,KAAIK,KAAED,GAAE,IAAEH,GAAE,KAAGE,GAAE,IAAED,GAAE,GAAEI,KAAEF,GAAE,IAAEH,GAAE,KAAGE,GAAE,IAAED,GAAE;AAAE,qBAAOG,MAAGC;AAAA,YAAC,GAAE,SAAQ,WAAU;AAAC,qBAAM,EAAE,CAAC,KAAK,OAAK,CAAC,KAAK;AAAA,YAAI,EAAC,GAAE,EAAE,YAAU,EAAC,QAAO,SAASN,IAAE;AAAC,kBAAIC,IAAEC,IAAEC,KAAE,KAAK,YAAWC,KAAE,KAAK;AAAW,kBAAGJ,cAAa,EAAE,CAAAC,KAAED,IAAEE,KAAEF;AAAA,mBAAM;AAAC,oBAAG,EAAEA,cAAa,GAAG,QAAOA,KAAE,KAAK,OAAO,EAAEA,EAAC,KAAG,EAAEA,EAAC,CAAC,IAAE;AAAK,oBAAGC,KAAED,GAAE,YAAWE,KAAEF,GAAE,YAAW,CAACC,MAAG,CAACC,GAAE,QAAO;AAAA,cAAI;AAAC,qBAAOC,MAAGC,MAAGD,GAAE,MAAI,KAAK,IAAIF,GAAE,KAAIE,GAAE,GAAG,GAAEA,GAAE,MAAI,KAAK,IAAIF,GAAE,KAAIE,GAAE,GAAG,GAAEC,GAAE,MAAI,KAAK,IAAIF,GAAE,KAAIE,GAAE,GAAG,GAAEA,GAAE,MAAI,KAAK,IAAIF,GAAE,KAAIE,GAAE,GAAG,MAAI,KAAK,aAAW,IAAI,EAAEH,GAAE,KAAIA,GAAE,GAAG,GAAE,KAAK,aAAW,IAAI,EAAEC,GAAE,KAAIA,GAAE,GAAG,IAAG;AAAA,YAAI,GAAE,KAAI,SAASF,IAAE;AAAC,kBAAIC,KAAE,KAAK,YAAWC,KAAE,KAAK,YAAWC,KAAE,KAAK,IAAIF,GAAE,MAAIC,GAAE,GAAG,IAAEF,IAAEI,KAAE,KAAK,IAAIH,GAAE,MAAIC,GAAE,GAAG,IAAEF;AAAE,qBAAO,IAAI,EAAE,IAAI,EAAEC,GAAE,MAAIE,IAAEF,GAAE,MAAIG,EAAC,GAAE,IAAI,EAAEF,GAAE,MAAIC,IAAED,GAAE,MAAIE,EAAC,CAAC;AAAA,YAAC,GAAE,WAAU,WAAU;AAAC,qBAAO,IAAI,GAAG,KAAK,WAAW,MAAI,KAAK,WAAW,OAAK,IAAG,KAAK,WAAW,MAAI,KAAK,WAAW,OAAK,CAAC;AAAA,YAAC,GAAE,cAAa,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAU,GAAE,cAAa,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAU,GAAE,cAAa,WAAU;AAAC,qBAAO,IAAI,EAAE,KAAK,SAAS,GAAE,KAAK,QAAQ,CAAC;AAAA,YAAC,GAAE,cAAa,WAAU;AAAC,qBAAO,IAAI,EAAE,KAAK,SAAS,GAAE,KAAK,QAAQ,CAAC;AAAA,YAAC,GAAE,SAAQ,WAAU;AAAC,qBAAO,KAAK,WAAW;AAAA,YAAG,GAAE,UAAS,WAAU;AAAC,qBAAO,KAAK,WAAW;AAAA,YAAG,GAAE,SAAQ,WAAU;AAAC,qBAAO,KAAK,WAAW;AAAA,YAAG,GAAE,UAAS,WAAU;AAAC,qBAAO,KAAK,WAAW;AAAA,YAAG,GAAE,UAAS,SAASJ,IAAE;AAAC,cAAAA,KAAE,YAAU,OAAOA,GAAE,CAAC,KAAGA,cAAa,KAAG,SAAQA,KAAE,EAAEA,EAAC,IAAE,EAAEA,EAAC;AAAE,kBAAIC,IAAEC,IAAEC,KAAE,KAAK,YAAWC,KAAE,KAAK;AAAW,qBAAOJ,cAAa,KAAGC,KAAED,GAAE,aAAa,GAAEE,KAAEF,GAAE,aAAa,KAAGC,KAAEC,KAAEF,IAAEC,GAAE,OAAKE,GAAE,OAAKD,GAAE,OAAKE,GAAE,OAAKH,GAAE,OAAKE,GAAE,OAAKD,GAAE,OAAKE,GAAE;AAAA,YAAG,GAAE,YAAW,SAASJ,IAAE;AAAC,cAAAA,KAAE,EAAEA,EAAC;AAAE,kBAAIC,KAAE,KAAK,YAAWC,KAAE,KAAK,YAAWC,KAAEH,GAAE,aAAa,GAAEI,KAAEJ,GAAE,aAAa,GAAEK,KAAED,GAAE,OAAKH,GAAE,OAAKE,GAAE,OAAKD,GAAE,KAAII,KAAEF,GAAE,OAAKH,GAAE,OAAKE,GAAE,OAAKD,GAAE;AAAI,qBAAOG,MAAGC;AAAA,YAAC,GAAE,UAAS,SAASN,IAAE;AAAC,cAAAA,KAAE,EAAEA,EAAC;AAAE,kBAAIC,KAAE,KAAK,YAAWC,KAAE,KAAK,YAAWC,KAAEH,GAAE,aAAa,GAAEI,KAAEJ,GAAE,aAAa,GAAEK,KAAED,GAAE,MAAIH,GAAE,OAAKE,GAAE,MAAID,GAAE,KAAII,KAAEF,GAAE,MAAIH,GAAE,OAAKE,GAAE,MAAID,GAAE;AAAI,qBAAOG,MAAGC;AAAA,YAAC,GAAE,cAAa,WAAU;AAAC,qBAAM,CAAC,KAAK,QAAQ,GAAE,KAAK,SAAS,GAAE,KAAK,QAAQ,GAAE,KAAK,SAAS,CAAC,EAAE,KAAK,GAAG;AAAA,YAAC,GAAE,QAAO,SAASN,IAAEC,IAAE;AAAC,qBAAM,CAAC,CAACD,OAAIA,KAAE,EAAEA,EAAC,GAAE,KAAK,WAAW,OAAOA,GAAE,aAAa,GAAEC,EAAC,KAAG,KAAK,WAAW,OAAOD,GAAE,aAAa,GAAEC,EAAC;AAAA,YAAE,GAAE,SAAQ,WAAU;AAAC,qBAAM,EAAE,CAAC,KAAK,cAAY,CAAC,KAAK;AAAA,YAAW,EAAC,GAAE,EAAE,YAAU,EAAC,QAAO,SAASD,IAAEC,IAAE;AAAC,qBAAM,CAAC,CAACD,OAAIA,KAAE,EAAEA,EAAC,GAAE,KAAK,IAAI,KAAK,IAAI,KAAK,MAAIA,GAAE,GAAG,GAAE,KAAK,IAAI,KAAK,MAAIA,GAAE,GAAG,CAAC,MAAI,WAASC,KAAE,OAAKA;AAAA,YAAG,GAAE,UAAS,SAASD,IAAE;AAAC,qBAAM,YAAU,EAAE,KAAK,KAAIA,EAAC,IAAE,OAAK,EAAE,KAAK,KAAIA,EAAC,IAAE;AAAA,YAAG,GAAE,YAAW,SAASA,IAAE;AAAC,qBAAO,EAAE,SAAS,MAAK,EAAEA,EAAC,CAAC;AAAA,YAAC,GAAE,MAAK,WAAU;AAAC,qBAAO,EAAE,WAAW,IAAI;AAAA,YAAC,GAAE,UAAS,SAASA,IAAE;AAAC,kBAAIC,KAAE,MAAID,KAAE,UAASE,KAAED,KAAE,KAAK,IAAI,KAAK,KAAG,MAAI,KAAK,GAAG;AAAE,qBAAO,EAAE,CAAC,KAAK,MAAIA,IAAE,KAAK,MAAIC,EAAC,GAAE,CAAC,KAAK,MAAID,IAAE,KAAK,MAAIC,EAAC,CAAC;AAAA,YAAC,GAAE,OAAM,WAAU;AAAC,qBAAO,IAAI,EAAE,KAAK,KAAI,KAAK,KAAI,KAAK,GAAG;AAAA,YAAC,EAAC;AAAE,gBAAI,GAAE,IAAE,EAAC,eAAc,SAASF,IAAEC,IAAE;AAAC,kBAAIC,KAAE,KAAK,WAAW,QAAQF,EAAC,GAAEG,KAAE,KAAK,MAAMF,EAAC;AAAE,qBAAO,KAAK,eAAe,WAAWC,IAAEC,EAAC;AAAA,YAAC,GAAE,eAAc,SAASH,IAAEC,IAAE;AAAC,kBAAIC,KAAE,KAAK,MAAMD,EAAC,GAAEE,KAAE,KAAK,eAAe,YAAYH,IAAEE,EAAC;AAAE,qBAAO,KAAK,WAAW,UAAUC,EAAC;AAAA,YAAC,GAAE,SAAQ,SAASH,IAAE;AAAC,qBAAO,KAAK,WAAW,QAAQA,EAAC;AAAA,YAAC,GAAE,WAAU,SAASA,IAAE;AAAC,qBAAO,KAAK,WAAW,UAAUA,EAAC;AAAA,YAAC,GAAE,OAAM,SAASA,IAAE;AAAC,qBAAO,MAAI,KAAK,IAAI,GAAEA,EAAC;AAAA,YAAC,GAAE,MAAK,SAASA,IAAE;AAAC,qBAAO,KAAK,IAAIA,KAAE,GAAG,IAAE,KAAK;AAAA,YAAG,GAAE,oBAAmB,SAASA,IAAE;AAAC,kBAAG,KAAK,SAAS,QAAO;AAAK,kBAAIC,KAAE,KAAK,WAAW,QAAOC,KAAE,KAAK,MAAMF,EAAC;AAAE,qBAAO,IAAI,EAAE,KAAK,eAAe,UAAUC,GAAE,KAAIC,EAAC,GAAE,KAAK,eAAe,UAAUD,GAAE,KAAIC,EAAC,CAAC;AAAA,YAAC,GAAE,UAAS,OAAG,YAAW,SAASF,IAAE;AAAC,kBAAIC,KAAE,KAAK,UAAQ,EAAED,GAAE,KAAI,KAAK,SAAQ,IAAE,IAAEA,GAAE;AAAI,qBAAO,IAAI,EAAE,KAAK,UAAQ,EAAEA,GAAE,KAAI,KAAK,SAAQ,IAAE,IAAEA,GAAE,KAAIC,IAAED,GAAE,GAAG;AAAA,YAAC,GAAE,kBAAiB,SAASA,IAAE;AAAC,kBAAIC,KAAED,GAAE,UAAU,GAAEE,KAAE,KAAK,WAAWD,EAAC,GAAEE,KAAEF,GAAE,MAAIC,GAAE,KAAIE,KAAEH,GAAE,MAAIC,GAAE;AAAI,kBAAG,MAAIC,MAAG,MAAIC,GAAE,QAAOJ;AAAE,kBAAIK,KAAEL,GAAE,aAAa,GAAEM,KAAEN,GAAE,aAAa;AAAE,qBAAO,IAAI,EAAE,IAAI,EAAEK,GAAE,MAAIF,IAAEE,GAAE,MAAID,EAAC,GAAE,IAAI,EAAEE,GAAE,MAAIH,IAAEG,GAAE,MAAIF,EAAC,CAAC;AAAA,YAAC,EAAC,GAAE,IAAEH,GAAE,CAAC,GAAE,GAAE,EAAC,SAAQ,CAAC,MAAK,GAAG,GAAE,GAAE,QAAO,UAAS,SAASD,IAAEC,IAAE;AAAC,kBAAIC,KAAE,KAAK,KAAG,KAAIC,KAAEH,GAAE,MAAIE,IAAEE,KAAEH,GAAE,MAAIC,IAAEG,KAAE,KAAK,KAAKJ,GAAE,MAAID,GAAE,OAAKE,KAAE,CAAC,GAAEI,KAAE,KAAK,KAAKL,GAAE,MAAID,GAAE,OAAKE,KAAE,CAAC,GAAEK,KAAEF,KAAEA,KAAE,KAAK,IAAIF,EAAC,IAAE,KAAK,IAAIC,EAAC,IAAEE,KAAEA,IAAEE,KAAE,IAAE,KAAK,MAAM,KAAK,KAAKD,EAAC,GAAE,KAAK,KAAK,IAAEA,EAAC,CAAC;AAAE,qBAAO,KAAK,IAAEC;AAAA,YAAC,EAAC,CAAC,GAAE,IAAE,SAAQ,IAAE,EAAC,GAAE,GAAE,cAAa,eAAc,SAAQ,SAASR,IAAE;AAAC,kBAAIC,KAAE,KAAK,KAAG,KAAIC,KAAE,KAAK,cAAaC,KAAE,KAAK,IAAI,KAAK,IAAID,IAAEF,GAAE,GAAG,GAAE,CAACE,EAAC,GAAEE,KAAE,KAAK,IAAID,KAAEF,EAAC;AAAE,qBAAO,IAAI,EAAE,KAAK,IAAED,GAAE,MAAIC,IAAE,KAAK,IAAE,KAAK,KAAK,IAAEG,OAAI,IAAEA,GAAE,IAAE,CAAC;AAAA,YAAC,GAAE,WAAU,SAASJ,IAAE;AAAC,kBAAIC,KAAE,MAAI,KAAK;AAAG,qBAAO,IAAI,GAAG,IAAE,KAAK,KAAK,KAAK,IAAID,GAAE,IAAE,KAAK,CAAC,CAAC,IAAE,KAAK,KAAG,KAAGC,IAAED,GAAE,IAAEC,KAAE,KAAK,CAAC;AAAA,YAAC,GAAE,SAAQ,IAAE,IAAE,KAAK,IAAG,IAAI,EAAE,CAAC,CAAC,GAAE,CAAC,CAAC,GAAE,CAAC,GAAE,CAAC,CAAC,GAAE;AAAE,qBAAS,EAAED,IAAEC,IAAEC,IAAEC,IAAE;AAAC,kBAAG,EAAEH,EAAC,EAAE,QAAO,KAAK,KAAGA,GAAE,CAAC,GAAE,KAAK,KAAGA,GAAE,CAAC,GAAE,KAAK,KAAGA,GAAE,CAAC,GAAE,MAAK,KAAK,KAAGA,GAAE,CAAC;AAAG,mBAAK,KAAGA,IAAE,KAAK,KAAGC,IAAE,KAAK,KAAGC,IAAE,KAAK,KAAGC;AAAA,YAAC;AAAC,qBAASM,GAAET,IAAEC,IAAEC,IAAEC,IAAE;AAAC,qBAAO,IAAI,EAAEH,IAAEC,IAAEC,IAAEC,EAAC;AAAA,YAAC;AAAC,cAAE,YAAU,EAAC,WAAU,SAASH,IAAEC,IAAE;AAAC,qBAAO,KAAK,WAAWD,GAAE,MAAM,GAAEC,EAAC;AAAA,YAAC,GAAE,YAAW,SAASD,IAAEC,IAAE;AAAC,qBAAOA,KAAEA,MAAG,GAAED,GAAE,IAAEC,MAAG,KAAK,KAAGD,GAAE,IAAE,KAAK,KAAIA,GAAE,IAAEC,MAAG,KAAK,KAAGD,GAAE,IAAE,KAAK,KAAIA;AAAA,YAAC,GAAE,aAAY,SAASA,IAAEC,IAAE;AAAC,qBAAOA,KAAEA,MAAG,GAAE,IAAI,GAAGD,GAAE,IAAEC,KAAE,KAAK,MAAI,KAAK,KAAID,GAAE,IAAEC,KAAE,KAAK,MAAI,KAAK,EAAE;AAAA,YAAC,EAAC;AAAE,gBAAI,IAAEA,GAAE,CAAC,GAAE,GAAE,EAAC,MAAK,aAAY,YAAW,GAAE,iBAAe,WAAU;AAAC,kBAAID,KAAE,OAAI,KAAK,KAAG,EAAE;AAAG,qBAAOS,GAAET,IAAE,KAAG,CAACA,IAAE,GAAE;AAAA,YAAC,GAAE,EAAC,CAAC,GAAE,IAAEC,GAAE,CAAC,GAAE,GAAE,EAAC,MAAK,cAAa,CAAC;AAAE,qBAAS,EAAED,IAAE;AAAC,qBAAO,SAAS,gBAAgB,8BAA6BA,EAAC;AAAA,YAAC;AAAC,qBAASU,GAAEV,IAAEC,IAAE;AAAC,kBAAIC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,KAAE;AAAG,mBAAIN,KAAE,GAAEE,KAAEJ,GAAE,QAAOE,KAAEE,IAAEF,MAAI;AAAC,qBAAIC,KAAE,GAAEE,MAAGC,KAAEN,GAAEE,EAAC,GAAG,QAAOC,KAAEE,IAAEF,KAAI,CAAAK,OAAIL,KAAE,MAAI,QAAMI,KAAED,GAAEH,EAAC,GAAG,IAAE,MAAII,GAAE;AAAE,gBAAAC,MAAGP,KAAE,KAAG,MAAI,MAAI;AAAA,cAAE;AAAC,qBAAOO,MAAG;AAAA,YAAM;AAAC,gBAAIG,KAAE,SAAS,gBAAgB,OAAMC,KAAE,mBAAkB,QAAO,IAAEA,MAAG,CAAC,SAAS,kBAAiB,KAAG,iBAAgB,aAAW,EAAE,kBAAiB,WAAU,KAAG,GAAG,QAAQ,GAAE,KAAG,GAAG,SAAS,GAAE,KAAG,GAAG,WAAW,KAAG,GAAG,WAAW,GAAE,KAAG,SAAS,qBAAqB,KAAK,UAAU,SAAS,EAAE,CAAC,GAAE,EAAE,GAAE,KAAG,MAAI,GAAG,QAAQ,KAAG,KAAG,OAAK,EAAE,eAAc,SAAQ,KAAG,CAAC,CAAC,OAAO,OAAM,KAAG,CAAC,MAAI,GAAG,QAAQ,GAAE,KAAG,GAAG,OAAO,KAAG,CAAC,MAAI,CAAC,MAAI,CAACA,IAAE,KAAG,CAAC,MAAI,GAAG,QAAQ,GAAE,KAAG,GAAG,SAAS,GAAE,KAAG,iBAAgBD,IAAE,KAAG,MAAI,UAAU,SAAS,QAAQ,KAAK,GAAE,KAAGC,MAAG,gBAAeD,IAAE,KAAG,qBAAoB,UAAQ,SAAQ,IAAI,OAAO,qBAAiB,CAAC,IAAG,KAAG,oBAAmBA,IAAE,KAAG,CAAC,OAAO,iBAAe,MAAI,MAAI,OAAK,CAAC,MAAI,CAAC,IAAG,KAAG,eAAa,OAAO,eAAa,GAAG,QAAQ,GAAE,KAAG,MAAI,IAAG,KAAG,MAAI,IAAG,KAAG,CAAC,OAAO,gBAAc,OAAO,gBAAe,KAAG,EAAE,CAAC,OAAO,gBAAc,CAAC,KAAI,KAAG,CAAC,OAAO,eAAa,MAAI,kBAAiB,UAAQ,OAAO,iBAAe,oBAAoB,OAAO,gBAAe,KAAG,MAAI,IAAG,KAAG,MAAI,IAAG,MAAI,OAAO,oBAAkB,OAAO,OAAO,aAAW,OAAO,OAAO,eAAa,GAAE,MAAG,WAAU;AAAC,kBAAIX,KAAE;AAAG,kBAAG;AAAC,oBAAIC,KAAE,OAAO,eAAe,CAAC,GAAE,WAAU,EAAC,KAAI,WAAU;AAAC,kBAAAD,KAAE;AAAA,gBAAE,EAAC,CAAC;AAAE,uBAAO,iBAAiB,2BAA0B,GAAEC,EAAC,GAAE,OAAO,oBAAoB,2BAA0B,GAAEA,EAAC;AAAA,cAAC,SAAOD,IAAE;AAAA,cAAC;AAAC,qBAAOA;AAAA,YAAC,GAAE,GAAE,KAAG,CAAC,CAAC,SAAS,cAAc,QAAQ,EAAE,YAAW,KAAG,EAAE,CAAC,SAAS,mBAAiB,CAAC,EAAE,KAAK,EAAE,gBAAe,KAAG,CAAC,OAAI,WAAU;AAAC,kBAAG;AAAC,oBAAIA,KAAE,SAAS,cAAc,KAAK;AAAE,gBAAAA,GAAE,YAAU;AAAqB,oBAAIC,KAAED,GAAE;AAAW,uBAAOC,GAAE,MAAM,WAAS,qBAAoBA,MAAG,YAAU,OAAOA,GAAE;AAAA,cAAG,SAAOD,IAAE;AAAC,uBAAM;AAAA,cAAE;AAAA,YAAC,GAAE;AAAE,qBAAS,GAAGA,IAAE;AAAC,qBAAO,UAAU,UAAU,YAAY,EAAE,QAAQA,EAAC,KAAG;AAAA,YAAC;AAAC,gBAAI,KAAG,EAAC,IAAGY,IAAE,OAAM,GAAE,MAAK,IAAG,QAAO,IAAG,SAAQ,IAAG,WAAU,IAAG,cAAa,IAAG,OAAM,IAAG,QAAO,IAAG,OAAM,IAAG,QAAO,IAAG,SAAQ,IAAG,SAAQ,IAAG,KAAI,IAAG,MAAK,IAAG,UAAS,IAAG,SAAQ,IAAG,OAAM,IAAG,QAAO,IAAG,cAAa,IAAG,gBAAe,IAAG,WAAU,IAAG,SAAQ,IAAG,OAAM,IAAG,aAAY,IAAG,aAAY,IAAG,QAAO,IAAG,eAAc,IAAG,QAAO,IAAG,KAAI,IAAG,KAAI,GAAE,GAAE,KAAG,KAAG,kBAAgB,eAAc,KAAG,KAAG,kBAAgB,eAAc,KAAG,KAAG,gBAAc,aAAY,KAAG,KAAG,oBAAkB,iBAAgB,KAAG,CAAC,GAAE,KAAG;AAAG,qBAAS,GAAGZ,IAAEC,IAAEC,IAAEE,IAAE;AAAC,qBAAM,iBAAeH,MAAE,SAASD,IAAEC,IAAEC,IAAE;AAAC,oBAAIE,KAAED,IAAG,SAASH,IAAE;AAAC,kBAAAA,GAAE,wBAAsBA,GAAE,gBAAcA,GAAE,wBAAsB,GAAGA,EAAC,GAAE,GAAGA,IAAEC,EAAC;AAAA,gBAAC,EAAE;AAAE,gBAAAD,GAAE,wBAAsBE,EAAC,IAAEE,IAAEJ,GAAE,iBAAiB,IAAGI,IAAE,KAAE,GAAE,OAAK,SAAS,iBAAiB,IAAG,IAAG,IAAE,GAAE,SAAS,iBAAiB,IAAG,IAAG,IAAE,GAAE,SAAS,iBAAiB,IAAG,IAAG,IAAE,GAAE,SAAS,iBAAiB,IAAG,IAAG,IAAE,GAAE,KAAG;AAAA,cAAG,GAAEJ,IAAEE,IAAEE,EAAC,IAAE,gBAAcH,MAAE,SAASD,IAAEC,IAAEC,IAAE;AAAC,oBAAIC,KAAE,SAASH,IAAE;AAAC,kBAAAA,GAAE,iBAAeA,GAAE,wBAAsB,YAAU,MAAIA,GAAE,WAAS,GAAGA,IAAEC,EAAC;AAAA,gBAAC;AAAE,gBAAAD,GAAE,uBAAqBE,EAAC,IAAEC,IAAEH,GAAE,iBAAiB,IAAGG,IAAE,KAAE;AAAA,cAAC,GAAEH,IAAEE,IAAEE,EAAC,IAAE,eAAaH,OAAG,SAASD,IAAEC,IAAEC,IAAE;AAAC,oBAAIC,KAAE,SAASH,IAAE;AAAC,qBAAGA,IAAEC,EAAC;AAAA,gBAAC;AAAE,gBAAAD,GAAE,sBAAoBE,EAAC,IAAEC,IAAEH,GAAE,iBAAiB,IAAGG,IAAE,KAAE,GAAEH,GAAE,iBAAiB,IAAGG,IAAE,KAAE;AAAA,cAAC,GAAEH,IAAEE,IAAEE,EAAC,GAAE;AAAA,YAAI;AAAC,qBAAS,GAAGJ,IAAE;AAAC,iBAAGA,GAAE,SAAS,IAAEA;AAAA,YAAC;AAAC,qBAAS,GAAGA,IAAE;AAAC,iBAAGA,GAAE,SAAS,MAAI,GAAGA,GAAE,SAAS,IAAEA;AAAA,YAAE;AAAC,qBAAS,GAAGA,IAAE;AAAC,qBAAO,GAAGA,GAAE,SAAS;AAAA,YAAC;AAAC,qBAAS,GAAGA,IAAEC,IAAE;AAAC,uBAAQC,MAAKF,GAAE,UAAQ,CAAC,GAAE,GAAG,CAAAA,GAAE,QAAQ,KAAK,GAAGE,EAAC,CAAC;AAAE,cAAAF,GAAE,iBAAe,CAACA,EAAC,GAAEC,GAAED,EAAC;AAAA,YAAC;AAAC,gBAAI,KAAG,KAAG,kBAAgB,KAAG,gBAAc,cAAa,KAAG,KAAG,gBAAc,KAAG,cAAY,YAAW,KAAG;AAAY,gBAAI,IAAG,IAAG,IAAG,IAAG,IAAG,KAAG,GAAG,CAAC,aAAY,mBAAkB,cAAa,gBAAe,aAAa,CAAC,GAAE,KAAG,GAAG,CAAC,oBAAmB,cAAa,eAAc,iBAAgB,cAAc,CAAC,GAAE,KAAG,uBAAqB,MAAI,kBAAgB,KAAG,KAAG,QAAM;AAAgB,qBAAS,GAAGA,IAAE;AAAC,qBAAM,YAAU,OAAOA,KAAE,SAAS,eAAeA,EAAC,IAAEA;AAAA,YAAC;AAAC,qBAAS,GAAGA,IAAEC,IAAE;AAAC,kBAAIC,KAAEF,GAAE,MAAMC,EAAC,KAAGD,GAAE,gBAAcA,GAAE,aAAaC,EAAC;AAAE,mBAAI,CAACC,MAAG,WAASA,OAAI,SAAS,aAAY;AAAC,oBAAIC,KAAE,SAAS,YAAY,iBAAiBH,IAAE,IAAI;AAAE,gBAAAE,KAAEC,KAAEA,GAAEF,EAAC,IAAE;AAAA,cAAI;AAAC,qBAAM,WAASC,KAAE,OAAKA;AAAA,YAAC;AAAC,qBAASW,IAAGb,IAAEC,IAAEC,IAAE;AAAC,kBAAIC,KAAE,SAAS,cAAcH,EAAC;AAAE,qBAAOG,GAAE,YAAUF,MAAG,IAAGC,MAAGA,GAAE,YAAYC,EAAC,GAAEA;AAAA,YAAC;AAAC,qBAAS,GAAGH,IAAE;AAAC,kBAAIC,KAAED,GAAE;AAAW,cAAAC,MAAGA,GAAE,YAAYD,EAAC;AAAA,YAAC;AAAC,qBAAS,GAAGA,IAAE;AAAC,qBAAKA,GAAE,aAAY,CAAAA,GAAE,YAAYA,GAAE,UAAU;AAAA,YAAC;AAAC,qBAAS,GAAGA,IAAE;AAAC,kBAAIC,KAAED,GAAE;AAAW,cAAAC,MAAGA,GAAE,cAAYD,MAAGC,GAAE,YAAYD,EAAC;AAAA,YAAC;AAAC,qBAASc,IAAGd,IAAE;AAAC,kBAAIC,KAAED,GAAE;AAAW,cAAAC,MAAGA,GAAE,eAAaD,MAAGC,GAAE,aAAaD,IAAEC,GAAE,UAAU;AAAA,YAAC;AAAC,qBAAS,GAAGD,IAAEC,IAAE;AAAC,kBAAG,WAASD,GAAE,UAAU,QAAOA,GAAE,UAAU,SAASC,EAAC;AAAE,kBAAIC,KAAE,GAAGF,EAAC;AAAE,qBAAOE,GAAE,SAAO,KAAG,IAAI,OAAO,YAAUD,KAAE,SAAS,EAAE,KAAKC,EAAC;AAAA,YAAC;AAAC,qBAASa,IAAGf,IAAEC,IAAE;AAAC,kBAAG,WAASD,GAAE,UAAU,UAAQE,KAAE,EAAED,EAAC,GAAEE,KAAE,GAAEC,KAAEF,GAAE,QAAOC,KAAEC,IAAED,KAAI,CAAAH,GAAE,UAAU,IAAIE,GAAEC,EAAC,CAAC;AAAA,uBAAU,CAAC,GAAGH,IAAEC,EAAC,GAAE;AAAC,oBAAII,KAAE,GAAGL,EAAC;AAAE,mBAAGA,KAAGK,KAAEA,KAAE,MAAI,MAAIJ,EAAC;AAAA,cAAC;AAAA,YAAC;AAAC,qBAAS,GAAGD,IAAEC,IAAE;AAAC,yBAASD,GAAE,YAAUA,GAAE,UAAU,OAAOC,EAAC,IAAE,GAAGD,IAAE,GAAG,MAAI,GAAGA,EAAC,IAAE,KAAK,QAAQ,MAAIC,KAAE,KAAI,GAAG,CAAC,CAAC;AAAA,YAAC;AAAC,qBAAS,GAAGD,IAAEC,IAAE;AAAC,yBAASD,GAAE,UAAU,UAAQA,GAAE,YAAUC,KAAED,GAAE,UAAU,UAAQC;AAAA,YAAC;AAAC,qBAAS,GAAGD,IAAE;AAAC,qBAAOA,GAAE,yBAAuBA,KAAEA,GAAE,uBAAsB,WAASA,GAAE,UAAU,UAAQA,GAAE,YAAUA,GAAE,UAAU;AAAA,YAAO;AAAC,qBAAS,GAAGA,IAAEC,IAAE;AAAC,2BAAYD,GAAE,QAAMA,GAAE,MAAM,UAAQC,KAAE,YAAWD,GAAE,UAAO,SAASA,IAAEC,IAAE;AAAC,oBAAIC,KAAE,OAAGC,KAAE;AAAmC,oBAAG;AAAC,kBAAAD,KAAEF,GAAE,QAAQ,KAAKG,EAAC;AAAA,gBAAC,SAAOH,IAAE;AAAC,sBAAG,MAAIC,GAAE;AAAA,gBAAM;AAAC,gBAAAA,KAAE,KAAK,MAAM,MAAIA,EAAC,GAAEC,MAAGA,GAAE,UAAQ,QAAMD,IAAEC,GAAE,UAAQD,MAAGD,GAAE,MAAM,UAAQ,aAAWG,KAAE,cAAYF,KAAE;AAAA,cAAG,GAAED,IAAEC,EAAC;AAAA,YAAC;AAAC,qBAAS,GAAGD,IAAE;AAAC,uBAAQC,KAAE,SAAS,gBAAgB,OAAMC,KAAE,GAAEA,KAAEF,GAAE,QAAOE,KAAI,KAAGF,GAAEE,EAAC,KAAID,GAAE,QAAOD,GAAEE,EAAC;AAAE,qBAAM;AAAA,YAAE;AAAC,qBAAS,GAAGF,IAAEC,IAAEC,IAAE;AAAC,kBAAIC,KAAEF,MAAG,IAAI,EAAE,GAAE,CAAC;AAAE,cAAAD,GAAE,MAAM,EAAE,KAAG,KAAG,eAAaG,GAAE,IAAE,QAAMA,GAAE,IAAE,QAAM,iBAAeA,GAAE,IAAE,QAAMA,GAAE,IAAE,YAAUD,KAAE,YAAUA,KAAE,MAAI;AAAA,YAAG;AAAC,qBAAS,GAAGF,IAAEC,IAAE;AAAC,cAAAD,GAAE,eAAaC,IAAE,KAAG,GAAGD,IAAEC,EAAC,KAAGD,GAAE,MAAM,OAAKC,GAAE,IAAE,MAAKD,GAAE,MAAM,MAAIC,GAAE,IAAE;AAAA,YAAK;AAAC,qBAAS,GAAGD,IAAE;AAAC,qBAAOA,GAAE,gBAAc,IAAI,EAAE,GAAE,CAAC;AAAA,YAAC;AAAC,gBAAG,mBAAkB,SAAS,MAAG,WAAU;AAAC,iBAAG,QAAO,eAAc,EAAE;AAAA,YAAC,GAAE,KAAG,WAAU;AAAC,iBAAG,QAAO,eAAc,EAAE;AAAA,YAAC;AAAA,iBAAM;AAAC,kBAAI,KAAG,GAAG,CAAC,cAAa,oBAAmB,eAAc,iBAAgB,cAAc,CAAC;AAAE,mBAAG,WAAU;AAAC,oBAAG,IAAG;AAAC,sBAAIA,KAAE,SAAS,gBAAgB;AAAM,uBAAGA,GAAE,EAAE,GAAEA,GAAE,EAAE,IAAE;AAAA,gBAAM;AAAA,cAAC,GAAE,KAAG,WAAU;AAAC,uBAAK,SAAS,gBAAgB,MAAM,EAAE,IAAE,IAAG,KAAG;AAAA,cAAO;AAAA,YAAC;AAAC,qBAAS,KAAI;AAAC,iBAAG,QAAO,aAAY,EAAE;AAAA,YAAC;AAAC,qBAAS,KAAI;AAAC,iBAAG,QAAO,aAAY,EAAE;AAAA,YAAC;AAAC,qBAAS,GAAGA,IAAE;AAAC,qBAAK,OAAKA,GAAE,WAAU,CAAAA,KAAEA,GAAE;AAAW,cAAAA,GAAE,UAAQ,GAAG,GAAE,KAAGA,IAAE,KAAGA,GAAE,MAAM,SAAQA,GAAE,MAAM,UAAQ,QAAO,GAAG,QAAO,WAAU,EAAE;AAAA,YAAE;AAAC,qBAAS,KAAI;AAAC,qBAAK,GAAG,MAAM,UAAQ,IAAG,KAAG,QAAO,KAAG,QAAO,GAAG,QAAO,WAAU,EAAE;AAAA,YAAE;AAAC,qBAAS,GAAGA,IAAE;AAAC,iBAAE;AAAC,gBAAAA,KAAEA,GAAE;AAAA,cAAU,SAAO,EAAEA,GAAE,eAAaA,GAAE,gBAAcA,OAAI,SAAS;AAAO,qBAAOA;AAAA,YAAC;AAAC,qBAAS,GAAGA,IAAE;AAAC,kBAAIC,KAAED,GAAE,sBAAsB;AAAE,qBAAM,EAAC,GAAEC,GAAE,QAAMD,GAAE,eAAa,GAAE,GAAEC,GAAE,SAAOD,GAAE,gBAAc,GAAE,oBAAmBC,GAAC;AAAA,YAAC;AAAC,gBAAI,KAAG,EAAC,WAAU,IAAG,YAAW,IAAG,gBAAe,IAAG,KAAI,IAAG,UAAS,IAAG,QAAOY,KAAG,QAAO,IAAG,OAAM,IAAG,SAAQ,IAAG,QAAOC,KAAG,UAAS,IAAG,UAASC,KAAG,aAAY,IAAG,UAAS,IAAG,UAAS,IAAG,YAAW,IAAG,UAAS,IAAG,cAAa,IAAG,aAAY,IAAG,aAAY,IAAG,sBAAqB,IAAG,qBAAoB,IAAG,kBAAiB,IAAG,iBAAgB,IAAG,gBAAe,IAAG,gBAAe,IAAG,oBAAmB,IAAG,UAAS,GAAE;AAAE,qBAAS,GAAGf,IAAEC,IAAEC,IAAEC,IAAE;AAAC,kBAAG,YAAU,OAAOF,GAAE,UAAQG,MAAKH,GAAE,IAAGD,IAAEI,IAAEH,GAAEG,EAAC,GAAEF,EAAC;AAAA,kBAAO,UAAQG,KAAE,GAAEC,MAAGL,KAAE,EAAEA,EAAC,GAAG,QAAOI,KAAEC,IAAED,KAAI,IAAGL,IAAEC,GAAEI,EAAC,GAAEH,IAAEC,EAAC;AAAE,qBAAO;AAAA,YAAI;AAAC,gBAAI,KAAG;AAAkB,qBAAS,GAAGH,IAAEC,IAAEC,IAAEC,IAAE;AAAC,kBAAG,YAAU,OAAOF,GAAE,UAAQG,MAAKH,GAAE,IAAGD,IAAEI,IAAEH,GAAEG,EAAC,GAAEF,EAAC;AAAA,uBAAUD,GAAE,UAAQI,KAAE,GAAEC,MAAGL,KAAE,EAAEA,EAAC,GAAG,QAAOI,KAAEC,IAAED,KAAI,IAAGL,IAAEC,GAAEI,EAAC,GAAEH,IAAEC,EAAC;AAAA,mBAAM;AAAC,yBAAQI,MAAKP,GAAE,EAAE,EAAE,IAAGA,IAAEO,IAAEP,GAAE,EAAE,EAAEO,EAAC,CAAC;AAAE,uBAAOP,GAAE,EAAE;AAAA,cAAC;AAAC,qBAAO;AAAA,YAAI;AAAC,qBAAS,KAAI;AAAC,kBAAG,GAAG,QAAM,EAAE,MAAI;AAAA,YAAG;AAAC,gBAAI,KAAG,EAAC,YAAW,aAAY,YAAW,YAAW,OAAM,EAAE,aAAY,WAAS,aAAY;AAAE,qBAAS,GAAGA,IAAEC,IAAEC,IAAEC,IAAE;AAAC,kBAAIC,KAAEH,KAAE,EAAEC,EAAC,KAAGC,KAAE,MAAI,EAAEA,EAAC,IAAE;AAAI,kBAAGH,GAAE,EAAE,KAAGA,GAAE,EAAE,EAAEI,EAAC,EAAE,QAAO;AAAK,kBAAIE,KAAE,SAASL,IAAE;AAAC,uBAAOC,GAAE,KAAKC,MAAGH,IAAEC,MAAG,OAAO,KAAK;AAAA,cAAC,GAAEM,KAAED;AAAE,oBAAI,MAAIL,GAAE,QAAQ,OAAO,IAAE,GAAGD,IAAEC,IAAEK,IAAEF,EAAC,IAAE,MAAI,eAAaH,MAAG,CAAC,GAAG,KAAE,SAASD,IAAEC,IAAEC,IAAE;AAAC,oBAAIC,IAAEC,IAAEC,KAAE;AAAG,yBAASC,GAAEN,IAAE;AAAC,sBAAG,IAAG;AAAC,wBAAG,CAACA,GAAE,UAAU;AAAO,wBAAG,YAAUA,GAAE,YAAY;AAAA,kBAAM,WAASA,GAAE,QAAQ,SAAO,EAAE;AAAO,sBAAIC,KAAE,KAAK,IAAI,GAAEC,KAAED,MAAGE,MAAGF;AAAG,kBAAAG,KAAEJ,GAAE,UAAQA,GAAE,QAAQ,CAAC,IAAEA,IAAEK,KAAEH,KAAE,KAAGA,MAAG,KAAIC,KAAEF;AAAA,gBAAC;AAAC,yBAASM,GAAEP,IAAE;AAAC,sBAAGK,MAAG,CAACD,GAAE,cAAa;AAAC,wBAAG,IAAG;AAAC,0BAAG,YAAUJ,GAAE,YAAY;AAAO,0BAAIE,IAAEI,IAAEC,KAAE,CAAC;AAAE,2BAAID,MAAKF,GAAE,CAAAF,KAAEE,GAAEE,EAAC,GAAEC,GAAED,EAAC,IAAEJ,MAAGA,GAAE,OAAKA,GAAE,KAAKE,EAAC,IAAEF;AAAE,sBAAAE,KAAEG;AAAA,oBAAC;AAAC,oBAAAH,GAAE,OAAK,YAAWA,GAAE,SAAO,GAAEH,GAAEG,EAAC,GAAED,KAAE;AAAA,kBAAI;AAAA,gBAAC;AAAC,gBAAAH,GAAE,KAAG,KAAGE,EAAC,IAAEI,IAAEN,GAAE,KAAG,KAAGE,EAAC,IAAEK,IAAEP,GAAE,KAAG,aAAWE,EAAC,IAAED,IAAED,GAAE,iBAAiB,IAAGM,IAAE,CAAC,CAAC,MAAI,EAAC,SAAQ,MAAE,CAAC,GAAEN,GAAE,iBAAiB,IAAGO,IAAE,CAAC,CAAC,MAAI,EAAC,SAAQ,MAAE,CAAC,GAAEP,GAAE,iBAAiB,YAAWC,IAAE,KAAE;AAAA,cAAC,GAAED,IAAEM,IAAEF,EAAC,IAAE,sBAAqBJ,KAAE,iBAAeC,MAAG,gBAAcA,MAAG,YAAUA,MAAG,iBAAeA,KAAED,GAAE,iBAAiB,GAAGC,EAAC,KAAGA,IAAEK,IAAE,CAAC,CAAC,MAAI,EAAC,SAAQ,MAAE,CAAC,IAAE,iBAAeL,MAAG,iBAAeA,MAAGK,KAAE,SAASL,IAAE;AAAC,gBAAAA,KAAEA,MAAG,OAAO,OAAM,GAAGD,IAAEC,EAAC,KAAGM,GAAEN,EAAC;AAAA,cAAC,GAAED,GAAE,iBAAiB,GAAGC,EAAC,GAAEK,IAAE,KAAE,KAAGN,GAAE,iBAAiBC,IAAEM,IAAE,KAAE,IAAE,iBAAgBP,MAAGA,GAAE,YAAY,OAAKC,IAAEK,EAAC,GAAEN,GAAE,EAAE,IAAEA,GAAE,EAAE,KAAG,CAAC,GAAEA,GAAE,EAAE,EAAEI,EAAC,IAAEE;AAAA,YAAC;AAAC,qBAAS,GAAGN,IAAEC,IAAEC,IAAEC,IAAE;AAAC,kBAAIC,KAAEH,KAAE,EAAEC,EAAC,KAAGC,KAAE,MAAI,EAAEA,EAAC,IAAE,KAAIG,KAAEN,GAAE,EAAE,KAAGA,GAAE,EAAE,EAAEI,EAAC;AAAE,kBAAG,CAACE,GAAE,QAAO;AAAK,oBAAI,MAAIL,GAAE,QAAQ,OAAO,KAAE,SAASD,IAAEC,IAAEC,IAAE;AAAC,oBAAIC,KAAEH,GAAE,cAAYC,KAAEC,EAAC;AAAE,iCAAeD,KAAED,GAAE,oBAAoB,IAAGG,IAAE,KAAE,IAAE,gBAAcF,KAAED,GAAE,oBAAoB,IAAGG,IAAE,KAAE,IAAE,eAAaF,OAAID,GAAE,oBAAoB,IAAGG,IAAE,KAAE,GAAEH,GAAE,oBAAoB,IAAGG,IAAE,KAAE;AAAA,cAAE,GAAEH,IAAEC,IAAEG,EAAC,IAAE,MAAI,eAAaH,MAAG,CAAC,GAAG,KAAE,SAASD,IAAEC,IAAE;AAAC,oBAAIC,KAAEF,GAAE,KAAG,KAAGC,EAAC,GAAEE,KAAEH,GAAE,KAAG,KAAGC,EAAC,GAAEG,KAAEJ,GAAE,KAAG,aAAWC,EAAC;AAAE,gBAAAD,GAAE,oBAAoB,IAAGE,IAAE,CAAC,CAAC,MAAI,EAAC,SAAQ,MAAE,CAAC,GAAEF,GAAE,oBAAoB,IAAGG,IAAE,CAAC,CAAC,MAAI,EAAC,SAAQ,MAAE,CAAC,GAAEH,GAAE,oBAAoB,YAAWI,IAAE,KAAE;AAAA,cAAC,GAAEJ,IAAEI,EAAC,IAAE,yBAAwBJ,KAAEA,GAAE,oBAAoB,GAAGC,EAAC,KAAGA,IAAEK,IAAE,KAAE,IAAE,iBAAgBN,MAAGA,GAAE,YAAY,OAAKC,IAAEK,EAAC,GAAEN,GAAE,EAAE,EAAEI,EAAC,IAAE;AAAA,YAAI;AAAC,qBAAS,GAAGJ,IAAE;AAAC,qBAAOA,GAAE,kBAAgBA,GAAE,gBAAgB,IAAEA,GAAE,gBAAcA,GAAE,cAAc,WAAS,OAAGA,GAAE,eAAa,MAAG,GAAGA,EAAC,GAAE;AAAA,YAAI;AAAC,qBAAS,GAAGA,IAAE;AAAC,qBAAO,GAAGA,IAAE,SAAQ,EAAE,GAAE;AAAA,YAAI;AAAC,qBAAS,GAAGA,IAAE;AAAC,qBAAO,GAAGA,IAAE,iCAAgC,EAAE,GAAE,GAAGA,IAAE,SAAQ,EAAE,GAAE;AAAA,YAAI;AAAC,qBAAS,GAAGA,IAAE;AAAC,qBAAOA,GAAE,iBAAeA,GAAE,eAAe,IAAEA,GAAE,cAAY,OAAG;AAAA,YAAI;AAAC,qBAAS,GAAGA,IAAE;AAAC,qBAAO,GAAGA,EAAC,GAAE,GAAGA,EAAC,GAAE;AAAA,YAAI;AAAC,qBAAS,GAAGA,IAAEC,IAAE;AAAC,kBAAG,CAACA,GAAE,QAAO,IAAI,EAAED,GAAE,SAAQA,GAAE,OAAO;AAAE,kBAAIE,KAAE,GAAGD,EAAC,GAAEE,KAAED,GAAE;AAAmB,qBAAO,IAAI,GAAGF,GAAE,UAAQG,GAAE,QAAMD,GAAE,IAAED,GAAE,aAAYD,GAAE,UAAQG,GAAE,OAAKD,GAAE,IAAED,GAAE,SAAS;AAAA,YAAC;AAAC,gBAAI,KAAG,MAAI,KAAG,IAAE,OAAO,mBAAiB,KAAG,OAAO,mBAAiB;AAAE,qBAAS,GAAGD,IAAE;AAAC,qBAAO,KAAGA,GAAE,cAAY,IAAEA,GAAE,UAAQ,MAAIA,GAAE,YAAU,CAACA,GAAE,SAAO,KAAGA,GAAE,UAAQ,MAAIA,GAAE,YAAU,KAAG,CAACA,GAAE,SAAOA,GAAE,UAAQ,MAAIA,GAAE,YAAU,KAAG,CAACA,GAAE,SAAOA,GAAE,UAAQA,GAAE,SAAO,IAAEA,GAAE,cAAYA,GAAE,eAAaA,GAAE,cAAY,IAAEA,GAAE,UAAQ,KAAK,IAAIA,GAAE,MAAM,IAAE,QAAM,KAAG,CAACA,GAAE,SAAOA,GAAE,SAAOA,GAAE,SAAO,SAAO,KAAG;AAAA,YAAC;AAAC,gBAAI,KAAG,CAAC;AAAE,qBAAS,GAAGA,IAAE;AAAC,iBAAGA,GAAE,IAAI,IAAE;AAAA,YAAE;AAAC,qBAAS,GAAGA,IAAE;AAAC,kBAAIC,KAAE,GAAGD,GAAE,IAAI;AAAE,qBAAO,GAAGA,GAAE,IAAI,IAAE,OAAGC;AAAA,YAAC;AAAC,qBAAS,GAAGD,IAAEC,IAAE;AAAC,kBAAIC,KAAED,GAAE;AAAc,kBAAG,CAACC,GAAE,QAAM;AAAG,kBAAG;AAAC,uBAAKA,MAAGA,OAAIF,KAAG,CAAAE,KAAEA,GAAE;AAAA,cAAU,SAAOF,IAAE;AAAC,uBAAM;AAAA,cAAE;AAAC,qBAAOE,OAAIF;AAAA,YAAC;AAAC,gBAAI,KAAG,EAAC,IAAG,IAAG,KAAI,IAAG,iBAAgB,IAAG,0BAAyB,IAAG,yBAAwB,IAAG,gBAAe,IAAG,MAAK,IAAG,kBAAiB,IAAG,eAAc,IAAG,UAAS,IAAG,SAAQ,IAAG,kBAAiB,IAAG,aAAY,IAAG,gBAAe,GAAE,GAAE,KAAG,EAAE,OAAO,EAAC,KAAI,SAASA,IAAEC,IAAEC,IAAEC,IAAE;AAAC,mBAAK,KAAK,GAAE,KAAK,MAAIH,IAAE,KAAK,cAAY,MAAG,KAAK,YAAUE,MAAG,MAAI,KAAK,gBAAc,IAAE,KAAK,IAAIC,MAAG,KAAG,GAAE,GAAE,KAAK,YAAU,GAAGH,EAAC,GAAE,KAAK,UAAQC,GAAE,SAAS,KAAK,SAAS,GAAE,KAAK,aAAW,CAAC,oBAAI,QAAK,KAAK,KAAK,OAAO,GAAE,KAAK,SAAS;AAAA,YAAC,GAAE,MAAK,WAAU;AAAC,mBAAK,gBAAc,KAAK,MAAM,IAAE,GAAE,KAAK,UAAU;AAAA,YAAE,GAAE,UAAS,WAAU;AAAC,mBAAK,UAAQ,EAAE,KAAK,UAAS,IAAI,GAAE,KAAK,MAAM;AAAA,YAAC,GAAE,OAAM,SAASD,IAAE;AAAC,kBAAIC,KAAE,CAAC,oBAAI,SAAK,KAAK,YAAWC,KAAE,MAAI,KAAK;AAAU,cAAAD,KAAEC,KAAE,KAAK,UAAU,KAAK,SAASD,KAAEC,EAAC,GAAEF,EAAC,KAAG,KAAK,UAAU,CAAC,GAAE,KAAK,UAAU;AAAA,YAAE,GAAE,WAAU,SAASA,IAAEC,IAAE;AAAC,kBAAIC,KAAE,KAAK,UAAU,IAAI,KAAK,QAAQ,WAAWF,EAAC,CAAC;AAAE,cAAAC,MAAGC,GAAE,OAAO,GAAE,GAAG,KAAK,KAAIA,EAAC,GAAE,KAAK,KAAK,MAAM;AAAA,YAAC,GAAE,WAAU,WAAU;AAAC,gBAAE,KAAK,OAAO,GAAE,KAAK,cAAY,OAAG,KAAK,KAAK,KAAK;AAAA,YAAC,GAAE,UAAS,SAASF,IAAE;AAAC,qBAAO,IAAE,KAAK,IAAI,IAAEA,IAAE,KAAK,aAAa;AAAA,YAAC,EAAC,CAAC,GAAE,KAAG,EAAE,OAAO,EAAC,SAAQ,EAAC,KAAI,GAAE,QAAO,QAAO,MAAK,QAAO,SAAQ,QAAO,SAAQ,QAAO,QAAO,CAAC,GAAE,WAAU,QAAO,UAAS,QAAO,eAAc,MAAG,wBAAuB,GAAE,eAAc,MAAG,qBAAoB,MAAG,kBAAiB,SAAQ,UAAS,GAAE,WAAU,GAAE,aAAY,KAAE,GAAE,YAAW,SAASA,IAAEC,IAAE;AAAC,cAAAA,KAAE,EAAE,MAAKA,EAAC,GAAE,KAAK,YAAU,CAAC,GAAE,KAAK,UAAQ,CAAC,GAAE,KAAK,mBAAiB,CAAC,GAAE,KAAK,eAAa,MAAG,KAAK,eAAeD,EAAC,GAAE,KAAK,YAAY,GAAE,KAAK,YAAUG,GAAE,KAAK,WAAU,IAAI,GAAE,KAAK,YAAY,GAAEF,GAAE,aAAW,KAAK,aAAaA,GAAE,SAAS,GAAE,WAASA,GAAE,SAAO,KAAK,QAAM,KAAK,WAAWA,GAAE,IAAI,IAAGA,GAAE,UAAQ,WAASA,GAAE,QAAM,KAAK,QAAQ,EAAEA,GAAE,MAAM,GAAEA,GAAE,MAAK,EAAC,OAAM,KAAE,CAAC,GAAE,KAAK,cAAc,GAAE,KAAK,gBAAc,MAAI,MAAI,CAAC,MAAI,KAAK,QAAQ,eAAc,KAAK,kBAAgB,KAAK,iBAAiB,GAAE,GAAG,KAAK,QAAO,IAAG,KAAK,qBAAoB,IAAI,IAAG,KAAK,WAAW,KAAK,QAAQ,MAAM;AAAA,YAAC,GAAE,SAAQ,SAASD,IAAEE,IAAEC,IAAE;AAAC,qBAAOD,KAAE,WAASA,KAAE,KAAK,QAAM,KAAK,WAAWA,EAAC,GAAEF,KAAE,KAAK,aAAa,EAAEA,EAAC,GAAEE,IAAE,KAAK,QAAQ,SAAS,GAAEC,KAAEA,MAAG,CAAC,GAAE,KAAK,MAAM,GAAE,KAAK,WAAS,CAACA,GAAE,SAAO,SAAKA,OAAI,WAASA,GAAE,YAAUA,GAAE,OAAKF,GAAE,EAAC,SAAQE,GAAE,QAAO,GAAEA,GAAE,IAAI,GAAEA,GAAE,MAAIF,GAAE,EAAC,SAAQE,GAAE,SAAQ,UAASA,GAAE,SAAQ,GAAEA,GAAE,GAAG,IAAG,KAAK,UAAQD,KAAE,KAAK,oBAAkB,KAAK,iBAAiBF,IAAEE,IAAEC,GAAE,IAAI,IAAE,KAAK,gBAAgBH,IAAEG,GAAE,GAAG,MAAI,aAAa,KAAK,UAAU,GAAE,SAAO,KAAK,WAAWH,IAAEE,EAAC,GAAE;AAAA,YAAK,GAAE,SAAQ,SAASF,IAAEC,IAAE;AAAC,qBAAO,KAAK,UAAQ,KAAK,QAAQ,KAAK,UAAU,GAAED,IAAE,EAAC,MAAKC,GAAC,CAAC,KAAG,KAAK,QAAMD,IAAE;AAAA,YAAK,GAAE,QAAO,SAASA,IAAEC,IAAE;AAAC,qBAAOD,KAAEA,OAAI,KAAG,KAAK,QAAQ,YAAU,IAAG,KAAK,QAAQ,KAAK,QAAMA,IAAEC,EAAC;AAAA,YAAC,GAAE,SAAQ,SAASD,IAAEC,IAAE;AAAC,qBAAOD,KAAEA,OAAI,KAAG,KAAK,QAAQ,YAAU,IAAG,KAAK,QAAQ,KAAK,QAAMA,IAAEC,EAAC;AAAA,YAAC,GAAE,eAAc,SAASD,IAAEC,IAAEC,IAAE;AAAC,kBAAIC,KAAE,KAAK,aAAaF,EAAC,GAAEG,KAAE,KAAK,QAAQ,EAAE,SAAS,CAAC,GAAEC,MAAGL,cAAa,IAAEA,KAAE,KAAK,uBAAuBA,EAAC,GAAG,SAASI,EAAC,EAAE,WAAW,IAAE,IAAED,EAAC,GAAEG,KAAE,KAAK,uBAAuBF,GAAE,IAAIC,EAAC,CAAC;AAAE,qBAAO,KAAK,QAAQC,IAAEL,IAAE,EAAC,MAAKC,GAAC,CAAC;AAAA,YAAC,GAAE,sBAAqB,SAASF,IAAEC,IAAE;AAAC,cAAAA,KAAEA,MAAG,CAAC,GAAED,KAAEA,GAAE,YAAUA,GAAE,UAAU,IAAE,EAAEA,EAAC;AAAE,kBAAIE,KAAE,EAAED,GAAE,kBAAgBA,GAAE,WAAS,CAAC,GAAE,CAAC,CAAC,GAAEE,KAAE,EAAEF,GAAE,sBAAoBA,GAAE,WAAS,CAAC,GAAE,CAAC,CAAC,GAAEG,KAAE,KAAK,cAAcJ,IAAE,OAAGE,GAAE,IAAIC,EAAC,CAAC;AAAE,mBAAIC,KAAE,YAAU,OAAOH,GAAE,UAAQ,KAAK,IAAIA,GAAE,SAAQG,EAAC,IAAEA,QAAK,IAAE,EAAE,QAAM,EAAC,QAAOJ,GAAE,UAAU,GAAE,MAAKI,GAAC;AAAE,kBAAIC,KAAEF,GAAE,SAASD,EAAC,EAAE,SAAS,CAAC,GAAEI,KAAE,KAAK,QAAQN,GAAE,aAAa,GAAEI,EAAC,GAAEG,KAAE,KAAK,QAAQP,GAAE,aAAa,GAAEI,EAAC;AAAE,qBAAM,EAAC,QAAO,KAAK,UAAUE,GAAE,IAAIC,EAAC,EAAE,SAAS,CAAC,EAAE,IAAIF,EAAC,GAAED,EAAC,GAAE,MAAKA,GAAC;AAAA,YAAC,GAAE,WAAU,SAASJ,IAAEC,IAAE;AAAC,kBAAG,EAAED,KAAE,EAAEA,EAAC,GAAG,QAAQ,EAAE,OAAM,IAAI,MAAM,uBAAuB;AAAE,kBAAIE,KAAE,KAAK,qBAAqBF,IAAEC,EAAC;AAAE,qBAAO,KAAK,QAAQC,GAAE,QAAOA,GAAE,MAAKD,EAAC;AAAA,YAAC,GAAE,UAAS,SAASD,IAAE;AAAC,qBAAO,KAAK,UAAU,CAAC,CAAC,KAAI,IAAI,GAAE,CAAC,IAAG,GAAG,CAAC,GAAEA,EAAC;AAAA,YAAC,GAAE,OAAM,SAASA,IAAEC,IAAE;AAAC,qBAAO,KAAK,QAAQD,IAAE,KAAK,OAAM,EAAC,KAAIC,GAAC,CAAC;AAAA,YAAC,GAAE,OAAM,SAASD,IAAEC,IAAE;AAAC,kBAAGA,KAAEA,MAAG,CAAC,GAAE,EAAED,KAAE,EAAEA,EAAC,EAAE,MAAM,GAAG,KAAG,CAACA,GAAE,EAAE,QAAO,KAAK,KAAK,SAAS;AAAE,kBAAG,SAAKC,GAAE,WAAS,CAAC,KAAK,QAAQ,EAAE,SAASD,EAAC,EAAE,QAAO,KAAK,WAAW,KAAK,UAAU,KAAK,QAAQ,KAAK,UAAU,CAAC,EAAE,IAAIA,EAAC,CAAC,GAAE,KAAK,QAAQ,CAAC,GAAE;AAAK,kBAAG,KAAK,aAAW,KAAK,WAAS,IAAI,MAAG,KAAK,SAAS,GAAG,EAAC,MAAK,KAAK,sBAAqB,KAAI,KAAK,oBAAmB,GAAE,IAAI,IAAGC,GAAE,eAAa,KAAK,KAAK,WAAW,GAAE,UAAKA,GAAE,SAAQ;AAAC,gBAAAc,IAAG,KAAK,UAAS,kBAAkB;AAAE,oBAAIb,KAAE,KAAK,eAAe,EAAE,SAASF,EAAC,EAAE,MAAM;AAAE,qBAAK,SAAS,IAAI,KAAK,UAASE,IAAED,GAAE,YAAU,MAAIA,GAAE,aAAa;AAAA,cAAC,MAAM,MAAK,UAAUD,EAAC,GAAE,KAAK,KAAK,MAAM,EAAE,KAAK,SAAS;AAAE,qBAAO;AAAA,YAAI,GAAE,OAAM,SAASA,IAAEC,IAAEC,IAAE;AAAC,kBAAG,WAAMA,KAAEA,MAAG,CAAC,GAAG,WAAS,CAAC,GAAG,QAAO,KAAK,QAAQF,IAAEC,IAAEC,EAAC;AAAE,mBAAK,MAAM;AAAE,kBAAIC,KAAE,KAAK,QAAQ,KAAK,UAAU,CAAC,GAAEC,KAAE,KAAK,QAAQJ,EAAC,GAAEK,KAAE,KAAK,QAAQ,GAAEC,KAAE,KAAK;AAAM,cAAAN,KAAE,EAAEA,EAAC,GAAEC,KAAE,WAASA,KAAEK,KAAEL;AAAE,kBAAIM,KAAE,KAAK,IAAIF,GAAE,GAAEA,GAAE,CAAC,GAAEG,KAAED,KAAE,KAAK,aAAaD,IAAEL,EAAC,GAAEe,KAAEZ,GAAE,WAAWD,EAAC,KAAG,GAAEc,KAAE,MAAKC,KAAE;AAAO,uBAASC,GAAEnB,IAAE;AAAC,oBAAIC,MAAGO,KAAEA,KAAED,KAAEA,MAAGP,KAAE,KAAG,KAAGkB,KAAEA,KAAEF,KAAEA,OAAI,KAAGhB,KAAEQ,KAAED,MAAGW,KAAEF,KAAGd,KAAE,KAAK,KAAKD,KAAEA,KAAE,CAAC,IAAEA;AAAE,uBAAOC,KAAE,OAAK,MAAI,KAAK,IAAIA,EAAC;AAAA,cAAC;AAAC,uBAASkB,GAAEpB,IAAE;AAAC,wBAAO,KAAK,IAAIA,EAAC,IAAE,KAAK,IAAI,CAACA,EAAC,KAAG;AAAA,cAAC;AAAC,uBAASqB,GAAErB,IAAE;AAAC,wBAAO,KAAK,IAAIA,EAAC,IAAE,KAAK,IAAI,CAACA,EAAC,KAAG;AAAA,cAAC;AAAC,kBAAIsB,KAAEH,GAAE,CAAC;AAAE,uBAASI,GAAEvB,IAAE;AAAC,uBAAOO,MAAGc,GAAEC,EAAC,KAAGF,GAAEnB,KAAEqB,KAAEL,KAAEjB,EAAC,IAAEqB,GAAEpB,EAAC,KAAGmB,GAAEE,EAAC,KAAGJ;AAAE,oBAAIjB;AAAA,cAAC;AAAC,kBAAIuB,KAAE,KAAK,IAAI,GAAEC,MAAGN,GAAE,CAAC,IAAEG,MAAGL,IAAES,KAAExB,GAAE,WAAS,MAAIA,GAAE,WAAS,MAAIuB,KAAE;AAAG,qBAAO,KAAK,WAAW,MAAGvB,GAAE,WAAW,GAAE,SAASA,KAAG;AAAC,oBAAIG,MAAG,KAAK,IAAI,IAAEmB,MAAGE,IAAElB,MAAE,SAASR,IAAE;AAAC,yBAAO,IAAE,KAAK,IAAI,IAAEA,IAAE,GAAG;AAAA,gBAAC,GAAEK,EAAC,IAAEoB;AAAE,gBAAApB,MAAG,KAAG,KAAK,cAAY,EAAEH,IAAE,IAAI,GAAE,KAAK,MAAM,KAAK,UAAUC,GAAE,IAAIC,GAAE,SAASD,EAAC,EAAE,WAAWoB,GAAEf,EAAC,IAAEQ,EAAC,CAAC,GAAEV,EAAC,GAAE,KAAK,aAAaC,MAAE,SAASP,IAAE;AAAC,yBAAOO,MAAGc,GAAEC,EAAC,IAAED,GAAEC,KAAEL,KAAEjB,EAAC;AAAA,gBAAE,GAAEQ,EAAC,GAAEF,EAAC,GAAE,EAAC,OAAM,KAAE,CAAC,KAAG,KAAK,MAAMN,IAAEC,EAAC,EAAE,SAAS,IAAE;AAAA,cAAC,EAAE,KAAK,IAAI,GAAE;AAAA,YAAI,GAAE,aAAY,SAASD,IAAEC,IAAE;AAAC,kBAAIC,KAAE,KAAK,qBAAqBF,IAAEC,EAAC;AAAE,qBAAO,KAAK,MAAMC,GAAE,QAAOA,GAAE,MAAKD,EAAC;AAAA,YAAC,GAAE,cAAa,SAASD,IAAE;AAAC,sBAAOA,KAAE,EAAEA,EAAC,GAAG,QAAQ,KAAG,KAAK,QAAQ,aAAW,KAAK,IAAI,WAAU,KAAK,mBAAmB,GAAE,KAAK,QAAQ,YAAUA,IAAE,KAAK,WAAS,KAAK,oBAAoB,GAAE,KAAK,GAAG,WAAU,KAAK,mBAAmB,MAAI,KAAK,QAAQ,YAAU,MAAK,KAAK,IAAI,WAAU,KAAK,mBAAmB;AAAA,YAAE,GAAE,YAAW,SAASA,IAAE;AAAC,kBAAIC,KAAE,KAAK,QAAQ;AAAQ,qBAAO,KAAK,QAAQ,UAAQD,IAAE,KAAK,WAASC,OAAID,OAAI,KAAK,KAAK,kBAAkB,GAAE,KAAK,QAAQ,IAAE,KAAK,QAAQ,WAAS,KAAK,QAAQA,EAAC,IAAE;AAAA,YAAI,GAAE,YAAW,SAASA,IAAE;AAAC,kBAAIC,KAAE,KAAK,QAAQ;AAAQ,qBAAO,KAAK,QAAQ,UAAQD,IAAE,KAAK,WAASC,OAAID,OAAI,KAAK,KAAK,kBAAkB,GAAE,KAAK,QAAQ,IAAE,KAAK,QAAQ,WAAS,KAAK,QAAQA,EAAC,IAAE;AAAA,YAAI,GAAE,iBAAgB,SAASA,IAAEC,IAAE;AAAC,mBAAK,mBAAiB;AAAG,kBAAIC,KAAE,KAAK,UAAU,GAAEC,KAAE,KAAK,aAAaD,IAAE,KAAK,OAAM,EAAEF,EAAC,CAAC;AAAE,qBAAOE,GAAE,OAAOC,EAAC,KAAG,KAAK,MAAMA,IAAEF,EAAC,GAAE,KAAK,mBAAiB,OAAG;AAAA,YAAI,GAAE,WAAU,SAASD,IAAEC,IAAE;AAAC,kBAAIC,KAAE,GAAGD,KAAEA,MAAG,CAAC,GAAG,kBAAgBA,GAAE,WAAS,CAAC,GAAE,CAAC,CAAC,GAAEE,KAAE,EAAEF,GAAE,sBAAoBA,GAAE,WAAS,CAAC,GAAE,CAAC,CAAC,GAAEG,KAAE,KAAK,UAAU,GAAEC,KAAE,KAAK,QAAQD,EAAC,GAAEE,KAAE,KAAK,QAAQN,EAAC,GAAEO,KAAE,KAAK,eAAe,GAAEC,KAAED,GAAE,QAAQ,EAAE,SAAS,CAAC,GAAES,KAAE,EAAE,CAACT,GAAE,IAAI,IAAIL,EAAC,GAAEK,GAAE,IAAI,SAASJ,EAAC,CAAC,CAAC;AAAE,kBAAG,CAACa,GAAE,SAASV,EAAC,GAAE;AAAC,qBAAK,mBAAiB;AAAG,oBAAIW,KAAEZ,GAAE,SAASC,EAAC,GAAEY,KAAE,EAAEZ,GAAE,IAAEW,GAAE,GAAEX,GAAE,IAAEW,GAAE,CAAC;AAAE,iBAACX,GAAE,IAAEU,GAAE,IAAI,KAAGV,GAAE,IAAEU,GAAE,IAAI,OAAKE,GAAE,IAAEb,GAAE,IAAEY,GAAE,GAAEA,GAAE,IAAE,IAAEC,GAAE,KAAGV,GAAE,IAAEN,GAAE,IAAEgB,GAAE,KAAGV,GAAE,IAAEL,GAAE,KAAIG,GAAE,IAAEU,GAAE,IAAI,KAAGV,GAAE,IAAEU,GAAE,IAAI,OAAKE,GAAE,IAAEb,GAAE,IAAEY,GAAE,GAAEA,GAAE,IAAE,IAAEC,GAAE,KAAGV,GAAE,IAAEN,GAAE,IAAEgB,GAAE,KAAGV,GAAE,IAAEL,GAAE,IAAG,KAAK,MAAM,KAAK,UAAUe,EAAC,GAAEjB,EAAC,GAAE,KAAK,mBAAiB;AAAA,cAAE;AAAC,qBAAO;AAAA,YAAI,GAAE,gBAAe,SAASD,IAAE;AAAC,kBAAG,CAAC,KAAK,QAAQ,QAAO;AAAK,cAAAA,KAAEC,GAAE,EAAC,SAAQ,OAAG,KAAI,KAAE,GAAE,SAAKD,KAAE,EAAC,SAAQ,KAAE,IAAEA,EAAC;AAAE,kBAAIE,KAAE,KAAK,QAAQ;AAAE,mBAAK,eAAa,MAAG,KAAK,cAAY;AAAK,kBAAIE,KAAE,KAAK,QAAQ,GAAEC,KAAEH,GAAE,SAAS,CAAC,EAAE,MAAM,GAAEI,KAAEF,GAAE,SAAS,CAAC,EAAE,MAAM,GAAEG,KAAEF,GAAE,SAASC,EAAC;AAAE,qBAAOC,GAAE,KAAGA,GAAE,KAAGP,GAAE,WAASA,GAAE,MAAI,KAAK,MAAMO,EAAC,KAAGP,GAAE,OAAK,KAAK,UAAUO,EAAC,GAAE,KAAK,KAAK,MAAM,GAAEP,GAAE,mBAAiB,aAAa,KAAK,UAAU,GAAE,KAAK,aAAW,WAAWG,GAAE,KAAK,MAAK,MAAK,SAAS,GAAE,GAAG,KAAG,KAAK,KAAK,SAAS,IAAG,KAAK,KAAK,UAAS,EAAC,SAAQD,IAAE,SAAQE,GAAC,CAAC,KAAG;AAAA,YAAI,GAAE,MAAK,WAAU;AAAC,qBAAO,KAAK,QAAQ,KAAK,WAAW,KAAK,KAAK,CAAC,GAAE,KAAK,QAAQ,YAAU,KAAK,KAAK,WAAW,GAAE,KAAK,MAAM;AAAA,YAAC,GAAE,QAAO,SAASJ,IAAE;AAAC,kBAAGA,KAAE,KAAK,iBAAeC,GAAE,EAAC,SAAQ,KAAI,OAAM,MAAE,GAAED,EAAC,GAAE,EAAE,iBAAgB,WAAW,QAAO,KAAK,wBAAwB,EAAC,MAAK,GAAE,SAAQ,6BAA4B,CAAC,GAAE;AAAK,kBAAIE,KAAEC,GAAE,KAAK,4BAA2B,IAAI,GAAEC,KAAED,GAAE,KAAK,yBAAwB,IAAI;AAAE,qBAAOH,GAAE,QAAM,KAAK,mBAAiB,UAAU,YAAY,cAAcE,IAAEE,IAAEJ,EAAC,IAAE,UAAU,YAAY,mBAAmBE,IAAEE,IAAEJ,EAAC,GAAE;AAAA,YAAI,GAAE,YAAW,WAAU;AAAC,qBAAO,UAAU,eAAa,UAAU,YAAY,cAAY,UAAU,YAAY,WAAW,KAAK,gBAAgB,GAAE,KAAK,mBAAiB,KAAK,eAAe,UAAQ,QAAI;AAAA,YAAI,GAAE,yBAAwB,SAASA,IAAE;AAAC,kBAAIC,KAAED,GAAE,MAAKE,KAAEF,GAAE,YAAU,MAAIC,KAAE,sBAAoB,MAAIA,KAAE,yBAAuB;AAAW,mBAAK,eAAe,WAAS,CAAC,KAAK,WAAS,KAAK,SAAS,GAAE,KAAK,KAAK,iBAAgB,EAAC,MAAKA,IAAE,SAAQ,wBAAsBC,KAAE,IAAG,CAAC;AAAA,YAAC,GAAE,4BAA2B,SAASF,IAAE;AAAC,kBAAIC,KAAE,IAAI,EAAED,GAAE,OAAO,UAASA,GAAE,OAAO,SAAS,GAAEE,KAAED,GAAE,SAAS,IAAED,GAAE,OAAO,QAAQ,GAAEG,KAAE,KAAK;AAAe,kBAAGA,GAAE,SAAQ;AAAC,oBAAIC,KAAE,KAAK,cAAcF,EAAC;AAAE,qBAAK,QAAQD,IAAEE,GAAE,UAAQ,KAAK,IAAIC,IAAED,GAAE,OAAO,IAAEC,EAAC;AAAA,cAAC;AAAC,kBAAIC,KAAE,EAAC,QAAOJ,IAAE,QAAOC,IAAE,WAAUF,GAAE,UAAS;AAAE,uBAAQM,MAAKN,GAAE,OAAO,aAAU,OAAOA,GAAE,OAAOM,EAAC,MAAID,GAAEC,EAAC,IAAEN,GAAE,OAAOM,EAAC;AAAG,mBAAK,KAAK,iBAAgBD,EAAC;AAAA,YAAC,GAAE,YAAW,SAASL,IAAEC,IAAE;AAAC,kBAAG,CAACA,GAAE,QAAO;AAAK,kBAAIC,KAAE,KAAKF,EAAC,IAAE,IAAIC,GAAE,IAAI;AAAE,qBAAO,KAAK,UAAU,KAAKC,EAAC,GAAE,KAAK,QAAQF,EAAC,KAAGE,GAAE,OAAO,GAAE;AAAA,YAAI,GAAE,QAAO,WAAU;AAAC,kBAAG,KAAK,YAAY,IAAE,GAAE,KAAK,IAAI,WAAU,KAAK,mBAAmB,GAAE,KAAK,iBAAe,KAAK,WAAW,YAAY,OAAM,IAAI,MAAM,mDAAmD;AAAE,kBAAG;AAAC,uBAAO,KAAK,WAAW,aAAY,OAAO,KAAK;AAAA,cAAY,SAAOF,IAAE;AAAC,qBAAK,WAAW,cAAY,QAAO,KAAK,eAAa;AAAA,cAAM;AAAC,kBAAIA;AAAE,mBAAIA,MAAK,WAAS,KAAK,oBAAkB,KAAK,WAAW,GAAE,KAAK,MAAM,GAAE,GAAG,KAAK,QAAQ,GAAE,KAAK,oBAAkB,KAAK,iBAAiB,GAAE,KAAK,mBAAiB,EAAE,KAAK,cAAc,GAAE,KAAK,iBAAe,OAAM,KAAK,eAAe,GAAE,KAAK,WAAS,KAAK,KAAK,QAAQ,GAAE,KAAK,QAAQ,MAAK,QAAQA,EAAC,EAAE,OAAO;AAAE,mBAAIA,MAAK,KAAK,OAAO,IAAG,KAAK,OAAOA,EAAC,CAAC;AAAE,qBAAO,KAAK,UAAQ,CAAC,GAAE,KAAK,SAAO,CAAC,GAAE,OAAO,KAAK,UAAS,OAAO,KAAK,WAAU;AAAA,YAAI,GAAE,YAAW,SAASA,IAAEC,IAAE;AAAC,kBAAIC,KAAEW,IAAG,OAAM,kBAAgBb,KAAE,cAAYA,GAAE,QAAQ,QAAO,EAAE,IAAE,UAAQ,KAAIC,MAAG,KAAK,QAAQ;AAAE,qBAAOD,OAAI,KAAK,OAAOA,EAAC,IAAEE,KAAGA;AAAA,YAAC,GAAE,WAAU,WAAU;AAAC,qBAAO,KAAK,eAAe,GAAE,KAAK,eAAa,CAAC,KAAK,OAAO,IAAE,KAAK,cAAY,KAAK,mBAAmB,KAAK,qBAAqB,CAAC;AAAA,YAAC,GAAE,SAAQ,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAK,GAAE,WAAU,WAAU;AAAC,kBAAIF,KAAE,KAAK,eAAe;AAAE,qBAAO,IAAI,EAAE,KAAK,UAAUA,GAAE,cAAc,CAAC,GAAE,KAAK,UAAUA,GAAE,YAAY,CAAC,CAAC;AAAA,YAAC,GAAE,YAAW,WAAU;AAAC,qBAAO,WAAS,KAAK,QAAQ,UAAQ,KAAK,kBAAgB,IAAE,KAAK,QAAQ;AAAA,YAAO,GAAE,YAAW,WAAU;AAAC,qBAAO,WAAS,KAAK,QAAQ,UAAQ,WAAS,KAAK,iBAAe,IAAE,IAAE,KAAK,iBAAe,KAAK,QAAQ;AAAA,YAAO,GAAE,eAAc,SAASA,IAAEC,IAAEC,IAAE;AAAC,cAAAF,KAAE,EAAEA,EAAC,GAAEE,KAAE,EAAEA,MAAG,CAAC,GAAE,CAAC,CAAC;AAAE,kBAAIC,KAAE,KAAK,QAAQ,KAAG,GAAEC,KAAE,KAAK,WAAW,GAAEC,KAAE,KAAK,WAAW,GAAEC,KAAEN,GAAE,aAAa,GAAEO,KAAEP,GAAE,aAAa,GAAEQ,KAAE,KAAK,QAAQ,EAAE,SAASN,EAAC,GAAEc,KAAE,EAAE,KAAK,QAAQT,IAAEJ,EAAC,GAAE,KAAK,QAAQG,IAAEH,EAAC,CAAC,EAAE,QAAQ,GAAEc,KAAE,KAAG,KAAK,QAAQ,WAAS,GAAEC,KAAEV,GAAE,IAAEQ,GAAE,GAAEG,KAAEX,GAAE,IAAEQ,GAAE,GAAEI,KAAEnB,KAAE,KAAK,IAAIiB,IAAEC,EAAC,IAAE,KAAK,IAAID,IAAEC,EAAC;AAAE,qBAAOhB,KAAE,KAAK,aAAaiB,IAAEjB,EAAC,GAAEc,OAAId,KAAE,KAAK,MAAMA,MAAGc,KAAE,IAAI,KAAGA,KAAE,MAAKd,KAAEF,KAAE,KAAK,KAAKE,KAAEc,EAAC,IAAEA,KAAE,KAAK,MAAMd,KAAEc,EAAC,IAAEA,KAAG,KAAK,IAAIb,IAAE,KAAK,IAAIC,IAAEF,EAAC,CAAC;AAAA,YAAC,GAAE,SAAQ,WAAU;AAAC,qBAAO,KAAK,SAAO,CAAC,KAAK,iBAAe,KAAK,QAAM,IAAI,EAAE,KAAK,WAAW,eAAa,GAAE,KAAK,WAAW,gBAAc,CAAC,GAAE,KAAK,eAAa,QAAI,KAAK,MAAM,MAAM;AAAA,YAAC,GAAE,gBAAe,SAASH,IAAEC,IAAE;AAAC,kBAAIC,KAAE,KAAK,iBAAiBF,IAAEC,EAAC;AAAE,qBAAO,IAAI,EAAEC,IAAEA,GAAE,IAAI,KAAK,QAAQ,CAAC,CAAC;AAAA,YAAC,GAAE,gBAAe,WAAU;AAAC,qBAAO,KAAK,eAAe,GAAE,KAAK;AAAA,YAAY,GAAE,qBAAoB,SAASF,IAAE;AAAC,qBAAO,KAAK,QAAQ,IAAI,mBAAmB,WAASA,KAAE,KAAK,QAAQ,IAAEA,EAAC;AAAA,YAAC,GAAE,SAAQ,SAASA,IAAE;AAAC,qBAAM,YAAU,OAAOA,KAAE,KAAK,OAAOA,EAAC,IAAEA;AAAA,YAAC,GAAE,UAAS,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAM,GAAE,cAAa,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAU,GAAE,cAAa,SAASA,IAAEC,IAAE;AAAC,kBAAIC,KAAE,KAAK,QAAQ;AAAI,qBAAOD,KAAE,WAASA,KAAE,KAAK,QAAMA,IAAEC,GAAE,MAAMF,EAAC,IAAEE,GAAE,MAAMD,EAAC;AAAA,YAAC,GAAE,cAAa,SAASD,IAAEC,IAAE;AAAC,kBAAIC,KAAE,KAAK,QAAQ;AAAI,cAAAD,KAAE,WAASA,KAAE,KAAK,QAAMA;AAAE,kBAAIE,KAAED,GAAE,KAAKF,KAAEE,GAAE,MAAMD,EAAC,CAAC;AAAE,qBAAO,MAAME,EAAC,IAAE,IAAE,IAAEA;AAAA,YAAC,GAAE,SAAQ,SAASH,IAAEC,IAAE;AAAC,qBAAOA,KAAE,WAASA,KAAE,KAAK,QAAMA,IAAE,KAAK,QAAQ,IAAI,cAAc,EAAED,EAAC,GAAEC,EAAC;AAAA,YAAC,GAAE,WAAU,SAASD,IAAEC,IAAE;AAAC,qBAAOA,KAAE,WAASA,KAAE,KAAK,QAAMA,IAAE,KAAK,QAAQ,IAAI,cAAc,EAAED,EAAC,GAAEC,EAAC;AAAA,YAAC,GAAE,oBAAmB,SAASD,IAAE;AAAC,kBAAIC,KAAE,EAAED,EAAC,EAAE,IAAI,KAAK,eAAe,CAAC;AAAE,qBAAO,KAAK,UAAUC,EAAC;AAAA,YAAC,GAAE,oBAAmB,SAASD,IAAE;AAAC,qBAAO,KAAK,QAAQ,EAAEA,EAAC,CAAC,EAAE,OAAO,EAAE,UAAU,KAAK,eAAe,CAAC;AAAA,YAAC,GAAE,YAAW,SAASA,IAAE;AAAC,qBAAO,KAAK,QAAQ,IAAI,WAAW,EAAEA,EAAC,CAAC;AAAA,YAAC,GAAE,kBAAiB,SAASA,IAAE;AAAC,qBAAO,KAAK,QAAQ,IAAI,iBAAiB,EAAEA,EAAC,CAAC;AAAA,YAAC,GAAE,UAAS,SAASA,IAAEC,IAAE;AAAC,qBAAO,KAAK,QAAQ,IAAI,SAAS,EAAED,EAAC,GAAE,EAAEC,EAAC,CAAC;AAAA,YAAC,GAAE,4BAA2B,SAASD,IAAE;AAAC,qBAAO,EAAEA,EAAC,EAAE,SAAS,KAAK,eAAe,CAAC;AAAA,YAAC,GAAE,4BAA2B,SAASA,IAAE;AAAC,qBAAO,EAAEA,EAAC,EAAE,IAAI,KAAK,eAAe,CAAC;AAAA,YAAC,GAAE,wBAAuB,SAASA,IAAE;AAAC,kBAAIC,KAAE,KAAK,2BAA2B,EAAED,EAAC,CAAC;AAAE,qBAAO,KAAK,mBAAmBC,EAAC;AAAA,YAAC,GAAE,wBAAuB,SAASD,IAAE;AAAC,qBAAO,KAAK,2BAA2B,KAAK,mBAAmB,EAAEA,EAAC,CAAC,CAAC;AAAA,YAAC,GAAE,4BAA2B,SAASA,IAAE;AAAC,qBAAO,GAAGA,IAAE,KAAK,UAAU;AAAA,YAAC,GAAE,wBAAuB,SAASA,IAAE;AAAC,qBAAO,KAAK,2BAA2B,KAAK,2BAA2BA,EAAC,CAAC;AAAA,YAAC,GAAE,oBAAmB,SAASA,IAAE;AAAC,qBAAO,KAAK,mBAAmB,KAAK,uBAAuBA,EAAC,CAAC;AAAA,YAAC,GAAE,gBAAe,SAASA,IAAE;AAAC,kBAAIC,KAAE,KAAK,aAAW,GAAGD,EAAC;AAAE,kBAAG,CAACC,GAAE,OAAM,IAAI,MAAM,0BAA0B;AAAE,kBAAGA,GAAE,YAAY,OAAM,IAAI,MAAM,uCAAuC;AAAE,iBAAGA,IAAE,UAAS,KAAK,WAAU,IAAI,GAAE,KAAK,eAAa,EAAEA,EAAC;AAAA,YAAC,GAAE,aAAY,WAAU;AAAC,kBAAID,KAAE,KAAK;AAAW,mBAAK,gBAAc,KAAK,QAAQ,iBAAe,IAAGe,IAAGf,IAAE,uBAAqB,KAAG,mBAAiB,OAAK,KAAG,oBAAkB,OAAK,IAAE,mBAAiB,OAAK,KAAG,oBAAkB,OAAK,KAAK,gBAAc,uBAAqB,GAAG;AAAE,kBAAIC,KAAE,GAAGD,IAAE,UAAU;AAAE,6BAAaC,MAAG,eAAaA,MAAG,YAAUA,OAAID,GAAE,MAAM,WAAS,aAAY,KAAK,WAAW,GAAE,KAAK,mBAAiB,KAAK,gBAAgB;AAAA,YAAC,GAAE,YAAW,WAAU;AAAC,kBAAIA,KAAE,KAAK,SAAO,CAAC;AAAE,mBAAK,iBAAe,CAAC,GAAE,KAAK,WAAS,KAAK,WAAW,WAAU,KAAK,UAAU,GAAE,GAAG,KAAK,UAAS,IAAI,EAAE,GAAE,CAAC,CAAC,GAAE,KAAK,WAAW,UAAU,GAAE,KAAK,WAAW,YAAY,GAAE,KAAK,WAAW,aAAa,GAAE,KAAK,WAAW,YAAY,GAAE,KAAK,WAAW,aAAa,GAAE,KAAK,WAAW,WAAW,GAAE,KAAK,QAAQ,wBAAsBe,IAAGf,GAAE,YAAW,mBAAmB,GAAEe,IAAGf,GAAE,YAAW,mBAAmB;AAAA,YAAE,GAAE,YAAW,SAASA,IAAEC,IAAE;AAAC,iBAAG,KAAK,UAAS,IAAI,EAAE,GAAE,CAAC,CAAC;AAAE,kBAAIC,KAAE,CAAC,KAAK;AAAQ,mBAAK,UAAQ,MAAGD,KAAE,KAAK,WAAWA,EAAC,GAAE,KAAK,KAAK,cAAc;AAAE,kBAAIE,KAAE,KAAK,UAAQF;AAAE,mBAAK,WAAWE,IAAE,KAAE,EAAE,MAAMH,IAAEC,EAAC,EAAE,SAASE,EAAC,GAAE,KAAK,KAAK,WAAW,GAAED,MAAG,KAAK,KAAK,MAAM;AAAA,YAAC,GAAE,YAAW,SAASF,IAAEC,IAAE;AAAC,qBAAOD,MAAG,KAAK,KAAK,WAAW,GAAEC,MAAG,KAAK,KAAK,WAAW,GAAE;AAAA,YAAI,GAAE,OAAM,SAASD,IAAEC,IAAEC,IAAE;AAAC,yBAASD,OAAIA,KAAE,KAAK;AAAO,kBAAIE,KAAE,KAAK,UAAQF;AAAE,qBAAO,KAAK,QAAMA,IAAE,KAAK,cAAYD,IAAE,KAAK,eAAa,KAAK,mBAAmBA,EAAC,IAAGG,MAAGD,MAAGA,GAAE,UAAQ,KAAK,KAAK,QAAOA,EAAC,GAAE,KAAK,KAAK,QAAOA,EAAC;AAAA,YAAC,GAAE,UAAS,SAASF,IAAE;AAAC,qBAAOA,MAAG,KAAK,KAAK,SAAS,GAAE,KAAK,KAAK,SAAS;AAAA,YAAC,GAAE,OAAM,WAAU;AAAC,qBAAO,EAAE,KAAK,WAAW,GAAE,KAAK,YAAU,KAAK,SAAS,KAAK,GAAE;AAAA,YAAI,GAAE,WAAU,SAASA,IAAE;AAAC,iBAAG,KAAK,UAAS,KAAK,eAAe,EAAE,SAASA,EAAC,CAAC;AAAA,YAAC,GAAE,cAAa,WAAU;AAAC,qBAAO,KAAK,WAAW,IAAE,KAAK,WAAW;AAAA,YAAC,GAAE,qBAAoB,WAAU;AAAC,mBAAK,oBAAkB,KAAK,gBAAgB,KAAK,QAAQ,SAAS;AAAA,YAAC,GAAE,gBAAe,WAAU;AAAC,kBAAG,CAAC,KAAK,QAAQ,OAAM,IAAI,MAAM,gCAAgC;AAAA,YAAC,GAAE,aAAY,SAASA,IAAE;AAAC,mBAAK,WAAS,CAAC,GAAE,KAAK,SAAS,EAAE,KAAK,UAAU,CAAC,IAAE;AAAK,kBAAIC,KAAED,KAAE,KAAG;AAAG,cAAAC,GAAE,KAAK,YAAW,oGAAmG,KAAK,iBAAgB,IAAI,GAAE,KAAK,QAAQ,eAAaA,GAAE,QAAO,UAAS,KAAK,WAAU,IAAI,GAAE,MAAI,KAAK,QAAQ,qBAAmBD,KAAE,KAAK,MAAI,KAAK,IAAI,KAAK,MAAK,WAAU,KAAK,UAAU;AAAA,YAAC,GAAE,WAAU,WAAU;AAAC,gBAAE,KAAK,cAAc,GAAE,KAAK,iBAAe,GAAG,WAAU;AAAC,qBAAK,eAAe,EAAC,iBAAgB,KAAE,CAAC;AAAA,cAAC,IAAG,IAAI;AAAA,YAAC,GAAE,WAAU,WAAU;AAAC,mBAAK,WAAW,YAAU,GAAE,KAAK,WAAW,aAAW;AAAA,YAAC,GAAE,YAAW,WAAU;AAAC,kBAAIA,KAAE,KAAK,eAAe;AAAE,mBAAK,IAAI,KAAK,IAAIA,GAAE,CAAC,GAAE,KAAK,IAAIA,GAAE,CAAC,CAAC,KAAG,KAAK,QAAQ,oBAAkB,KAAK,WAAW,KAAK,UAAU,GAAE,KAAK,QAAQ,CAAC;AAAA,YAAC,GAAE,mBAAkB,SAASA,IAAEC,IAAE;AAAC,uBAAQC,IAAEC,KAAE,CAAC,GAAEC,KAAE,eAAaH,MAAG,gBAAcA,IAAEK,KAAEN,GAAE,UAAQA,GAAE,YAAWO,KAAE,OAAGD,MAAG;AAAC,qBAAIJ,KAAE,KAAK,SAAS,EAAEI,EAAC,CAAC,OAAK,YAAUL,MAAG,eAAaA,OAAI,CAACD,GAAE,cAAY,KAAK,gBAAgBE,EAAC,GAAE;AAAC,kBAAAK,KAAE;AAAG;AAAA,gBAAK;AAAC,oBAAGL,MAAGA,GAAE,QAAQD,IAAE,IAAE,GAAE;AAAC,sBAAGG,MAAG,CAAC,GAAGE,IAAEN,EAAC,EAAE;AAAM,sBAAGG,GAAE,KAAKD,EAAC,GAAEE,GAAE;AAAA,gBAAK;AAAC,oBAAGE,OAAI,KAAK,WAAW;AAAM,gBAAAA,KAAEA,GAAE;AAAA,cAAU;AAAC,qBAAOH,GAAE,UAAQI,MAAGH,MAAG,CAAC,GAAGE,IAAEN,EAAC,MAAIG,KAAE,CAAC,IAAI,IAAGA;AAAA,YAAC,GAAE,iBAAgB,SAASH,IAAE;AAAC,kBAAG,KAAK,WAAS,CAAC,GAAGA,EAAC,GAAE;AAAC,oBAAIC,KAAED,GAAE;AAAK,gCAAcC,MAAG,eAAaA,MAAG,YAAUA,MAAG,cAAYA,MAAG,GAAGD,GAAE,UAAQA,GAAE,UAAU,GAAE,KAAK,cAAcA,IAAEC,EAAC;AAAA,cAAC;AAAA,YAAC,GAAE,cAAa,CAAC,SAAQ,YAAW,aAAY,YAAW,aAAa,GAAE,eAAc,SAASD,IAAEE,IAAEC,IAAE;AAAC,kBAAG,YAAUH,GAAE,MAAK;AAAC,oBAAII,KAAEH,GAAE,CAAC,GAAED,EAAC;AAAE,gBAAAI,GAAE,OAAK,YAAW,KAAK,cAAcA,IAAEA,GAAE,MAAKD,EAAC;AAAA,cAAC;AAAC,kBAAG,CAACH,GAAE,aAAWG,MAAGA,MAAG,CAAC,GAAG,OAAO,KAAK,kBAAkBH,IAAEE,EAAC,CAAC,GAAG,QAAO;AAAC,oBAAIG,KAAEF,GAAE,CAAC;AAAE,kCAAgBD,MAAGG,GAAE,QAAQH,IAAE,IAAE,KAAG,GAAGF,EAAC;AAAE,oBAAIM,KAAE,EAAC,eAAcN,GAAC;AAAE,oBAAG,eAAaA,GAAE,QAAM,cAAYA,GAAE,QAAM,YAAUA,GAAE,MAAK;AAAC,sBAAIO,KAAEF,GAAE,cAAY,CAACA,GAAE,WAASA,GAAE,WAAS;AAAI,kBAAAC,GAAE,iBAAeC,KAAE,KAAK,uBAAuBF,GAAE,UAAU,CAAC,IAAE,KAAK,2BAA2BL,EAAC,GAAEM,GAAE,aAAW,KAAK,2BAA2BA,GAAE,cAAc,GAAEA,GAAE,SAAOC,KAAEF,GAAE,UAAU,IAAE,KAAK,mBAAmBC,GAAE,UAAU;AAAA,gBAAC;AAAC,yBAAQE,KAAE,GAAEA,KAAEL,GAAE,QAAOK,KAAI,KAAGL,GAAEK,EAAC,EAAE,KAAKN,IAAEI,IAAE,IAAE,GAAEA,GAAE,cAAc,YAAU,UAAKH,GAAEK,EAAC,EAAE,QAAQ,uBAAqB,OAAK,EAAE,KAAK,cAAaN,EAAC,EAAE;AAAA,cAAM;AAAA,YAAC,GAAE,iBAAgB,SAASF,IAAE;AAAC,sBAAOA,KAAEA,GAAE,YAAUA,GAAE,SAAS,QAAQ,IAAEA,KAAE,MAAM,YAAUA,GAAE,SAAS,MAAM,KAAG,KAAK,WAAS,KAAK,QAAQ,MAAM;AAAA,YAAC,GAAE,gBAAe,WAAU;AAAC,uBAAQA,KAAE,GAAEC,KAAE,KAAK,UAAU,QAAOD,KAAEC,IAAED,KAAI,MAAK,UAAUA,EAAC,EAAE,QAAQ;AAAA,YAAC,GAAE,WAAU,SAASA,IAAEC,IAAE;AAAC,qBAAO,KAAK,UAAQD,GAAE,KAAKC,MAAG,MAAK,EAAC,QAAO,KAAI,CAAC,IAAE,KAAK,GAAG,QAAOD,IAAEC,EAAC,GAAE;AAAA,YAAI,GAAE,gBAAe,WAAU;AAAC,qBAAO,GAAG,KAAK,QAAQ,KAAG,IAAI,EAAE,GAAE,CAAC;AAAA,YAAC,GAAE,QAAO,WAAU;AAAC,kBAAID,KAAE,KAAK,eAAe;AAAE,qBAAOA,MAAG,CAACA,GAAE,OAAO,CAAC,GAAE,CAAC,CAAC;AAAA,YAAC,GAAE,kBAAiB,SAASA,IAAEC,IAAE;AAAC,sBAAOD,MAAG,WAASC,KAAE,KAAK,mBAAmBD,IAAEC,EAAC,IAAE,KAAK,eAAe,GAAG,SAAS,KAAK,eAAe,CAAC;AAAA,YAAC,GAAE,oBAAmB,SAASD,IAAEC,IAAE;AAAC,kBAAIC,KAAE,KAAK,QAAQ,EAAE,UAAU,CAAC;AAAE,qBAAO,KAAK,QAAQF,IAAEC,EAAC,EAAE,UAAUC,EAAC,EAAE,KAAK,KAAK,eAAe,CAAC,EAAE,OAAO;AAAA,YAAC,GAAE,wBAAuB,SAASF,IAAEC,IAAEC,IAAE;AAAC,kBAAIC,KAAE,KAAK,mBAAmBD,IAAED,EAAC;AAAE,qBAAO,KAAK,QAAQD,IAAEC,EAAC,EAAE,UAAUE,EAAC;AAAA,YAAC,GAAE,+BAA8B,SAASH,IAAEC,IAAEC,IAAE;AAAC,kBAAIC,KAAE,KAAK,mBAAmBD,IAAED,EAAC;AAAE,qBAAO,EAAE,CAAC,KAAK,QAAQD,GAAE,aAAa,GAAEC,EAAC,EAAE,UAAUE,EAAC,GAAE,KAAK,QAAQH,GAAE,aAAa,GAAEC,EAAC,EAAE,UAAUE,EAAC,GAAE,KAAK,QAAQH,GAAE,aAAa,GAAEC,EAAC,EAAE,UAAUE,EAAC,GAAE,KAAK,QAAQH,GAAE,aAAa,GAAEC,EAAC,EAAE,UAAUE,EAAC,CAAC,CAAC;AAAA,YAAC,GAAE,sBAAqB,WAAU;AAAC,qBAAO,KAAK,2BAA2B,KAAK,QAAQ,EAAE,UAAU,CAAC,CAAC;AAAA,YAAC,GAAE,kBAAiB,SAASH,IAAE;AAAC,qBAAO,KAAK,mBAAmBA,EAAC,EAAE,SAAS,KAAK,qBAAqB,CAAC;AAAA,YAAC,GAAE,cAAa,SAASA,IAAEC,IAAEC,IAAE;AAAC,kBAAG,CAACA,GAAE,QAAOF;AAAE,kBAAIG,KAAE,KAAK,QAAQH,IAAEC,EAAC,GAAEG,KAAE,KAAK,QAAQ,EAAE,SAAS,CAAC,GAAEC,KAAE,IAAI,EAAEF,GAAE,SAASC,EAAC,GAAED,GAAE,IAAIC,EAAC,CAAC,GAAEE,KAAE,KAAK,iBAAiBD,IAAEH,IAAED,EAAC;AAAE,qBAAOK,GAAE,MAAM,EAAE,OAAO,CAAC,GAAE,CAAC,CAAC,IAAEN,KAAE,KAAK,UAAUG,GAAE,IAAIG,EAAC,GAAEL,EAAC;AAAA,YAAC,GAAE,cAAa,SAASD,IAAEC,IAAE;AAAC,kBAAG,CAACA,GAAE,QAAOD;AAAE,kBAAIE,KAAE,KAAK,eAAe,GAAEC,KAAE,IAAI,EAAED,GAAE,IAAI,IAAIF,EAAC,GAAEE,GAAE,IAAI,IAAIF,EAAC,CAAC;AAAE,qBAAOA,GAAE,IAAI,KAAK,iBAAiBG,IAAEF,EAAC,CAAC;AAAA,YAAC,GAAE,kBAAiB,SAASD,IAAEC,IAAEC,IAAE;AAAC,kBAAIC,KAAE,EAAE,KAAK,QAAQF,GAAE,aAAa,GAAEC,EAAC,GAAE,KAAK,QAAQD,GAAE,aAAa,GAAEC,EAAC,CAAC,GAAEE,KAAED,GAAE,IAAI,SAASH,GAAE,GAAG,GAAEK,KAAEF,GAAE,IAAI,SAASH,GAAE,GAAG;AAAE,qBAAO,IAAI,EAAE,KAAK,SAASI,GAAE,GAAE,CAACC,GAAE,CAAC,GAAE,KAAK,SAASD,GAAE,GAAE,CAACC,GAAE,CAAC,CAAC;AAAA,YAAC,GAAE,UAAS,SAASL,IAAEC,IAAE;AAAC,qBAAOD,KAAEC,KAAE,IAAE,KAAK,MAAMD,KAAEC,EAAC,IAAE,IAAE,KAAK,IAAI,GAAE,KAAK,KAAKD,EAAC,CAAC,IAAE,KAAK,IAAI,GAAE,KAAK,MAAMC,EAAC,CAAC;AAAA,YAAC,GAAE,YAAW,SAASD,IAAE;AAAC,kBAAIC,KAAE,KAAK,WAAW,GAAEC,KAAE,KAAK,WAAW,GAAEC,KAAE,KAAG,KAAK,QAAQ,WAAS;AAAE,qBAAOA,OAAIH,KAAE,KAAK,MAAMA,KAAEG,EAAC,IAAEA,KAAG,KAAK,IAAIF,IAAE,KAAK,IAAIC,IAAEF,EAAC,CAAC;AAAA,YAAC,GAAE,sBAAqB,WAAU;AAAC,mBAAK,KAAK,MAAM;AAAA,YAAC,GAAE,qBAAoB,WAAU;AAAC,iBAAG,KAAK,UAAS,kBAAkB,GAAE,KAAK,KAAK,SAAS;AAAA,YAAC,GAAE,iBAAgB,SAASA,IAAEC,IAAE;AAAC,kBAAIC,KAAE,KAAK,iBAAiBF,EAAC,EAAE,OAAO;AAAE,qBAAM,EAAE,UAAMC,MAAGA,GAAE,YAAU,CAAC,KAAK,QAAQ,EAAE,SAASC,EAAC,MAAI,KAAK,MAAMA,IAAED,EAAC,GAAE;AAAA,YAAG,GAAE,kBAAiB,WAAU;AAAC,kBAAID,KAAE,KAAK,SAAOa,IAAG,OAAM,qCAAqC;AAAE,mBAAK,OAAO,QAAQ,YAAYb,EAAC,GAAE,KAAK,GAAG,aAAY,SAASA,IAAE;AAAC,oBAAIC,KAAE,IAAGC,KAAE,KAAK,OAAO,MAAMD,EAAC;AAAE,mBAAG,KAAK,QAAO,KAAK,QAAQD,GAAE,QAAOA,GAAE,IAAI,GAAE,KAAK,aAAaA,GAAE,MAAK,CAAC,CAAC,GAAEE,OAAI,KAAK,OAAO,MAAMD,EAAC,KAAG,KAAK,kBAAgB,KAAK,qBAAqB;AAAA,cAAC,IAAG,IAAI,GAAE,KAAK,GAAG,gBAAe,KAAK,cAAa,IAAI,GAAE,KAAK,IAAI,UAAS,KAAK,mBAAkB,IAAI;AAAA,YAAC,GAAE,mBAAkB,WAAU;AAAC,iBAAG,KAAK,MAAM,GAAE,KAAK,IAAI,gBAAe,KAAK,cAAa,IAAI,GAAE,OAAO,KAAK;AAAA,YAAM,GAAE,cAAa,WAAU;AAAC,kBAAID,KAAE,KAAK,UAAU,GAAEC,KAAE,KAAK,QAAQ;AAAE,iBAAG,KAAK,QAAO,KAAK,QAAQD,IAAEC,EAAC,GAAE,KAAK,aAAaA,IAAE,CAAC,CAAC;AAAA,YAAC,GAAE,qBAAoB,SAASD,IAAE;AAAC,mBAAK,kBAAgBA,GAAE,aAAa,QAAQ,WAAW,KAAG,KAAG,KAAK,qBAAqB;AAAA,YAAC,GAAE,mBAAkB,WAAU;AAAC,qBAAM,CAAC,KAAK,WAAW,uBAAuB,uBAAuB,EAAE;AAAA,YAAM,GAAE,kBAAiB,SAASA,IAAEC,IAAEC,IAAE;AAAC,kBAAG,KAAK,eAAe,QAAM;AAAG,kBAAGA,KAAEA,MAAG,CAAC,GAAE,CAAC,KAAK,iBAAe,UAAKA,GAAE,WAAS,KAAK,kBAAkB,KAAG,KAAK,IAAID,KAAE,KAAK,KAAK,IAAE,KAAK,QAAQ,uBAAuB,QAAM;AAAG,kBAAIE,KAAE,KAAK,aAAaF,EAAC,GAAEG,KAAE,KAAK,iBAAiBJ,EAAC,EAAE,UAAU,IAAE,IAAEG,EAAC;AAAE,qBAAM,EAAE,SAAKD,GAAE,WAAS,CAAC,KAAK,QAAQ,EAAE,SAASE,EAAC,MAAI,GAAG,WAAU;AAAC,qBAAK,WAAW,MAAG,KAAE,EAAE,aAAaJ,IAAEC,IAAE,IAAE;AAAA,cAAC,IAAG,IAAI,GAAE;AAAA,YAAG,GAAE,cAAa,SAASD,IAAEC,IAAEC,IAAEE,IAAE;AAAC,mBAAK,aAAWF,OAAI,KAAK,iBAAe,MAAG,KAAK,mBAAiBF,IAAE,KAAK,iBAAeC,IAAEc,IAAG,KAAK,UAAS,mBAAmB,IAAG,KAAK,KAAK,YAAW,EAAC,QAAOf,IAAE,MAAKC,IAAE,UAASG,GAAC,CAAC,GAAE,WAAWD,GAAE,KAAK,sBAAqB,IAAI,GAAE,GAAG;AAAA,YAAE,GAAE,sBAAqB,WAAU;AAAC,mBAAK,mBAAiB,KAAK,YAAU,GAAG,KAAK,UAAS,mBAAmB,GAAE,KAAK,iBAAe,OAAG,KAAK,MAAM,KAAK,kBAAiB,KAAK,cAAc,GAAE,GAAG,WAAU;AAAC,qBAAK,SAAS,IAAE;AAAA,cAAC,IAAG,IAAI;AAAA,YAAE,EAAC,CAAC;AAAE,gBAAI,KAAG,EAAE,OAAO,EAAC,SAAQ,EAAC,UAAS,WAAU,GAAE,YAAW,SAASH,IAAE;AAAC,gBAAE,MAAKA,EAAC;AAAA,YAAC,GAAE,aAAY,WAAU;AAAC,qBAAO,KAAK,QAAQ;AAAA,YAAQ,GAAE,aAAY,SAASA,IAAE;AAAC,kBAAIC,KAAE,KAAK;AAAK,qBAAOA,MAAGA,GAAE,cAAc,IAAI,GAAE,KAAK,QAAQ,WAASD,IAAEC,MAAGA,GAAE,WAAW,IAAI,GAAE;AAAA,YAAI,GAAE,cAAa,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAU,GAAE,OAAM,SAASD,IAAE;AAAC,mBAAK,OAAO,GAAE,KAAK,OAAKA;AAAE,kBAAIC,KAAE,KAAK,aAAW,KAAK,MAAMD,EAAC,GAAEE,KAAE,KAAK,YAAY,GAAEC,KAAEH,GAAE,gBAAgBE,EAAC;AAAE,qBAAOa,IAAGd,IAAE,iBAAiB,GAAE,OAAKC,GAAE,QAAQ,QAAQ,IAAEC,GAAE,aAAaF,IAAEE,GAAE,UAAU,IAAEA,GAAE,YAAYF,EAAC,GAAE,KAAK,KAAK,GAAG,UAAS,KAAK,QAAO,IAAI,GAAE;AAAA,YAAI,GAAE,QAAO,WAAU;AAAC,qBAAO,KAAK,QAAM,GAAG,KAAK,UAAU,GAAE,KAAK,YAAU,KAAK,SAAS,KAAK,IAAI,GAAE,KAAK,KAAK,IAAI,UAAS,KAAK,QAAO,IAAI,GAAE,KAAK,OAAK,MAAK,QAAM;AAAA,YAAI,GAAE,eAAc,SAASD,IAAE;AAAC,mBAAK,QAAMA,MAAGA,GAAE,UAAQ,KAAGA,GAAE,UAAQ,KAAG,KAAK,KAAK,aAAa,EAAE,MAAM;AAAA,YAAC,EAAC,CAAC,GAAE,KAAG,SAASA,IAAE;AAAC,qBAAO,IAAI,GAAGA,EAAC;AAAA,YAAC;AAAE,eAAG,QAAQ,EAAC,YAAW,SAASA,IAAE;AAAC,qBAAOA,GAAE,MAAM,IAAI,GAAE;AAAA,YAAI,GAAE,eAAc,SAASA,IAAE;AAAC,qBAAOA,GAAE,OAAO,GAAE;AAAA,YAAI,GAAE,iBAAgB,WAAU;AAAC,kBAAIA,KAAE,KAAK,kBAAgB,CAAC,GAAEC,KAAE,YAAWC,KAAE,KAAK,oBAAkBW,IAAG,OAAMZ,KAAE,qBAAoB,KAAK,UAAU;AAAE,uBAASE,GAAEA,IAAEC,IAAE;AAAC,oBAAIC,KAAEJ,KAAEE,KAAE,MAAIF,KAAEG;AAAE,gBAAAJ,GAAEG,KAAEC,EAAC,IAAES,IAAG,OAAMR,IAAEH,EAAC;AAAA,cAAC;AAAC,cAAAC,GAAE,OAAM,MAAM,GAAEA,GAAE,OAAM,OAAO,GAAEA,GAAE,UAAS,MAAM,GAAEA,GAAE,UAAS,OAAO;AAAA,YAAC,GAAE,kBAAiB,WAAU;AAAC,uBAAQH,MAAK,KAAK,gBAAgB,IAAG,KAAK,gBAAgBA,EAAC,CAAC;AAAE,iBAAG,KAAK,iBAAiB,GAAE,OAAO,KAAK,iBAAgB,OAAO,KAAK;AAAA,YAAiB,EAAC,CAAC;AAAE,gBAAI,KAAG,GAAG,OAAO,EAAC,SAAQ,EAAC,WAAU,MAAG,UAAS,YAAW,YAAW,MAAG,gBAAe,OAAG,YAAW,OAAG,cAAa,SAASA,IAAEC,IAAEC,IAAEC,IAAE;AAAC,qBAAOD,KAAEC,KAAE,KAAGA,KAAED,KAAE,IAAE;AAAA,YAAC,EAAC,GAAE,YAAW,SAASF,IAAEC,IAAEC,IAAE;AAAC,uBAAQC,MAAK,EAAE,MAAKD,EAAC,GAAE,KAAK,sBAAoB,CAAC,GAAE,KAAK,UAAQ,CAAC,GAAE,KAAK,cAAY,GAAE,KAAK,iBAAe,OAAGF,GAAE,MAAK,UAAUA,GAAEG,EAAC,GAAEA,EAAC;AAAE,mBAAIA,MAAKF,GAAE,MAAK,UAAUA,GAAEE,EAAC,GAAEA,IAAE,IAAE;AAAA,YAAC,GAAE,OAAM,SAASH,IAAE;AAAC,mBAAK,YAAY,GAAE,KAAK,QAAQ,GAAE,KAAK,OAAKA,IAAEA,GAAE,GAAG,WAAU,KAAK,sBAAqB,IAAI;AAAE,uBAAQC,KAAE,GAAEA,KAAE,KAAK,QAAQ,QAAOA,KAAI,MAAK,QAAQA,EAAC,EAAE,MAAM,GAAG,cAAa,KAAK,gBAAe,IAAI;AAAE,qBAAO,KAAK;AAAA,YAAU,GAAE,OAAM,SAASD,IAAE;AAAC,qBAAO,GAAG,UAAU,MAAM,KAAK,MAAKA,EAAC,GAAE,KAAK,sBAAsB;AAAA,YAAC,GAAE,UAAS,WAAU;AAAC,mBAAK,KAAK,IAAI,WAAU,KAAK,sBAAqB,IAAI;AAAE,uBAAQA,KAAE,GAAEA,KAAE,KAAK,QAAQ,QAAOA,KAAI,MAAK,QAAQA,EAAC,EAAE,MAAM,IAAI,cAAa,KAAK,gBAAe,IAAI;AAAA,YAAC,GAAE,cAAa,SAASA,IAAEC,IAAE;AAAC,qBAAO,KAAK,UAAUD,IAAEC,EAAC,GAAE,KAAK,OAAK,KAAK,QAAQ,IAAE;AAAA,YAAI,GAAE,YAAW,SAASD,IAAEC,IAAE;AAAC,qBAAO,KAAK,UAAUD,IAAEC,IAAE,IAAE,GAAE,KAAK,OAAK,KAAK,QAAQ,IAAE;AAAA,YAAI,GAAE,aAAY,SAASD,IAAE;AAAC,cAAAA,GAAE,IAAI,cAAa,KAAK,gBAAe,IAAI;AAAE,kBAAIC,KAAE,KAAK,UAAU,EAAED,EAAC,CAAC;AAAE,qBAAOC,MAAG,KAAK,QAAQ,OAAO,KAAK,QAAQ,QAAQA,EAAC,GAAE,CAAC,GAAE,KAAK,OAAK,KAAK,QAAQ,IAAE;AAAA,YAAI,GAAE,QAAO,WAAU;AAAC,cAAAc,IAAG,KAAK,YAAW,iCAAiC,GAAE,KAAK,SAAS,MAAM,SAAO;AAAK,kBAAIf,KAAE,KAAK,KAAK,QAAQ,EAAE,KAAG,KAAK,WAAW,YAAU;AAAI,qBAAOA,KAAE,KAAK,SAAS,gBAAce,IAAG,KAAK,UAAS,kCAAkC,GAAE,KAAK,SAAS,MAAM,SAAOf,KAAE,QAAM,GAAG,KAAK,UAAS,kCAAkC,GAAE,KAAK,qBAAqB,GAAE;AAAA,YAAI,GAAE,UAAS,WAAU;AAAC,qBAAO,GAAG,KAAK,YAAW,iCAAiC,GAAE;AAAA,YAAI,GAAE,aAAY,WAAU;AAAC,kBAAIA,KAAE,0BAAyBC,KAAE,KAAK,aAAWY,IAAG,OAAMb,EAAC,GAAEE,KAAE,KAAK,QAAQ;AAAU,cAAAD,GAAE,aAAa,iBAAgB,IAAE,GAAE,GAAGA,EAAC,GAAE,GAAGA,EAAC;AAAE,kBAAIE,KAAE,KAAK,WAASU,IAAG,WAAUb,KAAE,OAAO;AAAE,cAAAE,OAAI,KAAK,KAAK,GAAG,SAAQ,KAAK,UAAS,IAAI,GAAE,MAAI,GAAGD,IAAE,EAAC,YAAW,KAAK,QAAO,YAAW,KAAK,SAAQ,GAAE,IAAI;AAAG,kBAAIG,KAAE,KAAK,cAAYS,IAAG,KAAIb,KAAE,WAAUC,EAAC;AAAE,cAAAG,GAAE,OAAK,KAAIA,GAAE,QAAM,UAAS,MAAI,GAAGA,IAAE,SAAQ,EAAE,GAAE,GAAGA,IAAE,SAAQ,KAAK,QAAO,IAAI,KAAG,GAAGA,IAAE,SAAQ,KAAK,QAAO,IAAI,GAAEF,MAAG,KAAK,OAAO,GAAE,KAAK,kBAAgBW,IAAG,OAAMb,KAAE,SAAQG,EAAC,GAAE,KAAK,aAAWU,IAAG,OAAMb,KAAE,cAAaG,EAAC,GAAE,KAAK,gBAAcU,IAAG,OAAMb,KAAE,aAAYG,EAAC,GAAEF,GAAE,YAAYE,EAAC;AAAA,YAAC,GAAE,WAAU,SAASH,IAAE;AAAC,uBAAQC,KAAE,GAAEA,KAAE,KAAK,QAAQ,QAAOA,KAAI,KAAG,KAAK,QAAQA,EAAC,KAAG,EAAE,KAAK,QAAQA,EAAC,EAAE,KAAK,MAAID,GAAE,QAAO,KAAK,QAAQC,EAAC;AAAA,YAAC,GAAE,WAAU,SAASD,IAAEC,IAAEC,IAAE;AAAC,mBAAK,QAAMF,GAAE,GAAG,cAAa,KAAK,gBAAe,IAAI,GAAE,KAAK,QAAQ,KAAK,EAAC,OAAMA,IAAE,MAAKC,IAAE,SAAQC,GAAC,CAAC,GAAE,KAAK,QAAQ,cAAY,KAAK,QAAQ,KAAKC,IAAG,SAASH,IAAEC,IAAE;AAAC,uBAAO,KAAK,QAAQ,aAAaD,GAAE,OAAMC,GAAE,OAAMD,GAAE,MAAKC,GAAE,IAAI;AAAA,cAAC,IAAG,IAAI,CAAC,GAAE,KAAK,QAAQ,cAAYD,GAAE,cAAY,KAAK,eAAcA,GAAE,UAAU,KAAK,WAAW,IAAG,KAAK,sBAAsB;AAAA,YAAC,GAAE,SAAQ,WAAU;AAAC,kBAAG,CAAC,KAAK,WAAW,QAAO;AAAK,iBAAG,KAAK,eAAe,GAAE,GAAG,KAAK,aAAa,GAAE,KAAK,sBAAoB,CAAC;AAAE,kBAAIA,IAAEC,IAAEC,IAAEC,IAAEC,KAAE;AAAE,mBAAIF,KAAE,GAAEA,KAAE,KAAK,QAAQ,QAAOA,KAAI,CAAAC,KAAE,KAAK,QAAQD,EAAC,GAAE,KAAK,SAASC,EAAC,GAAEF,KAAEA,MAAGE,GAAE,SAAQH,KAAEA,MAAG,CAACG,GAAE,SAAQC,MAAGD,GAAE,UAAQ,IAAE;AAAE,qBAAO,KAAK,QAAQ,mBAAiBH,KAAEA,MAAGI,KAAE,GAAE,KAAK,gBAAgB,MAAM,UAAQJ,KAAE,KAAG,SAAQ,KAAK,WAAW,MAAM,UAAQC,MAAGD,KAAE,KAAG,QAAO;AAAA,YAAI,GAAE,gBAAe,SAASA,IAAE;AAAC,mBAAK,kBAAgB,KAAK,QAAQ;AAAE,kBAAIC,KAAE,KAAK,UAAU,EAAED,GAAE,MAAM,CAAC,GAAEE,KAAED,GAAE,UAAQ,UAAQD,GAAE,OAAK,eAAa,kBAAgB,UAAQA,GAAE,OAAK,oBAAkB;AAAK,cAAAE,MAAG,KAAK,KAAK,KAAKA,IAAED,EAAC;AAAA,YAAC,GAAE,qBAAoB,SAASD,IAAEC,IAAE;AAAC,kBAAIC,KAAE,uEAAqEF,KAAE,OAAKC,KAAE,uBAAqB,MAAI,MAAKE,KAAE,SAAS,cAAc,KAAK;AAAE,qBAAOA,GAAE,YAAUD,IAAEC,GAAE;AAAA,YAAU,GAAE,UAAS,SAASH,IAAE;AAAC,kBAAIC,IAAEC,KAAE,SAAS,cAAc,OAAO,GAAEC,KAAE,KAAK,KAAK,SAASH,GAAE,KAAK;AAAE,cAAAA,GAAE,YAAUC,KAAE,SAAS,cAAc,OAAO,GAAG,OAAK,YAAWA,GAAE,YAAU,mCAAkCA,GAAE,iBAAeE,MAAGF,KAAE,KAAK,oBAAoB,yBAAuB,EAAE,IAAI,GAAEE,EAAC,GAAE,KAAK,oBAAoB,KAAKF,EAAC,GAAEA,GAAE,UAAQ,EAAED,GAAE,KAAK,GAAE,GAAGC,IAAE,SAAQ,KAAK,eAAc,IAAI;AAAE,kBAAIG,KAAE,SAAS,cAAc,MAAM;AAAE,cAAAA,GAAE,YAAU,MAAIJ,GAAE;AAAK,kBAAIM,KAAE,SAAS,cAAc,KAAK;AAAE,qBAAOJ,GAAE,YAAYI,EAAC,GAAEA,GAAE,YAAYL,EAAC,GAAEK,GAAE,YAAYF,EAAC,IAAGJ,GAAE,UAAQ,KAAK,gBAAc,KAAK,iBAAiB,YAAYE,EAAC,GAAE,KAAK,qBAAqB,GAAEA;AAAA,YAAC,GAAE,eAAc,WAAU;AAAC,kBAAIF,IAAEC,IAAEC,KAAE,KAAK,qBAAoBC,KAAE,CAAC,GAAEC,KAAE,CAAC;AAAE,mBAAK,iBAAe;AAAG,uBAAQC,KAAEH,GAAE,SAAO,GAAEG,MAAG,GAAEA,KAAI,CAAAL,KAAEE,GAAEG,EAAC,GAAEJ,KAAE,KAAK,UAAUD,GAAE,OAAO,EAAE,OAAMA,GAAE,UAAQG,GAAE,KAAKF,EAAC,IAAED,GAAE,WAASI,GAAE,KAAKH,EAAC;AAAE,mBAAII,KAAE,GAAEA,KAAED,GAAE,QAAOC,KAAI,MAAK,KAAK,SAASD,GAAEC,EAAC,CAAC,KAAG,KAAK,KAAK,YAAYD,GAAEC,EAAC,CAAC;AAAE,mBAAIA,KAAE,GAAEA,KAAEF,GAAE,QAAOE,KAAI,MAAK,KAAK,SAASF,GAAEE,EAAC,CAAC,KAAG,KAAK,KAAK,SAASF,GAAEE,EAAC,CAAC;AAAE,mBAAK,iBAAe,OAAG,KAAK,cAAc;AAAA,YAAC,GAAE,sBAAqB,WAAU;AAAC,uBAAQL,IAAEC,IAAEC,KAAE,KAAK,qBAAoBC,KAAE,KAAK,KAAK,QAAQ,GAAEC,KAAEF,GAAE,SAAO,GAAEE,MAAG,GAAEA,KAAI,CAAAJ,KAAEE,GAAEE,EAAC,GAAEH,KAAE,KAAK,UAAUD,GAAE,OAAO,EAAE,OAAMA,GAAE,WAAS,WAASC,GAAE,QAAQ,WAASE,KAAEF,GAAE,QAAQ,WAAS,WAASA,GAAE,QAAQ,WAASE,KAAEF,GAAE,QAAQ;AAAA,YAAO,GAAE,uBAAsB,WAAU;AAAC,qBAAO,KAAK,QAAM,CAAC,KAAK,QAAQ,aAAW,KAAK,OAAO,GAAE;AAAA,YAAI,GAAE,SAAQ,WAAU;AAAC,qBAAO,KAAK,OAAO;AAAA,YAAC,GAAE,WAAU,WAAU;AAAC,qBAAO,KAAK,SAAS;AAAA,YAAC,EAAC,CAAC,GAAE,KAAG,GAAG,OAAO,EAAC,SAAQ,EAAC,UAAS,WAAU,YAAW,KAAI,aAAY,WAAU,aAAY,YAAW,cAAa,WAAU,GAAE,OAAM,SAASD,IAAE;AAAC,kBAAIC,KAAE,wBAAuBC,KAAEW,IAAG,OAAMZ,KAAE,cAAc,GAAEE,KAAE,KAAK;AAAQ,qBAAO,KAAK,gBAAc,KAAK,cAAcA,GAAE,YAAWA,GAAE,aAAYF,KAAE,OAAMC,IAAE,KAAK,OAAO,GAAE,KAAK,iBAAe,KAAK,cAAcC,GAAE,aAAYA,GAAE,cAAaF,KAAE,QAAOC,IAAE,KAAK,QAAQ,GAAE,KAAK,gBAAgB,GAAEF,GAAE,GAAG,4BAA2B,KAAK,iBAAgB,IAAI,GAAEE;AAAA,YAAC,GAAE,UAAS,SAASF,IAAE;AAAC,cAAAA,GAAE,IAAI,4BAA2B,KAAK,iBAAgB,IAAI;AAAA,YAAC,GAAE,SAAQ,WAAU;AAAC,qBAAO,KAAK,YAAU,MAAG,KAAK,gBAAgB,GAAE;AAAA,YAAI,GAAE,QAAO,WAAU;AAAC,qBAAO,KAAK,YAAU,OAAG,KAAK,gBAAgB,GAAE;AAAA,YAAI,GAAE,SAAQ,SAASA,IAAE;AAAC,eAAC,KAAK,aAAW,KAAK,KAAK,QAAM,KAAK,KAAK,WAAW,KAAG,KAAK,KAAK,OAAO,KAAK,KAAK,QAAQ,aAAWA,GAAE,WAAS,IAAE,EAAE;AAAA,YAAC,GAAE,UAAS,SAASA,IAAE;AAAC,eAAC,KAAK,aAAW,KAAK,KAAK,QAAM,KAAK,KAAK,WAAW,KAAG,KAAK,KAAK,QAAQ,KAAK,KAAK,QAAQ,aAAWA,GAAE,WAAS,IAAE,EAAE;AAAA,YAAC,GAAE,eAAc,SAASA,IAAEC,IAAEC,IAAEC,IAAEC,IAAE;AAAC,kBAAIC,KAAEQ,IAAG,KAAIX,IAAEC,EAAC;AAAE,qBAAOE,GAAE,YAAUL,IAAEK,GAAE,OAAK,KAAIA,GAAE,QAAMJ,IAAEI,GAAE,aAAa,QAAO,QAAQ,GAAEA,GAAE,aAAa,cAAaJ,EAAC,GAAE,GAAGI,EAAC,GAAE,GAAGA,IAAE,SAAQ,EAAE,GAAE,GAAGA,IAAE,SAAQD,IAAE,IAAI,GAAE,GAAGC,IAAE,SAAQ,KAAK,eAAc,IAAI,GAAEA;AAAA,YAAC,GAAE,iBAAgB,WAAU;AAAC,kBAAIL,KAAE,KAAK,MAAKC,KAAE;AAAmB,iBAAG,KAAK,eAAcA,EAAC,GAAE,GAAG,KAAK,gBAAeA,EAAC,IAAG,KAAK,aAAWD,GAAE,UAAQA,GAAE,WAAW,MAAIe,IAAG,KAAK,gBAAed,EAAC,IAAG,KAAK,aAAWD,GAAE,UAAQA,GAAE,WAAW,MAAIe,IAAG,KAAK,eAAcd,EAAC;AAAA,YAAC,EAAC,CAAC;AAAE,eAAG,aAAa,EAAC,aAAY,KAAE,CAAC,GAAE,GAAG,aAAa,WAAU;AAAC,mBAAK,QAAQ,gBAAc,KAAK,cAAY,IAAI,MAAG,KAAK,WAAW,KAAK,WAAW;AAAA,YAAE,EAAE;AAAE,gBAAI,KAAG,GAAG,OAAO,EAAC,SAAQ,EAAC,UAAS,cAAa,UAAS,KAAI,QAAO,MAAG,UAAS,KAAE,GAAE,OAAM,SAASD,IAAE;AAAC,kBAAIC,KAAE,yBAAwBC,KAAEW,IAAG,OAAMZ,EAAC,GAAEE,KAAE,KAAK;AAAQ,qBAAO,KAAK,WAAWA,IAAEF,KAAE,SAAQC,EAAC,GAAEF,GAAE,GAAGG,GAAE,iBAAe,YAAU,QAAO,KAAK,SAAQ,IAAI,GAAEH,GAAE,UAAU,KAAK,SAAQ,IAAI,GAAEE;AAAA,YAAC,GAAE,UAAS,SAASF,IAAE;AAAC,cAAAA,GAAE,IAAI,KAAK,QAAQ,iBAAe,YAAU,QAAO,KAAK,SAAQ,IAAI;AAAA,YAAC,GAAE,YAAW,SAASA,IAAEC,IAAEC,IAAE;AAAC,cAAAF,GAAE,WAAS,KAAK,UAAQa,IAAG,OAAMZ,IAAEC,EAAC,IAAGF,GAAE,aAAW,KAAK,UAAQa,IAAG,OAAMZ,IAAEC,EAAC;AAAA,YAAE,GAAE,SAAQ,WAAU;AAAC,kBAAIF,KAAE,KAAK,MAAKC,KAAED,GAAE,QAAQ,EAAE,IAAE,GAAEE,KAAEF,GAAE,SAASA,GAAE,uBAAuB,CAAC,GAAEC,EAAC,CAAC,GAAED,GAAE,uBAAuB,CAAC,KAAK,QAAQ,UAASC,EAAC,CAAC,CAAC;AAAE,mBAAK,cAAcC,EAAC;AAAA,YAAC,GAAE,eAAc,SAASF,IAAE;AAAC,mBAAK,QAAQ,UAAQA,MAAG,KAAK,cAAcA,EAAC,GAAE,KAAK,QAAQ,YAAUA,MAAG,KAAK,gBAAgBA,EAAC;AAAA,YAAC,GAAE,eAAc,SAASA,IAAE;AAAC,kBAAIC,KAAE,KAAK,aAAaD,EAAC,GAAEE,KAAED,KAAE,MAAIA,KAAE,OAAKA,KAAE,MAAI;AAAM,mBAAK,aAAa,KAAK,SAAQC,IAAED,KAAED,EAAC;AAAA,YAAC,GAAE,iBAAgB,SAASA,IAAE;AAAC,kBAAIC,IAAEC,IAAEC,IAAEC,KAAE,YAAUJ;AAAE,cAAAI,KAAE,QAAMH,KAAEG,KAAE,MAAKF,KAAE,KAAK,aAAaD,EAAC,GAAE,KAAK,aAAa,KAAK,SAAQC,KAAE,OAAMA,KAAED,EAAC,MAAIE,KAAE,KAAK,aAAaC,EAAC,GAAE,KAAK,aAAa,KAAK,SAAQD,KAAE,OAAMA,KAAEC,EAAC;AAAA,YAAE,GAAE,cAAa,SAASJ,IAAEC,IAAEC,IAAE;AAAC,cAAAF,GAAE,MAAM,QAAM,KAAK,MAAM,KAAK,QAAQ,WAASE,EAAC,IAAE,MAAKF,GAAE,YAAUC;AAAA,YAAC,GAAE,cAAa,SAASD,IAAE;AAAC,kBAAIC,KAAE,KAAK,IAAI,KAAI,KAAK,MAAMD,EAAC,IAAE,IAAI,SAAO,CAAC,GAAEE,KAAEF,KAAEC;AAAE,qBAAOA,MAAGC,MAAG,KAAG,KAAGA,MAAG,IAAE,IAAEA,MAAG,IAAE,IAAEA,MAAG,IAAE,IAAE;AAAA,YAAE,EAAC,CAAC,GAAE,KAAG,GAAG,OAAO,EAAC,SAAQ,EAAC,UAAS,eAAc,QAAO,wFAAuF,GAAE,YAAW,SAASF,IAAE;AAAC,gBAAE,MAAKA,EAAC,GAAE,KAAK,gBAAc,CAAC;AAAA,YAAC,GAAE,OAAM,SAASA,IAAE;AAAC,uBAAQC,MAAKD,GAAE,qBAAmB,MAAK,KAAK,aAAWa,IAAG,OAAM,6BAA6B,GAAE,GAAG,KAAK,UAAU,GAAEb,GAAE,QAAQ,CAAAA,GAAE,QAAQC,EAAC,EAAE,kBAAgB,KAAK,eAAeD,GAAE,QAAQC,EAAC,EAAE,eAAe,CAAC;AAAE,qBAAO,KAAK,QAAQ,GAAE,KAAK;AAAA,YAAU,GAAE,WAAU,SAASD,IAAE;AAAC,qBAAO,KAAK,QAAQ,SAAOA,IAAE,KAAK,QAAQ,GAAE;AAAA,YAAI,GAAE,gBAAe,SAASA,IAAE;AAAC,qBAAOA,MAAG,KAAK,cAAcA,EAAC,MAAI,KAAK,cAAcA,EAAC,IAAE,IAAG,KAAK,cAAcA,EAAC,KAAI,KAAK,QAAQ,GAAE,QAAM;AAAA,YAAI,GAAE,mBAAkB,SAASA,IAAE;AAAC,qBAAOA,MAAG,KAAK,cAAcA,EAAC,MAAI,KAAK,cAAcA,EAAC,KAAI,KAAK,QAAQ,IAAG,QAAM;AAAA,YAAI,GAAE,SAAQ,WAAU;AAAC,kBAAG,KAAK,MAAK;AAAC,oBAAIA,KAAE,CAAC;AAAE,yBAAQC,MAAK,KAAK,cAAc,MAAK,cAAcA,EAAC,KAAGD,GAAE,KAAKC,EAAC;AAAE,oBAAIC,KAAE,CAAC;AAAE,qBAAK,QAAQ,UAAQA,GAAE,KAAK,KAAK,QAAQ,MAAM,GAAEF,GAAE,UAAQE,GAAE,KAAKF,GAAE,KAAK,IAAI,CAAC,GAAE,KAAK,WAAW,YAAUE,GAAE,KAAK,KAAK;AAAA,cAAC;AAAA,YAAC,EAAC,CAAC;AAAE,eAAG,aAAa,EAAC,oBAAmB,KAAE,CAAC,GAAE,GAAG,aAAa,WAAU;AAAC,mBAAK,QAAQ,sBAAqB,IAAI,KAAI,MAAM,IAAI;AAAA,YAAC,EAAE;AAAE,eAAG,SAAO,IAAG,GAAG,OAAK,IAAG,GAAG,QAAM,IAAG,GAAG,cAAY,IAAG,GAAG,SAAO,SAASF,IAAEC,IAAEC,IAAE;AAAC,qBAAO,IAAI,GAAGF,IAAEC,IAAEC,EAAC;AAAA,YAAC,GAAE,GAAG,OAAK,SAASF,IAAE;AAAC,qBAAO,IAAI,GAAGA,EAAC;AAAA,YAAC,GAAE,GAAG,QAAM,SAASA,IAAE;AAAC,qBAAO,IAAI,GAAGA,EAAC;AAAA,YAAC,GAAE,GAAG,cAAY,SAASA,IAAE;AAAC,qBAAO,IAAI,GAAGA,EAAC;AAAA,YAAC;AAAE,gBAAI,KAAG,EAAE,OAAO,EAAC,YAAW,SAASA,IAAE;AAAC,mBAAK,OAAKA;AAAA,YAAC,GAAE,QAAO,WAAU;AAAC,qBAAO,KAAK,aAAW,KAAK,WAAS,MAAG,KAAK,SAAS,IAAG;AAAA,YAAI,GAAE,SAAQ,WAAU;AAAC,qBAAO,KAAK,YAAU,KAAK,WAAS,OAAG,KAAK,YAAY,GAAE,QAAM;AAAA,YAAI,GAAE,SAAQ,WAAU;AAAC,qBAAM,CAAC,CAAC,KAAK;AAAA,YAAQ,EAAC,CAAC;AAAE,eAAG,QAAM,SAASA,IAAEC,IAAE;AAAC,qBAAOD,GAAE,WAAWC,IAAE,IAAI,GAAE;AAAA,YAAI;AAAE,gBAAI,IAAG,KAAG,EAAC,QAAO,EAAC,GAAE,KAAG,KAAG,yBAAuB,aAAY,KAAG,EAAC,WAAU,WAAU,YAAW,YAAW,aAAY,YAAW,eAAc,WAAU,GAAE,KAAG,EAAC,WAAU,aAAY,YAAW,aAAY,aAAY,aAAY,eAAc,YAAW,GAAE,KAAG,EAAE,OAAO,EAAC,SAAQ,EAAC,gBAAe,EAAC,GAAE,YAAW,SAASD,IAAEC,IAAEC,IAAEC,IAAE;AAAC,gBAAE,MAAKA,EAAC,GAAE,KAAK,WAASH,IAAE,KAAK,mBAAiBC,MAAGD,IAAE,KAAK,kBAAgBE;AAAA,YAAC,GAAE,QAAO,WAAU;AAAC,mBAAK,aAAW,GAAG,KAAK,kBAAiB,IAAG,KAAK,SAAQ,IAAI,GAAE,KAAK,WAAS;AAAA,YAAG,GAAE,SAAQ,WAAU;AAAC,mBAAK,aAAW,GAAG,cAAY,QAAM,KAAK,WAAW,GAAE,GAAG,KAAK,kBAAiB,IAAG,KAAK,SAAQ,IAAI,GAAE,KAAK,WAAS,OAAG,KAAK,SAAO;AAAA,YAAG,GAAE,SAAQ,SAASF,IAAE;AAAC,kBAAG,CAACA,GAAE,cAAY,KAAK,aAAW,KAAK,SAAO,OAAG,CAAC,GAAG,KAAK,UAAS,mBAAmB,KAAG,EAAE,GAAG,aAAWA,GAAE,YAAU,MAAIA,GAAE,SAAO,MAAIA,GAAE,UAAQ,CAACA,GAAE,YAAU,GAAG,YAAU,MAAK,KAAK,mBAAiB,GAAG,KAAK,QAAQ,GAAE,GAAG,GAAE,GAAG,GAAE,KAAK,YAAW;AAAC,qBAAK,KAAK,MAAM;AAAE,oBAAIC,KAAED,GAAE,UAAQA,GAAE,QAAQ,CAAC,IAAEA,IAAEE,KAAE,GAAG,KAAK,QAAQ;AAAE,qBAAK,cAAY,IAAI,EAAED,GAAE,SAAQA,GAAE,OAAO,GAAE,KAAK,eAAa,GAAGC,EAAC,GAAE,GAAG,UAAS,GAAGF,GAAE,IAAI,GAAE,KAAK,SAAQ,IAAI,GAAE,GAAG,UAAS,GAAGA,GAAE,IAAI,GAAE,KAAK,OAAM,IAAI;AAAA,cAAC;AAAA,YAAC,GAAE,SAAQ,SAASA,IAAE;AAAC,kBAAG,CAACA,GAAE,cAAY,KAAK,SAAS,KAAGA,GAAE,WAASA,GAAE,QAAQ,SAAO,EAAE,MAAK,SAAO;AAAA,mBAAO;AAAC,oBAAIC,KAAED,GAAE,WAAS,MAAIA,GAAE,QAAQ,SAAOA,GAAE,QAAQ,CAAC,IAAEA,IAAEE,KAAE,IAAI,EAAED,GAAE,SAAQA,GAAE,OAAO,EAAE,UAAU,KAAK,WAAW;AAAE,iBAACC,GAAE,KAAGA,GAAE,OAAK,KAAK,IAAIA,GAAE,CAAC,IAAE,KAAK,IAAIA,GAAE,CAAC,IAAE,KAAK,QAAQ,mBAAiBA,GAAE,KAAG,KAAK,aAAa,GAAEA,GAAE,KAAG,KAAK,aAAa,GAAE,GAAGF,EAAC,GAAE,KAAK,WAAS,KAAK,KAAK,WAAW,GAAE,KAAK,SAAO,MAAG,KAAK,YAAU,GAAG,KAAK,QAAQ,EAAE,SAASE,EAAC,GAAEa,IAAG,SAAS,MAAK,kBAAkB,GAAE,KAAK,cAAYf,GAAE,UAAQA,GAAE,YAAW,OAAO,sBAAoB,KAAK,uBAAuB,OAAO,uBAAqB,KAAK,cAAY,KAAK,YAAY,0BAAyBe,IAAG,KAAK,aAAY,qBAAqB,IAAG,KAAK,UAAQ,KAAK,UAAU,IAAIb,EAAC,GAAE,KAAK,UAAQ,MAAG,EAAE,KAAK,YAAY,GAAE,KAAK,aAAWF,IAAE,KAAK,eAAa,EAAE,KAAK,iBAAgB,MAAK,IAAE;AAAA,cAAG;AAAA,YAAC,GAAE,iBAAgB,WAAU;AAAC,kBAAIA,KAAE,EAAC,eAAc,KAAK,WAAU;AAAE,mBAAK,KAAK,WAAUA,EAAC,GAAE,GAAG,KAAK,UAAS,KAAK,OAAO,GAAE,KAAK,KAAK,QAAOA,EAAC;AAAA,YAAC,GAAE,OAAM,SAASA,IAAE;AAAC,eAACA,GAAE,cAAY,KAAK,YAAU,KAAK,WAAW;AAAA,YAAC,GAAE,YAAW,WAAU;AAAC,uBAAQA,MAAK,GAAG,SAAS,MAAK,kBAAkB,GAAE,KAAK,gBAAc,GAAG,KAAK,aAAY,qBAAqB,GAAE,KAAK,cAAY,OAAM,GAAG,IAAG,UAAS,GAAGA,EAAC,GAAE,KAAK,SAAQ,IAAI,GAAE,GAAG,UAAS,GAAGA,EAAC,GAAE,KAAK,OAAM,IAAI;AAAE,iBAAG,GAAE,GAAG,GAAE,KAAK,UAAQ,KAAK,YAAU,EAAE,KAAK,YAAY,GAAE,KAAK,KAAK,WAAU,EAAC,UAAS,KAAK,QAAQ,WAAW,KAAK,SAAS,EAAC,CAAC,IAAG,KAAK,UAAQ,OAAG,GAAG,YAAU;AAAA,YAAE,EAAC,CAAC;AAAE,qBAAS,GAAGA,IAAEC,IAAE;AAAC,kBAAG,CAACA,MAAG,CAACD,GAAE,OAAO,QAAOA,GAAE,MAAM;AAAE,kBAAIE,KAAED,KAAEA;AAAE,sBAAO,SAASD,IAAEC,IAAE;AAAC,oBAAIC,KAAEF,GAAE,QAAOG,KAAE,KAAI,OAAO,cAAY,cAAU,aAAW,OAAOD,EAAC;AAAE,gBAAAC,GAAE,CAAC,IAAEA,GAAED,KAAE,CAAC,IAAE,GAAE,GAAGF,IAAEG,IAAEF,IAAE,GAAEC,KAAE,CAAC;AAAE,oBAAIE,IAAEC,KAAE,CAAC;AAAE,qBAAID,KAAE,GAAEA,KAAEF,IAAEE,KAAI,CAAAD,GAAEC,EAAC,KAAGC,GAAE,KAAKL,GAAEI,EAAC,CAAC;AAAE,uBAAOC;AAAA,cAAC,GAAEL,MAAE,SAASA,IAAEC,IAAE;AAAC,yBAAQC,KAAE,CAACF,GAAE,CAAC,CAAC,GAAEG,KAAE,GAAEC,KAAE,GAAEC,KAAEL,GAAE,QAAOG,KAAEE,IAAEF,KAAI,IAAGH,GAAEG,EAAC,GAAEH,GAAEI,EAAC,CAAC,IAAEH,OAAIC,GAAE,KAAKF,GAAEG,EAAC,CAAC,GAAEC,KAAED;AAAG,uBAAOC,KAAEC,KAAE,KAAGH,GAAE,KAAKF,GAAEK,KAAE,CAAC,CAAC,GAAEH;AAAA,cAAC,GAAEF,IAAEE,EAAC,GAAEA,EAAC;AAAA,YAAC;AAAC,qBAAS,GAAGF,IAAEC,IAAEC,IAAE;AAAC,qBAAO,KAAK,KAAK,GAAGF,IAAEC,IAAEC,IAAE,IAAE,CAAC;AAAA,YAAC;AAAC,qBAAS,GAAGF,IAAEC,IAAEC,IAAEC,IAAEC,IAAE;AAAC,kBAAIC,IAAEC,IAAEC,IAAEC,KAAE;AAAE,mBAAIF,KAAEH,KAAE,GAAEG,MAAGF,KAAE,GAAEE,KAAI,EAACC,KAAE,GAAGP,GAAEM,EAAC,GAAEN,GAAEG,EAAC,GAAEH,GAAEI,EAAC,GAAE,IAAE,KAAGI,OAAIH,KAAEC,IAAEE,KAAED;AAAG,cAAAC,KAAEN,OAAID,GAAEI,EAAC,IAAE,GAAE,GAAGL,IAAEC,IAAEC,IAAEC,IAAEE,EAAC,GAAE,GAAGL,IAAEC,IAAEC,IAAEG,IAAED,EAAC;AAAA,YAAE;AAAC,qBAAS,GAAGJ,IAAEC,IAAEC,IAAEC,IAAEC,IAAE;AAAC,kBAAIC,IAAEC,IAAEC,IAAEC,KAAEL,KAAE,KAAG,GAAGH,IAAEE,EAAC,GAAEc,KAAE,GAAGf,IAAEC,EAAC;AAAE,mBAAI,KAAGc,QAAI;AAAC,oBAAG,EAAER,KAAEQ,IAAG,QAAM,CAAChB,IAAEC,EAAC;AAAE,oBAAGO,KAAEQ,GAAE,QAAM;AAAG,gBAAAT,KAAE,GAAGD,KAAE,GAAGN,IAAEC,IAAEI,KAAEG,MAAGQ,IAAEd,IAAEE,EAAC,GAAEF,EAAC,GAAEG,OAAIG,MAAGR,KAAEM,IAAEE,KAAED,OAAIN,KAAEK,IAAEU,KAAET;AAAA,cAAE;AAAA,YAAC;AAAC,qBAAS,GAAGP,IAAEC,IAAEC,IAAEC,IAAEC,IAAE;AAAC,kBAAIC,IAAEC,IAAEC,KAAEN,GAAE,IAAED,GAAE,GAAEQ,KAAEP,GAAE,IAAED,GAAE,GAAEgB,KAAEb,GAAE,KAAIc,KAAEd,GAAE;AAAI,qBAAO,IAAED,MAAGG,KAAEL,GAAE,IAAEO,MAAGU,GAAE,IAAEjB,GAAE,KAAGQ,IAAEF,KAAEW,GAAE,KAAG,IAAEf,MAAGG,KAAEL,GAAE,IAAEO,MAAGS,GAAE,IAAEhB,GAAE,KAAGQ,IAAEF,KAAEU,GAAE,KAAG,IAAEd,MAAGG,KAAEY,GAAE,GAAEX,KAAEN,GAAE,IAAEQ,MAAGS,GAAE,IAAEjB,GAAE,KAAGO,MAAG,IAAEL,OAAIG,KAAEW,GAAE,GAAEV,KAAEN,GAAE,IAAEQ,MAAGQ,GAAE,IAAEhB,GAAE,KAAGO,KAAG,IAAI,EAAEF,IAAEC,IAAEF,EAAC;AAAA,YAAC;AAAC,qBAAS,GAAGJ,IAAEC,IAAE;AAAC,kBAAIC,KAAE;AAAE,qBAAOF,GAAE,IAAEC,GAAE,IAAI,IAAEC,MAAG,IAAEF,GAAE,IAAEC,GAAE,IAAI,MAAIC,MAAG,IAAGF,GAAE,IAAEC,GAAE,IAAI,IAAEC,MAAG,IAAEF,GAAE,IAAEC,GAAE,IAAI,MAAIC,MAAG,IAAGA;AAAA,YAAC;AAAC,qBAAS,GAAGF,IAAEC,IAAE;AAAC,kBAAIC,KAAED,GAAE,IAAED,GAAE,GAAEG,KAAEF,GAAE,IAAED,GAAE;AAAE,qBAAOE,KAAEA,KAAEC,KAAEA;AAAA,YAAC;AAAC,qBAAS,GAAGH,IAAEC,IAAEC,IAAEC,IAAE;AAAC,kBAAIC,IAAEC,KAAEJ,GAAE,GAAEK,KAAEL,GAAE,GAAEM,KAAEL,GAAE,IAAEG,IAAEG,KAAEN,GAAE,IAAEI,IAAEU,KAAET,KAAEA,KAAEC,KAAEA;AAAE,qBAAOQ,KAAE,OAAKZ,OAAIJ,GAAE,IAAEK,MAAGE,MAAGP,GAAE,IAAEM,MAAGE,MAAGQ,MAAG,KAAGX,KAAEH,GAAE,GAAEI,KAAEJ,GAAE,KAAGE,KAAE,MAAIC,MAAGE,KAAEH,IAAEE,MAAGE,KAAEJ,MAAIG,KAAEP,GAAE,IAAEK,IAAEG,KAAER,GAAE,IAAEM,IAAEH,KAAEI,KAAEA,KAAEC,KAAEA,KAAE,IAAI,EAAEH,IAAEC,EAAC;AAAA,YAAC;AAAC,qBAAS,GAAGN,IAAE;AAAC,qBAAM,CAAC,EAAEA,GAAE,CAAC,CAAC,KAAG,YAAU,OAAOA,GAAE,CAAC,EAAE,CAAC,KAAG,WAASA,GAAE,CAAC,EAAE,CAAC;AAAA,YAAC;AAAC,qBAAS,GAAGA,IAAE;AAAC,qBAAO,QAAQ,KAAK,gEAAgE,GAAE,GAAGA,EAAC;AAAA,YAAC;AAAC,gBAAI,KAAG,EAAC,UAAS,IAAG,wBAAuB,IAAG,uBAAsB,SAASA,IAAEC,IAAEC,IAAE;AAAC,qBAAO,GAAGF,IAAEC,IAAEC,EAAC;AAAA,YAAC,GAAE,aAAY,IAAG,sBAAqB,IAAG,aAAY,IAAG,0BAAyB,IAAG,QAAO,IAAG,OAAM,GAAE;AAAE,qBAAS,GAAGF,IAAEC,IAAEC,IAAE;AAAC,kBAAIC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEQ,IAAEC,IAAEC,IAAEC,KAAE,CAAC,GAAE,GAAE,GAAE,CAAC;AAAE,mBAAIf,KAAE,GAAEY,KAAEhB,GAAE,QAAOI,KAAEY,IAAEZ,KAAI,CAAAJ,GAAEI,EAAC,EAAE,QAAM,GAAGJ,GAAEI,EAAC,GAAEH,EAAC;AAAE,mBAAIK,KAAE,GAAEA,KAAE,GAAEA,MAAI;AAAC,qBAAIW,KAAEE,GAAEb,EAAC,GAAEH,KAAE,CAAC,GAAEC,KAAE,GAAEC,MAAGW,KAAEhB,GAAE,UAAQ,GAAEI,KAAEY,IAAEX,KAAED,KAAI,CAAAG,KAAEP,GAAEI,EAAC,GAAEI,KAAER,GAAEK,EAAC,GAAEE,GAAE,QAAMU,KAAET,GAAE,QAAMS,QAAKC,KAAE,GAAGV,IAAED,IAAEU,IAAEhB,IAAEC,EAAC,GAAG,QAAM,GAAGgB,IAAEjB,EAAC,GAAEE,GAAE,KAAKe,EAAC,MAAIV,GAAE,QAAMS,QAAKC,KAAE,GAAGV,IAAED,IAAEU,IAAEhB,IAAEC,EAAC,GAAG,QAAM,GAAGgB,IAAEjB,EAAC,GAAEE,GAAE,KAAKe,EAAC,IAAGf,GAAE,KAAKI,EAAC;AAAG,gBAAAP,KAAEG;AAAA,cAAC;AAAC,qBAAOH;AAAA,YAAC;AAAC,gBAAI,KAAG,EAAC,aAAY,GAAE,GAAE,KAAG,EAAC,SAAQ,SAASA,IAAE;AAAC,qBAAO,IAAI,EAAEA,GAAE,KAAIA,GAAE,GAAG;AAAA,YAAC,GAAE,WAAU,SAASA,IAAE;AAAC,qBAAO,IAAI,EAAEA,GAAE,GAAEA,GAAE,CAAC;AAAA,YAAC,GAAE,QAAO,IAAI,EAAE,CAAC,MAAK,GAAG,GAAE,CAAC,KAAI,EAAE,CAAC,EAAC,GAAE,KAAG,EAAC,GAAE,SAAQ,SAAQ,qBAAkB,QAAO,IAAI,EAAE,CAAC,mBAAgB,iBAAe,GAAE,CAAC,kBAAe,gBAAc,CAAC,GAAE,SAAQ,SAASA,IAAE;AAAC,kBAAIC,KAAE,KAAK,KAAG,KAAIC,KAAE,KAAK,GAAEC,KAAEH,GAAE,MAAIC,IAAEG,KAAE,KAAK,UAAQF,IAAEG,KAAE,KAAK,KAAK,IAAED,KAAEA,EAAC,GAAEE,KAAED,KAAE,KAAK,IAAIF,EAAC,GAAEI,KAAE,KAAK,IAAI,KAAK,KAAG,IAAEJ,KAAE,CAAC,IAAE,KAAK,KAAK,IAAEG,OAAI,IAAEA,KAAGD,KAAE,CAAC;AAAE,qBAAOF,KAAE,CAACD,KAAE,KAAK,IAAI,KAAK,IAAIK,IAAE,KAAK,CAAC,GAAE,IAAI,EAAEP,GAAE,MAAIC,KAAEC,IAAEC,EAAC;AAAA,YAAC,GAAE,WAAU,SAASH,IAAE;AAAC,uBAAQC,IAAEC,KAAE,MAAI,KAAK,IAAGC,KAAE,KAAK,GAAEC,KAAE,KAAK,UAAQD,IAAEE,KAAE,KAAK,KAAK,IAAED,KAAEA,EAAC,GAAEE,KAAE,KAAK,IAAI,CAACN,GAAE,IAAEG,EAAC,GAAEI,KAAE,KAAK,KAAG,IAAE,IAAE,KAAK,KAAKD,EAAC,GAAEE,KAAE,GAAEQ,KAAE,KAAGR,KAAE,MAAI,KAAK,IAAIQ,EAAC,IAAE,MAAKR,KAAI,CAAAP,KAAEI,KAAE,KAAK,IAAIE,EAAC,GAAEN,KAAE,KAAK,KAAK,IAAEA,OAAI,IAAEA,KAAGI,KAAE,CAAC,GAAEE,MAAGS,KAAE,KAAK,KAAG,IAAE,IAAE,KAAK,KAAKV,KAAEL,EAAC,IAAEM;AAAE,qBAAO,IAAI,EAAEA,KAAEL,IAAEF,GAAE,IAAEE,KAAEC,EAAC;AAAA,YAAC,EAAC,GAAE,KAAG,EAAC,QAAO,IAAG,UAAS,IAAG,mBAAkB,EAAC,GAAE,KAAGF,GAAE,CAAC,GAAE,GAAE,EAAC,MAAK,aAAY,YAAW,IAAG,iBAAe,WAAU;AAAC,kBAAID,KAAE,OAAI,KAAK,KAAG,GAAG;AAAG,qBAAOS,GAAET,IAAE,KAAG,CAACA,IAAE,GAAE;AAAA,YAAC,GAAE,EAAC,CAAC,GAAE,KAAGC,GAAE,CAAC,GAAE,GAAE,EAAC,MAAK,aAAY,YAAW,IAAG,gBAAeQ,GAAE,IAAE,KAAI,GAAE,KAAG,KAAI,GAAE,EAAC,CAAC,GAAE,KAAGR,GAAE,CAAC,GAAE,GAAE,EAAC,YAAW,IAAG,gBAAeQ,GAAE,GAAE,GAAE,IAAG,CAAC,GAAE,OAAM,SAAST,IAAE;AAAC,qBAAO,KAAK,IAAI,GAAEA,EAAC;AAAA,YAAC,GAAE,MAAK,SAASA,IAAE;AAAC,qBAAO,KAAK,IAAIA,EAAC,IAAE,KAAK;AAAA,YAAG,GAAE,UAAS,SAASA,IAAEC,IAAE;AAAC,kBAAIC,KAAED,GAAE,MAAID,GAAE,KAAIG,KAAEF,GAAE,MAAID,GAAE;AAAI,qBAAO,KAAK,KAAKE,KAAEA,KAAEC,KAAEA,EAAC;AAAA,YAAC,GAAE,UAAS,KAAE,CAAC;AAAE,cAAE,QAAM,GAAE,EAAE,WAAS,IAAG,EAAE,WAAS,GAAE,EAAE,aAAW,GAAE,EAAE,WAAS,IAAG,EAAE,SAAO;AAAG,gBAAI,KAAG,EAAE,OAAO,EAAC,SAAQ,EAAC,MAAK,eAAc,aAAY,MAAK,qBAAoB,KAAE,GAAE,OAAM,SAASH,IAAE;AAAC,qBAAOA,GAAE,SAAS,IAAI,GAAE;AAAA,YAAI,GAAE,QAAO,WAAU;AAAC,qBAAO,KAAK,WAAW,KAAK,QAAM,KAAK,SAAS;AAAA,YAAC,GAAE,YAAW,SAASA,IAAE;AAAC,qBAAOA,MAAGA,GAAE,YAAY,IAAI,GAAE;AAAA,YAAI,GAAE,SAAQ,SAASA,IAAE;AAAC,qBAAO,KAAK,KAAK,QAAQA,KAAE,KAAK,QAAQA,EAAC,KAAGA,KAAE,KAAK,QAAQ,IAAI;AAAA,YAAC,GAAE,sBAAqB,SAASA,IAAE;AAAC,qBAAO,KAAK,KAAK,SAAS,EAAEA,EAAC,CAAC,IAAE,MAAK;AAAA,YAAI,GAAE,yBAAwB,SAASA,IAAE;AAAC,qBAAO,OAAO,KAAK,KAAK,SAAS,EAAEA,EAAC,CAAC,GAAE;AAAA,YAAI,GAAE,gBAAe,WAAU;AAAC,qBAAO,KAAK,QAAQ;AAAA,YAAW,GAAE,WAAU,SAASA,IAAE;AAAC,kBAAIC,KAAED,GAAE;AAAO,kBAAGC,GAAE,SAAS,IAAI,GAAE;AAAC,oBAAG,KAAK,OAAKA,IAAE,KAAK,gBAAcA,GAAE,eAAc,KAAK,WAAU;AAAC,sBAAIC,KAAE,KAAK,UAAU;AAAE,kBAAAD,GAAE,GAAGC,IAAE,IAAI,GAAE,KAAK,KAAK,WAAU,WAAU;AAAC,oBAAAD,GAAE,IAAIC,IAAE,IAAI;AAAA,kBAAC,IAAG,IAAI;AAAA,gBAAC;AAAC,qBAAK,MAAMD,EAAC,GAAE,KAAK,kBAAgBA,GAAE,sBAAoBA,GAAE,mBAAmB,eAAe,KAAK,eAAe,CAAC,GAAE,KAAK,KAAK,KAAK,GAAEA,GAAE,KAAK,YAAW,EAAC,OAAM,KAAI,CAAC;AAAA,cAAC;AAAA,YAAC,EAAC,CAAC;AAAE,eAAG,QAAQ,EAAC,UAAS,SAASD,IAAE;AAAC,kBAAG,CAACA,GAAE,UAAU,OAAM,IAAI,MAAM,qCAAqC;AAAE,kBAAIC,KAAE,EAAED,EAAC;AAAE,qBAAO,KAAK,QAAQC,EAAC,MAAI,KAAK,QAAQA,EAAC,IAAED,IAAEA,GAAE,YAAU,MAAKA,GAAE,aAAWA,GAAE,UAAU,IAAI,GAAE,KAAK,UAAUA,GAAE,WAAUA,EAAC,IAAG;AAAA,YAAI,GAAE,aAAY,SAASA,IAAE;AAAC,kBAAIC,KAAE,EAAED,EAAC;AAAE,qBAAO,KAAK,QAAQC,EAAC,KAAG,KAAK,WAASD,GAAE,SAAS,IAAI,GAAEA,GAAE,kBAAgB,KAAK,sBAAoB,KAAK,mBAAmB,kBAAkBA,GAAE,eAAe,CAAC,GAAE,OAAO,KAAK,QAAQC,EAAC,GAAE,KAAK,YAAU,KAAK,KAAK,eAAc,EAAC,OAAMD,GAAC,CAAC,GAAEA,GAAE,KAAK,QAAQ,IAAGA,GAAE,OAAKA,GAAE,YAAU,MAAK,QAAM;AAAA,YAAI,GAAE,UAAS,SAASA,IAAE;AAAC,qBAAM,CAAC,CAACA,MAAG,EAAEA,EAAC,KAAI,KAAK;AAAA,YAAO,GAAE,WAAU,SAASA,IAAEC,IAAE;AAAC,uBAAQC,MAAK,KAAK,QAAQ,CAAAF,GAAE,KAAKC,IAAE,KAAK,QAAQC,EAAC,CAAC;AAAE,qBAAO;AAAA,YAAI,GAAE,YAAW,SAASF,IAAE;AAAC,uBAAQC,KAAE,GAAEC,MAAGF,KAAEA,KAAE,EAAEA,EAAC,IAAEA,KAAE,CAACA,EAAC,IAAE,CAAC,GAAG,QAAOC,KAAEC,IAAED,KAAI,MAAK,SAASD,GAAEC,EAAC,CAAC;AAAA,YAAC,GAAE,eAAc,SAASD,IAAE;AAAC,eAAC,MAAMA,GAAE,QAAQ,OAAO,KAAG,MAAMA,GAAE,QAAQ,OAAO,MAAI,KAAK,iBAAiB,EAAEA,EAAC,CAAC,IAAEA,IAAE,KAAK,kBAAkB;AAAA,YAAE,GAAE,kBAAiB,SAASA,IAAE;AAAC,kBAAIC,KAAE,EAAED,EAAC;AAAE,mBAAK,iBAAiBC,EAAC,MAAI,OAAO,KAAK,iBAAiBA,EAAC,GAAE,KAAK,kBAAkB;AAAA,YAAE,GAAE,mBAAkB,WAAU;AAAC,kBAAID,KAAE,IAAE,GAAEC,KAAE,KAAG,GAAEC,KAAE,KAAK,aAAa;AAAE,uBAAQC,MAAK,KAAK,kBAAiB;AAAC,oBAAIC,KAAE,KAAK,iBAAiBD,EAAC,EAAE;AAAQ,gBAAAH,KAAE,WAASI,GAAE,UAAQJ,KAAE,KAAK,IAAIA,IAAEI,GAAE,OAAO,GAAEH,KAAE,WAASG,GAAE,UAAQH,KAAE,KAAK,IAAIA,IAAEG,GAAE,OAAO;AAAA,cAAC;AAAC,mBAAK,iBAAeH,OAAI,KAAG,IAAE,SAAOA,IAAE,KAAK,iBAAeD,OAAI,IAAE,IAAE,SAAOA,IAAEE,OAAI,KAAK,aAAa,KAAG,KAAK,KAAK,kBAAkB,GAAE,WAAS,KAAK,QAAQ,WAAS,KAAK,kBAAgB,KAAK,QAAQ,IAAE,KAAK,kBAAgB,KAAK,QAAQ,KAAK,cAAc,GAAE,WAAS,KAAK,QAAQ,WAAS,KAAK,kBAAgB,KAAK,QAAQ,IAAE,KAAK,kBAAgB,KAAK,QAAQ,KAAK,cAAc;AAAA,YAAC,EAAC,CAAC;AAAE,gBAAI,KAAG,GAAG,OAAO,EAAC,YAAW,SAASF,IAAEC,IAAE;AAAC,kBAAIC,IAAEC;AAAE,kBAAG,EAAE,MAAKF,EAAC,GAAE,KAAK,UAAQ,CAAC,GAAED,GAAE,MAAIE,KAAE,GAAEC,KAAEH,GAAE,QAAOE,KAAEC,IAAED,KAAI,MAAK,SAASF,GAAEE,EAAC,CAAC;AAAA,YAAC,GAAE,UAAS,SAASF,IAAE;AAAC,kBAAIC,KAAE,KAAK,WAAWD,EAAC;AAAE,qBAAO,KAAK,QAAQC,EAAC,IAAED,IAAE,KAAK,QAAM,KAAK,KAAK,SAASA,EAAC,GAAE;AAAA,YAAI,GAAE,aAAY,SAASA,IAAE;AAAC,kBAAIC,KAAED,MAAK,KAAK,UAAQA,KAAE,KAAK,WAAWA,EAAC;AAAE,qBAAO,KAAK,QAAM,KAAK,QAAQC,EAAC,KAAG,KAAK,KAAK,YAAY,KAAK,QAAQA,EAAC,CAAC,GAAE,OAAO,KAAK,QAAQA,EAAC,GAAE;AAAA,YAAI,GAAE,UAAS,SAASD,IAAE;AAAC,qBAAM,CAAC,CAACA,OAAI,YAAU,OAAOA,KAAEA,KAAE,KAAK,WAAWA,EAAC,MAAK,KAAK;AAAA,YAAO,GAAE,aAAY,WAAU;AAAC,qBAAO,KAAK,UAAU,KAAK,aAAY,IAAI;AAAA,YAAC,GAAE,QAAO,SAASA,IAAE;AAAC,kBAAIC,IAAEC,IAAEC,KAAE,MAAM,UAAU,MAAM,KAAK,WAAU,CAAC;AAAE,mBAAIF,MAAK,KAAK,QAAQ,EAACC,KAAE,KAAK,QAAQD,EAAC,GAAGD,EAAC,KAAGE,GAAEF,EAAC,EAAE,MAAME,IAAEC,EAAC;AAAE,qBAAO;AAAA,YAAI,GAAE,OAAM,SAASH,IAAE;AAAC,mBAAK,UAAUA,GAAE,UAASA,EAAC;AAAA,YAAC,GAAE,UAAS,SAASA,IAAE;AAAC,mBAAK,UAAUA,GAAE,aAAYA,EAAC;AAAA,YAAC,GAAE,WAAU,SAASA,IAAEC,IAAE;AAAC,uBAAQC,MAAK,KAAK,QAAQ,CAAAF,GAAE,KAAKC,IAAE,KAAK,QAAQC,EAAC,CAAC;AAAE,qBAAO;AAAA,YAAI,GAAE,UAAS,SAASF,IAAE;AAAC,qBAAO,KAAK,QAAQA,EAAC;AAAA,YAAC,GAAE,WAAU,WAAU;AAAC,kBAAIA,KAAE,CAAC;AAAE,qBAAO,KAAK,UAAUA,GAAE,MAAKA,EAAC,GAAEA;AAAA,YAAC,GAAE,WAAU,SAASA,IAAE;AAAC,qBAAO,KAAK,OAAO,aAAYA,EAAC;AAAA,YAAC,GAAE,YAAW,SAASA,IAAE;AAAC,qBAAO,EAAEA,EAAC;AAAA,YAAC,EAAC,CAAC,GAAE,KAAG,GAAG,OAAO,EAAC,UAAS,SAASA,IAAE;AAAC,qBAAO,KAAK,SAASA,EAAC,IAAE,QAAMA,GAAE,eAAe,IAAI,GAAE,GAAG,UAAU,SAAS,KAAK,MAAKA,EAAC,GAAE,KAAK,KAAK,YAAW,EAAC,OAAMA,GAAC,CAAC;AAAA,YAAE,GAAE,aAAY,SAASA,IAAE;AAAC,qBAAO,KAAK,SAASA,EAAC,KAAGA,MAAK,KAAK,YAAUA,KAAE,KAAK,QAAQA,EAAC,IAAGA,GAAE,kBAAkB,IAAI,GAAE,GAAG,UAAU,YAAY,KAAK,MAAKA,EAAC,GAAE,KAAK,KAAK,eAAc,EAAC,OAAMA,GAAC,CAAC,KAAG;AAAA,YAAI,GAAE,UAAS,SAASA,IAAE;AAAC,qBAAO,KAAK,OAAO,YAAWA,EAAC;AAAA,YAAC,GAAE,cAAa,WAAU;AAAC,qBAAO,KAAK,OAAO,cAAc;AAAA,YAAC,GAAE,aAAY,WAAU;AAAC,qBAAO,KAAK,OAAO,aAAa;AAAA,YAAC,GAAE,WAAU,WAAU;AAAC,kBAAIA,KAAE,IAAI;AAAE,uBAAQC,MAAK,KAAK,SAAQ;AAAC,oBAAIC,KAAE,KAAK,QAAQD,EAAC;AAAE,gBAAAD,GAAE,OAAOE,GAAE,YAAUA,GAAE,UAAU,IAAEA,GAAE,UAAU,CAAC;AAAA,cAAC;AAAC,qBAAOF;AAAA,YAAC,EAAC,CAAC,GAAE,KAAG,EAAE,OAAO,EAAC,SAAQ,EAAC,aAAY,CAAC,GAAE,CAAC,GAAE,eAAc,CAAC,GAAE,CAAC,EAAC,GAAE,YAAW,SAASA,IAAE;AAAC,gBAAE,MAAKA,EAAC;AAAA,YAAC,GAAE,YAAW,SAASA,IAAE;AAAC,qBAAO,KAAK,YAAY,QAAOA,EAAC;AAAA,YAAC,GAAE,cAAa,SAASA,IAAE;AAAC,qBAAO,KAAK,YAAY,UAASA,EAAC;AAAA,YAAC,GAAE,aAAY,SAASA,IAAEC,IAAE;AAAC,kBAAIC,KAAE,KAAK,YAAYF,EAAC;AAAE,kBAAG,CAACE,IAAE;AAAC,oBAAG,WAASF,GAAE,OAAM,IAAI,MAAM,iDAAiD;AAAE,uBAAO;AAAA,cAAI;AAAC,kBAAIG,KAAE,KAAK,WAAWD,IAAED,MAAG,UAAQA,GAAE,UAAQA,KAAE,IAAI;AAAE,qBAAO,KAAK,eAAeE,IAAEH,EAAC,GAAEG;AAAA,YAAC,GAAE,gBAAe,SAASH,IAAEC,IAAE;AAAC,kBAAIC,KAAE,KAAK,SAAQC,KAAED,GAAED,KAAE,MAAM;AAAE,0BAAU,OAAOE,OAAIA,KAAE,CAACA,IAAEA,EAAC;AAAG,kBAAIC,KAAE,EAAED,EAAC,GAAEE,KAAE,EAAE,aAAWJ,MAAGC,GAAE,gBAAcA,GAAE,cAAYE,MAAGA,GAAE,SAAS,GAAE,IAAE,CAAC;AAAE,cAAAJ,GAAE,YAAU,oBAAkBC,KAAE,OAAKC,GAAE,aAAW,KAAIG,OAAIL,GAAE,MAAM,aAAW,CAACK,GAAE,IAAE,MAAKL,GAAE,MAAM,YAAU,CAACK,GAAE,IAAE,OAAMD,OAAIJ,GAAE,MAAM,QAAMI,GAAE,IAAE,MAAKJ,GAAE,MAAM,SAAOI,GAAE,IAAE;AAAA,YAAK,GAAE,YAAW,SAASJ,IAAEC,IAAE;AAAC,sBAAOA,KAAEA,MAAG,SAAS,cAAc,KAAK,GAAG,MAAID,IAAEC;AAAA,YAAC,GAAE,aAAY,SAASD,IAAE;AAAC,qBAAO,MAAI,KAAK,QAAQA,KAAE,WAAW,KAAG,KAAK,QAAQA,KAAE,KAAK;AAAA,YAAC,EAAC,CAAC;AAAE,gBAAI,KAAG,GAAG,OAAO,EAAC,SAAQ,EAAC,SAAQ,mBAAkB,eAAc,sBAAqB,WAAU,qBAAoB,UAAS,CAAC,IAAG,EAAE,GAAE,YAAW,CAAC,IAAG,EAAE,GAAE,aAAY,CAAC,GAAE,GAAG,GAAE,eAAc,CAAC,IAAG,GAAG,GAAE,YAAW,CAAC,IAAG,EAAE,EAAC,GAAE,aAAY,SAASA,IAAE;AAAC,qBAAO,GAAG,cAAY,GAAG,YAAU,KAAK,gBAAgB,KAAI,KAAK,QAAQ,aAAW,GAAG,aAAW,GAAG,UAAU,YAAY,KAAK,MAAKA,EAAC;AAAA,YAAC,GAAE,iBAAgB,WAAU;AAAC,kBAAIA,KAAEa,IAAG,OAAM,6BAA4B,SAAS,IAAI,GAAEZ,KAAE,GAAGD,IAAE,kBAAkB,KAAG,GAAGA,IAAE,iBAAiB;AAAE,qBAAO,SAAS,KAAK,YAAYA,EAAC,GAAE,SAAOC,MAAG,MAAIA,GAAE,QAAQ,KAAK,IAAE,KAAGA,GAAE,QAAQ,eAAc,EAAE,EAAE,QAAQ,4BAA2B,EAAE;AAAA,YAAC,EAAC,CAAC,GAAE,KAAG,GAAG,OAAO,EAAC,YAAW,SAASD,IAAE;AAAC,mBAAK,UAAQA;AAAA,YAAC,GAAE,UAAS,WAAU;AAAC,kBAAIA,KAAE,KAAK,QAAQ;AAAM,mBAAK,eAAa,KAAK,aAAW,IAAI,GAAGA,IAAEA,IAAE,IAAE,IAAG,KAAK,WAAW,GAAG,EAAC,WAAU,KAAK,cAAa,SAAQ,KAAK,YAAW,MAAK,KAAK,SAAQ,SAAQ,KAAK,WAAU,GAAE,IAAI,EAAE,OAAO,GAAEe,IAAGf,IAAE,0BAA0B;AAAA,YAAC,GAAE,aAAY,WAAU;AAAC,mBAAK,WAAW,IAAI,EAAC,WAAU,KAAK,cAAa,SAAQ,KAAK,YAAW,MAAK,KAAK,SAAQ,SAAQ,KAAK,WAAU,GAAE,IAAI,EAAE,QAAQ,GAAE,KAAK,QAAQ,SAAO,GAAG,KAAK,QAAQ,OAAM,0BAA0B;AAAA,YAAC,GAAE,OAAM,WAAU;AAAC,qBAAO,KAAK,cAAY,KAAK,WAAW;AAAA,YAAM,GAAE,YAAW,SAASA,IAAE;AAAC,kBAAIC,KAAE,KAAK,SAAQC,KAAED,GAAE,MAAKE,KAAE,KAAK,QAAQ,QAAQ,cAAaC,KAAE,KAAK,QAAQ,QAAQ,gBAAeC,KAAE,GAAGJ,GAAE,KAAK,GAAEK,KAAEJ,GAAE,eAAe,GAAEK,KAAEL,GAAE,eAAe,GAAEM,KAAE,EAAEF,GAAE,IAAI,UAAUC,EAAC,EAAE,IAAIH,EAAC,GAAEE,GAAE,IAAI,UAAUC,EAAC,EAAE,SAASH,EAAC,CAAC;AAAE,kBAAG,CAACI,GAAE,SAASH,EAAC,GAAE;AAAC,oBAAIW,KAAE,GAAG,KAAK,IAAIR,GAAE,IAAI,GAAEH,GAAE,CAAC,IAAEG,GAAE,IAAI,MAAIF,GAAE,IAAI,IAAEE,GAAE,IAAI,MAAI,KAAK,IAAIA,GAAE,IAAI,GAAEH,GAAE,CAAC,IAAEG,GAAE,IAAI,MAAIF,GAAE,IAAI,IAAEE,GAAE,IAAI,KAAI,KAAK,IAAIA,GAAE,IAAI,GAAEH,GAAE,CAAC,IAAEG,GAAE,IAAI,MAAIF,GAAE,IAAI,IAAEE,GAAE,IAAI,MAAI,KAAK,IAAIA,GAAE,IAAI,GAAEH,GAAE,CAAC,IAAEG,GAAE,IAAI,MAAIF,GAAE,IAAI,IAAEE,GAAE,IAAI,EAAE,EAAE,WAAWL,EAAC;AAAE,gBAAAD,GAAE,MAAMc,IAAE,EAAC,SAAQ,MAAE,CAAC,GAAE,KAAK,WAAW,QAAQ,KAAKA,EAAC,GAAE,KAAK,WAAW,UAAU,KAAKA,EAAC,GAAE,GAAGf,GAAE,OAAM,KAAK,WAAW,OAAO,GAAE,KAAK,QAAQD,EAAC,GAAE,KAAK,cAAY,EAAE,KAAK,WAAW,KAAK,MAAKA,EAAC,CAAC;AAAA,cAAC;AAAA,YAAC,GAAE,cAAa,WAAU;AAAC,mBAAK,aAAW,KAAK,QAAQ,UAAU,GAAE,KAAK,QAAQ,cAAY,KAAK,QAAQ,WAAW,GAAE,KAAK,QAAQ,KAAK,WAAW,EAAE,KAAK,WAAW;AAAA,YAAC,GAAE,YAAW,SAASA,IAAE;AAAC,mBAAK,QAAQ,QAAQ,YAAU,EAAE,KAAK,WAAW,GAAE,KAAK,cAAY,EAAE,KAAK,WAAW,KAAK,MAAKA,EAAC,CAAC;AAAA,YAAE,GAAE,SAAQ,SAASA,IAAE;AAAC,kBAAIC,KAAE,KAAK,SAAQC,KAAED,GAAE,SAAQE,KAAE,GAAGF,GAAE,KAAK,GAAEG,KAAEH,GAAE,KAAK,mBAAmBE,EAAC;AAAE,cAAAD,MAAG,GAAGA,IAAEC,EAAC,GAAEF,GAAE,UAAQG,IAAEJ,GAAE,SAAOI,IAAEJ,GAAE,YAAU,KAAK,YAAWC,GAAE,KAAK,QAAOD,EAAC,EAAE,KAAK,QAAOA,EAAC;AAAA,YAAC,GAAE,YAAW,SAASA,IAAE;AAAC,gBAAE,KAAK,WAAW,GAAE,OAAO,KAAK,YAAW,KAAK,QAAQ,KAAK,SAAS,EAAE,KAAK,WAAUA,EAAC;AAAA,YAAC,EAAC,CAAC,GAAE,KAAG,GAAG,OAAO,EAAC,SAAQ,EAAC,MAAK,IAAI,MAAG,aAAY,MAAG,UAAS,MAAG,OAAM,IAAG,KAAI,IAAG,cAAa,GAAE,SAAQ,GAAE,aAAY,OAAG,YAAW,KAAI,MAAK,cAAa,YAAW,cAAa,qBAAoB,OAAG,WAAU,OAAG,SAAQ,OAAG,gBAAe,CAAC,IAAG,EAAE,GAAE,cAAa,GAAE,GAAE,YAAW,SAASA,IAAEC,IAAE;AAAC,gBAAE,MAAKA,EAAC,GAAE,KAAK,UAAQ,EAAED,EAAC;AAAA,YAAC,GAAE,OAAM,SAASA,IAAE;AAAC,mBAAK,gBAAc,KAAK,iBAAeA,GAAE,QAAQ,qBAAoB,KAAK,iBAAeA,GAAE,GAAG,YAAW,KAAK,cAAa,IAAI,GAAE,KAAK,UAAU,GAAE,KAAK,OAAO;AAAA,YAAC,GAAE,UAAS,SAASA,IAAE;AAAC,mBAAK,YAAU,KAAK,SAAS,QAAQ,MAAI,KAAK,QAAQ,YAAU,MAAG,KAAK,SAAS,YAAY,IAAG,OAAO,KAAK,UAAS,KAAK,iBAAeA,GAAE,IAAI,YAAW,KAAK,cAAa,IAAI,GAAE,KAAK,YAAY,GAAE,KAAK,cAAc;AAAA,YAAC,GAAE,WAAU,WAAU;AAAC,qBAAM,EAAC,MAAK,KAAK,QAAO,WAAU,KAAK,OAAM;AAAA,YAAC,GAAE,WAAU,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAO,GAAE,WAAU,SAASA,IAAE;AAAC,kBAAIC,KAAE,KAAK;AAAQ,qBAAO,KAAK,UAAQ,EAAED,EAAC,GAAE,KAAK,OAAO,GAAE,KAAK,KAAK,QAAO,EAAC,WAAUC,IAAE,QAAO,KAAK,QAAO,CAAC;AAAA,YAAC,GAAE,iBAAgB,SAASD,IAAE;AAAC,qBAAO,KAAK,QAAQ,eAAaA,IAAE,KAAK,OAAO;AAAA,YAAC,GAAE,SAAQ,WAAU;AAAC,qBAAO,KAAK,QAAQ;AAAA,YAAI,GAAE,SAAQ,SAASA,IAAE;AAAC,qBAAO,KAAK,QAAQ,OAAKA,IAAE,KAAK,SAAO,KAAK,UAAU,GAAE,KAAK,OAAO,IAAG,KAAK,UAAQ,KAAK,UAAU,KAAK,QAAO,KAAK,OAAO,OAAO,GAAE;AAAA,YAAI,GAAE,YAAW,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAK,GAAE,QAAO,WAAU;AAAC,kBAAG,KAAK,SAAO,KAAK,MAAK;AAAC,oBAAIA,KAAE,KAAK,KAAK,mBAAmB,KAAK,OAAO,EAAE,MAAM;AAAE,qBAAK,QAAQA,EAAC;AAAA,cAAC;AAAC,qBAAO;AAAA,YAAI,GAAE,WAAU,WAAU;AAAC,kBAAIA,KAAE,KAAK,SAAQC,KAAE,mBAAiB,KAAK,gBAAc,aAAW,SAAQC,KAAEF,GAAE,KAAK,WAAW,KAAK,KAAK,GAAEG,KAAE;AAAG,cAAAD,OAAI,KAAK,UAAQ,KAAK,SAAO,KAAK,YAAY,GAAEC,KAAE,MAAGH,GAAE,UAAQE,GAAE,QAAMF,GAAE,QAAO,UAAQE,GAAE,YAAUA,GAAE,MAAIF,GAAE,OAAK,MAAKe,IAAGb,IAAED,EAAC,GAAED,GAAE,aAAWE,GAAE,WAAS,MAAK,KAAK,QAAMA,IAAEF,GAAE,eAAa,KAAK,GAAG,EAAC,WAAU,KAAK,eAAc,UAAS,KAAK,aAAY,CAAC;AAAE,kBAAII,KAAEJ,GAAE,KAAK,aAAa,KAAK,OAAO,GAAEK,KAAE;AAAG,cAAAD,OAAI,KAAK,YAAU,KAAK,cAAc,GAAEC,KAAE,OAAID,OAAIW,IAAGX,IAAEH,EAAC,GAAEG,GAAE,MAAI,KAAI,KAAK,UAAQA,IAAEJ,GAAE,UAAQ,KAAG,KAAK,eAAe,GAAEG,MAAG,KAAK,QAAQ,EAAE,YAAY,KAAK,KAAK,GAAE,KAAK,iBAAiB,GAAEC,MAAGC,MAAG,KAAK,QAAQL,GAAE,UAAU,EAAE,YAAY,KAAK,OAAO;AAAA,YAAC,GAAE,aAAY,WAAU;AAAC,mBAAK,QAAQ,eAAa,KAAK,IAAI,EAAC,WAAU,KAAK,eAAc,UAAS,KAAK,aAAY,CAAC,GAAE,GAAG,KAAK,KAAK,GAAE,KAAK,wBAAwB,KAAK,KAAK,GAAE,KAAK,QAAM;AAAA,YAAI,GAAE,eAAc,WAAU;AAAC,mBAAK,WAAS,GAAG,KAAK,OAAO,GAAE,KAAK,UAAQ;AAAA,YAAI,GAAE,SAAQ,SAASA,IAAE;AAAC,mBAAK,SAAO,GAAG,KAAK,OAAMA,EAAC,GAAE,KAAK,WAAS,GAAG,KAAK,SAAQA,EAAC,GAAE,KAAK,UAAQA,GAAE,IAAE,KAAK,QAAQ,cAAa,KAAK,aAAa;AAAA,YAAC,GAAE,eAAc,SAASA,IAAE;AAAC,mBAAK,UAAQ,KAAK,MAAM,MAAM,SAAO,KAAK,UAAQA;AAAA,YAAE,GAAE,cAAa,SAASA,IAAE;AAAC,kBAAIC,KAAE,KAAK,KAAK,uBAAuB,KAAK,SAAQD,GAAE,MAAKA,GAAE,MAAM,EAAE,MAAM;AAAE,mBAAK,QAAQC,EAAC;AAAA,YAAC,GAAE,kBAAiB,WAAU;AAAC,kBAAG,KAAK,QAAQ,gBAAcc,IAAG,KAAK,OAAM,qBAAqB,GAAE,KAAK,qBAAqB,KAAK,KAAK,GAAE,KAAI;AAAC,oBAAIf,KAAE,KAAK,QAAQ;AAAU,qBAAK,aAAWA,KAAE,KAAK,SAAS,QAAQ,GAAE,KAAK,SAAS,QAAQ,IAAG,KAAK,WAAS,IAAI,GAAG,IAAI,GAAEA,MAAG,KAAK,SAAS,OAAO;AAAA,cAAC;AAAA,YAAC,GAAE,YAAW,SAASA,IAAE;AAAC,qBAAO,KAAK,QAAQ,UAAQA,IAAE,KAAK,QAAM,KAAK,eAAe,GAAE;AAAA,YAAI,GAAE,gBAAe,WAAU;AAAC,kBAAIA,KAAE,KAAK,QAAQ;AAAQ,mBAAK,SAAO,GAAG,KAAK,OAAMA,EAAC,GAAE,KAAK,WAAS,GAAG,KAAK,SAAQA,EAAC;AAAA,YAAC,GAAE,eAAc,WAAU;AAAC,mBAAK,cAAc,KAAK,QAAQ,UAAU;AAAA,YAAC,GAAE,cAAa,WAAU;AAAC,mBAAK,cAAc,CAAC;AAAA,YAAC,GAAE,iBAAgB,WAAU;AAAC,qBAAO,KAAK,QAAQ,KAAK,QAAQ;AAAA,YAAW,GAAE,mBAAkB,WAAU;AAAC,qBAAO,KAAK,QAAQ,KAAK,QAAQ;AAAA,YAAa,EAAC,CAAC;AAAE,gBAAI,KAAG,GAAG,OAAO,EAAC,SAAQ,EAAC,QAAO,MAAG,OAAM,WAAU,QAAO,GAAE,SAAQ,GAAE,SAAQ,SAAQ,UAAS,SAAQ,WAAU,MAAK,YAAW,MAAK,MAAK,OAAG,WAAU,MAAK,aAAY,KAAG,UAAS,WAAU,aAAY,MAAG,qBAAoB,KAAE,GAAE,WAAU,SAASA,IAAE;AAAC,mBAAK,YAAUA,GAAE,YAAY,IAAI;AAAA,YAAC,GAAE,OAAM,WAAU;AAAC,mBAAK,UAAU,UAAU,IAAI,GAAE,KAAK,OAAO,GAAE,KAAK,UAAU,SAAS,IAAI;AAAA,YAAC,GAAE,UAAS,WAAU;AAAC,mBAAK,UAAU,YAAY,IAAI;AAAA,YAAC,GAAE,QAAO,WAAU;AAAC,qBAAO,KAAK,QAAM,KAAK,UAAU,YAAY,IAAI,GAAE;AAAA,YAAI,GAAE,UAAS,SAASA,IAAE;AAAC,qBAAO,EAAE,MAAKA,EAAC,GAAE,KAAK,cAAY,KAAK,UAAU,aAAa,IAAI,GAAE,KAAK,QAAQ,UAAQA,MAAG,OAAO,UAAU,eAAe,KAAKA,IAAE,QAAQ,KAAG,KAAK,cAAc,IAAG;AAAA,YAAI,GAAE,cAAa,WAAU;AAAC,qBAAO,KAAK,aAAW,KAAK,UAAU,cAAc,IAAI,GAAE;AAAA,YAAI,GAAE,aAAY,WAAU;AAAC,qBAAO,KAAK,aAAW,KAAK,UAAU,aAAa,IAAI,GAAE;AAAA,YAAI,GAAE,YAAW,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAK,GAAE,QAAO,WAAU;AAAC,mBAAK,SAAS,GAAE,KAAK,QAAQ;AAAA,YAAC,GAAE,iBAAgB,WAAU;AAAC,sBAAO,KAAK,QAAQ,SAAO,KAAK,QAAQ,SAAO,IAAE,KAAG,KAAK,UAAU,QAAQ;AAAA,YAAS,EAAC,CAAC,GAAE,KAAG,GAAG,OAAO,EAAC,SAAQ,EAAC,MAAK,MAAG,QAAO,GAAE,GAAE,YAAW,SAASA,IAAEC,IAAE;AAAC,gBAAE,MAAKA,EAAC,GAAE,KAAK,UAAQ,EAAED,EAAC,GAAE,KAAK,UAAQ,KAAK,QAAQ;AAAA,YAAM,GAAE,WAAU,SAASA,IAAE;AAAC,kBAAIC,KAAE,KAAK;AAAQ,qBAAO,KAAK,UAAQ,EAAED,EAAC,GAAE,KAAK,OAAO,GAAE,KAAK,KAAK,QAAO,EAAC,WAAUC,IAAE,QAAO,KAAK,QAAO,CAAC;AAAA,YAAC,GAAE,WAAU,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAO,GAAE,WAAU,SAASD,IAAE;AAAC,qBAAO,KAAK,QAAQ,SAAO,KAAK,UAAQA,IAAE,KAAK,OAAO;AAAA,YAAC,GAAE,WAAU,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAO,GAAE,UAAS,SAASA,IAAE;AAAC,kBAAIC,KAAED,MAAGA,GAAE,UAAQ,KAAK;AAAQ,qBAAO,GAAG,UAAU,SAAS,KAAK,MAAKA,EAAC,GAAE,KAAK,UAAUC,EAAC,GAAE;AAAA,YAAI,GAAE,UAAS,WAAU;AAAC,mBAAK,SAAO,KAAK,KAAK,mBAAmB,KAAK,OAAO,GAAE,KAAK,cAAc;AAAA,YAAC,GAAE,eAAc,WAAU;AAAC,kBAAID,KAAE,KAAK,SAAQC,KAAE,KAAK,YAAUD,IAAEE,KAAE,KAAK,gBAAgB,GAAEC,KAAE,CAACH,KAAEE,IAAED,KAAEC,EAAC;AAAE,mBAAK,YAAU,IAAI,EAAE,KAAK,OAAO,SAASC,EAAC,GAAE,KAAK,OAAO,IAAIA,EAAC,CAAC;AAAA,YAAC,GAAE,SAAQ,WAAU;AAAC,mBAAK,QAAM,KAAK,YAAY;AAAA,YAAC,GAAE,aAAY,WAAU;AAAC,mBAAK,UAAU,cAAc,IAAI;AAAA,YAAC,GAAE,QAAO,WAAU;AAAC,qBAAO,KAAK,WAAS,CAAC,KAAK,UAAU,QAAQ,WAAW,KAAK,SAAS;AAAA,YAAC,GAAE,gBAAe,SAASH,IAAE;AAAC,qBAAOA,GAAE,WAAW,KAAK,MAAM,KAAG,KAAK,UAAQ,KAAK,gBAAgB;AAAA,YAAC,EAAC,CAAC;AAAE,gBAAI,KAAG,GAAG,OAAO,EAAC,YAAW,SAASA,IAAEE,IAAEC,IAAE;AAAC,kBAAG,YAAU,OAAOD,OAAIA,KAAED,GAAE,CAAC,GAAEE,IAAE,EAAC,QAAOD,GAAC,CAAC,IAAG,EAAE,MAAKA,EAAC,GAAE,KAAK,UAAQ,EAAEF,EAAC,GAAE,MAAM,KAAK,QAAQ,MAAM,EAAE,OAAM,IAAI,MAAM,6BAA6B;AAAE,mBAAK,WAAS,KAAK,QAAQ;AAAA,YAAM,GAAE,WAAU,SAASA,IAAE;AAAC,qBAAO,KAAK,WAASA,IAAE,KAAK,OAAO;AAAA,YAAC,GAAE,WAAU,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAQ,GAAE,WAAU,WAAU;AAAC,kBAAIA,KAAE,CAAC,KAAK,SAAQ,KAAK,YAAU,KAAK,OAAO;AAAE,qBAAO,IAAI,EAAE,KAAK,KAAK,mBAAmB,KAAK,OAAO,SAASA,EAAC,CAAC,GAAE,KAAK,KAAK,mBAAmB,KAAK,OAAO,IAAIA,EAAC,CAAC,CAAC;AAAA,YAAC,GAAE,UAAS,GAAG,UAAU,UAAS,UAAS,WAAU;AAAC,kBAAIA,KAAE,KAAK,QAAQ,KAAIC,KAAE,KAAK,QAAQ,KAAIC,KAAE,KAAK,MAAKC,KAAED,GAAE,QAAQ;AAAI,kBAAGC,GAAE,aAAW,EAAE,UAAS;AAAC,oBAAIC,KAAE,KAAK,KAAG,KAAIC,KAAE,KAAK,WAAS,EAAE,IAAED,IAAEE,KAAEJ,GAAE,QAAQ,CAACD,KAAEI,IAAEL,EAAC,CAAC,GAAEO,KAAEL,GAAE,QAAQ,CAACD,KAAEI,IAAEL,EAAC,CAAC,GAAEQ,KAAEF,GAAE,IAAIC,EAAC,EAAE,SAAS,CAAC,GAAES,KAAEd,GAAE,UAAUM,EAAC,EAAE,KAAIS,KAAE,KAAK,MAAM,KAAK,IAAIZ,KAAED,EAAC,IAAE,KAAK,IAAIH,KAAEG,EAAC,IAAE,KAAK,IAAIY,KAAEZ,EAAC,MAAI,KAAK,IAAIH,KAAEG,EAAC,IAAE,KAAK,IAAIY,KAAEZ,EAAC,EAAE,IAAEA;AAAE,iBAAC,MAAMa,EAAC,KAAG,MAAIA,QAAKA,KAAEZ,KAAE,KAAK,IAAI,KAAK,KAAG,MAAIJ,EAAC,IAAG,KAAK,SAAOO,GAAE,SAASN,GAAE,eAAe,CAAC,GAAE,KAAK,UAAQ,MAAMe,EAAC,IAAE,IAAET,GAAE,IAAEN,GAAE,QAAQ,CAACc,IAAEhB,KAAEiB,EAAC,CAAC,EAAE,GAAE,KAAK,WAAST,GAAE,IAAEF,GAAE;AAAA,cAAC,OAAK;AAAC,oBAAIY,KAAEf,GAAE,UAAUA,GAAE,QAAQ,KAAK,OAAO,EAAE,SAAS,CAAC,KAAK,UAAS,CAAC,CAAC,CAAC;AAAE,qBAAK,SAAOD,GAAE,mBAAmB,KAAK,OAAO,GAAE,KAAK,UAAQ,KAAK,OAAO,IAAEA,GAAE,mBAAmBgB,EAAC,EAAE;AAAA,cAAC;AAAC,mBAAK,cAAc;AAAA,YAAC,EAAC,CAAC;AAAE,gBAAI,KAAG,GAAG,OAAO,EAAC,SAAQ,EAAC,cAAa,GAAE,QAAO,MAAE,GAAE,YAAW,SAASlB,IAAEC,IAAE;AAAC,gBAAE,MAAKA,EAAC,GAAE,KAAK,YAAYD,EAAC;AAAA,YAAC,GAAE,YAAW,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAQ,GAAE,YAAW,SAASA,IAAE;AAAC,qBAAO,KAAK,YAAYA,EAAC,GAAE,KAAK,OAAO;AAAA,YAAC,GAAE,SAAQ,WAAU;AAAC,qBAAM,CAAC,KAAK,SAAS;AAAA,YAAM,GAAE,mBAAkB,SAASA,IAAE;AAAC,uBAAQC,IAAEC,IAAEC,KAAE,IAAE,GAAEC,KAAE,MAAKC,KAAE,IAAGC,KAAE,GAAEC,KAAE,KAAK,OAAO,QAAOD,KAAEC,IAAED,KAAI,UAAQE,KAAE,KAAK,OAAOF,EAAC,GAAEU,KAAE,GAAEC,KAAET,GAAE,QAAOQ,KAAEC,IAAED,MAAI;AAAC,oBAAIE,KAAEb,GAAEL,IAAEC,KAAEO,GAAEQ,KAAE,CAAC,GAAEd,KAAEM,GAAEQ,EAAC,GAAE,IAAE;AAAE,gBAAAE,KAAEf,OAAIA,KAAEe,IAAEd,KAAEC,GAAEL,IAAEC,IAAEC,EAAC;AAAA,cAAE;AAAC,qBAAOE,OAAIA,GAAE,WAAS,KAAK,KAAKD,EAAC,IAAGC;AAAA,YAAC,GAAE,WAAU,WAAU;AAAC,kBAAG,CAAC,KAAK,KAAK,OAAM,IAAI,MAAM,gDAAgD;AAAE,kBAAIJ,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,KAAE,KAAK,OAAO,CAAC,GAAEC,KAAED,GAAE;AAAO,kBAAG,CAACC,GAAE,QAAO;AAAK,mBAAIR,KAAE,GAAEC,KAAE,GAAED,KAAEQ,KAAE,GAAER,KAAI,CAAAC,MAAGM,GAAEP,EAAC,EAAE,WAAWO,GAAEP,KAAE,CAAC,CAAC,IAAE;AAAE,kBAAG,MAAIC,GAAE,QAAO,KAAK,KAAK,mBAAmBM,GAAE,CAAC,CAAC;AAAE,mBAAIP,KAAE,GAAEG,KAAE,GAAEH,KAAEQ,KAAE,GAAER,KAAI,KAAGI,KAAEG,GAAEP,EAAC,GAAEK,KAAEE,GAAEP,KAAE,CAAC,IAAGG,MAAGD,KAAEE,GAAE,WAAWC,EAAC,KAAGJ,GAAE,QAAOK,MAAGH,KAAEF,MAAGC,IAAE,KAAK,KAAK,mBAAmB,CAACG,GAAE,IAAEC,MAAGD,GAAE,IAAED,GAAE,IAAGC,GAAE,IAAEC,MAAGD,GAAE,IAAED,GAAE,EAAE,CAAC;AAAA,YAAC,GAAE,WAAU,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAO,GAAE,WAAU,SAASJ,IAAEC,IAAE;AAAC,qBAAOA,KAAEA,MAAG,KAAK,cAAc,GAAED,KAAE,EAAEA,EAAC,GAAEC,GAAE,KAAKD,EAAC,GAAE,KAAK,QAAQ,OAAOA,EAAC,GAAE,KAAK,OAAO;AAAA,YAAC,GAAE,aAAY,SAASA,IAAE;AAAC,mBAAK,UAAQ,IAAI,KAAE,KAAK,WAAS,KAAK,gBAAgBA,EAAC;AAAA,YAAC,GAAE,eAAc,WAAU;AAAC,qBAAO,GAAG,KAAK,QAAQ,IAAE,KAAK,WAAS,KAAK,SAAS,CAAC;AAAA,YAAC,GAAE,iBAAgB,SAASA,IAAE;AAAC,uBAAQC,KAAE,CAAC,GAAEC,KAAE,GAAGF,EAAC,GAAEG,KAAE,GAAEC,KAAEJ,GAAE,QAAOG,KAAEC,IAAED,KAAI,CAAAD,MAAGD,GAAEE,EAAC,IAAE,EAAEH,GAAEG,EAAC,CAAC,GAAE,KAAK,QAAQ,OAAOF,GAAEE,EAAC,CAAC,KAAGF,GAAEE,EAAC,IAAE,KAAK,gBAAgBH,GAAEG,EAAC,CAAC;AAAE,qBAAOF;AAAA,YAAC,GAAE,UAAS,WAAU;AAAC,kBAAID,KAAE,IAAI;AAAE,mBAAK,SAAO,CAAC,GAAE,KAAK,gBAAgB,KAAK,UAAS,KAAK,QAAOA,EAAC,GAAE,KAAK,QAAQ,QAAQ,KAAGA,GAAE,QAAQ,MAAI,KAAK,eAAaA,IAAE,KAAK,cAAc;AAAA,YAAE,GAAE,eAAc,WAAU;AAAC,kBAAIA,KAAE,KAAK,gBAAgB,GAAEC,KAAE,IAAI,EAAED,IAAEA,EAAC;AAAE,mBAAK,YAAU,IAAI,EAAE,CAAC,KAAK,aAAa,IAAI,SAASC,EAAC,GAAE,KAAK,aAAa,IAAI,IAAIA,EAAC,CAAC,CAAC;AAAA,YAAC,GAAE,iBAAgB,SAASD,IAAEC,IAAEC,IAAE;AAAC,kBAAIC,IAAEC,IAAEC,KAAEL,GAAE,CAAC,aAAY,GAAEM,KAAEN,GAAE;AAAO,kBAAGK,IAAE;AAAC,qBAAID,KAAE,CAAC,GAAED,KAAE,GAAEA,KAAEG,IAAEH,KAAI,CAAAC,GAAED,EAAC,IAAE,KAAK,KAAK,mBAAmBH,GAAEG,EAAC,CAAC,GAAED,GAAE,OAAOE,GAAED,EAAC,CAAC;AAAE,gBAAAF,GAAE,KAAKG,EAAC;AAAA,cAAC,MAAM,MAAID,KAAE,GAAEA,KAAEG,IAAEH,KAAI,MAAK,gBAAgBH,GAAEG,EAAC,GAAEF,IAAEC,EAAC;AAAA,YAAC,GAAE,aAAY,WAAU;AAAC,kBAAIF,KAAE,KAAK,UAAU;AAAQ,kBAAG,KAAK,SAAO,CAAC,GAAE,KAAK,aAAW,KAAK,UAAU,WAAWA,EAAC,EAAE,KAAG,KAAK,QAAQ,OAAO,MAAK,SAAO,KAAK;AAAA,mBAAW;AAAC,oBAAIC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,KAAE,KAAK;AAAO,qBAAIP,KAAE,GAAEE,KAAE,GAAEC,KAAE,KAAK,OAAO,QAAOH,KAAEG,IAAEH,KAAI,MAAIC,KAAE,GAAEG,MAAGE,KAAE,KAAK,OAAON,EAAC,GAAG,QAAOC,KAAEG,KAAE,GAAEH,KAAI,EAACI,KAAE,GAAGC,GAAEL,EAAC,GAAEK,GAAEL,KAAE,CAAC,GAAEF,IAAEE,IAAE,IAAE,OAAKM,GAAEL,EAAC,IAAEK,GAAEL,EAAC,KAAG,CAAC,GAAEK,GAAEL,EAAC,EAAE,KAAKG,GAAE,CAAC,CAAC,GAAEA,GAAE,CAAC,MAAIC,GAAEL,KAAE,CAAC,KAAGA,OAAIG,KAAE,MAAIG,GAAEL,EAAC,EAAE,KAAKG,GAAE,CAAC,CAAC,GAAEH;AAAA,cAAK;AAAA,YAAC,GAAE,iBAAgB,WAAU;AAAC,uBAAQH,KAAE,KAAK,QAAOC,KAAE,KAAK,QAAQ,cAAaC,KAAE,GAAEC,KAAEH,GAAE,QAAOE,KAAEC,IAAED,KAAI,CAAAF,GAAEE,EAAC,IAAE,GAAGF,GAAEE,EAAC,GAAED,EAAC;AAAA,YAAC,GAAE,SAAQ,WAAU;AAAC,mBAAK,SAAO,KAAK,YAAY,GAAE,KAAK,gBAAgB,GAAE,KAAK,YAAY;AAAA,YAAE,GAAE,aAAY,WAAU;AAAC,mBAAK,UAAU,YAAY,IAAI;AAAA,YAAC,GAAE,gBAAe,SAASD,IAAEC,IAAE;AAAC,kBAAIC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,KAAE,KAAK,gBAAgB;AAAE,kBAAG,CAAC,KAAK,aAAW,CAAC,KAAK,UAAU,SAASR,EAAC,EAAE,QAAM;AAAG,mBAAIE,KAAE,GAAEG,KAAE,KAAK,OAAO,QAAOH,KAAEG,IAAEH,KAAI,MAAIC,KAAE,GAAEC,MAAGE,MAAGC,KAAE,KAAK,OAAOL,EAAC,GAAG,UAAQ,GAAEC,KAAEG,IAAEF,KAAED,KAAI,MAAIF,MAAG,MAAIE,OAAI,GAAGH,IAAEO,GAAEH,EAAC,GAAEG,GAAEJ,EAAC,CAAC,KAAGK,GAAE,QAAM;AAAG,qBAAM;AAAA,YAAE,EAAC,CAAC;AAAE,eAAG,QAAM;AAAG,gBAAI,KAAG,GAAG,OAAO,EAAC,SAAQ,EAAC,MAAK,KAAE,GAAE,SAAQ,WAAU;AAAC,qBAAM,CAAC,KAAK,SAAS,UAAQ,CAAC,KAAK,SAAS,CAAC,EAAE;AAAA,YAAM,GAAE,WAAU,WAAU;AAAC,kBAAG,CAAC,KAAK,KAAK,OAAM,IAAI,MAAM,gDAAgD;AAAE,kBAAIR,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEQ,KAAE,KAAK,OAAO,CAAC,GAAEC,KAAED,GAAE;AAAO,kBAAG,CAACC,GAAE,QAAO;AAAK,mBAAIZ,KAAEC,KAAEC,KAAE,GAAEP,KAAE,GAAEC,KAAEgB,KAAE,GAAEjB,KAAEiB,IAAEhB,KAAED,KAAI,CAAAE,KAAEc,GAAEhB,EAAC,GAAEG,KAAEa,GAAEf,EAAC,GAAEG,KAAEF,GAAE,IAAEC,GAAE,IAAEA,GAAE,IAAED,GAAE,GAAEI,OAAIJ,GAAE,IAAEC,GAAE,KAAGC,IAAEG,OAAIL,GAAE,IAAEC,GAAE,KAAGC,IAAEC,MAAG,IAAED;AAAE,qBAAOI,KAAE,MAAIH,KAAEW,GAAE,CAAC,IAAE,CAACV,KAAED,IAAEE,KAAEF,EAAC,GAAE,KAAK,KAAK,mBAAmBG,EAAC;AAAA,YAAC,GAAE,iBAAgB,SAASR,IAAE;AAAC,kBAAIC,KAAE,GAAG,UAAU,gBAAgB,KAAK,MAAKD,EAAC,GAAEE,KAAED,GAAE;AAAO,qBAAOC,MAAG,KAAGD,GAAE,CAAC,aAAY,KAAGA,GAAE,CAAC,EAAE,OAAOA,GAAEC,KAAE,CAAC,CAAC,KAAGD,GAAE,IAAI,GAAEA;AAAA,YAAC,GAAE,aAAY,SAASD,IAAE;AAAC,iBAAG,UAAU,YAAY,KAAK,MAAKA,EAAC,GAAE,GAAG,KAAK,QAAQ,MAAI,KAAK,WAAS,CAAC,KAAK,QAAQ;AAAA,YAAE,GAAE,eAAc,WAAU;AAAC,qBAAO,GAAG,KAAK,SAAS,CAAC,CAAC,IAAE,KAAK,SAAS,CAAC,IAAE,KAAK,SAAS,CAAC,EAAE,CAAC;AAAA,YAAC,GAAE,aAAY,WAAU;AAAC,kBAAIA,KAAE,KAAK,UAAU,SAAQC,KAAE,KAAK,QAAQ,QAAOC,KAAE,IAAI,EAAED,IAAEA,EAAC;AAAE,kBAAGD,KAAE,IAAI,EAAEA,GAAE,IAAI,SAASE,EAAC,GAAEF,GAAE,IAAI,IAAIE,EAAC,CAAC,GAAE,KAAK,SAAO,CAAC,GAAE,KAAK,aAAW,KAAK,UAAU,WAAWF,EAAC,EAAE,KAAG,KAAK,QAAQ,OAAO,MAAK,SAAO,KAAK;AAAA,kBAAY,UAAQG,IAAEC,KAAE,GAAEC,KAAE,KAAK,OAAO,QAAOD,KAAEC,IAAED,KAAI,EAACD,KAAE,GAAG,KAAK,OAAOC,EAAC,GAAEJ,IAAE,IAAE,GAAG,UAAQ,KAAK,OAAO,KAAKG,EAAC;AAAA,YAAC,GAAE,aAAY,WAAU;AAAC,mBAAK,UAAU,YAAY,MAAK,IAAE;AAAA,YAAC,GAAE,gBAAe,SAASH,IAAE;AAAC,kBAAIC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEC,IAAEQ,KAAE;AAAG,kBAAG,CAAC,KAAK,aAAW,CAAC,KAAK,UAAU,SAAShB,EAAC,EAAE,QAAM;AAAG,mBAAII,KAAE,GAAEG,KAAE,KAAK,OAAO,QAAOH,KAAEG,IAAEH,KAAI,MAAIC,KAAE,GAAEC,MAAGE,MAAGP,KAAE,KAAK,OAAOG,EAAC,GAAG,UAAQ,GAAEC,KAAEG,IAAEF,KAAED,KAAI,CAAAH,KAAED,GAAEI,EAAC,GAAEF,KAAEF,GAAEK,EAAC,GAAEJ,GAAE,IAAEF,GAAE,KAAGG,GAAE,IAAEH,GAAE,KAAGA,GAAE,KAAGG,GAAE,IAAED,GAAE,MAAIF,GAAE,IAAEE,GAAE,MAAIC,GAAE,IAAED,GAAE,KAAGA,GAAE,MAAIc,KAAE,CAACA;AAAG,qBAAOA,MAAG,GAAG,UAAU,eAAe,KAAK,MAAKhB,IAAE,IAAE;AAAA,YAAC,EAAC,CAAC;AAAE,gBAAI,KAAG,GAAG,OAAO,EAAC,YAAW,SAASA,IAAEC,IAAE;AAAC,gBAAE,MAAKA,EAAC,GAAE,KAAK,UAAQ,CAAC,GAAED,MAAG,KAAK,QAAQA,EAAC;AAAA,YAAC,GAAE,SAAQ,SAASA,IAAE;AAAC,kBAAIC,IAAEC,IAAEC,IAAEC,KAAE,EAAEJ,EAAC,IAAEA,KAAEA,GAAE;AAAS,kBAAGI,IAAE;AAAC,qBAAIH,KAAE,GAAEC,KAAEE,GAAE,QAAOH,KAAEC,IAAED,KAAI,GAAEE,KAAEC,GAAEH,EAAC,GAAG,cAAYE,GAAE,YAAUA,GAAE,YAAUA,GAAE,gBAAc,KAAK,QAAQA,EAAC;AAAE,uBAAO;AAAA,cAAI;AAAC,kBAAIE,KAAE,KAAK;AAAQ,kBAAGA,GAAE,UAAQ,CAACA,GAAE,OAAOL,EAAC,EAAE,QAAO;AAAK,kBAAIM,KAAE,GAAGN,IAAEK,EAAC;AAAE,qBAAOC,MAAGA,GAAE,UAAQ,GAAGN,EAAC,GAAEM,GAAE,iBAAeA,GAAE,SAAQ,KAAK,WAAWA,EAAC,GAAED,GAAE,iBAAeA,GAAE,cAAcL,IAAEM,EAAC,GAAE,KAAK,SAASA,EAAC,KAAG;AAAA,YAAI,GAAE,YAAW,SAASN,IAAE;AAAC,qBAAO,WAASA,KAAE,KAAK,UAAU,KAAK,YAAW,IAAI,KAAGA,GAAE,UAAQC,GAAE,CAAC,GAAED,GAAE,cAAc,GAAE,KAAK,eAAeA,IAAE,KAAK,QAAQ,KAAK,GAAE;AAAA,YAAK,GAAE,UAAS,SAASA,IAAE;AAAC,qBAAO,KAAK,WAAW,SAASC,IAAE;AAAC,qBAAK,eAAeA,IAAED,EAAC;AAAA,cAAC,IAAG,IAAI;AAAA,YAAC,GAAE,gBAAe,SAASA,IAAEC,IAAE;AAAC,cAAAD,GAAE,aAAW,cAAY,OAAOC,OAAIA,KAAEA,GAAED,GAAE,OAAO,IAAGA,GAAE,SAASC,EAAC;AAAA,YAAE,EAAC,CAAC;AAAE,qBAAS,GAAGD,IAAEC,IAAE;AAAC,kBAAIC,IAAEC,IAAEC,IAAEC,IAAEC,KAAE,cAAYN,GAAE,OAAKA,GAAE,WAASA,IAAEO,KAAED,KAAEA,GAAE,cAAY,MAAKE,KAAE,CAAC,GAAEQ,KAAEf,MAAGA,GAAE,cAAagB,KAAEhB,MAAGA,GAAE,kBAAgB;AAAG,kBAAG,CAACM,MAAG,CAACD,GAAE,QAAO;AAAK,sBAAOA,GAAE,MAAK;AAAA,gBAAC,KAAI;AAAQ,yBAAO,GAAGU,IAAEhB,IAAEE,KAAEe,GAAEV,EAAC,GAAEN,EAAC;AAAA,gBAAE,KAAI;AAAa,uBAAIG,KAAE,GAAEC,KAAEE,GAAE,QAAOH,KAAEC,IAAED,KAAI,CAAAF,KAAEe,GAAEV,GAAEH,EAAC,CAAC,GAAEI,GAAE,KAAK,GAAGQ,IAAEhB,IAAEE,IAAED,EAAC,CAAC;AAAE,yBAAO,IAAI,GAAGO,EAAC;AAAA,gBAAE,KAAI;AAAA,gBAAa,KAAI;AAAkB,yBAAOL,KAAE,GAAGI,IAAE,iBAAeD,GAAE,OAAK,IAAE,GAAEW,EAAC,GAAE,IAAI,GAAGd,IAAEF,EAAC;AAAA,gBAAE,KAAI;AAAA,gBAAU,KAAI;AAAe,yBAAOE,KAAE,GAAGI,IAAE,cAAYD,GAAE,OAAK,IAAE,GAAEW,EAAC,GAAE,IAAI,GAAGd,IAAEF,EAAC;AAAA,gBAAE,KAAI;AAAqB,uBAAIG,KAAE,GAAEC,KAAEC,GAAE,WAAW,QAAOF,KAAEC,IAAED,MAAI;AAAC,wBAAIc,KAAE,GAAG,EAAC,UAASZ,GAAE,WAAWF,EAAC,GAAE,MAAK,WAAU,YAAWJ,GAAE,WAAU,GAAEC,EAAC;AAAE,oBAAAiB,MAAGV,GAAE,KAAKU,EAAC;AAAA,kBAAC;AAAC,yBAAO,IAAI,GAAGV,EAAC;AAAA,gBAAE;AAAQ,wBAAM,IAAI,MAAM,yBAAyB;AAAA,cAAC;AAAA,YAAC;AAAC,qBAAS,GAAGR,IAAEC,IAAEC,IAAEC,IAAE;AAAC,qBAAOH,KAAEA,GAAEC,IAAEC,EAAC,IAAE,IAAI,GAAGA,IAAEC,MAAGA,GAAE,yBAAuBA,EAAC;AAAA,YAAC;AAAC,qBAAS,GAAGH,IAAE;AAAC,qBAAO,IAAI,EAAEA,GAAE,CAAC,GAAEA,GAAE,CAAC,GAAEA,GAAE,CAAC,CAAC;AAAA,YAAC;AAAC,qBAAS,GAAGA,IAAEC,IAAEC,IAAE;AAAC,uBAAQC,IAAEC,KAAE,CAAC,GAAEC,KAAE,GAAEC,KAAEN,GAAE,QAAOK,KAAEC,IAAED,KAAI,CAAAF,KAAEF,KAAE,GAAGD,GAAEK,EAAC,GAAEJ,KAAE,GAAEC,EAAC,KAAGA,MAAG,IAAIF,GAAEK,EAAC,CAAC,GAAED,GAAE,KAAKD,EAAC;AAAE,qBAAOC;AAAA,YAAC;AAAC,qBAAS,GAAGJ,IAAEC,IAAE;AAAC,qBAAOA,KAAE,YAAU,OAAOA,KAAEA,KAAE,GAAE,WAASD,GAAE,MAAI,CAAC,EAAEA,GAAE,KAAIC,EAAC,GAAE,EAAED,GAAE,KAAIC,EAAC,GAAE,EAAED,GAAE,KAAIC,EAAC,CAAC,IAAE,CAAC,EAAED,GAAE,KAAIC,EAAC,GAAE,EAAED,GAAE,KAAIC,EAAC,CAAC;AAAA,YAAC;AAAC,qBAAS,GAAGD,IAAEC,IAAEC,IAAEC,IAAE;AAAC,uBAAQC,KAAE,CAAC,GAAEC,KAAE,GAAEC,KAAEN,GAAE,QAAOK,KAAEC,IAAED,KAAI,CAAAD,GAAE,KAAKH,KAAE,GAAGD,GAAEK,EAAC,GAAEJ,KAAE,GAAEC,IAAEC,EAAC,IAAE,GAAGH,GAAEK,EAAC,GAAEF,EAAC,CAAC;AAAE,qBAAM,CAACF,MAAGC,MAAGE,GAAE,KAAKA,GAAE,CAAC,CAAC,GAAEA;AAAA,YAAC;AAAC,qBAAS,GAAGJ,IAAEE,IAAE;AAAC,qBAAOF,GAAE,UAAQC,GAAE,CAAC,GAAED,GAAE,SAAQ,EAAC,UAASE,GAAC,CAAC,IAAE,GAAGA,EAAC;AAAA,YAAC;AAAC,qBAAS,GAAGF,IAAE;AAAC,qBAAM,cAAYA,GAAE,QAAM,wBAAsBA,GAAE,OAAKA,KAAE,EAAC,MAAK,WAAU,YAAW,CAAC,GAAE,UAASA,GAAC;AAAA,YAAC;AAAC,gBAAI,KAAG,EAAC,WAAU,SAASA,IAAE;AAAC,qBAAO,GAAG,MAAK,EAAC,MAAK,SAAQ,aAAY,GAAG,KAAK,UAAU,GAAEA,EAAC,EAAC,CAAC;AAAA,YAAC,EAAC;AAAE,qBAAS,GAAGA,IAAEC,IAAE;AAAC,qBAAO,IAAI,GAAGD,IAAEC,EAAC;AAAA,YAAC;AAAC,eAAG,QAAQ,EAAE,GAAE,GAAG,QAAQ,EAAE,GAAE,GAAG,QAAQ,EAAE,GAAE,GAAG,QAAQ,EAAC,WAAU,SAASD,IAAE;AAAC,kBAAIC,KAAE,CAAC,GAAG,KAAK,QAAQ;AAAE,qBAAO,GAAG,MAAK,EAAC,OAAMA,KAAE,UAAQ,MAAI,cAAa,aAAY,GAAG,KAAK,UAASA,KAAE,IAAE,GAAE,OAAGD,EAAC,EAAC,CAAC;AAAA,YAAC,EAAC,CAAC,GAAE,GAAG,QAAQ,EAAC,WAAU,SAASA,IAAE;AAAC,kBAAIC,KAAE,CAAC,GAAG,KAAK,QAAQ,GAAEC,KAAED,MAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,GAAEE,KAAE,GAAG,KAAK,UAASD,KAAE,IAAED,KAAE,IAAE,GAAE,MAAGD,EAAC;AAAE,qBAAOC,OAAIE,KAAE,CAACA,EAAC,IAAG,GAAG,MAAK,EAAC,OAAMD,KAAE,UAAQ,MAAI,WAAU,aAAYC,GAAC,CAAC;AAAA,YAAC,EAAC,CAAC,GAAE,GAAG,QAAQ,EAAC,cAAa,SAASH,IAAE;AAAC,kBAAIC,KAAE,CAAC;AAAE,qBAAO,KAAK,WAAW,SAASC,IAAE;AAAC,gBAAAD,GAAE,KAAKC,GAAE,UAAUF,EAAC,EAAE,SAAS,WAAW;AAAA,cAAC,EAAE,GAAE,GAAG,MAAK,EAAC,MAAK,cAAa,aAAYC,GAAC,CAAC;AAAA,YAAC,GAAE,WAAU,SAASD,IAAE;AAAC,kBAAIC,KAAE,KAAK,WAAS,KAAK,QAAQ,YAAU,KAAK,QAAQ,SAAS;AAAK,kBAAG,iBAAeA,GAAE,QAAO,KAAK,aAAaD,EAAC;AAAE,kBAAIE,KAAE,yBAAuBD,IAAEE,KAAE,CAAC;AAAE,qBAAO,KAAK,WAAW,SAASF,IAAE;AAAC,oBAAGA,GAAE,WAAU;AAAC,sBAAIG,KAAEH,GAAE,UAAUD,EAAC;AAAE,sBAAGE,GAAE,CAAAC,GAAE,KAAKC,GAAE,QAAQ;AAAA,uBAAM;AAAC,wBAAIC,KAAE,GAAGD,EAAC;AAAE,4CAAsBC,GAAE,OAAKF,GAAE,KAAK,MAAMA,IAAEE,GAAE,QAAQ,IAAEF,GAAE,KAAKE,EAAC;AAAA,kBAAC;AAAA,gBAAC;AAAA,cAAC,EAAE,GAAEH,KAAE,GAAG,MAAK,EAAC,YAAWC,IAAE,MAAK,qBAAoB,CAAC,IAAE,EAAC,MAAK,qBAAoB,UAASA,GAAC;AAAA,YAAC,EAAC,CAAC;AAAE,gBAAI,KAAG,IAAG,KAAG,GAAG,OAAO,EAAC,SAAQ,EAAC,SAAQ,GAAE,KAAI,IAAG,aAAY,OAAG,aAAY,OAAG,iBAAgB,IAAG,QAAO,GAAE,WAAU,GAAE,GAAE,YAAW,SAASH,IAAEC,IAAEC,IAAE;AAAC,mBAAK,OAAKF,IAAE,KAAK,UAAQ,EAAEC,EAAC,GAAE,EAAE,MAAKC,EAAC;AAAA,YAAC,GAAE,OAAM,WAAU;AAAC,mBAAK,WAAS,KAAK,WAAW,GAAE,KAAK,QAAQ,UAAQ,KAAG,KAAK,eAAe,IAAG,KAAK,QAAQ,gBAAca,IAAG,KAAK,QAAO,qBAAqB,GAAE,KAAK,qBAAqB,KAAK,MAAM,IAAG,KAAK,QAAQ,EAAE,YAAY,KAAK,MAAM,GAAE,KAAK,OAAO;AAAA,YAAC,GAAE,UAAS,WAAU;AAAC,iBAAG,KAAK,MAAM,GAAE,KAAK,QAAQ,eAAa,KAAK,wBAAwB,KAAK,MAAM;AAAA,YAAC,GAAE,YAAW,SAASf,IAAE;AAAC,qBAAO,KAAK,QAAQ,UAAQA,IAAE,KAAK,UAAQ,KAAK,eAAe,GAAE;AAAA,YAAI,GAAE,UAAS,SAASA,IAAE;AAAC,qBAAOA,GAAE,WAAS,KAAK,WAAWA,GAAE,OAAO,GAAE;AAAA,YAAI,GAAE,cAAa,WAAU;AAAC,qBAAO,KAAK,QAAM,GAAG,KAAK,MAAM,GAAE;AAAA,YAAI,GAAE,aAAY,WAAU;AAAC,qBAAO,KAAK,QAAMc,IAAG,KAAK,MAAM,GAAE;AAAA,YAAI,GAAE,QAAO,SAASd,IAAE;AAAC,qBAAO,KAAK,OAAKA,IAAE,KAAK,WAAS,KAAK,OAAO,MAAIA,KAAG;AAAA,YAAI,GAAE,WAAU,SAASA,IAAE;AAAC,qBAAO,KAAK,UAAQ,EAAEA,EAAC,GAAE,KAAK,QAAM,KAAK,OAAO,GAAE;AAAA,YAAI,GAAE,WAAU,WAAU;AAAC,kBAAIA,KAAE,EAAC,MAAK,KAAK,QAAO,WAAU,KAAK,OAAM;AAAE,qBAAO,KAAK,kBAAgBA,GAAE,WAAS,KAAK,eAAcA;AAAA,YAAC,GAAE,WAAU,SAASA,IAAE;AAAC,qBAAO,KAAK,QAAQ,SAAOA,IAAE,KAAK,cAAc,GAAE;AAAA,YAAI,GAAE,WAAU,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAO,GAAE,YAAW,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAM,GAAE,YAAW,WAAU;AAAC,kBAAIA,KAAE,UAAQ,KAAK,KAAK,SAAQC,KAAE,KAAK,SAAOD,KAAE,KAAK,OAAKa,IAAG,KAAK;AAAE,cAAAE,IAAGd,IAAE,qBAAqB,GAAE,KAAK,iBAAec,IAAGd,IAAE,uBAAuB,GAAE,KAAK,QAAQ,aAAWc,IAAGd,IAAE,KAAK,QAAQ,SAAS,GAAEA,GAAE,gBAAc,GAAEA,GAAE,cAAY,GAAEA,GAAE,SAAOE,GAAE,KAAK,MAAK,MAAK,MAAM,GAAEF,GAAE,UAAQE,GAAE,KAAK,iBAAgB,MAAK,OAAO,IAAG,KAAK,QAAQ,eAAa,OAAK,KAAK,QAAQ,iBAAeF,GAAE,cAAY,SAAK,KAAK,QAAQ,cAAY,KAAG,KAAK,QAAQ,cAAa,KAAK,QAAQ,UAAQ,KAAK,cAAc,GAAED,KAAE,KAAK,OAAKC,GAAE,OAAKA,GAAE,MAAI,KAAK,MAAKA,GAAE,MAAI,KAAK,QAAQ;AAAA,YAAI,GAAE,cAAa,SAASD,IAAE;AAAC,kBAAIC,KAAE,KAAK,KAAK,aAAaD,GAAE,IAAI,GAAEE,KAAE,KAAK,KAAK,8BAA8B,KAAK,SAAQF,GAAE,MAAKA,GAAE,MAAM,EAAE;AAAI,iBAAG,KAAK,QAAOE,IAAED,EAAC;AAAA,YAAC,GAAE,QAAO,WAAU;AAAC,kBAAID,KAAE,KAAK,QAAOC,KAAE,IAAI,EAAE,KAAK,KAAK,mBAAmB,KAAK,QAAQ,aAAa,CAAC,GAAE,KAAK,KAAK,mBAAmB,KAAK,QAAQ,aAAa,CAAC,CAAC,GAAEC,KAAED,GAAE,QAAQ;AAAE,iBAAGD,IAAEC,GAAE,GAAG,GAAED,GAAE,MAAM,QAAME,GAAE,IAAE,MAAKF,GAAE,MAAM,SAAOE,GAAE,IAAE;AAAA,YAAI,GAAE,gBAAe,WAAU;AAAC,iBAAG,KAAK,QAAO,KAAK,QAAQ,OAAO;AAAA,YAAC,GAAE,eAAc,WAAU;AAAC,mBAAK,UAAQ,WAAS,KAAK,QAAQ,UAAQ,SAAO,KAAK,QAAQ,WAAS,KAAK,OAAO,MAAM,SAAO,KAAK,QAAQ;AAAA,YAAO,GAAE,iBAAgB,WAAU;AAAC,mBAAK,KAAK,OAAO;AAAE,kBAAIF,KAAE,KAAK,QAAQ;AAAgB,cAAAA,MAAG,KAAK,SAAOA,OAAI,KAAK,OAAKA,IAAE,KAAK,OAAO,MAAIA;AAAA,YAAE,EAAC,CAAC,GAAE,KAAG,GAAG,OAAO,EAAC,SAAQ,EAAC,UAAS,MAAG,MAAK,MAAG,iBAAgB,MAAG,OAAM,MAAE,GAAE,YAAW,WAAU;AAAC,kBAAIA,KAAE,YAAU,KAAK,KAAK,SAAQC,KAAE,KAAK,SAAOD,KAAE,KAAK,OAAKa,IAAG,OAAO;AAAE,kBAAGE,IAAGd,IAAE,qBAAqB,GAAE,KAAK,iBAAec,IAAGd,IAAE,uBAAuB,GAAE,KAAK,QAAQ,aAAWc,IAAGd,IAAE,KAAK,QAAQ,SAAS,GAAEA,GAAE,gBAAc,GAAEA,GAAE,cAAY,GAAEA,GAAE,eAAaE,GAAE,KAAK,MAAK,MAAK,MAAM,GAAEH,IAAE;AAAC,yBAAQE,KAAED,GAAE,qBAAqB,QAAQ,GAAEG,KAAE,CAAC,GAAEC,KAAE,GAAEA,KAAEH,GAAE,QAAOG,KAAI,CAAAD,GAAE,KAAKF,GAAEG,EAAC,EAAE,GAAG;AAAE,qBAAK,OAAKH,GAAE,SAAO,IAAEE,KAAE,CAACH,GAAE,GAAG;AAAA,cAAC,OAAK;AAAC,kBAAE,KAAK,IAAI,MAAI,KAAK,OAAK,CAAC,KAAK,IAAI,IAAG,CAAC,KAAK,QAAQ,mBAAiB,OAAO,UAAU,eAAe,KAAKA,GAAE,OAAM,WAAW,MAAIA,GAAE,MAAM,YAAU,SAAQA,GAAE,WAAS,CAAC,CAAC,KAAK,QAAQ,UAASA,GAAE,OAAK,CAAC,CAAC,KAAK,QAAQ,MAAKA,GAAE,QAAM,CAAC,CAAC,KAAK,QAAQ;AAAM,yBAAQK,KAAE,GAAEA,KAAE,KAAK,KAAK,QAAOA,MAAI;AAAC,sBAAIC,KAAEM,IAAG,QAAQ;AAAE,kBAAAN,GAAE,MAAI,KAAK,KAAKD,EAAC,GAAEL,GAAE,YAAYM,EAAC;AAAA,gBAAC;AAAA,cAAC;AAAA,YAAC,EAAC,CAAC;AAAE,gBAAI,KAAG,GAAG,OAAO,EAAC,YAAW,WAAU;AAAC,kBAAIP,KAAE,KAAK,SAAO,KAAK;AAAK,cAAAe,IAAGf,IAAE,qBAAqB,GAAE,KAAK,iBAAee,IAAGf,IAAE,uBAAuB,GAAE,KAAK,QAAQ,aAAWe,IAAGf,IAAE,KAAK,QAAQ,SAAS,GAAEA,GAAE,gBAAc,GAAEA,GAAE,cAAY;AAAA,YAAC,EAAC,CAAC;AAAE,gBAAI,KAAG,GAAG,OAAO,EAAC,SAAQ,EAAC,QAAO,CAAC,GAAE,CAAC,GAAE,WAAU,IAAG,MAAK,YAAW,GAAE,YAAW,SAASA,IAAEC,IAAE;AAAC,gBAAE,MAAKD,EAAC,GAAE,KAAK,UAAQC;AAAA,YAAC,GAAE,OAAM,SAASD,IAAE;AAAC,mBAAK,gBAAcA,GAAE,eAAc,KAAK,cAAY,KAAK,YAAY,GAAEA,GAAE,iBAAe,GAAG,KAAK,YAAW,CAAC,GAAE,aAAa,KAAK,cAAc,GAAE,KAAK,QAAQ,EAAE,YAAY,KAAK,UAAU,GAAE,KAAK,OAAO,GAAEA,GAAE,iBAAe,GAAG,KAAK,YAAW,CAAC,GAAE,KAAK,aAAa;AAAA,YAAC,GAAE,UAAS,SAASA,IAAE;AAAC,cAAAA,GAAE,iBAAe,GAAG,KAAK,YAAW,CAAC,GAAE,KAAK,iBAAe,WAAWG,GAAE,IAAG,QAAO,KAAK,UAAU,GAAE,GAAG,KAAG,GAAG,KAAK,UAAU;AAAA,YAAC,GAAE,WAAU,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAO,GAAE,WAAU,SAASH,IAAE;AAAC,qBAAO,KAAK,UAAQ,EAAEA,EAAC,GAAE,KAAK,SAAO,KAAK,gBAAgB,GAAE,KAAK,WAAW,IAAG;AAAA,YAAI,GAAE,YAAW,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAQ,GAAE,YAAW,SAASA,IAAE;AAAC,qBAAO,KAAK,WAASA,IAAE,KAAK,OAAO,GAAE;AAAA,YAAI,GAAE,YAAW,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAU,GAAE,QAAO,WAAU;AAAC,mBAAK,SAAO,KAAK,WAAW,MAAM,aAAW,UAAS,KAAK,eAAe,GAAE,KAAK,cAAc,GAAE,KAAK,gBAAgB,GAAE,KAAK,WAAW,MAAM,aAAW,IAAG,KAAK,WAAW;AAAA,YAAE,GAAE,WAAU,WAAU;AAAC,kBAAIA,KAAE,EAAC,MAAK,KAAK,iBAAgB,WAAU,KAAK,gBAAe;AAAE,qBAAO,KAAK,kBAAgBA,GAAE,WAAS,KAAK,eAAcA;AAAA,YAAC,GAAE,QAAO,WAAU;AAAC,qBAAM,CAAC,CAAC,KAAK,QAAM,KAAK,KAAK,SAAS,IAAI;AAAA,YAAC,GAAE,cAAa,WAAU;AAAC,qBAAO,KAAK,QAAM,GAAG,KAAK,UAAU,GAAE;AAAA,YAAI,GAAE,aAAY,WAAU;AAAC,qBAAO,KAAK,QAAMc,IAAG,KAAK,UAAU,GAAE;AAAA,YAAI,GAAE,cAAa,SAASd,IAAEC,IAAEC,IAAE;AAAC,kBAAGD,cAAa,OAAKC,KAAED,IAAEA,KAAED,KAAGC,cAAa,GAAG,UAAQE,MAAKH,GAAE,SAAQ;AAAC,gBAAAC,KAAED,GAAE,QAAQG,EAAC;AAAE;AAAA,cAAK;AAAC,kBAAG,CAACD,GAAE,KAAGD,GAAE,UAAU,CAAAC,KAAED,GAAE,UAAU;AAAA,mBAAM;AAAC,oBAAG,CAACA,GAAE,UAAU,OAAM,IAAI,MAAM,oCAAoC;AAAE,gBAAAC,KAAED,GAAE,UAAU;AAAA,cAAC;AAAC,qBAAO,KAAK,UAAQA,IAAE,KAAK,OAAO,GAAEC;AAAA,YAAC,GAAE,gBAAe,WAAU;AAAC,kBAAG,KAAK,UAAS;AAAC,oBAAIF,KAAE,KAAK,cAAaC,KAAE,cAAY,OAAO,KAAK,WAAS,KAAK,SAAS,KAAK,WAAS,IAAI,IAAE,KAAK;AAAS,oBAAG,YAAU,OAAOA,GAAE,CAAAD,GAAE,YAAUC;AAAA,qBAAM;AAAC,yBAAKD,GAAE,cAAc,IAAG,CAAAA,GAAE,YAAYA,GAAE,UAAU;AAAE,kBAAAA,GAAE,YAAYC,EAAC;AAAA,gBAAC;AAAC,qBAAK,KAAK,eAAe;AAAA,cAAC;AAAA,YAAC,GAAE,iBAAgB,WAAU;AAAC,kBAAG,KAAK,MAAK;AAAC,oBAAID,KAAE,KAAK,KAAK,mBAAmB,KAAK,OAAO,GAAEC,KAAE,EAAE,KAAK,QAAQ,MAAM,GAAEC,KAAE,KAAK,WAAW;AAAE,qBAAK,gBAAc,GAAG,KAAK,YAAWF,GAAE,IAAIE,EAAC,CAAC,IAAED,KAAEA,GAAE,IAAID,EAAC,EAAE,IAAIE,EAAC;AAAE,oBAAIC,KAAE,KAAK,mBAAiB,CAACF,GAAE,GAAEG,KAAE,KAAK,iBAAe,CAAC,KAAK,MAAM,KAAK,kBAAgB,CAAC,IAAEH,GAAE;AAAE,qBAAK,WAAW,MAAM,SAAOE,KAAE,MAAK,KAAK,WAAW,MAAM,OAAKC,KAAE;AAAA,cAAI;AAAA,YAAC,GAAE,YAAW,WAAU;AAAC,qBAAM,CAAC,GAAE,CAAC;AAAA,YAAC,EAAC,CAAC,GAAE,KAAG,GAAG,OAAO,EAAC,SAAQ,EAAC,UAAS,KAAI,UAAS,IAAG,WAAU,MAAK,SAAQ,MAAG,uBAAsB,MAAK,2BAA0B,MAAK,gBAAe,CAAC,GAAE,CAAC,GAAE,YAAW,OAAG,aAAY,MAAG,WAAU,MAAG,kBAAiB,MAAG,WAAU,GAAE,GAAE,QAAO,SAASJ,IAAE;AAAC,qBAAOA,GAAE,UAAU,IAAI,GAAE;AAAA,YAAI,GAAE,OAAM,SAASA,IAAE;AAAC,iBAAG,UAAU,MAAM,KAAK,MAAKA,EAAC,GAAEA,GAAE,KAAK,aAAY,EAAC,OAAM,KAAI,CAAC,GAAE,KAAK,YAAU,KAAK,QAAQ,KAAK,aAAY,EAAC,OAAM,KAAI,GAAE,IAAE,GAAE,KAAK,mBAAmB,MAAI,KAAK,QAAQ,GAAG,YAAW,EAAE;AAAA,YAAE,GAAE,UAAS,SAASA,IAAE;AAAC,iBAAG,UAAU,SAAS,KAAK,MAAKA,EAAC,GAAEA,GAAE,KAAK,cAAa,EAAC,OAAM,KAAI,CAAC,GAAE,KAAK,YAAU,KAAK,QAAQ,KAAK,cAAa,EAAC,OAAM,KAAI,GAAE,IAAE,GAAE,KAAK,mBAAmB,MAAI,KAAK,QAAQ,IAAI,YAAW,EAAE;AAAA,YAAE,GAAE,WAAU,WAAU;AAAC,kBAAIA,KAAE,GAAG,UAAU,UAAU,KAAK,IAAI;AAAE,sBAAO,WAAS,KAAK,QAAQ,eAAa,KAAK,QAAQ,eAAa,KAAK,KAAK,QAAQ,uBAAqBA,GAAE,WAAS,KAAK,SAAQ,KAAK,QAAQ,eAAaA,GAAE,UAAQ,KAAK,aAAYA;AAAA,YAAC,GAAE,QAAO,WAAU;AAAC,mBAAK,QAAM,KAAK,KAAK,WAAW,IAAI;AAAA,YAAC,GAAE,aAAY,WAAU;AAAC,kBAAIA,KAAE,iBAAgBC,KAAE,KAAK,aAAWY,IAAG,OAAMb,KAAE,OAAK,KAAK,QAAQ,aAAW,MAAI,wBAAwB,GAAEE,KAAE,KAAK,WAASW,IAAG,OAAMb,KAAE,oBAAmBC,EAAC;AAAE,kBAAG,KAAK,eAAaY,IAAG,OAAMb,KAAE,YAAWE,EAAC,GAAE,GAAGD,EAAC,GAAE,GAAG,KAAK,YAAY,GAAE,GAAGA,IAAE,eAAc,EAAE,GAAE,KAAK,gBAAcY,IAAG,OAAMb,KAAE,kBAAiBC,EAAC,GAAE,KAAK,OAAKY,IAAG,OAAMb,KAAE,QAAO,KAAK,aAAa,GAAE,KAAK,QAAQ,aAAY;AAAC,oBAAIG,KAAE,KAAK,eAAaU,IAAG,KAAIb,KAAE,iBAAgBC,EAAC;AAAE,gBAAAE,GAAE,OAAK,UAASA,GAAE,YAAU,UAAS,GAAGA,IAAE,SAAQ,KAAK,qBAAoB,IAAI;AAAA,cAAC;AAAA,YAAC,GAAE,eAAc,WAAU;AAAC,kBAAIH,KAAE,KAAK,cAAaC,KAAED,GAAE;AAAM,cAAAC,GAAE,QAAM,IAAGA,GAAE,aAAW;AAAS,kBAAIC,KAAEF,GAAE;AAAY,cAAAE,KAAE,KAAK,IAAIA,IAAE,KAAK,QAAQ,QAAQ,GAAEA,KAAE,KAAK,IAAIA,IAAE,KAAK,QAAQ,QAAQ,GAAED,GAAE,QAAMC,KAAE,IAAE,MAAKD,GAAE,aAAW,IAAGA,GAAE,SAAO;AAAG,kBAAIE,KAAEH,GAAE,cAAaI,KAAE,KAAK,QAAQ,WAAUC,KAAE;AAAyB,cAAAD,MAAGD,KAAEC,MAAGH,GAAE,SAAOG,KAAE,MAAKW,IAAGf,IAAEK,EAAC,KAAG,GAAGL,IAAEK,EAAC,GAAE,KAAK,kBAAgB,KAAK,WAAW;AAAA,YAAW,GAAE,cAAa,SAASL,IAAE;AAAC,kBAAIC,KAAE,KAAK,KAAK,uBAAuB,KAAK,SAAQD,GAAE,MAAKA,GAAE,MAAM,GAAEE,KAAE,KAAK,WAAW;AAAE,iBAAG,KAAK,YAAWD,GAAE,IAAIC,EAAC,CAAC;AAAA,YAAC,GAAE,YAAW,WAAU;AAAC,kBAAG,KAAK,QAAQ,SAAQ;AAAC,qBAAK,KAAK,YAAU,KAAK,KAAK,SAAS,KAAK;AAAE,oBAAIF,KAAE,KAAK,MAAKC,KAAE,SAAS,GAAG,KAAK,YAAW,cAAc,GAAE,EAAE,KAAG,GAAEC,KAAE,KAAK,WAAW,eAAaD,IAAEE,KAAE,KAAK,iBAAgBC,KAAE,IAAI,EAAE,KAAK,gBAAe,CAACF,KAAE,KAAK,gBAAgB;AAAE,gBAAAE,GAAE,KAAK,GAAG,KAAK,UAAU,CAAC;AAAE,oBAAIC,KAAEL,GAAE,2BAA2BI,EAAC,GAAEE,KAAE,EAAE,KAAK,QAAQ,cAAc,GAAEC,KAAE,EAAE,KAAK,QAAQ,yBAAuBD,EAAC,GAAEE,KAAE,EAAE,KAAK,QAAQ,6BAA2BF,EAAC,GAAEU,KAAEhB,GAAE,QAAQ,GAAEiB,KAAE,GAAEC,KAAE;AAAE,gBAAAb,GAAE,IAAEF,KAAEK,GAAE,IAAEQ,GAAE,MAAIC,KAAEZ,GAAE,IAAEF,KAAEa,GAAE,IAAER,GAAE,IAAGH,GAAE,IAAEY,KAAEV,GAAE,IAAE,MAAIU,KAAEZ,GAAE,IAAEE,GAAE,IAAGF,GAAE,IAAEH,KAAEM,GAAE,IAAEQ,GAAE,MAAIE,KAAEb,GAAE,IAAEH,KAAEc,GAAE,IAAER,GAAE,IAAGH,GAAE,IAAEa,KAAEX,GAAE,IAAE,MAAIW,KAAEb,GAAE,IAAEE,GAAE,KAAIU,MAAGC,OAAIlB,GAAE,KAAK,cAAc,EAAE,MAAM,CAACiB,IAAEC,EAAC,CAAC;AAAA,cAAC;AAAA,YAAC,GAAE,qBAAoB,SAASlB,IAAE;AAAC,mBAAK,OAAO,GAAE,GAAGA,EAAC;AAAA,YAAC,GAAE,YAAW,WAAU;AAAC,qBAAO,EAAE,KAAK,WAAS,KAAK,QAAQ,kBAAgB,KAAK,QAAQ,gBAAgB,IAAE,CAAC,GAAE,CAAC,CAAC;AAAA,YAAC,EAAC,CAAC;AAAE,eAAG,aAAa,EAAC,mBAAkB,KAAE,CAAC,GAAE,GAAG,QAAQ,EAAC,WAAU,SAASA,IAAEC,IAAEC,IAAE;AAAC,qBAAOF,cAAa,OAAKA,KAAE,IAAI,GAAGE,EAAC,EAAE,WAAWF,EAAC,IAAGC,MAAGD,GAAE,UAAUC,EAAC,GAAE,KAAK,SAASD,EAAC,IAAE,QAAM,KAAK,UAAQ,KAAK,OAAO,QAAQ,aAAW,KAAK,WAAW,GAAE,KAAK,SAAOA,IAAE,KAAK,SAASA,EAAC;AAAA,YAAE,GAAE,YAAW,SAASA,IAAE;AAAC,qBAAOA,MAAGA,OAAI,KAAK,WAASA,KAAE,KAAK,QAAO,KAAK,SAAO,OAAMA,MAAG,KAAK,YAAYA,EAAC,GAAE;AAAA,YAAI,EAAC,CAAC,GAAE,GAAG,QAAQ,EAAC,WAAU,SAASA,IAAEC,IAAE;AAAC,qBAAOD,cAAa,MAAI,EAAEA,IAAEC,EAAC,GAAE,KAAK,SAAOD,IAAEA,GAAE,UAAQ,SAAO,KAAK,UAAQ,CAACC,OAAI,KAAK,SAAO,IAAI,GAAGA,IAAE,IAAI,IAAG,KAAK,OAAO,WAAWD,EAAC,IAAG,KAAK,wBAAsB,KAAK,GAAG,EAAC,OAAM,KAAK,YAAW,UAAS,KAAK,aAAY,QAAO,KAAK,YAAW,MAAK,KAAK,WAAU,CAAC,GAAE,KAAK,sBAAoB,OAAI;AAAA,YAAI,GAAE,aAAY,WAAU;AAAC,qBAAO,KAAK,WAAS,KAAK,IAAI,EAAC,OAAM,KAAK,YAAW,UAAS,KAAK,aAAY,QAAO,KAAK,YAAW,MAAK,KAAK,WAAU,CAAC,GAAE,KAAK,sBAAoB,OAAG,KAAK,SAAO,OAAM;AAAA,YAAI,GAAE,WAAU,SAASA,IAAEC,IAAE;AAAC,qBAAO,KAAK,UAAQ,KAAK,SAAOA,KAAE,KAAK,OAAO,aAAa,MAAKD,IAAEC,EAAC,GAAE,KAAK,KAAK,UAAU,KAAK,QAAOA,EAAC,IAAG;AAAA,YAAI,GAAE,YAAW,WAAU;AAAC,qBAAO,KAAK,UAAQ,KAAK,OAAO,OAAO,GAAE;AAAA,YAAI,GAAE,aAAY,SAASD,IAAE;AAAC,qBAAO,KAAK,WAAS,KAAK,OAAO,OAAK,KAAK,WAAW,IAAE,KAAK,UAAUA,EAAC,IAAG;AAAA,YAAI,GAAE,aAAY,WAAU;AAAC,qBAAM,CAAC,CAAC,KAAK,UAAQ,KAAK,OAAO,OAAO;AAAA,YAAC,GAAE,iBAAgB,SAASA,IAAE;AAAC,qBAAO,KAAK,UAAQ,KAAK,OAAO,WAAWA,EAAC,GAAE;AAAA,YAAI,GAAE,UAAS,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAM,GAAE,YAAW,SAASA,IAAE;AAAC,kBAAIC,KAAED,GAAE,SAAOA,GAAE;AAAO,mBAAK,UAAQ,KAAK,SAAO,GAAGA,EAAC,GAAEC,cAAa,KAAG,KAAK,UAAUD,GAAE,SAAOA,GAAE,QAAOA,GAAE,MAAM,IAAE,KAAK,KAAK,SAAS,KAAK,MAAM,KAAG,KAAK,OAAO,YAAUC,KAAE,KAAK,WAAW,IAAE,KAAK,UAAUA,IAAED,GAAE,MAAM;AAAA,YAAE,GAAE,YAAW,SAASA,IAAE;AAAC,mBAAK,OAAO,UAAUA,GAAE,MAAM;AAAA,YAAC,GAAE,aAAY,SAASA,IAAE;AAAC,qBAAKA,GAAE,cAAc,WAAS,KAAK,WAAWA,EAAC;AAAA,YAAC,EAAC,CAAC;AAAE,gBAAI,KAAG,GAAG,OAAO,EAAC,SAAQ,EAAC,MAAK,eAAc,QAAO,CAAC,GAAE,CAAC,GAAE,WAAU,QAAO,WAAU,OAAG,QAAO,OAAG,aAAY,OAAG,SAAQ,IAAE,GAAE,OAAM,SAASA,IAAE;AAAC,iBAAG,UAAU,MAAM,KAAK,MAAKA,EAAC,GAAE,KAAK,WAAW,KAAK,QAAQ,OAAO,GAAEA,GAAE,KAAK,eAAc,EAAC,SAAQ,KAAI,CAAC,GAAE,KAAK,WAAS,KAAK,QAAQ,KAAK,eAAc,EAAC,SAAQ,KAAI,GAAE,IAAE;AAAA,YAAC,GAAE,UAAS,SAASA,IAAE;AAAC,iBAAG,UAAU,SAAS,KAAK,MAAKA,EAAC,GAAEA,GAAE,KAAK,gBAAe,EAAC,SAAQ,KAAI,CAAC,GAAE,KAAK,WAAS,KAAK,QAAQ,KAAK,gBAAe,EAAC,SAAQ,KAAI,GAAE,IAAE;AAAA,YAAC,GAAE,WAAU,WAAU;AAAC,kBAAIA,KAAE,GAAG,UAAU,UAAU,KAAK,IAAI;AAAE,qBAAO,MAAI,CAAC,KAAK,QAAQ,cAAYA,GAAE,WAAS,KAAK,SAAQA;AAAA,YAAC,GAAE,QAAO,WAAU;AAAC,mBAAK,QAAM,KAAK,KAAK,aAAa,IAAI;AAAA,YAAC,GAAE,aAAY,WAAU;AAAC,kBAAIA,KAAE,sBAAoB,KAAK,QAAQ,aAAW,MAAI,oBAAkB,KAAK,gBAAc,aAAW;AAAQ,mBAAK,eAAa,KAAK,aAAWa,IAAG,OAAMb,EAAC;AAAA,YAAC,GAAE,eAAc,WAAU;AAAA,YAAC,GAAE,YAAW,WAAU;AAAA,YAAC,GAAE,cAAa,SAASA,IAAE;AAAC,kBAAIC,IAAEC,IAAEC,KAAE,KAAK,MAAKC,KAAE,KAAK,YAAWC,KAAEF,GAAE,uBAAuBA,GAAE,UAAU,CAAC,GAAEG,KAAEH,GAAE,2BAA2BH,EAAC,GAAEO,KAAE,KAAK,QAAQ,WAAUC,KAAEJ,GAAE,aAAYY,KAAEZ,GAAE,cAAaa,KAAE,EAAE,KAAK,QAAQ,MAAM,GAAEC,KAAE,KAAK,WAAW;AAAE,wBAAQX,MAAGN,KAAEO,KAAE,GAAEN,KAAEc,MAAG,aAAWT,MAAGN,KAAEO,KAAE,GAAEN,KAAE,KAAG,aAAWK,MAAGN,KAAEO,KAAE,GAAEN,KAAEc,KAAE,KAAG,YAAUT,MAAGN,KAAE,GAAEC,KAAEc,KAAE,KAAG,WAAST,MAAGN,KAAEO,IAAEN,KAAEc,KAAE,KAAGV,GAAE,IAAED,GAAE,KAAGE,KAAE,SAAQN,KAAE,GAAEC,KAAEc,KAAE,MAAIT,KAAE,QAAON,KAAEO,KAAE,KAAGS,GAAE,IAAEC,GAAE,IAAGhB,KAAEc,KAAE,IAAGhB,KAAEA,GAAE,SAAS,EAAEC,IAAEC,IAAE,IAAE,CAAC,EAAE,IAAIe,EAAC,EAAE,IAAIC,EAAC,GAAE,GAAGd,IAAE,uBAAuB,GAAE,GAAGA,IAAE,sBAAsB,GAAE,GAAGA,IAAE,qBAAqB,GAAE,GAAGA,IAAE,wBAAwB,GAAEW,IAAGX,IAAE,qBAAmBG,EAAC,GAAE,GAAGH,IAAEJ,EAAC;AAAA,YAAC,GAAE,iBAAgB,WAAU;AAAC,kBAAIA,KAAE,KAAK,KAAK,mBAAmB,KAAK,OAAO;AAAE,mBAAK,aAAaA,EAAC;AAAA,YAAC,GAAE,YAAW,SAASA,IAAE;AAAC,mBAAK,QAAQ,UAAQA,IAAE,KAAK,cAAY,GAAG,KAAK,YAAWA,EAAC;AAAA,YAAC,GAAE,cAAa,SAASA,IAAE;AAAC,kBAAIC,KAAE,KAAK,KAAK,uBAAuB,KAAK,SAAQD,GAAE,MAAKA,GAAE,MAAM;AAAE,mBAAK,aAAaC,EAAC;AAAA,YAAC,GAAE,YAAW,WAAU;AAAC,qBAAO,EAAE,KAAK,WAAS,KAAK,QAAQ,qBAAmB,CAAC,KAAK,QAAQ,SAAO,KAAK,QAAQ,kBAAkB,IAAE,CAAC,GAAE,CAAC,CAAC;AAAA,YAAC,EAAC,CAAC;AAAE,eAAG,QAAQ,EAAC,aAAY,SAASD,IAAEC,IAAEC,IAAE;AAAC,qBAAOF,cAAa,OAAKA,KAAE,IAAI,GAAGE,EAAC,EAAE,WAAWF,EAAC,IAAGC,MAAGD,GAAE,UAAUC,EAAC,GAAE,KAAK,SAASD,EAAC,IAAE,OAAK,KAAK,SAASA,EAAC;AAAA,YAAC,GAAE,cAAa,SAASA,IAAE;AAAC,qBAAOA,MAAG,KAAK,YAAYA,EAAC,GAAE;AAAA,YAAI,EAAC,CAAC,GAAE,GAAG,QAAQ,EAAC,aAAY,SAASA,IAAEC,IAAE;AAAC,qBAAOD,cAAa,MAAI,EAAEA,IAAEC,EAAC,GAAE,KAAK,WAASD,IAAEA,GAAE,UAAQ,SAAO,KAAK,YAAU,CAACC,OAAI,KAAK,WAAS,IAAI,GAAGA,IAAE,IAAI,IAAG,KAAK,SAAS,WAAWD,EAAC,IAAG,KAAK,yBAAyB,GAAE,KAAK,SAAS,QAAQ,aAAW,KAAK,QAAM,KAAK,KAAK,SAAS,IAAI,KAAG,KAAK,YAAY,GAAE;AAAA,YAAI,GAAE,eAAc,WAAU;AAAC,qBAAO,KAAK,aAAW,KAAK,yBAAyB,IAAE,GAAE,KAAK,aAAa,GAAE,KAAK,WAAS,OAAM;AAAA,YAAI,GAAE,0BAAyB,SAASA,IAAE;AAAC,kBAAGA,MAAG,CAAC,KAAK,uBAAsB;AAAC,oBAAIC,KAAED,KAAE,QAAM,MAAKE,KAAE,EAAC,QAAO,KAAK,cAAa,MAAK,KAAK,aAAY;AAAE,qBAAK,SAAS,QAAQ,YAAUA,GAAE,MAAI,KAAK,gBAAcA,GAAE,YAAU,KAAK,cAAaA,GAAE,WAAS,KAAK,cAAa,KAAK,SAAS,QAAQ,WAASA,GAAE,YAAU,KAAK,eAAc,OAAKA,GAAE,QAAM,KAAK,gBAAe,KAAKD,EAAC,EAAEC,EAAC,GAAE,KAAK,wBAAsB,CAACF;AAAA,cAAC;AAAA,YAAC,GAAE,aAAY,SAASA,IAAEC,IAAE;AAAC,qBAAO,KAAK,YAAU,KAAK,SAAOA,KAAE,KAAK,SAAS,aAAa,MAAKD,IAAEC,EAAC,GAAE,KAAK,KAAK,YAAY,KAAK,UAASA,EAAC,GAAE,KAAK,SAAS,QAAQ,eAAa,KAAK,SAAS,eAAac,IAAG,KAAK,SAAS,YAAW,mBAAmB,GAAE,KAAK,qBAAqB,KAAK,SAAS,UAAU,KAAI;AAAA,YAAI,GAAE,cAAa,WAAU;AAAC,qBAAO,KAAK,aAAW,KAAK,SAAS,OAAO,GAAE,KAAK,SAAS,QAAQ,eAAa,KAAK,SAAS,eAAa,GAAG,KAAK,SAAS,YAAW,mBAAmB,GAAE,KAAK,wBAAwB,KAAK,SAAS,UAAU,KAAI;AAAA,YAAI,GAAE,eAAc,SAASf,IAAE;AAAC,qBAAO,KAAK,aAAW,KAAK,SAAS,OAAK,KAAK,aAAa,IAAE,KAAK,YAAYA,EAAC,IAAG;AAAA,YAAI,GAAE,eAAc,WAAU;AAAC,qBAAO,KAAK,SAAS,OAAO;AAAA,YAAC,GAAE,mBAAkB,SAASA,IAAE;AAAC,qBAAO,KAAK,YAAU,KAAK,SAAS,WAAWA,EAAC,GAAE;AAAA,YAAI,GAAE,YAAW,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAQ,GAAE,cAAa,SAASA,IAAE;AAAC,kBAAIC,KAAED,GAAE,SAAOA,GAAE;AAAO,mBAAK,YAAU,KAAK,QAAM,KAAK,YAAYC,IAAE,KAAK,SAAS,QAAQ,SAAOD,GAAE,SAAO,MAAM;AAAA,YAAC,GAAE,cAAa,SAASA,IAAE;AAAC,kBAAIC,IAAEC,IAAEC,KAAEH,GAAE;AAAO,mBAAK,SAAS,QAAQ,UAAQA,GAAE,kBAAgBC,KAAE,KAAK,KAAK,2BAA2BD,GAAE,aAAa,GAAEE,KAAE,KAAK,KAAK,2BAA2BD,EAAC,GAAEE,KAAE,KAAK,KAAK,mBAAmBD,EAAC,IAAG,KAAK,SAAS,UAAUC,EAAC;AAAA,YAAC,EAAC,CAAC;AAAE,gBAAIwB,MAAG,GAAG,OAAO,EAAC,SAAQ,EAAC,UAAS,CAAC,IAAG,EAAE,GAAE,MAAK,OAAG,OAAM,MAAK,WAAU,mBAAkB,GAAE,YAAW,SAAS3B,IAAE;AAAC,kBAAIC,KAAED,MAAG,UAAQA,GAAE,UAAQA,KAAE,SAAS,cAAc,KAAK,GAAEE,KAAE,KAAK;AAAQ,kBAAGA,GAAE,gBAAgB,WAAS,GAAGD,EAAC,GAAEA,GAAE,YAAYC,GAAE,IAAI,KAAGD,GAAE,YAAU,UAAKC,GAAE,OAAKA,GAAE,OAAK,IAAGA,GAAE,OAAM;AAAC,oBAAIC,KAAE,EAAED,GAAE,KAAK;AAAE,gBAAAD,GAAE,MAAM,qBAAmB,CAACE,GAAE,IAAE,QAAM,CAACA,GAAE,IAAE;AAAA,cAAI;AAAC,qBAAO,KAAK,eAAeF,IAAE,MAAM,GAAEA;AAAA,YAAC,GAAE,cAAa,WAAU;AAAC,qBAAO;AAAA,YAAI,EAAC,CAAC;AAAE,eAAG,UAAQ;AAAG,gBAAI,KAAG,GAAG,OAAO,EAAC,SAAQ,EAAC,UAAS,KAAI,SAAQ,GAAE,gBAAe,IAAG,mBAAkB,MAAG,gBAAe,KAAI,QAAO,GAAE,QAAO,MAAK,SAAQ,GAAE,SAAQ,QAAO,eAAc,QAAO,eAAc,QAAO,QAAO,OAAG,MAAK,YAAW,WAAU,IAAG,YAAW,EAAC,GAAE,YAAW,SAASD,IAAE;AAAC,gBAAE,MAAKA,EAAC;AAAA,YAAC,GAAE,OAAM,WAAU;AAAC,mBAAK,eAAe,GAAE,KAAK,UAAQ,CAAC,GAAE,KAAK,SAAO,CAAC,GAAE,KAAK,WAAW,GAAE,KAAK,QAAQ;AAAA,YAAC,GAAE,WAAU,SAASA,IAAE;AAAC,cAAAA,GAAE,cAAc,IAAI;AAAA,YAAC,GAAE,UAAS,SAASA,IAAE;AAAC,mBAAK,gBAAgB,GAAE,GAAG,KAAK,UAAU,GAAEA,GAAE,iBAAiB,IAAI,GAAE,KAAK,aAAW,MAAK,KAAK,YAAU;AAAA,YAAM,GAAE,cAAa,WAAU;AAAC,qBAAO,KAAK,SAAO,GAAG,KAAK,UAAU,GAAE,KAAK,eAAe,KAAK,GAAG,IAAG;AAAA,YAAI,GAAE,aAAY,WAAU;AAAC,qBAAO,KAAK,SAAOc,IAAG,KAAK,UAAU,GAAE,KAAK,eAAe,KAAK,GAAG,IAAG;AAAA,YAAI,GAAE,cAAa,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAU,GAAE,YAAW,SAASd,IAAE;AAAC,qBAAO,KAAK,QAAQ,UAAQA,IAAE,KAAK,eAAe,GAAE;AAAA,YAAI,GAAE,WAAU,SAASA,IAAE;AAAC,qBAAO,KAAK,QAAQ,SAAOA,IAAE,KAAK,cAAc,GAAE;AAAA,YAAI,GAAE,WAAU,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAQ,GAAE,QAAO,WAAU;AAAC,qBAAO,KAAK,SAAO,KAAK,gBAAgB,GAAE,KAAK,QAAQ,IAAG;AAAA,YAAI,GAAE,WAAU,WAAU;AAAC,kBAAIA,KAAE,EAAC,cAAa,KAAK,gBAAe,WAAU,KAAK,YAAW,MAAK,KAAK,YAAW,SAAQ,KAAK,WAAU;AAAE,qBAAO,KAAK,QAAQ,mBAAiB,KAAK,YAAU,KAAK,UAAQ,EAAE,KAAK,YAAW,KAAK,QAAQ,gBAAe,IAAI,IAAGA,GAAE,OAAK,KAAK,UAAS,KAAK,kBAAgBA,GAAE,WAAS,KAAK,eAAcA;AAAA,YAAC,GAAE,YAAW,WAAU;AAAC,qBAAO,SAAS,cAAc,KAAK;AAAA,YAAC,GAAE,aAAY,WAAU;AAAC,kBAAIA,KAAE,KAAK,QAAQ;AAAS,qBAAOA,cAAa,IAAEA,KAAE,IAAI,EAAEA,IAAEA,EAAC;AAAA,YAAC,GAAE,eAAc,WAAU;AAAC,mBAAK,cAAY,WAAS,KAAK,QAAQ,UAAQ,SAAO,KAAK,QAAQ,WAAS,KAAK,WAAW,MAAM,SAAO,KAAK,QAAQ;AAAA,YAAO,GAAE,gBAAe,SAASA,IAAE;AAAC,uBAAQC,IAAEC,KAAE,KAAK,QAAQ,EAAE,UAASC,KAAE,CAACH,GAAE,KAAG,GAAE,IAAE,CAAC,GAAEI,KAAE,GAAEC,KAAEH,GAAE,QAAOE,KAAEC,IAAED,KAAI,CAAAH,KAAEC,GAAEE,EAAC,EAAE,MAAM,QAAOF,GAAEE,EAAC,MAAI,KAAK,cAAYH,OAAIE,KAAEH,GAAEG,IAAE,CAACF,EAAC;AAAG,uBAASE,EAAC,MAAI,KAAK,QAAQ,SAAOA,KAAEH,GAAE,IAAG,CAAC,GAAE,KAAK,cAAc;AAAA,YAAE,GAAE,gBAAe,WAAU;AAAC,kBAAG,KAAK,QAAM,CAAC,GAAE;AAAC,mBAAG,KAAK,YAAW,KAAK,QAAQ,OAAO;AAAE,oBAAIA,KAAE,CAAC,oBAAI,QAAKC,KAAE,OAAGC,KAAE;AAAG,yBAAQC,MAAK,KAAK,QAAO;AAAC,sBAAIC,KAAE,KAAK,OAAOD,EAAC;AAAE,sBAAGC,GAAE,WAASA,GAAE,QAAO;AAAC,wBAAIC,KAAE,KAAK,IAAI,IAAGL,KAAEI,GAAE,UAAQ,GAAG;AAAE,uBAAGA,GAAE,IAAGC,EAAC,GAAEA,KAAE,IAAEJ,KAAE,QAAIG,GAAE,SAAOF,KAAE,OAAG,KAAK,cAAcE,EAAC,GAAEA,GAAE,SAAO;AAAA,kBAAG;AAAA,gBAAC;AAAC,gBAAAF,MAAG,CAAC,KAAK,YAAU,KAAK,YAAY,GAAED,OAAI,EAAE,KAAK,UAAU,GAAE,KAAK,aAAW,EAAE,KAAK,gBAAe,IAAI;AAAA,cAAE;AAAA,YAAC,GAAE,eAAc,GAAE,gBAAe,WAAU;AAAC,mBAAK,eAAa,KAAK,aAAWY,IAAG,OAAM,oBAAkB,KAAK,QAAQ,aAAW,GAAG,GAAE,KAAK,cAAc,GAAE,KAAK,QAAQ,UAAQ,KAAG,KAAK,eAAe,GAAE,KAAK,QAAQ,EAAE,YAAY,KAAK,UAAU;AAAA,YAAE,GAAE,eAAc,WAAU;AAAC,kBAAIb,KAAE,KAAK,WAAUC,KAAE,KAAK,QAAQ;AAAQ,kBAAG,WAASD,IAAE;AAAC,yBAAQE,MAAK,KAAK,QAAQ,CAAAA,KAAE,OAAOA,EAAC,GAAE,KAAK,QAAQA,EAAC,EAAE,GAAG,SAAS,UAAQA,OAAIF,MAAG,KAAK,QAAQE,EAAC,EAAE,GAAG,MAAM,SAAOD,KAAE,KAAK,IAAID,KAAEE,EAAC,GAAE,KAAK,eAAeA,EAAC,MAAI,GAAG,KAAK,QAAQA,EAAC,EAAE,EAAE,GAAE,KAAK,mBAAmBA,EAAC,GAAE,KAAK,eAAeA,EAAC,GAAE,OAAO,KAAK,QAAQA,EAAC;AAAG,oBAAIC,KAAE,KAAK,QAAQH,EAAC,GAAEI,KAAE,KAAK;AAAK,uBAAOD,QAAKA,KAAE,KAAK,QAAQH,EAAC,IAAE,CAAC,GAAG,KAAGa,IAAG,OAAM,gDAA+C,KAAK,UAAU,GAAEV,GAAE,GAAG,MAAM,SAAOF,IAAEE,GAAE,SAAOC,GAAE,QAAQA,GAAE,UAAUA,GAAE,eAAe,CAAC,GAAEJ,EAAC,EAAE,MAAM,GAAEG,GAAE,OAAKH,IAAE,KAAK,kBAAkBG,IAAEC,GAAE,UAAU,GAAEA,GAAE,QAAQ,CAAC,GAAED,GAAE,GAAG,aAAY,KAAK,eAAeA,EAAC,IAAG,KAAK,SAAOA,IAAEA;AAAA,cAAC;AAAA,YAAC,GAAE,gBAAe,GAAE,gBAAe,GAAE,gBAAe,GAAE,aAAY,WAAU;AAAC,kBAAG,KAAK,MAAK;AAAC,oBAAIH,IAAEC,IAAEC,KAAE,KAAK,KAAK,QAAQ;AAAE,oBAAGA,KAAE,KAAK,QAAQ,WAASA,KAAE,KAAK,QAAQ,QAAQ,MAAK,gBAAgB;AAAA,qBAAM;AAAC,uBAAIF,MAAK,KAAK,OAAO,EAACC,KAAE,KAAK,OAAOD,EAAC,GAAG,SAAOC,GAAE;AAAQ,uBAAID,MAAK,KAAK,OAAO,MAAIC,KAAE,KAAK,OAAOD,EAAC,GAAG,WAAS,CAACC,GAAE,QAAO;AAAC,wBAAIE,KAAEF,GAAE;AAAO,yBAAK,cAAcE,GAAE,GAAEA,GAAE,GAAEA,GAAE,GAAEA,GAAE,IAAE,CAAC,KAAG,KAAK,gBAAgBA,GAAE,GAAEA,GAAE,GAAEA,GAAE,GAAEA,GAAE,IAAE,CAAC;AAAA,kBAAC;AAAC,uBAAIH,MAAK,KAAK,OAAO,MAAK,OAAOA,EAAC,EAAE,UAAQ,KAAK,YAAYA,EAAC;AAAA,gBAAC;AAAA,cAAC;AAAA,YAAC,GAAE,oBAAmB,SAASA,IAAE;AAAC,uBAAQC,MAAK,KAAK,OAAO,MAAK,OAAOA,EAAC,EAAE,OAAO,MAAID,MAAG,KAAK,YAAYC,EAAC;AAAA,YAAC,GAAE,iBAAgB,WAAU;AAAC,uBAAQD,MAAK,KAAK,OAAO,MAAK,YAAYA,EAAC;AAAA,YAAC,GAAE,gBAAe,WAAU;AAAC,uBAAQA,MAAK,KAAK,QAAQ,IAAG,KAAK,QAAQA,EAAC,EAAE,EAAE,GAAE,KAAK,eAAe,OAAOA,EAAC,CAAC,GAAE,OAAO,KAAK,QAAQA,EAAC;AAAE,mBAAK,gBAAgB,GAAE,KAAK,YAAU;AAAA,YAAM,GAAE,eAAc,SAASA,IAAEC,IAAEC,IAAEC,IAAE;AAAC,kBAAIC,KAAE,KAAK,MAAMJ,KAAE,CAAC,GAAEK,KAAE,KAAK,MAAMJ,KAAE,CAAC,GAAEK,KAAEJ,KAAE,GAAEK,KAAE,IAAI,EAAE,CAACH,IAAE,CAACC,EAAC;AAAE,cAAAE,GAAE,IAAE,CAACD;AAAE,kBAAIE,KAAE,KAAK,iBAAiBD,EAAC,GAAES,KAAE,KAAK,OAAOR,EAAC;AAAE,qBAAOQ,MAAGA,GAAE,UAAQA,GAAE,SAAO,MAAG,SAAKA,MAAGA,GAAE,WAASA,GAAE,SAAO,OAAIV,KAAEH,MAAG,KAAK,cAAcC,IAAEC,IAAEC,IAAEH,EAAC;AAAA,YAAE,GAAE,iBAAgB,SAASH,IAAEC,IAAEC,IAAEC,IAAE;AAAC,uBAAQC,KAAE,IAAEJ,IAAEI,KAAE,IAAEJ,KAAE,GAAEI,KAAI,UAAQC,KAAE,IAAEJ,IAAEI,KAAE,IAAEJ,KAAE,GAAEI,MAAI;AAAC,oBAAIC,KAAE,IAAI,EAAEF,IAAEC,EAAC;AAAE,gBAAAC,GAAE,IAAEJ,KAAE;AAAE,oBAAIK,KAAE,KAAK,iBAAiBD,EAAC,GAAEE,KAAE,KAAK,OAAOD,EAAC;AAAE,gBAAAC,MAAGA,GAAE,SAAOA,GAAE,SAAO,QAAIA,MAAGA,GAAE,WAASA,GAAE,SAAO,OAAIN,KAAE,IAAEC,MAAG,KAAK,gBAAgBC,IAAEC,IAAEH,KAAE,GAAEC,EAAC;AAAA,cAAE;AAAA,YAAC,GAAE,YAAW,SAASH,IAAE;AAAC,kBAAIC,KAAED,OAAIA,GAAE,SAAOA,GAAE;AAAO,mBAAK,SAAS,KAAK,KAAK,UAAU,GAAE,KAAK,KAAK,QAAQ,GAAEC,IAAEA,EAAC;AAAA,YAAC,GAAE,cAAa,SAASD,IAAE;AAAC,mBAAK,SAASA,GAAE,QAAOA,GAAE,MAAK,MAAGA,GAAE,QAAQ;AAAA,YAAC,GAAE,YAAW,SAASA,IAAE;AAAC,kBAAIC,KAAE,KAAK;AAAQ,qBAAO,WAASA,GAAE,iBAAeD,KAAEC,GAAE,gBAAcA,GAAE,gBAAc,WAASA,GAAE,iBAAeA,GAAE,gBAAcD,KAAEC,GAAE,gBAAcD;AAAA,YAAC,GAAE,UAAS,SAASA,IAAEC,IAAEC,IAAEC,IAAE;AAAC,kBAAIC,KAAE,KAAK,MAAMH,EAAC;AAAE,cAAAG,KAAE,WAAS,KAAK,QAAQ,WAASA,KAAE,KAAK,QAAQ,WAAS,WAAS,KAAK,QAAQ,WAASA,KAAE,KAAK,QAAQ,UAAQ,SAAO,KAAK,WAAWA,EAAC;AAAE,kBAAIC,KAAE,KAAK,QAAQ,qBAAmBD,OAAI,KAAK;AAAU,cAAAD,MAAG,CAACE,OAAI,KAAK,YAAUD,IAAE,KAAK,iBAAe,KAAK,cAAc,GAAE,KAAK,cAAc,GAAE,KAAK,WAAW,GAAE,WAASA,MAAG,KAAK,QAAQJ,EAAC,GAAEE,MAAG,KAAK,YAAY,GAAE,KAAK,WAAS,CAAC,CAACA,KAAG,KAAK,mBAAmBF,IAAEC,EAAC;AAAA,YAAC,GAAE,oBAAmB,SAASD,IAAEC,IAAE;AAAC,uBAAQC,MAAK,KAAK,QAAQ,MAAK,kBAAkB,KAAK,QAAQA,EAAC,GAAEF,IAAEC,EAAC;AAAA,YAAC,GAAE,mBAAkB,SAASD,IAAEC,IAAEC,IAAE;AAAC,kBAAIC,KAAE,KAAK,KAAK,aAAaD,IAAEF,GAAE,IAAI,GAAEI,KAAEJ,GAAE,OAAO,WAAWG,EAAC,EAAE,SAAS,KAAK,KAAK,mBAAmBF,IAAEC,EAAC,CAAC,EAAE,MAAM;AAAE,mBAAG,GAAGF,GAAE,IAAGI,IAAED,EAAC,IAAE,GAAGH,GAAE,IAAGI,EAAC;AAAA,YAAC,GAAE,YAAW,WAAU;AAAC,kBAAIJ,KAAE,KAAK,MAAKC,KAAED,GAAE,QAAQ,KAAIE,KAAE,KAAK,YAAU,KAAK,YAAY,GAAEC,KAAE,KAAK,WAAUC,KAAE,KAAK,KAAK,oBAAoB,KAAK,SAAS;AAAE,cAAAA,OAAI,KAAK,mBAAiB,KAAK,qBAAqBA,EAAC,IAAG,KAAK,SAAOH,GAAE,WAAS,CAAC,KAAK,QAAQ,UAAQ,CAAC,KAAK,MAAMD,GAAE,QAAQ,CAAC,GAAEC,GAAE,QAAQ,CAAC,CAAC,GAAEE,EAAC,EAAE,IAAED,GAAE,CAAC,GAAE,KAAK,KAAKF,GAAE,QAAQ,CAAC,GAAEC,GAAE,QAAQ,CAAC,CAAC,GAAEE,EAAC,EAAE,IAAED,GAAE,CAAC,CAAC,GAAE,KAAK,SAAOD,GAAE,WAAS,CAAC,KAAK,QAAQ,UAAQ,CAAC,KAAK,MAAMD,GAAE,QAAQ,CAACC,GAAE,QAAQ,CAAC,GAAE,CAAC,GAAEE,EAAC,EAAE,IAAED,GAAE,CAAC,GAAE,KAAK,KAAKF,GAAE,QAAQ,CAACC,GAAE,QAAQ,CAAC,GAAE,CAAC,GAAEE,EAAC,EAAE,IAAED,GAAE,CAAC,CAAC;AAAA,YAAC,GAAE,YAAW,WAAU;AAAC,mBAAK,QAAM,CAAC,KAAK,KAAK,kBAAgB,KAAK,QAAQ;AAAA,YAAC,GAAE,sBAAqB,SAASF,IAAE;AAAC,kBAAIC,KAAE,KAAK,MAAKC,KAAED,GAAE,iBAAe,KAAK,IAAIA,GAAE,gBAAeA,GAAE,QAAQ,CAAC,IAAEA,GAAE,QAAQ,GAAEE,KAAEF,GAAE,aAAaC,IAAE,KAAK,SAAS,GAAEE,KAAEH,GAAE,QAAQD,IAAE,KAAK,SAAS,EAAE,MAAM,GAAEK,KAAEJ,GAAE,QAAQ,EAAE,SAAS,IAAEE,EAAC;AAAE,qBAAO,IAAI,EAAEC,GAAE,SAASC,EAAC,GAAED,GAAE,IAAIC,EAAC,CAAC;AAAA,YAAC,GAAE,SAAQ,SAASL,IAAE;AAAC,kBAAIC,KAAE,KAAK;AAAK,kBAAGA,IAAE;AAAC,oBAAIC,KAAE,KAAK,WAAWD,GAAE,QAAQ,CAAC;AAAE,oBAAG,WAASD,OAAIA,KAAEC,GAAE,UAAU,IAAG,WAAS,KAAK,WAAU;AAAC,sBAAIE,KAAE,KAAK,qBAAqBH,EAAC,GAAEI,KAAE,KAAK,qBAAqBD,EAAC,GAAEE,KAAED,GAAE,UAAU,GAAEE,KAAE,CAAC,GAAEC,KAAE,KAAK,QAAQ,YAAWC,KAAE,IAAI,EAAEJ,GAAE,cAAc,EAAE,SAAS,CAACG,IAAE,CAACA,EAAC,CAAC,GAAEH,GAAE,YAAY,EAAE,IAAI,CAACG,IAAE,CAACA,EAAC,CAAC,CAAC;AAAE,sBAAG,EAAE,SAASH,GAAE,IAAI,CAAC,KAAG,SAASA,GAAE,IAAI,CAAC,KAAG,SAASA,GAAE,IAAI,CAAC,KAAG,SAASA,GAAE,IAAI,CAAC,GAAG,OAAM,IAAI,MAAM,+CAA+C;AAAE,2BAAQY,MAAK,KAAK,QAAO;AAAC,wBAAIC,KAAE,KAAK,OAAOD,EAAC,EAAE;AAAO,oBAAAC,GAAE,MAAI,KAAK,aAAWT,GAAE,SAAS,IAAI,EAAES,GAAE,GAAEA,GAAE,CAAC,CAAC,MAAI,KAAK,OAAOD,EAAC,EAAE,UAAQ;AAAA,kBAAG;AAAC,sBAAG,KAAK,IAAId,KAAE,KAAK,SAAS,IAAE,EAAE,MAAK,SAASF,IAAEE,EAAC;AAAA,uBAAM;AAAC,6BAAQgB,KAAEd,GAAE,IAAI,GAAEc,MAAGd,GAAE,IAAI,GAAEc,KAAI,UAAQC,KAAEf,GAAE,IAAI,GAAEe,MAAGf,GAAE,IAAI,GAAEe,MAAI;AAAC,0BAAIC,KAAE,IAAI,EAAED,IAAED,EAAC;AAAE,0BAAGE,GAAE,IAAE,KAAK,WAAU,KAAK,aAAaA,EAAC,GAAE;AAAC,4BAAIC,KAAE,KAAK,OAAO,KAAK,iBAAiBD,EAAC,CAAC;AAAE,wBAAAC,KAAEA,GAAE,UAAQ,OAAGf,GAAE,KAAKc,EAAC;AAAA,sBAAC;AAAA,oBAAC;AAAC,wBAAGd,GAAE,MAAM,SAASN,IAAEC,IAAE;AAAC,6BAAOD,GAAE,WAAWK,EAAC,IAAEJ,GAAE,WAAWI,EAAC;AAAA,oBAAC,EAAE,GAAE,MAAIC,GAAE,QAAO;AAAC,2BAAK,aAAW,KAAK,WAAS,MAAG,KAAK,KAAK,SAAS;AAAG,0BAAIgB,KAAE,SAAS,uBAAuB;AAAE,2BAAIH,KAAE,GAAEA,KAAEb,GAAE,QAAOa,KAAI,MAAK,SAASb,GAAEa,EAAC,GAAEG,EAAC;AAAE,2BAAK,OAAO,GAAG,YAAYA,EAAC;AAAA,oBAAC;AAAA,kBAAC;AAAA,gBAAC;AAAA,cAAC;AAAA,YAAC,GAAE,cAAa,SAAStB,IAAE;AAAC,kBAAIC,KAAE,KAAK,KAAK,QAAQ;AAAI,kBAAG,CAACA,GAAE,UAAS;AAAC,oBAAIC,KAAE,KAAK;AAAiB,oBAAG,CAACD,GAAE,YAAUD,GAAE,IAAEE,GAAE,IAAI,KAAGF,GAAE,IAAEE,GAAE,IAAI,MAAI,CAACD,GAAE,YAAUD,GAAE,IAAEE,GAAE,IAAI,KAAGF,GAAE,IAAEE,GAAE,IAAI,GAAG,QAAM;AAAA,cAAE;AAAC,kBAAG,CAAC,KAAK,QAAQ,OAAO,QAAM;AAAG,kBAAIC,KAAE,KAAK,oBAAoBH,EAAC;AAAE,qBAAO,EAAE,KAAK,QAAQ,MAAM,EAAE,SAASG,EAAC;AAAA,YAAC,GAAE,cAAa,SAASH,IAAE;AAAC,qBAAO,KAAK,oBAAoB,KAAK,iBAAiBA,EAAC,CAAC;AAAA,YAAC,GAAE,mBAAkB,SAASA,IAAE;AAAC,kBAAIC,KAAE,KAAK,MAAKC,KAAE,KAAK,YAAY,GAAEC,KAAEH,GAAE,QAAQE,EAAC,GAAEE,KAAED,GAAE,IAAID,EAAC;AAAE,qBAAM,CAACD,GAAE,UAAUE,IAAEH,GAAE,CAAC,GAAEC,GAAE,UAAUG,IAAEJ,GAAE,CAAC,CAAC;AAAA,YAAC,GAAE,qBAAoB,SAASA,IAAE;AAAC,kBAAIC,KAAE,KAAK,kBAAkBD,EAAC,GAAEE,KAAE,IAAI,EAAED,GAAE,CAAC,GAAEA,GAAE,CAAC,CAAC;AAAE,qBAAO,KAAK,QAAQ,WAASC,KAAE,KAAK,KAAK,iBAAiBA,EAAC,IAAGA;AAAA,YAAC,GAAE,kBAAiB,SAASF,IAAE;AAAC,qBAAOA,GAAE,IAAE,MAAIA,GAAE,IAAE,MAAIA,GAAE;AAAA,YAAC,GAAE,kBAAiB,SAASA,IAAE;AAAC,kBAAIC,KAAED,GAAE,MAAM,GAAG,GAAEE,KAAE,IAAI,EAAE,CAACD,GAAE,CAAC,GAAE,CAACA,GAAE,CAAC,CAAC;AAAE,qBAAOC,GAAE,IAAE,CAACD,GAAE,CAAC,GAAEC;AAAA,YAAC,GAAE,aAAY,SAASF,IAAE;AAAC,kBAAIC,KAAE,KAAK,OAAOD,EAAC;AAAE,cAAAC,OAAI,GAAGA,GAAE,EAAE,GAAE,OAAO,KAAK,OAAOD,EAAC,GAAE,KAAK,KAAK,cAAa,EAAC,MAAKC,GAAE,IAAG,QAAO,KAAK,iBAAiBD,EAAC,EAAC,CAAC;AAAA,YAAE,GAAE,WAAU,SAASA,IAAE;AAAC,cAAAe,IAAGf,IAAE,cAAc;AAAE,kBAAIC,KAAE,KAAK,YAAY;AAAE,cAAAD,GAAE,MAAM,QAAMC,GAAE,IAAE,MAAKD,GAAE,MAAM,SAAOC,GAAE,IAAE,MAAKD,GAAE,gBAAc,GAAEA,GAAE,cAAY,GAAE,KAAG,KAAK,QAAQ,UAAQ,KAAG,GAAGA,IAAE,KAAK,QAAQ,OAAO,GAAE,MAAI,CAAC,OAAKA,GAAE,MAAM,2BAAyB;AAAA,YAAS,GAAE,UAAS,SAASA,IAAEC,IAAE;AAAC,kBAAIC,KAAE,KAAK,YAAYF,EAAC,GAAEI,KAAE,KAAK,iBAAiBJ,EAAC,GAAEK,KAAE,KAAK,WAAW,KAAK,YAAYL,EAAC,GAAEG,GAAE,KAAK,YAAW,MAAKH,EAAC,CAAC;AAAE,mBAAK,UAAUK,EAAC,GAAE,KAAK,WAAW,SAAO,KAAG,EAAEF,GAAE,KAAK,YAAW,MAAKH,IAAE,MAAKK,EAAC,CAAC,GAAE,GAAGA,IAAEH,EAAC,GAAE,KAAK,OAAOE,EAAC,IAAE,EAAC,IAAGC,IAAE,QAAOL,IAAE,SAAQ,KAAE,GAAEC,GAAE,YAAYI,EAAC,GAAE,KAAK,KAAK,iBAAgB,EAAC,MAAKA,IAAE,QAAOL,GAAC,CAAC;AAAA,YAAC,GAAE,YAAW,SAASA,IAAEC,IAAEC,IAAE;AAAC,cAAAD,MAAG,KAAK,KAAK,aAAY,EAAC,OAAMA,IAAE,MAAKC,IAAE,QAAOF,GAAC,CAAC;AAAE,kBAAII,KAAE,KAAK,iBAAiBJ,EAAC;AAAE,eAACE,KAAE,KAAK,OAAOE,EAAC,OAAKF,GAAE,SAAO,CAAC,oBAAI,QAAK,KAAK,KAAK,iBAAe,GAAGA,GAAE,IAAG,CAAC,GAAE,EAAE,KAAK,UAAU,GAAE,KAAK,aAAW,EAAE,KAAK,gBAAe,IAAI,MAAIA,GAAE,SAAO,MAAG,KAAK,YAAY,IAAGD,OAAIc,IAAGb,GAAE,IAAG,qBAAqB,GAAE,KAAK,KAAK,YAAW,EAAC,MAAKA,GAAE,IAAG,QAAOF,GAAC,CAAC,IAAG,KAAK,eAAe,MAAI,KAAK,WAAS,OAAG,KAAK,KAAK,MAAM,GAAE,KAAG,CAAC,KAAK,KAAK,gBAAc,EAAE,KAAK,aAAY,IAAI,IAAE,WAAWG,GAAE,KAAK,aAAY,IAAI,GAAE,GAAG;AAAA,YAAG,GAAE,aAAY,SAASH,IAAE;AAAC,qBAAOA,GAAE,QAAQ,KAAK,YAAY,CAAC,EAAE,SAAS,KAAK,OAAO,MAAM;AAAA,YAAC,GAAE,aAAY,SAASA,IAAE;AAAC,kBAAIC,KAAE,IAAI,EAAE,KAAK,SAAO,EAAED,GAAE,GAAE,KAAK,MAAM,IAAEA,GAAE,GAAE,KAAK,SAAO,EAAEA,GAAE,GAAE,KAAK,MAAM,IAAEA,GAAE,CAAC;AAAE,qBAAOC,GAAE,IAAED,GAAE,GAAEC;AAAA,YAAC,GAAE,sBAAqB,SAASD,IAAE;AAAC,kBAAIC,KAAE,KAAK,YAAY;AAAE,qBAAO,IAAI,EAAED,GAAE,IAAI,UAAUC,EAAC,EAAE,MAAM,GAAED,GAAE,IAAI,UAAUC,EAAC,EAAE,KAAK,EAAE,SAAS,CAAC,GAAE,CAAC,CAAC,CAAC;AAAA,YAAC,GAAE,gBAAe,WAAU;AAAC,uBAAQD,MAAK,KAAK,OAAO,KAAG,CAAC,KAAK,OAAOA,EAAC,EAAE,OAAO,QAAM;AAAG,qBAAM;AAAA,YAAE,EAAC,CAAC;AAAE,gBAAI4B,MAAG,GAAG,OAAO,EAAC,SAAQ,EAAC,SAAQ,GAAE,SAAQ,IAAG,YAAW,OAAM,cAAa,IAAG,YAAW,GAAE,KAAI,OAAG,aAAY,OAAG,cAAa,OAAG,aAAY,MAAE,GAAE,YAAW,SAAS5B,IAAEC,IAAE;AAAC,mBAAK,OAAKD,KAAGC,KAAE,EAAE,MAAKA,EAAC,GAAG,gBAAc,MAAIA,GAAE,UAAQ,MAAIA,GAAE,WAAS,KAAK,MAAMA,GAAE,WAAS,CAAC,GAAEA,GAAE,eAAaA,GAAE,cAAaA,GAAE,cAAYA,GAAE,cAAaA,GAAE,YAAWA,GAAE,UAAQ,KAAK,IAAI,GAAEA,GAAE,OAAO,IAAG,YAAU,OAAOA,GAAE,eAAaA,GAAE,aAAWA,GAAE,WAAW,MAAM,EAAE,IAAG,MAAI,KAAK,GAAG,cAAa,KAAK,aAAa;AAAA,YAAC,GAAE,QAAO,SAASD,IAAEC,IAAE;AAAC,qBAAO,KAAK,SAAOD,MAAG,WAASC,OAAIA,KAAE,OAAI,KAAK,OAAKD,IAAEC,MAAG,KAAK,OAAO,GAAE;AAAA,YAAI,GAAE,YAAW,SAASD,IAAEC,IAAE;AAAC,kBAAIC,KAAE,SAAS,cAAc,KAAK;AAAE,qBAAO,GAAGA,IAAE,QAAOC,GAAE,KAAK,aAAY,MAAKF,IAAEC,EAAC,CAAC,GAAE,GAAGA,IAAE,SAAQC,GAAE,KAAK,cAAa,MAAKF,IAAEC,EAAC,CAAC,IAAG,KAAK,QAAQ,eAAa,OAAK,KAAK,QAAQ,iBAAeA,GAAE,cAAY,SAAK,KAAK,QAAQ,cAAY,KAAG,KAAK,QAAQ,cAAaA,GAAE,MAAI,IAAGA,GAAE,aAAa,QAAO,cAAc,GAAEA,GAAE,MAAI,KAAK,WAAWF,EAAC,GAAEE;AAAA,YAAC,GAAE,YAAW,SAASF,IAAE;AAAC,kBAAIE,KAAE,EAAC,GAAE,KAAG,QAAM,IAAG,GAAE,KAAK,cAAcF,EAAC,GAAE,GAAEA,GAAE,GAAE,GAAEA,GAAE,GAAE,GAAE,KAAK,eAAe,EAAC;AAAE,kBAAG,KAAK,QAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,UAAS;AAAC,oBAAIG,KAAE,KAAK,iBAAiB,IAAI,IAAEH,GAAE;AAAE,qBAAK,QAAQ,QAAME,GAAE,IAAEC,KAAGD,GAAE,IAAI,IAAEC;AAAA,cAAC;AAAC,qBAAO,EAAE,KAAK,MAAKF,GAAEC,IAAE,KAAK,OAAO,CAAC;AAAA,YAAC,GAAE,aAAY,SAASF,IAAEC,IAAE;AAAC,kBAAE,WAAWE,GAAEH,IAAE,MAAK,MAAKC,EAAC,GAAE,CAAC,IAAED,GAAE,MAAKC,EAAC;AAAA,YAAC,GAAE,cAAa,SAASD,IAAEC,IAAEC,IAAE;AAAC,kBAAIC,KAAE,KAAK,QAAQ;AAAa,cAAAA,MAAGF,GAAE,aAAa,KAAK,MAAIE,OAAIF,GAAE,MAAIE,KAAGH,GAAEE,IAAED,EAAC;AAAA,YAAC,GAAE,eAAc,SAASD,IAAE;AAAC,cAAAA,GAAE,KAAK,SAAO;AAAA,YAAI,GAAE,gBAAe,WAAU;AAAC,kBAAIA,KAAE,KAAK,WAAUC,KAAE,KAAK,QAAQ;AAAQ,qBAAO,KAAK,QAAQ,gBAAcD,KAAEC,KAAED,KAAGA,KAAE,KAAK,QAAQ;AAAA,YAAU,GAAE,eAAc,SAASA,IAAE;AAAC,kBAAIC,KAAE,KAAK,IAAID,GAAE,IAAEA,GAAE,CAAC,IAAE,KAAK,QAAQ,WAAW;AAAO,qBAAO,KAAK,QAAQ,WAAWC,EAAC;AAAA,YAAC,GAAE,eAAc,WAAU;AAAC,kBAAID,IAAEC;AAAE,mBAAID,MAAK,KAAK,OAAO,MAAK,OAAOA,EAAC,EAAE,OAAO,MAAI,KAAK,eAAaC,KAAE,KAAK,OAAOD,EAAC,EAAE,IAAI,SAAO,GAAEC,GAAE,UAAQ,GAAEA,GAAE,aAAWA,GAAE,MAAI,GAAE,GAAGA,EAAC,GAAE,OAAO,KAAK,OAAOD,EAAC;AAAA,YAAG,GAAE,aAAY,SAASA,IAAE;AAAC,kBAAIC,KAAE,KAAK,OAAOD,EAAC;AAAE,kBAAGC,GAAE,QAAO,MAAIA,GAAE,GAAG,aAAa,OAAM,CAAC,GAAE,GAAG,UAAU,YAAY,KAAK,MAAKD,EAAC;AAAA,YAAC,GAAE,YAAW,SAASA,IAAEC,IAAEC,IAAE;AAAC,kBAAG,KAAK,SAAO,CAACA,MAAGA,GAAE,aAAa,KAAK,MAAI,GAAG,QAAO,GAAG,UAAU,WAAW,KAAK,MAAKF,IAAEC,IAAEC,EAAC;AAAA,YAAC,EAAC,CAAC;AAAE,qBAAS,GAAGF,IAAEC,IAAE;AAAC,qBAAO,IAAI2B,IAAG5B,IAAEC,EAAC;AAAA,YAAC;AAAC,gBAAI,KAAG2B,IAAG,OAAO,EAAC,kBAAiB,EAAC,SAAQ,OAAM,SAAQ,UAAS,QAAO,IAAG,QAAO,IAAG,QAAO,cAAa,aAAY,OAAG,SAAQ,QAAO,GAAE,SAAQ,EAAC,KAAI,MAAK,WAAU,MAAE,GAAE,YAAW,SAAS5B,IAAEE,IAAE;AAAC,mBAAK,OAAKF;AAAE,kBAAIG,KAAEF,GAAE,CAAC,GAAE,KAAK,gBAAgB;AAAE,uBAAQG,MAAKF,GAAE,CAAAE,MAAK,KAAK,YAAUD,GAAEC,EAAC,IAAEF,GAAEE,EAAC;AAAG,kBAAIC,MAAGH,KAAE,EAAE,MAAKA,EAAC,GAAG,gBAAc,KAAG,IAAE,GAAEI,KAAE,KAAK,YAAY;AAAE,cAAAH,GAAE,QAAMG,GAAE,IAAED,IAAEF,GAAE,SAAOG,GAAE,IAAED,IAAE,KAAK,YAAUF;AAAA,YAAC,GAAE,OAAM,SAASH,IAAE;AAAC,mBAAK,OAAK,KAAK,QAAQ,OAAKA,GAAE,QAAQ,KAAI,KAAK,cAAY,WAAW,KAAK,UAAU,OAAO;AAAE,kBAAIC,KAAE,KAAK,eAAa,MAAI,QAAM;AAAM,mBAAK,UAAUA,EAAC,IAAE,KAAK,KAAK,MAAK2B,IAAG,UAAU,MAAM,KAAK,MAAK5B,EAAC;AAAA,YAAC,GAAE,YAAW,SAASA,IAAE;AAAC,kBAAIC,KAAE,KAAK,kBAAkBD,EAAC,GAAEE,KAAE,KAAK,MAAKC,KAAE,EAAED,GAAE,QAAQD,GAAE,CAAC,CAAC,GAAEC,GAAE,QAAQD,GAAE,CAAC,CAAC,CAAC,GAAEG,KAAED,GAAE,KAAIE,KAAEF,GAAE,KAAIG,MAAG,KAAK,eAAa,OAAK,KAAK,SAAO,KAAG,CAACF,GAAE,GAAEA,GAAE,GAAEC,GAAE,GAAEA,GAAE,CAAC,IAAE,CAACD,GAAE,GAAEA,GAAE,GAAEC,GAAE,GAAEA,GAAE,CAAC,GAAG,KAAK,GAAG,GAAEE,KAAEqB,IAAG,UAAU,WAAW,KAAK,MAAK5B,EAAC;AAAE,qBAAOO,KAAE,EAAE,KAAK,WAAUA,IAAE,KAAK,QAAQ,SAAS,KAAG,KAAK,QAAQ,YAAU,WAAS,YAAUD;AAAA,YAAC,GAAE,WAAU,SAASN,IAAEE,IAAE;AAAC,qBAAOD,GAAE,KAAK,WAAUD,EAAC,GAAEE,MAAG,KAAK,OAAO,GAAE;AAAA,YAAI,EAAC,CAAC;AAAE,YAAA0B,IAAG,MAAI,IAAG,GAAG,MAAI,SAAS5B,IAAEC,IAAE;AAAC,qBAAO,IAAI,GAAGD,IAAEC,EAAC;AAAA,YAAC;AAAE,gBAAI,KAAG,GAAG,OAAO,EAAC,SAAQ,EAAC,SAAQ,KAAG,WAAU,EAAC,GAAE,YAAW,SAASD,IAAE;AAAC,gBAAE,MAAKA,EAAC,GAAE,EAAE,IAAI,GAAE,KAAK,UAAQ,KAAK,WAAS,CAAC;AAAA,YAAC,GAAE,OAAM,WAAU;AAAC,mBAAK,eAAa,KAAK,eAAe,GAAE,KAAK,iBAAee,IAAG,KAAK,YAAW,uBAAuB,IAAG,KAAK,QAAQ,EAAE,YAAY,KAAK,UAAU,GAAE,KAAK,QAAQ,GAAE,KAAK,GAAG,UAAS,KAAK,cAAa,IAAI;AAAA,YAAC,GAAE,UAAS,WAAU;AAAC,mBAAK,IAAI,UAAS,KAAK,cAAa,IAAI,GAAE,KAAK,kBAAkB;AAAA,YAAC,GAAE,WAAU,WAAU;AAAC,kBAAIf,KAAE,EAAC,WAAU,KAAK,QAAO,MAAK,KAAK,SAAQ,SAAQ,KAAK,SAAQ,SAAQ,KAAK,WAAU;AAAE,qBAAO,KAAK,kBAAgBA,GAAE,WAAS,KAAK,cAAaA;AAAA,YAAC,GAAE,aAAY,SAASA,IAAE;AAAC,mBAAK,iBAAiBA,GAAE,QAAOA,GAAE,IAAI;AAAA,YAAC,GAAE,SAAQ,WAAU;AAAC,mBAAK,iBAAiB,KAAK,KAAK,UAAU,GAAE,KAAK,KAAK,QAAQ,CAAC;AAAA,YAAC,GAAE,kBAAiB,SAASA,IAAEC,IAAE;AAAC,kBAAIC,KAAE,KAAK,KAAK,aAAaD,IAAE,KAAK,KAAK,GAAEE,KAAE,GAAG,KAAK,UAAU,GAAEC,KAAE,KAAK,KAAK,QAAQ,EAAE,WAAW,MAAG,KAAK,QAAQ,OAAO,GAAEC,KAAE,KAAK,KAAK,QAAQ,KAAK,SAAQJ,EAAC,GAAEK,KAAE,KAAK,KAAK,QAAQN,IAAEC,EAAC,EAAE,SAASI,EAAC,GAAEE,KAAEH,GAAE,WAAW,CAACF,EAAC,EAAE,IAAIC,EAAC,EAAE,IAAIC,EAAC,EAAE,SAASE,EAAC;AAAE,mBAAG,GAAG,KAAK,YAAWC,IAAEL,EAAC,IAAE,GAAG,KAAK,YAAWK,EAAC;AAAA,YAAC,GAAE,QAAO,WAAU;AAAC,uBAAQP,MAAK,KAAK,QAAQ,GAAE,KAAK,iBAAiB,KAAK,SAAQ,KAAK,KAAK,GAAE,KAAK,QAAQ,MAAK,QAAQA,EAAC,EAAE,OAAO;AAAA,YAAC,GAAE,YAAW,WAAU;AAAC,uBAAQA,MAAK,KAAK,QAAQ,MAAK,QAAQA,EAAC,EAAE,SAAS;AAAA,YAAC,GAAE,cAAa,WAAU;AAAC,uBAAQA,MAAK,KAAK,QAAQ,MAAK,QAAQA,EAAC,EAAE,QAAQ;AAAA,YAAC,GAAE,SAAQ,WAAU;AAAC,kBAAIA,KAAE,KAAK,QAAQ,SAAQC,KAAE,KAAK,KAAK,QAAQ,GAAEC,KAAE,KAAK,KAAK,2BAA2BD,GAAE,WAAW,CAACD,EAAC,CAAC,EAAE,MAAM;AAAE,mBAAK,UAAQ,IAAI,EAAEE,IAAEA,GAAE,IAAID,GAAE,WAAW,IAAE,IAAED,EAAC,CAAC,EAAE,MAAM,CAAC,GAAE,KAAK,UAAQ,KAAK,KAAK,UAAU,GAAE,KAAK,QAAM,KAAK,KAAK,QAAQ;AAAA,YAAC,EAAC,CAAC,GAAE,KAAG,GAAG,OAAO,EAAC,WAAU,WAAU;AAAC,kBAAIA,KAAE,GAAG,UAAU,UAAU,KAAK,IAAI;AAAE,qBAAOA,GAAE,eAAa,KAAK,iBAAgBA;AAAA,YAAC,GAAE,iBAAgB,WAAU;AAAC,mBAAK,uBAAqB;AAAA,YAAE,GAAE,OAAM,WAAU;AAAC,iBAAG,UAAU,MAAM,KAAK,IAAI,GAAE,KAAK,MAAM;AAAA,YAAC,GAAE,gBAAe,WAAU;AAAC,kBAAIA,KAAE,KAAK,aAAW,SAAS,cAAc,QAAQ;AAAE,iBAAGA,IAAE,aAAY,KAAK,cAAa,IAAI,GAAE,GAAGA,IAAE,gDAA+C,KAAK,UAAS,IAAI,GAAE,GAAGA,IAAE,YAAW,KAAK,iBAAgB,IAAI,GAAE,KAAK,OAAKA,GAAE,WAAW,IAAI;AAAA,YAAC,GAAE,mBAAkB,WAAU;AAAC,gBAAE,KAAK,cAAc,GAAE,OAAO,KAAK,MAAK,GAAG,KAAK,UAAU,GAAE,GAAG,KAAK,UAAU,GAAE,OAAO,KAAK;AAAA,YAAU,GAAE,cAAa,WAAU;AAAC,kBAAG,CAAC,KAAK,sBAAqB;AAAC,yBAAQA,MAAK,KAAK,gBAAc,MAAK,KAAK,QAAQ,MAAK,QAAQA,EAAC,EAAE,QAAQ;AAAE,qBAAK,QAAQ;AAAA,cAAC;AAAA,YAAC,GAAE,SAAQ,WAAU;AAAC,kBAAG,CAAC,KAAK,KAAK,kBAAgB,CAAC,KAAK,SAAQ;AAAC,mBAAG,UAAU,QAAQ,KAAK,IAAI;AAAE,oBAAIA,KAAE,KAAK,SAAQC,KAAE,KAAK,YAAWC,KAAEF,GAAE,QAAQ,GAAEG,KAAE,KAAG,IAAE;AAAE,mBAAGF,IAAED,GAAE,GAAG,GAAEC,GAAE,QAAME,KAAED,GAAE,GAAED,GAAE,SAAOE,KAAED,GAAE,GAAED,GAAE,MAAM,QAAMC,GAAE,IAAE,MAAKD,GAAE,MAAM,SAAOC,GAAE,IAAE,MAAK,MAAI,KAAK,KAAK,MAAM,GAAE,CAAC,GAAE,KAAK,KAAK,UAAU,CAACF,GAAE,IAAI,GAAE,CAACA,GAAE,IAAI,CAAC,GAAE,KAAK,KAAK,QAAQ;AAAA,cAAC;AAAA,YAAC,GAAE,QAAO,WAAU;AAAC,iBAAG,UAAU,OAAO,KAAK,IAAI,GAAE,KAAK,yBAAuB,KAAK,uBAAqB,OAAG,KAAK,aAAa;AAAA,YAAE,GAAE,WAAU,SAASA,IAAE;AAAC,mBAAK,iBAAiBA,EAAC,GAAE,KAAK,QAAQ,EAAEA,EAAC,CAAC,IAAEA;AAAE,kBAAIC,KAAED,GAAE,SAAO,EAAC,OAAMA,IAAE,MAAK,KAAK,WAAU,MAAK,KAAI;AAAE,mBAAK,cAAY,KAAK,UAAU,OAAKC,KAAG,KAAK,YAAUA,IAAE,KAAK,aAAW,KAAK,cAAY,KAAK;AAAA,YAAS,GAAE,UAAS,SAASD,IAAE;AAAC,mBAAK,eAAeA,EAAC;AAAA,YAAC,GAAE,aAAY,SAASA,IAAE;AAAC,kBAAIC,KAAED,GAAE,QAAOE,KAAED,GAAE,MAAKE,KAAEF,GAAE;AAAK,cAAAC,KAAEA,GAAE,OAAKC,KAAE,KAAK,YAAUA,IAAEA,KAAEA,GAAE,OAAKD,KAAE,KAAK,aAAWA,IAAE,OAAOF,GAAE,QAAO,OAAO,KAAK,QAAQ,EAAEA,EAAC,CAAC,GAAE,KAAK,eAAeA,EAAC;AAAA,YAAC,GAAE,aAAY,SAASA,IAAE;AAAC,mBAAK,oBAAoBA,EAAC,GAAEA,GAAE,SAAS,GAAEA,GAAE,QAAQ,GAAE,KAAK,eAAeA,EAAC;AAAA,YAAC,GAAE,cAAa,SAASA,IAAE;AAAC,mBAAK,iBAAiBA,EAAC,GAAE,KAAK,eAAeA,EAAC;AAAA,YAAC,GAAE,kBAAiB,SAASA,IAAE;AAAC,kBAAG,YAAU,OAAOA,GAAE,QAAQ,WAAU;AAAC,oBAAIC,IAAEC,IAAEC,KAAEH,GAAE,QAAQ,UAAU,MAAM,OAAO,GAAEI,KAAE,CAAC;AAAE,qBAAIF,KAAE,GAAEA,KAAEC,GAAE,QAAOD,MAAI;AAAC,sBAAGD,KAAE,OAAOE,GAAED,EAAC,CAAC,GAAE,MAAMD,EAAC,EAAE;AAAO,kBAAAG,GAAE,KAAKH,EAAC;AAAA,gBAAC;AAAC,gBAAAD,GAAE,QAAQ,aAAWI;AAAA,cAAC,MAAM,CAAAJ,GAAE,QAAQ,aAAWA,GAAE,QAAQ;AAAA,YAAS,GAAE,gBAAe,SAASA,IAAE;AAAC,mBAAK,SAAO,KAAK,oBAAoBA,EAAC,GAAE,KAAK,iBAAe,KAAK,kBAAgB,EAAE,KAAK,SAAQ,IAAI;AAAA,YAAE,GAAE,qBAAoB,SAASA,IAAE;AAAC,kBAAGA,GAAE,WAAU;AAAC,oBAAIC,MAAGD,GAAE,QAAQ,UAAQ,KAAG;AAAE,qBAAK,gBAAc,KAAK,iBAAe,IAAI,KAAE,KAAK,cAAc,OAAOA,GAAE,UAAU,IAAI,SAAS,CAACC,IAAEA,EAAC,CAAC,CAAC,GAAE,KAAK,cAAc,OAAOD,GAAE,UAAU,IAAI,IAAI,CAACC,IAAEA,EAAC,CAAC,CAAC;AAAA,cAAC;AAAA,YAAC,GAAE,SAAQ,WAAU;AAAC,mBAAK,iBAAe,MAAK,KAAK,kBAAgB,KAAK,cAAc,IAAI,OAAO,GAAE,KAAK,cAAc,IAAI,MAAM,IAAG,KAAK,OAAO,GAAE,KAAK,MAAM,GAAE,KAAK,gBAAc;AAAA,YAAI,GAAE,QAAO,WAAU;AAAC,kBAAID,KAAE,KAAK;AAAc,kBAAGA,IAAE;AAAC,oBAAIC,KAAED,GAAE,QAAQ;AAAE,qBAAK,KAAK,UAAUA,GAAE,IAAI,GAAEA,GAAE,IAAI,GAAEC,GAAE,GAAEA,GAAE,CAAC;AAAA,cAAC,MAAM,MAAK,KAAK,KAAK,GAAE,KAAK,KAAK,aAAa,GAAE,GAAE,GAAE,GAAE,GAAE,CAAC,GAAE,KAAK,KAAK,UAAU,GAAE,GAAE,KAAK,WAAW,OAAM,KAAK,WAAW,MAAM,GAAE,KAAK,KAAK,QAAQ;AAAA,YAAC,GAAE,OAAM,WAAU;AAAC,kBAAID,IAAEC,KAAE,KAAK;AAAc,kBAAG,KAAK,KAAK,KAAK,GAAEA,IAAE;AAAC,oBAAIC,KAAED,GAAE,QAAQ;AAAE,qBAAK,KAAK,UAAU,GAAE,KAAK,KAAK,KAAKA,GAAE,IAAI,GAAEA,GAAE,IAAI,GAAEC,GAAE,GAAEA,GAAE,CAAC,GAAE,KAAK,KAAK,KAAK;AAAA,cAAC;AAAC,mBAAK,WAAS;AAAG,uBAAQC,KAAE,KAAK,YAAWA,IAAEA,KAAEA,GAAE,KAAK,CAAAH,KAAEG,GAAE,QAAO,CAACF,MAAGD,GAAE,aAAWA,GAAE,UAAU,WAAWC,EAAC,MAAID,GAAE,YAAY;AAAE,mBAAK,WAAS,OAAG,KAAK,KAAK,QAAQ;AAAA,YAAC,GAAE,aAAY,SAASA,IAAEC,IAAE;AAAC,kBAAG,KAAK,UAAS;AAAC,oBAAIC,IAAEC,IAAEC,IAAEC,IAAEC,KAAEN,GAAE,QAAOO,KAAED,GAAE,QAAOE,KAAE,KAAK;AAAK,oBAAGD,IAAE;AAAC,uBAAIC,GAAE,UAAU,GAAEN,KAAE,GAAEA,KAAEK,IAAEL,MAAI;AAAC,yBAAIC,KAAE,GAAEC,KAAEE,GAAEJ,EAAC,EAAE,QAAOC,KAAEC,IAAED,KAAI,CAAAE,KAAEC,GAAEJ,EAAC,EAAEC,EAAC,GAAEK,GAAEL,KAAE,WAAS,QAAQ,EAAEE,GAAE,GAAEA,GAAE,CAAC;AAAE,oBAAAJ,MAAGO,GAAE,UAAU;AAAA,kBAAC;AAAC,uBAAK,YAAYA,IAAER,EAAC;AAAA,gBAAC;AAAA,cAAC;AAAA,YAAC,GAAE,eAAc,SAASA,IAAE;AAAC,kBAAG,KAAK,YAAU,CAACA,GAAE,OAAO,GAAE;AAAC,oBAAIC,KAAED,GAAE,QAAOE,KAAE,KAAK,MAAKC,KAAE,KAAK,IAAI,KAAK,MAAMH,GAAE,OAAO,GAAE,CAAC,GAAEI,MAAG,KAAK,IAAI,KAAK,MAAMJ,GAAE,QAAQ,GAAE,CAAC,KAAGG,MAAGA;AAAE,sBAAIC,OAAIF,GAAE,KAAK,GAAEA,GAAE,MAAM,GAAEE,EAAC,IAAGF,GAAE,UAAU,GAAEA,GAAE,IAAID,GAAE,GAAEA,GAAE,IAAEG,IAAED,IAAE,GAAE,IAAE,KAAK,IAAG,KAAE,GAAE,MAAIC,MAAGF,GAAE,QAAQ,GAAE,KAAK,YAAYA,IAAEF,EAAC;AAAA,cAAC;AAAA,YAAC,GAAE,aAAY,SAASA,IAAEC,IAAE;AAAC,kBAAIC,KAAED,GAAE;AAAQ,cAAAC,GAAE,SAAOF,GAAE,cAAYE,GAAE,aAAYF,GAAE,YAAUE,GAAE,aAAWA,GAAE,OAAMF,GAAE,KAAKE,GAAE,YAAU,SAAS,IAAGA,GAAE,UAAQ,MAAIA,GAAE,WAASF,GAAE,eAAaA,GAAE,YAAYC,GAAE,WAASA,GAAE,QAAQ,cAAY,CAAC,CAAC,GAAED,GAAE,cAAYE,GAAE,SAAQF,GAAE,YAAUE,GAAE,QAAOF,GAAE,cAAYE,GAAE,OAAMF,GAAE,UAAQE,GAAE,SAAQF,GAAE,WAASE,GAAE,UAASF,GAAE,OAAO;AAAA,YAAE,GAAE,UAAS,SAASA,IAAE;AAAC,uBAAQC,IAAEC,IAAEC,KAAE,KAAK,KAAK,uBAAuBH,EAAC,GAAEI,KAAE,KAAK,YAAWA,IAAEA,KAAEA,GAAE,KAAK,EAACH,KAAEG,GAAE,OAAO,QAAQ,eAAaH,GAAE,eAAeE,EAAC,MAAI,YAAUH,GAAE,QAAM,eAAaA,GAAE,QAAM,CAAC,KAAK,KAAK,gBAAgBC,EAAC,OAAKC,KAAED;AAAG,cAAAC,OAAI,GAAGF,EAAC,GAAE,KAAK,WAAW,CAACE,EAAC,GAAEF,EAAC;AAAA,YAAE,GAAE,cAAa,SAASA,IAAE;AAAC,kBAAG,KAAK,QAAM,CAAC,KAAK,KAAK,SAAS,OAAO,KAAG,CAAC,KAAK,KAAK,gBAAe;AAAC,oBAAIC,KAAE,KAAK,KAAK,uBAAuBD,EAAC;AAAE,qBAAK,kBAAkBA,IAAEC,EAAC;AAAA,cAAC;AAAA,YAAC,GAAE,iBAAgB,SAASD,IAAE;AAAC,kBAAIC,KAAE,KAAK;AAAc,cAAAA,OAAI,GAAG,KAAK,YAAW,qBAAqB,GAAE,KAAK,WAAW,CAACA,EAAC,GAAED,IAAE,UAAU,GAAE,KAAK,gBAAc,MAAK,KAAK,uBAAqB;AAAA,YAAG,GAAE,mBAAkB,SAASA,IAAEC,IAAE;AAAC,kBAAG,CAAC,KAAK,sBAAqB;AAAC,yBAAQC,IAAEE,IAAEC,KAAE,KAAK,YAAWA,IAAEA,KAAEA,GAAE,KAAK,EAACH,KAAEG,GAAE,OAAO,QAAQ,eAAaH,GAAE,eAAeD,EAAC,MAAIG,KAAEF;AAAG,gBAAAE,OAAI,KAAK,kBAAgB,KAAK,gBAAgBJ,EAAC,GAAEI,OAAIW,IAAG,KAAK,YAAW,qBAAqB,GAAE,KAAK,WAAW,CAACX,EAAC,GAAEJ,IAAE,WAAW,GAAE,KAAK,gBAAcI,MAAI,KAAK,iBAAe,KAAK,WAAW,CAAC,KAAK,aAAa,GAAEJ,EAAC,GAAE,KAAK,uBAAqB,MAAG,WAAWG,IAAG,WAAU;AAAC,uBAAK,uBAAqB;AAAA,gBAAE,IAAG,IAAI,GAAE,EAAE;AAAA,cAAC;AAAA,YAAC,GAAE,YAAW,SAASH,IAAEC,IAAEC,IAAE;AAAC,mBAAK,KAAK,cAAcD,IAAEC,MAAGD,GAAE,MAAKD,EAAC;AAAA,YAAC,GAAE,eAAc,SAASA,IAAE;AAAC,kBAAIC,KAAED,GAAE;AAAO,kBAAGC,IAAE;AAAC,oBAAIC,KAAED,GAAE,MAAKE,KAAEF,GAAE;AAAK,gBAAAC,OAAIA,GAAE,OAAKC,IAAEA,KAAEA,GAAE,OAAKD,KAAEA,OAAI,KAAK,aAAWA,KAAGD,GAAE,OAAK,KAAK,WAAU,KAAK,UAAU,OAAKA,IAAEA,GAAE,OAAK,MAAK,KAAK,YAAUA,IAAE,KAAK,eAAeD,EAAC;AAAA,cAAE;AAAA,YAAC,GAAE,cAAa,SAASA,IAAE;AAAC,kBAAIC,KAAED,GAAE;AAAO,kBAAGC,IAAE;AAAC,oBAAIC,KAAED,GAAE,MAAKE,KAAEF,GAAE;AAAK,gBAAAE,OAAIA,GAAE,OAAKD,IAAEA,KAAEA,GAAE,OAAKC,KAAEA,OAAI,KAAK,YAAUA,KAAGF,GAAE,OAAK,MAAKA,GAAE,OAAK,KAAK,YAAW,KAAK,WAAW,OAAKA,IAAE,KAAK,aAAWA,IAAE,KAAK,eAAeD,EAAC;AAAA,cAAE;AAAA,YAAC,EAAC,CAAC;AAAE,qBAAS,GAAGA,IAAE;AAAC,qBAAO,KAAG,IAAI,GAAGA,EAAC,IAAE;AAAA,YAAI;AAAC,gBAAI,MAAG,WAAU;AAAC,kBAAG;AAAC,uBAAO,SAAS,WAAW,IAAI,QAAO,+BAA+B,GAAE,SAASA,IAAE;AAAC,yBAAO,SAAS,cAAc,WAASA,KAAE,gBAAgB;AAAA,gBAAC;AAAA,cAAC,SAAOA,IAAE;AAAC,uBAAO,SAASA,IAAE;AAAC,yBAAO,SAAS,cAAc,MAAIA,KAAE,sDAAsD;AAAA,gBAAC;AAAA,cAAC;AAAA,YAAC,GAAE,GAAE,KAAG,EAAC,gBAAe,WAAU;AAAC,mBAAK,aAAWa,IAAG,OAAM,uBAAuB;AAAA,YAAC,GAAE,SAAQ,WAAU;AAAC,mBAAK,KAAK,mBAAiB,GAAG,UAAU,QAAQ,KAAK,IAAI,GAAE,KAAK,KAAK,QAAQ;AAAA,YAAE,GAAE,WAAU,SAASb,IAAE;AAAC,kBAAIC,KAAED,GAAE,aAAW,GAAG,OAAO;AAAE,cAAAe,IAAGd,IAAE,wBAAsB,KAAK,QAAQ,aAAW,GAAG,GAAEA,GAAE,YAAU,OAAMD,GAAE,QAAM,GAAG,MAAM,GAAEC,GAAE,YAAYD,GAAE,KAAK,GAAE,KAAK,aAAaA,EAAC,GAAE,KAAK,QAAQ,EAAEA,EAAC,CAAC,IAAEA;AAAA,YAAC,GAAE,UAAS,SAASA,IAAE;AAAC,kBAAIC,KAAED,GAAE;AAAW,mBAAK,WAAW,YAAYC,EAAC,GAAED,GAAE,QAAQ,eAAaA,GAAE,qBAAqBC,EAAC;AAAA,YAAC,GAAE,aAAY,SAASD,IAAE;AAAC,kBAAIC,KAAED,GAAE;AAAW,iBAAGC,EAAC,GAAED,GAAE,wBAAwBC,EAAC,GAAE,OAAO,KAAK,QAAQ,EAAED,EAAC,CAAC;AAAA,YAAC,GAAE,cAAa,SAASA,IAAE;AAAC,kBAAIC,KAAED,GAAE,SAAQE,KAAEF,GAAE,OAAMG,KAAEH,GAAE,SAAQI,KAAEJ,GAAE;AAAW,cAAAI,GAAE,UAAQ,CAAC,CAACD,GAAE,QAAOC,GAAE,SAAO,CAAC,CAACD,GAAE,MAAKA,GAAE,UAAQF,OAAIA,KAAED,GAAE,UAAQ,GAAG,QAAQ,IAAGI,GAAE,YAAYH,EAAC,GAAEA,GAAE,SAAOE,GAAE,SAAO,MAAKF,GAAE,QAAME,GAAE,OAAMF,GAAE,UAAQE,GAAE,SAAQA,GAAE,YAAUF,GAAE,YAAU,EAAEE,GAAE,SAAS,IAAEA,GAAE,UAAU,KAAK,GAAG,IAAEA,GAAE,UAAU,QAAQ,YAAW,GAAG,IAAEF,GAAE,YAAU,IAAGA,GAAE,SAAOE,GAAE,QAAQ,QAAQ,QAAO,MAAM,GAAEF,GAAE,YAAUE,GAAE,YAAUF,OAAIG,GAAE,YAAYH,EAAC,GAAED,GAAE,UAAQ,OAAMG,GAAE,QAAMD,OAAIA,KAAEF,GAAE,QAAM,GAAG,MAAM,IAAGI,GAAE,YAAYF,EAAC,GAAEA,GAAE,QAAMC,GAAE,aAAWA,GAAE,OAAMD,GAAE,UAAQC,GAAE,eAAaD,OAAIE,GAAE,YAAYF,EAAC,GAAEF,GAAE,QAAM;AAAA,YAAK,GAAE,eAAc,SAASA,IAAE;AAAC,kBAAIC,KAAED,GAAE,OAAO,MAAM,GAAEE,KAAE,KAAK,MAAMF,GAAE,OAAO,GAAEG,KAAE,KAAK,MAAMH,GAAE,YAAUE,EAAC;AAAE,mBAAK,SAASF,IAAEA,GAAE,OAAO,IAAE,SAAO,QAAMC,GAAE,IAAE,MAAIA,GAAE,IAAE,MAAIC,KAAE,MAAIC,KAAE,aAAa;AAAA,YAAC,GAAE,UAAS,SAASH,IAAEC,IAAE;AAAC,cAAAD,GAAE,MAAM,IAAEC;AAAA,YAAC,GAAE,eAAc,SAASD,IAAE;AAAC,iBAAGA,GAAE,UAAU;AAAA,YAAC,GAAE,cAAa,SAASA,IAAE;AAAC,cAAAc,IAAGd,GAAE,UAAU;AAAA,YAAC,EAAC,GAAE,KAAG,KAAG,KAAG,GAAE,KAAG,GAAG,OAAO,EAAC,WAAU,WAAU;AAAC,kBAAIA,KAAE,GAAG,UAAU,UAAU,KAAK,IAAI;AAAE,qBAAOA,GAAE,YAAU,KAAK,cAAaA;AAAA,YAAC,GAAE,gBAAe,WAAU;AAAC,mBAAK,aAAW,GAAG,KAAK,GAAE,KAAK,WAAW,aAAa,kBAAiB,MAAM,GAAE,KAAK,aAAW,GAAG,GAAG,GAAE,KAAK,WAAW,YAAY,KAAK,UAAU;AAAA,YAAC,GAAE,mBAAkB,WAAU;AAAC,iBAAG,KAAK,UAAU,GAAE,GAAG,KAAK,UAAU,GAAE,OAAO,KAAK,YAAW,OAAO,KAAK,YAAW,OAAO,KAAK;AAAA,YAAQ,GAAE,cAAa,WAAU;AAAC,mBAAK,QAAQ;AAAA,YAAC,GAAE,SAAQ,WAAU;AAAC,kBAAG,CAAC,KAAK,KAAK,kBAAgB,CAAC,KAAK,SAAQ;AAAC,mBAAG,UAAU,QAAQ,KAAK,IAAI;AAAE,oBAAIA,KAAE,KAAK,SAAQC,KAAED,GAAE,QAAQ,GAAEE,KAAE,KAAK;AAAW,qBAAK,YAAU,KAAK,SAAS,OAAOD,EAAC,MAAI,KAAK,WAASA,IAAEC,GAAE,aAAa,SAAQD,GAAE,CAAC,GAAEC,GAAE,aAAa,UAASD,GAAE,CAAC,IAAG,GAAGC,IAAEF,GAAE,GAAG,GAAEE,GAAE,aAAa,WAAU,CAACF,GAAE,IAAI,GAAEA,GAAE,IAAI,GAAEC,GAAE,GAAEA,GAAE,CAAC,EAAE,KAAK,GAAG,CAAC,GAAE,KAAK,KAAK,QAAQ;AAAA,cAAC;AAAA,YAAC,GAAE,WAAU,SAASD,IAAE;AAAC,kBAAIC,KAAED,GAAE,QAAM,GAAG,MAAM;AAAE,cAAAA,GAAE,QAAQ,aAAWe,IAAGd,IAAED,GAAE,QAAQ,SAAS,GAAEA,GAAE,QAAQ,eAAae,IAAGd,IAAE,qBAAqB,GAAE,KAAK,aAAaD,EAAC,GAAE,KAAK,QAAQ,EAAEA,EAAC,CAAC,IAAEA;AAAA,YAAC,GAAE,UAAS,SAASA,IAAE;AAAC,mBAAK,cAAY,KAAK,eAAe,GAAE,KAAK,WAAW,YAAYA,GAAE,KAAK,GAAEA,GAAE,qBAAqBA,GAAE,KAAK;AAAA,YAAC,GAAE,aAAY,SAASA,IAAE;AAAC,iBAAGA,GAAE,KAAK,GAAEA,GAAE,wBAAwBA,GAAE,KAAK,GAAE,OAAO,KAAK,QAAQ,EAAEA,EAAC,CAAC;AAAA,YAAC,GAAE,aAAY,SAASA,IAAE;AAAC,cAAAA,GAAE,SAAS,GAAEA,GAAE,QAAQ;AAAA,YAAC,GAAE,cAAa,SAASA,IAAE;AAAC,kBAAIC,KAAED,GAAE,OAAME,KAAEF,GAAE;AAAQ,cAAAC,OAAIC,GAAE,UAAQD,GAAE,aAAa,UAASC,GAAE,KAAK,GAAED,GAAE,aAAa,kBAAiBC,GAAE,OAAO,GAAED,GAAE,aAAa,gBAAeC,GAAE,MAAM,GAAED,GAAE,aAAa,kBAAiBC,GAAE,OAAO,GAAED,GAAE,aAAa,mBAAkBC,GAAE,QAAQ,GAAEA,GAAE,YAAUD,GAAE,aAAa,oBAAmBC,GAAE,SAAS,IAAED,GAAE,gBAAgB,kBAAkB,GAAEC,GAAE,aAAWD,GAAE,aAAa,qBAAoBC,GAAE,UAAU,IAAED,GAAE,gBAAgB,mBAAmB,KAAGA,GAAE,aAAa,UAAS,MAAM,GAAEC,GAAE,QAAMD,GAAE,aAAa,QAAOC,GAAE,aAAWA,GAAE,KAAK,GAAED,GAAE,aAAa,gBAAeC,GAAE,WAAW,GAAED,GAAE,aAAa,aAAYC,GAAE,YAAU,SAAS,KAAGD,GAAE,aAAa,QAAO,MAAM;AAAA,YAAE,GAAE,aAAY,SAASD,IAAEC,IAAE;AAAC,mBAAK,SAASD,IAAEU,GAAEV,GAAE,QAAOC,EAAC,CAAC;AAAA,YAAC,GAAE,eAAc,SAASD,IAAE;AAAC,kBAAIC,KAAED,GAAE,QAAOE,KAAE,KAAK,IAAI,KAAK,MAAMF,GAAE,OAAO,GAAE,CAAC,GAAEG,KAAE,MAAID,KAAE,OAAK,KAAK,IAAI,KAAK,MAAMF,GAAE,QAAQ,GAAE,CAAC,KAAGE,MAAG,WAAUE,KAAEJ,GAAE,OAAO,IAAE,SAAO,OAAKC,GAAE,IAAEC,MAAG,MAAID,GAAE,IAAEE,KAAE,IAAED,KAAE,QAAMC,KAAE,IAAE,CAACD,KAAE;AAAM,mBAAK,SAASF,IAAEI,EAAC;AAAA,YAAC,GAAE,UAAS,SAASJ,IAAEC,IAAE;AAAC,cAAAD,GAAE,MAAM,aAAa,KAAIC,EAAC;AAAA,YAAC,GAAE,eAAc,SAASD,IAAE;AAAC,iBAAGA,GAAE,KAAK;AAAA,YAAC,GAAE,cAAa,SAASA,IAAE;AAAC,cAAAc,IAAGd,GAAE,KAAK;AAAA,YAAC,EAAC,CAAC;AAAE,qBAAS,GAAGA,IAAE;AAAC,qBAAO,MAAI,KAAG,IAAI,GAAGA,EAAC,IAAE;AAAA,YAAI;AAAC,kBAAI,GAAG,QAAQ,EAAE,GAAE,GAAG,QAAQ,EAAC,aAAY,SAASA,IAAE;AAAC,kBAAIC,KAAED,GAAE,QAAQ,YAAU,KAAK,iBAAiBA,GAAE,QAAQ,IAAI,KAAG,KAAK,QAAQ,YAAU,KAAK;AAAU,qBAAOC,OAAIA,KAAE,KAAK,YAAU,KAAK,gBAAgB,IAAG,KAAK,SAASA,EAAC,KAAG,KAAK,SAASA,EAAC,GAAEA;AAAA,YAAC,GAAE,kBAAiB,SAASD,IAAE;AAAC,kBAAG,kBAAgBA,MAAG,WAASA,GAAE,QAAM;AAAG,kBAAIC,KAAE,KAAK,eAAeD,EAAC;AAAE,qBAAO,WAASC,OAAIA,KAAE,KAAK,gBAAgB,EAAC,MAAKD,GAAC,CAAC,GAAE,KAAK,eAAeA,EAAC,IAAEC,KAAGA;AAAA,YAAC,GAAE,iBAAgB,SAASD,IAAE;AAAC,qBAAO,KAAK,QAAQ,gBAAc,GAAGA,EAAC,KAAG,GAAGA,EAAC;AAAA,YAAC,EAAC,CAAC;AAAE,gBAAI,KAAG,GAAG,OAAO,EAAC,YAAW,SAASA,IAAEC,IAAE;AAAC,iBAAG,UAAU,WAAW,KAAK,MAAK,KAAK,iBAAiBD,EAAC,GAAEC,EAAC;AAAA,YAAC,GAAE,WAAU,SAASD,IAAE;AAAC,qBAAO,KAAK,WAAW,KAAK,iBAAiBA,EAAC,CAAC;AAAA,YAAC,GAAE,kBAAiB,SAASA,IAAE;AAAC,qBAAM,EAAEA,KAAE,EAAEA,EAAC,GAAG,aAAa,GAAEA,GAAE,aAAa,GAAEA,GAAE,aAAa,GAAEA,GAAE,aAAa,CAAC;AAAA,YAAC,EAAC,CAAC;AAAE,eAAG,SAAO,IAAG,GAAG,eAAaU,IAAE,GAAG,kBAAgB,IAAG,GAAG,iBAAe,IAAG,GAAG,kBAAgB,IAAG,GAAG,iBAAe,IAAG,GAAG,kBAAgB,IAAG,GAAG,aAAW,IAAG,GAAG,YAAU,IAAG,GAAG,aAAa,EAAC,SAAQ,KAAE,CAAC;AAAE,gBAAI,KAAG,GAAG,OAAO,EAAC,YAAW,SAASV,IAAE;AAAC,mBAAK,OAAKA,IAAE,KAAK,aAAWA,GAAE,YAAW,KAAK,QAAMA,GAAE,OAAO,aAAY,KAAK,qBAAmB,GAAEA,GAAE,GAAG,UAAS,KAAK,UAAS,IAAI;AAAA,YAAC,GAAE,UAAS,WAAU;AAAC,iBAAG,KAAK,YAAW,aAAY,KAAK,cAAa,IAAI;AAAA,YAAC,GAAE,aAAY,WAAU;AAAC,iBAAG,KAAK,YAAW,aAAY,KAAK,cAAa,IAAI;AAAA,YAAC,GAAE,OAAM,WAAU;AAAC,qBAAO,KAAK;AAAA,YAAM,GAAE,UAAS,WAAU;AAAC,iBAAG,KAAK,KAAK,GAAE,OAAO,KAAK;AAAA,YAAK,GAAE,aAAY,WAAU;AAAC,mBAAK,qBAAmB,GAAE,KAAK,SAAO;AAAA,YAAE,GAAE,0BAAyB,WAAU;AAAC,oBAAI,KAAK,uBAAqB,aAAa,KAAK,kBAAkB,GAAE,KAAK,qBAAmB;AAAA,YAAE,GAAE,cAAa,SAASA,IAAE;AAAC,kBAAG,CAACA,GAAE,YAAU,MAAIA,GAAE,SAAO,MAAIA,GAAE,OAAO,QAAM;AAAG,mBAAK,yBAAyB,GAAE,KAAK,YAAY,GAAE,GAAG,GAAE,GAAG,GAAE,KAAK,cAAY,KAAK,KAAK,2BAA2BA,EAAC,GAAE,GAAG,UAAS,EAAC,aAAY,IAAG,WAAU,KAAK,cAAa,SAAQ,KAAK,YAAW,SAAQ,KAAK,WAAU,GAAE,IAAI;AAAA,YAAC,GAAE,cAAa,SAASA,IAAE;AAAC,mBAAK,WAAS,KAAK,SAAO,MAAG,KAAK,OAAKa,IAAG,OAAM,oBAAmB,KAAK,UAAU,GAAEE,IAAG,KAAK,YAAW,mBAAmB,GAAE,KAAK,KAAK,KAAK,cAAc,IAAG,KAAK,SAAO,KAAK,KAAK,2BAA2Bf,EAAC;AAAE,kBAAIC,KAAE,IAAI,EAAE,KAAK,QAAO,KAAK,WAAW,GAAEC,KAAED,GAAE,QAAQ;AAAE,iBAAG,KAAK,MAAKA,GAAE,GAAG,GAAE,KAAK,KAAK,MAAM,QAAMC,GAAE,IAAE,MAAK,KAAK,KAAK,MAAM,SAAOA,GAAE,IAAE;AAAA,YAAI,GAAE,SAAQ,WAAU;AAAC,mBAAK,WAAS,GAAG,KAAK,IAAI,GAAE,GAAG,KAAK,YAAW,mBAAmB,IAAG,GAAG,GAAE,GAAG,GAAE,GAAG,UAAS,EAAC,aAAY,IAAG,WAAU,KAAK,cAAa,SAAQ,KAAK,YAAW,SAAQ,KAAK,WAAU,GAAE,IAAI;AAAA,YAAC,GAAE,YAAW,SAASF,IAAE;AAAC,mBAAI,MAAIA,GAAE,SAAO,MAAIA,GAAE,YAAU,KAAK,QAAQ,GAAE,KAAK,SAAQ;AAAC,qBAAK,yBAAyB,GAAE,KAAK,qBAAmB,WAAWG,GAAE,KAAK,aAAY,IAAI,GAAE,CAAC;AAAE,oBAAIF,KAAE,IAAI,EAAE,KAAK,KAAK,uBAAuB,KAAK,WAAW,GAAE,KAAK,KAAK,uBAAuB,KAAK,MAAM,CAAC;AAAE,qBAAK,KAAK,UAAUA,EAAC,EAAE,KAAK,cAAa,EAAC,eAAcA,GAAC,CAAC;AAAA,cAAC;AAAA,YAAC,GAAE,YAAW,SAASD,IAAE;AAAC,qBAAKA,GAAE,WAAS,KAAK,QAAQ;AAAA,YAAC,EAAC,CAAC;AAAE,eAAG,YAAY,cAAa,WAAU,EAAE,GAAE,GAAG,aAAa,EAAC,iBAAgB,KAAE,CAAC;AAAE,gBAAI,KAAG,GAAG,OAAO,EAAC,UAAS,WAAU;AAAC,mBAAK,KAAK,GAAG,YAAW,KAAK,gBAAe,IAAI;AAAA,YAAC,GAAE,aAAY,WAAU;AAAC,mBAAK,KAAK,IAAI,YAAW,KAAK,gBAAe,IAAI;AAAA,YAAC,GAAE,gBAAe,SAASA,IAAE;AAAC,kBAAIC,KAAE,KAAK,MAAKC,KAAED,GAAE,QAAQ,GAAEE,KAAEF,GAAE,QAAQ,WAAUG,KAAEJ,GAAE,cAAc,WAASE,KAAEC,KAAED,KAAEC;AAAE,2BAAWF,GAAE,QAAQ,kBAAgBA,GAAE,QAAQG,EAAC,IAAEH,GAAE,cAAcD,GAAE,gBAAeI,EAAC;AAAA,YAAC,EAAC,CAAC;AAAE,eAAG,YAAY,cAAa,mBAAkB,EAAE,GAAE,GAAG,aAAa,EAAC,UAAS,MAAG,SAAQ,CAAC,IAAG,qBAAoB,MAAK,iBAAgB,IAAE,GAAE,eAAc,KAAG,eAAc,OAAG,oBAAmB,EAAC,CAAC;AAAE,gBAAI,KAAG,GAAG,OAAO,EAAC,UAAS,WAAU;AAAC,kBAAG,CAAC,KAAK,YAAW;AAAC,oBAAIJ,KAAE,KAAK;AAAK,qBAAK,aAAW,IAAI,GAAGA,GAAE,UAASA,GAAE,UAAU,GAAE,KAAK,WAAW,GAAG,EAAC,WAAU,KAAK,cAAa,MAAK,KAAK,SAAQ,SAAQ,KAAK,WAAU,GAAE,IAAI,GAAE,KAAK,WAAW,GAAG,WAAU,KAAK,iBAAgB,IAAI,GAAEA,GAAE,QAAQ,kBAAgB,KAAK,WAAW,GAAG,WAAU,KAAK,gBAAe,IAAI,GAAEA,GAAE,GAAG,WAAU,KAAK,YAAW,IAAI,GAAEA,GAAE,UAAU,KAAK,YAAW,IAAI;AAAA,cAAE;AAAC,cAAAe,IAAG,KAAK,KAAK,YAAW,iCAAiC,GAAE,KAAK,WAAW,OAAO,GAAE,KAAK,aAAW,CAAC,GAAE,KAAK,SAAO,CAAC;AAAA,YAAC,GAAE,aAAY,WAAU;AAAC,iBAAG,KAAK,KAAK,YAAW,cAAc,GAAE,GAAG,KAAK,KAAK,YAAW,oBAAoB,GAAE,KAAK,WAAW,QAAQ;AAAA,YAAC,GAAE,OAAM,WAAU;AAAC,qBAAO,KAAK,cAAY,KAAK,WAAW;AAAA,YAAM,GAAE,QAAO,WAAU;AAAC,qBAAO,KAAK,cAAY,KAAK,WAAW;AAAA,YAAO,GAAE,cAAa,WAAU;AAAC,kBAAIf,KAAE,KAAK;AAAK,kBAAGA,GAAE,MAAM,GAAE,KAAK,KAAK,QAAQ,aAAW,KAAK,KAAK,QAAQ,oBAAmB;AAAC,oBAAIC,KAAE,EAAE,KAAK,KAAK,QAAQ,SAAS;AAAE,qBAAK,eAAa,EAAE,KAAK,KAAK,uBAAuBA,GAAE,aAAa,CAAC,EAAE,WAAW,EAAE,GAAE,KAAK,KAAK,uBAAuBA,GAAE,aAAa,CAAC,EAAE,WAAW,EAAE,EAAE,IAAI,KAAK,KAAK,QAAQ,CAAC,CAAC,GAAE,KAAK,aAAW,KAAK,IAAI,GAAE,KAAK,IAAI,GAAE,KAAK,KAAK,QAAQ,kBAAkB,CAAC;AAAA,cAAC,MAAM,MAAK,eAAa;AAAK,cAAAD,GAAE,KAAK,WAAW,EAAE,KAAK,WAAW,GAAEA,GAAE,QAAQ,YAAU,KAAK,aAAW,CAAC,GAAE,KAAK,SAAO,CAAC;AAAA,YAAE,GAAE,SAAQ,SAASA,IAAE;AAAC,kBAAG,KAAK,KAAK,QAAQ,SAAQ;AAAC,oBAAIC,KAAE,KAAK,YAAU,CAAC,oBAAI,QAAKC,KAAE,KAAK,WAAS,KAAK,WAAW,WAAS,KAAK,WAAW;AAAQ,qBAAK,WAAW,KAAKA,EAAC,GAAE,KAAK,OAAO,KAAKD,EAAC,GAAE,KAAK,gBAAgBA,EAAC;AAAA,cAAC;AAAC,mBAAK,KAAK,KAAK,QAAOD,EAAC,EAAE,KAAK,QAAOA,EAAC;AAAA,YAAC,GAAE,iBAAgB,SAASA,IAAE;AAAC,qBAAK,KAAK,WAAW,SAAO,KAAGA,KAAE,KAAK,OAAO,CAAC,IAAE,KAAI,MAAK,WAAW,MAAM,GAAE,KAAK,OAAO,MAAM;AAAA,YAAC,GAAE,YAAW,WAAU;AAAC,kBAAIA,KAAE,KAAK,KAAK,QAAQ,EAAE,SAAS,CAAC,GAAEC,KAAE,KAAK,KAAK,mBAAmB,CAAC,GAAE,CAAC,CAAC;AAAE,mBAAK,sBAAoBA,GAAE,SAASD,EAAC,EAAE,GAAE,KAAK,cAAY,KAAK,KAAK,oBAAoB,EAAE,QAAQ,EAAE;AAAA,YAAC,GAAE,eAAc,SAASA,IAAEC,IAAE;AAAC,qBAAOD,MAAGA,KAAEC,MAAG,KAAK;AAAA,YAAU,GAAE,iBAAgB,WAAU;AAAC,kBAAG,KAAK,cAAY,KAAK,cAAa;AAAC,oBAAID,KAAE,KAAK,WAAW,QAAQ,SAAS,KAAK,WAAW,SAAS,GAAEC,KAAE,KAAK;AAAa,gBAAAD,GAAE,IAAEC,GAAE,IAAI,MAAID,GAAE,IAAE,KAAK,cAAcA,GAAE,GAAEC,GAAE,IAAI,CAAC,IAAGD,GAAE,IAAEC,GAAE,IAAI,MAAID,GAAE,IAAE,KAAK,cAAcA,GAAE,GAAEC,GAAE,IAAI,CAAC,IAAGD,GAAE,IAAEC,GAAE,IAAI,MAAID,GAAE,IAAE,KAAK,cAAcA,GAAE,GAAEC,GAAE,IAAI,CAAC,IAAGD,GAAE,IAAEC,GAAE,IAAI,MAAID,GAAE,IAAE,KAAK,cAAcA,GAAE,GAAEC,GAAE,IAAI,CAAC,IAAG,KAAK,WAAW,UAAQ,KAAK,WAAW,UAAU,IAAID,EAAC;AAAA,cAAC;AAAA,YAAC,GAAE,gBAAe,WAAU;AAAC,kBAAIA,KAAE,KAAK,aAAYC,KAAE,KAAK,MAAMD,KAAE,CAAC,GAAEE,KAAE,KAAK,qBAAoBC,KAAE,KAAK,WAAW,QAAQ,GAAEC,MAAGD,KAAEF,KAAEC,MAAGF,KAAEC,KAAEC,IAAEG,MAAGF,KAAEF,KAAEC,MAAGF,KAAEC,KAAEC,IAAEI,KAAE,KAAK,IAAIF,KAAEF,EAAC,IAAE,KAAK,IAAIG,KAAEH,EAAC,IAAEE,KAAEC;AAAE,mBAAK,WAAW,UAAQ,KAAK,WAAW,QAAQ,MAAM,GAAE,KAAK,WAAW,QAAQ,IAAEC;AAAA,YAAC,GAAE,YAAW,SAASN,IAAE;AAAC,kBAAIC,KAAE,KAAK,MAAKC,KAAED,GAAE,SAAQE,KAAE,CAACD,GAAE,WAAS,KAAK,OAAO,SAAO;AAAE,kBAAGD,GAAE,KAAK,WAAUD,EAAC,GAAEG,GAAE,CAAAF,GAAE,KAAK,SAAS;AAAA,mBAAM;AAAC,qBAAK,gBAAgB,CAAC,oBAAI,MAAI;AAAE,oBAAIG,KAAE,KAAK,SAAS,SAAS,KAAK,WAAW,CAAC,CAAC,GAAEC,MAAG,KAAK,YAAU,KAAK,OAAO,CAAC,KAAG,KAAIC,KAAEJ,GAAE,eAAcK,KAAEH,GAAE,WAAWE,KAAED,EAAC,GAAEG,KAAED,GAAE,WAAW,CAAC,GAAE,CAAC,CAAC,GAAES,KAAE,KAAK,IAAId,GAAE,iBAAgBM,EAAC,GAAES,KAAEV,GAAE,WAAWS,KAAER,EAAC,GAAEU,KAAEF,MAAGd,GAAE,sBAAoBI,KAAGa,KAAEF,GAAE,WAAW,CAACC,KAAE,CAAC,EAAE,MAAM;AAAE,gBAAAC,GAAE,KAAGA,GAAE,KAAGA,KAAElB,GAAE,aAAakB,IAAElB,GAAE,QAAQ,SAAS,GAAE,GAAG,WAAU;AAAC,kBAAAA,GAAE,MAAMkB,IAAE,EAAC,UAASD,IAAE,eAAcZ,IAAE,aAAY,MAAG,SAAQ,KAAE,CAAC;AAAA,gBAAC,EAAE,KAAGL,GAAE,KAAK,SAAS;AAAA,cAAC;AAAA,YAAC,EAAC,CAAC;AAAE,eAAG,YAAY,cAAa,YAAW,EAAE,GAAE,GAAG,aAAa,EAAC,UAAS,MAAG,kBAAiB,GAAE,CAAC;AAAE,gBAAI,KAAG,GAAG,OAAO,EAAC,UAAS,EAAC,MAAK,CAAC,EAAE,GAAE,OAAM,CAAC,EAAE,GAAE,MAAK,CAAC,EAAE,GAAE,IAAG,CAAC,EAAE,GAAE,QAAO,CAAC,KAAI,KAAI,IAAG,GAAG,GAAE,SAAQ,CAAC,KAAI,KAAI,IAAG,GAAG,EAAC,GAAE,YAAW,SAASD,IAAE;AAAC,mBAAK,OAAKA,IAAE,KAAK,aAAaA,GAAE,QAAQ,gBAAgB,GAAE,KAAK,cAAcA,GAAE,QAAQ,SAAS;AAAA,YAAC,GAAE,UAAS,WAAU;AAAC,kBAAIA,KAAE,KAAK,KAAK;AAAW,cAAAA,GAAE,YAAU,MAAIA,GAAE,WAAS,MAAK,GAAGA,IAAE,EAAC,OAAM,KAAK,UAAS,MAAK,KAAK,SAAQ,WAAU,KAAK,aAAY,GAAE,IAAI,GAAE,KAAK,KAAK,GAAG,EAAC,OAAM,KAAK,WAAU,MAAK,KAAK,aAAY,GAAE,IAAI;AAAA,YAAC,GAAE,aAAY,WAAU;AAAC,mBAAK,aAAa,GAAE,GAAG,KAAK,KAAK,YAAW,EAAC,OAAM,KAAK,UAAS,MAAK,KAAK,SAAQ,WAAU,KAAK,aAAY,GAAE,IAAI,GAAE,KAAK,KAAK,IAAI,EAAC,OAAM,KAAK,WAAU,MAAK,KAAK,aAAY,GAAE,IAAI;AAAA,YAAC,GAAE,cAAa,WAAU;AAAC,kBAAG,CAAC,KAAK,UAAS;AAAC,oBAAIA,KAAE,SAAS,MAAKC,KAAE,SAAS,iBAAgBC,KAAEF,GAAE,aAAWC,GAAE,WAAUE,KAAEH,GAAE,cAAYC,GAAE;AAAW,qBAAK,KAAK,WAAW,MAAM,GAAE,OAAO,SAASE,IAAED,EAAC;AAAA,cAAC;AAAA,YAAC,GAAE,UAAS,WAAU;AAAC,mBAAK,WAAS,MAAG,KAAK,KAAK,KAAK,OAAO;AAAA,YAAC,GAAE,SAAQ,WAAU;AAAC,mBAAK,WAAS,OAAG,KAAK,KAAK,KAAK,MAAM;AAAA,YAAC,GAAE,cAAa,SAASF,IAAE;AAAC,kBAAIC,IAAEC,IAAEC,KAAE,KAAK,WAAS,CAAC,GAAEC,KAAE,KAAK;AAAS,mBAAIH,KAAE,GAAEC,KAAEE,GAAE,KAAK,QAAOH,KAAEC,IAAED,KAAI,CAAAE,GAAEC,GAAE,KAAKH,EAAC,CAAC,IAAE,CAAC,KAAGD,IAAE,CAAC;AAAE,mBAAIC,KAAE,GAAEC,KAAEE,GAAE,MAAM,QAAOH,KAAEC,IAAED,KAAI,CAAAE,GAAEC,GAAE,MAAMH,EAAC,CAAC,IAAE,CAACD,IAAE,CAAC;AAAE,mBAAIC,KAAE,GAAEC,KAAEE,GAAE,KAAK,QAAOH,KAAEC,IAAED,KAAI,CAAAE,GAAEC,GAAE,KAAKH,EAAC,CAAC,IAAE,CAAC,GAAED,EAAC;AAAE,mBAAIC,KAAE,GAAEC,KAAEE,GAAE,GAAG,QAAOH,KAAEC,IAAED,KAAI,CAAAE,GAAEC,GAAE,GAAGH,EAAC,CAAC,IAAE,CAAC,GAAE,KAAGD,EAAC;AAAA,YAAC,GAAE,eAAc,SAASA,IAAE;AAAC,kBAAIC,IAAEC,IAAEC,KAAE,KAAK,YAAU,CAAC,GAAEC,KAAE,KAAK;AAAS,mBAAIH,KAAE,GAAEC,KAAEE,GAAE,OAAO,QAAOH,KAAEC,IAAED,KAAI,CAAAE,GAAEC,GAAE,OAAOH,EAAC,CAAC,IAAED;AAAE,mBAAIC,KAAE,GAAEC,KAAEE,GAAE,QAAQ,QAAOH,KAAEC,IAAED,KAAI,CAAAE,GAAEC,GAAE,QAAQH,EAAC,CAAC,IAAE,CAACD;AAAA,YAAC,GAAE,WAAU,WAAU;AAAC,iBAAG,UAAS,WAAU,KAAK,YAAW,IAAI;AAAA,YAAC,GAAE,cAAa,WAAU;AAAC,iBAAG,UAAS,WAAU,KAAK,YAAW,IAAI;AAAA,YAAC,GAAE,YAAW,SAASA,IAAE;AAAC,kBAAG,EAAEA,GAAE,UAAQA,GAAE,WAASA,GAAE,UAAS;AAAC,oBAAIC,IAAEC,KAAEF,GAAE,SAAQG,KAAE,KAAK;AAAK,oBAAGD,MAAK,KAAK,SAAS,CAAAC,GAAE,YAAUA,GAAE,SAAS,gBAAcF,KAAE,KAAK,SAASC,EAAC,GAAEF,GAAE,aAAWC,KAAE,EAAEA,EAAC,EAAE,WAAW,CAAC,IAAGE,GAAE,MAAMF,EAAC,GAAEE,GAAE,QAAQ,aAAWA,GAAE,gBAAgBA,GAAE,QAAQ,SAAS;AAAA,yBAAWD,MAAK,KAAK,UAAU,CAAAC,GAAE,QAAQA,GAAE,QAAQ,KAAGH,GAAE,WAAS,IAAE,KAAG,KAAK,UAAUE,EAAC,CAAC;AAAA,qBAAM;AAAC,sBAAG,OAAKA,MAAG,CAACC,GAAE,UAAQ,CAACA,GAAE,OAAO,QAAQ,iBAAiB;AAAO,kBAAAA,GAAE,WAAW;AAAA,gBAAC;AAAC,mBAAGH,EAAC;AAAA,cAAC;AAAA,YAAC,EAAC,CAAC;AAAE,eAAG,YAAY,cAAa,YAAW,EAAE,GAAE,GAAG,aAAa,EAAC,iBAAgB,MAAG,mBAAkB,IAAG,qBAAoB,GAAE,CAAC;AAAE,gBAAI,KAAG,GAAG,OAAO,EAAC,UAAS,WAAU;AAAC,iBAAG,KAAK,KAAK,YAAW,SAAQ,KAAK,gBAAe,IAAI,GAAE,KAAK,SAAO;AAAA,YAAC,GAAE,aAAY,WAAU;AAAC,iBAAG,KAAK,KAAK,YAAW,SAAQ,KAAK,gBAAe,IAAI;AAAA,YAAC,GAAE,gBAAe,SAASA,IAAE;AAAC,kBAAIC,KAAE,GAAGD,EAAC,GAAEE,KAAE,KAAK,KAAK,QAAQ;AAAkB,mBAAK,UAAQD,IAAE,KAAK,gBAAc,KAAK,KAAK,2BAA2BD,EAAC,GAAE,KAAK,eAAa,KAAK,aAAW,CAAC,oBAAI;AAAM,kBAAII,KAAE,KAAK,IAAIF,MAAG,CAAC,oBAAI,SAAK,KAAK,aAAY,CAAC;AAAE,2BAAa,KAAK,MAAM,GAAE,KAAK,SAAO,WAAWC,GAAE,KAAK,cAAa,IAAI,GAAEC,EAAC,GAAE,GAAGJ,EAAC;AAAA,YAAC,GAAE,cAAa,WAAU;AAAC,kBAAIA,KAAE,KAAK,MAAKC,KAAED,GAAE,QAAQ,GAAEE,KAAE,KAAK,KAAK,QAAQ,YAAU;AAAE,cAAAF,GAAE,MAAM;AAAE,kBAAIG,KAAE,KAAK,UAAQ,IAAE,KAAK,KAAK,QAAQ,sBAAqBC,KAAE,IAAE,KAAK,IAAI,KAAG,IAAE,KAAK,IAAI,CAAC,KAAK,IAAID,EAAC,CAAC,EAAE,IAAE,KAAK,KAAIE,KAAEH,KAAE,KAAK,KAAKE,KAAEF,EAAC,IAAEA,KAAEE,IAAEE,KAAEN,GAAE,WAAWC,MAAG,KAAK,SAAO,IAAEI,KAAE,CAACA,GAAE,IAAEJ;AAAE,mBAAK,SAAO,GAAE,KAAK,aAAW,MAAKK,OAAI,aAAWN,GAAE,QAAQ,kBAAgBA,GAAE,QAAQC,KAAEK,EAAC,IAAEN,GAAE,cAAc,KAAK,eAAcC,KAAEK,EAAC;AAAA,YAAE,EAAC,CAAC;AAAE,eAAG,YAAY,cAAa,mBAAkB,EAAE,GAAE,GAAG,aAAa,EAAC,KAAI,MAAG,cAAa,GAAE,CAAC;AAAE,gBAAI,KAAG,GAAG,OAAO,EAAC,UAAS,WAAU;AAAC,iBAAG,KAAK,KAAK,YAAW,cAAa,KAAK,SAAQ,IAAI;AAAA,YAAC,GAAE,aAAY,WAAU;AAAC,iBAAG,KAAK,KAAK,YAAW,cAAa,KAAK,SAAQ,IAAI;AAAA,YAAC,GAAE,SAAQ,SAASN,IAAE;AAAC,kBAAGA,GAAE,SAAQ;AAAC,oBAAG,GAAGA,EAAC,GAAE,KAAK,aAAW,MAAGA,GAAE,QAAQ,SAAO,EAAE,QAAO,KAAK,aAAW,OAAG,KAAK,aAAa,KAAK,YAAY;AAAE,oBAAIC,KAAED,GAAE,QAAQ,CAAC,GAAEE,KAAED,GAAE;AAAO,qBAAK,YAAU,KAAK,UAAQ,IAAI,EAAEA,GAAE,SAAQA,GAAE,OAAO,GAAEC,GAAE,WAAS,QAAMA,GAAE,QAAQ,YAAY,KAAGa,IAAGb,IAAE,gBAAgB,GAAE,KAAK,eAAa,WAAWC,IAAG,WAAU;AAAC,uBAAK,YAAY,MAAI,KAAK,aAAW,OAAG,KAAK,MAAM,GAAE,KAAK,eAAe,eAAcF,EAAC;AAAA,gBAAE,IAAG,IAAI,GAAE,GAAG,GAAE,KAAK,eAAe,aAAYA,EAAC,GAAE,GAAG,UAAS,EAAC,WAAU,KAAK,SAAQ,UAAS,KAAK,MAAK,GAAE,IAAI;AAAA,cAAC;AAAA,YAAC,GAAE,OAAM,SAASD,IAAE;AAAC,kBAAG,aAAa,KAAK,YAAY,GAAE,GAAG,UAAS,EAAC,WAAU,KAAK,SAAQ,UAAS,KAAK,MAAK,GAAE,IAAI,GAAE,KAAK,cAAYA,MAAGA,GAAE,gBAAe;AAAC,oBAAIC,KAAED,GAAE,eAAe,CAAC,GAAEE,KAAED,GAAE;AAAO,gBAAAC,MAAGA,GAAE,WAAS,QAAMA,GAAE,QAAQ,YAAY,KAAG,GAAGA,IAAE,gBAAgB,GAAE,KAAK,eAAe,WAAUD,EAAC,GAAE,KAAK,YAAY,KAAG,KAAK,eAAe,SAAQA,EAAC;AAAA,cAAC;AAAA,YAAC,GAAE,aAAY,WAAU;AAAC,qBAAO,KAAK,QAAQ,WAAW,KAAK,SAAS,KAAG,KAAK,KAAK,QAAQ;AAAA,YAAY,GAAE,SAAQ,SAASD,IAAE;AAAC,kBAAIC,KAAED,GAAE,QAAQ,CAAC;AAAE,mBAAK,UAAQ,IAAI,EAAEC,GAAE,SAAQA,GAAE,OAAO,GAAE,KAAK,eAAe,aAAYA,EAAC;AAAA,YAAC,GAAE,gBAAe,SAASD,IAAEC,IAAE;AAAC,kBAAIC,KAAE,SAAS,YAAY,aAAa;AAAE,cAAAA,GAAE,aAAW,MAAGD,GAAE,OAAO,kBAAgB,MAAGC,GAAE,eAAeF,IAAE,MAAG,MAAG,QAAO,GAAEC,GAAE,SAAQA,GAAE,SAAQA,GAAE,SAAQA,GAAE,SAAQ,OAAG,OAAG,OAAG,OAAG,GAAE,IAAI,GAAEA,GAAE,OAAO,cAAcC,EAAC;AAAA,YAAC,EAAC,CAAC;AAAE,aAAC,MAAI,MAAI,CAAC,MAAI,GAAG,YAAY,cAAa,OAAM,EAAE,GAAE,GAAG,aAAa,EAAC,WAAU,MAAI,CAAC,IAAG,oBAAmB,KAAE,CAAC;AAAE,gBAAI,KAAG,GAAG,OAAO,EAAC,UAAS,WAAU;AAAC,cAAAa,IAAG,KAAK,KAAK,YAAW,oBAAoB,GAAE,GAAG,KAAK,KAAK,YAAW,cAAa,KAAK,eAAc,IAAI;AAAA,YAAC,GAAE,aAAY,WAAU;AAAC,iBAAG,KAAK,KAAK,YAAW,oBAAoB,GAAE,GAAG,KAAK,KAAK,YAAW,cAAa,KAAK,eAAc,IAAI;AAAA,YAAC,GAAE,eAAc,SAASf,IAAE;AAAC,kBAAIC,KAAE,KAAK;AAAK,kBAAGD,GAAE,WAAS,MAAIA,GAAE,QAAQ,UAAQ,CAACC,GAAE,kBAAgB,CAAC,KAAK,UAAS;AAAC,oBAAIC,KAAED,GAAE,2BAA2BD,GAAE,QAAQ,CAAC,CAAC,GAAEG,KAAEF,GAAE,2BAA2BD,GAAE,QAAQ,CAAC,CAAC;AAAE,qBAAK,eAAaC,GAAE,QAAQ,EAAE,UAAU,CAAC,GAAE,KAAK,eAAaA,GAAE,uBAAuB,KAAK,YAAY,GAAE,aAAWA,GAAE,QAAQ,cAAY,KAAK,oBAAkBA,GAAE,uBAAuBC,GAAE,IAAIC,EAAC,EAAE,UAAU,CAAC,CAAC,IAAG,KAAK,aAAWD,GAAE,WAAWC,EAAC,GAAE,KAAK,aAAWF,GAAE,QAAQ,GAAE,KAAK,SAAO,OAAG,KAAK,WAAS,MAAGA,GAAE,MAAM,GAAE,GAAG,UAAS,aAAY,KAAK,cAAa,IAAI,GAAE,GAAG,UAAS,YAAW,KAAK,aAAY,IAAI,GAAE,GAAGD,EAAC;AAAA,cAAC;AAAA,YAAC,GAAE,cAAa,SAASA,IAAE;AAAC,kBAAGA,GAAE,WAAS,MAAIA,GAAE,QAAQ,UAAQ,KAAK,UAAS;AAAC,oBAAIC,KAAE,KAAK,MAAKC,KAAED,GAAE,2BAA2BD,GAAE,QAAQ,CAAC,CAAC,GAAEI,KAAEH,GAAE,2BAA2BD,GAAE,QAAQ,CAAC,CAAC,GAAEK,KAAEH,GAAE,WAAWE,EAAC,IAAE,KAAK;AAAW,oBAAG,KAAK,QAAMH,GAAE,aAAaI,IAAE,KAAK,UAAU,GAAE,CAACJ,GAAE,QAAQ,uBAAqB,KAAK,QAAMA,GAAE,WAAW,KAAGI,KAAE,KAAG,KAAK,QAAMJ,GAAE,WAAW,KAAGI,KAAE,OAAK,KAAK,QAAMJ,GAAE,WAAW,KAAK,KAAK,IAAG,aAAWA,GAAE,QAAQ,WAAU;AAAC,sBAAG,KAAK,UAAQ,KAAK,cAAa,MAAII,GAAE;AAAA,gBAAM,OAAK;AAAC,sBAAIC,KAAEJ,GAAE,KAAKE,EAAC,EAAE,UAAU,CAAC,EAAE,UAAU,KAAK,YAAY;AAAE,sBAAG,MAAIC,MAAG,MAAIC,GAAE,KAAG,MAAIA,GAAE,EAAE;AAAO,uBAAK,UAAQL,GAAE,UAAUA,GAAE,QAAQ,KAAK,mBAAkB,KAAK,KAAK,EAAE,SAASK,EAAC,GAAE,KAAK,KAAK;AAAA,gBAAC;AAAC,qBAAK,WAASL,GAAE,WAAW,MAAG,KAAE,GAAE,KAAK,SAAO,OAAI,EAAE,KAAK,YAAY;AAAE,oBAAIM,KAAEJ,GAAEF,GAAE,OAAMA,IAAE,KAAK,SAAQ,KAAK,OAAM,EAAC,OAAM,MAAG,OAAM,MAAE,CAAC;AAAE,qBAAK,eAAa,EAAEM,IAAE,MAAK,IAAE,GAAE,GAAGP,EAAC;AAAA,cAAC;AAAA,YAAC,GAAE,aAAY,WAAU;AAAC,mBAAK,UAAQ,KAAK,YAAU,KAAK,WAAS,OAAG,EAAE,KAAK,YAAY,GAAE,GAAG,UAAS,aAAY,KAAK,cAAa,IAAI,GAAE,GAAG,UAAS,YAAW,KAAK,aAAY,IAAI,GAAE,KAAK,KAAK,QAAQ,gBAAc,KAAK,KAAK,aAAa,KAAK,SAAQ,KAAK,KAAK,WAAW,KAAK,KAAK,GAAE,MAAG,KAAK,KAAK,QAAQ,QAAQ,IAAE,KAAK,KAAK,WAAW,KAAK,SAAQ,KAAK,KAAK,WAAW,KAAK,KAAK,CAAC,KAAG,KAAK,WAAS;AAAA,YAAE,EAAC,CAAC;AAAE,eAAG,YAAY,cAAa,aAAY,EAAE,GAAE,GAAG,UAAQ,IAAG,GAAG,kBAAgB,IAAG,GAAG,OAAK,IAAG,GAAG,WAAS,IAAG,GAAG,kBAAgB,IAAG,GAAG,MAAI,IAAG,GAAG,YAAU,IAAGA,GAAE,UAAQ,SAAQA,GAAE,UAAQ,IAAGA,GAAE,UAAQ,IAAGA,GAAE,UAAQ,IAAGA,GAAE,UAAQ,GAAEA,GAAE,QAAM,IAAGA,GAAE,OAAK,GAAEA,GAAE,QAAM,GAAEA,GAAE,UAAQ,IAAGA,GAAE,SAAOC,IAAED,GAAE,OAAKG,IAAEH,GAAE,QAAM,GAAEA,GAAE,aAAW,GAAEA,GAAE,WAAS,IAAGA,GAAE,UAAQ,IAAGA,GAAE,eAAa,IAAGA,GAAE,YAAU,IAAGA,GAAE,WAAS,IAAGA,GAAE,WAAS,IAAGA,GAAE,QAAM,GAAEA,GAAE,QAAM,GAAEA,GAAE,SAAO,GAAEA,GAAE,SAAO,GAAEA,GAAE,iBAAe,GAAEA,GAAE,iBAAeS,IAAET,GAAE,aAAW,IAAGA,GAAE,SAAO,GAAEA,GAAE,SAAO,GAAEA,GAAE,eAAa,GAAEA,GAAE,eAAa,GAAEA,GAAE,MAAI,GAAEA,GAAE,UAAQ,IAAGA,GAAE,UAAQ,IAAGA,GAAE,UAAQ,IAAGA,GAAE,QAAM,IAAGA,GAAE,aAAW,IAAGA,GAAE,aAAW,SAASA,IAAEC,IAAE;AAAC,qBAAO,IAAI,GAAGD,IAAEC,EAAC;AAAA,YAAC,GAAED,GAAE,eAAa,IAAGA,GAAE,eAAa,SAASA,IAAEC,IAAE;AAAC,qBAAO,IAAI,GAAGD,IAAEC,EAAC;AAAA,YAAC,GAAED,GAAE,eAAa,IAAGA,GAAE,eAAa,SAASA,IAAEC,IAAEC,IAAE;AAAC,qBAAO,IAAI,GAAGF,IAAEC,IAAEC,EAAC;AAAA,YAAC,GAAEF,GAAE,eAAa,IAAGA,GAAE,eAAa,SAASA,IAAEC,IAAEC,IAAE;AAAC,qBAAO,IAAI,GAAGF,IAAEC,IAAEC,EAAC;AAAA,YAAC,GAAEF,GAAE,aAAW,IAAGA,GAAE,aAAW,SAASA,IAAEC,IAAEC,IAAE;AAAC,qBAAO,IAAI,GAAGF,IAAEC,IAAEC,EAAC;AAAA,YAAC,GAAEF,GAAE,aAAW,IAAGA,GAAE,QAAM,IAAGA,GAAE,QAAM,SAASA,IAAEC,IAAE;AAAC,qBAAO,IAAI,GAAGD,IAAEC,EAAC;AAAA,YAAC,GAAED,GAAE,UAAQ,IAAGA,GAAE,UAAQ,SAASA,IAAEC,IAAE;AAAC,qBAAO,IAAI,GAAGD,IAAEC,EAAC;AAAA,YAAC,GAAED,GAAE,OAAK,IAAGA,GAAE,OAAK,SAASA,IAAE;AAAC,qBAAO,IAAI,GAAGA,EAAC;AAAA,YAAC,GAAEA,GAAE,UAAQ2B,KAAG3B,GAAE,UAAQ,SAASA,IAAE;AAAC,qBAAO,IAAI2B,IAAG3B,EAAC;AAAA,YAAC,GAAEA,GAAE,SAAO,IAAGA,GAAE,SAAO,SAASA,IAAEC,IAAE;AAAC,qBAAO,IAAI,GAAGD,IAAEC,EAAC;AAAA,YAAC,GAAED,GAAE,YAAU4B,KAAG5B,GAAE,YAAU,IAAGA,GAAE,YAAU,IAAGA,GAAE,YAAU,SAASA,IAAE;AAAC,qBAAO,IAAI,GAAGA,EAAC;AAAA,YAAC,GAAEA,GAAE,MAAI,IAAGA,GAAE,MAAI,IAAGA,GAAE,WAAS,IAAGA,GAAE,SAAO,IAAGA,GAAE,SAAO,IAAGA,GAAE,OAAK,IAAGA,GAAE,eAAa,IAAGA,GAAE,eAAa,SAASA,IAAEC,IAAE;AAAC,qBAAO,IAAI,GAAGD,IAAEC,EAAC;AAAA,YAAC,GAAED,GAAE,SAAO,IAAGA,GAAE,SAAO,SAASA,IAAEC,IAAEC,IAAE;AAAC,qBAAO,IAAI,GAAGF,IAAEC,IAAEC,EAAC;AAAA,YAAC,GAAEF,GAAE,WAAS,IAAGA,GAAE,WAAS,SAASA,IAAEC,IAAE;AAAC,qBAAO,IAAI,GAAGD,IAAEC,EAAC;AAAA,YAAC,GAAED,GAAE,UAAQ,IAAGA,GAAE,UAAQ,SAASA,IAAEC,IAAE;AAAC,qBAAO,IAAI,GAAGD,IAAEC,EAAC;AAAA,YAAC,GAAED,GAAE,YAAU,IAAGA,GAAE,YAAU,SAASA,IAAEC,IAAE;AAAC,qBAAO,IAAI,GAAGD,IAAEC,EAAC;AAAA,YAAC,GAAED,GAAE,MAAI,IAAGA,GAAE,MAAI,SAASA,IAAEC,IAAE;AAAC,qBAAO,IAAI,GAAGD,IAAEC,EAAC;AAAA,YAAC;AAAE,gBAAI,KAAG,OAAO;AAAE,YAAAD,GAAE,aAAW,WAAU;AAAC,qBAAO,OAAO,IAAE,IAAG;AAAA,YAAI,GAAE,OAAO,IAAEA;AAAA,UAAC,GAAEC,EAAC;AAAA,QAAC,GAAE,KAAI,CAACD,IAAEC,IAAEC,OAAI;AAAC;AAAa,cAAIC,IAAE,IAAE,4BAAU;AAAC,gBAAIH,KAAE,CAAC;AAAE,mBAAO,SAASC,IAAE;AAAC,kBAAG,WAASD,GAAEC,EAAC,GAAE;AAAC,oBAAIC,KAAE,SAAS,cAAcD,EAAC;AAAE,oBAAG,OAAO,qBAAmBC,cAAa,OAAO,kBAAkB,KAAG;AAAC,kBAAAA,KAAEA,GAAE,gBAAgB;AAAA,gBAAI,SAAOF,IAAE;AAAC,kBAAAE,KAAE;AAAA,gBAAI;AAAC,gBAAAF,GAAEC,EAAC,IAAEC;AAAA,cAAC;AAAC,qBAAOF,GAAEC,EAAC;AAAA,YAAC;AAAA,UAAC,GAAE,GAAE,IAAE,CAAC;AAAE,mBAAS,EAAED,IAAE;AAAC,qBAAQC,KAAE,IAAGC,KAAE,GAAEA,KAAE,EAAE,QAAOA,KAAI,KAAG,EAAEA,EAAC,EAAE,eAAaF,IAAE;AAAC,cAAAC,KAAEC;AAAE;AAAA,YAAK;AAAC,mBAAOD;AAAA,UAAC;AAAC,mBAAS,EAAED,IAAEC,IAAE;AAAC,qBAAQC,KAAE,CAAC,GAAEC,KAAE,CAAC,GAAEC,KAAE,GAAEA,KAAEJ,GAAE,QAAOI,MAAI;AAAC,kBAAIG,KAAEP,GAAEI,EAAC,GAAEI,KAAEP,GAAE,OAAKM,GAAE,CAAC,IAAEN,GAAE,OAAKM,GAAE,CAAC,GAAES,KAAEd,GAAEM,EAAC,KAAG,GAAES,KAAE,GAAG,OAAOT,IAAE,GAAG,EAAE,OAAOQ,EAAC;AAAE,cAAAd,GAAEM,EAAC,IAAEQ,KAAE;AAAE,kBAAIE,KAAE,EAAED,EAAC,GAAEE,KAAE,EAAC,KAAIZ,GAAE,CAAC,GAAE,OAAMA,GAAE,CAAC,GAAE,WAAUA,GAAE,CAAC,EAAC;AAAE,qBAAKW,MAAG,EAAEA,EAAC,EAAE,cAAa,EAAEA,EAAC,EAAE,QAAQC,EAAC,KAAG,EAAE,KAAK,EAAC,YAAWF,IAAE,SAAQ,EAAEE,IAAElB,EAAC,GAAE,YAAW,EAAC,CAAC,GAAEE,GAAE,KAAKc,EAAC;AAAA,YAAC;AAAC,mBAAOd;AAAA,UAAC;AAAC,mBAAS,EAAEH,IAAE;AAAC,gBAAIC,KAAE,SAAS,cAAc,OAAO,GAAEE,KAAEH,GAAE,cAAY,CAAC;AAAE,gBAAG,WAASG,GAAE,OAAM;AAAC,kBAAIE,KAAEH,GAAE;AAAG,cAAAG,OAAIF,GAAE,QAAME;AAAA,YAAE;AAAC,gBAAG,OAAO,KAAKF,EAAC,EAAE,SAAS,SAASH,IAAE;AAAC,cAAAC,GAAE,aAAaD,IAAEG,GAAEH,EAAC,CAAC;AAAA,YAAC,EAAE,GAAE,cAAY,OAAOA,GAAE,OAAO,CAAAA,GAAE,OAAOC,EAAC;AAAA,iBAAM;AAAC,kBAAIK,KAAE,EAAEN,GAAE,UAAQ,MAAM;AAAE,kBAAG,CAACM,GAAE,OAAM,IAAI,MAAM,yGAAyG;AAAE,cAAAA,GAAE,YAAYL,EAAC;AAAA,YAAC;AAAC,mBAAOA;AAAA,UAAC;AAAC,cAAI,GAAE,KAAG,IAAE,CAAC,GAAE,SAASD,IAAEC,IAAE;AAAC,mBAAO,EAAED,EAAC,IAAEC,IAAE,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI;AAAA,UAAC;AAAG,mBAAS,EAAED,IAAEC,IAAEC,IAAEC,IAAE;AAAC,gBAAIC,KAAEF,KAAE,KAAGC,GAAE,QAAM,UAAU,OAAOA,GAAE,OAAM,IAAI,EAAE,OAAOA,GAAE,KAAI,GAAG,IAAEA,GAAE;AAAI,gBAAGH,GAAE,WAAW,CAAAA,GAAE,WAAW,UAAQ,EAAEC,IAAEG,EAAC;AAAA,iBAAM;AAAC,kBAAIC,KAAE,SAAS,eAAeD,EAAC,GAAEE,KAAEN,GAAE;AAAW,cAAAM,GAAEL,EAAC,KAAGD,GAAE,YAAYM,GAAEL,EAAC,CAAC,GAAEK,GAAE,SAAON,GAAE,aAAaK,IAAEC,GAAEL,EAAC,CAAC,IAAED,GAAE,YAAYK,EAAC;AAAA,YAAC;AAAA,UAAC;AAAC,mBAAS,EAAEL,IAAEC,IAAEC,IAAE;AAAC,gBAAIC,KAAED,GAAE,KAAIE,KAAEF,GAAE,OAAMG,KAAEH,GAAE;AAAU,gBAAGE,KAAEJ,GAAE,aAAa,SAAQI,EAAC,IAAEJ,GAAE,gBAAgB,OAAO,GAAEK,MAAG,eAAa,OAAO,SAAOF,MAAG,uDAAuD,OAAO,KAAK,SAAS,mBAAmB,KAAK,UAAUE,EAAC,CAAC,CAAC,CAAC,GAAE,KAAK,IAAGL,GAAE,WAAW,CAAAA,GAAE,WAAW,UAAQG;AAAA,iBAAM;AAAC,qBAAKH,GAAE,aAAY,CAAAA,GAAE,YAAYA,GAAE,UAAU;AAAE,cAAAA,GAAE,YAAY,SAAS,eAAeG,EAAC,CAAC;AAAA,YAAC;AAAA,UAAC;AAAC,cAAI,IAAE,MAAK,IAAE;AAAE,mBAAS,EAAEH,IAAEC,IAAE;AAAC,gBAAIC,IAAEC,IAAEC;AAAE,gBAAGH,GAAE,WAAU;AAAC,kBAAII,KAAE;AAAI,cAAAH,KAAE,MAAI,IAAE,EAAED,EAAC,IAAGE,KAAE,EAAE,KAAK,MAAKD,IAAEG,IAAE,KAAE,GAAED,KAAE,EAAE,KAAK,MAAKF,IAAEG,IAAE,IAAE;AAAA,YAAC,MAAM,CAAAH,KAAE,EAAED,EAAC,GAAEE,KAAE,EAAE,KAAK,MAAKD,IAAED,EAAC,GAAEG,KAAE,WAAU;AAAC,gBAAC,SAASJ,IAAE;AAAC,oBAAG,SAAOA,GAAE,WAAW,QAAM;AAAG,gBAAAA,GAAE,WAAW,YAAYA,EAAC;AAAA,cAAC,GAAEE,EAAC;AAAA,YAAC;AAAE,mBAAOC,GAAEH,EAAC,GAAE,SAASC,IAAE;AAAC,kBAAGA,IAAE;AAAC,oBAAGA,GAAE,QAAMD,GAAE,OAAKC,GAAE,UAAQD,GAAE,SAAOC,GAAE,cAAYD,GAAE,UAAU;AAAO,gBAAAG,GAAEH,KAAEC,EAAC;AAAA,cAAC,MAAM,CAAAG,GAAE;AAAA,YAAC;AAAA,UAAC;AAAC,UAAAJ,GAAE,UAAQ,SAASA,IAAEC,IAAE;AAAC,aAACA,KAAEA,MAAG,CAAC,GAAG,aAAW,aAAW,OAAOA,GAAE,cAAYA,GAAE,aAAW,WAASE,OAAIA,KAAE,QAAQ,UAAQ,YAAU,SAAS,OAAK,CAAC,OAAO,IAAI,IAAGA;AAAI,gBAAID,KAAE,EAAEF,KAAEA,MAAG,CAAC,GAAEC,EAAC;AAAE,mBAAO,SAASD,IAAE;AAAC,kBAAGA,KAAEA,MAAG,CAAC,GAAE,qBAAmB,OAAO,UAAU,SAAS,KAAKA,EAAC,GAAE;AAAC,yBAAQG,KAAE,GAAEA,KAAED,GAAE,QAAOC,MAAI;AAAC,sBAAIC,KAAE,EAAEF,GAAEC,EAAC,CAAC;AAAE,oBAAEC,EAAC,EAAE;AAAA,gBAAY;AAAC,yBAAQI,KAAE,EAAER,IAAEC,EAAC,GAAEe,KAAE,GAAEA,KAAEd,GAAE,QAAOc,MAAI;AAAC,sBAAIC,KAAE,EAAEf,GAAEc,EAAC,CAAC;AAAE,wBAAI,EAAEC,EAAC,EAAE,eAAa,EAAEA,EAAC,EAAE,QAAQ,GAAE,EAAE,OAAOA,IAAE,CAAC;AAAA,gBAAE;AAAC,gBAAAf,KAAEM;AAAA,cAAC;AAAA,YAAC;AAAA,UAAC;AAAA,QAAC,EAAC,GAAE,IAAE,CAAC;AAAE,iBAAS,EAAEL,IAAE;AAAC,cAAI,IAAE,EAAEA,EAAC;AAAE,cAAG,WAAS,EAAE,QAAO,EAAE;AAAQ,cAAI,IAAE,EAAEA,EAAC,IAAE,EAAC,IAAGA,IAAE,SAAQ,CAAC,EAAC;AAAE,iBAAO,EAAEA,EAAC,EAAE,KAAK,EAAE,SAAQ,GAAE,EAAE,SAAQ,CAAC,GAAE,EAAE;AAAA,QAAO;AAAC,UAAE,IAAE,CAAAH,OAAG;AAAC,cAAIC,KAAED,MAAGA,GAAE,aAAW,MAAIA,GAAE,UAAQ,MAAIA;AAAE,iBAAO,EAAE,EAAEC,IAAE,EAAC,GAAEA,GAAC,CAAC,GAAEA;AAAA,QAAC,GAAE,EAAE,IAAE,CAACD,IAAEC,OAAI;AAAC,mBAAQE,MAAKF,GAAE,GAAE,EAAEA,IAAEE,EAAC,KAAG,CAAC,EAAE,EAAEH,IAAEG,EAAC,KAAG,OAAO,eAAeH,IAAEG,IAAE,EAAC,YAAW,MAAG,KAAIF,GAAEE,EAAC,EAAC,CAAC;AAAA,QAAC,GAAE,EAAE,KAAE,WAAU;AAAC,cAAG,YAAU,OAAO,WAAW,QAAO;AAAW,cAAG;AAAC,mBAAO,QAAM,IAAI,SAAS,aAAa,EAAE;AAAA,UAAC,SAAOH,IAAE;AAAC,gBAAG,YAAU,OAAO,OAAO,QAAO;AAAA,UAAM;AAAA,QAAC,GAAE,GAAE,EAAE,IAAE,CAACA,IAAEC,OAAI,OAAO,UAAU,eAAe,KAAKD,IAAEC,EAAC,GAAE,EAAE,IAAE,CAAAD,OAAG;AAAC,yBAAa,OAAO,UAAQ,OAAO,eAAa,OAAO,eAAeA,IAAE,OAAO,aAAY,EAAC,OAAM,SAAQ,CAAC,GAAE,OAAO,eAAeA,IAAE,cAAa,EAAC,OAAM,KAAE,CAAC;AAAA,QAAC;AAAE,YAAI,IAAE,CAAC;AAAE,gBAAO,MAAI;AAAC;AAAa,mBAASA,GAAEA,IAAE;AAAC,mBAAO,SAASC,IAAEC,IAAEC,IAAE;AAAC,oBAAMC,KAAED,GAAE;AAAM,qBAAOA,GAAE,MAAI,SAASF,IAAE;AAAC,oBAAIE,KAAE,KAAK,aAAaD,EAAC;AAAE,oBAAG;AAAC,0BAAMD,MAAG,OAAKA,OAAIA,KAAED,GAAE,IAAG,YAAU,OAAOC,OAAIA,KAAE,KAAK,UAAUA,EAAC,IAAGA,OAAIE,OAAIA,KAAEF,KAAGE,KAAE,KAAK,MAAMA,EAAC;AAAA,gBAAC,SAAOC,IAAE;AAAC,0BAAQ,KAAK,gCAAgCF,EAAC,MAAMD,EAAC,EAAE,GAAEE,KAAEH,GAAE;AAAA,gBAAC;AAAC,gBAAAI,GAAE,KAAK,MAAKD,EAAC;AAAA,cAAC,GAAEA,GAAE,MAAI,WAAU;AAAC,uBAAO,KAAK,aAAaD,EAAC,IAAE,KAAK,MAAM,KAAK,aAAaA,EAAC,CAAC,IAAEF,GAAE;AAAA,cAAC,GAAE,OAAOG,GAAE,OAAM,OAAOA,GAAE,UAASA;AAAA,YAAC;AAAA,UAAC;AAAC,YAAE,EAAE,CAAC,GAAE,EAAE,EAAE,GAAE,EAAC,WAAU,MAAI,EAAC,CAAC,GAAEH,IAAG,OAAK,CAAC,GAAG,GAAEA,IAAG,MAAI,CAAC,EAAE;AAAE,cAAIC,KAAE,EAAE,GAAG,GAAE,IAAE,EAAE,EAAEA,EAAC;AAAE,mBAAS,EAAED,IAAE;AAAC,mBAAOA;AAAA,UAAC;AAAC,mBAAS,EAAEA,IAAEC,IAAE;AAAC,mBAAM,YAAU,OAAOA,OAAIA,KAAED,GAAE,QAAQC,EAAC,IAAG,yBAAuBA,GAAE,OAAK,EAAC,MAAK,qBAAoB,UAASA,GAAE,WAAW,KAAK,SAASA,IAAE;AAAC,qBAAO,EAAED,IAAEC,EAAC;AAAA,YAAC,EAAE,EAAC,IAAE,EAAED,IAAEC,EAAC;AAAA,UAAC;AAAC,mBAAS,EAAED,IAAEC,IAAE;AAAC,gBAAIC,KAAED,GAAE,IAAGE,KAAEF,GAAE,MAAKG,KAAE,QAAMH,GAAE,aAAW,CAAC,IAAEA,GAAE,YAAWK,MAAE,SAASN,IAAEC,IAAE;AAAC,kBAAIC,MAAE,SAASF,IAAE;AAAC,oBAAG,QAAMA,GAAE,QAAO;AAAE,oBAAIC,IAAEC,IAAEC,KAAEH,GAAE,MAAM,CAAC,GAAEI,KAAEJ,GAAE,MAAM,CAAC,GAAEM,KAAEN,GAAE,UAAU,CAAC,GAAEO,KAAEP,GAAE,UAAU,CAAC;AAAE,uBAAO,SAASA,IAAEK,IAAE;AAAC,kBAAAA,OAAIJ,KAAEC,KAAE;AAAG,sBAAIM,KAAE,GAAEQ,KAAEhB,GAAE,QAAOiB,KAAE,IAAI,MAAMD,EAAC;AAAE,uBAAIC,GAAE,CAAC,KAAGhB,MAAGD,GAAE,CAAC,KAAGG,KAAEG,IAAEW,GAAE,CAAC,KAAGf,MAAGF,GAAE,CAAC,KAAGI,KAAEG,IAAEC,KAAEQ,KAAG,CAAAC,GAAET,EAAC,IAAER,GAAEQ,EAAC,GAAE,EAAEA;AAAE,yBAAOS;AAAA,gBAAC;AAAA,cAAC,GAAEjB,GAAE,SAAS,GAAEG,KAAEH,GAAE;AAAK,uBAASI,GAAEJ,IAAEC,IAAE;AAAC,gBAAAA,GAAE,UAAQA,GAAE,IAAI;AAAE,yBAAQG,KAAED,GAAEH,KAAE,IAAE,CAACA,KAAEA,EAAC,GAAEK,KAAE,GAAEC,KAAEF,GAAE,QAAOC,KAAEC,IAAE,EAAED,GAAE,CAAAJ,GAAE,KAAKC,GAAEE,GAAEC,EAAC,GAAEA,EAAC,CAAC;AAAE,gBAAAL,KAAE,MAAG,SAASA,IAAEC,IAAE;AAAC,2BAAQC,IAAEC,KAAEH,GAAE,QAAOI,KAAED,KAAEF,IAAEG,KAAE,EAAED,KAAG,CAAAD,KAAEF,GAAEI,EAAC,GAAEJ,GAAEI,IAAG,IAAEJ,GAAEG,EAAC,GAAEH,GAAEG,EAAC,IAAED;AAAA,gBAAC,GAAED,IAAEK,EAAC;AAAA,cAAC;AAAC,uBAASA,GAAEN,IAAE;AAAC,uBAAOE,GAAEF,EAAC;AAAA,cAAC;AAAC,uBAASO,GAAEP,IAAE;AAAC,yBAAQC,KAAE,CAAC,GAAEC,KAAE,GAAEC,KAAEH,GAAE,QAAOE,KAAEC,IAAE,EAAED,GAAE,CAAAE,GAAEJ,GAAEE,EAAC,GAAED,EAAC;AAAE,uBAAOA,GAAE,SAAO,KAAGA,GAAE,KAAKA,GAAE,CAAC,CAAC,GAAEA;AAAA,cAAC;AAAC,uBAASO,GAAER,IAAE;AAAC,yBAAQC,KAAEM,GAAEP,EAAC,GAAEC,GAAE,SAAO,IAAG,CAAAA,GAAE,KAAKA,GAAE,CAAC,CAAC;AAAE,uBAAOA;AAAA,cAAC;AAAC,uBAASe,GAAEhB,IAAE;AAAC,uBAAOA,GAAE,IAAIQ,EAAC;AAAA,cAAC;AAAC,sBAAO,SAASR,GAAEC,IAAE;AAAC,oBAAIC,IAAEC,KAAEF,GAAE;AAAK,wBAAOE,IAAE;AAAA,kBAAC,KAAI;AAAqB,2BAAM,EAAC,MAAKA,IAAE,YAAWF,GAAE,WAAW,IAAID,EAAC,EAAC;AAAA,kBAAE,KAAI;AAAQ,oBAAAE,KAAEI,GAAEL,GAAE,WAAW;AAAE;AAAA,kBAAM,KAAI;AAAa,oBAAAC,KAAED,GAAE,YAAY,IAAIK,EAAC;AAAE;AAAA,kBAAM,KAAI;AAAa,oBAAAJ,KAAEK,GAAEN,GAAE,IAAI;AAAE;AAAA,kBAAM,KAAI;AAAkB,oBAAAC,KAAED,GAAE,KAAK,IAAIM,EAAC;AAAE;AAAA,kBAAM,KAAI;AAAU,oBAAAL,KAAEc,GAAEf,GAAE,IAAI;AAAE;AAAA,kBAAM,KAAI;AAAe,oBAAAC,KAAED,GAAE,KAAK,IAAIe,EAAC;AAAE;AAAA,kBAAM;AAAQ,2BAAO;AAAA,gBAAI;AAAC,uBAAM,EAAC,MAAKb,IAAE,aAAYD,GAAC;AAAA,cAAC,GAAED,EAAC;AAAA,YAAC,GAAED,IAAEC,EAAC;AAAE,mBAAO,QAAMC,MAAG,QAAMC,KAAE,EAAC,MAAK,WAAU,YAAWC,IAAE,UAASE,GAAC,IAAE,QAAMH,KAAE,EAAC,MAAK,WAAU,IAAGD,IAAE,YAAWE,IAAE,UAASE,GAAC,IAAE,EAAC,MAAK,WAAU,IAAGJ,IAAE,MAAKC,IAAE,YAAWC,IAAE,UAASE,GAAC;AAAA,UAAC;AAAC,cAAI,GAAE,IAAE,EAAE,GAAG,GAAE,IAAE,EAAE,EAAE,CAAC,GAAE,IAAE,EAAE,EAAE;AAAE,YAAE,EAAE,EAAE,GAAE,EAAC,QAAO,QAAO,WAAU,MAAE,CAAC,GAAE,EAAE,EAAE,QAAO,OAAO,EAAE,EAAE,KAAK,QAAQ,UAAU,aAAY,EAAE,EAAE,KAAK,QAAQ,aAAa,EAAC,eAAc,yEAAwE,SAAQ,+DAA8D,WAAU,gEAA+D,CAAC;AAAA,UAAE,MAAM,EAAC;AAAA,YAAC,aAAa,OAAON,IAAEC,IAAE;AAAC,kBAAG;AAAC,sBAAMC,KAAE,KAAK,MAAM,KAAK,aAAa,SAAS,CAAC,GAAEC,KAAE,KAAK,aAAa,MAAM,KAAG;AAAW,oBAAIE,IAAEE,KAAE;AAAG,oBAAG,SAAO,KAAK,aAAa,YAAY,GAAE;AAAC,wBAAK,EAAC,QAAOP,IAAE,MAAKC,GAAC,IAAE,KAAK,MAAM,KAAK,aAAa,YAAY,CAAC,KAAG,CAAC;AAAE,kBAAAI,KAAEL,IAAEO,KAAEN,MAAG;AAAA,gBAAE;AAAC,gBAAAC,GAAE,SAASC,EAAC,MAAID,GAAE,KAAKC,EAAC,GAAE,KAAK,aAAa,WAAU,KAAK,UAAUD,EAAC,CAAC;AAAG,sBAAMM,MAAE,SAASR,IAAEC,IAAE,EAAC,MAAKC,GAAC,GAAE;AAAC,wBAAK,EAAC,UAASC,GAAC,IAAEH,IAAEK,KAAE,OAAO,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,CAAC,CAAC;AAAG,mBAAC,GAAGF,EAAC,EAAE,KAAK,CAAC,EAAC,IAAGH,GAAC,MAAI,SAAS,eAAeA,EAAC,EAAE,OAAO,EAAE;AAAE,wBAAMO,KAAE,SAAS,cAAc,KAAK;AAAE,kBAAAA,GAAE,KAAGF,IAAEJ,GAAE,YAAU,IAAGA,GAAE,YAAY,SAAS,cAAc,MAAM,CAAC,GAAED,GAAE,YAAYO,EAAC;AAAE,sBAAIC,KAAE,CAAC;AAAE,kBAAAN,OAAIM,KAAE,EAAC,aAAY,OAAG,iBAAgB,MAAE;AAAG,wBAAMQ,KAAE,EAAE,EAAE,IAAIX,IAAE,EAAC,QAAO,CAAC,GAAE,CAAC,GAAE,MAAK,GAAE,GAAGG,GAAC,CAAC;AAAE,yBAAO,EAAE,EAAE,UAAU,sDAAqD,EAAC,aAAY,0FAAyF,CAAC,EAAE,MAAMQ,EAAC,GAAE,EAAE,EAAE,WAAS,EAAE,EAAE,QAAQ,OAAO,EAAC,SAAQ,SAAShB,IAAE;AAAC,wBAAG,eAAaA,GAAE,KAAK,UAAQC,MAAKD,GAAE,QAAQ,GAAE,EAAE,QAAQ,UAAU,QAAQ,KAAK,MAAK,EAAEA,IAAEA,GAAE,QAAQC,EAAC,CAAC,CAAC;AAAA,wBAAO,GAAE,EAAE,QAAQ,UAAU,QAAQ,KAAK,MAAKD,EAAC;AAAA,kBAAC,EAAC,CAAC,GAAE,EAAE,EAAE,WAAS,SAASA,IAAEC,IAAE;AAAC,2BAAO,KAAI,EAAE,GAAE,SAAUD,IAAEC,EAAC;AAAA,kBAAC,GAAEe;AAAA,gBAAC,GAAE,MAAKhB,IAAE,EAAC,MAAKO,GAAC,CAAC;AAAE,oBAAIS,KAAE,MAAMf,GAAE,QAAQ,KAAG,CAAC;AAAE,oBAAGe,KAAEA,GAAE,QAAQ,CAAC,EAAC,UAAShB,GAAC,MAAI,CAAC,CAACA,GAAE,GAAEgB,GAAE,MAAM,CAAC,EAAC,CAACb,KAAGH,GAAC,MAAI,CAAC,CAACA,GAAE,GAAE;AAAC,wBAAK,CAACA,IAAEC,EAAC,IAAEI,KAAE,CAACA,IAAEW,GAAE,CAAC,EAAEX,EAAC,CAAC,IAAE,OAAO,QAAQW,GAAE,CAAC,CAAC,EAAE,CAAC,GAAEd,KAAE,OAAO,SAASD,EAAC,GAAEK,KAAEU,GAAE,KAAK,CAAAf,OAAGA,GAAED,EAAC,EAAE;AAAE,sBAAIO,KAAE,CAAC;AAAE,sBAAGL,IAAE;AAAC,0BAAMF,KAAEM,GAAE,OAAO,CAAAN,OAAG,OAAO,UAAUA,EAAC,EAAE,GAAE,CAACC,IAAEC,EAAC,IAAE,CAAC,KAAK,IAAI,GAAGI,EAAC,GAAE,KAAK,IAAI,GAAGA,EAAC,CAAC,GAAEH,KAAE,GAAEC,MAAGF,KAAED,OAAIE,KAAE;AAAG,oBAAAI,KAAE,MAAM,KAAK,EAAC,QAAOJ,KAAE,EAAC,IAAG,CAACD,IAAEC,OAAIH,KAAE,KAAK,MAAMC,KAAEE,KAAEC,EAAC,IAAEH,KAAEE,KAAEC,GAAE,GAAEG,GAAE,KAAKL,EAAC;AAAA,kBAAC,MAAM,CAAAK,KAAE,CAAC,GAAG,IAAI,IAAID,EAAC,CAAC;AAAE,wBAAMW,KAAE,CAAAjB,OAAG;AAAC,wBAAGE,IAAE;AAAC,4BAAMD,KAAEM,GAAE,WAAW,CAAAN,OAAGD,MAAGC,GAAE;AAAE,6BAAOA,MAAG,IAAE,+BAA+BA,KAAE,CAAC,MAAI;AAAA,oBAAE;AAAC,2BAAM,kCAAkCM,GAAE,WAAW,CAAAN,OAAGD,OAAIC,GAAE,IAAE,CAAC;AAAA,kBAAG,GAAEiB,KAAE,CAAC,EAAC,YAAWjB,KAAE,CAAC,EAAC,OAAK,EAAC,WAAUgB,GAAEhB,GAAED,EAAC,CAAC,GAAE,aAAY,KAAG,QAAO,GAAE,OAAMiB,GAAEhB,GAAED,EAAC,CAAC,EAAC,IAAGmB,KAAEH,GAAE,QAAQ,CAAChB,IAAE,EAAC,CAACG,KAAGF,KAAE,MAAK,GAAGC,GAAC,MAAI;AAAC,wBAAG,YAAU,OAAOD,MAAGA,cAAa,QAAO;AAAC,4BAAK,EAAC,UAAS,CAACE,EAAC,EAAC,IAAE,EAAE,EAAE,SAAS,KAAK,MAAMF,EAAC,CAAC,EAAE,UAAU;AAAE,sBAAAD,GAAE,KAAK,EAAC,GAAGG,IAAE,YAAWD,GAAC,CAAC;AAAA,oBAAC;AAAC,2BAAOF;AAAA,kBAAC,IAAG,CAAC,CAAC;AAAE,sBAAGmB,GAAE,QAAO;AAAC,qBAAC,GAAG,IAAI,IAAIA,GAAE,KAAK,CAAAnB,OAAGA,GAAEG,EAAC,EAAE,KAAK,CAAC,CAAC,EAAE,SAAS,OAAO,MAAG,SAAS,EAAC,QAAOH,KAAE,CAAC,GAAE,UAASC,MAAG,CAAAD,OAAGA,KAAG,KAAIE,MAAG,CAAAF,OAAGA,GAAE,eAAe,IAAG,YAAWG,KAAE,KAAE,GAAE;AAAC,4BAAME,KAAE,EAAE,EAAE,QAAQ,EAAC,UAAS,aAAY,CAAC;AAAE,6BAAOA,GAAE,QAAM,WAAU;AAAC,8BAAMA,KAAE,EAAE,EAAE,QAAQ,OAAO,OAAM,wBAAwB;AAAE,iCAAQC,KAAE,GAAEA,KAAEN,GAAE,QAAOM,KAAI,CAAAD,GAAE,aAAWF,KAAE,wBAAwBF,GAAED,GAAEM,EAAC,CAAC,CAAC,SAASJ,GAAEF,GAAEM,EAAC,CAAC,CAAC,GAAGN,GAAEM,KAAE,CAAC,IAAE,YAAUJ,GAAEF,GAAEM,KAAE,CAAC,CAAC,IAAE,SAAO,GAAG,KAAG,wBAAwBL,GAAED,GAAEM,EAAC,CAAC,CAAC,SAASJ,GAAEF,GAAEM,EAAC,CAAC,CAAC;AAAO,+BAAOD;AAAA,sBAAC,GAAEA;AAAA,oBAAC,GAAE,EAAC,QAAOE,IAAE,UAASU,IAAE,YAAWf,GAAC,CAAC,EAAE,MAAMM,EAAC;AAAE,0BAAMR,MAAE,WAAU;AAAC,4BAAMA,KAAE,EAAE,EAAE,QAAQ;AAAE,6BAAOA,GAAE,QAAM,WAAU;AAAC,+BAAO,KAAK,OAAK,EAAE,EAAE,QAAQ,OAAO,OAAM,yBAAyB,GAAE,KAAK,OAAO,GAAE,KAAK;AAAA,sBAAI,GAAEA,GAAE,SAAO,SAASA,KAAE,CAAC,GAAE;AAAC,6BAAK,KAAK,YAAU,OAAO,QAAQA,EAAC,EAAE,KAAK,CAAC,CAACA,IAAEC,EAAC,MAAI,WAAWD,EAAC,SAASC,EAAC,SAAS,EAAE,KAAK,EAAE;AAAA,sBAAC,GAAED;AAAA,oBAAC,GAAE;AAAE,oBAAAA,GAAE,MAAMQ,EAAC;AAAE,0BAAMP,KAAE,CAACA,IAAEC,OAAI;AAAC,sBAAAA,GAAE,GAAG,EAAC,WAAU,MAAIF,GAAE,OAAOC,GAAE,UAAU,GAAE,UAAS,MAAID,GAAE,OAAO,EAAC,CAAC;AAAA,oBAAC,GAAEK,KAAE,EAAE,EAAE,QAAQc,IAAE,EAAC,OAAMD,IAAE,eAAcjB,GAAC,CAAC,EAAE,MAAMO,EAAC;AAAE,oBAAAA,GAAE,UAAUH,GAAE,UAAU,CAAC;AAAA,kBAAC;AAAA,gBAAC;AAAA,cAAC,SAAOL,IAAE;AAAC,oBAAG,8BAA4BA,GAAE,QAAQ,OAAMA;AAAA,cAAC;AAAA,YAAC;AAAA,YAAC,OAAO,SAAQ;AAAA,YAAC;AAAA,YAAC,OAAO,SAAQ;AAAA,YAAC;AAAA,YAAC,OAAO,SAAQ;AAAA,YAAC;AAAA,YAAC,OAAO,OAAM;AAAA,YAAC;AAAA,YAAC,OAAO,UAAS;AAAA,YAAC;AAAA,UAAC;AAAC,iBAAO,eAAe,GAAE,QAAO,EAAC,UAAS,MAAG,OAAM,MAAK,CAAC,GAAE,IAAE,GAAE,EAAE,EAAE,iBAAe,EAAE,EAAE,eAAe,OAAM,CAAC,KAAG,EAAE,EAAE,0BAAwB,EAAE,EAAE,2BAAyB,CAAC,GAAE,EAAE,EAAE,wBAAwB,KAAK,CAAC,OAAM,CAAC,CAAC;AAAA,QAAE,GAAG,GAAE;AAAA,MAAC,GAAG;AAAA,IAAC,EAAE;AAAA;AAAA;;;ACD/3qJ;AAAA;AAAA;AAGA,KAAC,SAAS,KAAK;AACb,UAAI,OAAO,WAAW,YAAY,OAAO,UAAU;AACjD,YAAI,oBAA+B;AAAA,eAC5B,OAAO,UAAU,cAAc,OAAO;AAC7C,eAAO,CAAC,sBAAsB,GAAG,GAAG;AAAA;AAEpC,YAAI,UAAU;AAAA,IAClB,GAAG,SAAS6B,aAAY;AACtB;AACA,UAAI,aAAa;AACjB,UAAI,aAAa;AACjB,UAAI,aAAa;AAEjB,MAAAA,YAAW,aAAa,mBAAmB,OAAO,SAAS,IAAI,KAAK,KAAK;AACvE,YAAI,OAAO,OAAOA,YAAW,OAAO,QAAQ;AAC5C,YAAI,OAAO,KAAM;AACjB,YAAI,MAAM;AACR,aAAG,IAAI,yBAAyB,eAAe;AAC/C,2BAAiB,EAAE;AACnB,iBAAO,GAAG,MAAM;AAAA,QAClB;AACA,YAAI,KAAK;AACP,aAAG,MAAM,cAAc,CAAC;AACxB,4BAAkB,IAAI,GAAG,eAAe,CAAC;AACzC,aAAG,GAAG,yBAAyB,eAAe;AAAA,QAChD;AAAA,MACF,CAAC;AAED,eAAS,iBAAiB,IAAI;AAC5B,iBAAS,IAAI,GAAG,IAAI,GAAG,MAAM,YAAY,QAAQ,KAAK;AACpD,aAAG,gBAAgB,GAAG,MAAM,YAAY,CAAC,GAAG,QAAQ,UAAU;AAC9D,aAAG,gBAAgB,GAAG,MAAM,YAAY,CAAC,GAAG,cAAc,UAAU;AACpE,aAAG,gBAAgB,GAAG,MAAM,YAAY,CAAC,GAAG,UAAU,UAAU;AAAA,QAClE;AAAA,MACF;AAEA,eAAS,UAAU,GAAG,GAAG;AACvB,YAAI,EAAE,UAAU,EAAE,OAAQ,QAAO;AACjC,iBAAS,IAAI,GAAG,IAAI,EAAE,QAAQ;AAC5B,cAAI,EAAE,CAAC,KAAK,EAAE,CAAC,EAAG,QAAO;AAC3B,eAAO;AAAA,MACT;AAEA,eAAS,kBAAkB,IAAI,QAAQ;AACrC,YAAI,SAAS,CAAC;AACd,iBAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,cAAIC,SAAQ,OAAO,CAAC;AACpB,cAAI,SAAS,GAAG,UAAU,iBAAiB;AAC3C,cAAI,OAAO,UAAU,YAAY,OAAO,WAAWA,OAAM,OAAO,QAAQA,OAAM,KAAK,OAAO,CAACA,OAAM,MAAM;AACrG;AACF,cAAI,OAAO,GAAG,yBAAyBA,OAAM,KAAK,IAAI;AACtD,cAAI,OAAO,OAAO,SAAS,CAAC,KAAK,KAAM,QAAO,KAAK,IAAI;AAAA,QACzD;AACA,YAAI,UAAU,GAAG,MAAM,aAAa,MAAM,EAAG;AAC7C,WAAG,UAAU,WAAW;AACtB,2BAAiB,EAAE;AACnB,mBAASC,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,eAAG,aAAa,OAAOA,EAAC,GAAG,QAAQ,UAAU;AAC7C,eAAG,aAAa,OAAOA,EAAC,GAAG,cAAc,UAAU;AACnD,eAAG,aAAa,OAAOA,EAAC,GAAG,UAAU,UAAU;AAAA,UACjD;AACA,aAAG,MAAM,cAAc;AAAA,QACzB,CAAC;AAAA,MACH;AAEA,eAAS,gBAAgB,IAAI,KAAK;AAChC,0BAAkB,IAAI,IAAI,MAAM;AAAA,MAClC;AAAA,IACF,CAAC;AAAA;AAAA;;;ACvED;AAAA;AAAA;AAGA,KAAC,SAAS,KAAK;AACb,UAAI,OAAO,WAAW,YAAY,OAAO,UAAU;AACjD,YAAI,oBAA+B;AAAA,eAC5B,OAAO,UAAU,cAAc,OAAO;AAC7C,eAAO,CAAC,sBAAsB,GAAG,GAAG;AAAA;AAEpC,YAAI,UAAU;AAAA,IAClB,GAAG,SAASC,aAAY;AACtB;AAEA,UAAI,qBAA4B;AAChC,UAAI,4BAA4B;AAIhC,MAAAA,YAAW,WAAW,SAAS,IAAI,UAAU,SAAS;AACpD,YAAI,CAAC,SAAU,QAAO,GAAG,SAAS,OAAO;AACzC,YAAI,WAAW,QAAQ,MAAO,UAAS,QAAQ;AAC/C,YAAI,UAAU,EAAC,MAAM,SAAQ;AAC7B,YAAI,QAAS,UAAS,QAAQ,QAAS,SAAQ,IAAI,IAAI,QAAQ,IAAI;AACnE,eAAO,GAAG,SAAS,OAAO;AAAA,MAC5B;AAEA,MAAAA,YAAW,gBAAgB,YAAY,SAAS,SAAS;AACvD,kBAAU,aAAa,MAAM,KAAK,UAAU,OAAO,GAAG,OAAO;AAC7D,YAAI,aAAa,KAAK,eAAe;AACrC,YAAI,WAAW,SAAS,EAAG;AAI3B,YAAI,KAAK,kBAAkB,GAAG;AAC5B,cAAI,CAAC,QAAQ,KAAK,kBAAmB;AAErC,mBAAS,IAAI,GAAG,IAAI,WAAW,QAAQ;AACrC,gBAAI,WAAW,CAAC,EAAE,KAAK,QAAQ,WAAW,CAAC,EAAE,OAAO,KAAM;AAAA,QAC9D;AAEA,YAAI,KAAK,MAAM,iBAAkB,MAAK,MAAM,iBAAiB,MAAM;AACnE,YAAI,aAAa,KAAK,MAAM,mBAAmB,IAAI,WAAW,MAAM,OAAO;AAC3E,YAAI,CAAC,WAAW,QAAQ,KAAM;AAE9B,QAAAA,YAAW,OAAO,MAAM,mBAAmB,IAAI;AAC/C,mBAAW,OAAO,IAAI;AAAA,MACxB,CAAC;AAED,MAAAA,YAAW,gBAAgB,aAAa,WAAW;AACjD,YAAI,KAAK,MAAM,iBAAkB,MAAK,MAAM,iBAAiB,MAAM;AAAA,MACrE,CAAC;AAED,eAAS,WAAW,IAAI,SAAS;AAC/B,aAAK,KAAK;AACV,aAAK,UAAU;AACf,aAAK,SAAS;AACd,aAAK,WAAW;AAChB,aAAK,OAAO;AACZ,aAAK,WAAW,KAAK,GAAG,UAAU,OAAO;AACzC,aAAK,WAAW,KAAK,GAAG,QAAQ,KAAK,SAAS,IAAI,EAAE,SAAS,KAAK,GAAG,aAAa,EAAE;AAEpF,YAAIC,QAAO;AACX,WAAG,GAAG,kBAAkB,KAAK,eAAe,WAAW;AAAE,UAAAA,MAAK,eAAe;AAAA,QAAG,CAAC;AAAA,MACnF;AAEA,UAAIC,yBAAwB,OAAO,yBAAyB,SAAS,IAAI;AACvE,eAAO,WAAW,IAAI,MAAK,EAAE;AAAA,MAC/B;AACA,UAAIC,wBAAuB,OAAO,wBAAwB;AAE1D,iBAAW,YAAY;AAAA,QACrB,OAAO,WAAW;AAChB,cAAI,CAAC,KAAK,OAAO,EAAG;AACpB,eAAK,GAAG,MAAM,mBAAmB;AACjC,eAAK,OAAO;AACZ,eAAK,GAAG,IAAI,kBAAkB,KAAK,YAAY;AAE/C,cAAI,KAAK,UAAU,KAAK,KAAM,CAAAH,YAAW,OAAO,KAAK,MAAM,OAAO;AAClE,cAAI,KAAK,OAAQ,MAAK,OAAO,MAAM;AACnC,UAAAA,YAAW,OAAO,KAAK,IAAI,iBAAiB,KAAK,EAAE;AAAA,QACrD;AAAA,QAEA,QAAQ,WAAW;AACjB,iBAAO,KAAK,GAAG,MAAM,oBAAoB;AAAA,QAC3C;AAAA,QAEA,MAAM,SAAS,MAAM,GAAG;AACtB,cAAI,aAAa,KAAK,KAAK,CAAC,GAAGC,QAAO;AACtC,eAAK,GAAG,UAAU,WAAW;AAC3B,gBAAI,WAAW;AACb,yBAAW,KAAKA,MAAK,IAAI,MAAM,UAAU;AAAA;AAEzC,cAAAA,MAAK,GAAG;AAAA,gBAAa,QAAQ,UAAU;AAAA,gBAAG,WAAW,QAAQ,KAAK;AAAA,gBAC7C,WAAW,MAAM,KAAK;AAAA,gBAAI;AAAA,cAAU;AAC3D,YAAAD,YAAW,OAAO,MAAM,QAAQ,UAAU;AAC1C,YAAAC,MAAK,GAAG,eAAe;AAAA,UACzB,CAAC;AACD,eAAK,MAAM;AAAA,QACb;AAAA,QAEA,gBAAgB,WAAW;AACzB,cAAI,KAAK,UAAU;AACjB,YAAAE,sBAAqB,KAAK,QAAQ;AAClC,iBAAK,WAAW;AAAA,UAClB;AAEA,cAAI,aAAa,KAAK;AACtB,cAAG,KAAK,MAAM;AACZ,yBAAa,KAAK,KAAK;AAAA,UACzB;AAEA,cAAI,MAAM,KAAK,GAAG,UAAU,GAAG,OAAO,KAAK,GAAG,QAAQ,IAAI,IAAI;AAC9D,cAAI,IAAI,QAAQ,KAAK,SAAS,QAAQ,KAAK,SAAS,IAAI,MAAM,KAAK,WAAW,KAAK,SAAS,MACxF,IAAI,KAAK,WAAW,MAAM,KAAK,GAAG,kBAAkB,MACnD,CAAC,IAAI,MAAM,KAAK,QAAQ,gBAAgB,KAAK,KAAK,OAAO,IAAI,KAAK,CAAC,CAAC,IAAI;AAC3E,iBAAK,MAAM;AAAA,UACb,OAAO;AACL,gBAAIF,QAAO;AACX,iBAAK,WAAWC,uBAAsB,WAAW;AAAC,cAAAD,MAAK,OAAO;AAAA,YAAE,CAAC;AACjE,gBAAI,KAAK,OAAQ,MAAK,OAAO,QAAQ;AAAA,UACvC;AAAA,QACF;AAAA,QAEA,QAAQ,SAAS,OAAO;AACtB,cAAI,KAAK,QAAQ,KAAM;AACvB,cAAIA,QAAO,MAAM,SAAS,EAAE,KAAK;AACjC,qBAAW,KAAK,QAAQ,MAAM,KAAK,IAAI,KAAK,SAAS,SAAS,MAAM;AAClE,gBAAIA,MAAK,QAAQ,OAAQ,CAAAA,MAAK,aAAa,MAAM,KAAK;AAAA,UACxD,CAAC;AAAA,QACH;AAAA,QAEA,cAAc,SAAS,MAAM,OAAO;AAClC,cAAI,KAAK,KAAM,CAAAD,YAAW,OAAO,KAAK,MAAM,QAAQ;AAEpD,cAAI,SAAU,KAAK,UAAU,KAAK,OAAO,UAAY,SAAS,KAAK,QAAQ;AAC3E,cAAI,KAAK,OAAQ,MAAK,OAAO,MAAM;AAEnC,eAAK,OAAO;AAEZ,cAAI,QAAQ,KAAK,KAAK,QAAQ;AAC5B,gBAAI,UAAU,KAAK,KAAK,UAAU,GAAG;AACnC,mBAAK,KAAK,MAAM,CAAC;AAAA,YACnB,OAAO;AACL,mBAAK,SAAS,IAAI,OAAO,MAAM,IAAI;AACnC,cAAAA,YAAW,OAAO,MAAM,OAAO;AAAA,YACjC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,eAAS,aAAa,IAAI,KAAK,SAAS;AACtC,YAAI,SAAS,GAAG,QAAQ;AACxB,YAAI,MAAM,CAAC;AACX,iBAAS,QAAQ,eAAgB,KAAI,IAAI,IAAI,eAAe,IAAI;AAChE,YAAI;AAAQ,mBAAS,QAAQ;AAC3B,gBAAI,OAAO,IAAI,MAAM,OAAW,KAAI,IAAI,IAAI,OAAO,IAAI;AAAA;AACzD,YAAI;AAAS,mBAAS,QAAQ;AAC5B,gBAAI,QAAQ,IAAI,MAAM,OAAW,KAAI,IAAI,IAAI,QAAQ,IAAI;AAAA;AAC3D,YAAI,IAAI,KAAK,QAAS,KAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,GAAG;AACzD,eAAO;AAAA,MACT;AAEA,eAAS,QAAQ,YAAY;AAC3B,YAAI,OAAO,cAAc,SAAU,QAAO;AAAA,YACrC,QAAO,WAAW;AAAA,MACzB;AAEA,eAAS,YAAY,YAAY,QAAQ;AACvC,YAAI,UAAU;AAAA,UACZ,IAAI,WAAW;AAAC,mBAAO,UAAU,EAAE;AAAA,UAAE;AAAA,UACrC,MAAM,WAAW;AAAC,mBAAO,UAAU,CAAC;AAAA,UAAE;AAAA,UACtC,QAAQ,WAAW;AAAC,mBAAO,UAAU,CAAC,OAAO,SAAS,IAAI,GAAG,IAAI;AAAA,UAAE;AAAA,UACnE,UAAU,WAAW;AAAC,mBAAO,UAAU,OAAO,SAAS,IAAI,GAAG,IAAI;AAAA,UAAE;AAAA,UACpE,MAAM,WAAW;AAAC,mBAAO,SAAS,CAAC;AAAA,UAAE;AAAA,UACrC,KAAK,WAAW;AAAC,mBAAO,SAAS,OAAO,SAAS,CAAC;AAAA,UAAE;AAAA,UACpD,OAAO,OAAO;AAAA,UACd,KAAK,OAAO;AAAA,UACZ,KAAK,OAAO;AAAA,QACd;AAEA,YAAII,OAAM,MAAM,KAAK,UAAU,QAAQ;AAEvC,YAAIA,MAAK;AACP,kBAAQ,QAAQ,IAAI,WAAW;AAAC,mBAAO,UAAU,EAAE;AAAA,UAAE;AACrD,kBAAQ,QAAQ,IAAI,WAAW;AAAC,mBAAO,UAAU,CAAC;AAAA,UAAE;AAAA,QACtD;AAEA,YAAI,SAAS,WAAW,QAAQ;AAChC,YAAI,SAAS,SAAS,CAAC,IAAI;AAC3B,iBAAS,WAAWC,MAAK,KAAK;AAC5B,cAAI;AACJ,cAAI,OAAO,OAAO;AAChB,oBAAQ,SAAS,IAAI;AAAE,qBAAO,IAAI,IAAI,MAAM;AAAA,YAAG;AAAA,mBAExC,QAAQ,eAAe,GAAG;AACjC,oBAAQ,QAAQ,GAAG;AAAA;AAEnB,oBAAQ;AACV,iBAAOA,IAAG,IAAI;AAAA,QAChB;AACA,YAAI;AACF,mBAAS,OAAO,OAAQ,KAAI,OAAO,eAAe,GAAG;AACnD,uBAAW,KAAK,OAAO,GAAG,CAAC;AAAA;AAC/B,YAAI,QAAQ,WAAW,QAAQ;AAC/B,YAAI;AACF,mBAAS,OAAO,MAAO,KAAI,MAAM,eAAe,GAAG;AACjD,uBAAW,KAAK,MAAM,GAAG,CAAC;AAAA;AAC9B,eAAO;AAAA,MACT;AAEA,eAAS,eAAe,cAAc,IAAI;AACxC,eAAO,MAAM,MAAM,cAAc;AAC/B,cAAI,GAAG,SAAS,YAAY,MAAM,QAAQ,GAAG,cAAc,aAAc,QAAO;AAChF,eAAK,GAAG;AAAA,QACV;AAAA,MACF;AAEA,eAAS,OAAO,YAAY,MAAM;AAChC,aAAK,aAAa;AAClB,aAAK,OAAO;AACZ,aAAK,SAAS;AACd,YAAI,SAAS,MAAM,KAAK,WAAW;AACnC,YAAI,gBAAgB,GAAG,cAAc,EAAE;AACvC,YAAI,eAAe,cAAc,eAAe,cAAc;AAE9D,YAAI,QAAQ,KAAK,QAAQ,cAAc,cAAc,IAAI;AACzD,YAAI,QAAQ,WAAW,GAAG,QAAQ;AAClC,cAAM,YAAY,sBAAsB;AACxC,aAAK,eAAe,KAAK,gBAAgB;AAEzC,YAAI,cAAc,KAAK;AACvB,iBAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,EAAE,GAAG;AAC3C,cAAIC,OAAM,MAAM,YAAY,cAAc,cAAc,IAAI,CAAC,GAAG,MAAM,YAAY,CAAC;AACnF,cAAI,YAAY,sBAAsB,KAAK,KAAK,eAAe,KAAK,MAAM;AAC1E,cAAI,IAAI,aAAa,KAAM,aAAY,IAAI,YAAY,MAAM;AAC7D,UAAAA,KAAI,YAAY;AAChB,cAAI,IAAI,OAAQ,KAAI,OAAOA,MAAK,MAAM,GAAG;AAAA,cACpC,CAAAA,KAAI,YAAY,cAAc,eAAe,IAAI,eAAe,QAAQ,GAAG,CAAC,CAAC;AAClF,UAAAA,KAAI,SAAS;AAAA,QACf;AAEA,YAAI,YAAY,WAAW,QAAQ,aAAa,cAAc;AAC9D,YAAI,MAAM,GAAG,aAAa,WAAW,QAAQ,gBAAgB,KAAK,OAAO,IAAI;AAC7E,YAAI,OAAO,IAAI,MAAM,MAAM,IAAI,QAAQ,QAAQ;AAC/C,YAAI,aAAa,GAAG,YAAY;AAChC,YAAI,cAAc,cAAc,MAAM;AAEpC,cAAI,wBAAwB,CAAC,YAAY,YAAY,OAAO,EAAE,QAAQ,aAAa,iBAAiB,SAAS,EAAE,QAAQ,MAAM;AAC7H,cAAI,eAAe,wBAAwB,YAAY,UAAU;AACjE,cAAI,uBAAuB,aAAa,sBAAsB;AAC9D,cAAI,eAAe,cAAc,KAAK,sBAAsB;AAC5D,uBAAc,qBAAqB,OAAO,aAAa,OAAO,aAAa;AAC3E,sBAAa,qBAAqB,MAAM,aAAa,MAAM,aAAa;AAAA,QAC1E;AACA,cAAM,MAAM,OAAQ,OAAO,aAAc;AACzC,cAAM,MAAM,MAAO,MAAM,YAAa;AAGtC,YAAI,OAAO,aAAa,cAAc,KAAK,IAAI,cAAc,KAAK,aAAa,cAAc,gBAAgB,WAAW;AACxH,YAAI,OAAO,aAAa,eAAe,KAAK,IAAI,cAAc,KAAK,cAAc,cAAc,gBAAgB,YAAY;AAC3H,kBAAU,YAAY,KAAK;AAC3B,YAAI,MAAM,MAAM,sBAAsB,GAAG,WAAW,IAAI,SAAS;AACjE,YAAI,UAAU,MAAM,eAAe,MAAM,eAAe;AACxD,YAAI,cAAc,GAAG,cAAc;AAEnC,YAAI,WAAW,GAAG;AAChB,cAAI,SAAS,IAAI,SAAS,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,SAAS,IAAI;AACxE,cAAI,SAAS,SAAS,GAAG;AACvB,kBAAM,MAAM,OAAO,MAAM,IAAI,MAAM,SAAS,aAAa;AACzD,oBAAQ;AAAA,UACV,WAAW,SAAS,MAAM;AACxB,kBAAM,MAAM,SAAU,OAAO,IAAK;AAClC,kBAAM,MAAM,OAAO,MAAM,IAAI,SAAS,IAAI,MAAM,aAAa;AAC7D,gBAAI,SAAS,GAAG,UAAU;AAC1B,gBAAI,KAAK,KAAK,MAAM,OAAO,IAAI;AAC7B,oBAAM,GAAG,aAAa,MAAM;AAC5B,oBAAM,MAAM,QAAQ,OAAO,IAAI,OAAO,cAAc;AACpD,oBAAM,MAAM,sBAAsB;AAAA,YACpC;AAAA,UACF;AAAA,QACF;AACA,YAAI,WAAW,IAAI,QAAQ;AAC3B,YAAI,WAAW,GAAG;AAChB,cAAI,IAAI,QAAQ,IAAI,OAAO,MAAM;AAC/B,kBAAM,MAAM,QAAS,OAAO,IAAK;AACjC,wBAAa,IAAI,QAAQ,IAAI,OAAQ;AAAA,UACvC;AACA,gBAAM,MAAM,QAAQ,OAAO,IAAI,OAAO,WAAW,cAAc;AAAA,QACjE;AACA,YAAI,QAAS,UAAS,OAAO,MAAM,YAAY,MAAM,OAAO,KAAK;AAC/D,eAAK,MAAM,eAAe,GAAG,QAAQ,iBAAiB;AAExD,WAAG,UAAU,KAAK,SAAS,YAAY,YAAY;AAAA,UACjD,WAAW,SAAS,GAAG,WAAW;AAAE,mBAAO,aAAa,OAAO,eAAe,GAAG,SAAS;AAAA,UAAG;AAAA,UAC7F,UAAU,SAAS,GAAG;AAAE,mBAAO,aAAa,CAAC;AAAA,UAAG;AAAA,UAChD,UAAU,WAAW;AAAE,mBAAO,OAAO,aAAa;AAAA,UAAG;AAAA,UACrD,QAAQ,YAAY;AAAA,UACpB,OAAO,WAAW;AAAE,uBAAW,MAAM;AAAA,UAAG;AAAA,UACxC,MAAM,WAAW;AAAE,mBAAO,KAAK;AAAA,UAAG;AAAA,UAClC;AAAA,QACF,CAAC,CAAC;AAEF,YAAI,WAAW,QAAQ,gBAAgB;AACrC,cAAI;AACJ,aAAG,GAAG,QAAQ,KAAK,SAAS,WAAW;AAAE,4BAAgB,WAAW,WAAW;AAAE,yBAAW,MAAM;AAAA,YAAG,GAAG,GAAG;AAAA,UAAG,CAAC;AAC/G,aAAG,GAAG,SAAS,KAAK,UAAU,WAAW;AAAE,yBAAa,aAAa;AAAA,UAAG,CAAC;AAAA,QAC3E;AAEA,WAAG,GAAG,UAAU,KAAK,WAAW,WAAW;AACzC,cAAI,YAAY,GAAG,cAAc,GAAG,SAAS,GAAG,kBAAkB,EAAE,sBAAsB;AAC1F,cAAI,SAAS,MAAM,YAAY,MAAM,UAAU;AAC/C,cAAI,QAAQ,UAAU,aAAa,gBAAgB,cAAc,mBAAmB,cAAc,MAAM;AACxG,cAAI,CAAC,MAAO,UAAS,MAAM;AAC3B,cAAI,SAAS,OAAO,OAAO,SAAS,OAAO,OAAQ,QAAO,WAAW,MAAM;AAC3E,gBAAM,MAAM,MAAM,SAAS;AAC3B,gBAAM,MAAM,OAAQ,OAAO,YAAY,OAAO,UAAU,OAAQ;AAAA,QAClE,CAAC;AAED,QAAAN,YAAW,GAAG,OAAO,YAAY,SAAS,GAAG;AAC3C,cAAI,IAAI,eAAe,OAAO,EAAE,UAAU,EAAE,UAAU;AACtD,cAAI,KAAK,EAAE,UAAU,MAAM;AAAC,mBAAO,aAAa,EAAE,MAAM;AAAG,mBAAO,KAAK;AAAA,UAAE;AAAA,QAC3E,CAAC;AAED,QAAAA,YAAW,GAAG,OAAO,SAAS,SAAS,GAAG;AACxC,cAAI,IAAI,eAAe,OAAO,EAAE,UAAU,EAAE,UAAU;AACtD,cAAI,KAAK,EAAE,UAAU,MAAM;AACzB,mBAAO,aAAa,EAAE,MAAM;AAC5B,gBAAI,WAAW,QAAQ,sBAAuB,QAAO,KAAK;AAAA,UAC5D;AAAA,QACF,CAAC;AAED,QAAAA,YAAW,GAAG,OAAO,aAAa,WAAW;AAC3C,qBAAW,WAAU;AAAC,eAAG,MAAM;AAAA,UAAE,GAAG,EAAE;AAAA,QACxC,CAAC;AACD,aAAK,eAAe;AAEpB,QAAAA,YAAW,OAAO,MAAM,UAAU,YAAY,KAAK,YAAY,GAAG,MAAM,WAAW,KAAK,YAAY,CAAC;AACrG,eAAO;AAAA,MACT;AAEA,aAAO,YAAY;AAAA,QACjB,OAAO,WAAW;AAChB,cAAI,KAAK,WAAW,UAAU,KAAM;AACpC,eAAK,WAAW,SAAS;AACzB,eAAK,MAAM,WAAW,YAAY,KAAK,KAAK;AAC5C,eAAK,WAAW,GAAG,aAAa,KAAK,MAAM;AAE3C,cAAI,KAAK,KAAK,WAAW;AACzB,cAAI,KAAK,WAAW,QAAQ,gBAAgB;AAC1C,eAAG,IAAI,QAAQ,KAAK,MAAM;AAC1B,eAAG,IAAI,SAAS,KAAK,OAAO;AAAA,UAC9B;AACA,aAAG,IAAI,UAAU,KAAK,QAAQ;AAAA,QAChC;AAAA,QAEA,SAAS,WAAW;AAClB,eAAK,WAAW,GAAG,aAAa,KAAK,MAAM;AAC3C,cAAI,SAAS;AACb,eAAK,SAAS,EAAC,OAAO,WAAW;AAAE,mBAAO,SAAS;AAAA,UAAM,EAAC;AAC1D,eAAK,WAAW,GAAG,UAAU,KAAK,MAAM;AAAA,QAC1C;AAAA,QAEA,MAAM,WAAW;AACf,eAAK,WAAW,KAAK,KAAK,MAAM,KAAK,YAAY;AAAA,QACnD;AAAA,QAEA,cAAc,SAAS,GAAG,WAAW;AACnC,cAAI,KAAK,KAAK,KAAK,KAAK;AACtB,gBAAI,YAAY,KAAK,KAAK,KAAK,SAAS,IAAI;AAAA,mBACrC,IAAI;AACX,gBAAI,YAAY,IAAK,KAAK,KAAK,KAAK,SAAS;AAC/C,cAAI,KAAK,gBAAgB,EAAG;AAC5B,cAAI,OAAO,KAAK,MAAM,WAAW,KAAK,YAAY;AAClD,cAAI,KAAM,MAAK,YAAY,KAAK,UAAU,QAAQ,MAAM,2BAA2B,EAAE;AACrF,iBAAO,KAAK,MAAM,WAAW,KAAK,eAAe,CAAC;AAClD,eAAK,aAAa,MAAM;AACxB,eAAK,eAAe;AACpB,UAAAA,YAAW,OAAO,KAAK,MAAM,UAAU,KAAK,KAAK,KAAK,KAAK,YAAY,GAAG,IAAI;AAAA,QAChF;AAAA,QAEA,gBAAgB,WAAW;AACzB,cAAI,SAAS,KAAK,WAAW,QAAQ,gBAAgB;AACrD,cAAI,QAAQ,KAAK,MAAM,WAAW,KAAK,IAAI,GAAG,KAAK,eAAe,MAAM,CAAC;AACzE,cAAI,QAAQ,KAAK,MAAM,WAAW,KAAK,IAAI,KAAK,KAAK,KAAK,SAAS,GAAG,KAAK,eAAe,MAAM,CAAC;AACjG,cAAI,YAAY,KAAK,MAAM;AAC3B,cAAI,MAAM,YAAY,KAAK,MAAM;AAC/B,iBAAK,MAAM,YAAY,MAAM,YAAY,UAAU;AAAA,mBAC5C,MAAM,YAAY,MAAM,eAAe,KAAK,MAAM,YAAY,KAAK,MAAM;AAChF,iBAAK,MAAM,YAAY,MAAM,YAAY,MAAM,eAAe,KAAK,MAAM,eAAe,UAAU;AAAA,QACtG;AAAA,QAEA,cAAc,WAAW;AACvB,iBAAO,KAAK,MAAM,KAAK,MAAM,eAAe,KAAK,MAAM,WAAW,YAAY,KAAK;AAAA,QACrF;AAAA,MACF;AAEA,eAAS,kBAAkB,IAAI,SAAS;AACtC,YAAI,CAAC,GAAG,kBAAkB,EAAG,QAAO;AACpC,YAAI,SAAS,CAAC;AACd,iBAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ;AAClC,cAAI,QAAQ,CAAC,EAAE,kBAAmB,QAAO,KAAK,QAAQ,CAAC,CAAC;AAC1D,eAAO;AAAA,MACT;AAEA,eAAS,WAAW,MAAM,IAAI,SAAS,UAAU;AAC/C,YAAI,KAAK,OAAO;AACd,eAAK,IAAI,UAAU,OAAO;AAAA,QAC5B,OAAO;AACL,cAAI,SAAS,KAAK,IAAI,OAAO;AAC7B,cAAI,UAAU,OAAO,KAAM,QAAO,KAAK,QAAQ;AAAA,cAC1C,UAAS,MAAM;AAAA,QACtB;AAAA,MACF;AAEA,eAAS,iBAAiB,IAAI,KAAK;AACjC,YAAI,UAAU,GAAG,WAAW,KAAK,MAAM,GAAG;AAC1C,YAAI,QAAQ,QAAQ;AAClB,cAAI,WAAW,SAASO,KAAI,UAAU,SAAS;AAC7C,gBAAI,MAAM,kBAAkBA,KAAI,OAAO;AACvC,qBAAS,IAAI,GAAG;AACd,kBAAI,KAAK,IAAI,OAAQ,QAAO,SAAS,IAAI;AACzC,yBAAW,IAAI,CAAC,GAAGA,KAAI,SAAS,SAAS,QAAQ;AAC/C,oBAAI,UAAU,OAAO,KAAK,SAAS,EAAG,UAAS,MAAM;AAAA,oBAChD,KAAI,IAAI,CAAC;AAAA,cAChB,CAAC;AAAA,YACH;AACA,gBAAI,CAAC;AAAA,UACP;AACA,mBAAS,QAAQ;AACjB,mBAAS,oBAAoB;AAC7B,iBAAO;AAAA,QACT,WAAW,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG;AAC5D,iBAAO,SAASA,KAAI;AAAE,mBAAOP,YAAW,KAAK,SAASO,KAAI,EAAC,MAAY,CAAC;AAAA,UAAE;AAAA,QAC5E,WAAWP,YAAW,KAAK,SAAS;AAClC,iBAAO,SAASO,KAAI,SAAS;AAAE,mBAAOP,YAAW,KAAK,QAAQO,KAAI,OAAO;AAAA,UAAE;AAAA,QAC7E,OAAO;AACL,iBAAO,WAAW;AAAA,UAAC;AAAA,QACrB;AAAA,MACF;AAEA,MAAAP,YAAW,eAAe,QAAQ,QAAQ;AAAA,QACxC,SAAS;AAAA,MACX,CAAC;AAED,MAAAA,YAAW,eAAe,QAAQ,YAAY,SAAS,IAAI,SAAS;AAClE,YAAI,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG;AACnD,YAAI,MAAM,OAAOA,YAAW,IAAI,IAAI,MAAM,MAAM,KAAK,GAAG,KAAK;AAC7D,YAAI,MAAM,QAAQ,IAAI,MAAM,KAAK,KAAK,MAAM,OAAO,OAAO,IAAI,KAAK,MAAM,QAAQ,CAAC,CAAC,GAAG;AACpF,iBAAO,MAAM,OAAO,OAAO,GAAG,IAAI,KAAK,MAAM,KAAK;AAAA,QACpD,OAAO;AACL,iBAAO;AACP,iBAAO;AAAA,QACT;AACA,YAAI,QAAQ,CAAC;AACb,iBAAS,IAAI,GAAG,IAAI,QAAQ,MAAM,QAAQ,KAAK;AAC7C,cAAI,OAAO,QAAQ,MAAM,CAAC;AAC1B,cAAI,KAAK,MAAM,GAAG,KAAK,MAAM,KAAK;AAChC,kBAAM,KAAK,IAAI;AAAA,QACnB;AAEA,YAAI,MAAM,OAAQ,QAAO,EAAC,MAAM,OAAO,MAAY,GAAM;AAAA,MAC3D,CAAC;AAED,MAAAA,YAAW,SAAS,eAAeA,YAAW;AAE9C,UAAI,iBAAiB;AAAA,QACnB,MAAMA,YAAW,KAAK;AAAA,QACtB,gBAAgB;AAAA,QAChB,eAAe;AAAA,QACf,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,uBAAuB;AAAA,QACvB,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,WAAW;AAAA,MACb;AAEA,MAAAA,YAAW,aAAa,eAAe,IAAI;AAAA,IAC7C,CAAC;AAAA;AAAA;;;AC9dD;AAAA;AAAA;AAGA,KAAC,SAAS,KAAK;AACb,UAAI,OAAO,WAAW,YAAY,OAAO,UAAU;AACjD,YAAI,sBAAiC,aAA6B;AAAA,eAC3D,OAAO,UAAU,cAAc,OAAO;AAC7C,eAAO,CAAC,wBAAwB,oBAAoB,GAAG,GAAG;AAAA;AAE1D,YAAI,UAAU;AAAA,IAClB,GAAG,SAASQ,aAAY;AACtB;AAEA,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI;AACJ,UAAI,OAAO;AAAA,QACT,WAAW;AAAA,QACX,eAAe;AAAA,MACjB;AACA,UAAIC,OAAMD,YAAW,KAAK,SAASA,YAAW;AAE9C,eAASE,SAAQ,KAAK;AAAE,eAAO,OAAO,UAAU,SAAS,KAAK,GAAG,KAAK;AAAA,MAAiB;AAEvF,eAAS,YAAY,QAAQ;AAC3B,YAAI,OAAO,OAAO,IAAI;AACtB,YAAI,SAAS,MAAO,QAAO;AAC3B,eAAOF,YAAW,YAAY,IAAI,EAAE;AAAA,MACtC;AAEA,eAAS,mBAAmB,QAAQ;AAClC,YAAI,OAAO,OAAO,IAAI;AACtB,YAAI,SAAS,MAAO,QAAO;AAC3B,eAAOA,YAAW,YAAY,IAAI,EAAE,mBAAmB;AAAA,MACzD;AAEA,eAAS,QAAQ,MAAM;AACrB,eAAO,OAAO,QAAQ,WAAW,OAAO,KAAK;AAAA,MAC/C;AAEA,eAAS,UAAU,MAAM,OAAO;AAC9B,YAAIE,SAAQ,KAAK,EAAG,SAAQ,EAAC,SAAS,MAAK;AAC3C,YAAI,CAAC,MAAM,KAAM,OAAM,OAAO;AAC9B,eAAO;AAAA,MACT;AAEA,eAAS,YAAY,OAAO;AAC1B,YAAI,SAAS,CAAC;AACd,YAAIA,SAAQ,KAAK,GAAG;AAClB,mBAAS,IAAI,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK;AAC1C,gBAAI,OAAO,MAAM,CAAC;AAClB,mBAAO,QAAQ,IAAI,EAAE,YAAY,CAAC,IAAI,UAAU,QAAQ,IAAI,GAAG,IAAI;AAAA,UACrE;AAAA,QACF,WAAW,OAAO;AAChB,mBAAS,QAAQ;AACf,mBAAO,KAAK,YAAY,CAAC,IAAI,UAAU,MAAM,MAAM,IAAI,CAAC;AAAA,QAC5D;AACA,eAAO;AAAA,MACT;AAEA,eAAS,SAAS,MAAM;AACtB,eAAO,OAAO,KAAK,YAAY,CAAC;AAAA,MAClC;AAEA,eAAS,aAAa,QAAQ;AAC5B,YAAI,SAAS,CAAC;AACd,iBAAS,OAAO,OAAQ,KAAI,OAAO,eAAe,GAAG;AACnD,iBAAO,GAAG,IAAI,OAAO,GAAG;AAC1B,eAAO;AAAA,MACT;AAEA,eAASC,OAAM,QAAQ,MAAM;AAC3B,YAAIC,OAAM,OAAO;AACjB,YAAI,MAAM,QAAQ,IAAI,EAAE,OAAO,GAAGA,IAAG;AACrC,eAAO,OAAO,YAAY,MAAM,IAAI,YAAY;AAAA,MAClD;AAEA,eAAS,WAAW,QAAQ,QAAQ,UAAU,WAAW;AACvD,YAAIF,SAAQ,QAAQ,GAAG;AACrB,mBAAS,IAAI,GAAG,IAAI,SAAS,QAAQ;AACnC,gBAAIC,OAAM,QAAQ,SAAS,CAAC,CAAC,EAAG,QAAO,KAAK,UAAU,SAAS,CAAC,CAAC,CAAC;AAAA,QACtE,OAAO;AACL,mBAAS,QAAQ,SAAU,KAAI,SAAS,eAAe,IAAI,GAAG;AAC5D,gBAAI,MAAM,SAAS,IAAI;AACvB,gBAAI,CAAC,OAAO,QAAQ;AAClB,oBAAM;AAAA;AAEN,oBAAM,IAAI,cAAc,EAAC,MAAM,IAAI,MAAM,aAAa,IAAI,YAAW,IAAI,IAAI;AAC/E,gBAAIA,OAAM,QAAQ,GAAG,EAAG,QAAO,KAAK,UAAU,GAAG,CAAC;AAAA,UACpD;AAAA,QACF;AAAA,MACF;AAEA,eAAS,UAAU,MAAM;AAEvB,YAAI,KAAK,OAAO,CAAC,KAAK,KAAK;AACzB,iBAAO,KAAK,OAAO,CAAC;AAAA,QACtB;AAGA,YAAI,YAAY,KAAK,MAAM,kBAAgB,eAAe;AAC1D,iBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ;AACpC,oBAAU,CAAC,IAAI,UAAU,CAAC,EAAE,QAAQ,IAAI,OAAO,iBAAgB,GAAG,GAAG,EAAE;AACzE,eAAO,UAAU,KAAK,eAAe;AAAA,MACvC;AAEA,eAAS,uBAAuB,MAAM;AACpC,YAAI,YAAY,QAAQ,IAAI,EAAE,MAAM,GAAG;AACvC,iBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ;AACpC,oBAAU,CAAC,IAAI;AAAA,UAEb,UAAU,CAAC,EAAE,QAAQ,IAAI,OAAO,iBAAgB,GAAG,GAAG,kBAAgB,eAAe,IACrF;AACJ,YAAI,UAAU,UAAU,KAAK,GAAG;AAChC,YAAI,OAAO,QAAQ,SAAU,QAAO;AACpC,eAAO,aAAa,IAAI;AACxB,aAAK,OAAO;AACZ,eAAO;AAAA,MACT;AAEA,eAAS,eAAe,KAAK,OAAO,QAAQ,QAAQ;AAElD,YAAI,sBAAsB;AAC1B,YAAI,YAAY,CAAC;AACjB,YAAIE,SAAQ,MAAM;AAClB,YAAI,OAAO;AACX,eAAO,MAAM;AACX,iBAAQ,MAAM,OAAO,OAAO,CAAC,KAAK;AAClC,gCAAsB,uBAAwB,MAAM,OAAO,OAAO,CAAC,KAAK;AAExE,UAAAA,SAAQ,MAAM;AACd,oBAAU,QAAQ,UAAU,MAAM,MAAM,CAAC;AAEzC,kBAAQ,OAAO,WAAWJ,KAAI,IAAI,MAAM,MAAM,KAAK,CAAC;AACpD,cAAI,MAAM,UAAU,KAAK;AACvB,mBAAO;AACP,oBAAQ,OAAO,WAAWA,KAAI,IAAI,MAAM,MAAM,KAAK,CAAC;AAAA,UACtD;AAAA,QACF;AAGA,YAAI,SAAS,UAAU,KAAK,GAAG;AAC/B,mBAAW,QAAQ,QAAQ,QAAQ,SAAS,GAAG;AAC7C,iBAAO,sBAAsB,uBAAuB,CAAC,IAAI;AAAA,QAC3D,CAAC;AAGD,mBAAW,QAAQ,QAAQ,cAAc,SAAS,GAAG;AACnD,iBAAO,sBAAsB,uBAAuB,CAAC,IAAI;AAAA,QAC3D,CAAC;AAGD,iBAAS,UAAU,IAAI;AACvB,YAAI,QAAQ,UAAU,KAAK,GAAG;AAE9B,YAAI,QAAQ;AACZ,YAAI,aAAa;AAEjB,YAAI,CAAC,SAAS,KAAK,GAAG;AACpB,cAAI,WAAW;AACf,kBAAQ,iBAAiB,OAAO,MAAM;AACtC,cAAI,UAAU,SAAU,SAAQ;AAAA,QAClC;AAEA,YAAI,UAAU,SAAS,KAAK;AAC5B,YAAI,WAAW,QAAQ;AACrB,oBAAU,QAAQ;AAEpB,YAAI,SAAS;AACX,qBAAW,QAAQ,QAAQ,SAAS,SAAS,GAAG;AAC9C,gBAAI,cAAc;AAClB,gBAAI,SAAS,KAAM,eAAc;AACjC,gBAAI,OAAO,KAAK,UAAU;AACxB,kBAAI,cAAc,MAAM;AAAA,YAC1B,OAAO;AACL,kBAAI,aAAa,CAAC;AAClB,gBAAE,OAAO,cAAc,MAAM,EAAE;AAAA,YACjC;AACA,mBAAO,sBAAsB,uBAAuB,CAAC,IAAI;AAAA,UAC3D,CAAC;AAAA,QACH;AAEA,eAAOI;AAAA,MACT;AAEA,eAAS,SAAS,UAAU,GAAG;AAC7B,YAAI,QAAQ,SAAS,MAAM,KAAK;AAChC,iBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ;AAChC,cAAI,MAAM,CAAC,EAAG,GAAE,MAAM,CAAC,EAAE,QAAQ,UAAU,EAAE,CAAC;AAAA,MAClD;AAEA,eAAS,iBAAiB,OAAO,QAAQ;AACvC,YAAI,MAAM,OAAO;AACjB,YAAI,YAAY,IAAI,SAAS;AAC7B,YAAI,iBAAiB,MAAM,YAAY;AACvC,YAAI,eAAe;AACnB,YAAI,QAAQ;AACZ,YAAI,YAAY,CAAC;AACjB,YAAI,aAAa;AAAA,UACf,OAAOJ,KAAI,GAAG,CAAC;AAAA,UACf,KAAKA,KAAI,OAAO,SAAS,GAAG,OAAO,cAAc,OAAO,SAAS,CAAC,EAAE,MAAM;AAAA,QAC5E;AAGA,YAAI,mBAAmB,UAAU,QAAQ,KAAK,SAAS;AACvD,eAAM,oBAAoB,IAAI;AAC5B,oBAAU,KAAK,IAAI,aAAa,gBAAgB,CAAC;AACjD,6BAAmB,UAAU,QAAQ,KAAK,WAAW,mBAAiB,CAAC;AAAA,QACzE;AACA,kBAAU,QAAQA,KAAI,GAAG,CAAC,CAAC;AAC3B,kBAAU,KAAKA,KAAI,OAAO,SAAS,GAAG,OAAO,cAAc,OAAO,SAAS,CAAC,EAAE,KAAK,MAAM,CAAC;AAG1F,YAAI,WAAW;AACf,YAAI,UAAU,OAAO,UAAU;AAC/B,iBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,eAAK,YAAY,QAAQ,OAAO,SAAS,QAAQ,IAAI,MAAM,OAAO,SAAS,UAAU,CAAC,CAAC,KAAK,GAAG;AAC7F,yBAAa,EAAC,OAAO,UAAU,KAAK,UAAU,CAAC,EAAC;AAChD;AAAA,UACF;AACA,qBAAW,UAAU,CAAC;AAAA,QACxB;AAEA,YAAI,WAAW,OAAO;AACpB,cAAIK,SAAQ,IAAI,SAAS,WAAW,OAAO,WAAW,KAAK,KAAK;AAEhE,mBAAS,IAAI,GAAG,IAAIA,OAAM,QAAQ,KAAK;AACrC,gBAAI,WAAWA,OAAM,CAAC;AACtB,qBAAS,UAAU,SAAS,MAAM;AAChC,kBAAI,gBAAgB,KAAK,YAAY;AACrC,kBAAI,kBAAkB,kBAAkB,SAAS,YAAY;AAC3D,wBAAQ;AACV,kBAAI,kBAAkB,KAAK;AACzB,+BAAe;AAAA,YACnB,CAAC;AACD,gBAAI,MAAO;AAAA,UACb;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,MAAAN,YAAW,eAAe,QAAQ,OAAO,SAAS,QAAQ,SAAS;AACjE,iBAAS,YAAY,WAAW,QAAQ,MAAM;AAC9C,YAAI,mBAAmB,WAAW,QAAQ;AAC1C,YAAI,kBAAkB,WAAW,QAAQ;AACzC,uBAAe,oBAAoB,SAAS,gBAAgB;AAC5D,mBAAW,YAAY,MAAM;AAC7B,0BAAkB,mBAAmB,MAAM;AAE3C,YAAI,oBAAoB,CAAC;AACvB,yBAAe,iBAAiB,kBAAkB,MAAM;AAE1D,uBAAe,gBAAgB,CAAC;AAEhC,YAAI,aAAa;AACf,yBAAe,aAAa;AAE9B,YAAI,MAAM,OAAO,UAAU;AAC3B,YAAI,SAAS,CAAC;AACd,YAAI,QAAQ,OAAO,WAAW,GAAG,GAAGK,QAAO,KAAK;AAChD,YAAI,MAAM,MAAM,IAAI,IAAI;AACtB,gBAAM,MAAM,IAAI;AAChB,gBAAM,SAAS,MAAM,OAAO,MAAM,GAAG,IAAI,KAAK,MAAM,KAAK;AAAA,QAC3D;AAEA,YAAI,MAAM,OAAO,MAAM,qBAAqB,GAAG;AAC7C,mBAAS,MAAM;AACf,UAAAA,SAAQ,MAAM;AACd,gBAAM,MAAM;AAAA,QACd,OAAO;AACL,UAAAA,SAAQ,MAAM,IAAI;AAClB,mBAAS;AAAA,QACX;AACA,YAAI,OAAO,OAAO,CAAC,KAAK,OAAO,OAAO,OAAO,CAAC,KAAK,iBAAiB;AAClE,UAAAA,SAAQ,eAAe,KAAK,OAAO,QAAQ,MAAM;AAAA,QACnD,OAAO;AACL,cAAI,gBAAgB,SAAS,GAAG,WAAW;AACzC,gBAAI,OAAO,MAAM,UAAU;AACzB,gBAAE,YAAY;AAAA,YAChB,OAAO;AACL,kBAAI,EAAE,MAAM,GAAG,UAAqB;AAAA,YACtC;AACA,mBAAO;AAAA,UACT;AACF,qBAAW,QAAQ,QAAQ,cAAc,SAAS,GAAG;AACjD,mBAAO,cAAc,GAAG,qDAAqD;AAAA,UACjF,CAAC;AACD;AAAA,YACI;AAAA,YACA;AAAA,YACA;AAAA,YAAQ,SAAS,GAAG;AAClB,qBAAO,cAAc,GAAG,uBAAuB;AAAA,YACjD;AAAA,UACJ;AACA,cAAI,CAAC;AACH,uBAAW,QAAQ,QAAQ,UAAU,SAAS,GAAG;AAC7C,qBAAO,cAAc,EAAE,YAAY,GAAG,yBAAyB;AAAA,YACnE,CAAC;AAAA,QACL;AAEE,eAAO,EAAC,MAAM,QAAQ,MAAMJ,KAAI,IAAI,MAAMI,MAAK,GAAG,IAAIJ,KAAI,IAAI,MAAM,GAAG,EAAC;AAAA,MAC1E,CAAC;AAAA,IACH,CAAC;AAAA;AAAA;;;AC/SD;;;ACAA;;;ACAA;AAEA,oBAAc;AAEd,OAAO,IAAI,cAAAM;AACX,OAAO,SAAS,cAAAA;;;ACLhB;AACA,qBAAiB;AAEjB,OAAO,OAAO,eAAAC;;;AFCd,iBAAkB;;;AGJlB;;;ACAA;AASA,IAAAC,iBAAmB;AAGnB,IAAIC,KAAI;AACR,SAAS,UAAU,IAAI;AACrB,EAAAA,KAAI;AACN;AAGA,IAAI,QAAQ;AAAA,EACV,iBAAiB,OAAO;AACtB,WAAO,MAAM,QAAQ,uBAAuB,MAAM;AAAA,EACpD;AAAA,EACA,WAAW,gBAAgB;AACzB,UAAMC,OAAM,SAAS,cAAc,KAAK;AACxC,IAAAA,KAAI,YAAY;AAChB,IAAAA,KAAI,MAAM,WAAW;AACrB,IAAAA,KAAI,MAAM,UAAU;AACpB,WAAOA;AAAA,EACT;AACF;AACA,IAAI,OAAO;AAAA,EACT,KAAK;AAAA,EACL,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,MAAM;AACR;AAGA,SAAS,aAAa,YAAY,gBAAgB,gBAAgB;AAChE,SAAO,WAAW,MAAM,YAAY,EAAE,QAAQ,cAAc,MAAM;AACpE;AACA,SAAS,gBAAgB,UAAU;AACjC,SAAO,OAAO,aAAa,WAAW,KAAK,MAAM,QAAQ,IAAI;AAC/D;AACA,SAAS,aAAa,YAAY,cAAc;AAC9C,MAAI,CAAC,cAAc;AACjB,UAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,SAAK,cAAc,WAAW;AAC9B,WAAO,KAAK;AAAA,EACd;AACA,QAAM,UAAU,MAAM,MAAM,iBAAiB,YAAY,IAAI;AAC7D,SAAO,WAAW,MAAM,QAAQ,IAAI,OAAO,SAAS,IAAI,GAAG,qBAAqB,EAAE,QAAQ,MAAM,OAAO,EAAE,QAAQ,MAAM,MAAM,EAAE,QAAQ,MAAM,MAAM,EAAE,QAAQ,MAAM,QAAQ,EAAE,QAAQ,wBAAwB,MAAM;AACrN;AACA,SAAS,YAAY,aAAa,UAAU;AAC1C,QAAMA,OAAM,SAAS,cAAc,KAAK;AACxC,EAAAA,KAAI,YAAY;AAChB,EAAAA,KAAI,cAAc;AAClB,SAAOA,KAAI;AACb;AAGA,IAAI,OAAO,MAAM;AACjB;AACA,IAAI,WAAW;AAAA,EACb,cAAc,CAAC;AAAA,EACf,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,OAAO;AAAA,EACP,UAAU;AAAA,EACV,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,QAAQ,CAAC;AAAA,EACT;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,SAAS;AAAA,EACT,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,eAAe;AAAA,EACf,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,UAAU;AAAA,EACV,2BAA2B;AAAA,EAC3B,mBAAmB;AAAA,EACnB;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA,wBAAwB;AAAA,EACxB,oBAAoB;AAAA,EACpB,aAAa;AAAA,EACb,kBAAkB;AACpB;AAGA,IAAI,gBAAgB,MAAMC,eAAc;AAAA,EACtC,YAAY,IAAI,SAAS;AACvB,SAAK,cAAc,CAAC;AACpB,SAAK,aAAa,CAAC;AACnB,SAAK,gBAAgB;AACrB,SAAK,iBAAiB,CAAC;AACvB,SAAK,kBAAkB;AACvB,SAAK,UAAU;AACf,SAAK,UAAU;AAAA,MACb,UAAU;AAAA,MACV,YAAY;AAAA,IACd;AACA,SAAK,OAAO;AACZ,SAAK,YAAY;AACjB,SAAK,YAAY;AACjB,SAAK,iBAAiB;AACtB,SAAK,UAAU;AACf,SAAK,KAAKF,GAAE,EAAE;AACd,SAAK,eAAe,GAAG;AACvB,SAAK,UAAUA,GAAE,OAAO,MAAM,CAAC,GAAGE,eAAc,UAAU,OAAO;AACjE,SAAK,WAAW;AAChB,SAAK,WAAW,OAAO;AAAA,EACzB;AAAA,EACA,aAAa;AACX,UAAMC,QAAO;AACb,UAAM,qBAAqB,IAAI,KAAK,QAAQ,UAAU;AACtD,UAAM,WAAW,KAAK,QAAQ;AAC9B,UAAM,UAAU,KAAK;AACrB,SAAK,QAAQ,aAAa,gBAAgB,KAAK;AAC/C,SAAK,0BAA0BH,GAAE,gDAAgD,EAAE;AAAA,MACjF,QAAQ;AAAA,IACV;AACA,SAAK,yBAAyB,KAAK,wBAAwB,IAAI,CAAC;AAChE,SAAK,uBAAuBE,eAAc,MAAM,WAAW,QAAQ,cAAc;AACjF,SAAK,aAAaF,GAAE,KAAK,oBAAoB;AAC7C,SAAK,WAAW,SAAS,QAAQ,YAAY,MAAM;AACnD,QAAI,QAAQ,UAAU,QAAQ;AAC5B,WAAK,WAAW,IAAI,SAAS,QAAQ,KAAK;AAAA,IAC5C;AACA,UAAM,YAAY,KAAK;AACvB,cAAU,GAAG,0BAA0B,oBAAoB,WAAW;AACpE,MAAAG,MAAK,SAASH,GAAE,IAAI,EAAE,KAAK,OAAO,CAAC;AAAA,IACrC,CAAC;AACD,cAAU,GAAG,sBAAsB,oBAAoB,WAAW;AAChE,MAAAG,MAAK,OAAOH,GAAE,IAAI,EAAE,KAAK,OAAO,CAAC;AAAA,IACnC,CAAC;AACD,cAAU,GAAG,yBAAyB,MAAM;AAC1C,WAAK,gBAAgB;AACrB,gBAAU,SAAS,IAAI,QAAQ,EAAE,EAAE,YAAY,QAAQ;AAAA,IACzD,CAAC;AACD,cAAU,GAAG,sBAAsB,MAAM;AACvC,UAAI,KAAK,kBAAkB,QAAQ;AACjC,qBAAa,KAAK,aAAa;AAAA,MACjC;AAAA,IACF,CAAC;AACD,SAAK,qBAAqB,MAAM;AAC9B,UAAI,KAAK,SAAS;AAChB,aAAK,YAAY;AAAA,MACnB;AAAA,IACF;AACA,IAAAA,GAAE,MAAM,EAAE,GAAG,uBAAuB,KAAK,kBAAkB;AAC3D,SAAK,GAAG,GAAG,wBAAwB,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;AAC5D,SAAK,GAAG,GAAG,sBAAsB,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;AACvD,SAAK,GAAG,GAAG,qBAAqB,MAAM,KAAK,OAAO,CAAC;AACnD,SAAK,GAAG,GAAG,sBAAsB,MAAM,KAAK,QAAQ,CAAC;AACrD,SAAK,GAAG,GAAG,uBAAuB,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;AACxD,SAAK,GAAG,GAAG,sBAAsB,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;AAAA,EACzD;AAAA,EACA,UAAU;AACR,QAAI,KAAK,UAAU;AACjB;AAAA,IACF;AACA,SAAK,YAAY;AACjB,QAAI,KAAK,GAAG,IAAI,EAAE,UAAU,KAAK,QAAQ,UAAU;AACjD,WAAK,cAAc;AAAA,IACrB;AAAA,EACF;AAAA,EACA,SAAS;AACP,UAAM,UAAU,KAAK;AACrB,UAAMI,SAAQ,KAAK,SAAS,KAAK,GAAG,IAAI,CAAC;AACzC,SAAK,gBAAgB,WAAW,MAAM;AACpC,WAAK,KAAK;AACV,UAAI,KAAK,aAAa,KAAK,iBAAiBA,QAAO;AACjD,gBAAQ,uBAAuB,KAAK,KAAK,OAAO;AAAA,MAClD;AAAA,IACF,GAAG,GAAG;AAAA,EACR;AAAA,EACA,YAAY;AACV,QAAI,KAAK,gBAAgB;AACvB,WAAK,eAAe,MAAM;AAC1B,WAAK,iBAAiB;AAAA,IACxB;AAAA,EACF;AAAA,EACA,WAAW,iBAAiB;AAC1B,UAAM,UAAU,EAAE,GAAG,KAAK,SAAS,GAAG,gBAAgB;AACtD,SAAK,UAAU,MAAM,QAAQ,QAAQ,MAAM;AAC3C,QAAI,KAAK,SAAS;AAChB,cAAQ,SAAS,KAAK,wBAAwB,QAAQ,MAAM;AAAA,IAC9D;AACA,YAAQ,cAAc,KAAK,oBAAoB,QAAQ,aAAa,QAAQ;AAC5E,SAAK,WAAW,IAAI;AAAA,MAClB,cAAc,GAAG,QAAQ,SAAS;AAAA,MAClC,OAAO,GAAG,QAAQ,KAAK;AAAA,MACvB,WAAW,QAAQ;AAAA,IACrB,CAAC;AACD,SAAK,UAAU;AAAA,EACjB;AAAA,EACA,aAAa;AACX,SAAK,iBAAiB,CAAC;AACvB,SAAK,aAAa,CAAC;AAAA,EACrB;AAAA,EACA,QAAQ;AACN,SAAK,WAAW;AAChB,SAAK,eAAe;AACpB,SAAK,cAAc,CAAC;AAAA,EACtB;AAAA,EACA,UAAU;AACR,SAAK,WAAW;AAChB,QAAI,KAAK,iBAAiB;AACxB,mBAAa,KAAK,eAAe;AAAA,IACnC;AACA,SAAK,UAAU;AAAA,EACjB;AAAA,EACA,SAAS;AACP,SAAK,WAAW;AAAA,EAClB;AAAA,EACA,cAAc;AACZ,UAAM,aAAa,KAAK;AACxB,UAAM,kBAAkB,WAAW,OAAO,EAAE,IAAI,CAAC;AACjD,QAAI,oBAAoB,SAAS,QAAQ,CAAC,KAAK,QAAQ,kBAAkB;AACvE;AAAA,IACF;AACA,QAAIC,eAAc,KAAK,QAAQ;AAC/B,UAAM,kBAAkB,WAAW,YAAY,KAAK;AACpD,UAAM,SAAS,KAAK,GAAG,YAAY,KAAK;AACxC,UAAM,SAAS,KAAK,GAAG,OAAO,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE;AACrD,UAAM,SAAS;AAAA,MACb,KAAK,OAAO;AAAA,MACZ,MAAM,OAAO;AAAA,IACf;AACA,QAAIA,iBAAgB,QAAQ;AAC1B,YAAM,iBAAiBL,GAAE,MAAM,EAAE,OAAO,KAAK;AAC7C,YAAM,YAAYA,GAAE,MAAM,EAAE,UAAU,KAAK;AAC3C,YAAM,cAAc,CAAC,YAAY,OAAO,MAAM;AAC9C,YAAM,iBAAiB,YAAY,kBAAkB,OAAO,MAAM,SAAS;AAC3E,MAAAK,eAAc,KAAK,IAAI,aAAa,cAAc,MAAM,cAAc,QAAQ;AAAA,IAChF;AACA,WAAO,OAAOA,iBAAgB,QAAQ,CAAC,kBAAkB;AACzD,QAAI,oBAAoB,SAAS,QAAQ,oBAAoB,QAAQ;AACnE,YAAM,UAAU,WAAW,IAAI,SAAS;AACxC,UAAI,CAAC,KAAK,SAAS;AACjB,mBAAW,IAAI,WAAW,CAAC,EAAE,KAAK;AAAA,MACpC;AACA,YAAM,mBAAmB,WAAW,aAAa,EAAE,OAAO,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE;AACjF,aAAO,OAAO,iBAAiB;AAC/B,aAAO,OAAO,gBAAgB;AAC9B,aAAO,QAAQ,iBAAiB;AAChC,UAAI,CAAC,KAAK,SAAS;AACjB,mBAAW,IAAI,WAAW,OAAO,EAAE,KAAK;AAAA,MAC1C;AAAA,IACF;AACA,QAAI,KAAK,QAAQ,UAAU,QAAQ;AACjC,aAAO,QAAQ,GAAG,KAAK,GAAG,WAAW,KAAK,CAAC;AAAA,IAC7C;AACA,eAAW,IAAI,MAAM;AAAA,EACvB;AAAA,EACA,gBAAgB;AACd,UAAM,YAAY,KAAK,GAAG,IAAI,EAAE;AAChC,UAAM,EAAE,eAAe,IAAI,KAAK;AAChC,WAAO,OAAO,mBAAmB,WAAW,mBAAmB,YAAY;AAAA,EAC7E;AAAA,EACA,WAAW,GAAG;AACZ,QAAI,CAAC,KAAK,YAAY,CAAC,KAAK,WAAW,EAAE,UAAU,KAAK,QAAQ,KAAK,cAAc;AACjF,WAAK,QAAQ;AACb;AAAA,IACF;AACA,QAAI,KAAK,YAAY,CAAC,KAAK,SAAS;AAClC;AAAA,IACF;AACA,YAAQ,EAAE,OAAO;AAAA,MACf,KAAK,KAAK;AACR,aAAK,GAAG,IAAI,KAAK,YAAY;AAC7B,aAAK,KAAK;AACV;AAAA,MACF,KAAK,KAAK;AACR,YAAI,KAAK,QAAQ,KAAK,QAAQ,UAAU,KAAK,cAAc,GAAG;AAC5D,eAAK,WAAW;AAChB;AAAA,QACF;AACA;AAAA,MACF,KAAK,KAAK;AACR,YAAI,KAAK,QAAQ,KAAK,QAAQ,QAAQ;AACpC,eAAK,WAAW;AAChB;AAAA,QACF;AACA,YAAI,KAAK,kBAAkB,IAAI;AAC7B,eAAK,KAAK;AACV;AAAA,QACF;AACA,aAAK,OAAO,KAAK,aAAa;AAC9B,YAAI,KAAK,QAAQ,gBAAgB,OAAO;AACtC;AAAA,QACF;AACA;AAAA,MACF,KAAK,KAAK;AACR,YAAI,KAAK,kBAAkB,IAAI;AAC7B,eAAK,KAAK;AACV;AAAA,QACF;AACA,aAAK,OAAO,KAAK,aAAa;AAC9B;AAAA,MACF,KAAK,KAAK;AACR,aAAK,OAAO;AACZ;AAAA,MACF,KAAK,KAAK;AACR,aAAK,SAAS;AACd;AAAA,MACF;AACE;AAAA,IACJ;AACA,MAAE,yBAAyB;AAC3B,MAAE,eAAe;AAAA,EACnB;AAAA,EACA,QAAQ,GAAG;AACT,QAAI,KAAK,UAAU;AACjB;AAAA,IACF;AACA,QAAI,EAAE,UAAU,KAAK,MAAM,EAAE,UAAU,KAAK,MAAM;AAChD;AAAA,IACF;AACA,QAAI,KAAK,iBAAiB;AACxB,mBAAa,KAAK,eAAe;AAAA,IACnC;AACA,QAAI,KAAK,iBAAiB,KAAK,GAAG,IAAI,GAAG;AACvC,WAAK,aAAa;AAClB,UAAI,KAAK,QAAQ,iBAAiB,GAAG;AACnC,aAAK,kBAAkB;AAAA,UACrB,MAAM,KAAK,cAAc;AAAA,UACzB,KAAK,QAAQ;AAAA,QACf;AAAA,MACF,OAAO;AACL,aAAK,cAAc;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AAAA,EACA,gBAAgB;AACd,QAAI,KAAK,mBAAmB;AAC1B,WAAK,oBAAoB;AACzB;AAAA,IACF;AACA,UAAM,UAAU,KAAK;AACrB,UAAM,QAAQ,KAAK,GAAG,IAAI;AAC1B,UAAMD,SAAQ,KAAK,SAAS,KAAK;AACjC,QAAI,KAAK,aAAa,KAAK,iBAAiBA,QAAO;AACjD,WAAK,YAAY;AACjB,cAAQ,uBAAuB,KAAK,KAAK,OAAO;AAAA,IAClD;AACA,QAAI,KAAK,iBAAiB;AACxB,mBAAa,KAAK,eAAe;AAAA,IACnC;AACA,SAAK,eAAe;AACpB,SAAK,gBAAgB;AACrB,QAAI,QAAQ,6BAA6B,KAAK,aAAaA,MAAK,GAAG;AACjE,WAAK,OAAO,CAAC;AACb;AAAA,IACF;AACA,QAAIA,OAAM,SAAS,QAAQ,UAAU;AACnC,WAAK,KAAK;AAAA,IACZ,OAAO;AACL,WAAK,eAAeA,MAAK;AAAA,IAC3B;AAAA,EACF;AAAA,EACA,aAAaA,QAAO;AAClB,UAAM,EAAE,YAAY,IAAI;AACxB,WAAO,YAAY,WAAW,KAAK,YAAY,CAAC,EAAE,MAAM,YAAY,MAAMA,OAAM,YAAY;AAAA,EAC9F;AAAA,EACA,SAAS,OAAO;AACd,UAAM,EAAE,UAAU,IAAI,KAAK;AAC3B,QAAI,CAAC,WAAW;AACd,aAAO;AAAA,IACT;AACA,UAAM,QAAQ,MAAM,MAAM,SAAS;AACnC,WAAO,MAAM,MAAM,SAAS,CAAC,EAAE,KAAK;AAAA,EACtC;AAAA,EACA,oBAAoBA,QAAO;AACzB,UAAM,UAAU,KAAK;AACrB,UAAM,iBAAiBA,OAAM,YAAY;AACzC,UAAME,UAAS,QAAQ;AACvB,UAAM,QAAQ,SAAS,QAAQ,aAAa,EAAE;AAC9C,UAAM,SAAS,QAAQ;AACvB,UAAM,UAAU,OAAO,OAAO,CAAC,eAAeA,QAAO,YAAYF,QAAO,cAAc,CAAC;AACvF,WAAO;AAAA,MACL,aAAa,SAAS,QAAQ,SAAS,QAAQ,QAAQ,MAAM,GAAG,KAAK,IAAI;AAAA,IAC3E;AAAA,EACF;AAAA,EACA,eAAe,GAAG;AAChB,UAAM,UAAU,KAAK;AACrB,QAAI,aAAa,QAAQ;AACzB,QAAI;AACJ,QAAI;AACJ,YAAQ,OAAO,QAAQ,SAAS,IAAI;AACpC,QAAI,QAAQ,cAAc,KAAK,KAAK,SAAS,QAAQ,MAAM,MAAM,OAAO;AACtE;AAAA,IACF;AACA,UAAM,SAAS,QAAQ,eAAe,OAAO,QAAQ;AACrD,QAAI,OAAO,QAAQ,WAAW,YAAY;AACxC,cAAQ,OAAO,GAAG,CAAC,SAAS;AAC1B,cAAM,cAAc,KAAK,wBAAwB,KAAK,WAAW;AACjE,aAAK,cAAc;AACnB,gBAAQ,iBAAiB,KAAK,KAAK,SAAS,GAAG,WAAW;AAC1D,aAAK,QAAQ;AAAA,MACf,CAAC;AACD;AAAA,IACF;AACA,QAAI,KAAK,SAAS;AAChB,iBAAW,KAAK,oBAAoB,CAAC;AAAA,IACvC,OAAO;AACL,UAAI,OAAO,eAAe,YAAY;AACpC,qBAAa,WAAW,KAAK,KAAK,SAAS,CAAC;AAAA,MAC9C;AACA,iBAAW,GAAG,UAAU,IAAIJ,GAAE,MAAM,UAAU,CAAC,CAAC,CAAC;AACjD,iBAAW,KAAK,eAAe,QAAQ;AAAA,IACzC;AACA,QAAI,YAAY,MAAM,QAAQ,SAAS,WAAW,GAAG;AACnD,WAAK,cAAc,SAAS;AAC5B,cAAQ,iBAAiB,KAAK,KAAK,SAAS,GAAG,SAAS,WAAW;AACnE,WAAK,QAAQ;AAAA,IACf,WAAW,CAAC,KAAK,WAAW,CAAC,GAAG;AAC9B,WAAK,UAAU;AACf,YAAM,eAAe;AAAA,QACnB,KAAK;AAAA,QACL,MAAM,UAAU;AAAA,QAChB,MAAM,QAAQ;AAAA,QACd,UAAU,QAAQ;AAAA,QAClB,GAAG,QAAQ;AAAA,MACb;AACA,WAAK,iBAAiBA,GAAE,KAAK,YAAY,EAAE,KAAK,CAAC,SAAS;AACxD,aAAK,iBAAiB;AACtB,cAAM,SAAS,QAAQ,gBAAgB,MAAM,CAAC;AAC9C,eAAO,cAAc,KAAK,wBAAwB,OAAO,WAAW;AACpE,gBAAQ,iBAAiB,KAAK,KAAK,SAAS,GAAG,OAAO,WAAW;AACjE,aAAK,gBAAgB,QAAQ,GAAG,QAAQ;AAAA,MAC1C,CAAC,EAAE,KAAK,CAAC,OAAO,YAAY,gBAAgB;AAC1C,gBAAQ,cAAc,KAAK,KAAK,SAAS,GAAG,OAAO,YAAY,WAAW;AAAA,MAC5E,CAAC;AAAA,IACH,OAAO;AACL,cAAQ,iBAAiB,KAAK,KAAK,SAAS,GAAG,CAAC,CAAC;AAAA,IACnD;AAAA,EACF;AAAA,EACA,WAAW,GAAG;AACZ,QAAI,CAAC,KAAK,QAAQ,mBAAmB;AACnC,aAAO;AAAA,IACT;AACA,WAAO,KAAK,WAAW,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC;AAAA,EAC3D;AAAA,EACA,OAAO;AACL,QAAI,KAAK,QAAQ,UAAU,KAAK,SAAS;AACvC,WAAK,QAAQ,OAAO,KAAK,KAAK,SAAS,KAAK,UAAU;AAAA,IACxD;AACA,SAAK,UAAU;AACf,SAAK,gBAAgB;AACrB,QAAI,KAAK,iBAAiB;AACxB,mBAAa,KAAK,eAAe;AAAA,IACnC;AACA,SAAK,WAAW,KAAK;AACrB,SAAK,OAAO,IAAI;AAAA,EAClB;AAAA,EACA,2BAA2B,aAAa,KAAK;AAC3C,UAAM,SAAyB,oBAAI,IAAI;AACvC,eAAW,KAAK,aAAa;AAC3B,YAAM,MAAM,EAAE,KAAK,GAAG;AACtB,YAAM,MAAM,OAAO,IAAI,GAAG;AAC1B,UAAI,KAAK;AACP,YAAI,KAAK,CAAC;AAAA,MACZ,OAAO;AACL,eAAO,IAAI,KAAK,CAAC,CAAC,CAAC;AAAA,MACrB;AAAA,IACF;AACA,WAAO,MAAM,KAAK,OAAO,OAAO,CAAC,EAAE,KAAK;AAAA,EAC1C;AAAA,EACA,UAAU;AACR,QAAI,CAAC,KAAK,YAAY,QAAQ;AAC5B,UAAI,KAAK,QAAQ,wBAAwB;AACvC,aAAK,cAAc;AAAA,MACrB,OAAO;AACL,aAAK,KAAK;AAAA,MACZ;AACA;AAAA,IACF;AACA,UAAM,UAAU,KAAK;AACrB,UAAM,EAAE,SAAAO,UAAS,cAAc,gBAAgB,aAAa,IAAI;AAChE,UAAM,QAAQ,KAAK,SAAS,KAAK,YAAY;AAC7C,UAAM,YAAY,KAAK,QAAQ;AAC/B,UAAM,gBAAgB,KAAK,QAAQ;AACnC,UAAM,YAAY,KAAK;AACvB,QAAI,QAAQ,6BAA6B,KAAK,aAAa,KAAK,GAAG;AACjE,WAAK,OAAO,CAAC;AACb;AAAA,IACF;AACA,QAAIA,UAAS;AACX,WAAK,cAAc,KAAK,2BAA2B,KAAK,aAAaA,QAAO;AAAA,IAC9E;AACA,QAAI;AACJ,UAAM,gBAAgB,CAAC,eAAe;AACpC,YAAM,kBAAkB,WAAW,KAAKA,QAAO;AAC/C,UAAI,aAAa,iBAAiB;AAChC,eAAO;AAAA,MACT;AACA,iBAAW;AACX,aAAO,QAAQ,YAAY,YAAY,QAAQ;AAAA,IACjD;AACA,UAAMC,QAAO,KAAK,YAAY,IAAI,CAAC,YAAY,MAAM;AACnD,YAAM,QAAQD,WAAU,cAAc,UAAU,IAAI;AACpD,aAAO,GAAG,KAAK,eAAe,SAAS,iBAAiB,CAAC,KAAK,eAAe,YAAY,OAAO,CAAC,CAAC;AAAA,IACpG,CAAC,EAAE,KAAK,EAAE;AACV,SAAK,qBAAqB;AAC1B,SAAK,wBAAwB,OAAO;AACpC,cAAU,KAAKC,KAAI;AACnB,kBAAc,KAAK,KAAK,SAAS,WAAW,KAAK,WAAW;AAC5D,SAAK,YAAY;AACjB,cAAU,KAAK;AACf,QAAI,QAAQ,iBAAiB;AAC3B,WAAK,gBAAgB;AACrB,gBAAU,UAAU,CAAC;AACrB,gBAAU,SAAS,IAAI,SAAS,EAAE,EAAE,MAAM,EAAE,SAAS,aAAa;AAAA,IACpE;AACA,SAAK,UAAU;AACf,SAAK,aAAa;AAAA,EACpB;AAAA,EACA,gBAAgB;AACd,UAAM,EAAE,aAAa,IAAI,KAAK;AAC9B,UAAM,YAAY,KAAK;AACvB,SAAK,qBAAqB;AAC1B,SAAK,wBAAwB,OAAO;AACpC,cAAU,MAAM,EAAE,OAAO,KAAK,uBAAuB;AACrD,kBAAc,KAAK,KAAK,SAAS,WAAW,KAAK,WAAW;AAC5D,SAAK,YAAY;AACjB,cAAU,KAAK;AACf,SAAK,UAAU;AAAA,EACjB;AAAA,EACA,uBAAuB;AACrB,UAAM,EAAE,MAAM,IAAI,KAAK;AACvB,QAAI,UAAU,QAAQ;AACpB,YAAM,IAAI,KAAK,GAAG,WAAW,KAAK;AAClC,WAAK,WAAW,IAAI,SAAS,IAAI,IAAI,IAAI,GAAG;AAAA,IAC9C,WAAW,UAAU,QAAQ;AAC3B,WAAK,WAAW,IAAI,SAAS,EAAE;AAAA,IACjC;AAAA,EACF;AAAA,EACA,eAAe;AACb,UAAM,QAAQ,KAAK,GAAG,IAAI,EAAE,YAAY;AACxC,QAAI,CAAC,OAAO;AACV;AAAA,IACF;AACA,UAAM,YAAY,KAAK,YAAY,KAAK,CAAC,MAAM,EAAE,MAAM,YAAY,EAAE,QAAQ,KAAK,MAAM,CAAC,KAAK;AAC9F,SAAK,OAAO,SAAS;AAAA,EACvB;AAAA,EACA,OAAO,YAAY;AACjB,UAAM,EAAE,QAAQ,eAAe,IAAI,KAAK;AACxC,UAAM,YAAY,aAAa,KAAK,eAAe,WAAW,MAAM,OAAO,KAAK,aAAa,MAAM,IAAI;AACvG,QAAI,KAAK,cAAc,WAAW;AAChC,WAAK,YAAY;AACjB,WAAK,OAAO;AACZ,sBAAgB,KAAK,KAAK,SAAS,SAAS;AAAA,IAC9C;AAAA,EACF;AAAA,EACA,wBAAwB,aAAa;AACnC,QAAI,YAAY,UAAU,OAAO,YAAY,CAAC,MAAM,UAAU;AAC5D,aAAO,YAAY,IAAI,CAAC,WAAW,EAAE,OAAO,MAAM,KAAK,EAAE;AAAA,IAC3D;AACA,WAAO,YAAY;AAAA,MACjB,CAAC,MAAM,OAAO,EAAE,UAAU,WAAW,IAAI,EAAE,GAAG,GAAG,OAAO,OAAO,EAAE,KAAK,EAAE;AAAA,IAC1E;AAAA,EACF;AAAA,EACA,oBAAoBH,cAAa,UAAU;AACzC,UAAM,cAAcA,gBAAe,IAAI,KAAK,EAAE,YAAY;AAC1D,QAAI,eAAe,UAAU,eAAe,SAAS,eAAe,UAAU;AAC5E,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAAA,EACA,gBAAgB,QAAQ,eAAe,UAAU;AAC/C,UAAM,UAAU,KAAK;AACrB,WAAO,cAAc,KAAK,wBAAwB,OAAO,WAAW;AACpE,QAAI,CAAC,QAAQ,SAAS;AACpB,WAAK,eAAe,QAAQ,IAAI;AAChC,UAAI,QAAQ,qBAAqB,CAAC,OAAO,YAAY,QAAQ;AAC3D,aAAK,WAAW,KAAK,aAAa;AAAA,MACpC;AAAA,IACF;AACA,QAAI,kBAAkB,KAAK,SAAS,KAAK,YAAY,GAAG;AACtD;AAAA,IACF;AACA,SAAK,cAAc,OAAO;AAC1B,SAAK,QAAQ;AAAA,EACf;AAAA,EACA,SAASI,QAAO;AACd,UAAM,WAAW,KAAK,QAAQ;AAC9B,UAAM,YAAY,KAAK;AACvB,UAAMC,YAAW,UAAU,KAAK,IAAI,KAAK,QAAQ,UAAU,EAAE;AAC7D,cAAU,KAAK,IAAI,QAAQ,EAAE,EAAE,YAAY,QAAQ;AACnD,SAAK,gBAAgBD;AACrB,QAAI,KAAK,kBAAkB,MAAMC,UAAS,SAAS,KAAK,eAAe;AACrE,YAAM,aAAaA,UAAS,IAAI,KAAK,aAAa;AAClD,MAAAV,GAAE,UAAU,EAAE,SAAS,QAAQ;AAC/B,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAAA,EACA,aAAa;AACX,SAAK,OAAO,KAAK,YAAY,QAAQ,KAAK,IAAI,CAAC;AAAA,EACjD;AAAA,EACA,OAAO,GAAG;AACR,SAAK,KAAK;AACV,SAAK,SAAS,CAAC;AAAA,EACjB;AAAA,EACA,SAAS;AACP,QAAI,KAAK,kBAAkB,IAAI;AAC7B;AAAA,IACF;AACA,QAAI,KAAK,kBAAkB,GAAG;AAC5B,WAAK,WAAW,SAAS,IAAI,KAAK,QAAQ,UAAU,EAAE,EAAE,MAAM,EAAE,YAAY,KAAK,QAAQ,QAAQ;AACjG,WAAK,gBAAgB;AACrB,WAAK,oBAAoB;AACzB,WAAK,GAAG,IAAI,KAAK,YAAY;AAC7B,WAAK,aAAa;AAClB;AAAA,IACF;AACA,SAAK,aAAa,KAAK,gBAAgB,CAAC;AAAA,EAC1C;AAAA,EACA,WAAW;AACT,QAAI,KAAK,kBAAkB,KAAK,YAAY,SAAS,GAAG;AACtD;AAAA,IACF;AACA,SAAK,aAAa,KAAK,gBAAgB,CAAC;AAAA,EAC1C;AAAA,EACA,aAAaS,QAAO;AAClB,UAAM,aAAa,KAAK,SAASA,MAAK;AACtC,QAAI,CAAC,YAAY;AACf;AAAA,IACF;AACA,UAAM,cAAcT,GAAE,UAAU,EAAE,YAAY,KAAK;AACnD,UAAM,YAAY,WAAW;AAC7B,UAAM,YAAY,KAAK;AACvB,UAAM,aAAa,UAAU,UAAU,KAAK;AAC5C,UAAM,aAAa,aAAa,KAAK,QAAQ,YAAY;AACzD,QAAI,YAAY,YAAY;AAC1B,gBAAU,UAAU,SAAS;AAAA,IAC/B,WAAW,YAAY,YAAY;AACjC,gBAAU,UAAU,YAAY,KAAK,QAAQ,YAAY,WAAW;AAAA,IACtE;AACA,QAAI,CAAC,KAAK,QAAQ,eAAe;AAC/B,WAAK,oBAAoB;AACzB,WAAK,GAAG,IAAI,KAAK,SAAS,KAAK,YAAYS,MAAK,EAAE,KAAK,CAAC;AAAA,IAC1D;AACA,SAAK,OAAO,IAAI;AAAA,EAClB;AAAA,EACA,SAASA,QAAO;AACd,UAAM,mBAAmB,KAAK,QAAQ;AACtC,UAAM,aAAa,KAAK,YAAYA,MAAK;AACzC,SAAK,eAAe,KAAK,SAAS,WAAW,KAAK;AAClD,QAAI,KAAK,iBAAiB,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,QAAQ,eAAe;AACtE,WAAK,GAAG,IAAI,KAAK,YAAY;AAAA,IAC/B;AACA,SAAK,OAAO,IAAI;AAChB,SAAK,cAAc,CAAC;AACpB,SAAK,YAAY;AACjB,sBAAkB,KAAK,KAAK,SAAS,UAAU;AAAA,EACjD;AAAA,EACA,SAAS,OAAO;AACd,UAAM,EAAE,UAAU,IAAI,KAAK;AAC3B,QAAI,CAAC,WAAW;AACd,aAAO;AAAA,IACT;AACA,UAAM,eAAe,KAAK;AAC1B,UAAM,QAAQ,aAAa,MAAM,SAAS;AAC1C,QAAI,MAAM,WAAW,GAAG;AACtB,aAAO;AAAA,IACT;AACA,WAAO,aAAa,OAAO,GAAG,aAAa,SAAS,MAAM,MAAM,SAAS,CAAC,EAAE,MAAM,IAAI;AAAA,EACxF;AAAA,EACA,UAAU;AACR,SAAK,GAAG,IAAI,eAAe,EAAE,WAAW,cAAc;AACtD,QAAI,KAAK,oBAAoB;AAC3B,MAAAT,GAAE,MAAM,EAAE,IAAI,uBAAuB,KAAK,kBAAkB;AAAA,IAC9D;AACA,SAAK,WAAW,OAAO;AAAA,EACzB;AACF;AACA,cAAc,WAAW;AACzB,cAAc,QAAQ;AACtB,IAAI,eAAe;AAGnB,IAAI,UAAU;AACd,SAAS,oBAAoBW,KAAI;AAC/B,YAAUA,GAAE;AACZ,EAAAA,IAAG,eAAe;AAClB,EAAAA,IAAG,GAAG,wBAAwB,SAAS,SAAS,MAAM;AACpD,QAAI,CAAC,UAAU,QAAQ;AACrB,aAAO,KAAK,MAAM,EAAE,KAAK,OAAO;AAAA,IAClC;AACA,WAAO,KAAK,KAAK,WAAW;AAC1B,YAAM,eAAeA,IAAG,IAAI;AAC5B,UAAI,WAAW,aAAa,KAAK,OAAO;AACxC,UAAI,OAAO,YAAY,UAAU;AAC/B,YAAI,YAAY,OAAO,SAAS,OAAO,MAAM,YAAY;AACvD,mBAAS,OAAO;AAAA,YACd;AAAA,UACF;AAAA,QACF;AAAA,MACF,OAAO;AACL,YAAI,YAAY,SAAS,SAAS;AAChC,mBAAS,QAAQ;AAAA,QACnB;AACA,mBAAW,IAAI,aAAa,MAAM,OAAO;AACzC,qBAAa,KAAK,SAAS,QAAQ;AAAA,MACrC;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAACA,IAAG,GAAG,cAAc;AACvB,IAAAA,IAAG,GAAG,eAAeA,IAAG,GAAG;AAAA,EAC7B;AACF;AAGA,oBAAoB,eAAAC,OAAM;;;ACrtB1B;;;ACAA;AAAO,IAAM,wBAAwB;AAAA,EACnC,UAAU;AAAA,EACV,UAAU;AAAA,EACV,wBAAwB;AAAA,EACxB,oBAAoB;AAAA,EACpB,eAAe;AAAA,EACf,iBAAiB;AAAA,EACjB,2BAA2B;AAAA,EAC3B,mBAAmB;AAAA,EACnB,aAAa;AACf;;;ACVA;;;ACAA;AAAA,IAAI,KAAK;AAAA,EACP,WAAW;AAAA,EACX,aAAa;AAAA,EACb,YAAY,CAAC,CAAC;AAAA,EACd,YAAY,CAAC,UAAK,EAAE;AAAA,EACpB,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,WAAW,CAAC,MAAM,IAAI;AAAA,EACtB,QAAQ,CAAC,WAAW,SAAS,UAAU,gBAAa,UAAU,WAAW,WAAQ;AAAA,EACjF,aAAa,CAAC,OAAO,OAAO,OAAO,MAAM,OAAO,OAAO,KAAK;AAAA,EAC5D,UAAU,CAAC,SAAS,WAAW,SAAS,SAAS,QAAQ,SAAS,SAAS,UAAU,cAAc,WAAW,aAAa,WAAW;AAAA,EACtI,eAAe,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AACpG;AAEA,IAAI,KAAK;AAAA,EACP,WAAW;AAAA,EACX,aAAa;AAAA,EACb,YAAY,CAAC,CAAC;AAAA,EACd,YAAY,CAAC,UAAK,EAAE;AAAA,EACpB,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,WAAW,CAAC,MAAM,IAAI;AAAA,EACtB,QAAQ,CAAC,YAAY,WAAW,WAAW,YAAY,UAAU,aAAa,UAAU;AAAA,EACxF,aAAa,CAAC,OAAO,QAAQ,OAAO,QAAQ,OAAO,OAAO,KAAK;AAAA,EAC/D,UAAU,CAAC,SAAS,UAAU,WAAQ,SAAS,QAAQ,QAAQ,UAAU,SAAS,YAAY,WAAW,YAAY,UAAU;AAAA,EAC/H,eAAe,CAAC,OAAO,OAAO,WAAQ,OAAO,QAAQ,QAAQ,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AACvG;AAEA,IAAI,KAAK;AAAA,EACP,WAAW;AAAA,EACX,aAAa;AAAA,EACb,YAAY,CAAC,CAAC;AAAA,EACd,YAAY,CAAC,UAAK,EAAE;AAAA,EACpB,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,WAAW,CAAC,MAAM,IAAI;AAAA,EACtB,QAAQ,CAAC,UAAU,UAAU,WAAW,aAAa,YAAY,UAAU,UAAU;AAAA,EACrF,aAAa,CAAC,OAAO,OAAO,QAAQ,OAAO,OAAO,OAAO,KAAK;AAAA,EAC9D,UAAU,CAAC,WAAW,YAAY,SAAS,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UAAU;AAAA,EACnI,eAAe,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AACpG;AAEA,IAAO,oBAAQ,EAAE,IAAI,IAAI,GAAG;;;AC7C5B;;;ACAA;;;ACAA;;;ACAA;;;ACAA;;;ACAA;AAAA,IAAIC,QAAO,EAAC,OAAO,MAAM;AAAC,EAAC;AAE3B,SAAS,WAAW;AAClB,WAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,EAAE,GAAG;AAC3D,QAAI,EAAE,IAAI,UAAU,CAAC,IAAI,OAAQ,KAAK,KAAM,QAAQ,KAAK,CAAC,EAAG,OAAM,IAAI,MAAM,mBAAmB,CAAC;AACjG,MAAE,CAAC,IAAI,CAAC;AAAA,EACV;AACA,SAAO,IAAI,SAAS,CAAC;AACvB;AAEA,SAAS,SAAS,GAAG;AACnB,OAAK,IAAI;AACX;AAEA,SAAS,eAAe,WAAW,OAAO;AACxC,SAAO,UAAU,KAAK,EAAE,MAAM,OAAO,EAAE,IAAI,SAAS,GAAG;AACrD,QAAI,OAAO,IAAI,IAAI,EAAE,QAAQ,GAAG;AAChC,QAAI,KAAK,EAAG,QAAO,EAAE,MAAM,IAAI,CAAC,GAAG,IAAI,EAAE,MAAM,GAAG,CAAC;AACnD,QAAI,KAAK,CAAC,MAAM,eAAe,CAAC,EAAG,OAAM,IAAI,MAAM,mBAAmB,CAAC;AACvE,WAAO,EAAC,MAAM,GAAG,KAAU;AAAA,EAC7B,CAAC;AACH;AAEA,SAAS,YAAY,SAAS,YAAY;AAAA,EACxC,aAAa;AAAA,EACb,IAAI,SAAS,UAAU,UAAU;AAC/B,QAAI,IAAI,KAAK,GACT,IAAI,eAAe,WAAW,IAAI,CAAC,GACnC,GACA,IAAI,IACJ,IAAI,EAAE;AAGV,QAAI,UAAU,SAAS,GAAG;AACxB,aAAO,EAAE,IAAI,EAAG,MAAK,KAAK,WAAW,EAAE,CAAC,GAAG,UAAU,IAAI,IAAI,EAAE,CAAC,GAAG,SAAS,IAAI,GAAI,QAAO;AAC3F;AAAA,IACF;AAIA,QAAI,YAAY,QAAQ,OAAO,aAAa,WAAY,OAAM,IAAI,MAAM,uBAAuB,QAAQ;AACvG,WAAO,EAAE,IAAI,GAAG;AACd,UAAI,KAAK,WAAW,EAAE,CAAC,GAAG,KAAM,GAAE,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,SAAS,MAAM,QAAQ;AAAA,eAC/D,YAAY,KAAM,MAAK,KAAK,EAAG,GAAE,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,SAAS,MAAM,IAAI;AAAA,IAC9E;AAEA,WAAO;AAAA,EACT;AAAA,EACA,MAAM,WAAW;AACf,QAAI,OAAO,CAAC,GAAG,IAAI,KAAK;AACxB,aAAS,KAAK,EAAG,MAAK,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM;AACtC,WAAO,IAAI,SAAS,IAAI;AAAA,EAC1B;AAAA,EACA,MAAM,SAASC,OAAM,MAAM;AACzB,SAAK,IAAI,UAAU,SAAS,KAAK,EAAG,UAAS,OAAO,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,EAAG,MAAK,CAAC,IAAI,UAAU,IAAI,CAAC;AACpH,QAAI,CAAC,KAAK,EAAE,eAAeA,KAAI,EAAG,OAAM,IAAI,MAAM,mBAAmBA,KAAI;AACzE,SAAK,IAAI,KAAK,EAAEA,KAAI,GAAG,IAAI,GAAG,IAAI,EAAE,QAAQ,IAAI,GAAG,EAAE,EAAG,GAAE,CAAC,EAAE,MAAM,MAAM,MAAM,IAAI;AAAA,EACrF;AAAA,EACA,OAAO,SAASA,OAAM,MAAM,MAAM;AAChC,QAAI,CAAC,KAAK,EAAE,eAAeA,KAAI,EAAG,OAAM,IAAI,MAAM,mBAAmBA,KAAI;AACzE,aAAS,IAAI,KAAK,EAAEA,KAAI,GAAG,IAAI,GAAG,IAAI,EAAE,QAAQ,IAAI,GAAG,EAAE,EAAG,GAAE,CAAC,EAAE,MAAM,MAAM,MAAM,IAAI;AAAA,EACzF;AACF;AAEA,SAAS,IAAIA,OAAM,MAAM;AACvB,WAAS,IAAI,GAAG,IAAIA,MAAK,QAAQ,GAAG,IAAI,GAAG,EAAE,GAAG;AAC9C,SAAK,IAAIA,MAAK,CAAC,GAAG,SAAS,MAAM;AAC/B,aAAO,EAAE;AAAA,IACX;AAAA,EACF;AACF;AAEA,SAAS,IAAIA,OAAM,MAAM,UAAU;AACjC,WAAS,IAAI,GAAG,IAAIA,MAAK,QAAQ,IAAI,GAAG,EAAE,GAAG;AAC3C,QAAIA,MAAK,CAAC,EAAE,SAAS,MAAM;AACzB,MAAAA,MAAK,CAAC,IAAID,OAAMC,QAAOA,MAAK,MAAM,GAAG,CAAC,EAAE,OAAOA,MAAK,MAAM,IAAI,CAAC,CAAC;AAChE;AAAA,IACF;AAAA,EACF;AACA,MAAI,YAAY,KAAM,CAAAA,MAAK,KAAK,EAAC,MAAY,OAAO,SAAQ,CAAC;AAC7D,SAAOA;AACT;AAEA,IAAO,mBAAQ;;;ACnFf;;;ACAA;;;ACAA;;;ACAA;AAAO,IAAI,QAAQ;AAEnB,IAAO,qBAAQ;AAAA,EACb,KAAK;AAAA,EACL;AAAA,EACA,OAAO;AAAA,EACP,KAAK;AAAA,EACL,OAAO;AACT;;;ADNe,SAAR,kBAAiB,MAAM;AAC5B,MAAI,SAAS,QAAQ,IAAI,IAAI,OAAO,QAAQ,GAAG;AAC/C,MAAI,KAAK,MAAM,SAAS,KAAK,MAAM,GAAG,CAAC,OAAO,QAAS,QAAO,KAAK,MAAM,IAAI,CAAC;AAC9E,SAAO,mBAAW,eAAe,MAAM,IAAI,EAAC,OAAO,mBAAW,MAAM,GAAG,OAAO,KAAI,IAAI;AACxF;;;ADHA,SAAS,eAAe,MAAM;AAC5B,SAAO,WAAW;AAChB,QAAIC,YAAW,KAAK,eAChB,MAAM,KAAK;AACf,WAAO,QAAQ,SAASA,UAAS,gBAAgB,iBAAiB,QAC5DA,UAAS,cAAc,IAAI,IAC3BA,UAAS,gBAAgB,KAAK,IAAI;AAAA,EAC1C;AACF;AAEA,SAAS,aAAa,UAAU;AAC9B,SAAO,WAAW;AAChB,WAAO,KAAK,cAAc,gBAAgB,SAAS,OAAO,SAAS,KAAK;AAAA,EAC1E;AACF;AAEe,SAAR,gBAAiB,MAAM;AAC5B,MAAI,WAAW,kBAAU,IAAI;AAC7B,UAAQ,SAAS,QACX,eACA,gBAAgB,QAAQ;AAChC;;;AGxBA;;;ACAA;;;ACAA;AAAA,SAAS,OAAO;AAAC;AAEF,SAAR,iBAAiB,UAAU;AAChC,SAAO,YAAY,OAAO,OAAO,WAAW;AAC1C,WAAO,KAAK,cAAc,QAAQ;AAAA,EACpC;AACF;;;ADHe,SAAR,eAAiB,QAAQ;AAC9B,MAAI,OAAO,WAAW,WAAY,UAAS,iBAAS,MAAM;AAE1D,WAAS,SAAS,KAAK,SAAS,IAAI,OAAO,QAAQ,YAAY,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAC9F,aAAS,QAAQ,OAAO,CAAC,GAAG,IAAI,MAAM,QAAQ,WAAW,UAAU,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,MAAM,SAAS,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACtH,WAAK,OAAO,MAAM,CAAC,OAAO,UAAU,OAAO,KAAK,MAAM,KAAK,UAAU,GAAG,KAAK,IAAI;AAC/E,YAAI,cAAc,KAAM,SAAQ,WAAW,KAAK;AAChD,iBAAS,CAAC,IAAI;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAI,UAAU,WAAW,KAAK,QAAQ;AAC/C;;;AEhBA;;;ACAA;AAMe,SAAR,MAAuB,GAAG;AAC/B,SAAO,KAAK,OAAO,CAAC,IAAI,MAAM,QAAQ,CAAC,IAAI,IAAI,MAAM,KAAK,CAAC;AAC7D;;;ACRA;AAAA,SAAS,QAAQ;AACf,SAAO,CAAC;AACV;AAEe,SAAR,oBAAiB,UAAU;AAChC,SAAO,YAAY,OAAO,QAAQ,WAAW;AAC3C,WAAO,KAAK,iBAAiB,QAAQ;AAAA,EACvC;AACF;;;AFJA,SAAS,SAAS,QAAQ;AACxB,SAAO,WAAW;AAChB,WAAO,MAAM,OAAO,MAAM,MAAM,SAAS,CAAC;AAAA,EAC5C;AACF;AAEe,SAAR,kBAAiB,QAAQ;AAC9B,MAAI,OAAO,WAAW,WAAY,UAAS,SAAS,MAAM;AAAA,MACrD,UAAS,oBAAY,MAAM;AAEhC,WAAS,SAAS,KAAK,SAAS,IAAI,OAAO,QAAQ,YAAY,CAAC,GAAG,UAAU,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAClG,aAAS,QAAQ,OAAO,CAAC,GAAG,IAAI,MAAM,QAAQ,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACrE,UAAI,OAAO,MAAM,CAAC,GAAG;AACnB,kBAAU,KAAK,OAAO,KAAK,MAAM,KAAK,UAAU,GAAG,KAAK,CAAC;AACzD,gBAAQ,KAAK,IAAI;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAI,UAAU,WAAW,OAAO;AACzC;;;AGxBA;;;ACAA;AAAe,SAAR,gBAAiB,UAAU;AAChC,SAAO,WAAW;AAChB,WAAO,KAAK,QAAQ,QAAQ;AAAA,EAC9B;AACF;AAEO,SAAS,aAAa,UAAU;AACrC,SAAO,SAAS,MAAM;AACpB,WAAO,KAAK,QAAQ,QAAQ;AAAA,EAC9B;AACF;;;ADRA,IAAI,OAAO,MAAM,UAAU;AAE3B,SAAS,UAAUC,QAAO;AACxB,SAAO,WAAW;AAChB,WAAO,KAAK,KAAK,KAAK,UAAUA,MAAK;AAAA,EACvC;AACF;AAEA,SAAS,aAAa;AACpB,SAAO,KAAK;AACd;AAEe,SAAR,oBAAiBA,QAAO;AAC7B,SAAO,KAAK,OAAOA,UAAS,OAAO,aAC7B,UAAU,OAAOA,WAAU,aAAaA,SAAQ,aAAaA,MAAK,CAAC,CAAC;AAC5E;;;AEjBA;AAEA,IAAI,SAAS,MAAM,UAAU;AAE7B,SAAS,WAAW;AAClB,SAAO,MAAM,KAAK,KAAK,QAAQ;AACjC;AAEA,SAAS,eAAeC,QAAO;AAC7B,SAAO,WAAW;AAChB,WAAO,OAAO,KAAK,KAAK,UAAUA,MAAK;AAAA,EACzC;AACF;AAEe,SAAR,uBAAiBA,QAAO;AAC7B,SAAO,KAAK,UAAUA,UAAS,OAAO,WAChC,eAAe,OAAOA,WAAU,aAAaA,SAAQ,aAAaA,MAAK,CAAC,CAAC;AACjF;;;ACjBA;AAGe,SAAR,eAAiBC,QAAO;AAC7B,MAAI,OAAOA,WAAU,WAAY,CAAAA,SAAQ,gBAAQA,MAAK;AAEtD,WAAS,SAAS,KAAK,SAAS,IAAI,OAAO,QAAQ,YAAY,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAC9F,aAAS,QAAQ,OAAO,CAAC,GAAG,IAAI,MAAM,QAAQ,WAAW,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACnG,WAAK,OAAO,MAAM,CAAC,MAAMA,OAAM,KAAK,MAAM,KAAK,UAAU,GAAG,KAAK,GAAG;AAClE,iBAAS,KAAK,IAAI;AAAA,MACpB;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAI,UAAU,WAAW,KAAK,QAAQ;AAC/C;;;ACfA;;;ACAA;;;ACAA;AAAe,SAAR,eAAiB,QAAQ;AAC9B,SAAO,IAAI,MAAM,OAAO,MAAM;AAChC;;;ADCe,SAAR,gBAAmB;AACxB,SAAO,IAAI,UAAU,KAAK,UAAU,KAAK,QAAQ,IAAI,cAAM,GAAG,KAAK,QAAQ;AAC7E;AAEO,SAAS,UAAU,QAAQC,QAAO;AACvC,OAAK,gBAAgB,OAAO;AAC5B,OAAK,eAAe,OAAO;AAC3B,OAAK,QAAQ;AACb,OAAK,UAAU;AACf,OAAK,WAAWA;AAClB;AAEA,UAAU,YAAY;AAAA,EACpB,aAAa;AAAA,EACb,aAAa,SAAS,OAAO;AAAE,WAAO,KAAK,QAAQ,aAAa,OAAO,KAAK,KAAK;AAAA,EAAG;AAAA,EACpF,cAAc,SAAS,OAAOC,OAAM;AAAE,WAAO,KAAK,QAAQ,aAAa,OAAOA,KAAI;AAAA,EAAG;AAAA,EACrF,eAAe,SAAS,UAAU;AAAE,WAAO,KAAK,QAAQ,cAAc,QAAQ;AAAA,EAAG;AAAA,EACjF,kBAAkB,SAAS,UAAU;AAAE,WAAO,KAAK,QAAQ,iBAAiB,QAAQ;AAAA,EAAG;AACzF;;;AErBA;AAAe,SAAR,iBAAiB,GAAG;AACzB,SAAO,WAAW;AAChB,WAAO;AAAA,EACT;AACF;;;AHAA,SAAS,UAAU,QAAQ,OAAOC,QAAO,QAAQ,MAAM,MAAM;AAC3D,MAAI,IAAI,GACJ,MACA,cAAc,MAAM,QACpB,aAAa,KAAK;AAKtB,SAAO,IAAI,YAAY,EAAE,GAAG;AAC1B,QAAI,OAAO,MAAM,CAAC,GAAG;AACnB,WAAK,WAAW,KAAK,CAAC;AACtB,aAAO,CAAC,IAAI;AAAA,IACd,OAAO;AACL,MAAAA,OAAM,CAAC,IAAI,IAAI,UAAU,QAAQ,KAAK,CAAC,CAAC;AAAA,IAC1C;AAAA,EACF;AAGA,SAAO,IAAI,aAAa,EAAE,GAAG;AAC3B,QAAI,OAAO,MAAM,CAAC,GAAG;AACnB,WAAK,CAAC,IAAI;AAAA,IACZ;AAAA,EACF;AACF;AAEA,SAAS,QAAQ,QAAQ,OAAOA,QAAO,QAAQ,MAAM,MAAM,KAAK;AAC9D,MAAI,GACA,MACA,iBAAiB,oBAAI,OACrB,cAAc,MAAM,QACpB,aAAa,KAAK,QAClB,YAAY,IAAI,MAAM,WAAW,GACjC;AAIJ,OAAK,IAAI,GAAG,IAAI,aAAa,EAAE,GAAG;AAChC,QAAI,OAAO,MAAM,CAAC,GAAG;AACnB,gBAAU,CAAC,IAAI,WAAW,IAAI,KAAK,MAAM,KAAK,UAAU,GAAG,KAAK,IAAI;AACpE,UAAI,eAAe,IAAI,QAAQ,GAAG;AAChC,aAAK,CAAC,IAAI;AAAA,MACZ,OAAO;AACL,uBAAe,IAAI,UAAU,IAAI;AAAA,MACnC;AAAA,IACF;AAAA,EACF;AAKA,OAAK,IAAI,GAAG,IAAI,YAAY,EAAE,GAAG;AAC/B,eAAW,IAAI,KAAK,QAAQ,KAAK,CAAC,GAAG,GAAG,IAAI,IAAI;AAChD,QAAI,OAAO,eAAe,IAAI,QAAQ,GAAG;AACvC,aAAO,CAAC,IAAI;AACZ,WAAK,WAAW,KAAK,CAAC;AACtB,qBAAe,OAAO,QAAQ;AAAA,IAChC,OAAO;AACL,MAAAA,OAAM,CAAC,IAAI,IAAI,UAAU,QAAQ,KAAK,CAAC,CAAC;AAAA,IAC1C;AAAA,EACF;AAGA,OAAK,IAAI,GAAG,IAAI,aAAa,EAAE,GAAG;AAChC,SAAK,OAAO,MAAM,CAAC,MAAO,eAAe,IAAI,UAAU,CAAC,CAAC,MAAM,MAAO;AACpE,WAAK,CAAC,IAAI;AAAA,IACZ;AAAA,EACF;AACF;AAEA,SAAS,MAAM,MAAM;AACnB,SAAO,KAAK;AACd;AAEe,SAAR,aAAiB,OAAO,KAAK;AAClC,MAAI,CAAC,UAAU,OAAQ,QAAO,MAAM,KAAK,MAAM,KAAK;AAEpD,MAAIC,QAAO,MAAM,UAAU,WACvB,UAAU,KAAK,UACf,SAAS,KAAK;AAElB,MAAI,OAAO,UAAU,WAAY,SAAQ,iBAAS,KAAK;AAEvD,WAAS,IAAI,OAAO,QAAQ,SAAS,IAAI,MAAM,CAAC,GAAGD,SAAQ,IAAI,MAAM,CAAC,GAAG,OAAO,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAC/G,QAAI,SAAS,QAAQ,CAAC,GAClB,QAAQ,OAAO,CAAC,GAChB,cAAc,MAAM,QACpB,OAAO,UAAU,MAAM,KAAK,QAAQ,UAAU,OAAO,UAAU,GAAG,OAAO,CAAC,GAC1E,aAAa,KAAK,QAClB,aAAaA,OAAM,CAAC,IAAI,IAAI,MAAM,UAAU,GAC5C,cAAc,OAAO,CAAC,IAAI,IAAI,MAAM,UAAU,GAC9C,YAAY,KAAK,CAAC,IAAI,IAAI,MAAM,WAAW;AAE/C,IAAAC,MAAK,QAAQ,OAAO,YAAY,aAAa,WAAW,MAAM,GAAG;AAKjE,aAAS,KAAK,GAAG,KAAK,GAAG,UAAUC,OAAM,KAAK,YAAY,EAAE,IAAI;AAC9D,UAAI,WAAW,WAAW,EAAE,GAAG;AAC7B,YAAI,MAAM,GAAI,MAAK,KAAK;AACxB,eAAO,EAAEA,QAAO,YAAY,EAAE,MAAM,EAAE,KAAK,WAAW;AACtD,iBAAS,QAAQA,SAAQ;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AAEA,WAAS,IAAI,UAAU,QAAQ,OAAO;AACtC,SAAO,SAASF;AAChB,SAAO,QAAQ;AACf,SAAO;AACT;AAQA,SAAS,UAAU,MAAM;AACvB,SAAO,OAAO,SAAS,YAAY,YAAY,OAC3C,OACA,MAAM,KAAK,IAAI;AACrB;;;AI/HA;AAGe,SAAR,eAAmB;AACxB,SAAO,IAAI,UAAU,KAAK,SAAS,KAAK,QAAQ,IAAI,cAAM,GAAG,KAAK,QAAQ;AAC5E;;;ACLA;AAAe,SAAR,aAAiB,SAAS,UAAU,QAAQ;AACjD,MAAIG,SAAQ,KAAK,MAAM,GAAG,SAAS,MAAM,OAAO,KAAK,KAAK;AAC1D,MAAI,OAAO,YAAY,YAAY;AACjC,IAAAA,SAAQ,QAAQA,MAAK;AACrB,QAAIA,OAAO,CAAAA,SAAQA,OAAM,UAAU;AAAA,EACrC,OAAO;AACL,IAAAA,SAAQA,OAAM,OAAO,UAAU,EAAE;AAAA,EACnC;AACA,MAAI,YAAY,MAAM;AACpB,aAAS,SAAS,MAAM;AACxB,QAAI,OAAQ,UAAS,OAAO,UAAU;AAAA,EACxC;AACA,MAAI,UAAU,KAAM,MAAK,OAAO;AAAA,MAAQ,QAAO,IAAI;AACnD,SAAOA,UAAS,SAASA,OAAM,MAAM,MAAM,EAAE,MAAM,IAAI;AACzD;;;ACdA;AAEe,SAAR,cAAiB,SAAS;AAC/B,MAAIC,aAAY,QAAQ,YAAY,QAAQ,UAAU,IAAI;AAE1D,WAAS,UAAU,KAAK,SAAS,UAAUA,WAAU,SAAS,KAAK,QAAQ,QAAQ,KAAK,QAAQ,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE,GAAG,SAAS,IAAI,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACvK,aAAS,SAAS,QAAQ,CAAC,GAAG,SAAS,QAAQ,CAAC,GAAG,IAAI,OAAO,QAAQC,SAAQ,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAC/H,UAAI,OAAO,OAAO,CAAC,KAAK,OAAO,CAAC,GAAG;AACjC,QAAAA,OAAM,CAAC,IAAI;AAAA,MACb;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAI,IAAI,EAAE,GAAG;AAClB,WAAO,CAAC,IAAI,QAAQ,CAAC;AAAA,EACvB;AAEA,SAAO,IAAI,UAAU,QAAQ,KAAK,QAAQ;AAC5C;;;AClBA;AAAe,SAAR,gBAAmB;AAExB,WAAS,SAAS,KAAK,SAAS,IAAI,IAAI,IAAI,OAAO,QAAQ,EAAE,IAAI,KAAI;AACnE,aAAS,QAAQ,OAAO,CAAC,GAAG,IAAI,MAAM,SAAS,GAAGC,QAAO,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,KAAI;AAClF,UAAI,OAAO,MAAM,CAAC,GAAG;AACnB,YAAIA,SAAQ,KAAK,wBAAwBA,KAAI,IAAI,EAAG,CAAAA,MAAK,WAAW,aAAa,MAAMA,KAAI;AAC3F,QAAAA,QAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;;;ACZA;AAEe,SAAR,aAAiB,SAAS;AAC/B,MAAI,CAAC,QAAS,WAAU;AAExB,WAAS,YAAY,GAAG,GAAG;AACzB,WAAO,KAAK,IAAI,QAAQ,EAAE,UAAU,EAAE,QAAQ,IAAI,CAAC,IAAI,CAAC;AAAA,EAC1D;AAEA,WAAS,SAAS,KAAK,SAAS,IAAI,OAAO,QAAQ,aAAa,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAC/F,aAAS,QAAQ,OAAO,CAAC,GAAG,IAAI,MAAM,QAAQ,YAAY,WAAW,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAC/G,UAAI,OAAO,MAAM,CAAC,GAAG;AACnB,kBAAU,CAAC,IAAI;AAAA,MACjB;AAAA,IACF;AACA,cAAU,KAAK,WAAW;AAAA,EAC5B;AAEA,SAAO,IAAI,UAAU,YAAY,KAAK,QAAQ,EAAE,MAAM;AACxD;AAEA,SAAS,UAAU,GAAG,GAAG;AACvB,SAAO,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI;AAC/C;;;ACvBA;AAAe,SAAR,eAAmB;AACxB,MAAI,WAAW,UAAU,CAAC;AAC1B,YAAU,CAAC,IAAI;AACf,WAAS,MAAM,MAAM,SAAS;AAC9B,SAAO;AACT;;;ACLA;AAAe,SAAR,gBAAmB;AACxB,SAAO,MAAM,KAAK,IAAI;AACxB;;;ACFA;AAAe,SAAR,eAAmB;AAExB,WAAS,SAAS,KAAK,SAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAI,GAAG,EAAE,GAAG;AACpE,aAAS,QAAQ,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI,MAAM,QAAQ,IAAI,GAAG,EAAE,GAAG;AAC/D,UAAI,OAAO,MAAM,CAAC;AAClB,UAAI,KAAM,QAAO;AAAA,IACnB;AAAA,EACF;AAEA,SAAO;AACT;;;ACVA;AAAe,SAAR,eAAmB;AACxB,MAAI,OAAO;AACX,aAAW,QAAQ,KAAM,GAAE;AAC3B,SAAO;AACT;;;ACJA;AAAe,SAAR,gBAAmB;AACxB,SAAO,CAAC,KAAK,KAAK;AACpB;;;ACFA;AAAe,SAAR,aAAiB,UAAU;AAEhC,WAAS,SAAS,KAAK,SAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAI,GAAG,EAAE,GAAG;AACpE,aAAS,QAAQ,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI,MAAM,QAAQ,MAAM,IAAI,GAAG,EAAE,GAAG;AACrE,UAAI,OAAO,MAAM,CAAC,EAAG,UAAS,KAAK,MAAM,KAAK,UAAU,GAAG,KAAK;AAAA,IAClE;AAAA,EACF;AAEA,SAAO;AACT;;;ACTA;AAEA,SAAS,WAAW,MAAM;AACxB,SAAO,WAAW;AAChB,SAAK,gBAAgB,IAAI;AAAA,EAC3B;AACF;AAEA,SAAS,aAAa,UAAU;AAC9B,SAAO,WAAW;AAChB,SAAK,kBAAkB,SAAS,OAAO,SAAS,KAAK;AAAA,EACvD;AACF;AAEA,SAAS,aAAa,MAAM,OAAO;AACjC,SAAO,WAAW;AAChB,SAAK,aAAa,MAAM,KAAK;AAAA,EAC/B;AACF;AAEA,SAAS,eAAe,UAAU,OAAO;AACvC,SAAO,WAAW;AAChB,SAAK,eAAe,SAAS,OAAO,SAAS,OAAO,KAAK;AAAA,EAC3D;AACF;AAEA,SAAS,aAAa,MAAM,OAAO;AACjC,SAAO,WAAW;AAChB,QAAI,IAAI,MAAM,MAAM,MAAM,SAAS;AACnC,QAAI,KAAK,KAAM,MAAK,gBAAgB,IAAI;AAAA,QACnC,MAAK,aAAa,MAAM,CAAC;AAAA,EAChC;AACF;AAEA,SAAS,eAAe,UAAU,OAAO;AACvC,SAAO,WAAW;AAChB,QAAI,IAAI,MAAM,MAAM,MAAM,SAAS;AACnC,QAAI,KAAK,KAAM,MAAK,kBAAkB,SAAS,OAAO,SAAS,KAAK;AAAA,QAC/D,MAAK,eAAe,SAAS,OAAO,SAAS,OAAO,CAAC;AAAA,EAC5D;AACF;AAEe,SAAR,aAAiB,MAAM,OAAO;AACnC,MAAI,WAAW,kBAAU,IAAI;AAE7B,MAAI,UAAU,SAAS,GAAG;AACxB,QAAI,OAAO,KAAK,KAAK;AACrB,WAAO,SAAS,QACV,KAAK,eAAe,SAAS,OAAO,SAAS,KAAK,IAClD,KAAK,aAAa,QAAQ;AAAA,EAClC;AAEA,SAAO,KAAK,MAAM,SAAS,OACpB,SAAS,QAAQ,eAAe,aAAe,OAAO,UAAU,aAChE,SAAS,QAAQ,iBAAiB,eAClC,SAAS,QAAQ,iBAAiB,cAAgB,UAAU,KAAK,CAAC;AAC3E;;;ACxDA;;;ACAA;AAAe,SAAR,eAAiB,MAAM;AAC5B,SAAQ,KAAK,iBAAiB,KAAK,cAAc,eACzC,KAAK,YAAY,QAClB,KAAK;AACd;;;ADFA,SAAS,YAAY,MAAM;AACzB,SAAO,WAAW;AAChB,SAAK,MAAM,eAAe,IAAI;AAAA,EAChC;AACF;AAEA,SAAS,cAAc,MAAM,OAAO,UAAU;AAC5C,SAAO,WAAW;AAChB,SAAK,MAAM,YAAY,MAAM,OAAO,QAAQ;AAAA,EAC9C;AACF;AAEA,SAAS,cAAc,MAAM,OAAO,UAAU;AAC5C,SAAO,WAAW;AAChB,QAAI,IAAI,MAAM,MAAM,MAAM,SAAS;AACnC,QAAI,KAAK,KAAM,MAAK,MAAM,eAAe,IAAI;AAAA,QACxC,MAAK,MAAM,YAAY,MAAM,GAAG,QAAQ;AAAA,EAC/C;AACF;AAEe,SAAR,cAAiB,MAAM,OAAO,UAAU;AAC7C,SAAO,UAAU,SAAS,IACpB,KAAK,MAAM,SAAS,OACd,cAAc,OAAO,UAAU,aAC/B,gBACA,eAAe,MAAM,OAAO,YAAY,OAAO,KAAK,QAAQ,CAAC,IACnE,WAAW,KAAK,KAAK,GAAG,IAAI;AACpC;AAEO,SAAS,WAAW,MAAM,MAAM;AACrC,SAAO,KAAK,MAAM,iBAAiB,IAAI,KAChC,eAAY,IAAI,EAAE,iBAAiB,MAAM,IAAI,EAAE,iBAAiB,IAAI;AAC7E;;;AElCA;AAAA,SAAS,eAAe,MAAM;AAC5B,SAAO,WAAW;AAChB,WAAO,KAAK,IAAI;AAAA,EAClB;AACF;AAEA,SAAS,iBAAiB,MAAM,OAAO;AACrC,SAAO,WAAW;AAChB,SAAK,IAAI,IAAI;AAAA,EACf;AACF;AAEA,SAAS,iBAAiB,MAAM,OAAO;AACrC,SAAO,WAAW;AAChB,QAAI,IAAI,MAAM,MAAM,MAAM,SAAS;AACnC,QAAI,KAAK,KAAM,QAAO,KAAK,IAAI;AAAA,QAC1B,MAAK,IAAI,IAAI;AAAA,EACpB;AACF;AAEe,SAAR,iBAAiB,MAAM,OAAO;AACnC,SAAO,UAAU,SAAS,IACpB,KAAK,MAAM,SAAS,OAChB,iBAAiB,OAAO,UAAU,aAClC,mBACA,kBAAkB,MAAM,KAAK,CAAC,IAClC,KAAK,KAAK,EAAE,IAAI;AACxB;;;AC3BA;AAAA,SAAS,WAAW,QAAQ;AAC1B,SAAO,OAAO,KAAK,EAAE,MAAM,OAAO;AACpC;AAEA,SAAS,UAAU,MAAM;AACvB,SAAO,KAAK,aAAa,IAAI,UAAU,IAAI;AAC7C;AAEA,SAAS,UAAU,MAAM;AACvB,OAAK,QAAQ;AACb,OAAK,SAAS,WAAW,KAAK,aAAa,OAAO,KAAK,EAAE;AAC3D;AAEA,UAAU,YAAY;AAAA,EACpB,KAAK,SAAS,MAAM;AAClB,QAAI,IAAI,KAAK,OAAO,QAAQ,IAAI;AAChC,QAAI,IAAI,GAAG;AACT,WAAK,OAAO,KAAK,IAAI;AACrB,WAAK,MAAM,aAAa,SAAS,KAAK,OAAO,KAAK,GAAG,CAAC;AAAA,IACxD;AAAA,EACF;AAAA,EACA,QAAQ,SAAS,MAAM;AACrB,QAAI,IAAI,KAAK,OAAO,QAAQ,IAAI;AAChC,QAAI,KAAK,GAAG;AACV,WAAK,OAAO,OAAO,GAAG,CAAC;AACvB,WAAK,MAAM,aAAa,SAAS,KAAK,OAAO,KAAK,GAAG,CAAC;AAAA,IACxD;AAAA,EACF;AAAA,EACA,UAAU,SAAS,MAAM;AACvB,WAAO,KAAK,OAAO,QAAQ,IAAI,KAAK;AAAA,EACtC;AACF;AAEA,SAAS,WAAW,MAAM,OAAO;AAC/B,MAAI,OAAO,UAAU,IAAI,GAAG,IAAI,IAAI,IAAI,MAAM;AAC9C,SAAO,EAAE,IAAI,EAAG,MAAK,IAAI,MAAM,CAAC,CAAC;AACnC;AAEA,SAAS,cAAc,MAAM,OAAO;AAClC,MAAI,OAAO,UAAU,IAAI,GAAG,IAAI,IAAI,IAAI,MAAM;AAC9C,SAAO,EAAE,IAAI,EAAG,MAAK,OAAO,MAAM,CAAC,CAAC;AACtC;AAEA,SAAS,YAAY,OAAO;AAC1B,SAAO,WAAW;AAChB,eAAW,MAAM,KAAK;AAAA,EACxB;AACF;AAEA,SAAS,aAAa,OAAO;AAC3B,SAAO,WAAW;AAChB,kBAAc,MAAM,KAAK;AAAA,EAC3B;AACF;AAEA,SAAS,gBAAgB,OAAO,OAAO;AACrC,SAAO,WAAW;AAChB,KAAC,MAAM,MAAM,MAAM,SAAS,IAAI,aAAa,eAAe,MAAM,KAAK;AAAA,EACzE;AACF;AAEe,SAAR,gBAAiB,MAAM,OAAO;AACnC,MAAI,QAAQ,WAAW,OAAO,EAAE;AAEhC,MAAI,UAAU,SAAS,GAAG;AACxB,QAAI,OAAO,UAAU,KAAK,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,MAAM;AACrD,WAAO,EAAE,IAAI,EAAG,KAAI,CAAC,KAAK,SAAS,MAAM,CAAC,CAAC,EAAG,QAAO;AACrD,WAAO;AAAA,EACT;AAEA,SAAO,KAAK,MAAM,OAAO,UAAU,aAC7B,kBAAkB,QAClB,cACA,cAAc,OAAO,KAAK,CAAC;AACnC;;;AC1EA;AAAA,SAAS,aAAa;AACpB,OAAK,cAAc;AACrB;AAEA,SAAS,aAAa,OAAO;AAC3B,SAAO,WAAW;AAChB,SAAK,cAAc;AAAA,EACrB;AACF;AAEA,SAAS,aAAa,OAAO;AAC3B,SAAO,WAAW;AAChB,QAAI,IAAI,MAAM,MAAM,MAAM,SAAS;AACnC,SAAK,cAAc,KAAK,OAAO,KAAK;AAAA,EACtC;AACF;AAEe,SAAR,aAAiB,OAAO;AAC7B,SAAO,UAAU,SACX,KAAK,KAAK,SAAS,OACf,cAAc,OAAO,UAAU,aAC/B,eACA,cAAc,KAAK,CAAC,IACxB,KAAK,KAAK,EAAE;AACpB;;;ACxBA;AAAA,SAAS,aAAa;AACpB,OAAK,YAAY;AACnB;AAEA,SAAS,aAAa,OAAO;AAC3B,SAAO,WAAW;AAChB,SAAK,YAAY;AAAA,EACnB;AACF;AAEA,SAAS,aAAa,OAAO;AAC3B,SAAO,WAAW;AAChB,QAAI,IAAI,MAAM,MAAM,MAAM,SAAS;AACnC,SAAK,YAAY,KAAK,OAAO,KAAK;AAAA,EACpC;AACF;AAEe,SAAR,aAAiB,OAAO;AAC7B,SAAO,UAAU,SACX,KAAK,KAAK,SAAS,OACf,cAAc,OAAO,UAAU,aAC/B,eACA,cAAc,KAAK,CAAC,IACxB,KAAK,KAAK,EAAE;AACpB;;;ACxBA;AAAA,SAAS,QAAQ;AACf,MAAI,KAAK,YAAa,MAAK,WAAW,YAAY,IAAI;AACxD;AAEe,SAAR,gBAAmB;AACxB,SAAO,KAAK,KAAK,KAAK;AACxB;;;ACNA;AAAA,SAAS,QAAQ;AACf,MAAI,KAAK,gBAAiB,MAAK,WAAW,aAAa,MAAM,KAAK,WAAW,UAAU;AACzF;AAEe,SAAR,gBAAmB;AACxB,SAAO,KAAK,KAAK,KAAK;AACxB;;;ACNA;AAEe,SAAR,eAAiB,MAAM;AAC5B,MAAIC,UAAS,OAAO,SAAS,aAAa,OAAO,gBAAQ,IAAI;AAC7D,SAAO,KAAK,OAAO,WAAW;AAC5B,WAAO,KAAK,YAAYA,QAAO,MAAM,MAAM,SAAS,CAAC;AAAA,EACvD,CAAC;AACH;;;ACPA;AAGA,SAAS,eAAe;AACtB,SAAO;AACT;AAEe,SAAR,eAAiB,MAAM,QAAQ;AACpC,MAAIC,UAAS,OAAO,SAAS,aAAa,OAAO,gBAAQ,IAAI,GACzD,SAAS,UAAU,OAAO,eAAe,OAAO,WAAW,aAAa,SAAS,iBAAS,MAAM;AACpG,SAAO,KAAK,OAAO,WAAW;AAC5B,WAAO,KAAK,aAAaA,QAAO,MAAM,MAAM,SAAS,GAAG,OAAO,MAAM,MAAM,SAAS,KAAK,IAAI;AAAA,EAC/F,CAAC;AACH;;;ACbA;AAAA,SAAS,SAAS;AAChB,MAAI,SAAS,KAAK;AAClB,MAAI,OAAQ,QAAO,YAAY,IAAI;AACrC;AAEe,SAAR,iBAAmB;AACxB,SAAO,KAAK,KAAK,MAAM;AACzB;;;ACPA;AAAA,SAAS,yBAAyB;AAChC,MAAIC,SAAQ,KAAK,UAAU,KAAK,GAAG,SAAS,KAAK;AACjD,SAAO,SAAS,OAAO,aAAaA,QAAO,KAAK,WAAW,IAAIA;AACjE;AAEA,SAAS,sBAAsB;AAC7B,MAAIA,SAAQ,KAAK,UAAU,IAAI,GAAG,SAAS,KAAK;AAChD,SAAO,SAAS,OAAO,aAAaA,QAAO,KAAK,WAAW,IAAIA;AACjE;AAEe,SAAR,cAAiB,MAAM;AAC5B,SAAO,KAAK,OAAO,OAAO,sBAAsB,sBAAsB;AACxE;;;ACZA;AAAe,SAAR,cAAiB,OAAO;AAC7B,SAAO,UAAU,SACX,KAAK,SAAS,YAAY,KAAK,IAC/B,KAAK,KAAK,EAAE;AACpB;;;ACJA;AAAA,SAAS,gBAAgB,UAAU;AACjC,SAAO,SAAS,OAAO;AACrB,aAAS,KAAK,MAAM,OAAO,KAAK,QAAQ;AAAA,EAC1C;AACF;AAEA,SAASC,gBAAe,WAAW;AACjC,SAAO,UAAU,KAAK,EAAE,MAAM,OAAO,EAAE,IAAI,SAAS,GAAG;AACrD,QAAI,OAAO,IAAI,IAAI,EAAE,QAAQ,GAAG;AAChC,QAAI,KAAK,EAAG,QAAO,EAAE,MAAM,IAAI,CAAC,GAAG,IAAI,EAAE,MAAM,GAAG,CAAC;AACnD,WAAO,EAAC,MAAM,GAAG,KAAU;AAAA,EAC7B,CAAC;AACH;AAEA,SAAS,SAAS,UAAU;AAC1B,SAAO,WAAW;AAChB,QAAIC,MAAK,KAAK;AACd,QAAI,CAACA,IAAI;AACT,aAAS,IAAI,GAAG,IAAI,IAAI,IAAIA,IAAG,QAAQ,GAAG,IAAI,GAAG,EAAE,GAAG;AACpD,UAAI,IAAIA,IAAG,CAAC,IAAI,CAAC,SAAS,QAAQ,EAAE,SAAS,SAAS,SAAS,EAAE,SAAS,SAAS,MAAM;AACvF,aAAK,oBAAoB,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO;AAAA,MACxD,OAAO;AACL,QAAAA,IAAG,EAAE,CAAC,IAAI;AAAA,MACZ;AAAA,IACF;AACA,QAAI,EAAE,EAAG,CAAAA,IAAG,SAAS;AAAA,QAChB,QAAO,KAAK;AAAA,EACnB;AACF;AAEA,SAAS,MAAM,UAAU,OAAO,SAAS;AACvC,SAAO,WAAW;AAChB,QAAIA,MAAK,KAAK,MAAM,GAAG,WAAW,gBAAgB,KAAK;AACvD,QAAIA,IAAI,UAAS,IAAI,GAAG,IAAIA,IAAG,QAAQ,IAAI,GAAG,EAAE,GAAG;AACjD,WAAK,IAAIA,IAAG,CAAC,GAAG,SAAS,SAAS,QAAQ,EAAE,SAAS,SAAS,MAAM;AAClE,aAAK,oBAAoB,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO;AACtD,aAAK,iBAAiB,EAAE,MAAM,EAAE,WAAW,UAAU,EAAE,UAAU,OAAO;AACxE,UAAE,QAAQ;AACV;AAAA,MACF;AAAA,IACF;AACA,SAAK,iBAAiB,SAAS,MAAM,UAAU,OAAO;AACtD,QAAI,EAAC,MAAM,SAAS,MAAM,MAAM,SAAS,MAAM,OAAc,UAAoB,QAAgB;AACjG,QAAI,CAACA,IAAI,MAAK,OAAO,CAAC,CAAC;AAAA,QAClB,CAAAA,IAAG,KAAK,CAAC;AAAA,EAChB;AACF;AAEe,SAAR,WAAiB,UAAU,OAAO,SAAS;AAChD,MAAI,YAAYD,gBAAe,WAAW,EAAE,GAAG,GAAG,IAAI,UAAU,QAAQ;AAExE,MAAI,UAAU,SAAS,GAAG;AACxB,QAAIC,MAAK,KAAK,KAAK,EAAE;AACrB,QAAIA,IAAI,UAAS,IAAI,GAAG,IAAIA,IAAG,QAAQ,GAAG,IAAI,GAAG,EAAE,GAAG;AACpD,WAAK,IAAI,GAAG,IAAIA,IAAG,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG;AACjC,aAAK,IAAI,UAAU,CAAC,GAAG,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM;AAC3D,iBAAO,EAAE;AAAA,QACX;AAAA,MACF;AAAA,IACF;AACA;AAAA,EACF;AAEA,EAAAA,MAAK,QAAQ,QAAQ;AACrB,OAAK,IAAI,GAAG,IAAI,GAAG,EAAE,EAAG,MAAK,KAAKA,IAAG,UAAU,CAAC,GAAG,OAAO,OAAO,CAAC;AAClE,SAAO;AACT;;;AClEA;AAEA,SAAS,cAAc,MAAMC,OAAM,QAAQ;AACzC,MAAIC,UAAS,eAAY,IAAI,GACzB,QAAQA,QAAO;AAEnB,MAAI,OAAO,UAAU,YAAY;AAC/B,YAAQ,IAAI,MAAMD,OAAM,MAAM;AAAA,EAChC,OAAO;AACL,YAAQC,QAAO,SAAS,YAAY,OAAO;AAC3C,QAAI,OAAQ,OAAM,UAAUD,OAAM,OAAO,SAAS,OAAO,UAAU,GAAG,MAAM,SAAS,OAAO;AAAA,QACvF,OAAM,UAAUA,OAAM,OAAO,KAAK;AAAA,EACzC;AAEA,OAAK,cAAc,KAAK;AAC1B;AAEA,SAAS,iBAAiBA,OAAM,QAAQ;AACtC,SAAO,WAAW;AAChB,WAAO,cAAc,MAAMA,OAAM,MAAM;AAAA,EACzC;AACF;AAEA,SAAS,iBAAiBA,OAAM,QAAQ;AACtC,SAAO,WAAW;AAChB,WAAO,cAAc,MAAMA,OAAM,OAAO,MAAM,MAAM,SAAS,CAAC;AAAA,EAChE;AACF;AAEe,SAARE,kBAAiBF,OAAM,QAAQ;AACpC,SAAO,KAAK,MAAM,OAAO,WAAW,aAC9B,mBACA,kBAAkBA,OAAM,MAAM,CAAC;AACvC;;;ACjCA;AAAe,UAAR,mBAAoB;AACzB,WAAS,SAAS,KAAK,SAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAI,GAAG,EAAE,GAAG;AACpE,aAAS,QAAQ,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI,MAAM,QAAQ,MAAM,IAAI,GAAG,EAAE,GAAG;AACrE,UAAI,OAAO,MAAM,CAAC,EAAG,OAAM;AAAA,IAC7B;AAAA,EACF;AACF;;;AzC6BO,IAAI,OAAO,CAAC,IAAI;AAEhB,SAAS,UAAU,QAAQ,SAAS;AACzC,OAAK,UAAU;AACf,OAAK,WAAW;AAClB;AAEA,SAAS,YAAY;AACnB,SAAO,IAAI,UAAU,CAAC,CAAC,SAAS,eAAe,CAAC,GAAG,IAAI;AACzD;AAEA,SAAS,sBAAsB;AAC7B,SAAO;AACT;AAEA,UAAU,YAAY,UAAU,YAAY;AAAA,EAC1C,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AAAA,EACX,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AAAA,EACV,SAAS;AAAA,EACT,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,OAAO;AAAA,EACP,IAAI;AAAA,EACJ,UAAUG;AAAA,EACV,CAAC,OAAO,QAAQ,GAAG;AACrB;AAEA,IAAO,oBAAQ;;;A0CzFf;;;ACAA;;;ACAA;;;ACAA;AAAe,SAAR,eAAiB,aAAaC,UAASC,YAAW;AACvD,cAAY,YAAYD,SAAQ,YAAYC;AAC5C,EAAAA,WAAU,cAAc;AAC1B;AAEO,SAAS,OAAO,QAAQ,YAAY;AACzC,MAAIA,aAAY,OAAO,OAAO,OAAO,SAAS;AAC9C,WAAS,OAAO,WAAY,CAAAA,WAAU,GAAG,IAAI,WAAW,GAAG;AAC3D,SAAOA;AACT;;;ADPO,SAAS,QAAQ;AAAC;AAElB,IAAI,SAAS;AACb,IAAI,WAAW,IAAI;AAE1B,IAAI,MAAM;AAAV,IACI,MAAM;AADV,IAEI,MAAM;AAFV,IAGI,QAAQ;AAHZ,IAII,eAAe,IAAI,OAAO,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM;AAJ/D,IAKI,eAAe,IAAI,OAAO,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM;AAL/D,IAMI,gBAAgB,IAAI,OAAO,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM;AANxE,IAOI,gBAAgB,IAAI,OAAO,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM;AAPxE,IAQI,eAAe,IAAI,OAAO,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM;AAR/D,IASI,gBAAgB,IAAI,OAAO,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM;AAExE,IAAI,QAAQ;AAAA,EACV,WAAW;AAAA,EACX,cAAc;AAAA,EACd,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,gBAAgB;AAAA,EAChB,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,WAAW;AAAA,EACX,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,OAAO;AAAA,EACP,gBAAgB;AAAA,EAChB,UAAU;AAAA,EACV,SAAS;AAAA,EACT,MAAM;AAAA,EACN,UAAU;AAAA,EACV,UAAU;AAAA,EACV,eAAe;AAAA,EACf,UAAU;AAAA,EACV,WAAW;AAAA,EACX,UAAU;AAAA,EACV,WAAW;AAAA,EACX,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,aAAa;AAAA,EACb,SAAS;AAAA,EACT,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,aAAa;AAAA,EACb,aAAa;AAAA,EACb,SAAS;AAAA,EACT,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,WAAW;AAAA,EACX,MAAM;AAAA,EACN,OAAO;AAAA,EACP,aAAa;AAAA,EACb,MAAM;AAAA,EACN,UAAU;AAAA,EACV,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,OAAO;AAAA,EACP,UAAU;AAAA,EACV,eAAe;AAAA,EACf,WAAW;AAAA,EACX,cAAc;AAAA,EACd,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,sBAAsB;AAAA,EACtB,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,WAAW;AAAA,EACX,aAAa;AAAA,EACb,eAAe;AAAA,EACf,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,MAAM;AAAA,EACN,WAAW;AAAA,EACX,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,kBAAkB;AAAA,EAClB,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,WAAW;AAAA,EACX,WAAW;AAAA,EACX,UAAU;AAAA,EACV,aAAa;AAAA,EACb,MAAM;AAAA,EACN,SAAS;AAAA,EACT,OAAO;AAAA,EACP,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,WAAW;AAAA,EACX,eAAe;AAAA,EACf,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,KAAK;AAAA,EACL,WAAW;AAAA,EACX,WAAW;AAAA,EACX,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AAAA,EACX,KAAK;AAAA,EACL,MAAM;AAAA,EACN,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,aAAa;AACf;AAEA,eAAO,OAAO,OAAO;AAAA,EACnB,KAAK,UAAU;AACb,WAAO,OAAO,OAAO,IAAI,KAAK,eAAa,MAAM,QAAQ;AAAA,EAC3D;AAAA,EACA,cAAc;AACZ,WAAO,KAAK,IAAI,EAAE,YAAY;AAAA,EAChC;AAAA,EACA,KAAK;AAAA;AAAA,EACL,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,WAAW;AAAA,EACX,UAAU;AACZ,CAAC;AAED,SAAS,kBAAkB;AACzB,SAAO,KAAK,IAAI,EAAE,UAAU;AAC9B;AAEA,SAAS,mBAAmB;AAC1B,SAAO,KAAK,IAAI,EAAE,WAAW;AAC/B;AAEA,SAAS,kBAAkB;AACzB,SAAO,WAAW,IAAI,EAAE,UAAU;AACpC;AAEA,SAAS,kBAAkB;AACzB,SAAO,KAAK,IAAI,EAAE,UAAU;AAC9B;AAEe,SAAR,MAAuBC,SAAQ;AACpC,MAAI,GAAG;AACP,EAAAA,WAAUA,UAAS,IAAI,KAAK,EAAE,YAAY;AAC1C,UAAQ,IAAI,MAAM,KAAKA,OAAM,MAAM,IAAI,EAAE,CAAC,EAAE,QAAQ,IAAI,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,IACtF,MAAM,IAAI,IAAI,IAAK,KAAK,IAAI,KAAQ,KAAK,IAAI,KAAQ,KAAK,IAAI,KAAQ,IAAI,MAAS,IAAI,OAAQ,IAAM,IAAI,IAAM,CAAC,IAChH,MAAM,IAAI,KAAK,KAAK,KAAK,KAAM,KAAK,KAAK,KAAM,KAAK,IAAI,MAAO,IAAI,OAAQ,GAAI,IAC/E,MAAM,IAAI,KAAM,KAAK,KAAK,KAAQ,KAAK,IAAI,KAAQ,KAAK,IAAI,KAAQ,KAAK,IAAI,KAAQ,KAAK,IAAI,KAAQ,IAAI,OAAU,IAAI,OAAQ,IAAM,IAAI,MAAQ,GAAI,IACtJ,SACC,IAAI,aAAa,KAAKA,OAAM,KAAK,IAAI,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAC5D,IAAI,aAAa,KAAKA,OAAM,KAAK,IAAI,IAAI,EAAE,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,IAAI,MAAM,KAAK,CAAC,KAChG,IAAI,cAAc,KAAKA,OAAM,KAAK,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,KAC7D,IAAI,cAAc,KAAKA,OAAM,KAAK,KAAK,EAAE,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,CAAC,KACjG,IAAI,aAAa,KAAKA,OAAM,KAAK,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,KAAK,CAAC,KACrE,IAAI,cAAc,KAAKA,OAAM,KAAK,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,IAC1E,MAAM,eAAeA,OAAM,IAAI,KAAK,MAAMA,OAAM,CAAC,IACjDA,YAAW,gBAAgB,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,IACnD;AACR;AAEA,SAAS,KAAK,GAAG;AACf,SAAO,IAAI,IAAI,KAAK,KAAK,KAAM,KAAK,IAAI,KAAM,IAAI,KAAM,CAAC;AAC3D;AAEA,SAAS,KAAK,GAAG,GAAG,GAAG,GAAG;AACxB,MAAI,KAAK,EAAG,KAAI,IAAI,IAAI;AACxB,SAAO,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC;AAC3B;AAEO,SAAS,WAAW,GAAG;AAC5B,MAAI,EAAE,aAAa,OAAQ,KAAI,MAAM,CAAC;AACtC,MAAI,CAAC,EAAG,QAAO,IAAI;AACnB,MAAI,EAAE,IAAI;AACV,SAAO,IAAI,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO;AACzC;AAEO,SAAS,IAAI,GAAG,GAAG,GAAG,SAAS;AACpC,SAAO,UAAU,WAAW,IAAI,WAAW,CAAC,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,WAAW,OAAO,IAAI,OAAO;AAChG;AAEO,SAAS,IAAI,GAAG,GAAG,GAAG,SAAS;AACpC,OAAK,IAAI,CAAC;AACV,OAAK,IAAI,CAAC;AACV,OAAK,IAAI,CAAC;AACV,OAAK,UAAU,CAAC;AAClB;AAEA,eAAO,KAAK,KAAK,OAAO,OAAO;AAAA,EAC7B,SAAS,GAAG;AACV,QAAI,KAAK,OAAO,WAAW,KAAK,IAAI,UAAU,CAAC;AAC/C,WAAO,IAAI,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,OAAO;AAAA,EACjE;AAAA,EACA,OAAO,GAAG;AACR,QAAI,KAAK,OAAO,SAAS,KAAK,IAAI,QAAQ,CAAC;AAC3C,WAAO,IAAI,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,OAAO;AAAA,EACjE;AAAA,EACA,MAAM;AACJ,WAAO;AAAA,EACT;AAAA,EACA,QAAQ;AACN,WAAO,IAAI,IAAI,OAAO,KAAK,CAAC,GAAG,OAAO,KAAK,CAAC,GAAG,OAAO,KAAK,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC;AAAA,EACrF;AAAA,EACA,cAAc;AACZ,WAAQ,QAAQ,KAAK,KAAK,KAAK,IAAI,UAC3B,QAAQ,KAAK,KAAK,KAAK,IAAI,WAC3B,QAAQ,KAAK,KAAK,KAAK,IAAI,WAC3B,KAAK,KAAK,WAAW,KAAK,WAAW;AAAA,EAC/C;AAAA,EACA,KAAK;AAAA;AAAA,EACL,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,UAAU;AACZ,CAAC,CAAC;AAEF,SAAS,gBAAgB;AACvB,SAAO,IAAI,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC;AACpD;AAEA,SAAS,iBAAiB;AACxB,SAAO,IAAI,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,KAAK,MAAM,KAAK,OAAO,IAAI,IAAI,KAAK,WAAW,GAAG,CAAC;AAC1G;AAEA,SAAS,gBAAgB;AACvB,QAAM,IAAI,OAAO,KAAK,OAAO;AAC7B,SAAO,GAAG,MAAM,IAAI,SAAS,OAAO,GAAG,OAAO,KAAK,CAAC,CAAC,KAAK,OAAO,KAAK,CAAC,CAAC,KAAK,OAAO,KAAK,CAAC,CAAC,GAAG,MAAM,IAAI,MAAM,KAAK,CAAC,GAAG;AACzH;AAEA,SAAS,OAAO,SAAS;AACvB,SAAO,MAAM,OAAO,IAAI,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC;AAC9D;AAEA,SAAS,OAAO,OAAO;AACrB,SAAO,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,KAAK,MAAM,KAAK,KAAK,CAAC,CAAC;AAC1D;AAEA,SAAS,IAAI,OAAO;AAClB,UAAQ,OAAO,KAAK;AACpB,UAAQ,QAAQ,KAAK,MAAM,MAAM,MAAM,SAAS,EAAE;AACpD;AAEA,SAAS,KAAK,GAAG,GAAG,GAAG,GAAG;AACxB,MAAI,KAAK,EAAG,KAAI,IAAI,IAAI;AAAA,WACf,KAAK,KAAK,KAAK,EAAG,KAAI,IAAI;AAAA,WAC1B,KAAK,EAAG,KAAI;AACrB,SAAO,IAAI,IAAI,GAAG,GAAG,GAAG,CAAC;AAC3B;AAEO,SAAS,WAAW,GAAG;AAC5B,MAAI,aAAa,IAAK,QAAO,IAAI,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO;AAC7D,MAAI,EAAE,aAAa,OAAQ,KAAI,MAAM,CAAC;AACtC,MAAI,CAAC,EAAG,QAAO,IAAI;AACnB,MAAI,aAAa,IAAK,QAAO;AAC7B,MAAI,EAAE,IAAI;AACV,MAAI,IAAI,EAAE,IAAI,KACV,IAAI,EAAE,IAAI,KACV,IAAI,EAAE,IAAI,KACVC,OAAM,KAAK,IAAI,GAAG,GAAG,CAAC,GACtBC,OAAM,KAAK,IAAI,GAAG,GAAG,CAAC,GACtB,IAAI,KACJ,IAAIA,OAAMD,MACV,KAAKC,OAAMD,QAAO;AACtB,MAAI,GAAG;AACL,QAAI,MAAMC,KAAK,MAAK,IAAI,KAAK,KAAK,IAAI,KAAK;AAAA,aAClC,MAAMA,KAAK,MAAK,IAAI,KAAK,IAAI;AAAA,QACjC,MAAK,IAAI,KAAK,IAAI;AACvB,SAAK,IAAI,MAAMA,OAAMD,OAAM,IAAIC,OAAMD;AACrC,SAAK;AAAA,EACP,OAAO;AACL,QAAI,IAAI,KAAK,IAAI,IAAI,IAAI;AAAA,EAC3B;AACA,SAAO,IAAI,IAAI,GAAG,GAAG,GAAG,EAAE,OAAO;AACnC;AAEO,SAAS,IAAI,GAAG,GAAG,GAAG,SAAS;AACpC,SAAO,UAAU,WAAW,IAAI,WAAW,CAAC,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,WAAW,OAAO,IAAI,OAAO;AAChG;AAEA,SAAS,IAAI,GAAG,GAAG,GAAG,SAAS;AAC7B,OAAK,IAAI,CAAC;AACV,OAAK,IAAI,CAAC;AACV,OAAK,IAAI,CAAC;AACV,OAAK,UAAU,CAAC;AAClB;AAEA,eAAO,KAAK,KAAK,OAAO,OAAO;AAAA,EAC7B,SAAS,GAAG;AACV,QAAI,KAAK,OAAO,WAAW,KAAK,IAAI,UAAU,CAAC;AAC/C,WAAO,IAAI,IAAI,KAAK,GAAG,KAAK,GAAG,KAAK,IAAI,GAAG,KAAK,OAAO;AAAA,EACzD;AAAA,EACA,OAAO,GAAG;AACR,QAAI,KAAK,OAAO,SAAS,KAAK,IAAI,QAAQ,CAAC;AAC3C,WAAO,IAAI,IAAI,KAAK,GAAG,KAAK,GAAG,KAAK,IAAI,GAAG,KAAK,OAAO;AAAA,EACzD;AAAA,EACA,MAAM;AACJ,QAAI,IAAI,KAAK,IAAI,OAAO,KAAK,IAAI,KAAK,KAClC,IAAI,MAAM,CAAC,KAAK,MAAM,KAAK,CAAC,IAAI,IAAI,KAAK,GACzC,IAAI,KAAK,GACT,KAAK,KAAK,IAAI,MAAM,IAAI,IAAI,KAAK,GACjC,KAAK,IAAI,IAAI;AACjB,WAAO,IAAI;AAAA,MACT,QAAQ,KAAK,MAAM,IAAI,MAAM,IAAI,KAAK,IAAI,EAAE;AAAA,MAC5C,QAAQ,GAAG,IAAI,EAAE;AAAA,MACjB,QAAQ,IAAI,MAAM,IAAI,MAAM,IAAI,KAAK,IAAI,EAAE;AAAA,MAC3C,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EACA,QAAQ;AACN,WAAO,IAAI,IAAI,OAAO,KAAK,CAAC,GAAG,OAAO,KAAK,CAAC,GAAG,OAAO,KAAK,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC;AAAA,EACrF;AAAA,EACA,cAAc;AACZ,YAAQ,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,CAAC,OAC1C,KAAK,KAAK,KAAK,KAAK,KAAK,OACzB,KAAK,KAAK,WAAW,KAAK,WAAW;AAAA,EAC/C;AAAA,EACA,YAAY;AACV,UAAM,IAAI,OAAO,KAAK,OAAO;AAC7B,WAAO,GAAG,MAAM,IAAI,SAAS,OAAO,GAAG,OAAO,KAAK,CAAC,CAAC,KAAK,OAAO,KAAK,CAAC,IAAI,GAAG,MAAM,OAAO,KAAK,CAAC,IAAI,GAAG,IAAI,MAAM,IAAI,MAAM,KAAK,CAAC,GAAG;AAAA,EACvI;AACF,CAAC,CAAC;AAEF,SAAS,OAAO,OAAO;AACrB,WAAS,SAAS,KAAK;AACvB,SAAO,QAAQ,IAAI,QAAQ,MAAM;AACnC;AAEA,SAAS,OAAO,OAAO;AACrB,SAAO,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,SAAS,CAAC,CAAC;AAC5C;AAGA,SAAS,QAAQ,GAAG,IAAI,IAAI;AAC1B,UAAQ,IAAI,KAAK,MAAM,KAAK,MAAM,IAAI,KAChC,IAAI,MAAM,KACV,IAAI,MAAM,MAAM,KAAK,OAAO,MAAM,KAAK,KACvC,MAAM;AACd;;;AE3YA;;;ACAA;AAAO,SAAS,MAAM,IAAI,IAAI,IAAI,IAAI,IAAI;AACxC,MAAI,KAAK,KAAK,IAAI,KAAK,KAAK;AAC5B,WAAS,IAAI,IAAI,KAAK,IAAI,KAAK,MAAM,MAC9B,IAAI,IAAI,KAAK,IAAI,MAAM,MACvB,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,KACjC,KAAK,MAAM;AACnB;AAEe,SAAR,cAAiB,QAAQ;AAC9B,MAAI,IAAI,OAAO,SAAS;AACxB,SAAO,SAAS,GAAG;AACjB,QAAI,IAAI,KAAK,IAAK,IAAI,IAAK,KAAK,KAAK,IAAI,GAAG,IAAI,KAAK,KAAK,MAAM,IAAI,CAAC,GACjE,KAAK,OAAO,CAAC,GACb,KAAK,OAAO,IAAI,CAAC,GACjB,KAAK,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,IAAI,KAAK,IACtC,KAAK,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,IAAI,KAAK;AAC9C,WAAO,OAAO,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,IAAI,EAAE;AAAA,EAC9C;AACF;;;AClBA;AAEe,SAAR,oBAAiB,QAAQ;AAC9B,MAAI,IAAI,OAAO;AACf,SAAO,SAAS,GAAG;AACjB,QAAI,IAAI,KAAK,QAAQ,KAAK,KAAK,IAAI,EAAE,IAAI,KAAK,CAAC,GAC3C,KAAK,QAAQ,IAAI,IAAI,KAAK,CAAC,GAC3B,KAAK,OAAO,IAAI,CAAC,GACjB,KAAK,QAAQ,IAAI,KAAK,CAAC,GACvB,KAAK,QAAQ,IAAI,KAAK,CAAC;AAC3B,WAAO,OAAO,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,IAAI,EAAE;AAAA,EAC9C;AACF;;;ACZA;;;ACAA;AAAA,IAAOE,oBAAQ,OAAK,MAAM;;;ADE1B,SAAS,OAAO,GAAG,GAAG;AACpB,SAAO,SAAS,GAAG;AACjB,WAAO,IAAI,IAAI;AAAA,EACjB;AACF;AAEA,SAAS,YAAY,GAAG,GAAG,GAAG;AAC5B,SAAO,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,GAAG,SAAS,GAAG;AACxE,WAAO,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC;AAAA,EAC9B;AACF;AAOO,SAAS,MAAM,GAAG;AACvB,UAAQ,IAAI,CAAC,OAAO,IAAI,UAAU,SAAS,GAAG,GAAG;AAC/C,WAAO,IAAI,IAAI,YAAY,GAAG,GAAG,CAAC,IAAIC,kBAAS,MAAM,CAAC,IAAI,IAAI,CAAC;AAAA,EACjE;AACF;AAEe,SAAR,QAAyB,GAAG,GAAG;AACpC,MAAI,IAAI,IAAI;AACZ,SAAO,IAAI,OAAO,GAAG,CAAC,IAAIA,kBAAS,MAAM,CAAC,IAAI,IAAI,CAAC;AACrD;;;AHvBA,IAAO,eAAS,SAAS,SAAS,GAAG;AACnC,MAAIC,SAAQ,MAAM,CAAC;AAEnB,WAASC,KAAIC,QAAO,KAAK;AACvB,QAAI,IAAIF,QAAOE,SAAQ,IAASA,MAAK,GAAG,IAAI,MAAM,IAAS,GAAG,GAAG,CAAC,GAC9D,IAAIF,OAAME,OAAM,GAAG,IAAI,CAAC,GACxB,IAAIF,OAAME,OAAM,GAAG,IAAI,CAAC,GACxB,UAAU,QAAQA,OAAM,SAAS,IAAI,OAAO;AAChD,WAAO,SAAS,GAAG;AACjB,MAAAA,OAAM,IAAI,EAAE,CAAC;AACb,MAAAA,OAAM,IAAI,EAAE,CAAC;AACb,MAAAA,OAAM,IAAI,EAAE,CAAC;AACb,MAAAA,OAAM,UAAU,QAAQ,CAAC;AACzB,aAAOA,SAAQ;AAAA,IACjB;AAAA,EACF;AAEA,EAAAD,KAAI,QAAQ;AAEZ,SAAOA;AACT,GAAG,CAAC;AAEJ,SAAS,UAAU,QAAQ;AACzB,SAAO,SAAS,QAAQ;AACtB,QAAI,IAAI,OAAO,QACX,IAAI,IAAI,MAAM,CAAC,GACf,IAAI,IAAI,MAAM,CAAC,GACf,IAAI,IAAI,MAAM,CAAC,GACf,GAAGD;AACP,SAAK,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACtB,MAAAA,SAAQ,IAAS,OAAO,CAAC,CAAC;AAC1B,QAAE,CAAC,IAAIA,OAAM,KAAK;AAClB,QAAE,CAAC,IAAIA,OAAM,KAAK;AAClB,QAAE,CAAC,IAAIA,OAAM,KAAK;AAAA,IACpB;AACA,QAAI,OAAO,CAAC;AACZ,QAAI,OAAO,CAAC;AACZ,QAAI,OAAO,CAAC;AACZ,IAAAA,OAAM,UAAU;AAChB,WAAO,SAAS,GAAG;AACjB,MAAAA,OAAM,IAAI,EAAE,CAAC;AACb,MAAAA,OAAM,IAAI,EAAE,CAAC;AACb,MAAAA,OAAM,IAAI,EAAE,CAAC;AACb,aAAOA,SAAQ;AAAA,IACjB;AAAA,EACF;AACF;AAEO,IAAI,WAAW,UAAU,aAAK;AAC9B,IAAI,iBAAiB,UAAU,mBAAW;;;AKtDjD;AAAe,SAAR,eAAiB,GAAG,GAAG;AAC5B,SAAO,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,SAAS,GAAG;AACjC,WAAO,KAAK,IAAI,KAAK,IAAI;AAAA,EAC3B;AACF;;;ACJA;AAEA,IAAI,MAAM;AAAV,IACI,MAAM,IAAI,OAAO,IAAI,QAAQ,GAAG;AAEpC,SAAS,KAAK,GAAG;AACf,SAAO,WAAW;AAChB,WAAO;AAAA,EACT;AACF;AAEA,SAAS,IAAI,GAAG;AACd,SAAO,SAAS,GAAG;AACjB,WAAO,EAAE,CAAC,IAAI;AAAA,EAChB;AACF;AAEe,SAAR,eAAiB,GAAG,GAAG;AAC5B,MAAI,KAAK,IAAI,YAAY,IAAI,YAAY,GACrC,IACA,IACA,IACA,IAAI,IACJ,IAAI,CAAC,GACL,IAAI,CAAC;AAGT,MAAI,IAAI,IAAI,IAAI,IAAI;AAGpB,UAAQ,KAAK,IAAI,KAAK,CAAC,OACf,KAAK,IAAI,KAAK,CAAC,IAAI;AACzB,SAAK,KAAK,GAAG,SAAS,IAAI;AACxB,WAAK,EAAE,MAAM,IAAI,EAAE;AACnB,UAAI,EAAE,CAAC,EAAG,GAAE,CAAC,KAAK;AAAA,UACb,GAAE,EAAE,CAAC,IAAI;AAAA,IAChB;AACA,SAAK,KAAK,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,IAAI;AACjC,UAAI,EAAE,CAAC,EAAG,GAAE,CAAC,KAAK;AAAA,UACb,GAAE,EAAE,CAAC,IAAI;AAAA,IAChB,OAAO;AACL,QAAE,EAAE,CAAC,IAAI;AACT,QAAE,KAAK,EAAC,GAAM,GAAG,eAAO,IAAI,EAAE,EAAC,CAAC;AAAA,IAClC;AACA,SAAK,IAAI;AAAA,EACX;AAGA,MAAI,KAAK,EAAE,QAAQ;AACjB,SAAK,EAAE,MAAM,EAAE;AACf,QAAI,EAAE,CAAC,EAAG,GAAE,CAAC,KAAK;AAAA,QACb,GAAE,EAAE,CAAC,IAAI;AAAA,EAChB;AAIA,SAAO,EAAE,SAAS,IAAK,EAAE,CAAC,IACpB,IAAI,EAAE,CAAC,EAAE,CAAC,IACV,KAAK,CAAC,KACL,IAAI,EAAE,QAAQ,SAAS,GAAG;AACzB,aAASG,KAAI,GAAG,GAAGA,KAAI,GAAG,EAAEA,GAAG,IAAG,IAAI,EAAEA,EAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;AACtD,WAAO,EAAE,KAAK,EAAE;AAAA,EAClB;AACR;;;AC/DA;;;ACAA;;;ACAA;AAAA,IAAI,UAAU,MAAM,KAAK;AAElB,IAAI,WAAW;AAAA,EACpB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AACV;AAEe,SAAR,kBAAiB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AACxC,MAAI,QAAQ,QAAQ;AACpB,MAAI,SAAS,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,EAAG,MAAK,QAAQ,KAAK;AACzD,MAAI,QAAQ,IAAI,IAAI,IAAI,EAAG,MAAK,IAAI,OAAO,KAAK,IAAI;AACpD,MAAI,SAAS,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,EAAG,MAAK,QAAQ,KAAK,QAAQ,SAAS;AAC1E,MAAI,IAAI,IAAI,IAAI,EAAG,KAAI,CAAC,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC,OAAO,SAAS,CAAC;AAC7D,SAAO;AAAA,IACL,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,QAAQ,KAAK,MAAM,GAAG,CAAC,IAAI;AAAA,IAC3B,OAAO,KAAK,KAAK,KAAK,IAAI;AAAA,IAC1B;AAAA,IACA;AAAA,EACF;AACF;;;ADvBA,IAAI;AAGG,SAAS,SAAS,OAAO;AAC9B,QAAM,IAAI,KAAK,OAAO,cAAc,aAAa,YAAY,iBAAiB,QAAQ,EAAE;AACxF,SAAO,EAAE,aAAa,WAAW,kBAAU,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACzE;AAEO,SAAS,SAAS,OAAO;AAC9B,MAAI,SAAS,KAAM,QAAO;AAC1B,MAAI,CAAC,QAAS,WAAU,SAAS,gBAAgB,8BAA8B,GAAG;AAClF,UAAQ,aAAa,aAAa,KAAK;AACvC,MAAI,EAAE,QAAQ,QAAQ,UAAU,QAAQ,YAAY,GAAI,QAAO;AAC/D,UAAQ,MAAM;AACd,SAAO,kBAAU,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AACvE;;;ADdA,SAAS,qBAAqBC,QAAO,SAAS,SAAS,UAAU;AAE/D,WAAS,IAAI,GAAG;AACd,WAAO,EAAE,SAAS,EAAE,IAAI,IAAI,MAAM;AAAA,EACpC;AAEA,WAASC,WAAU,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG;AACvC,QAAI,OAAO,MAAM,OAAO,IAAI;AAC1B,UAAI,IAAI,EAAE,KAAK,cAAc,MAAM,SAAS,MAAM,OAAO;AACzD,QAAE,KAAK,EAAC,GAAG,IAAI,GAAG,GAAG,eAAO,IAAI,EAAE,EAAC,GAAG,EAAC,GAAG,IAAI,GAAG,GAAG,eAAO,IAAI,EAAE,EAAC,CAAC;AAAA,IACrE,WAAW,MAAM,IAAI;AACnB,QAAE,KAAK,eAAe,KAAK,UAAU,KAAK,OAAO;AAAA,IACnD;AAAA,EACF;AAEA,WAAS,OAAO,GAAG,GAAG,GAAG,GAAG;AAC1B,QAAI,MAAM,GAAG;AACX,UAAI,IAAI,IAAI,IAAK,MAAK;AAAA,eAAc,IAAI,IAAI,IAAK,MAAK;AACtD,QAAE,KAAK,EAAC,GAAG,EAAE,KAAK,IAAI,CAAC,IAAI,WAAW,MAAM,QAAQ,IAAI,GAAG,GAAG,eAAO,GAAG,CAAC,EAAC,CAAC;AAAA,IAC7E,WAAW,GAAG;AACZ,QAAE,KAAK,IAAI,CAAC,IAAI,YAAY,IAAI,QAAQ;AAAA,IAC1C;AAAA,EACF;AAEA,WAAS,MAAM,GAAG,GAAG,GAAG,GAAG;AACzB,QAAI,MAAM,GAAG;AACX,QAAE,KAAK,EAAC,GAAG,EAAE,KAAK,IAAI,CAAC,IAAI,UAAU,MAAM,QAAQ,IAAI,GAAG,GAAG,eAAO,GAAG,CAAC,EAAC,CAAC;AAAA,IAC5E,WAAW,GAAG;AACZ,QAAE,KAAK,IAAI,CAAC,IAAI,WAAW,IAAI,QAAQ;AAAA,IACzC;AAAA,EACF;AAEA,WAAS,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG;AACnC,QAAI,OAAO,MAAM,OAAO,IAAI;AAC1B,UAAI,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,UAAU,MAAM,KAAK,MAAM,GAAG;AACtD,QAAE,KAAK,EAAC,GAAG,IAAI,GAAG,GAAG,eAAO,IAAI,EAAE,EAAC,GAAG,EAAC,GAAG,IAAI,GAAG,GAAG,eAAO,IAAI,EAAE,EAAC,CAAC;AAAA,IACrE,WAAW,OAAO,KAAK,OAAO,GAAG;AAC/B,QAAE,KAAK,IAAI,CAAC,IAAI,WAAW,KAAK,MAAM,KAAK,GAAG;AAAA,IAChD;AAAA,EACF;AAEA,SAAO,SAAS,GAAG,GAAG;AACpB,QAAI,IAAI,CAAC,GACL,IAAI,CAAC;AACT,QAAID,OAAM,CAAC,GAAG,IAAIA,OAAM,CAAC;AACzB,IAAAC,WAAU,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,GAAG,CAAC;AACtE,WAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,CAAC;AAC/B,UAAM,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC;AAC5B,UAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAG,CAAC;AAClD,QAAI,IAAI;AACR,WAAO,SAAS,GAAG;AACjB,UAAI,IAAI,IAAI,IAAI,EAAE,QAAQ;AAC1B,aAAO,EAAE,IAAI,EAAG,IAAG,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;AACvC,aAAO,EAAE,KAAK,EAAE;AAAA,IAClB;AAAA,EACF;AACF;AAEO,IAAI,0BAA0B,qBAAqB,UAAU,QAAQ,OAAO,MAAM;AAClF,IAAI,0BAA0B,qBAAqB,UAAU,MAAM,KAAK,GAAG;;;AG9DlF;;;ACAA;;;ACAA;;;ACAA;;;ACAA;;;ACAA;;;ACAA;AAAA,IAAI,QAAQ;AAAZ,IACI,UAAU;AADd,IAEI,WAAW;AAFf,IAGI,YAAY;AAHhB,IAII;AAJJ,IAKI;AALJ,IAMI,YAAY;AANhB,IAOI,WAAW;AAPf,IAQI,YAAY;AARhB,IASI,QAAQ,OAAO,gBAAgB,YAAY,YAAY,MAAM,cAAc;AAT/E,IAUI,WAAW,OAAO,WAAW,YAAY,OAAO,wBAAwB,OAAO,sBAAsB,KAAK,MAAM,IAAI,SAAS,GAAG;AAAE,aAAW,GAAG,EAAE;AAAG;AAElJ,SAAS,MAAM;AACpB,SAAO,aAAa,SAAS,QAAQ,GAAG,WAAW,MAAM,IAAI,IAAI;AACnE;AAEA,SAAS,WAAW;AAClB,aAAW;AACb;AAEO,SAAS,QAAQ;AACtB,OAAK,QACL,KAAK,QACL,KAAK,QAAQ;AACf;AAEA,MAAM,YAAY,MAAM,YAAY;AAAA,EAClC,aAAa;AAAA,EACb,SAAS,SAAS,UAAU,OAAOC,OAAM;AACvC,QAAI,OAAO,aAAa,WAAY,OAAM,IAAI,UAAU,4BAA4B;AACpF,IAAAA,SAAQA,SAAQ,OAAO,IAAI,IAAI,CAACA,UAAS,SAAS,OAAO,IAAI,CAAC;AAC9D,QAAI,CAAC,KAAK,SAAS,aAAa,MAAM;AACpC,UAAI,SAAU,UAAS,QAAQ;AAAA,UAC1B,YAAW;AAChB,iBAAW;AAAA,IACb;AACA,SAAK,QAAQ;AACb,SAAK,QAAQA;AACb,UAAM;AAAA,EACR;AAAA,EACA,MAAM,WAAW;AACf,QAAI,KAAK,OAAO;AACd,WAAK,QAAQ;AACb,WAAK,QAAQ;AACb,YAAM;AAAA,IACR;AAAA,EACF;AACF;AAEO,SAAS,MAAM,UAAU,OAAOA,OAAM;AAC3C,MAAI,IAAI,IAAI;AACZ,IAAE,QAAQ,UAAU,OAAOA,KAAI;AAC/B,SAAO;AACT;AAEO,SAAS,aAAa;AAC3B,MAAI;AACJ,IAAE;AACF,MAAI,IAAI,UAAU;AAClB,SAAO,GAAG;AACR,SAAK,IAAI,WAAW,EAAE,UAAU,EAAG,GAAE,MAAM,KAAK,QAAW,CAAC;AAC5D,QAAI,EAAE;AAAA,EACR;AACA,IAAE;AACJ;AAEA,SAAS,OAAO;AACd,cAAY,YAAY,MAAM,IAAI,KAAK;AACvC,UAAQ,UAAU;AAClB,MAAI;AACF,eAAW;AAAA,EACb,UAAE;AACA,YAAQ;AACR,QAAI;AACJ,eAAW;AAAA,EACb;AACF;AAEA,SAAS,OAAO;AACd,MAAIC,OAAM,MAAM,IAAI,GAAG,QAAQA,OAAM;AACrC,MAAI,QAAQ,UAAW,cAAa,OAAO,YAAYA;AACzD;AAEA,SAAS,MAAM;AACb,MAAI,IAAI,KAAK,UAAU,IAAID,QAAO;AAClC,SAAO,IAAI;AACT,QAAI,GAAG,OAAO;AACZ,UAAIA,QAAO,GAAG,MAAO,CAAAA,QAAO,GAAG;AAC/B,WAAK,IAAI,KAAK,GAAG;AAAA,IACnB,OAAO;AACL,WAAK,GAAG,OAAO,GAAG,QAAQ;AAC1B,WAAK,KAAK,GAAG,QAAQ,KAAK,WAAW;AAAA,IACvC;AAAA,EACF;AACA,aAAW;AACX,QAAMA,KAAI;AACZ;AAEA,SAAS,MAAMA,OAAM;AACnB,MAAI,MAAO;AACX,MAAI,QAAS,WAAU,aAAa,OAAO;AAC3C,MAAI,QAAQA,QAAO;AACnB,MAAI,QAAQ,IAAI;AACd,QAAIA,QAAO,SAAU,WAAU,WAAW,MAAMA,QAAO,MAAM,IAAI,IAAI,SAAS;AAC9E,QAAI,SAAU,YAAW,cAAc,QAAQ;AAAA,EACjD,OAAO;AACL,QAAI,CAAC,SAAU,aAAY,MAAM,IAAI,GAAG,WAAW,YAAY,MAAM,SAAS;AAC9E,YAAQ,GAAG,SAAS,IAAI;AAAA,EAC1B;AACF;;;AC7GA;AAEe,SAAR,gBAAiB,UAAU,OAAOE,OAAM;AAC7C,MAAI,IAAI,IAAI;AACZ,UAAQ,SAAS,OAAO,IAAI,CAAC;AAC7B,IAAE,QAAQ,aAAW;AACnB,MAAE,KAAK;AACP,aAAS,UAAU,KAAK;AAAA,EAC1B,GAAG,OAAOA,KAAI;AACd,SAAO;AACT;;;AHPA,IAAI,UAAU,iBAAS,SAAS,OAAO,UAAU,WAAW;AAC5D,IAAI,aAAa,CAAC;AAEX,IAAI,UAAU;AACd,IAAI,YAAY;AAChB,IAAI,WAAW;AACf,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,SAAS;AACb,IAAI,QAAQ;AAEJ,SAAR,iBAAiB,MAAM,MAAMC,KAAIC,QAAO,OAAO,QAAQ;AAC5D,MAAI,YAAY,KAAK;AACrB,MAAI,CAAC,UAAW,MAAK,eAAe,CAAC;AAAA,WAC5BD,OAAM,UAAW;AAC1B,SAAO,MAAMA,KAAI;AAAA,IACf;AAAA,IACA,OAAOC;AAAA;AAAA,IACP;AAAA;AAAA,IACA,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM,OAAO;AAAA,IACb,OAAO,OAAO;AAAA,IACd,UAAU,OAAO;AAAA,IACjB,MAAM,OAAO;AAAA,IACb,OAAO;AAAA,IACP,OAAO;AAAA,EACT,CAAC;AACH;AAEO,SAAS,KAAK,MAAMD,KAAI;AAC7B,MAAI,WAAWE,KAAI,MAAMF,GAAE;AAC3B,MAAI,SAAS,QAAQ,QAAS,OAAM,IAAI,MAAM,6BAA6B;AAC3E,SAAO;AACT;AAEO,SAASG,KAAI,MAAMH,KAAI;AAC5B,MAAI,WAAWE,KAAI,MAAMF,GAAE;AAC3B,MAAI,SAAS,QAAQ,QAAS,OAAM,IAAI,MAAM,2BAA2B;AACzE,SAAO;AACT;AAEO,SAASE,KAAI,MAAMF,KAAI;AAC5B,MAAI,WAAW,KAAK;AACpB,MAAI,CAAC,YAAY,EAAE,WAAW,SAASA,GAAE,GAAI,OAAM,IAAI,MAAM,sBAAsB;AACnF,SAAO;AACT;AAEA,SAAS,OAAO,MAAMA,KAAII,OAAM;AAC9B,MAAI,YAAY,KAAK,cACjB;AAIJ,YAAUJ,GAAE,IAAII;AAChB,EAAAA,MAAK,QAAQ,MAAM,UAAU,GAAGA,MAAK,IAAI;AAEzC,WAAS,SAAS,SAAS;AACzB,IAAAA,MAAK,QAAQ;AACb,IAAAA,MAAK,MAAM,QAAQC,QAAOD,MAAK,OAAOA,MAAK,IAAI;AAG/C,QAAIA,MAAK,SAAS,QAAS,CAAAC,OAAM,UAAUD,MAAK,KAAK;AAAA,EACvD;AAEA,WAASC,OAAM,SAAS;AACtB,QAAI,GAAG,GAAG,GAAG;AAGb,QAAID,MAAK,UAAU,UAAW,QAAO,KAAK;AAE1C,SAAK,KAAK,WAAW;AACnB,UAAI,UAAU,CAAC;AACf,UAAI,EAAE,SAASA,MAAK,KAAM;AAK1B,UAAI,EAAE,UAAU,QAAS,QAAO,gBAAQC,MAAK;AAG7C,UAAI,EAAE,UAAU,SAAS;AACvB,UAAE,QAAQ;AACV,UAAE,MAAM,KAAK;AACb,UAAE,GAAG,KAAK,aAAa,MAAM,KAAK,UAAU,EAAE,OAAO,EAAE,KAAK;AAC5D,eAAO,UAAU,CAAC;AAAA,MACpB,WAGS,CAAC,IAAIL,KAAI;AAChB,UAAE,QAAQ;AACV,UAAE,MAAM,KAAK;AACb,UAAE,GAAG,KAAK,UAAU,MAAM,KAAK,UAAU,EAAE,OAAO,EAAE,KAAK;AACzD,eAAO,UAAU,CAAC;AAAA,MACpB;AAAA,IACF;AAMA,oBAAQ,WAAW;AACjB,UAAII,MAAK,UAAU,SAAS;AAC1B,QAAAA,MAAK,QAAQ;AACb,QAAAA,MAAK,MAAM,QAAQ,MAAMA,MAAK,OAAOA,MAAK,IAAI;AAC9C,aAAK,OAAO;AAAA,MACd;AAAA,IACF,CAAC;AAID,IAAAA,MAAK,QAAQ;AACb,IAAAA,MAAK,GAAG,KAAK,SAAS,MAAM,KAAK,UAAUA,MAAK,OAAOA,MAAK,KAAK;AACjE,QAAIA,MAAK,UAAU,SAAU;AAC7B,IAAAA,MAAK,QAAQ;AAGb,YAAQ,IAAI,MAAM,IAAIA,MAAK,MAAM,MAAM;AACvC,SAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,GAAG;AAC9B,UAAI,IAAIA,MAAK,MAAM,CAAC,EAAE,MAAM,KAAK,MAAM,KAAK,UAAUA,MAAK,OAAOA,MAAK,KAAK,GAAG;AAC7E,cAAM,EAAE,CAAC,IAAI;AAAA,MACf;AAAA,IACF;AACA,UAAM,SAAS,IAAI;AAAA,EACrB;AAEA,WAAS,KAAK,SAAS;AACrB,QAAI,IAAI,UAAUA,MAAK,WAAWA,MAAK,KAAK,KAAK,MAAM,UAAUA,MAAK,QAAQ,KAAKA,MAAK,MAAM,QAAQ,IAAI,GAAGA,MAAK,QAAQ,QAAQ,IAC9H,IAAI,IACJ,IAAI,MAAM;AAEd,WAAO,EAAE,IAAI,GAAG;AACd,YAAM,CAAC,EAAE,KAAK,MAAM,CAAC;AAAA,IACvB;AAGA,QAAIA,MAAK,UAAU,QAAQ;AACzB,MAAAA,MAAK,GAAG,KAAK,OAAO,MAAM,KAAK,UAAUA,MAAK,OAAOA,MAAK,KAAK;AAC/D,WAAK;AAAA,IACP;AAAA,EACF;AAEA,WAAS,OAAO;AACd,IAAAA,MAAK,QAAQ;AACb,IAAAA,MAAK,MAAM,KAAK;AAChB,WAAO,UAAUJ,GAAE;AACnB,aAAS,KAAK,UAAW;AACzB,WAAO,KAAK;AAAA,EACd;AACF;;;ADtJe,SAAR,kBAAiB,MAAM,MAAM;AAClC,MAAI,YAAY,KAAK,cACjB,UACA,QACAM,SAAQ,MACR;AAEJ,MAAI,CAAC,UAAW;AAEhB,SAAO,QAAQ,OAAO,OAAO,OAAO;AAEpC,OAAK,KAAK,WAAW;AACnB,SAAK,WAAW,UAAU,CAAC,GAAG,SAAS,MAAM;AAAE,MAAAA,SAAQ;AAAO;AAAA,IAAU;AACxE,aAAS,SAAS,QAAQ,YAAY,SAAS,QAAQ;AACvD,aAAS,QAAQ;AACjB,aAAS,MAAM,KAAK;AACpB,aAAS,GAAG,KAAK,SAAS,cAAc,UAAU,MAAM,KAAK,UAAU,SAAS,OAAO,SAAS,KAAK;AACrG,WAAO,UAAU,CAAC;AAAA,EACpB;AAEA,MAAIA,OAAO,QAAO,KAAK;AACzB;;;ADrBe,SAARC,mBAAiB,MAAM;AAC5B,SAAO,KAAK,KAAK,WAAW;AAC1B,sBAAU,MAAM,IAAI;AAAA,EACtB,CAAC;AACH;;;AMNA;;;ACAA;;;ACAA;;;ACAA;AAEA,SAAS,YAAYC,KAAI,MAAM;AAC7B,MAAI,QAAQ;AACZ,SAAO,WAAW;AAChB,QAAI,WAAWC,KAAI,MAAMD,GAAE,GACvB,QAAQ,SAAS;AAKrB,QAAI,UAAU,QAAQ;AACpB,eAAS,SAAS;AAClB,eAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAI,GAAG,EAAE,GAAG;AAC7C,YAAI,OAAO,CAAC,EAAE,SAAS,MAAM;AAC3B,mBAAS,OAAO,MAAM;AACtB,iBAAO,OAAO,GAAG,CAAC;AAClB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,aAAS,QAAQ;AAAA,EACnB;AACF;AAEA,SAAS,cAAcA,KAAI,MAAM,OAAO;AACtC,MAAI,QAAQ;AACZ,MAAI,OAAO,UAAU,WAAY,OAAM,IAAI;AAC3C,SAAO,WAAW;AAChB,QAAI,WAAWC,KAAI,MAAMD,GAAE,GACvB,QAAQ,SAAS;AAKrB,QAAI,UAAU,QAAQ;AACpB,gBAAU,SAAS,OAAO,MAAM;AAChC,eAAS,IAAI,EAAC,MAAY,MAAY,GAAG,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAI,GAAG,EAAE,GAAG;AAC7E,YAAI,OAAO,CAAC,EAAE,SAAS,MAAM;AAC3B,iBAAO,CAAC,IAAI;AACZ;AAAA,QACF;AAAA,MACF;AACA,UAAI,MAAM,EAAG,QAAO,KAAK,CAAC;AAAA,IAC5B;AAEA,aAAS,QAAQ;AAAA,EACnB;AACF;AAEe,SAAR,cAAiB,MAAM,OAAO;AACnC,MAAIA,MAAK,KAAK;AAEd,UAAQ;AAER,MAAI,UAAU,SAAS,GAAG;AACxB,QAAI,QAAQE,KAAI,KAAK,KAAK,GAAGF,GAAE,EAAE;AACjC,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE,GAAG;AAC/C,WAAK,IAAI,MAAM,CAAC,GAAG,SAAS,MAAM;AAChC,eAAO,EAAE;AAAA,MACX;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,SAAO,KAAK,MAAM,SAAS,OAAO,cAAc,eAAeA,KAAI,MAAM,KAAK,CAAC;AACjF;AAEO,SAAS,WAAWG,aAAY,MAAM,OAAO;AAClD,MAAIH,MAAKG,YAAW;AAEpB,EAAAA,YAAW,KAAK,WAAW;AACzB,QAAI,WAAWF,KAAI,MAAMD,GAAE;AAC3B,KAAC,SAAS,UAAU,SAAS,QAAQ,CAAC,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,SAAS;AAAA,EAC/E,CAAC;AAED,SAAO,SAAS,MAAM;AACpB,WAAOE,KAAI,MAAMF,GAAE,EAAE,MAAM,IAAI;AAAA,EACjC;AACF;;;AChFA;AAGe,SAAR,oBAAiB,GAAG,GAAG;AAC5B,MAAI;AACJ,UAAQ,OAAO,MAAM,WAAW,iBAC1B,aAAa,QAAQ,eACpB,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG,eACzB,gBAAmB,GAAG,CAAC;AAC/B;;;AFJA,SAASI,YAAW,MAAM;AACxB,SAAO,WAAW;AAChB,SAAK,gBAAgB,IAAI;AAAA,EAC3B;AACF;AAEA,SAASC,cAAa,UAAU;AAC9B,SAAO,WAAW;AAChB,SAAK,kBAAkB,SAAS,OAAO,SAAS,KAAK;AAAA,EACvD;AACF;AAEA,SAASC,cAAa,MAAM,aAAa,QAAQ;AAC/C,MAAI,UACA,UAAU,SAAS,IACnB;AACJ,SAAO,WAAW;AAChB,QAAI,UAAU,KAAK,aAAa,IAAI;AACpC,WAAO,YAAY,UAAU,OACvB,YAAY,WAAW,eACvB,eAAe,YAAY,WAAW,SAAS,MAAM;AAAA,EAC7D;AACF;AAEA,SAASC,gBAAe,UAAU,aAAa,QAAQ;AACrD,MAAI,UACA,UAAU,SAAS,IACnB;AACJ,SAAO,WAAW;AAChB,QAAI,UAAU,KAAK,eAAe,SAAS,OAAO,SAAS,KAAK;AAChE,WAAO,YAAY,UAAU,OACvB,YAAY,WAAW,eACvB,eAAe,YAAY,WAAW,SAAS,MAAM;AAAA,EAC7D;AACF;AAEA,SAASC,cAAa,MAAM,aAAa,OAAO;AAC9C,MAAI,UACA,UACA;AACJ,SAAO,WAAW;AAChB,QAAI,SAAS,SAAS,MAAM,IAAI,GAAG;AACnC,QAAI,UAAU,KAAM,QAAO,KAAK,KAAK,gBAAgB,IAAI;AACzD,cAAU,KAAK,aAAa,IAAI;AAChC,cAAU,SAAS;AACnB,WAAO,YAAY,UAAU,OACvB,YAAY,YAAY,YAAY,WAAW,gBAC9C,WAAW,SAAS,eAAe,YAAY,WAAW,SAAS,MAAM;AAAA,EAClF;AACF;AAEA,SAASC,gBAAe,UAAU,aAAa,OAAO;AACpD,MAAI,UACA,UACA;AACJ,SAAO,WAAW;AAChB,QAAI,SAAS,SAAS,MAAM,IAAI,GAAG;AACnC,QAAI,UAAU,KAAM,QAAO,KAAK,KAAK,kBAAkB,SAAS,OAAO,SAAS,KAAK;AACrF,cAAU,KAAK,eAAe,SAAS,OAAO,SAAS,KAAK;AAC5D,cAAU,SAAS;AACnB,WAAO,YAAY,UAAU,OACvB,YAAY,YAAY,YAAY,WAAW,gBAC9C,WAAW,SAAS,eAAe,YAAY,WAAW,SAAS,MAAM;AAAA,EAClF;AACF;AAEe,SAARC,cAAiB,MAAM,OAAO;AACnC,MAAI,WAAW,kBAAU,IAAI,GAAG,IAAI,aAAa,cAAc,0BAAuB;AACtF,SAAO,KAAK,UAAU,MAAM,OAAO,UAAU,cACtC,SAAS,QAAQD,kBAAiBD,eAAc,UAAU,GAAG,WAAW,MAAM,UAAU,MAAM,KAAK,CAAC,IACrG,SAAS,QAAQ,SAAS,QAAQH,gBAAeD,aAAY,QAAQ,KACpE,SAAS,QAAQG,kBAAiBD,eAAc,UAAU,GAAG,KAAK,CAAC;AAC5E;;;AG7EA;AAEA,SAAS,gBAAgB,MAAM,GAAG;AAChC,SAAO,SAAS,GAAG;AACjB,SAAK,aAAa,MAAM,EAAE,KAAK,MAAM,CAAC,CAAC;AAAA,EACzC;AACF;AAEA,SAAS,kBAAkB,UAAU,GAAG;AACtC,SAAO,SAAS,GAAG;AACjB,SAAK,eAAe,SAAS,OAAO,SAAS,OAAO,EAAE,KAAK,MAAM,CAAC,CAAC;AAAA,EACrE;AACF;AAEA,SAAS,YAAY,UAAU,OAAO;AACpC,MAAI,IAAI;AACR,WAAS,QAAQ;AACf,QAAI,IAAI,MAAM,MAAM,MAAM,SAAS;AACnC,QAAI,MAAM,GAAI,OAAM,KAAK,MAAM,kBAAkB,UAAU,CAAC;AAC5D,WAAO;AAAA,EACT;AACA,QAAM,SAAS;AACf,SAAO;AACT;AAEA,SAAS,UAAU,MAAM,OAAO;AAC9B,MAAI,IAAI;AACR,WAAS,QAAQ;AACf,QAAI,IAAI,MAAM,MAAM,MAAM,SAAS;AACnC,QAAI,MAAM,GAAI,OAAM,KAAK,MAAM,gBAAgB,MAAM,CAAC;AACtD,WAAO;AAAA,EACT;AACA,QAAM,SAAS;AACf,SAAO;AACT;AAEe,SAAR,kBAAiB,MAAM,OAAO;AACnC,MAAI,MAAM,UAAU;AACpB,MAAI,UAAU,SAAS,EAAG,SAAQ,MAAM,KAAK,MAAM,GAAG,MAAM,IAAI;AAChE,MAAI,SAAS,KAAM,QAAO,KAAK,MAAM,KAAK,IAAI;AAC9C,MAAI,OAAO,UAAU,WAAY,OAAM,IAAI;AAC3C,MAAI,WAAW,kBAAU,IAAI;AAC7B,SAAO,KAAK,MAAM,MAAM,SAAS,QAAQ,cAAc,WAAW,UAAU,KAAK,CAAC;AACpF;;;AC3CA;AAEA,SAAS,cAAcK,KAAI,OAAO;AAChC,SAAO,WAAW;AAChB,SAAK,MAAMA,GAAE,EAAE,QAAQ,CAAC,MAAM,MAAM,MAAM,SAAS;AAAA,EACrD;AACF;AAEA,SAAS,cAAcA,KAAI,OAAO;AAChC,SAAO,QAAQ,CAAC,OAAO,WAAW;AAChC,SAAK,MAAMA,GAAE,EAAE,QAAQ;AAAA,EACzB;AACF;AAEe,SAAR,cAAiB,OAAO;AAC7B,MAAIA,MAAK,KAAK;AAEd,SAAO,UAAU,SACX,KAAK,MAAM,OAAO,UAAU,aACxB,gBACA,eAAeA,KAAI,KAAK,CAAC,IAC7BC,KAAI,KAAK,KAAK,GAAGD,GAAE,EAAE;AAC7B;;;ACtBA;AAEA,SAAS,iBAAiBE,KAAI,OAAO;AACnC,SAAO,WAAW;AAChB,IAAAC,KAAI,MAAMD,GAAE,EAAE,WAAW,CAAC,MAAM,MAAM,MAAM,SAAS;AAAA,EACvD;AACF;AAEA,SAAS,iBAAiBA,KAAI,OAAO;AACnC,SAAO,QAAQ,CAAC,OAAO,WAAW;AAChC,IAAAC,KAAI,MAAMD,GAAE,EAAE,WAAW;AAAA,EAC3B;AACF;AAEe,SAAR,iBAAiB,OAAO;AAC7B,MAAIA,MAAK,KAAK;AAEd,SAAO,UAAU,SACX,KAAK,MAAM,OAAO,UAAU,aACxB,mBACA,kBAAkBA,KAAI,KAAK,CAAC,IAChCE,KAAI,KAAK,KAAK,GAAGF,GAAE,EAAE;AAC7B;;;ACtBA;AAEA,SAAS,aAAaG,KAAI,OAAO;AAC/B,MAAI,OAAO,UAAU,WAAY,OAAM,IAAI;AAC3C,SAAO,WAAW;AAChB,IAAAC,KAAI,MAAMD,GAAE,EAAE,OAAO;AAAA,EACvB;AACF;AAEe,SAAR,aAAiB,OAAO;AAC7B,MAAIA,MAAK,KAAK;AAEd,SAAO,UAAU,SACX,KAAK,KAAK,aAAaA,KAAI,KAAK,CAAC,IACjCE,KAAI,KAAK,KAAK,GAAGF,GAAE,EAAE;AAC7B;;;ACfA;AAEA,SAAS,YAAYG,KAAI,OAAO;AAC9B,SAAO,WAAW;AAChB,QAAI,IAAI,MAAM,MAAM,MAAM,SAAS;AACnC,QAAI,OAAO,MAAM,WAAY,OAAM,IAAI;AACvC,IAAAC,KAAI,MAAMD,GAAE,EAAE,OAAO;AAAA,EACvB;AACF;AAEe,SAAR,oBAAiB,OAAO;AAC7B,MAAI,OAAO,UAAU,WAAY,OAAM,IAAI;AAC3C,SAAO,KAAK,KAAK,YAAY,KAAK,KAAK,KAAK,CAAC;AAC/C;;;ACbA;AAGe,SAARE,gBAAiBC,QAAO;AAC7B,MAAI,OAAOA,WAAU,WAAY,CAAAA,SAAQ,gBAAQA,MAAK;AAEtD,WAAS,SAAS,KAAK,SAAS,IAAI,OAAO,QAAQ,YAAY,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAC9F,aAAS,QAAQ,OAAO,CAAC,GAAG,IAAI,MAAM,QAAQ,WAAW,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACnG,WAAK,OAAO,MAAM,CAAC,MAAMA,OAAM,KAAK,MAAM,KAAK,UAAU,GAAG,KAAK,GAAG;AAClE,iBAAS,KAAK,IAAI;AAAA,MACpB;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAI,WAAW,WAAW,KAAK,UAAU,KAAK,OAAO,KAAK,GAAG;AACtE;;;ACfA;AAEe,SAARC,eAAiBC,aAAY;AAClC,MAAIA,YAAW,QAAQ,KAAK,IAAK,OAAM,IAAI;AAE3C,WAAS,UAAU,KAAK,SAAS,UAAUA,YAAW,SAAS,KAAK,QAAQ,QAAQ,KAAK,QAAQ,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE,GAAG,SAAS,IAAI,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACxK,aAAS,SAAS,QAAQ,CAAC,GAAG,SAAS,QAAQ,CAAC,GAAG,IAAI,OAAO,QAAQC,SAAQ,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAC/H,UAAI,OAAO,OAAO,CAAC,KAAK,OAAO,CAAC,GAAG;AACjC,QAAAA,OAAM,CAAC,IAAI;AAAA,MACb;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAI,IAAI,EAAE,GAAG;AAClB,WAAO,CAAC,IAAI,QAAQ,CAAC;AAAA,EACvB;AAEA,SAAO,IAAI,WAAW,QAAQ,KAAK,UAAU,KAAK,OAAO,KAAK,GAAG;AACnE;;;AClBA;AAEA,SAAS,MAAM,MAAM;AACnB,UAAQ,OAAO,IAAI,KAAK,EAAE,MAAM,OAAO,EAAE,MAAM,SAAS,GAAG;AACzD,QAAI,IAAI,EAAE,QAAQ,GAAG;AACrB,QAAI,KAAK,EAAG,KAAI,EAAE,MAAM,GAAG,CAAC;AAC5B,WAAO,CAAC,KAAK,MAAM;AAAA,EACrB,CAAC;AACH;AAEA,SAAS,WAAWC,KAAI,MAAM,UAAU;AACtC,MAAI,KAAK,KAAK,MAAM,MAAM,IAAI,IAAI,OAAOC;AACzC,SAAO,WAAW;AAChB,QAAI,WAAW,IAAI,MAAMD,GAAE,GACvBE,MAAK,SAAS;AAKlB,QAAIA,QAAO,IAAK,EAAC,OAAO,MAAMA,KAAI,KAAK,GAAG,GAAG,MAAM,QAAQ;AAE3D,aAAS,KAAK;AAAA,EAChB;AACF;AAEe,SAARC,YAAiB,MAAM,UAAU;AACtC,MAAIH,MAAK,KAAK;AAEd,SAAO,UAAU,SAAS,IACpBI,KAAI,KAAK,KAAK,GAAGJ,GAAE,EAAE,GAAG,GAAG,IAAI,IAC/B,KAAK,KAAK,WAAWA,KAAI,MAAM,QAAQ,CAAC;AAChD;;;AC/BA;AAAA,SAAS,eAAeK,KAAI;AAC1B,SAAO,WAAW;AAChB,QAAI,SAAS,KAAK;AAClB,aAAS,KAAK,KAAK,aAAc,KAAI,CAAC,MAAMA,IAAI;AAChD,QAAI,OAAQ,QAAO,YAAY,IAAI;AAAA,EACrC;AACF;AAEe,SAARC,kBAAmB;AACxB,SAAO,KAAK,GAAG,cAAc,eAAe,KAAK,GAAG,CAAC;AACvD;;;ACVA;AAIe,SAARC,gBAAiB,QAAQ;AAC9B,MAAI,OAAO,KAAK,OACZC,MAAK,KAAK;AAEd,MAAI,OAAO,WAAW,WAAY,UAAS,iBAAS,MAAM;AAE1D,WAAS,SAAS,KAAK,SAAS,IAAI,OAAO,QAAQ,YAAY,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAC9F,aAAS,QAAQ,OAAO,CAAC,GAAG,IAAI,MAAM,QAAQ,WAAW,UAAU,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,MAAM,SAAS,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACtH,WAAK,OAAO,MAAM,CAAC,OAAO,UAAU,OAAO,KAAK,MAAM,KAAK,UAAU,GAAG,KAAK,IAAI;AAC/E,YAAI,cAAc,KAAM,SAAQ,WAAW,KAAK;AAChD,iBAAS,CAAC,IAAI;AACd,yBAAS,SAAS,CAAC,GAAG,MAAMA,KAAI,GAAG,UAAUC,KAAI,MAAMD,GAAE,CAAC;AAAA,MAC5D;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAI,WAAW,WAAW,KAAK,UAAU,MAAMA,GAAE;AAC1D;;;ACrBA;AAIe,SAARE,mBAAiB,QAAQ;AAC9B,MAAI,OAAO,KAAK,OACZC,MAAK,KAAK;AAEd,MAAI,OAAO,WAAW,WAAY,UAAS,oBAAY,MAAM;AAE7D,WAAS,SAAS,KAAK,SAAS,IAAI,OAAO,QAAQ,YAAY,CAAC,GAAG,UAAU,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAClG,aAAS,QAAQ,OAAO,CAAC,GAAG,IAAI,MAAM,QAAQ,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACrE,UAAI,OAAO,MAAM,CAAC,GAAG;AACnB,iBAASC,YAAW,OAAO,KAAK,MAAM,KAAK,UAAU,GAAG,KAAK,GAAG,OAAOC,WAAUC,KAAI,MAAMH,GAAE,GAAG,IAAI,GAAG,IAAIC,UAAS,QAAQ,IAAI,GAAG,EAAE,GAAG;AACtI,cAAI,QAAQA,UAAS,CAAC,GAAG;AACvB,6BAAS,OAAO,MAAMD,KAAI,GAAGC,WAAUC,QAAO;AAAA,UAChD;AAAA,QACF;AACA,kBAAU,KAAKD,SAAQ;AACvB,gBAAQ,KAAK,IAAI;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAI,WAAW,WAAW,SAAS,MAAMD,GAAE;AACpD;;;ACzBA;AAEA,IAAII,aAAY,kBAAU,UAAU;AAErB,SAARC,qBAAmB;AACxB,SAAO,IAAID,WAAU,KAAK,SAAS,KAAK,QAAQ;AAClD;;;ACNA;AAMA,SAAS,UAAU,MAAM,aAAa;AACpC,MAAI,UACA,UACA;AACJ,SAAO,WAAW;AAChB,QAAI,UAAU,WAAM,MAAM,IAAI,GAC1B,WAAW,KAAK,MAAM,eAAe,IAAI,GAAG,WAAM,MAAM,IAAI;AAChE,WAAO,YAAY,UAAU,OACvB,YAAY,YAAY,YAAY,WAAW,eAC/C,eAAe,YAAY,WAAW,SAAS,WAAW,OAAO;AAAA,EACzE;AACF;AAEA,SAASE,aAAY,MAAM;AACzB,SAAO,WAAW;AAChB,SAAK,MAAM,eAAe,IAAI;AAAA,EAChC;AACF;AAEA,SAASC,eAAc,MAAM,aAAa,QAAQ;AAChD,MAAI,UACA,UAAU,SAAS,IACnB;AACJ,SAAO,WAAW;AAChB,QAAI,UAAU,WAAM,MAAM,IAAI;AAC9B,WAAO,YAAY,UAAU,OACvB,YAAY,WAAW,eACvB,eAAe,YAAY,WAAW,SAAS,MAAM;AAAA,EAC7D;AACF;AAEA,SAASC,eAAc,MAAM,aAAa,OAAO;AAC/C,MAAI,UACA,UACA;AACJ,SAAO,WAAW;AAChB,QAAI,UAAU,WAAM,MAAM,IAAI,GAC1B,SAAS,MAAM,IAAI,GACnB,UAAU,SAAS;AACvB,QAAI,UAAU,KAAM,WAAU,UAAU,KAAK,MAAM,eAAe,IAAI,GAAG,WAAM,MAAM,IAAI;AACzF,WAAO,YAAY,UAAU,OACvB,YAAY,YAAY,YAAY,WAAW,gBAC9C,WAAW,SAAS,eAAe,YAAY,WAAW,SAAS,MAAM;AAAA,EAClF;AACF;AAEA,SAAS,iBAAiBC,KAAI,MAAM;AAClC,MAAI,KAAK,KAAK,WAAW,MAAM,WAAW,MAAM,QAAQ,SAAS,KAAKC;AACtE,SAAO,WAAW;AAChB,QAAI,WAAWC,KAAI,MAAMF,GAAE,GACvBG,MAAK,SAAS,IACd,WAAW,SAAS,MAAM,GAAG,KAAK,OAAOF,YAAWA,UAASJ,aAAY,IAAI,KAAK;AAKtF,QAAIM,QAAO,OAAO,cAAc,SAAU,EAAC,OAAO,MAAMA,KAAI,KAAK,GAAG,GAAG,OAAO,YAAY,QAAQ;AAElG,aAAS,KAAK;AAAA,EAChB;AACF;AAEe,SAARC,eAAiB,MAAM,OAAO,UAAU;AAC7C,MAAI,KAAK,QAAQ,QAAQ,cAAc,0BAAuB;AAC9D,SAAO,SAAS,OAAO,KAClB,WAAW,MAAM,UAAU,MAAM,CAAC,CAAC,EACnC,GAAG,eAAe,MAAMP,aAAY,IAAI,CAAC,IAC1C,OAAO,UAAU,aAAa,KAC7B,WAAW,MAAME,eAAc,MAAM,GAAG,WAAW,MAAM,WAAW,MAAM,KAAK,CAAC,CAAC,EACjF,KAAK,iBAAiB,KAAK,KAAK,IAAI,CAAC,IACtC,KACC,WAAW,MAAMD,eAAc,MAAM,GAAG,KAAK,GAAG,QAAQ,EACxD,GAAG,eAAe,MAAM,IAAI;AACnC;;;AC/EA;AAAA,SAAS,iBAAiB,MAAM,GAAG,UAAU;AAC3C,SAAO,SAAS,GAAG;AACjB,SAAK,MAAM,YAAY,MAAM,EAAE,KAAK,MAAM,CAAC,GAAG,QAAQ;AAAA,EACxD;AACF;AAEA,SAAS,WAAW,MAAM,OAAO,UAAU;AACzC,MAAI,GAAG;AACP,WAAS,QAAQ;AACf,QAAI,IAAI,MAAM,MAAM,MAAM,SAAS;AACnC,QAAI,MAAM,GAAI,MAAK,KAAK,MAAM,iBAAiB,MAAM,GAAG,QAAQ;AAChE,WAAO;AAAA,EACT;AACA,QAAM,SAAS;AACf,SAAO;AACT;AAEe,SAAR,mBAAiB,MAAM,OAAO,UAAU;AAC7C,MAAI,MAAM,YAAY,QAAQ;AAC9B,MAAI,UAAU,SAAS,EAAG,SAAQ,MAAM,KAAK,MAAM,GAAG,MAAM,IAAI;AAChE,MAAI,SAAS,KAAM,QAAO,KAAK,MAAM,KAAK,IAAI;AAC9C,MAAI,OAAO,UAAU,WAAY,OAAM,IAAI;AAC3C,SAAO,KAAK,MAAM,KAAK,WAAW,MAAM,OAAO,YAAY,OAAO,KAAK,QAAQ,CAAC;AAClF;;;ACvBA;AAEA,SAASO,cAAa,OAAO;AAC3B,SAAO,WAAW;AAChB,SAAK,cAAc;AAAA,EACrB;AACF;AAEA,SAASC,cAAa,OAAO;AAC3B,SAAO,WAAW;AAChB,QAAI,SAAS,MAAM,IAAI;AACvB,SAAK,cAAc,UAAU,OAAO,KAAK;AAAA,EAC3C;AACF;AAEe,SAARC,cAAiB,OAAO;AAC7B,SAAO,KAAK,MAAM,QAAQ,OAAO,UAAU,aACrCD,cAAa,WAAW,MAAM,QAAQ,KAAK,CAAC,IAC5CD,cAAa,SAAS,OAAO,KAAK,QAAQ,EAAE,CAAC;AACrD;;;ACnBA;AAAA,SAAS,gBAAgB,GAAG;AAC1B,SAAO,SAAS,GAAG;AACjB,SAAK,cAAc,EAAE,KAAK,MAAM,CAAC;AAAA,EACnC;AACF;AAEA,SAAS,UAAU,OAAO;AACxB,MAAI,IAAI;AACR,WAAS,QAAQ;AACf,QAAI,IAAI,MAAM,MAAM,MAAM,SAAS;AACnC,QAAI,MAAM,GAAI,OAAM,KAAK,MAAM,gBAAgB,CAAC;AAChD,WAAO;AAAA,EACT;AACA,QAAM,SAAS;AACf,SAAO;AACT;AAEe,SAAR,kBAAiB,OAAO;AAC7B,MAAI,MAAM;AACV,MAAI,UAAU,SAAS,EAAG,SAAQ,MAAM,KAAK,MAAM,GAAG,MAAM,IAAI;AAChE,MAAI,SAAS,KAAM,QAAO,KAAK,MAAM,KAAK,IAAI;AAC9C,MAAI,OAAO,UAAU,WAAY,OAAM,IAAI;AAC3C,SAAO,KAAK,MAAM,KAAK,UAAU,KAAK,CAAC;AACzC;;;ACvBA;AAGe,SAAR,qBAAmB;AACxB,MAAI,OAAO,KAAK,OACZ,MAAM,KAAK,KACX,MAAM,MAAM;AAEhB,WAAS,SAAS,KAAK,SAAS,IAAI,OAAO,QAAQ,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACpE,aAAS,QAAQ,OAAO,CAAC,GAAG,IAAI,MAAM,QAAQ,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACrE,UAAI,OAAO,MAAM,CAAC,GAAG;AACnB,YAAIG,WAAUC,KAAI,MAAM,GAAG;AAC3B,yBAAS,MAAM,MAAM,KAAK,GAAG,OAAO;AAAA,UAClC,MAAMD,SAAQ,OAAOA,SAAQ,QAAQA,SAAQ;AAAA,UAC7C,OAAO;AAAA,UACP,UAAUA,SAAQ;AAAA,UAClB,MAAMA,SAAQ;AAAA,QAChB,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAI,WAAW,QAAQ,KAAK,UAAU,MAAM,GAAG;AACxD;;;ACvBA;AAEe,SAAR,cAAmB;AACxB,MAAI,KAAK,KAAK,OAAO,MAAME,MAAK,KAAK,KAAK,OAAO,KAAK,KAAK;AAC3D,SAAO,IAAI,QAAQ,SAASC,UAAS,QAAQ;AAC3C,QAAI,SAAS,EAAC,OAAO,OAAM,GACvB,MAAM,EAAC,OAAO,WAAW;AAAE,UAAI,EAAE,SAAS,EAAG,CAAAA,SAAQ;AAAA,IAAG,EAAC;AAE7D,SAAK,KAAK,WAAW;AACnB,UAAI,WAAWC,KAAI,MAAMF,GAAE,GACvBG,MAAK,SAAS;AAKlB,UAAIA,QAAO,KAAK;AACd,eAAO,MAAMA,KAAI,KAAK;AACtB,YAAI,EAAE,OAAO,KAAK,MAAM;AACxB,YAAI,EAAE,UAAU,KAAK,MAAM;AAC3B,YAAI,EAAE,IAAI,KAAK,GAAG;AAAA,MACpB;AAEA,eAAS,KAAK;AAAA,IAChB,CAAC;AAGD,QAAI,SAAS,EAAG,CAAAF,SAAQ;AAAA,EAC1B,CAAC;AACH;;;ArBNA,IAAI,KAAK;AAEF,SAAS,WAAW,QAAQ,SAAS,MAAMG,KAAI;AACpD,OAAK,UAAU;AACf,OAAK,WAAW;AAChB,OAAK,QAAQ;AACb,OAAK,MAAMA;AACb;AAEe,SAAR,WAA4B,MAAM;AACvC,SAAO,kBAAU,EAAE,WAAW,IAAI;AACpC;AAEO,SAAS,QAAQ;AACtB,SAAO,EAAE;AACX;AAEA,IAAI,sBAAsB,kBAAU;AAEpC,WAAW,YAAY,WAAW,YAAY;AAAA,EAC5C,aAAa;AAAA,EACb,QAAQC;AAAA,EACR,WAAWC;AAAA,EACX,aAAa,oBAAoB;AAAA,EACjC,gBAAgB,oBAAoB;AAAA,EACpC,QAAQC;AAAA,EACR,OAAOC;AAAA,EACP,WAAWC;AAAA,EACX,YAAY;AAAA,EACZ,MAAM,oBAAoB;AAAA,EAC1B,OAAO,oBAAoB;AAAA,EAC3B,MAAM,oBAAoB;AAAA,EAC1B,MAAM,oBAAoB;AAAA,EAC1B,OAAO,oBAAoB;AAAA,EAC3B,MAAM,oBAAoB;AAAA,EAC1B,IAAIC;AAAA,EACJ,MAAMC;AAAA,EACN,WAAW;AAAA,EACX,OAAOC;AAAA,EACP,YAAY;AAAA,EACZ,MAAMC;AAAA,EACN,WAAW;AAAA,EACX,QAAQC;AAAA,EACR,OAAO;AAAA,EACP,OAAO;AAAA,EACP,UAAU;AAAA,EACV,MAAM;AAAA,EACN,aAAa;AAAA,EACb,KAAK;AAAA,EACL,CAAC,OAAO,QAAQ,GAAG,oBAAoB,OAAO,QAAQ;AACxD;;;AsBxEA;;;ACAA;AAQO,SAAS,WAAW,GAAG;AAC5B,WAAS,KAAK,MAAM,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,KAAK;AAC9D;;;AxBLA,IAAI,gBAAgB;AAAA,EAClB,MAAM;AAAA;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AAAA,EACV,MAAM;AACR;AAEA,SAAS,QAAQ,MAAMC,KAAI;AACzB,MAAI;AACJ,SAAO,EAAE,SAAS,KAAK,iBAAiB,EAAE,SAAS,OAAOA,GAAE,IAAI;AAC9D,QAAI,EAAE,OAAO,KAAK,aAAa;AAC7B,YAAM,IAAI,MAAM,cAAcA,GAAE,YAAY;AAAA,IAC9C;AAAA,EACF;AACA,SAAO;AACT;AAEe,SAARC,oBAAiB,MAAM;AAC5B,MAAID,KACA;AAEJ,MAAI,gBAAgB,YAAY;AAC9B,IAAAA,MAAK,KAAK,KAAK,OAAO,KAAK;AAAA,EAC7B,OAAO;AACL,IAAAA,MAAK,MAAM,IAAI,SAAS,eAAe,OAAO,IAAI,GAAG,OAAO,QAAQ,OAAO,OAAO,OAAO;AAAA,EAC3F;AAEA,WAAS,SAAS,KAAK,SAAS,IAAI,OAAO,QAAQ,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACpE,aAAS,QAAQ,OAAO,CAAC,GAAG,IAAI,MAAM,QAAQ,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACrE,UAAI,OAAO,MAAM,CAAC,GAAG;AACnB,yBAAS,MAAM,MAAMA,KAAI,GAAG,OAAO,UAAU,QAAQ,MAAMA,GAAE,CAAC;AAAA,MAChE;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAI,WAAW,QAAQ,KAAK,UAAU,MAAMA,GAAE;AACvD;;;APrCA,kBAAU,UAAU,YAAYE;AAChC,kBAAU,UAAU,aAAaC;;;AgCLjC;;;ACAA;;;ACAA;;;AlGcA,IAAM,EAAC,KAAK,KAAK,IAAG,IAAI;AAExB,SAAS,QAAQ,GAAG;AAClB,SAAO,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACtB;AAEA,SAAS,QAAQ,GAAG;AAClB,SAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC;AACtC;AAEA,IAAI,IAAI;AAAA,EACN,MAAM;AAAA,EACN,SAAS,CAAC,KAAK,GAAG,EAAE,IAAI,IAAI;AAAA,EAC5B,OAAO,SAAS,GAAG,GAAG;AAAE,WAAO,KAAK,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAAA,EAAG;AAAA,EACxF,QAAQ,SAAS,IAAI;AAAE,WAAO,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AAAA,EAAG;AAC5D;AAEA,IAAI,IAAI;AAAA,EACN,MAAM;AAAA,EACN,SAAS,CAAC,KAAK,GAAG,EAAE,IAAI,IAAI;AAAA,EAC5B,OAAO,SAAS,GAAG,GAAG;AAAE,WAAO,KAAK,OAAO,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAAA,EAAG;AAAA,EACxF,QAAQ,SAAS,IAAI;AAAE,WAAO,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AAAA,EAAG;AAC5D;AAEA,IAAI,KAAK;AAAA,EACP,MAAM;AAAA,EACN,SAAS,CAAC,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,IAAI,EAAE,IAAI,IAAI;AAAA,EAC9D,OAAO,SAAS,IAAI;AAAE,WAAO,MAAM,OAAO,OAAO,QAAQ,EAAE;AAAA,EAAG;AAAA,EAC9D,QAAQ,SAAS,IAAI;AAAE,WAAO;AAAA,EAAI;AACpC;AA2DA,SAAS,KAAK,GAAG;AACf,SAAO,EAAC,MAAM,EAAC;AACjB;;;AmGxGA;;;ACAA;;;ACAA;;;ACAA;;;ACAA;AAAe,SAAR,sBAAiB,GAAG;AACzB,SAAO,KAAK,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC,KAAK,OAChC,EAAE,eAAe,IAAI,EAAE,QAAQ,MAAM,EAAE,IACvC,EAAE,SAAS,EAAE;AACrB;AAKO,SAAS,mBAAmB,GAAG,GAAG;AACvC,OAAK,KAAK,IAAI,IAAI,EAAE,cAAc,IAAI,CAAC,IAAI,EAAE,cAAc,GAAG,QAAQ,GAAG,KAAK,EAAG,QAAO;AACxF,MAAI,GAAG,cAAc,EAAE,MAAM,GAAG,CAAC;AAIjC,SAAO;AAAA,IACL,YAAY,SAAS,IAAI,YAAY,CAAC,IAAI,YAAY,MAAM,CAAC,IAAI;AAAA,IACjE,CAAC,EAAE,MAAM,IAAI,CAAC;AAAA,EAChB;AACF;;;ADjBe,SAAR,iBAAiB,GAAG;AACzB,SAAO,IAAI,mBAAmB,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI;AACzD;;;AEJA;AAAe,SAAR,oBAAiB,UAAU,WAAW;AAC3C,SAAO,SAAS,OAAO,OAAO;AAC5B,QAAI,IAAI,MAAM,QACV,IAAI,CAAC,GACL,IAAI,GACJ,IAAI,SAAS,CAAC,GACd,SAAS;AAEb,WAAO,IAAI,KAAK,IAAI,GAAG;AACrB,UAAI,SAAS,IAAI,IAAI,MAAO,KAAI,KAAK,IAAI,GAAG,QAAQ,MAAM;AAC1D,QAAE,KAAK,MAAM,UAAU,KAAK,GAAG,IAAI,CAAC,CAAC;AACrC,WAAK,UAAU,IAAI,KAAK,MAAO;AAC/B,UAAI,SAAS,KAAK,IAAI,KAAK,SAAS,MAAM;AAAA,IAC5C;AAEA,WAAO,EAAE,QAAQ,EAAE,KAAK,SAAS;AAAA,EACnC;AACF;;;ACjBA;AAAe,SAAR,uBAAiB,UAAU;AAChC,SAAO,SAAS,OAAO;AACrB,WAAO,MAAM,QAAQ,UAAU,SAAS,GAAG;AACzC,aAAO,SAAS,CAAC,CAAC;AAAA,IACpB,CAAC;AAAA,EACH;AACF;;;ACNA;AACA,IAAI,KAAK;AAEM,SAAR,gBAAiC,WAAW;AACjD,MAAI,EAAEC,SAAQ,GAAG,KAAK,SAAS,GAAI,OAAM,IAAI,MAAM,qBAAqB,SAAS;AACjF,MAAIA;AACJ,SAAO,IAAI,gBAAgB;AAAA,IACzB,MAAMA,OAAM,CAAC;AAAA,IACb,OAAOA,OAAM,CAAC;AAAA,IACd,MAAMA,OAAM,CAAC;AAAA,IACb,QAAQA,OAAM,CAAC;AAAA,IACf,MAAMA,OAAM,CAAC;AAAA,IACb,OAAOA,OAAM,CAAC;AAAA,IACd,OAAOA,OAAM,CAAC;AAAA,IACd,WAAWA,OAAM,CAAC,KAAKA,OAAM,CAAC,EAAE,MAAM,CAAC;AAAA,IACvC,MAAMA,OAAM,CAAC;AAAA,IACb,MAAMA,OAAM,EAAE;AAAA,EAChB,CAAC;AACH;AAEA,gBAAgB,YAAY,gBAAgB;AAErC,SAAS,gBAAgB,WAAW;AACzC,OAAK,OAAO,UAAU,SAAS,SAAY,MAAM,UAAU,OAAO;AAClE,OAAK,QAAQ,UAAU,UAAU,SAAY,MAAM,UAAU,QAAQ;AACrE,OAAK,OAAO,UAAU,SAAS,SAAY,MAAM,UAAU,OAAO;AAClE,OAAK,SAAS,UAAU,WAAW,SAAY,KAAK,UAAU,SAAS;AACvE,OAAK,OAAO,CAAC,CAAC,UAAU;AACxB,OAAK,QAAQ,UAAU,UAAU,SAAY,SAAY,CAAC,UAAU;AACpE,OAAK,QAAQ,CAAC,CAAC,UAAU;AACzB,OAAK,YAAY,UAAU,cAAc,SAAY,SAAY,CAAC,UAAU;AAC5E,OAAK,OAAO,CAAC,CAAC,UAAU;AACxB,OAAK,OAAO,UAAU,SAAS,SAAY,KAAK,UAAU,OAAO;AACnE;AAEA,gBAAgB,UAAU,WAAW,WAAW;AAC9C,SAAO,KAAK,OACN,KAAK,QACL,KAAK,OACL,KAAK,UACJ,KAAK,OAAO,MAAM,OAClB,KAAK,UAAU,SAAY,KAAK,KAAK,IAAI,GAAG,KAAK,QAAQ,CAAC,MAC1D,KAAK,QAAQ,MAAM,OACnB,KAAK,cAAc,SAAY,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,YAAY,CAAC,MACxE,KAAK,OAAO,MAAM,MACnB,KAAK;AACb;;;AC9CA;AACe,SAAR,mBAAiB,GAAG;AACzB,MAAK,UAAS,IAAI,EAAE,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,GAAG;AAC1D,YAAQ,EAAE,CAAC,GAAG;AAAA,MACZ,KAAK;AAAK,aAAK,KAAK;AAAG;AAAA,MACvB,KAAK;AAAK,YAAI,OAAO,EAAG,MAAK;AAAG,aAAK;AAAG;AAAA,MACxC;AAAS,YAAI,CAAC,CAAC,EAAE,CAAC,EAAG,OAAM;AAAK,YAAI,KAAK,EAAG,MAAK;AAAG;AAAA,IACtD;AAAA,EACF;AACA,SAAO,KAAK,IAAI,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC,IAAI;AACrD;;;ACVA;;;ACAA;AAEO,IAAI;AAEI,SAAR,yBAAiB,GAAG,GAAG;AAC5B,MAAI,IAAI,mBAAmB,GAAG,CAAC;AAC/B,MAAI,CAAC,EAAG,QAAO,IAAI;AACnB,MAAI,cAAc,EAAE,CAAC,GACjB,WAAW,EAAE,CAAC,GACd,IAAI,YAAY,iBAAiB,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG,KAAK,MAAM,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,GAC5F,IAAI,YAAY;AACpB,SAAO,MAAM,IAAI,cACX,IAAI,IAAI,cAAc,IAAI,MAAM,IAAI,IAAI,CAAC,EAAE,KAAK,GAAG,IACnD,IAAI,IAAI,YAAY,MAAM,GAAG,CAAC,IAAI,MAAM,YAAY,MAAM,CAAC,IAC3D,OAAO,IAAI,MAAM,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,mBAAmB,GAAG,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC;AAC3F;;;ACfA;AAEe,SAAR,sBAAiB,GAAG,GAAG;AAC5B,MAAI,IAAI,mBAAmB,GAAG,CAAC;AAC/B,MAAI,CAAC,EAAG,QAAO,IAAI;AACnB,MAAI,cAAc,EAAE,CAAC,GACjB,WAAW,EAAE,CAAC;AAClB,SAAO,WAAW,IAAI,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,GAAG,IAAI,cACxD,YAAY,SAAS,WAAW,IAAI,YAAY,MAAM,GAAG,WAAW,CAAC,IAAI,MAAM,YAAY,MAAM,WAAW,CAAC,IAC7G,cAAc,IAAI,MAAM,WAAW,YAAY,SAAS,CAAC,EAAE,KAAK,GAAG;AAC3E;;;AFNA,IAAO,sBAAQ;AAAA,EACb,KAAK,CAAC,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC;AAAA,EAClC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,SAAS,CAAC;AAAA,EACpC,KAAK,CAAC,MAAM,IAAI;AAAA,EAChB,KAAK;AAAA,EACL,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC;AAAA,EAChC,KAAK,CAAC,GAAG,MAAM,EAAE,QAAQ,CAAC;AAAA,EAC1B,KAAK,CAAC,GAAG,MAAM,EAAE,YAAY,CAAC;AAAA,EAC9B,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,SAAS,CAAC;AAAA,EACpC,KAAK,CAAC,GAAG,MAAM,sBAAc,IAAI,KAAK,CAAC;AAAA,EACvC,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,YAAY;AAAA,EACnD,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,SAAS,EAAE;AACvC;;;AGlBA;AAAe,SAAR,iBAAiB,GAAG;AACzB,SAAO;AACT;;;AVOA,IAAI,MAAM,MAAM,UAAU;AAA1B,IACI,WAAW,CAAC,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,QAAI,KAAI,IAAG,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAG;AAEnE,SAAR,eAAiBC,SAAQ;AAC9B,MAAI,QAAQA,QAAO,aAAa,UAAaA,QAAO,cAAc,SAAY,mBAAW,oBAAY,IAAI,KAAKA,QAAO,UAAU,MAAM,GAAGA,QAAO,YAAY,EAAE,GACzJ,iBAAiBA,QAAO,aAAa,SAAY,KAAKA,QAAO,SAAS,CAAC,IAAI,IAC3E,iBAAiBA,QAAO,aAAa,SAAY,KAAKA,QAAO,SAAS,CAAC,IAAI,IAC3E,UAAUA,QAAO,YAAY,SAAY,MAAMA,QAAO,UAAU,IAChE,WAAWA,QAAO,aAAa,SAAY,mBAAW,uBAAe,IAAI,KAAKA,QAAO,UAAU,MAAM,CAAC,GACtGC,WAAUD,QAAO,YAAY,SAAY,MAAMA,QAAO,UAAU,IAChE,QAAQA,QAAO,UAAU,SAAY,WAAMA,QAAO,QAAQ,IAC1D,MAAMA,QAAO,QAAQ,SAAY,QAAQA,QAAO,MAAM;AAE1D,WAAS,UAAU,WAAW;AAC5B,gBAAY,gBAAgB,SAAS;AAErC,QAAI,OAAO,UAAU,MACjB,QAAQ,UAAU,OAClB,OAAO,UAAU,MACjB,SAAS,UAAU,QACnBE,QAAO,UAAU,MACjB,QAAQ,UAAU,OAClB,QAAQ,UAAU,OAClB,YAAY,UAAU,WACtBC,QAAO,UAAU,MACjBC,QAAO,UAAU;AAGrB,QAAIA,UAAS,IAAK,SAAQ,MAAMA,QAAO;AAAA,aAG9B,CAAC,oBAAYA,KAAI,EAAG,eAAc,WAAc,YAAY,KAAKD,QAAO,MAAMC,QAAO;AAG9F,QAAIF,SAAS,SAAS,OAAO,UAAU,IAAM,CAAAA,QAAO,MAAM,OAAO,KAAK,QAAQ;AAI9E,QAAI,SAAS,WAAW,MAAM,iBAAiB,WAAW,OAAO,SAAS,KAAKE,KAAI,IAAI,MAAMA,MAAK,YAAY,IAAI,IAC9G,SAAS,WAAW,MAAM,iBAAiB,OAAO,KAAKA,KAAI,IAAIH,WAAU;AAK7E,QAAI,aAAa,oBAAYG,KAAI,GAC7B,cAAc,aAAa,KAAKA,KAAI;AAMxC,gBAAY,cAAc,SAAY,IAChC,SAAS,KAAKA,KAAI,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,SAAS,CAAC,IACzD,KAAK,IAAI,GAAG,KAAK,IAAI,IAAI,SAAS,CAAC;AAEzC,aAASC,QAAO,OAAO;AACrB,UAAI,cAAc,QACd,cAAc,QACd,GAAG,GAAG;AAEV,UAAID,UAAS,KAAK;AAChB,sBAAc,WAAW,KAAK,IAAI;AAClC,gBAAQ;AAAA,MACV,OAAO;AACL,gBAAQ,CAAC;AAGT,YAAI,gBAAgB,QAAQ,KAAK,IAAI,QAAQ;AAG7C,gBAAQ,MAAM,KAAK,IAAI,MAAM,WAAW,KAAK,IAAI,KAAK,GAAG,SAAS;AAGlE,YAAID,MAAM,SAAQ,mBAAW,KAAK;AAGlC,YAAI,iBAAiB,CAAC,UAAU,KAAK,SAAS,IAAK,iBAAgB;AAGnE,uBAAe,gBAAiB,SAAS,MAAM,OAAO,QAAS,SAAS,OAAO,SAAS,MAAM,KAAK,QAAQ;AAC3G,uBAAeC,UAAS,MAAM,SAAS,IAAI,iBAAiB,CAAC,IAAI,MAAM,eAAe,iBAAiB,SAAS,MAAM,MAAM;AAI5H,YAAI,aAAa;AACf,cAAI,IAAI,IAAI,MAAM;AAClB,iBAAO,EAAE,IAAI,GAAG;AACd,gBAAI,IAAI,MAAM,WAAW,CAAC,GAAG,KAAK,KAAK,IAAI,IAAI;AAC7C,6BAAe,MAAM,KAAK,UAAU,MAAM,MAAM,IAAI,CAAC,IAAI,MAAM,MAAM,CAAC,KAAK;AAC3E,sBAAQ,MAAM,MAAM,GAAG,CAAC;AACxB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAGA,UAAI,SAAS,CAACF,MAAM,SAAQ,MAAM,OAAO,QAAQ;AAGjD,UAAI,SAAS,YAAY,SAAS,MAAM,SAAS,YAAY,QACzD,UAAU,SAAS,QAAQ,IAAI,MAAM,QAAQ,SAAS,CAAC,EAAE,KAAK,IAAI,IAAI;AAG1E,UAAI,SAASA,MAAM,SAAQ,MAAM,UAAU,OAAO,QAAQ,SAAS,QAAQ,YAAY,SAAS,QAAQ,GAAG,UAAU;AAGrH,cAAQ,OAAO;AAAA,QACb,KAAK;AAAK,kBAAQ,cAAc,QAAQ,cAAc;AAAS;AAAA,QAC/D,KAAK;AAAK,kBAAQ,cAAc,UAAU,QAAQ;AAAa;AAAA,QAC/D,KAAK;AAAK,kBAAQ,QAAQ,MAAM,GAAG,SAAS,QAAQ,UAAU,CAAC,IAAI,cAAc,QAAQ,cAAc,QAAQ,MAAM,MAAM;AAAG;AAAA,QAC9H;AAAS,kBAAQ,UAAU,cAAc,QAAQ;AAAa;AAAA,MAChE;AAEA,aAAO,SAAS,KAAK;AAAA,IACvB;AAEA,IAAAG,QAAO,WAAW,WAAW;AAC3B,aAAO,YAAY;AAAA,IACrB;AAEA,WAAOA;AAAA,EACT;AAEA,WAASC,cAAa,WAAW,OAAO;AACtC,QAAI,IAAI,WAAW,YAAY,gBAAgB,SAAS,GAAG,UAAU,OAAO,KAAK,UAAU,GACvF,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG,KAAK,MAAM,iBAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,GACjE,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,GACnB,SAAS,SAAS,IAAI,IAAI,CAAC;AAC/B,WAAO,SAASC,QAAO;AACrB,aAAO,EAAE,IAAIA,MAAK,IAAI;AAAA,IACxB;AAAA,EACF;AAEA,SAAO;AAAA,IACL,QAAQ;AAAA,IACR,cAAcD;AAAA,EAChB;AACF;;;ADjJA,IAAI;AACG,IAAI;AACJ,IAAI;AAEX,cAAc;AAAA,EACZ,WAAW;AAAA,EACX,UAAU,CAAC,CAAC;AAAA,EACZ,UAAU,CAAC,KAAK,EAAE;AACpB,CAAC;AAEc,SAAR,cAA+B,YAAY;AAChD,WAAS,eAAa,UAAU;AAChC,WAAS,OAAO;AAChB,iBAAe,OAAO;AACtB,SAAO;AACT;;;AYjBA;;;ACAA;;;ACAA;;;ACAA;;;ACAA;;;ACAA;AAAO,IAAIE,SAAQ;AAEnB,IAAOC,sBAAQ;AAAA,EACb,KAAK;AAAA,EACL,OAAOD;AAAA,EACP,OAAO;AAAA,EACP,KAAK;AAAA,EACL,OAAO;AACT;;;ADNe,SAARE,mBAAiB,MAAM;AAC5B,MAAI,SAAS,QAAQ,IAAI,IAAI,OAAO,QAAQ,GAAG;AAC/C,MAAI,KAAK,MAAM,SAAS,KAAK,MAAM,GAAG,CAAC,OAAO,QAAS,QAAO,KAAK,MAAM,IAAI,CAAC;AAC9E,SAAOC,oBAAW,eAAe,MAAM,IAAI,EAAC,OAAOA,oBAAW,MAAM,GAAG,OAAO,KAAI,IAAI;AACxF;;;ADHA,SAASC,gBAAe,MAAM;AAC5B,SAAO,WAAW;AAChB,QAAIC,YAAW,KAAK,eAChB,MAAM,KAAK;AACf,WAAO,QAAQC,UAASD,UAAS,gBAAgB,iBAAiBC,SAC5DD,UAAS,cAAc,IAAI,IAC3BA,UAAS,gBAAgB,KAAK,IAAI;AAAA,EAC1C;AACF;AAEA,SAASE,cAAa,UAAU;AAC9B,SAAO,WAAW;AAChB,WAAO,KAAK,cAAc,gBAAgB,SAAS,OAAO,SAAS,KAAK;AAAA,EAC1E;AACF;AAEe,SAARC,iBAAiB,MAAM;AAC5B,MAAI,WAAWC,mBAAU,IAAI;AAC7B,UAAQ,SAAS,QACXF,gBACAH,iBAAgB,QAAQ;AAChC;;;AGxBA;;;ACAA;;;ACAA;AAAA,SAASM,QAAO;AAAC;AAEF,SAARC,kBAAiB,UAAU;AAChC,SAAO,YAAY,OAAOD,QAAO,WAAW;AAC1C,WAAO,KAAK,cAAc,QAAQ;AAAA,EACpC;AACF;;;ADHe,SAARE,gBAAiB,QAAQ;AAC9B,MAAI,OAAO,WAAW,WAAY,UAASC,kBAAS,MAAM;AAE1D,WAAS,SAAS,KAAK,SAAS,IAAI,OAAO,QAAQ,YAAY,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAC9F,aAAS,QAAQ,OAAO,CAAC,GAAG,IAAI,MAAM,QAAQ,WAAW,UAAU,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,MAAM,SAAS,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACtH,WAAK,OAAO,MAAM,CAAC,OAAO,UAAU,OAAO,KAAK,MAAM,KAAK,UAAU,GAAG,KAAK,IAAI;AAC/E,YAAI,cAAc,KAAM,SAAQ,WAAW,KAAK;AAChD,iBAAS,CAAC,IAAI;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAIC,WAAU,WAAW,KAAK,QAAQ;AAC/C;;;AEhBA;;;ACAA;AAAe,SAAR,cAAiB,GAAG;AACzB,SAAO,OAAO,MAAM,YAAY,YAAY,IACxC,IACA,MAAM,KAAK,CAAC;AAClB;;;ACJA;AAAA,SAASC,SAAQ;AACf,SAAO,CAAC;AACV;AAEe,SAARC,qBAAiB,UAAU;AAChC,SAAO,YAAY,OAAOD,SAAQ,WAAW;AAC3C,WAAO,KAAK,iBAAiB,QAAQ;AAAA,EACvC;AACF;;;AFJA,SAASE,UAAS,QAAQ;AACxB,SAAO,WAAW;AAChB,QAAI,QAAQ,OAAO,MAAM,MAAM,SAAS;AACxC,WAAO,SAAS,OAAO,CAAC,IAAI,cAAM,KAAK;AAAA,EACzC;AACF;AAEe,SAARC,mBAAiB,QAAQ;AAC9B,MAAI,OAAO,WAAW,WAAY,UAASD,UAAS,MAAM;AAAA,MACrD,UAASE,qBAAY,MAAM;AAEhC,WAAS,SAAS,KAAK,SAAS,IAAI,OAAO,QAAQ,YAAY,CAAC,GAAG,UAAU,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAClG,aAAS,QAAQ,OAAO,CAAC,GAAG,IAAI,MAAM,QAAQ,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACrE,UAAI,OAAO,MAAM,CAAC,GAAG;AACnB,kBAAU,KAAK,OAAO,KAAK,MAAM,KAAK,UAAU,GAAG,KAAK,CAAC;AACzD,gBAAQ,KAAK,IAAI;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAIC,WAAU,WAAW,OAAO;AACzC;;;AGzBA;;;ACAA;AAAe,SAARC,iBAAiB,UAAU;AAChC,SAAO,WAAW;AAChB,WAAO,KAAK,QAAQ,QAAQ;AAAA,EAC9B;AACF;AAEO,SAASC,cAAa,UAAU;AACrC,SAAO,SAAS,MAAM;AACpB,WAAO,KAAK,QAAQ,QAAQ;AAAA,EAC9B;AACF;;;ADRA,IAAIC,QAAO,MAAM,UAAU;AAE3B,SAASC,WAAUC,QAAO;AACxB,SAAO,WAAW;AAChB,WAAOF,MAAK,KAAK,KAAK,UAAUE,MAAK;AAAA,EACvC;AACF;AAEA,SAASC,cAAa;AACpB,SAAO,KAAK;AACd;AAEe,SAARC,qBAAiBF,QAAO;AAC7B,SAAO,KAAK,OAAOA,UAAS,OAAOC,cAC7BF,WAAU,OAAOC,WAAU,aAAaA,SAAQG,cAAaH,MAAK,CAAC,CAAC;AAC5E;;;AEjBA;AAEA,IAAII,UAAS,MAAM,UAAU;AAE7B,SAASC,YAAW;AAClB,SAAO,KAAK;AACd;AAEA,SAASC,gBAAeC,QAAO;AAC7B,SAAO,WAAW;AAChB,WAAOH,QAAO,KAAK,KAAK,UAAUG,MAAK;AAAA,EACzC;AACF;AAEe,SAARC,wBAAiBD,QAAO;AAC7B,SAAO,KAAK,UAAUA,UAAS,OAAOF,YAChCC,gBAAe,OAAOC,WAAU,aAAaA,SAAQE,cAAaF,MAAK,CAAC,CAAC;AACjF;;;ACjBA;AAGe,SAARG,gBAAiBC,QAAO;AAC7B,MAAI,OAAOA,WAAU,WAAY,CAAAA,SAAQC,iBAAQD,MAAK;AAEtD,WAAS,SAAS,KAAK,SAAS,IAAI,OAAO,QAAQ,YAAY,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAC9F,aAAS,QAAQ,OAAO,CAAC,GAAG,IAAI,MAAM,QAAQ,WAAW,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACnG,WAAK,OAAO,MAAM,CAAC,MAAMA,OAAM,KAAK,MAAM,KAAK,UAAU,GAAG,KAAK,GAAG;AAClE,iBAAS,KAAK,IAAI;AAAA,MACpB;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAIE,WAAU,WAAW,KAAK,QAAQ;AAC/C;;;ACfA;;;ACAA;;;ACAA;AAAe,SAARC,gBAAiB,QAAQ;AAC9B,SAAO,IAAI,MAAM,OAAO,MAAM;AAChC;;;ADCe,SAARC,iBAAmB;AACxB,SAAO,IAAIC,WAAU,KAAK,UAAU,KAAK,QAAQ,IAAIC,eAAM,GAAG,KAAK,QAAQ;AAC7E;AAEO,SAASC,WAAU,QAAQC,QAAO;AACvC,OAAK,gBAAgB,OAAO;AAC5B,OAAK,eAAe,OAAO;AAC3B,OAAK,QAAQ;AACb,OAAK,UAAU;AACf,OAAK,WAAWA;AAClB;AAEAD,WAAU,YAAY;AAAA,EACpB,aAAaA;AAAA,EACb,aAAa,SAAS,OAAO;AAAE,WAAO,KAAK,QAAQ,aAAa,OAAO,KAAK,KAAK;AAAA,EAAG;AAAA,EACpF,cAAc,SAAS,OAAOE,OAAM;AAAE,WAAO,KAAK,QAAQ,aAAa,OAAOA,KAAI;AAAA,EAAG;AAAA,EACrF,eAAe,SAAS,UAAU;AAAE,WAAO,KAAK,QAAQ,cAAc,QAAQ;AAAA,EAAG;AAAA,EACjF,kBAAkB,SAAS,UAAU;AAAE,WAAO,KAAK,QAAQ,iBAAiB,QAAQ;AAAA,EAAG;AACzF;;;AErBA;AAAe,SAARC,kBAAiB,GAAG;AACzB,SAAO,WAAW;AAChB,WAAO;AAAA,EACT;AACF;;;AHCA,SAASC,WAAU,QAAQ,OAAOC,QAAO,QAAQ,MAAM,MAAM;AAC3D,MAAI,IAAI,GACJ,MACA,cAAc,MAAM,QACpB,aAAa,KAAK;AAKtB,SAAO,IAAI,YAAY,EAAE,GAAG;AAC1B,QAAI,OAAO,MAAM,CAAC,GAAG;AACnB,WAAK,WAAW,KAAK,CAAC;AACtB,aAAO,CAAC,IAAI;AAAA,IACd,OAAO;AACL,MAAAA,OAAM,CAAC,IAAI,IAAIC,WAAU,QAAQ,KAAK,CAAC,CAAC;AAAA,IAC1C;AAAA,EACF;AAGA,SAAO,IAAI,aAAa,EAAE,GAAG;AAC3B,QAAI,OAAO,MAAM,CAAC,GAAG;AACnB,WAAK,CAAC,IAAI;AAAA,IACZ;AAAA,EACF;AACF;AAEA,SAASC,SAAQ,QAAQ,OAAOF,QAAO,QAAQ,MAAM,MAAM,KAAK;AAC9D,MAAI,GACA,MACA,iBAAiB,oBAAI,OACrB,cAAc,MAAM,QACpB,aAAa,KAAK,QAClB,YAAY,IAAI,MAAM,WAAW,GACjC;AAIJ,OAAK,IAAI,GAAG,IAAI,aAAa,EAAE,GAAG;AAChC,QAAI,OAAO,MAAM,CAAC,GAAG;AACnB,gBAAU,CAAC,IAAI,WAAW,IAAI,KAAK,MAAM,KAAK,UAAU,GAAG,KAAK,IAAI;AACpE,UAAI,eAAe,IAAI,QAAQ,GAAG;AAChC,aAAK,CAAC,IAAI;AAAA,MACZ,OAAO;AACL,uBAAe,IAAI,UAAU,IAAI;AAAA,MACnC;AAAA,IACF;AAAA,EACF;AAKA,OAAK,IAAI,GAAG,IAAI,YAAY,EAAE,GAAG;AAC/B,eAAW,IAAI,KAAK,QAAQ,KAAK,CAAC,GAAG,GAAG,IAAI,IAAI;AAChD,QAAI,OAAO,eAAe,IAAI,QAAQ,GAAG;AACvC,aAAO,CAAC,IAAI;AACZ,WAAK,WAAW,KAAK,CAAC;AACtB,qBAAe,OAAO,QAAQ;AAAA,IAChC,OAAO;AACL,MAAAA,OAAM,CAAC,IAAI,IAAIC,WAAU,QAAQ,KAAK,CAAC,CAAC;AAAA,IAC1C;AAAA,EACF;AAGA,OAAK,IAAI,GAAG,IAAI,aAAa,EAAE,GAAG;AAChC,SAAK,OAAO,MAAM,CAAC,MAAO,eAAe,IAAI,UAAU,CAAC,CAAC,MAAM,MAAO;AACpE,WAAK,CAAC,IAAI;AAAA,IACZ;AAAA,EACF;AACF;AAEA,SAASE,OAAM,MAAM;AACnB,SAAO,KAAK;AACd;AAEe,SAARC,cAAiB,OAAO,KAAK;AAClC,MAAI,CAAC,UAAU,OAAQ,QAAO,MAAM,KAAK,MAAMD,MAAK;AAEpD,MAAIE,QAAO,MAAMH,WAAUH,YACvB,UAAU,KAAK,UACf,SAAS,KAAK;AAElB,MAAI,OAAO,UAAU,WAAY,SAAQO,kBAAS,KAAK;AAEvD,WAAS,IAAI,OAAO,QAAQ,SAAS,IAAI,MAAM,CAAC,GAAGN,SAAQ,IAAI,MAAM,CAAC,GAAG,OAAO,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAC/G,QAAI,SAAS,QAAQ,CAAC,GAClB,QAAQ,OAAO,CAAC,GAChB,cAAc,MAAM,QACpB,OAAO,cAAM,MAAM,KAAK,QAAQ,UAAU,OAAO,UAAU,GAAG,OAAO,CAAC,GACtE,aAAa,KAAK,QAClB,aAAaA,OAAM,CAAC,IAAI,IAAI,MAAM,UAAU,GAC5C,cAAc,OAAO,CAAC,IAAI,IAAI,MAAM,UAAU,GAC9C,YAAY,KAAK,CAAC,IAAI,IAAI,MAAM,WAAW;AAE/C,IAAAK,MAAK,QAAQ,OAAO,YAAY,aAAa,WAAW,MAAM,GAAG;AAKjE,aAAS,KAAK,GAAG,KAAK,GAAG,UAAUE,OAAM,KAAK,YAAY,EAAE,IAAI;AAC9D,UAAI,WAAW,WAAW,EAAE,GAAG;AAC7B,YAAI,MAAM,GAAI,MAAK,KAAK;AACxB,eAAO,EAAEA,QAAO,YAAY,EAAE,MAAM,EAAE,KAAK,WAAW;AACtD,iBAAS,QAAQA,SAAQ;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AAEA,WAAS,IAAIC,WAAU,QAAQ,OAAO;AACtC,SAAO,SAASR;AAChB,SAAO,QAAQ;AACf,SAAO;AACT;;;AIpHA;AAGe,SAARS,gBAAmB;AACxB,SAAO,IAAIC,WAAU,KAAK,SAAS,KAAK,QAAQ,IAAIC,eAAM,GAAG,KAAK,QAAQ;AAC5E;;;ACLA;AAAe,SAARC,cAAiB,SAAS,UAAU,QAAQ;AACjD,MAAIC,SAAQ,KAAK,MAAM,GAAG,SAAS,MAAM,OAAO,KAAK,KAAK;AAC1D,EAAAA,SAAQ,OAAO,YAAY,aAAa,QAAQA,MAAK,IAAIA,OAAM,OAAO,UAAU,EAAE;AAClF,MAAI,YAAY,KAAM,UAAS,SAAS,MAAM;AAC9C,MAAI,UAAU,KAAM,MAAK,OAAO;AAAA,MAAQ,QAAO,IAAI;AACnD,SAAOA,UAAS,SAASA,OAAM,MAAM,MAAM,EAAE,MAAM,IAAI;AACzD;;;ACNA;AAEe,SAARC,eAAiBC,YAAW;AACjC,MAAI,EAAEA,sBAAqBC,YAAY,OAAM,IAAI,MAAM,eAAe;AAEtE,WAAS,UAAU,KAAK,SAAS,UAAUD,WAAU,SAAS,KAAK,QAAQ,QAAQ,KAAK,QAAQ,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE,GAAG,SAAS,IAAI,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACvK,aAAS,SAAS,QAAQ,CAAC,GAAG,SAAS,QAAQ,CAAC,GAAG,IAAI,OAAO,QAAQE,SAAQ,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAC/H,UAAI,OAAO,OAAO,CAAC,KAAK,OAAO,CAAC,GAAG;AACjC,QAAAA,OAAM,CAAC,IAAI;AAAA,MACb;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAI,IAAI,EAAE,GAAG;AAClB,WAAO,CAAC,IAAI,QAAQ,CAAC;AAAA,EACvB;AAEA,SAAO,IAAID,WAAU,QAAQ,KAAK,QAAQ;AAC5C;;;AClBA;AAAe,SAARE,iBAAmB;AAExB,WAAS,SAAS,KAAK,SAAS,IAAI,IAAI,IAAI,OAAO,QAAQ,EAAE,IAAI,KAAI;AACnE,aAAS,QAAQ,OAAO,CAAC,GAAG,IAAI,MAAM,SAAS,GAAGC,QAAO,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,KAAI;AAClF,UAAI,OAAO,MAAM,CAAC,GAAG;AACnB,YAAIA,SAAQ,KAAK,wBAAwBA,KAAI,IAAI,EAAG,CAAAA,MAAK,WAAW,aAAa,MAAMA,KAAI;AAC3F,QAAAA,QAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;;;ACZA;AAEe,SAARC,cAAiB,SAAS;AAC/B,MAAI,CAAC,QAAS,WAAUC;AAExB,WAAS,YAAY,GAAG,GAAG;AACzB,WAAO,KAAK,IAAI,QAAQ,EAAE,UAAU,EAAE,QAAQ,IAAI,CAAC,IAAI,CAAC;AAAA,EAC1D;AAEA,WAAS,SAAS,KAAK,SAAS,IAAI,OAAO,QAAQ,aAAa,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAC/F,aAAS,QAAQ,OAAO,CAAC,GAAG,IAAI,MAAM,QAAQ,YAAY,WAAW,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAC/G,UAAI,OAAO,MAAM,CAAC,GAAG;AACnB,kBAAU,CAAC,IAAI;AAAA,MACjB;AAAA,IACF;AACA,cAAU,KAAK,WAAW;AAAA,EAC5B;AAEA,SAAO,IAAIC,WAAU,YAAY,KAAK,QAAQ,EAAE,MAAM;AACxD;AAEA,SAASD,WAAU,GAAG,GAAG;AACvB,SAAO,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI;AAC/C;;;ACvBA;AAAe,SAARE,gBAAmB;AACxB,MAAI,WAAW,UAAU,CAAC;AAC1B,YAAU,CAAC,IAAI;AACf,WAAS,MAAM,MAAM,SAAS;AAC9B,SAAO;AACT;;;ACLA;AAAe,SAARC,iBAAmB;AACxB,SAAO,MAAM,KAAK,IAAI;AACxB;;;ACFA;AAAe,SAARC,gBAAmB;AAExB,WAAS,SAAS,KAAK,SAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAI,GAAG,EAAE,GAAG;AACpE,aAAS,QAAQ,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI,MAAM,QAAQ,IAAI,GAAG,EAAE,GAAG;AAC/D,UAAI,OAAO,MAAM,CAAC;AAClB,UAAI,KAAM,QAAO;AAAA,IACnB;AAAA,EACF;AAEA,SAAO;AACT;;;ACVA;AAAe,SAARC,gBAAmB;AACxB,MAAI,OAAO;AACX,aAAW,QAAQ,KAAM,GAAE;AAC3B,SAAO;AACT;;;ACJA;AAAe,SAARC,iBAAmB;AACxB,SAAO,CAAC,KAAK,KAAK;AACpB;;;ACFA;AAAe,SAARC,cAAiB,UAAU;AAEhC,WAAS,SAAS,KAAK,SAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAI,GAAG,EAAE,GAAG;AACpE,aAAS,QAAQ,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI,MAAM,QAAQ,MAAM,IAAI,GAAG,EAAE,GAAG;AACrE,UAAI,OAAO,MAAM,CAAC,EAAG,UAAS,KAAK,MAAM,KAAK,UAAU,GAAG,KAAK;AAAA,IAClE;AAAA,EACF;AAEA,SAAO;AACT;;;ACTA;AAEA,SAASC,YAAW,MAAM;AACxB,SAAO,WAAW;AAChB,SAAK,gBAAgB,IAAI;AAAA,EAC3B;AACF;AAEA,SAASC,cAAa,UAAU;AAC9B,SAAO,WAAW;AAChB,SAAK,kBAAkB,SAAS,OAAO,SAAS,KAAK;AAAA,EACvD;AACF;AAEA,SAASC,cAAa,MAAM,OAAO;AACjC,SAAO,WAAW;AAChB,SAAK,aAAa,MAAM,KAAK;AAAA,EAC/B;AACF;AAEA,SAASC,gBAAe,UAAU,OAAO;AACvC,SAAO,WAAW;AAChB,SAAK,eAAe,SAAS,OAAO,SAAS,OAAO,KAAK;AAAA,EAC3D;AACF;AAEA,SAASC,cAAa,MAAM,OAAO;AACjC,SAAO,WAAW;AAChB,QAAI,IAAI,MAAM,MAAM,MAAM,SAAS;AACnC,QAAI,KAAK,KAAM,MAAK,gBAAgB,IAAI;AAAA,QACnC,MAAK,aAAa,MAAM,CAAC;AAAA,EAChC;AACF;AAEA,SAASC,gBAAe,UAAU,OAAO;AACvC,SAAO,WAAW;AAChB,QAAI,IAAI,MAAM,MAAM,MAAM,SAAS;AACnC,QAAI,KAAK,KAAM,MAAK,kBAAkB,SAAS,OAAO,SAAS,KAAK;AAAA,QAC/D,MAAK,eAAe,SAAS,OAAO,SAAS,OAAO,CAAC;AAAA,EAC5D;AACF;AAEe,SAARC,cAAiB,MAAM,OAAO;AACnC,MAAI,WAAWC,mBAAU,IAAI;AAE7B,MAAI,UAAU,SAAS,GAAG;AACxB,QAAI,OAAO,KAAK,KAAK;AACrB,WAAO,SAAS,QACV,KAAK,eAAe,SAAS,OAAO,SAAS,KAAK,IAClD,KAAK,aAAa,QAAQ;AAAA,EAClC;AAEA,SAAO,KAAK,MAAM,SAAS,OACpB,SAAS,QAAQN,gBAAeD,cAAe,OAAO,UAAU,aAChE,SAAS,QAAQK,kBAAiBD,gBAClC,SAAS,QAAQD,kBAAiBD,eAAgB,UAAU,KAAK,CAAC;AAC3E;;;ACxDA;;;ACAA;AAAe,SAARM,gBAAiB,MAAM;AAC5B,SAAQ,KAAK,iBAAiB,KAAK,cAAc,eACzC,KAAK,YAAY,QAClB,KAAK;AACd;;;ADFA,SAASC,aAAY,MAAM;AACzB,SAAO,WAAW;AAChB,SAAK,MAAM,eAAe,IAAI;AAAA,EAChC;AACF;AAEA,SAASC,eAAc,MAAM,OAAO,UAAU;AAC5C,SAAO,WAAW;AAChB,SAAK,MAAM,YAAY,MAAM,OAAO,QAAQ;AAAA,EAC9C;AACF;AAEA,SAASC,eAAc,MAAM,OAAO,UAAU;AAC5C,SAAO,WAAW;AAChB,QAAI,IAAI,MAAM,MAAM,MAAM,SAAS;AACnC,QAAI,KAAK,KAAM,MAAK,MAAM,eAAe,IAAI;AAAA,QACxC,MAAK,MAAM,YAAY,MAAM,GAAG,QAAQ;AAAA,EAC/C;AACF;AAEe,SAARC,eAAiB,MAAM,OAAO,UAAU;AAC7C,SAAO,UAAU,SAAS,IACpB,KAAK,MAAM,SAAS,OACdH,eAAc,OAAO,UAAU,aAC/BE,iBACAD,gBAAe,MAAM,OAAO,YAAY,OAAO,KAAK,QAAQ,CAAC,IACnEG,YAAW,KAAK,KAAK,GAAG,IAAI;AACpC;AAEO,SAASA,YAAW,MAAM,MAAM;AACrC,SAAO,KAAK,MAAM,iBAAiB,IAAI,KAChCC,gBAAY,IAAI,EAAE,iBAAiB,MAAM,IAAI,EAAE,iBAAiB,IAAI;AAC7E;;;AElCA;AAAA,SAASC,gBAAe,MAAM;AAC5B,SAAO,WAAW;AAChB,WAAO,KAAK,IAAI;AAAA,EAClB;AACF;AAEA,SAASC,kBAAiB,MAAM,OAAO;AACrC,SAAO,WAAW;AAChB,SAAK,IAAI,IAAI;AAAA,EACf;AACF;AAEA,SAASC,kBAAiB,MAAM,OAAO;AACrC,SAAO,WAAW;AAChB,QAAI,IAAI,MAAM,MAAM,MAAM,SAAS;AACnC,QAAI,KAAK,KAAM,QAAO,KAAK,IAAI;AAAA,QAC1B,MAAK,IAAI,IAAI;AAAA,EACpB;AACF;AAEe,SAARC,kBAAiB,MAAM,OAAO;AACnC,SAAO,UAAU,SAAS,IACpB,KAAK,MAAM,SAAS,OAChBH,kBAAiB,OAAO,UAAU,aAClCE,oBACAD,mBAAkB,MAAM,KAAK,CAAC,IAClC,KAAK,KAAK,EAAE,IAAI;AACxB;;;AC3BA;AAAA,SAASG,YAAW,QAAQ;AAC1B,SAAO,OAAO,KAAK,EAAE,MAAM,OAAO;AACpC;AAEA,SAASC,WAAU,MAAM;AACvB,SAAO,KAAK,aAAa,IAAIC,WAAU,IAAI;AAC7C;AAEA,SAASA,WAAU,MAAM;AACvB,OAAK,QAAQ;AACb,OAAK,SAASF,YAAW,KAAK,aAAa,OAAO,KAAK,EAAE;AAC3D;AAEAE,WAAU,YAAY;AAAA,EACpB,KAAK,SAAS,MAAM;AAClB,QAAI,IAAI,KAAK,OAAO,QAAQ,IAAI;AAChC,QAAI,IAAI,GAAG;AACT,WAAK,OAAO,KAAK,IAAI;AACrB,WAAK,MAAM,aAAa,SAAS,KAAK,OAAO,KAAK,GAAG,CAAC;AAAA,IACxD;AAAA,EACF;AAAA,EACA,QAAQ,SAAS,MAAM;AACrB,QAAI,IAAI,KAAK,OAAO,QAAQ,IAAI;AAChC,QAAI,KAAK,GAAG;AACV,WAAK,OAAO,OAAO,GAAG,CAAC;AACvB,WAAK,MAAM,aAAa,SAAS,KAAK,OAAO,KAAK,GAAG,CAAC;AAAA,IACxD;AAAA,EACF;AAAA,EACA,UAAU,SAAS,MAAM;AACvB,WAAO,KAAK,OAAO,QAAQ,IAAI,KAAK;AAAA,EACtC;AACF;AAEA,SAASC,YAAW,MAAM,OAAO;AAC/B,MAAI,OAAOF,WAAU,IAAI,GAAG,IAAI,IAAI,IAAI,MAAM;AAC9C,SAAO,EAAE,IAAI,EAAG,MAAK,IAAI,MAAM,CAAC,CAAC;AACnC;AAEA,SAASG,eAAc,MAAM,OAAO;AAClC,MAAI,OAAOH,WAAU,IAAI,GAAG,IAAI,IAAI,IAAI,MAAM;AAC9C,SAAO,EAAE,IAAI,EAAG,MAAK,OAAO,MAAM,CAAC,CAAC;AACtC;AAEA,SAASI,aAAY,OAAO;AAC1B,SAAO,WAAW;AAChB,IAAAF,YAAW,MAAM,KAAK;AAAA,EACxB;AACF;AAEA,SAASG,cAAa,OAAO;AAC3B,SAAO,WAAW;AAChB,IAAAF,eAAc,MAAM,KAAK;AAAA,EAC3B;AACF;AAEA,SAASG,iBAAgB,OAAO,OAAO;AACrC,SAAO,WAAW;AAChB,KAAC,MAAM,MAAM,MAAM,SAAS,IAAIJ,cAAaC,gBAAe,MAAM,KAAK;AAAA,EACzE;AACF;AAEe,SAARI,iBAAiB,MAAM,OAAO;AACnC,MAAI,QAAQR,YAAW,OAAO,EAAE;AAEhC,MAAI,UAAU,SAAS,GAAG;AACxB,QAAI,OAAOC,WAAU,KAAK,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,MAAM;AACrD,WAAO,EAAE,IAAI,EAAG,KAAI,CAAC,KAAK,SAAS,MAAM,CAAC,CAAC,EAAG,QAAO;AACrD,WAAO;AAAA,EACT;AAEA,SAAO,KAAK,MAAM,OAAO,UAAU,aAC7BM,mBAAkB,QAClBF,eACAC,eAAc,OAAO,KAAK,CAAC;AACnC;;;AC1EA;AAAA,SAASG,cAAa;AACpB,OAAK,cAAc;AACrB;AAEA,SAASC,cAAa,OAAO;AAC3B,SAAO,WAAW;AAChB,SAAK,cAAc;AAAA,EACrB;AACF;AAEA,SAASC,cAAa,OAAO;AAC3B,SAAO,WAAW;AAChB,QAAI,IAAI,MAAM,MAAM,MAAM,SAAS;AACnC,SAAK,cAAc,KAAK,OAAO,KAAK;AAAA,EACtC;AACF;AAEe,SAARC,cAAiB,OAAO;AAC7B,SAAO,UAAU,SACX,KAAK,KAAK,SAAS,OACfH,eAAc,OAAO,UAAU,aAC/BE,gBACAD,eAAc,KAAK,CAAC,IACxB,KAAK,KAAK,EAAE;AACpB;;;ACxBA;AAAA,SAASG,cAAa;AACpB,OAAK,YAAY;AACnB;AAEA,SAASC,cAAa,OAAO;AAC3B,SAAO,WAAW;AAChB,SAAK,YAAY;AAAA,EACnB;AACF;AAEA,SAASC,cAAa,OAAO;AAC3B,SAAO,WAAW;AAChB,QAAI,IAAI,MAAM,MAAM,MAAM,SAAS;AACnC,SAAK,YAAY,KAAK,OAAO,KAAK;AAAA,EACpC;AACF;AAEe,SAARC,cAAiB,OAAO;AAC7B,SAAO,UAAU,SACX,KAAK,KAAK,SAAS,OACfH,eAAc,OAAO,UAAU,aAC/BE,gBACAD,eAAc,KAAK,CAAC,IACxB,KAAK,KAAK,EAAE;AACpB;;;ACxBA;AAAA,SAASG,SAAQ;AACf,MAAI,KAAK,YAAa,MAAK,WAAW,YAAY,IAAI;AACxD;AAEe,SAARC,iBAAmB;AACxB,SAAO,KAAK,KAAKD,MAAK;AACxB;;;ACNA;AAAA,SAASE,SAAQ;AACf,MAAI,KAAK,gBAAiB,MAAK,WAAW,aAAa,MAAM,KAAK,WAAW,UAAU;AACzF;AAEe,SAARC,iBAAmB;AACxB,SAAO,KAAK,KAAKD,MAAK;AACxB;;;ACNA;AAEe,SAARE,gBAAiB,MAAM;AAC5B,MAAIC,UAAS,OAAO,SAAS,aAAa,OAAOC,iBAAQ,IAAI;AAC7D,SAAO,KAAK,OAAO,WAAW;AAC5B,WAAO,KAAK,YAAYD,QAAO,MAAM,MAAM,SAAS,CAAC;AAAA,EACvD,CAAC;AACH;;;ACPA;AAGA,SAASE,gBAAe;AACtB,SAAO;AACT;AAEe,SAARC,gBAAiB,MAAM,QAAQ;AACpC,MAAIC,UAAS,OAAO,SAAS,aAAa,OAAOC,iBAAQ,IAAI,GACzD,SAAS,UAAU,OAAOH,gBAAe,OAAO,WAAW,aAAa,SAASI,kBAAS,MAAM;AACpG,SAAO,KAAK,OAAO,WAAW;AAC5B,WAAO,KAAK,aAAaF,QAAO,MAAM,MAAM,SAAS,GAAG,OAAO,MAAM,MAAM,SAAS,KAAK,IAAI;AAAA,EAC/F,CAAC;AACH;;;ACbA;AAAA,SAASG,UAAS;AAChB,MAAI,SAAS,KAAK;AAClB,MAAI,OAAQ,QAAO,YAAY,IAAI;AACrC;AAEe,SAARC,kBAAmB;AACxB,SAAO,KAAK,KAAKD,OAAM;AACzB;;;ACPA;AAAA,SAASE,0BAAyB;AAChC,MAAIC,SAAQ,KAAK,UAAU,KAAK,GAAG,SAAS,KAAK;AACjD,SAAO,SAAS,OAAO,aAAaA,QAAO,KAAK,WAAW,IAAIA;AACjE;AAEA,SAASC,uBAAsB;AAC7B,MAAID,SAAQ,KAAK,UAAU,IAAI,GAAG,SAAS,KAAK;AAChD,SAAO,SAAS,OAAO,aAAaA,QAAO,KAAK,WAAW,IAAIA;AACjE;AAEe,SAARE,eAAiB,MAAM;AAC5B,SAAO,KAAK,OAAO,OAAOD,uBAAsBF,uBAAsB;AACxE;;;ACZA;AAAe,SAARI,eAAiB,OAAO;AAC7B,SAAO,UAAU,SACX,KAAK,SAAS,YAAY,KAAK,IAC/B,KAAK,KAAK,EAAE;AACpB;;;ACJA;AAAA,SAASC,iBAAgB,UAAU;AACjC,SAAO,SAAS,OAAO;AACrB,aAAS,KAAK,MAAM,OAAO,KAAK,QAAQ;AAAA,EAC1C;AACF;AAEA,SAASC,gBAAe,WAAW;AACjC,SAAO,UAAU,KAAK,EAAE,MAAM,OAAO,EAAE,IAAI,SAAS,GAAG;AACrD,QAAI,OAAO,IAAI,IAAI,EAAE,QAAQ,GAAG;AAChC,QAAI,KAAK,EAAG,QAAO,EAAE,MAAM,IAAI,CAAC,GAAG,IAAI,EAAE,MAAM,GAAG,CAAC;AACnD,WAAO,EAAC,MAAM,GAAG,KAAU;AAAA,EAC7B,CAAC;AACH;AAEA,SAASC,UAAS,UAAU;AAC1B,SAAO,WAAW;AAChB,QAAIC,MAAK,KAAK;AACd,QAAI,CAACA,IAAI;AACT,aAAS,IAAI,GAAG,IAAI,IAAI,IAAIA,IAAG,QAAQ,GAAG,IAAI,GAAG,EAAE,GAAG;AACpD,UAAI,IAAIA,IAAG,CAAC,IAAI,CAAC,SAAS,QAAQ,EAAE,SAAS,SAAS,SAAS,EAAE,SAAS,SAAS,MAAM;AACvF,aAAK,oBAAoB,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO;AAAA,MACxD,OAAO;AACL,QAAAA,IAAG,EAAE,CAAC,IAAI;AAAA,MACZ;AAAA,IACF;AACA,QAAI,EAAE,EAAG,CAAAA,IAAG,SAAS;AAAA,QAChB,QAAO,KAAK;AAAA,EACnB;AACF;AAEA,SAASC,OAAM,UAAU,OAAO,SAAS;AACvC,SAAO,WAAW;AAChB,QAAID,MAAK,KAAK,MAAM,GAAG,WAAWH,iBAAgB,KAAK;AACvD,QAAIG,IAAI,UAAS,IAAI,GAAG,IAAIA,IAAG,QAAQ,IAAI,GAAG,EAAE,GAAG;AACjD,WAAK,IAAIA,IAAG,CAAC,GAAG,SAAS,SAAS,QAAQ,EAAE,SAAS,SAAS,MAAM;AAClE,aAAK,oBAAoB,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO;AACtD,aAAK,iBAAiB,EAAE,MAAM,EAAE,WAAW,UAAU,EAAE,UAAU,OAAO;AACxE,UAAE,QAAQ;AACV;AAAA,MACF;AAAA,IACF;AACA,SAAK,iBAAiB,SAAS,MAAM,UAAU,OAAO;AACtD,QAAI,EAAC,MAAM,SAAS,MAAM,MAAM,SAAS,MAAM,OAAc,UAAoB,QAAgB;AACjG,QAAI,CAACA,IAAI,MAAK,OAAO,CAAC,CAAC;AAAA,QAClB,CAAAA,IAAG,KAAK,CAAC;AAAA,EAChB;AACF;AAEe,SAARE,YAAiB,UAAU,OAAO,SAAS;AAChD,MAAI,YAAYJ,gBAAe,WAAW,EAAE,GAAG,GAAG,IAAI,UAAU,QAAQ;AAExE,MAAI,UAAU,SAAS,GAAG;AACxB,QAAIE,MAAK,KAAK,KAAK,EAAE;AACrB,QAAIA,IAAI,UAAS,IAAI,GAAG,IAAIA,IAAG,QAAQ,GAAG,IAAI,GAAG,EAAE,GAAG;AACpD,WAAK,IAAI,GAAG,IAAIA,IAAG,CAAC,GAAG,IAAI,GAAG,EAAE,GAAG;AACjC,aAAK,IAAI,UAAU,CAAC,GAAG,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM;AAC3D,iBAAO,EAAE;AAAA,QACX;AAAA,MACF;AAAA,IACF;AACA;AAAA,EACF;AAEA,EAAAA,MAAK,QAAQC,SAAQF;AACrB,OAAK,IAAI,GAAG,IAAI,GAAG,EAAE,EAAG,MAAK,KAAKC,IAAG,UAAU,CAAC,GAAG,OAAO,OAAO,CAAC;AAClE,SAAO;AACT;;;AClEA;AAEA,SAASG,eAAc,MAAMC,OAAM,QAAQ;AACzC,MAAIC,UAASC,gBAAY,IAAI,GACzB,QAAQD,QAAO;AAEnB,MAAI,OAAO,UAAU,YAAY;AAC/B,YAAQ,IAAI,MAAMD,OAAM,MAAM;AAAA,EAChC,OAAO;AACL,YAAQC,QAAO,SAAS,YAAY,OAAO;AAC3C,QAAI,OAAQ,OAAM,UAAUD,OAAM,OAAO,SAAS,OAAO,UAAU,GAAG,MAAM,SAAS,OAAO;AAAA,QACvF,OAAM,UAAUA,OAAM,OAAO,KAAK;AAAA,EACzC;AAEA,OAAK,cAAc,KAAK;AAC1B;AAEA,SAASG,kBAAiBH,OAAM,QAAQ;AACtC,SAAO,WAAW;AAChB,WAAOD,eAAc,MAAMC,OAAM,MAAM;AAAA,EACzC;AACF;AAEA,SAASI,kBAAiBJ,OAAM,QAAQ;AACtC,SAAO,WAAW;AAChB,WAAOD,eAAc,MAAMC,OAAM,OAAO,MAAM,MAAM,SAAS,CAAC;AAAA,EAChE;AACF;AAEe,SAARK,kBAAiBL,OAAM,QAAQ;AACpC,SAAO,KAAK,MAAM,OAAO,WAAW,aAC9BI,oBACAD,mBAAkBH,OAAM,MAAM,CAAC;AACvC;;;ACjCA;AAAe,UAARM,oBAAoB;AACzB,WAAS,SAAS,KAAK,SAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAI,GAAG,EAAE,GAAG;AACpE,aAAS,QAAQ,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI,MAAM,QAAQ,MAAM,IAAI,GAAG,EAAE,GAAG;AACrE,UAAI,OAAO,MAAM,CAAC,EAAG,OAAM;AAAA,IAC7B;AAAA,EACF;AACF;;;AzC6BO,IAAIC,QAAO,CAAC,IAAI;AAEhB,SAASC,WAAU,QAAQ,SAAS;AACzC,OAAK,UAAU;AACf,OAAK,WAAW;AAClB;AAEA,SAASC,aAAY;AACnB,SAAO,IAAID,WAAU,CAAC,CAAC,SAAS,eAAe,CAAC,GAAGD,KAAI;AACzD;AAEA,SAASG,uBAAsB;AAC7B,SAAO;AACT;AAEAF,WAAU,YAAYC,WAAU,YAAY;AAAA,EAC1C,aAAaD;AAAA,EACb,QAAQG;AAAA,EACR,WAAWC;AAAA,EACX,aAAaC;AAAA,EACb,gBAAgBC;AAAA,EAChB,QAAQC;AAAA,EACR,MAAMC;AAAA,EACN,OAAOC;AAAA,EACP,MAAMC;AAAA,EACN,MAAMC;AAAA,EACN,OAAOC;AAAA,EACP,WAAWV;AAAA,EACX,OAAOW;AAAA,EACP,MAAMC;AAAA,EACN,MAAMC;AAAA,EACN,OAAOC;AAAA,EACP,MAAMC;AAAA,EACN,MAAMC;AAAA,EACN,OAAOC;AAAA,EACP,MAAMC;AAAA,EACN,MAAMC;AAAA,EACN,OAAOC;AAAA,EACP,UAAUC;AAAA,EACV,SAASC;AAAA,EACT,MAAMC;AAAA,EACN,MAAMC;AAAA,EACN,OAAOC;AAAA,EACP,OAAOC;AAAA,EACP,QAAQC;AAAA,EACR,QAAQC;AAAA,EACR,QAAQC;AAAA,EACR,OAAOC;AAAA,EACP,OAAOC;AAAA,EACP,IAAIC;AAAA,EACJ,UAAUC;AAAA,EACV,CAAC,OAAO,QAAQ,GAAGC;AACrB;AAEA,IAAOC,qBAAQpC;;;A0CzFf;;;ACAA;;;ACAA;;;ACAA;;;ACAA;;;ACAA;;;ACAA;AAAA,IAAIqC,QAAO,EAAC,OAAO,MAAM;AAAC,EAAC;AAE3B,SAASC,YAAW;AAClB,WAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,EAAE,GAAG;AAC3D,QAAI,EAAE,IAAI,UAAU,CAAC,IAAI,OAAQ,KAAK,KAAM,QAAQ,KAAK,CAAC,EAAG,OAAM,IAAI,MAAM,mBAAmB,CAAC;AACjG,MAAE,CAAC,IAAI,CAAC;AAAA,EACV;AACA,SAAO,IAAIC,UAAS,CAAC;AACvB;AAEA,SAASA,UAAS,GAAG;AACnB,OAAK,IAAI;AACX;AAEA,SAASC,gBAAe,WAAW,OAAO;AACxC,SAAO,UAAU,KAAK,EAAE,MAAM,OAAO,EAAE,IAAI,SAAS,GAAG;AACrD,QAAI,OAAO,IAAI,IAAI,EAAE,QAAQ,GAAG;AAChC,QAAI,KAAK,EAAG,QAAO,EAAE,MAAM,IAAI,CAAC,GAAG,IAAI,EAAE,MAAM,GAAG,CAAC;AACnD,QAAI,KAAK,CAAC,MAAM,eAAe,CAAC,EAAG,OAAM,IAAI,MAAM,mBAAmB,CAAC;AACvE,WAAO,EAAC,MAAM,GAAG,KAAU;AAAA,EAC7B,CAAC;AACH;AAEAD,UAAS,YAAYD,UAAS,YAAY;AAAA,EACxC,aAAaC;AAAA,EACb,IAAI,SAAS,UAAU,UAAU;AAC/B,QAAI,IAAI,KAAK,GACT,IAAIC,gBAAe,WAAW,IAAI,CAAC,GACnC,GACA,IAAI,IACJ,IAAI,EAAE;AAGV,QAAI,UAAU,SAAS,GAAG;AACxB,aAAO,EAAE,IAAI,EAAG,MAAK,KAAK,WAAW,EAAE,CAAC,GAAG,UAAU,IAAIC,KAAI,EAAE,CAAC,GAAG,SAAS,IAAI,GAAI,QAAO;AAC3F;AAAA,IACF;AAIA,QAAI,YAAY,QAAQ,OAAO,aAAa,WAAY,OAAM,IAAI,MAAM,uBAAuB,QAAQ;AACvG,WAAO,EAAE,IAAI,GAAG;AACd,UAAI,KAAK,WAAW,EAAE,CAAC,GAAG,KAAM,GAAE,CAAC,IAAIC,KAAI,EAAE,CAAC,GAAG,SAAS,MAAM,QAAQ;AAAA,eAC/D,YAAY,KAAM,MAAK,KAAK,EAAG,GAAE,CAAC,IAAIA,KAAI,EAAE,CAAC,GAAG,SAAS,MAAM,IAAI;AAAA,IAC9E;AAEA,WAAO;AAAA,EACT;AAAA,EACA,MAAM,WAAW;AACf,QAAI,OAAO,CAAC,GAAG,IAAI,KAAK;AACxB,aAAS,KAAK,EAAG,MAAK,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM;AACtC,WAAO,IAAIH,UAAS,IAAI;AAAA,EAC1B;AAAA,EACA,MAAM,SAASI,OAAM,MAAM;AACzB,SAAK,IAAI,UAAU,SAAS,KAAK,EAAG,UAAS,OAAO,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,EAAG,MAAK,CAAC,IAAI,UAAU,IAAI,CAAC;AACpH,QAAI,CAAC,KAAK,EAAE,eAAeA,KAAI,EAAG,OAAM,IAAI,MAAM,mBAAmBA,KAAI;AACzE,SAAK,IAAI,KAAK,EAAEA,KAAI,GAAG,IAAI,GAAG,IAAI,EAAE,QAAQ,IAAI,GAAG,EAAE,EAAG,GAAE,CAAC,EAAE,MAAM,MAAM,MAAM,IAAI;AAAA,EACrF;AAAA,EACA,OAAO,SAASA,OAAM,MAAM,MAAM;AAChC,QAAI,CAAC,KAAK,EAAE,eAAeA,KAAI,EAAG,OAAM,IAAI,MAAM,mBAAmBA,KAAI;AACzE,aAAS,IAAI,KAAK,EAAEA,KAAI,GAAG,IAAI,GAAG,IAAI,EAAE,QAAQ,IAAI,GAAG,EAAE,EAAG,GAAE,CAAC,EAAE,MAAM,MAAM,MAAM,IAAI;AAAA,EACzF;AACF;AAEA,SAASF,KAAIE,OAAM,MAAM;AACvB,WAAS,IAAI,GAAG,IAAIA,MAAK,QAAQ,GAAG,IAAI,GAAG,EAAE,GAAG;AAC9C,SAAK,IAAIA,MAAK,CAAC,GAAG,SAAS,MAAM;AAC/B,aAAO,EAAE;AAAA,IACX;AAAA,EACF;AACF;AAEA,SAASD,KAAIC,OAAM,MAAM,UAAU;AACjC,WAAS,IAAI,GAAG,IAAIA,MAAK,QAAQ,IAAI,GAAG,EAAE,GAAG;AAC3C,QAAIA,MAAK,CAAC,EAAE,SAAS,MAAM;AACzB,MAAAA,MAAK,CAAC,IAAIN,OAAMM,QAAOA,MAAK,MAAM,GAAG,CAAC,EAAE,OAAOA,MAAK,MAAM,IAAI,CAAC,CAAC;AAChE;AAAA,IACF;AAAA,EACF;AACA,MAAI,YAAY,KAAM,CAAAA,MAAK,KAAK,EAAC,MAAY,OAAO,SAAQ,CAAC;AAC7D,SAAOA;AACT;AAEA,IAAOC,oBAAQN;;;ACnFf;;;ACAA;AAAA,IAAIO,SAAQ;AAAZ,IACIC,WAAU;AADd,IAEIC,YAAW;AAFf,IAGIC,aAAY;AAHhB,IAIIC;AAJJ,IAKIC;AALJ,IAMIC,aAAY;AANhB,IAOIC,YAAW;AAPf,IAQIC,aAAY;AARhB,IASIC,SAAQ,OAAO,gBAAgB,YAAY,YAAY,MAAM,cAAc;AAT/E,IAUIC,YAAW,OAAO,WAAW,YAAY,OAAO,wBAAwB,OAAO,sBAAsB,KAAK,MAAM,IAAI,SAAS,GAAG;AAAE,aAAW,GAAG,EAAE;AAAG;AAElJ,SAASC,OAAM;AACpB,SAAOJ,cAAaG,UAASE,SAAQ,GAAGL,YAAWE,OAAM,IAAI,IAAID;AACnE;AAEA,SAASI,YAAW;AAClB,EAAAL,YAAW;AACb;AAEO,SAASM,SAAQ;AACtB,OAAK,QACL,KAAK,QACL,KAAK,QAAQ;AACf;AAEAA,OAAM,YAAYC,OAAM,YAAY;AAAA,EAClC,aAAaD;AAAA,EACb,SAAS,SAAS,UAAU,OAAOE,OAAM;AACvC,QAAI,OAAO,aAAa,WAAY,OAAM,IAAI,UAAU,4BAA4B;AACpF,IAAAA,SAAQA,SAAQ,OAAOJ,KAAI,IAAI,CAACI,UAAS,SAAS,OAAO,IAAI,CAAC;AAC9D,QAAI,CAAC,KAAK,SAASV,cAAa,MAAM;AACpC,UAAIA,UAAU,CAAAA,UAAS,QAAQ;AAAA,UAC1B,CAAAD,YAAW;AAChB,MAAAC,YAAW;AAAA,IACb;AACA,SAAK,QAAQ;AACb,SAAK,QAAQU;AACb,IAAAC,OAAM;AAAA,EACR;AAAA,EACA,MAAM,WAAW;AACf,QAAI,KAAK,OAAO;AACd,WAAK,QAAQ;AACb,WAAK,QAAQ;AACb,MAAAA,OAAM;AAAA,IACR;AAAA,EACF;AACF;AAEO,SAASF,OAAM,UAAU,OAAOC,OAAM;AAC3C,MAAI,IAAI,IAAIF;AACZ,IAAE,QAAQ,UAAU,OAAOE,KAAI;AAC/B,SAAO;AACT;AAEO,SAASE,cAAa;AAC3B,EAAAN,KAAI;AACJ,IAAEX;AACF,MAAI,IAAII,WAAU;AAClB,SAAO,GAAG;AACR,SAAK,IAAIG,YAAW,EAAE,UAAU,EAAG,GAAE,MAAM,KAAK,MAAM,CAAC;AACvD,QAAI,EAAE;AAAA,EACR;AACA,IAAEP;AACJ;AAEA,SAASkB,QAAO;AACd,EAAAX,aAAYD,aAAYG,OAAM,IAAI,KAAKD;AACvC,EAAAR,SAAQC,WAAU;AAClB,MAAI;AACF,IAAAgB,YAAW;AAAA,EACb,UAAE;AACA,IAAAjB,SAAQ;AACR,IAAAmB,KAAI;AACJ,IAAAZ,YAAW;AAAA,EACb;AACF;AAEA,SAASa,QAAO;AACd,MAAIT,OAAMF,OAAM,IAAI,GAAG,QAAQE,OAAML;AACrC,MAAI,QAAQH,WAAW,CAAAK,cAAa,OAAOF,aAAYK;AACzD;AAEA,SAASQ,OAAM;AACb,MAAI,IAAI,KAAKf,WAAU,IAAIW,QAAO;AAClC,SAAO,IAAI;AACT,QAAI,GAAG,OAAO;AACZ,UAAIA,QAAO,GAAG,MAAO,CAAAA,QAAO,GAAG;AAC/B,WAAK,IAAI,KAAK,GAAG;AAAA,IACnB,OAAO;AACL,WAAK,GAAG,OAAO,GAAG,QAAQ;AAC1B,WAAK,KAAK,GAAG,QAAQ,KAAKX,YAAW;AAAA,IACvC;AAAA,EACF;AACA,EAAAC,YAAW;AACX,EAAAW,OAAMD,KAAI;AACZ;AAEA,SAASC,OAAMD,OAAM;AACnB,MAAIf,OAAO;AACX,MAAIC,SAAS,CAAAA,WAAU,aAAaA,QAAO;AAC3C,MAAI,QAAQc,QAAOR;AACnB,MAAI,QAAQ,IAAI;AACd,QAAIQ,QAAO,SAAU,CAAAd,WAAU,WAAWiB,OAAMH,QAAON,OAAM,IAAI,IAAID,UAAS;AAC9E,QAAIN,UAAU,CAAAA,YAAW,cAAcA,SAAQ;AAAA,EACjD,OAAO;AACL,QAAI,CAACA,UAAU,CAAAI,aAAYG,OAAM,IAAI,GAAGP,YAAW,YAAYkB,OAAMjB,UAAS;AAC9E,IAAAH,SAAQ,GAAGU,UAASQ,KAAI;AAAA,EAC1B;AACF;;;AC7GA;AAEe,SAARG,iBAAiB,UAAU,OAAOC,OAAM;AAC7C,MAAI,IAAI,IAAIC;AACZ,UAAQ,SAAS,OAAO,IAAI,CAAC;AAC7B,IAAE,QAAQ,aAAW;AACnB,MAAE,KAAK;AACP,aAAS,UAAU,KAAK;AAAA,EAC1B,GAAG,OAAOD,KAAI;AACd,SAAO;AACT;;;ALPA,IAAIE,WAAUC,kBAAS,SAAS,OAAO,UAAU,WAAW;AAC5D,IAAIC,cAAa,CAAC;AAEX,IAAIC,WAAU;AACd,IAAIC,aAAY;AAChB,IAAIC,YAAW;AACf,IAAIC,WAAU;AACd,IAAIC,WAAU;AACd,IAAIC,UAAS;AACb,IAAIC,SAAQ;AAEJ,SAARC,kBAAiB,MAAM,MAAMC,KAAIC,QAAO,OAAO,QAAQ;AAC5D,MAAI,YAAY,KAAK;AACrB,MAAI,CAAC,UAAW,MAAK,eAAe,CAAC;AAAA,WAC5BD,OAAM,UAAW;AAC1B,EAAAE,QAAO,MAAMF,KAAI;AAAA,IACf;AAAA,IACA,OAAOC;AAAA;AAAA,IACP;AAAA;AAAA,IACA,IAAIZ;AAAA,IACJ,OAAOE;AAAA,IACP,MAAM,OAAO;AAAA,IACb,OAAO,OAAO;AAAA,IACd,UAAU,OAAO;AAAA,IACjB,MAAM,OAAO;AAAA,IACb,OAAO;AAAA,IACP,OAAOC;AAAA,EACT,CAAC;AACH;AAEO,SAASW,MAAK,MAAMH,KAAI;AAC7B,MAAI,WAAWI,KAAI,MAAMJ,GAAE;AAC3B,MAAI,SAAS,QAAQR,SAAS,OAAM,IAAI,MAAM,6BAA6B;AAC3E,SAAO;AACT;AAEO,SAASa,KAAI,MAAML,KAAI;AAC5B,MAAI,WAAWI,KAAI,MAAMJ,GAAE;AAC3B,MAAI,SAAS,QAAQL,SAAS,OAAM,IAAI,MAAM,2BAA2B;AACzE,SAAO;AACT;AAEO,SAASS,KAAI,MAAMJ,KAAI;AAC5B,MAAI,WAAW,KAAK;AACpB,MAAI,CAAC,YAAY,EAAE,WAAW,SAASA,GAAE,GAAI,OAAM,IAAI,MAAM,sBAAsB;AACnF,SAAO;AACT;AAEA,SAASE,QAAO,MAAMF,KAAIM,OAAM;AAC9B,MAAI,YAAY,KAAK,cACjB;AAIJ,YAAUN,GAAE,IAAIM;AAChB,EAAAA,MAAK,QAAQC,OAAM,UAAU,GAAGD,MAAK,IAAI;AAEzC,WAAS,SAAS,SAAS;AACzB,IAAAA,MAAK,QAAQb;AACb,IAAAa,MAAK,MAAM,QAAQE,QAAOF,MAAK,OAAOA,MAAK,IAAI;AAG/C,QAAIA,MAAK,SAAS,QAAS,CAAAE,OAAM,UAAUF,MAAK,KAAK;AAAA,EACvD;AAEA,WAASE,OAAM,SAAS;AACtB,QAAI,GAAG,GAAG,GAAG;AAGb,QAAIF,MAAK,UAAUb,WAAW,QAAO,KAAK;AAE1C,SAAK,KAAK,WAAW;AACnB,UAAI,UAAU,CAAC;AACf,UAAI,EAAE,SAASa,MAAK,KAAM;AAK1B,UAAI,EAAE,UAAUX,SAAS,QAAOc,iBAAQD,MAAK;AAG7C,UAAI,EAAE,UAAUZ,UAAS;AACvB,UAAE,QAAQE;AACV,UAAE,MAAM,KAAK;AACb,UAAE,GAAG,KAAK,aAAa,MAAM,KAAK,UAAU,EAAE,OAAO,EAAE,KAAK;AAC5D,eAAO,UAAU,CAAC;AAAA,MACpB,WAGS,CAAC,IAAIE,KAAI;AAChB,UAAE,QAAQF;AACV,UAAE,MAAM,KAAK;AACb,UAAE,GAAG,KAAK,UAAU,MAAM,KAAK,UAAU,EAAE,OAAO,EAAE,KAAK;AACzD,eAAO,UAAU,CAAC;AAAA,MACpB;AAAA,IACF;AAMA,IAAAW,iBAAQ,WAAW;AACjB,UAAIH,MAAK,UAAUX,UAAS;AAC1B,QAAAW,MAAK,QAAQV;AACb,QAAAU,MAAK,MAAM,QAAQ,MAAMA,MAAK,OAAOA,MAAK,IAAI;AAC9C,aAAK,OAAO;AAAA,MACd;AAAA,IACF,CAAC;AAID,IAAAA,MAAK,QAAQZ;AACb,IAAAY,MAAK,GAAG,KAAK,SAAS,MAAM,KAAK,UAAUA,MAAK,OAAOA,MAAK,KAAK;AACjE,QAAIA,MAAK,UAAUZ,UAAU;AAC7B,IAAAY,MAAK,QAAQX;AAGb,YAAQ,IAAI,MAAM,IAAIW,MAAK,MAAM,MAAM;AACvC,SAAK,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,GAAG;AAC9B,UAAI,IAAIA,MAAK,MAAM,CAAC,EAAE,MAAM,KAAK,MAAM,KAAK,UAAUA,MAAK,OAAOA,MAAK,KAAK,GAAG;AAC7E,cAAM,EAAE,CAAC,IAAI;AAAA,MACf;AAAA,IACF;AACA,UAAM,SAAS,IAAI;AAAA,EACrB;AAEA,WAAS,KAAK,SAAS;AACrB,QAAI,IAAI,UAAUA,MAAK,WAAWA,MAAK,KAAK,KAAK,MAAM,UAAUA,MAAK,QAAQ,KAAKA,MAAK,MAAM,QAAQ,IAAI,GAAGA,MAAK,QAAQT,SAAQ,IAC9H,IAAI,IACJ,IAAI,MAAM;AAEd,WAAO,EAAE,IAAI,GAAG;AACd,YAAM,CAAC,EAAE,KAAK,MAAM,CAAC;AAAA,IACvB;AAGA,QAAIS,MAAK,UAAUT,SAAQ;AACzB,MAAAS,MAAK,GAAG,KAAK,OAAO,MAAM,KAAK,UAAUA,MAAK,OAAOA,MAAK,KAAK;AAC/D,WAAK;AAAA,IACP;AAAA,EACF;AAEA,WAAS,OAAO;AACd,IAAAA,MAAK,QAAQR;AACb,IAAAQ,MAAK,MAAM,KAAK;AAChB,WAAO,UAAUN,GAAE;AACnB,aAAS,KAAK,UAAW;AACzB,WAAO,KAAK;AAAA,EACd;AACF;;;ADtJe,SAARU,mBAAiB,MAAM,MAAM;AAClC,MAAI,YAAY,KAAK,cACjB,UACA,QACAC,SAAQ,MACR;AAEJ,MAAI,CAAC,UAAW;AAEhB,SAAO,QAAQ,OAAO,OAAO,OAAO;AAEpC,OAAK,KAAK,WAAW;AACnB,SAAK,WAAW,UAAU,CAAC,GAAG,SAAS,MAAM;AAAE,MAAAA,SAAQ;AAAO;AAAA,IAAU;AACxE,aAAS,SAAS,QAAQC,aAAY,SAAS,QAAQC;AACvD,aAAS,QAAQC;AACjB,aAAS,MAAM,KAAK;AACpB,aAAS,GAAG,KAAK,SAAS,cAAc,UAAU,MAAM,KAAK,UAAU,SAAS,OAAO,SAAS,KAAK;AACrG,WAAO,UAAU,CAAC;AAAA,EACpB;AAEA,MAAIH,OAAO,QAAO,KAAK;AACzB;;;ADrBe,SAARI,mBAAiB,MAAM;AAC5B,SAAO,KAAK,KAAK,WAAW;AAC1B,IAAAA,mBAAU,MAAM,IAAI;AAAA,EACtB,CAAC;AACH;;;AQNA;;;ACAA;;;ACAA;;;ACAA;;;ACAA;;;ACAA;;;ACAA;AAAe,SAARC,gBAAiB,aAAaC,UAASC,YAAW;AACvD,cAAY,YAAYD,SAAQ,YAAYC;AAC5C,EAAAA,WAAU,cAAc;AAC1B;AAEO,SAASC,QAAO,QAAQ,YAAY;AACzC,MAAID,aAAY,OAAO,OAAO,OAAO,SAAS;AAC9C,WAAS,OAAO,WAAY,CAAAA,WAAU,GAAG,IAAI,WAAW,GAAG;AAC3D,SAAOA;AACT;;;ADPO,SAASE,SAAQ;AAAC;AAElB,IAAIC,UAAS;AACb,IAAIC,YAAW,IAAID;AAE1B,IAAIE,OAAM;AAAV,IACIC,OAAM;AADV,IAEIC,OAAM;AAFV,IAGIC,SAAQ;AAHZ,IAIIC,gBAAe,IAAI,OAAO,YAAY,CAACJ,MAAKA,MAAKA,IAAG,IAAI,MAAM;AAJlE,IAKIK,gBAAe,IAAI,OAAO,YAAY,CAACH,MAAKA,MAAKA,IAAG,IAAI,MAAM;AALlE,IAMII,iBAAgB,IAAI,OAAO,aAAa,CAACN,MAAKA,MAAKA,MAAKC,IAAG,IAAI,MAAM;AANzE,IAOIM,iBAAgB,IAAI,OAAO,aAAa,CAACL,MAAKA,MAAKA,MAAKD,IAAG,IAAI,MAAM;AAPzE,IAQIO,gBAAe,IAAI,OAAO,YAAY,CAACP,MAAKC,MAAKA,IAAG,IAAI,MAAM;AARlE,IASIO,iBAAgB,IAAI,OAAO,aAAa,CAACR,MAAKC,MAAKA,MAAKD,IAAG,IAAI,MAAM;AAEzE,IAAIS,SAAQ;AAAA,EACV,WAAW;AAAA,EACX,cAAc;AAAA,EACd,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,gBAAgB;AAAA,EAChB,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,WAAW;AAAA,EACX,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,OAAO;AAAA,EACP,gBAAgB;AAAA,EAChB,UAAU;AAAA,EACV,SAAS;AAAA,EACT,MAAM;AAAA,EACN,UAAU;AAAA,EACV,UAAU;AAAA,EACV,eAAe;AAAA,EACf,UAAU;AAAA,EACV,WAAW;AAAA,EACX,UAAU;AAAA,EACV,WAAW;AAAA,EACX,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,aAAa;AAAA,EACb,SAAS;AAAA,EACT,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,aAAa;AAAA,EACb,aAAa;AAAA,EACb,SAAS;AAAA,EACT,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,WAAW;AAAA,EACX,MAAM;AAAA,EACN,OAAO;AAAA,EACP,aAAa;AAAA,EACb,MAAM;AAAA,EACN,UAAU;AAAA,EACV,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,OAAO;AAAA,EACP,UAAU;AAAA,EACV,eAAe;AAAA,EACf,WAAW;AAAA,EACX,cAAc;AAAA,EACd,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,sBAAsB;AAAA,EACtB,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,WAAW;AAAA,EACX,aAAa;AAAA,EACb,eAAe;AAAA,EACf,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,MAAM;AAAA,EACN,WAAW;AAAA,EACX,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,kBAAkB;AAAA,EAClB,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,cAAc;AAAA,EACd,WAAW;AAAA,EACX,WAAW;AAAA,EACX,UAAU;AAAA,EACV,aAAa;AAAA,EACb,MAAM;AAAA,EACN,SAAS;AAAA,EACT,OAAO;AAAA,EACP,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,WAAW;AAAA,EACX,eAAe;AAAA,EACf,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,KAAK;AAAA,EACL,WAAW;AAAA,EACX,WAAW;AAAA,EACX,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AAAA,EACX,KAAK;AAAA,EACL,MAAM;AAAA,EACN,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,aAAa;AACf;AAEAC,gBAAOd,QAAOe,QAAO;AAAA,EACnB,MAAM,SAAS,UAAU;AACvB,WAAO,OAAO,OAAO,IAAI,KAAK,eAAa,MAAM,QAAQ;AAAA,EAC3D;AAAA,EACA,aAAa,WAAW;AACtB,WAAO,KAAK,IAAI,EAAE,YAAY;AAAA,EAChC;AAAA,EACA,KAAKC;AAAA;AAAA,EACL,WAAWA;AAAA,EACX,WAAWC;AAAA,EACX,WAAWC;AAAA,EACX,UAAUA;AACZ,CAAC;AAED,SAASF,mBAAkB;AACzB,SAAO,KAAK,IAAI,EAAE,UAAU;AAC9B;AAEA,SAASC,mBAAkB;AACzB,SAAOE,YAAW,IAAI,EAAE,UAAU;AACpC;AAEA,SAASD,mBAAkB;AACzB,SAAO,KAAK,IAAI,EAAE,UAAU;AAC9B;AAEe,SAARH,OAAuBK,SAAQ;AACpC,MAAI,GAAG;AACP,EAAAA,WAAUA,UAAS,IAAI,KAAK,EAAE,YAAY;AAC1C,UAAQ,IAAId,OAAM,KAAKc,OAAM,MAAM,IAAI,EAAE,CAAC,EAAE,QAAQ,IAAI,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,MAAM,IAAIC,MAAK,CAAC,IACtF,MAAM,IAAI,IAAIC,KAAK,KAAK,IAAI,KAAQ,KAAK,IAAI,KAAQ,KAAK,IAAI,KAAQ,IAAI,MAAS,IAAI,OAAQ,IAAM,IAAI,IAAM,CAAC,IAChH,MAAM,IAAIC,MAAK,KAAK,KAAK,KAAM,KAAK,KAAK,KAAM,KAAK,IAAI,MAAO,IAAI,OAAQ,GAAI,IAC/E,MAAM,IAAIA,MAAM,KAAK,KAAK,KAAQ,KAAK,IAAI,KAAQ,KAAK,IAAI,KAAQ,KAAK,IAAI,KAAQ,KAAK,IAAI,KAAQ,IAAI,OAAU,IAAI,OAAQ,IAAM,IAAI,MAAQ,GAAI,IACtJ,SACC,IAAIhB,cAAa,KAAKa,OAAM,KAAK,IAAIE,KAAI,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAC5D,IAAId,cAAa,KAAKY,OAAM,KAAK,IAAIE,KAAI,EAAE,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,IAAI,MAAM,KAAK,CAAC,KAChG,IAAIb,eAAc,KAAKW,OAAM,KAAKG,MAAK,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,KAC7D,IAAIb,eAAc,KAAKU,OAAM,KAAKG,MAAK,EAAE,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,CAAC,KACjG,IAAIZ,cAAa,KAAKS,OAAM,KAAKI,MAAK,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,KAAK,CAAC,KACrE,IAAIZ,eAAc,KAAKQ,OAAM,KAAKI,MAAK,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,IAC1EX,OAAM,eAAeO,OAAM,IAAIC,MAAKR,OAAMO,OAAM,CAAC,IACjDA,YAAW,gBAAgB,IAAIE,KAAI,KAAK,KAAK,KAAK,CAAC,IACnD;AACR;AAEA,SAASD,MAAK,GAAG;AACf,SAAO,IAAIC,KAAI,KAAK,KAAK,KAAM,KAAK,IAAI,KAAM,IAAI,KAAM,CAAC;AAC3D;AAEA,SAASC,MAAK,GAAG,GAAG,GAAG,GAAG;AACxB,MAAI,KAAK,EAAG,KAAI,IAAI,IAAI;AACxB,SAAO,IAAID,KAAI,GAAG,GAAG,GAAG,CAAC;AAC3B;AAEO,SAASG,YAAW,GAAG;AAC5B,MAAI,EAAE,aAAazB,QAAQ,KAAIe,OAAM,CAAC;AACtC,MAAI,CAAC,EAAG,QAAO,IAAIO;AACnB,MAAI,EAAE,IAAI;AACV,SAAO,IAAIA,KAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO;AACzC;AAEO,SAASI,KAAI,GAAG,GAAG,GAAG,SAAS;AACpC,SAAO,UAAU,WAAW,IAAID,YAAW,CAAC,IAAI,IAAIH,KAAI,GAAG,GAAG,GAAG,WAAW,OAAO,IAAI,OAAO;AAChG;AAEO,SAASA,KAAI,GAAG,GAAG,GAAG,SAAS;AACpC,OAAK,IAAI,CAAC;AACV,OAAK,IAAI,CAAC;AACV,OAAK,IAAI,CAAC;AACV,OAAK,UAAU,CAAC;AAClB;AAEAR,gBAAOQ,MAAKI,MAAKC,QAAO3B,QAAO;AAAA,EAC7B,UAAU,SAAS,GAAG;AACpB,QAAI,KAAK,OAAOE,YAAW,KAAK,IAAIA,WAAU,CAAC;AAC/C,WAAO,IAAIoB,KAAI,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,OAAO;AAAA,EACjE;AAAA,EACA,QAAQ,SAAS,GAAG;AAClB,QAAI,KAAK,OAAOrB,UAAS,KAAK,IAAIA,SAAQ,CAAC;AAC3C,WAAO,IAAIqB,KAAI,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,OAAO;AAAA,EACjE;AAAA,EACA,KAAK,WAAW;AACd,WAAO;AAAA,EACT;AAAA,EACA,aAAa,WAAW;AACtB,WAAQ,QAAQ,KAAK,KAAK,KAAK,IAAI,UAC3B,QAAQ,KAAK,KAAK,KAAK,IAAI,WAC3B,QAAQ,KAAK,KAAK,KAAK,IAAI,WAC3B,KAAK,KAAK,WAAW,KAAK,WAAW;AAAA,EAC/C;AAAA,EACA,KAAKM;AAAA;AAAA,EACL,WAAWA;AAAA,EACX,WAAWC;AAAA,EACX,UAAUA;AACZ,CAAC,CAAC;AAEF,SAASD,iBAAgB;AACvB,SAAO,MAAME,KAAI,KAAK,CAAC,IAAIA,KAAI,KAAK,CAAC,IAAIA,KAAI,KAAK,CAAC;AACrD;AAEA,SAASD,iBAAgB;AACvB,MAAI,IAAI,KAAK;AAAS,MAAI,MAAM,CAAC,IAAI,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC;AACnE,UAAQ,MAAM,IAAI,SAAS,WACrB,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,KAAK,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,OACtD,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,KAAK,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,OACtD,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,KAAK,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC,KACjD,MAAM,IAAI,MAAM,OAAO,IAAI;AACpC;AAEA,SAASC,KAAI,OAAO;AAClB,UAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,KAAK,MAAM,KAAK,KAAK,CAAC,CAAC;AACzD,UAAQ,QAAQ,KAAK,MAAM,MAAM,MAAM,SAAS,EAAE;AACpD;AAEA,SAASN,MAAK,GAAG,GAAG,GAAG,GAAG;AACxB,MAAI,KAAK,EAAG,KAAI,IAAI,IAAI;AAAA,WACf,KAAK,KAAK,KAAK,EAAG,KAAI,IAAI;AAAA,WAC1B,KAAK,EAAG,KAAI;AACrB,SAAO,IAAIO,KAAI,GAAG,GAAG,GAAG,CAAC;AAC3B;AAEO,SAASZ,YAAW,GAAG;AAC5B,MAAI,aAAaY,KAAK,QAAO,IAAIA,KAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO;AAC7D,MAAI,EAAE,aAAa/B,QAAQ,KAAIe,OAAM,CAAC;AACtC,MAAI,CAAC,EAAG,QAAO,IAAIgB;AACnB,MAAI,aAAaA,KAAK,QAAO;AAC7B,MAAI,EAAE,IAAI;AACV,MAAI,IAAI,EAAE,IAAI,KACV,IAAI,EAAE,IAAI,KACV,IAAI,EAAE,IAAI,KACVC,OAAM,KAAK,IAAI,GAAG,GAAG,CAAC,GACtBC,OAAM,KAAK,IAAI,GAAG,GAAG,CAAC,GACtB,IAAI,KACJ,IAAIA,OAAMD,MACV,KAAKC,OAAMD,QAAO;AACtB,MAAI,GAAG;AACL,QAAI,MAAMC,KAAK,MAAK,IAAI,KAAK,KAAK,IAAI,KAAK;AAAA,aAClC,MAAMA,KAAK,MAAK,IAAI,KAAK,IAAI;AAAA,QACjC,MAAK,IAAI,KAAK,IAAI;AACvB,SAAK,IAAI,MAAMA,OAAMD,OAAM,IAAIC,OAAMD;AACrC,SAAK;AAAA,EACP,OAAO;AACL,QAAI,IAAI,KAAK,IAAI,IAAI,IAAI;AAAA,EAC3B;AACA,SAAO,IAAID,KAAI,GAAG,GAAG,GAAG,EAAE,OAAO;AACnC;AAEO,SAASG,KAAI,GAAG,GAAG,GAAG,SAAS;AACpC,SAAO,UAAU,WAAW,IAAIf,YAAW,CAAC,IAAI,IAAIY,KAAI,GAAG,GAAG,GAAG,WAAW,OAAO,IAAI,OAAO;AAChG;AAEA,SAASA,KAAI,GAAG,GAAG,GAAG,SAAS;AAC7B,OAAK,IAAI,CAAC;AACV,OAAK,IAAI,CAAC;AACV,OAAK,IAAI,CAAC;AACV,OAAK,UAAU,CAAC;AAClB;AAEAjB,gBAAOiB,MAAKG,MAAKP,QAAO3B,QAAO;AAAA,EAC7B,UAAU,SAAS,GAAG;AACpB,QAAI,KAAK,OAAOE,YAAW,KAAK,IAAIA,WAAU,CAAC;AAC/C,WAAO,IAAI6B,KAAI,KAAK,GAAG,KAAK,GAAG,KAAK,IAAI,GAAG,KAAK,OAAO;AAAA,EACzD;AAAA,EACA,QAAQ,SAAS,GAAG;AAClB,QAAI,KAAK,OAAO9B,UAAS,KAAK,IAAIA,SAAQ,CAAC;AAC3C,WAAO,IAAI8B,KAAI,KAAK,GAAG,KAAK,GAAG,KAAK,IAAI,GAAG,KAAK,OAAO;AAAA,EACzD;AAAA,EACA,KAAK,WAAW;AACd,QAAI,IAAI,KAAK,IAAI,OAAO,KAAK,IAAI,KAAK,KAClC,IAAI,MAAM,CAAC,KAAK,MAAM,KAAK,CAAC,IAAI,IAAI,KAAK,GACzC,IAAI,KAAK,GACT,KAAK,KAAK,IAAI,MAAM,IAAI,IAAI,KAAK,GACjC,KAAK,IAAI,IAAI;AACjB,WAAO,IAAIT;AAAA,MACTa,SAAQ,KAAK,MAAM,IAAI,MAAM,IAAI,KAAK,IAAI,EAAE;AAAA,MAC5CA,SAAQ,GAAG,IAAI,EAAE;AAAA,MACjBA,SAAQ,IAAI,MAAM,IAAI,MAAM,IAAI,KAAK,IAAI,EAAE;AAAA,MAC3C,KAAK;AAAA,IACP;AAAA,EACF;AAAA,EACA,aAAa,WAAW;AACtB,YAAQ,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,CAAC,OAC1C,KAAK,KAAK,KAAK,KAAK,KAAK,OACzB,KAAK,KAAK,WAAW,KAAK,WAAW;AAAA,EAC/C;AAAA,EACA,WAAW,WAAW;AACpB,QAAI,IAAI,KAAK;AAAS,QAAI,MAAM,CAAC,IAAI,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC;AACnE,YAAQ,MAAM,IAAI,SAAS,YACpB,KAAK,KAAK,KAAK,QACf,KAAK,KAAK,KAAK,MAAM,SACrB,KAAK,KAAK,KAAK,MAAM,OACrB,MAAM,IAAI,MAAM,OAAO,IAAI;AAAA,EACpC;AACF,CAAC,CAAC;AAGF,SAASA,SAAQ,GAAG,IAAI,IAAI;AAC1B,UAAQ,IAAI,KAAK,MAAM,KAAK,MAAM,IAAI,KAChC,IAAI,MAAM,KACV,IAAI,MAAM,MAAM,KAAK,OAAO,MAAM,KAAK,KACvC,MAAM;AACd;;;AElXA;;;ACAA;AAAO,SAASC,OAAM,IAAI,IAAI,IAAI,IAAI,IAAI;AACxC,MAAI,KAAK,KAAK,IAAI,KAAK,KAAK;AAC5B,WAAS,IAAI,IAAI,KAAK,IAAI,KAAK,MAAM,MAC9B,IAAI,IAAI,KAAK,IAAI,MAAM,MACvB,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,KACjC,KAAK,MAAM;AACnB;AAEe,SAARC,eAAiB,QAAQ;AAC9B,MAAI,IAAI,OAAO,SAAS;AACxB,SAAO,SAAS,GAAG;AACjB,QAAI,IAAI,KAAK,IAAK,IAAI,IAAK,KAAK,KAAK,IAAI,GAAG,IAAI,KAAK,KAAK,MAAM,IAAI,CAAC,GACjE,KAAK,OAAO,CAAC,GACb,KAAK,OAAO,IAAI,CAAC,GACjB,KAAK,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,IAAI,KAAK,IACtC,KAAK,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,IAAI,KAAK;AAC9C,WAAOD,QAAO,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,IAAI,EAAE;AAAA,EAC9C;AACF;;;AClBA;AAEe,SAARE,qBAAiB,QAAQ;AAC9B,MAAI,IAAI,OAAO;AACf,SAAO,SAAS,GAAG;AACjB,QAAI,IAAI,KAAK,QAAQ,KAAK,KAAK,IAAI,EAAE,IAAI,KAAK,CAAC,GAC3C,KAAK,QAAQ,IAAI,IAAI,KAAK,CAAC,GAC3B,KAAK,OAAO,IAAI,CAAC,GACjB,KAAK,QAAQ,IAAI,KAAK,CAAC,GACvB,KAAK,QAAQ,IAAI,KAAK,CAAC;AAC3B,WAAOC,QAAO,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,IAAI,EAAE;AAAA,EAC9C;AACF;;;ACZA;;;ACAA;AAAA,IAAOC,oBAAQ,OAAK,MAAM;;;ADE1B,SAASC,QAAO,GAAG,GAAG;AACpB,SAAO,SAAS,GAAG;AACjB,WAAO,IAAI,IAAI;AAAA,EACjB;AACF;AAEA,SAASC,aAAY,GAAG,GAAG,GAAG;AAC5B,SAAO,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,KAAK,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,GAAG,SAAS,GAAG;AACxE,WAAO,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC;AAAA,EAC9B;AACF;AAOO,SAASC,OAAM,GAAG;AACvB,UAAQ,IAAI,CAAC,OAAO,IAAIC,WAAU,SAAS,GAAG,GAAG;AAC/C,WAAO,IAAI,IAAIC,aAAY,GAAG,GAAG,CAAC,IAAIC,kBAAS,MAAM,CAAC,IAAI,IAAI,CAAC;AAAA,EACjE;AACF;AAEe,SAARF,SAAyB,GAAG,GAAG;AACpC,MAAI,IAAI,IAAI;AACZ,SAAO,IAAIG,QAAO,GAAG,CAAC,IAAID,kBAAS,MAAM,CAAC,IAAI,IAAI,CAAC;AACrD;;;AHvBA,IAAOE,gBAAS,SAASC,UAAS,GAAG;AACnC,MAAIC,SAAQC,OAAM,CAAC;AAEnB,WAASC,KAAIC,QAAO,KAAK;AACvB,QAAI,IAAIH,QAAOG,SAAQD,KAASC,MAAK,GAAG,IAAI,MAAMD,KAAS,GAAG,GAAG,CAAC,GAC9D,IAAIF,OAAMG,OAAM,GAAG,IAAI,CAAC,GACxB,IAAIH,OAAMG,OAAM,GAAG,IAAI,CAAC,GACxB,UAAUC,SAAQD,OAAM,SAAS,IAAI,OAAO;AAChD,WAAO,SAAS,GAAG;AACjB,MAAAA,OAAM,IAAI,EAAE,CAAC;AACb,MAAAA,OAAM,IAAI,EAAE,CAAC;AACb,MAAAA,OAAM,IAAI,EAAE,CAAC;AACb,MAAAA,OAAM,UAAU,QAAQ,CAAC;AACzB,aAAOA,SAAQ;AAAA,IACjB;AAAA,EACF;AAEA,EAAAD,KAAI,QAAQH;AAEZ,SAAOG;AACT,GAAG,CAAC;AAEJ,SAASG,WAAU,QAAQ;AACzB,SAAO,SAAS,QAAQ;AACtB,QAAI,IAAI,OAAO,QACX,IAAI,IAAI,MAAM,CAAC,GACf,IAAI,IAAI,MAAM,CAAC,GACf,IAAI,IAAI,MAAM,CAAC,GACf,GAAGL;AACP,SAAK,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACtB,MAAAA,SAAQE,KAAS,OAAO,CAAC,CAAC;AAC1B,QAAE,CAAC,IAAIF,OAAM,KAAK;AAClB,QAAE,CAAC,IAAIA,OAAM,KAAK;AAClB,QAAE,CAAC,IAAIA,OAAM,KAAK;AAAA,IACpB;AACA,QAAI,OAAO,CAAC;AACZ,QAAI,OAAO,CAAC;AACZ,QAAI,OAAO,CAAC;AACZ,IAAAA,OAAM,UAAU;AAChB,WAAO,SAAS,GAAG;AACjB,MAAAA,OAAM,IAAI,EAAE,CAAC;AACb,MAAAA,OAAM,IAAI,EAAE,CAAC;AACb,MAAAA,OAAM,IAAI,EAAE,CAAC;AACb,aAAOA,SAAQ;AAAA,IACjB;AAAA,EACF;AACF;AAEO,IAAIM,YAAWD,WAAUE,cAAK;AAC9B,IAAIC,kBAAiBH,WAAUI,oBAAW;;;AKtDjD;AAAe,SAARC,gBAAiB,GAAG,GAAG;AAC5B,SAAO,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,SAAS,GAAG;AACjC,WAAO,KAAK,IAAI,KAAK,IAAI;AAAA,EAC3B;AACF;;;ACJA;AAEA,IAAIC,OAAM;AAAV,IACIC,OAAM,IAAI,OAAOD,KAAI,QAAQ,GAAG;AAEpC,SAASE,MAAK,GAAG;AACf,SAAO,WAAW;AAChB,WAAO;AAAA,EACT;AACF;AAEA,SAASC,KAAI,GAAG;AACd,SAAO,SAAS,GAAG;AACjB,WAAO,EAAE,CAAC,IAAI;AAAA,EAChB;AACF;AAEe,SAARC,gBAAiB,GAAG,GAAG;AAC5B,MAAI,KAAKJ,KAAI,YAAYC,KAAI,YAAY,GACrC,IACA,IACA,IACA,IAAI,IACJ,IAAI,CAAC,GACL,IAAI,CAAC;AAGT,MAAI,IAAI,IAAI,IAAI,IAAI;AAGpB,UAAQ,KAAKD,KAAI,KAAK,CAAC,OACf,KAAKC,KAAI,KAAK,CAAC,IAAI;AACzB,SAAK,KAAK,GAAG,SAAS,IAAI;AACxB,WAAK,EAAE,MAAM,IAAI,EAAE;AACnB,UAAI,EAAE,CAAC,EAAG,GAAE,CAAC,KAAK;AAAA,UACb,GAAE,EAAE,CAAC,IAAI;AAAA,IAChB;AACA,SAAK,KAAK,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,IAAI;AACjC,UAAI,EAAE,CAAC,EAAG,GAAE,CAAC,KAAK;AAAA,UACb,GAAE,EAAE,CAAC,IAAI;AAAA,IAChB,OAAO;AACL,QAAE,EAAE,CAAC,IAAI;AACT,QAAE,KAAK,EAAC,GAAM,GAAGI,gBAAO,IAAI,EAAE,EAAC,CAAC;AAAA,IAClC;AACA,SAAKJ,KAAI;AAAA,EACX;AAGA,MAAI,KAAK,EAAE,QAAQ;AACjB,SAAK,EAAE,MAAM,EAAE;AACf,QAAI,EAAE,CAAC,EAAG,GAAE,CAAC,KAAK;AAAA,QACb,GAAE,EAAE,CAAC,IAAI;AAAA,EAChB;AAIA,SAAO,EAAE,SAAS,IAAK,EAAE,CAAC,IACpBE,KAAI,EAAE,CAAC,EAAE,CAAC,IACVD,MAAK,CAAC,KACL,IAAI,EAAE,QAAQ,SAAS,GAAG;AACzB,aAASI,KAAI,GAAG,GAAGA,KAAI,GAAG,EAAEA,GAAG,IAAG,IAAI,EAAEA,EAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;AACtD,WAAO,EAAE,KAAK,EAAE;AAAA,EAClB;AACR;;;AC/DA;;;ACAA;;;ACAA;AAAA,IAAIC,WAAU,MAAM,KAAK;AAElB,IAAIC,YAAW;AAAA,EACpB,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AACV;AAEe,SAARC,mBAAiB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AACxC,MAAI,QAAQ,QAAQ;AACpB,MAAI,SAAS,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,EAAG,MAAK,QAAQ,KAAK;AACzD,MAAI,QAAQ,IAAI,IAAI,IAAI,EAAG,MAAK,IAAI,OAAO,KAAK,IAAI;AACpD,MAAI,SAAS,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,EAAG,MAAK,QAAQ,KAAK,QAAQ,SAAS;AAC1E,MAAI,IAAI,IAAI,IAAI,EAAG,KAAI,CAAC,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC,OAAO,SAAS,CAAC;AAC7D,SAAO;AAAA,IACL,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,QAAQ,KAAK,MAAM,GAAG,CAAC,IAAIF;AAAA,IAC3B,OAAO,KAAK,KAAK,KAAK,IAAIA;AAAA,IAC1B;AAAA,IACA;AAAA,EACF;AACF;;;ADvBA,IAAIG;AAGG,SAASC,UAAS,OAAO;AAC9B,QAAM,IAAI,KAAK,OAAO,cAAc,aAAa,YAAY,iBAAiB,QAAQ,EAAE;AACxF,SAAO,EAAE,aAAaC,YAAWC,mBAAU,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACzE;AAEO,SAASC,UAAS,OAAO;AAC9B,MAAI,SAAS,KAAM,QAAOF;AAC1B,MAAI,CAACF,SAAS,CAAAA,WAAU,SAAS,gBAAgB,8BAA8B,GAAG;AAClF,EAAAA,SAAQ,aAAa,aAAa,KAAK;AACvC,MAAI,EAAE,QAAQA,SAAQ,UAAU,QAAQ,YAAY,GAAI,QAAOE;AAC/D,UAAQ,MAAM;AACd,SAAOC,mBAAU,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AACvE;;;ADdA,SAASE,sBAAqBC,QAAO,SAAS,SAAS,UAAU;AAE/D,WAAS,IAAI,GAAG;AACd,WAAO,EAAE,SAAS,EAAE,IAAI,IAAI,MAAM;AAAA,EACpC;AAEA,WAASC,WAAU,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG;AACvC,QAAI,OAAO,MAAM,OAAO,IAAI;AAC1B,UAAI,IAAI,EAAE,KAAK,cAAc,MAAM,SAAS,MAAM,OAAO;AACzD,QAAE,KAAK,EAAC,GAAG,IAAI,GAAG,GAAGC,gBAAO,IAAI,EAAE,EAAC,GAAG,EAAC,GAAG,IAAI,GAAG,GAAGA,gBAAO,IAAI,EAAE,EAAC,CAAC;AAAA,IACrE,WAAW,MAAM,IAAI;AACnB,QAAE,KAAK,eAAe,KAAK,UAAU,KAAK,OAAO;AAAA,IACnD;AAAA,EACF;AAEA,WAAS,OAAO,GAAG,GAAG,GAAG,GAAG;AAC1B,QAAI,MAAM,GAAG;AACX,UAAI,IAAI,IAAI,IAAK,MAAK;AAAA,eAAc,IAAI,IAAI,IAAK,MAAK;AACtD,QAAE,KAAK,EAAC,GAAG,EAAE,KAAK,IAAI,CAAC,IAAI,WAAW,MAAM,QAAQ,IAAI,GAAG,GAAGA,gBAAO,GAAG,CAAC,EAAC,CAAC;AAAA,IAC7E,WAAW,GAAG;AACZ,QAAE,KAAK,IAAI,CAAC,IAAI,YAAY,IAAI,QAAQ;AAAA,IAC1C;AAAA,EACF;AAEA,WAAS,MAAM,GAAG,GAAG,GAAG,GAAG;AACzB,QAAI,MAAM,GAAG;AACX,QAAE,KAAK,EAAC,GAAG,EAAE,KAAK,IAAI,CAAC,IAAI,UAAU,MAAM,QAAQ,IAAI,GAAG,GAAGA,gBAAO,GAAG,CAAC,EAAC,CAAC;AAAA,IAC5E,WAAW,GAAG;AACZ,QAAE,KAAK,IAAI,CAAC,IAAI,WAAW,IAAI,QAAQ;AAAA,IACzC;AAAA,EACF;AAEA,WAAS,MAAM,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG;AACnC,QAAI,OAAO,MAAM,OAAO,IAAI;AAC1B,UAAI,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,UAAU,MAAM,KAAK,MAAM,GAAG;AACtD,QAAE,KAAK,EAAC,GAAG,IAAI,GAAG,GAAGA,gBAAO,IAAI,EAAE,EAAC,GAAG,EAAC,GAAG,IAAI,GAAG,GAAGA,gBAAO,IAAI,EAAE,EAAC,CAAC;AAAA,IACrE,WAAW,OAAO,KAAK,OAAO,GAAG;AAC/B,QAAE,KAAK,IAAI,CAAC,IAAI,WAAW,KAAK,MAAM,KAAK,GAAG;AAAA,IAChD;AAAA,EACF;AAEA,SAAO,SAAS,GAAG,GAAG;AACpB,QAAI,IAAI,CAAC,GACL,IAAI,CAAC;AACT,QAAIF,OAAM,CAAC,GAAG,IAAIA,OAAM,CAAC;AACzB,IAAAC,WAAU,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,GAAG,CAAC;AACtE,WAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,CAAC;AAC/B,UAAM,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC;AAC5B,UAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAG,CAAC;AAClD,QAAI,IAAI;AACR,WAAO,SAAS,GAAG;AACjB,UAAI,IAAI,IAAI,IAAI,EAAE,QAAQ;AAC1B,aAAO,EAAE,IAAI,EAAG,IAAG,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;AACvC,aAAO,EAAE,KAAK,EAAE;AAAA,IAClB;AAAA,EACF;AACF;AAEO,IAAIE,2BAA0BJ,sBAAqBK,WAAU,QAAQ,OAAO,MAAM;AAClF,IAAIC,2BAA0BN,sBAAqBO,WAAU,MAAM,KAAK,GAAG;;;AG9DlF;AAEA,SAASC,aAAYC,KAAI,MAAM;AAC7B,MAAI,QAAQ;AACZ,SAAO,WAAW;AAChB,QAAI,WAAWC,KAAI,MAAMD,GAAE,GACvB,QAAQ,SAAS;AAKrB,QAAI,UAAU,QAAQ;AACpB,eAAS,SAAS;AAClB,eAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAI,GAAG,EAAE,GAAG;AAC7C,YAAI,OAAO,CAAC,EAAE,SAAS,MAAM;AAC3B,mBAAS,OAAO,MAAM;AACtB,iBAAO,OAAO,GAAG,CAAC;AAClB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,aAAS,QAAQ;AAAA,EACnB;AACF;AAEA,SAASE,eAAcF,KAAI,MAAM,OAAO;AACtC,MAAI,QAAQ;AACZ,MAAI,OAAO,UAAU,WAAY,OAAM,IAAI;AAC3C,SAAO,WAAW;AAChB,QAAI,WAAWC,KAAI,MAAMD,GAAE,GACvB,QAAQ,SAAS;AAKrB,QAAI,UAAU,QAAQ;AACpB,gBAAU,SAAS,OAAO,MAAM;AAChC,eAAS,IAAI,EAAC,MAAY,MAAY,GAAG,IAAI,GAAG,IAAI,OAAO,QAAQ,IAAI,GAAG,EAAE,GAAG;AAC7E,YAAI,OAAO,CAAC,EAAE,SAAS,MAAM;AAC3B,iBAAO,CAAC,IAAI;AACZ;AAAA,QACF;AAAA,MACF;AACA,UAAI,MAAM,EAAG,QAAO,KAAK,CAAC;AAAA,IAC5B;AAEA,aAAS,QAAQ;AAAA,EACnB;AACF;AAEe,SAARG,eAAiB,MAAM,OAAO;AACnC,MAAIH,MAAK,KAAK;AAEd,UAAQ;AAER,MAAI,UAAU,SAAS,GAAG;AACxB,QAAI,QAAQI,KAAI,KAAK,KAAK,GAAGJ,GAAE,EAAE;AACjC,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE,GAAG;AAC/C,WAAK,IAAI,MAAM,CAAC,GAAG,SAAS,MAAM;AAChC,eAAO,EAAE;AAAA,MACX;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,SAAO,KAAK,MAAM,SAAS,OAAOD,eAAcG,gBAAeF,KAAI,MAAM,KAAK,CAAC;AACjF;AAEO,SAASK,YAAWC,aAAY,MAAM,OAAO;AAClD,MAAIN,MAAKM,YAAW;AAEpB,EAAAA,YAAW,KAAK,WAAW;AACzB,QAAI,WAAWL,KAAI,MAAMD,GAAE;AAC3B,KAAC,SAAS,UAAU,SAAS,QAAQ,CAAC,IAAI,IAAI,IAAI,MAAM,MAAM,MAAM,SAAS;AAAA,EAC/E,CAAC;AAED,SAAO,SAAS,MAAM;AACpB,WAAOI,KAAI,MAAMJ,GAAE,EAAE,MAAM,IAAI;AAAA,EACjC;AACF;;;AChFA;AAGe,SAARO,qBAAiB,GAAG,GAAG;AAC5B,MAAI;AACJ,UAAQ,OAAO,MAAM,WAAWC,kBAC1B,aAAaC,SAAQC,gBACpB,IAAID,OAAM,CAAC,MAAM,IAAI,GAAGC,gBACzBC,iBAAmB,GAAG,CAAC;AAC/B;;;AhBJA,SAASC,YAAW,MAAM;AACxB,SAAO,WAAW;AAChB,SAAK,gBAAgB,IAAI;AAAA,EAC3B;AACF;AAEA,SAASC,cAAa,UAAU;AAC9B,SAAO,WAAW;AAChB,SAAK,kBAAkB,SAAS,OAAO,SAAS,KAAK;AAAA,EACvD;AACF;AAEA,SAASC,cAAa,MAAM,aAAa,QAAQ;AAC/C,MAAI,UACA,UAAU,SAAS,IACnB;AACJ,SAAO,WAAW;AAChB,QAAI,UAAU,KAAK,aAAa,IAAI;AACpC,WAAO,YAAY,UAAU,OACvB,YAAY,WAAW,eACvB,eAAe,YAAY,WAAW,SAAS,MAAM;AAAA,EAC7D;AACF;AAEA,SAASC,gBAAe,UAAU,aAAa,QAAQ;AACrD,MAAI,UACA,UAAU,SAAS,IACnB;AACJ,SAAO,WAAW;AAChB,QAAI,UAAU,KAAK,eAAe,SAAS,OAAO,SAAS,KAAK;AAChE,WAAO,YAAY,UAAU,OACvB,YAAY,WAAW,eACvB,eAAe,YAAY,WAAW,SAAS,MAAM;AAAA,EAC7D;AACF;AAEA,SAASC,cAAa,MAAM,aAAa,OAAO;AAC9C,MAAI,UACA,UACA;AACJ,SAAO,WAAW;AAChB,QAAI,SAAS,SAAS,MAAM,IAAI,GAAG;AACnC,QAAI,UAAU,KAAM,QAAO,KAAK,KAAK,gBAAgB,IAAI;AACzD,cAAU,KAAK,aAAa,IAAI;AAChC,cAAU,SAAS;AACnB,WAAO,YAAY,UAAU,OACvB,YAAY,YAAY,YAAY,WAAW,gBAC9C,WAAW,SAAS,eAAe,YAAY,WAAW,SAAS,MAAM;AAAA,EAClF;AACF;AAEA,SAASC,gBAAe,UAAU,aAAa,OAAO;AACpD,MAAI,UACA,UACA;AACJ,SAAO,WAAW;AAChB,QAAI,SAAS,SAAS,MAAM,IAAI,GAAG;AACnC,QAAI,UAAU,KAAM,QAAO,KAAK,KAAK,kBAAkB,SAAS,OAAO,SAAS,KAAK;AACrF,cAAU,KAAK,eAAe,SAAS,OAAO,SAAS,KAAK;AAC5D,cAAU,SAAS;AACnB,WAAO,YAAY,UAAU,OACvB,YAAY,YAAY,YAAY,WAAW,gBAC9C,WAAW,SAAS,eAAe,YAAY,WAAW,SAAS,MAAM;AAAA,EAClF;AACF;AAEe,SAARC,cAAiB,MAAM,OAAO;AACnC,MAAI,WAAWC,mBAAU,IAAI,GAAG,IAAI,aAAa,cAAcC,2BAAuBC;AACtF,SAAO,KAAK,UAAU,MAAM,OAAO,UAAU,cACtC,SAAS,QAAQJ,kBAAiBD,eAAc,UAAU,GAAGM,YAAW,MAAM,UAAU,MAAM,KAAK,CAAC,IACrG,SAAS,QAAQ,SAAS,QAAQT,gBAAeD,aAAY,QAAQ,KACpE,SAAS,QAAQG,kBAAiBD,eAAc,UAAU,GAAG,KAAK,CAAC;AAC5E;;;AiB7EA;AAEA,SAASS,iBAAgB,MAAM,GAAG;AAChC,SAAO,SAAS,GAAG;AACjB,SAAK,aAAa,MAAM,EAAE,KAAK,MAAM,CAAC,CAAC;AAAA,EACzC;AACF;AAEA,SAASC,mBAAkB,UAAU,GAAG;AACtC,SAAO,SAAS,GAAG;AACjB,SAAK,eAAe,SAAS,OAAO,SAAS,OAAO,EAAE,KAAK,MAAM,CAAC,CAAC;AAAA,EACrE;AACF;AAEA,SAASC,aAAY,UAAU,OAAO;AACpC,MAAI,IAAI;AACR,WAAS,QAAQ;AACf,QAAI,IAAI,MAAM,MAAM,MAAM,SAAS;AACnC,QAAI,MAAM,GAAI,OAAM,KAAK,MAAMD,mBAAkB,UAAU,CAAC;AAC5D,WAAO;AAAA,EACT;AACA,QAAM,SAAS;AACf,SAAO;AACT;AAEA,SAASE,WAAU,MAAM,OAAO;AAC9B,MAAI,IAAI;AACR,WAAS,QAAQ;AACf,QAAI,IAAI,MAAM,MAAM,MAAM,SAAS;AACnC,QAAI,MAAM,GAAI,OAAM,KAAK,MAAMH,iBAAgB,MAAM,CAAC;AACtD,WAAO;AAAA,EACT;AACA,QAAM,SAAS;AACf,SAAO;AACT;AAEe,SAARI,mBAAiB,MAAM,OAAO;AACnC,MAAI,MAAM,UAAU;AACpB,MAAI,UAAU,SAAS,EAAG,SAAQ,MAAM,KAAK,MAAM,GAAG,MAAM,IAAI;AAChE,MAAI,SAAS,KAAM,QAAO,KAAK,MAAM,KAAK,IAAI;AAC9C,MAAI,OAAO,UAAU,WAAY,OAAM,IAAI;AAC3C,MAAI,WAAWC,mBAAU,IAAI;AAC7B,SAAO,KAAK,MAAM,MAAM,SAAS,QAAQH,eAAcC,YAAW,UAAU,KAAK,CAAC;AACpF;;;AC3CA;AAEA,SAASG,eAAcC,KAAI,OAAO;AAChC,SAAO,WAAW;AAChB,IAAAC,MAAK,MAAMD,GAAE,EAAE,QAAQ,CAAC,MAAM,MAAM,MAAM,SAAS;AAAA,EACrD;AACF;AAEA,SAASE,eAAcF,KAAI,OAAO;AAChC,SAAO,QAAQ,CAAC,OAAO,WAAW;AAChC,IAAAC,MAAK,MAAMD,GAAE,EAAE,QAAQ;AAAA,EACzB;AACF;AAEe,SAARG,eAAiB,OAAO;AAC7B,MAAIH,MAAK,KAAK;AAEd,SAAO,UAAU,SACX,KAAK,MAAM,OAAO,UAAU,aACxBD,iBACAG,gBAAeF,KAAI,KAAK,CAAC,IAC7BI,KAAI,KAAK,KAAK,GAAGJ,GAAE,EAAE;AAC7B;;;ACtBA;AAEA,SAASK,kBAAiBC,KAAI,OAAO;AACnC,SAAO,WAAW;AAChB,IAAAC,KAAI,MAAMD,GAAE,EAAE,WAAW,CAAC,MAAM,MAAM,MAAM,SAAS;AAAA,EACvD;AACF;AAEA,SAASE,kBAAiBF,KAAI,OAAO;AACnC,SAAO,QAAQ,CAAC,OAAO,WAAW;AAChC,IAAAC,KAAI,MAAMD,GAAE,EAAE,WAAW;AAAA,EAC3B;AACF;AAEe,SAARG,kBAAiB,OAAO;AAC7B,MAAIH,MAAK,KAAK;AAEd,SAAO,UAAU,SACX,KAAK,MAAM,OAAO,UAAU,aACxBD,oBACAG,mBAAkBF,KAAI,KAAK,CAAC,IAChCI,KAAI,KAAK,KAAK,GAAGJ,GAAE,EAAE;AAC7B;;;ACtBA;AAEA,SAASK,cAAaC,KAAI,OAAO;AAC/B,MAAI,OAAO,UAAU,WAAY,OAAM,IAAI;AAC3C,SAAO,WAAW;AAChB,IAAAC,KAAI,MAAMD,GAAE,EAAE,OAAO;AAAA,EACvB;AACF;AAEe,SAARE,cAAiB,OAAO;AAC7B,MAAIF,MAAK,KAAK;AAEd,SAAO,UAAU,SACX,KAAK,KAAKD,cAAaC,KAAI,KAAK,CAAC,IACjCG,KAAI,KAAK,KAAK,GAAGH,GAAE,EAAE;AAC7B;;;ACfA;AAEA,SAASI,aAAYC,KAAI,OAAO;AAC9B,SAAO,WAAW;AAChB,QAAI,IAAI,MAAM,MAAM,MAAM,SAAS;AACnC,QAAI,OAAO,MAAM,WAAY,OAAM,IAAI;AACvC,IAAAC,KAAI,MAAMD,GAAE,EAAE,OAAO;AAAA,EACvB;AACF;AAEe,SAARE,qBAAiB,OAAO;AAC7B,MAAI,OAAO,UAAU,WAAY,OAAM,IAAI;AAC3C,SAAO,KAAK,KAAKH,aAAY,KAAK,KAAK,KAAK,CAAC;AAC/C;;;ACbA;AAGe,SAARI,gBAAiBC,QAAO;AAC7B,MAAI,OAAOA,WAAU,WAAY,CAAAA,SAAQC,iBAAQD,MAAK;AAEtD,WAAS,SAAS,KAAK,SAAS,IAAI,OAAO,QAAQ,YAAY,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAC9F,aAAS,QAAQ,OAAO,CAAC,GAAG,IAAI,MAAM,QAAQ,WAAW,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACnG,WAAK,OAAO,MAAM,CAAC,MAAMA,OAAM,KAAK,MAAM,KAAK,UAAU,GAAG,KAAK,GAAG;AAClE,iBAAS,KAAK,IAAI;AAAA,MACpB;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAIE,YAAW,WAAW,KAAK,UAAU,KAAK,OAAO,KAAK,GAAG;AACtE;;;ACfA;AAEe,SAARC,eAAiBC,aAAY;AAClC,MAAIA,YAAW,QAAQ,KAAK,IAAK,OAAM,IAAI;AAE3C,WAAS,UAAU,KAAK,SAAS,UAAUA,YAAW,SAAS,KAAK,QAAQ,QAAQ,KAAK,QAAQ,QAAQ,IAAI,KAAK,IAAI,IAAI,EAAE,GAAG,SAAS,IAAI,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACxK,aAAS,SAAS,QAAQ,CAAC,GAAG,SAAS,QAAQ,CAAC,GAAG,IAAI,OAAO,QAAQC,SAAQ,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAC/H,UAAI,OAAO,OAAO,CAAC,KAAK,OAAO,CAAC,GAAG;AACjC,QAAAA,OAAM,CAAC,IAAI;AAAA,MACb;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAI,IAAI,EAAE,GAAG;AAClB,WAAO,CAAC,IAAI,QAAQ,CAAC;AAAA,EACvB;AAEA,SAAO,IAAIC,YAAW,QAAQ,KAAK,UAAU,KAAK,OAAO,KAAK,GAAG;AACnE;;;AClBA;AAEA,SAASC,OAAM,MAAM;AACnB,UAAQ,OAAO,IAAI,KAAK,EAAE,MAAM,OAAO,EAAE,MAAM,SAAS,GAAG;AACzD,QAAI,IAAI,EAAE,QAAQ,GAAG;AACrB,QAAI,KAAK,EAAG,KAAI,EAAE,MAAM,GAAG,CAAC;AAC5B,WAAO,CAAC,KAAK,MAAM;AAAA,EACrB,CAAC;AACH;AAEA,SAASC,YAAWC,KAAI,MAAM,UAAU;AACtC,MAAI,KAAK,KAAK,MAAMF,OAAM,IAAI,IAAIG,QAAOC;AACzC,SAAO,WAAW;AAChB,QAAI,WAAW,IAAI,MAAMF,GAAE,GACvBG,MAAK,SAAS;AAKlB,QAAIA,QAAO,IAAK,EAAC,OAAO,MAAMA,KAAI,KAAK,GAAG,GAAG,MAAM,QAAQ;AAE3D,aAAS,KAAK;AAAA,EAChB;AACF;AAEe,SAARC,YAAiB,MAAM,UAAU;AACtC,MAAIJ,MAAK,KAAK;AAEd,SAAO,UAAU,SAAS,IACpBK,KAAI,KAAK,KAAK,GAAGL,GAAE,EAAE,GAAG,GAAG,IAAI,IAC/B,KAAK,KAAKD,YAAWC,KAAI,MAAM,QAAQ,CAAC;AAChD;;;AC/BA;AAAA,SAASM,gBAAeC,KAAI;AAC1B,SAAO,WAAW;AAChB,QAAI,SAAS,KAAK;AAClB,aAAS,KAAK,KAAK,aAAc,KAAI,CAAC,MAAMA,IAAI;AAChD,QAAI,OAAQ,QAAO,YAAY,IAAI;AAAA,EACrC;AACF;AAEe,SAARC,kBAAmB;AACxB,SAAO,KAAK,GAAG,cAAcF,gBAAe,KAAK,GAAG,CAAC;AACvD;;;ACVA;AAIe,SAARG,gBAAiB,QAAQ;AAC9B,MAAI,OAAO,KAAK,OACZC,MAAK,KAAK;AAEd,MAAI,OAAO,WAAW,WAAY,UAASC,kBAAS,MAAM;AAE1D,WAAS,SAAS,KAAK,SAAS,IAAI,OAAO,QAAQ,YAAY,IAAI,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAC9F,aAAS,QAAQ,OAAO,CAAC,GAAG,IAAI,MAAM,QAAQ,WAAW,UAAU,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,MAAM,SAAS,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACtH,WAAK,OAAO,MAAM,CAAC,OAAO,UAAU,OAAO,KAAK,MAAM,KAAK,UAAU,GAAG,KAAK,IAAI;AAC/E,YAAI,cAAc,KAAM,SAAQ,WAAW,KAAK;AAChD,iBAAS,CAAC,IAAI;AACd,QAAAC,kBAAS,SAAS,CAAC,GAAG,MAAMF,KAAI,GAAG,UAAUG,KAAI,MAAMH,GAAE,CAAC;AAAA,MAC5D;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAII,YAAW,WAAW,KAAK,UAAU,MAAMJ,GAAE;AAC1D;;;ACrBA;AAIe,SAARK,mBAAiB,QAAQ;AAC9B,MAAI,OAAO,KAAK,OACZC,MAAK,KAAK;AAEd,MAAI,OAAO,WAAW,WAAY,UAASC,qBAAY,MAAM;AAE7D,WAAS,SAAS,KAAK,SAAS,IAAI,OAAO,QAAQ,YAAY,CAAC,GAAG,UAAU,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AAClG,aAAS,QAAQ,OAAO,CAAC,GAAG,IAAI,MAAM,QAAQ,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACrE,UAAI,OAAO,MAAM,CAAC,GAAG;AACnB,iBAASC,YAAW,OAAO,KAAK,MAAM,KAAK,UAAU,GAAG,KAAK,GAAG,OAAOC,WAAUC,KAAI,MAAMJ,GAAE,GAAG,IAAI,GAAG,IAAIE,UAAS,QAAQ,IAAI,GAAG,EAAE,GAAG;AACtI,cAAI,QAAQA,UAAS,CAAC,GAAG;AACvB,YAAAG,kBAAS,OAAO,MAAML,KAAI,GAAGE,WAAUC,QAAO;AAAA,UAChD;AAAA,QACF;AACA,kBAAU,KAAKD,SAAQ;AACvB,gBAAQ,KAAK,IAAI;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAII,YAAW,WAAW,SAAS,MAAMN,GAAE;AACpD;;;ACzBA;AAEA,IAAIO,aAAYC,mBAAU,UAAU;AAErB,SAARA,qBAAmB;AACxB,SAAO,IAAID,WAAU,KAAK,SAAS,KAAK,QAAQ;AAClD;;;ACNA;AAMA,SAASE,WAAU,MAAM,aAAa;AACpC,MAAI,UACA,UACA;AACJ,SAAO,WAAW;AAChB,QAAI,UAAUC,YAAM,MAAM,IAAI,GAC1B,WAAW,KAAK,MAAM,eAAe,IAAI,GAAGA,YAAM,MAAM,IAAI;AAChE,WAAO,YAAY,UAAU,OACvB,YAAY,YAAY,YAAY,WAAW,eAC/C,eAAe,YAAY,WAAW,SAAS,WAAW,OAAO;AAAA,EACzE;AACF;AAEA,SAASC,aAAY,MAAM;AACzB,SAAO,WAAW;AAChB,SAAK,MAAM,eAAe,IAAI;AAAA,EAChC;AACF;AAEA,SAASC,eAAc,MAAM,aAAa,QAAQ;AAChD,MAAI,UACA,UAAU,SAAS,IACnB;AACJ,SAAO,WAAW;AAChB,QAAI,UAAUF,YAAM,MAAM,IAAI;AAC9B,WAAO,YAAY,UAAU,OACvB,YAAY,WAAW,eACvB,eAAe,YAAY,WAAW,SAAS,MAAM;AAAA,EAC7D;AACF;AAEA,SAASG,eAAc,MAAM,aAAa,OAAO;AAC/C,MAAI,UACA,UACA;AACJ,SAAO,WAAW;AAChB,QAAI,UAAUH,YAAM,MAAM,IAAI,GAC1B,SAAS,MAAM,IAAI,GACnB,UAAU,SAAS;AACvB,QAAI,UAAU,KAAM,WAAU,UAAU,KAAK,MAAM,eAAe,IAAI,GAAGA,YAAM,MAAM,IAAI;AACzF,WAAO,YAAY,UAAU,OACvB,YAAY,YAAY,YAAY,WAAW,gBAC9C,WAAW,SAAS,eAAe,YAAY,WAAW,SAAS,MAAM;AAAA,EAClF;AACF;AAEA,SAASI,kBAAiBC,KAAI,MAAM;AAClC,MAAI,KAAK,KAAK,WAAW,MAAM,WAAW,MAAM,QAAQ,SAAS,KAAKC;AACtE,SAAO,WAAW;AAChB,QAAI,WAAWC,KAAI,MAAMF,GAAE,GACvBG,MAAK,SAAS,IACd,WAAW,SAAS,MAAM,GAAG,KAAK,OAAOF,YAAWA,UAASL,aAAY,IAAI,KAAK;AAKtF,QAAIO,QAAO,OAAO,cAAc,SAAU,EAAC,OAAO,MAAMA,KAAI,KAAK,GAAG,GAAG,OAAO,YAAY,QAAQ;AAElG,aAAS,KAAK;AAAA,EAChB;AACF;AAEe,SAARC,eAAiB,MAAM,OAAO,UAAU;AAC7C,MAAI,KAAK,QAAQ,QAAQ,cAAcC,2BAAuBC;AAC9D,SAAO,SAAS,OAAO,KAClB,WAAW,MAAMZ,WAAU,MAAM,CAAC,CAAC,EACnC,GAAG,eAAe,MAAME,aAAY,IAAI,CAAC,IAC1C,OAAO,UAAU,aAAa,KAC7B,WAAW,MAAME,eAAc,MAAM,GAAGS,YAAW,MAAM,WAAW,MAAM,KAAK,CAAC,CAAC,EACjF,KAAKR,kBAAiB,KAAK,KAAK,IAAI,CAAC,IACtC,KACC,WAAW,MAAMF,eAAc,MAAM,GAAG,KAAK,GAAG,QAAQ,EACxD,GAAG,eAAe,MAAM,IAAI;AACnC;;;AC/EA;AAAA,SAASW,kBAAiB,MAAM,GAAG,UAAU;AAC3C,SAAO,SAAS,GAAG;AACjB,SAAK,MAAM,YAAY,MAAM,EAAE,KAAK,MAAM,CAAC,GAAG,QAAQ;AAAA,EACxD;AACF;AAEA,SAASC,YAAW,MAAM,OAAO,UAAU;AACzC,MAAI,GAAG;AACP,WAAS,QAAQ;AACf,QAAI,IAAI,MAAM,MAAM,MAAM,SAAS;AACnC,QAAI,MAAM,GAAI,MAAK,KAAK,MAAMD,kBAAiB,MAAM,GAAG,QAAQ;AAChE,WAAO;AAAA,EACT;AACA,QAAM,SAAS;AACf,SAAO;AACT;AAEe,SAARE,oBAAiB,MAAM,OAAO,UAAU;AAC7C,MAAI,MAAM,YAAY,QAAQ;AAC9B,MAAI,UAAU,SAAS,EAAG,SAAQ,MAAM,KAAK,MAAM,GAAG,MAAM,IAAI;AAChE,MAAI,SAAS,KAAM,QAAO,KAAK,MAAM,KAAK,IAAI;AAC9C,MAAI,OAAO,UAAU,WAAY,OAAM,IAAI;AAC3C,SAAO,KAAK,MAAM,KAAKD,YAAW,MAAM,OAAO,YAAY,OAAO,KAAK,QAAQ,CAAC;AAClF;;;ACvBA;AAEA,SAASE,cAAa,OAAO;AAC3B,SAAO,WAAW;AAChB,SAAK,cAAc;AAAA,EACrB;AACF;AAEA,SAASC,cAAa,OAAO;AAC3B,SAAO,WAAW;AAChB,QAAI,SAAS,MAAM,IAAI;AACvB,SAAK,cAAc,UAAU,OAAO,KAAK;AAAA,EAC3C;AACF;AAEe,SAARC,cAAiB,OAAO;AAC7B,SAAO,KAAK,MAAM,QAAQ,OAAO,UAAU,aACrCD,cAAaE,YAAW,MAAM,QAAQ,KAAK,CAAC,IAC5CH,cAAa,SAAS,OAAO,KAAK,QAAQ,EAAE,CAAC;AACrD;;;ACnBA;AAAA,SAASI,iBAAgB,GAAG;AAC1B,SAAO,SAAS,GAAG;AACjB,SAAK,cAAc,EAAE,KAAK,MAAM,CAAC;AAAA,EACnC;AACF;AAEA,SAASC,WAAU,OAAO;AACxB,MAAI,IAAI;AACR,WAAS,QAAQ;AACf,QAAI,IAAI,MAAM,MAAM,MAAM,SAAS;AACnC,QAAI,MAAM,GAAI,OAAM,KAAK,MAAMD,iBAAgB,CAAC;AAChD,WAAO;AAAA,EACT;AACA,QAAM,SAAS;AACf,SAAO;AACT;AAEe,SAARE,mBAAiB,OAAO;AAC7B,MAAI,MAAM;AACV,MAAI,UAAU,SAAS,EAAG,SAAQ,MAAM,KAAK,MAAM,GAAG,MAAM,IAAI;AAChE,MAAI,SAAS,KAAM,QAAO,KAAK,MAAM,KAAK,IAAI;AAC9C,MAAI,OAAO,UAAU,WAAY,OAAM,IAAI;AAC3C,SAAO,KAAK,MAAM,KAAKD,WAAU,KAAK,CAAC;AACzC;;;ACvBA;AAGe,SAARE,sBAAmB;AACxB,MAAI,OAAO,KAAK,OACZ,MAAM,KAAK,KACX,MAAMC,OAAM;AAEhB,WAAS,SAAS,KAAK,SAAS,IAAI,OAAO,QAAQ,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACpE,aAAS,QAAQ,OAAO,CAAC,GAAG,IAAI,MAAM,QAAQ,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACrE,UAAI,OAAO,MAAM,CAAC,GAAG;AACnB,YAAIC,WAAUC,KAAI,MAAM,GAAG;AAC3B,QAAAC,kBAAS,MAAM,MAAM,KAAK,GAAG,OAAO;AAAA,UAClC,MAAMF,SAAQ,OAAOA,SAAQ,QAAQA,SAAQ;AAAA,UAC7C,OAAO;AAAA,UACP,UAAUA,SAAQ;AAAA,UAClB,MAAMA,SAAQ;AAAA,QAChB,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAIG,YAAW,QAAQ,KAAK,UAAU,MAAM,GAAG;AACxD;;;ACvBA;AAEe,SAARC,eAAmB;AACxB,MAAI,KAAK,KAAK,OAAO,MAAMC,MAAK,KAAK,KAAK,OAAO,KAAK,KAAK;AAC3D,SAAO,IAAI,QAAQ,SAASC,UAAS,QAAQ;AAC3C,QAAI,SAAS,EAAC,OAAO,OAAM,GACvB,MAAM,EAAC,OAAO,WAAW;AAAE,UAAI,EAAE,SAAS,EAAG,CAAAA,SAAQ;AAAA,IAAG,EAAC;AAE7D,SAAK,KAAK,WAAW;AACnB,UAAI,WAAWC,KAAI,MAAMF,GAAE,GACvBG,MAAK,SAAS;AAKlB,UAAIA,QAAO,KAAK;AACd,eAAO,MAAMA,KAAI,KAAK;AACtB,YAAI,EAAE,OAAO,KAAK,MAAM;AACxB,YAAI,EAAE,UAAU,KAAK,MAAM;AAC3B,YAAI,EAAE,IAAI,KAAK,GAAG;AAAA,MACpB;AAEA,eAAS,KAAK;AAAA,IAChB,CAAC;AAGD,QAAI,SAAS,EAAG,CAAAF,SAAQ;AAAA,EAC1B,CAAC;AACH;;;AnCNA,IAAIG,MAAK;AAEF,SAASC,YAAW,QAAQ,SAAS,MAAMD,KAAI;AACpD,OAAK,UAAU;AACf,OAAK,WAAW;AAChB,OAAK,QAAQ;AACb,OAAK,MAAMA;AACb;AAEe,SAARE,YAA4B,MAAM;AACvC,SAAOC,mBAAU,EAAE,WAAW,IAAI;AACpC;AAEO,SAASC,SAAQ;AACtB,SAAO,EAAEJ;AACX;AAEA,IAAIK,uBAAsBF,mBAAU;AAEpCF,YAAW,YAAYC,YAAW,YAAY;AAAA,EAC5C,aAAaD;AAAA,EACb,QAAQK;AAAA,EACR,WAAWC;AAAA,EACX,QAAQC;AAAA,EACR,OAAOC;AAAA,EACP,WAAWN;AAAA,EACX,YAAYO;AAAA,EACZ,MAAML,qBAAoB;AAAA,EAC1B,OAAOA,qBAAoB;AAAA,EAC3B,MAAMA,qBAAoB;AAAA,EAC1B,MAAMA,qBAAoB;AAAA,EAC1B,OAAOA,qBAAoB;AAAA,EAC3B,MAAMA,qBAAoB;AAAA,EAC1B,IAAIM;AAAA,EACJ,MAAMC;AAAA,EACN,WAAWC;AAAA,EACX,OAAOC;AAAA,EACP,YAAYC;AAAA,EACZ,MAAMC;AAAA,EACN,WAAWC;AAAA,EACX,QAAQC;AAAA,EACR,OAAOC;AAAA,EACP,OAAOC;AAAA,EACP,UAAUC;AAAA,EACV,MAAMC;AAAA,EACN,aAAaC;AAAA,EACb,KAAKC;AAAA,EACL,CAAC,OAAO,QAAQ,GAAGnB,qBAAoB,OAAO,QAAQ;AACxD;;;AoCtEA;;;ACAA;AAQO,SAASoB,YAAW,GAAG;AAC5B,WAAS,KAAK,MAAM,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,IAAI,KAAK;AAC9D;;;AtCLA,IAAIC,iBAAgB;AAAA,EAClB,MAAM;AAAA;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AAAA,EACV,MAAMC;AACR;AAEA,SAASC,SAAQ,MAAMC,KAAI;AACzB,MAAI;AACJ,SAAO,EAAE,SAAS,KAAK,iBAAiB,EAAE,SAAS,OAAOA,GAAE,IAAI;AAC9D,QAAI,EAAE,OAAO,KAAK,aAAa;AAC7B,YAAM,IAAI,MAAM,cAAcA,GAAE,YAAY;AAAA,IAC9C;AAAA,EACF;AACA,SAAO;AACT;AAEe,SAARC,oBAAiB,MAAM;AAC5B,MAAID,KACA;AAEJ,MAAI,gBAAgBE,aAAY;AAC9B,IAAAF,MAAK,KAAK,KAAK,OAAO,KAAK;AAAA,EAC7B,OAAO;AACL,IAAAA,MAAKG,OAAM,IAAI,SAASN,gBAAe,OAAOO,KAAI,GAAG,OAAO,QAAQ,OAAO,OAAO,OAAO;AAAA,EAC3F;AAEA,WAAS,SAAS,KAAK,SAAS,IAAI,OAAO,QAAQ,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACpE,aAAS,QAAQ,OAAO,CAAC,GAAG,IAAI,MAAM,QAAQ,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACrE,UAAI,OAAO,MAAM,CAAC,GAAG;AACnB,QAAAC,kBAAS,MAAM,MAAML,KAAI,GAAG,OAAO,UAAUD,SAAQ,MAAMC,GAAE,CAAC;AAAA,MAChE;AAAA,IACF;AAAA,EACF;AAEA,SAAO,IAAIE,YAAW,QAAQ,KAAK,UAAU,MAAMF,GAAE;AACvD;;;ATrCAM,mBAAU,UAAU,YAAYC;AAChCD,mBAAU,UAAU,aAAaE;;;AgDLjC;;;ACAA;;;ACAA;;;ACAA;AAAO,SAAS,UAAU,GAAG,GAAG,GAAG;AACjC,OAAK,IAAI;AACT,OAAK,IAAI;AACT,OAAK,IAAI;AACX;AAEA,UAAU,YAAY;AAAA,EACpB,aAAa;AAAA,EACb,OAAO,SAAS,GAAG;AACjB,WAAO,MAAM,IAAI,OAAO,IAAI,UAAU,KAAK,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;AAAA,EAClE;AAAA,EACA,WAAW,SAAS,GAAG,GAAG;AACxB,WAAO,MAAM,IAAI,MAAM,IAAI,OAAO,IAAI,UAAU,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,IAAI,CAAC;AAAA,EAClG;AAAA,EACA,OAAO,SAAS,OAAO;AACrB,WAAO,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC;AAAA,EAChE;AAAA,EACA,QAAQ,SAAS,GAAG;AAClB,WAAO,IAAI,KAAK,IAAI,KAAK;AAAA,EAC3B;AAAA,EACA,QAAQ,SAAS,GAAG;AAClB,WAAO,IAAI,KAAK,IAAI,KAAK;AAAA,EAC3B;AAAA,EACA,QAAQ,SAASC,WAAU;AACzB,WAAO,EAAEA,UAAS,CAAC,IAAI,KAAK,KAAK,KAAK,IAAIA,UAAS,CAAC,IAAI,KAAK,KAAK,KAAK,CAAC;AAAA,EAC1E;AAAA,EACA,SAAS,SAAS,GAAG;AACnB,YAAQ,IAAI,KAAK,KAAK,KAAK;AAAA,EAC7B;AAAA,EACA,SAAS,SAAS,GAAG;AACnB,YAAQ,IAAI,KAAK,KAAK,KAAK;AAAA,EAC7B;AAAA,EACA,UAAU,SAAS,GAAG;AACpB,WAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAAA,EAC3E;AAAA,EACA,UAAU,SAAS,GAAG;AACpB,WAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAAA,EAC3E;AAAA,EACA,UAAU,WAAW;AACnB,WAAO,eAAe,KAAK,IAAI,MAAM,KAAK,IAAI,aAAa,KAAK,IAAI;AAAA,EACtE;AACF;AAEO,IAAIC,YAAW,IAAI,UAAU,GAAG,GAAG,CAAC;AAE3C,UAAU,YAAY,UAAU;AAEjB,SAAR,UAA2B,MAAM;AACtC,SAAO,CAAC,KAAK,OAAQ,KAAI,EAAE,OAAO,KAAK,YAAa,QAAOA;AAC3D,SAAO,KAAK;AACd;;;AClDA;;;ACAA;AAAO,SAAS,WAAW,QAAQ;AACjC,SAAO,OACJ,UAAU,KAAK,EACf,QAAQ,oBAAoB,EAAE,EAC9B,QAAQ,MAAM,GAAG,EACjB,QAAQ,gBAAgB,EAAE,EAC1B,YAAY;AACjB;;;A7NDA,wBAAuB;;;A8NNvB;AAAO,IAAM,WAAW;AAAA,EACtB,UAAU;AAAA,IACR,QAAQ;AAAA;AAAA,IACR,QAAQ;AAAA;AAAA,IACR,SAAS;AAAA;AAAA,IACT,UAAW;AAAA;AAAA,IACX,WAAW;AAAA;AAAA,EACb;AAAA,EACA,QAAQ;AAAA,IACN,WAAW;AAAA;AAAA,IACX,SAAS;AAAA;AAAA,IACT,UAAU;AAAA;AAAA,EACZ;AACF;;;ACbA;;;ACAA;AAAA;AACA;AACA;AACA;;;ADAA,EAAE,GAAG,WAAW,SAAS,IAAI,IAAI;AAAA,EAC/B,MAAM,CAAC,UAAU,UAAU,WAAW,aAAa,YAAY,UAAU,UAAU;AAAA,EACnF,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,EAC3D,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAAA,EAClD,QAAQ,CAAC,WAAW,YAAY,SAAS,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UAAU;AAAA,EACjI,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,EAChG,OAAO;AAAA,EACP,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,UAAU;AACZ;AAEA,EAAE,GAAG,WAAW,SAAS,IAAI,IAAI;AAAA,EAC/B,MAAM,CAAC,YAAY,WAAW,WAAW,YAAY,UAAU,aAAa,UAAU;AAAA,EACtF,WAAW,CAAC,OAAO,QAAQ,QAAQ,QAAQ,OAAO,OAAO,KAAK;AAAA,EAC9D,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAAA,EAClD,QAAQ,CAAC,SAAS,UAAU,WAAQ,SAAS,QAAQ,QAAQ,UAAU,SAAS,YAAY,WAAW,YAAY,UAAU;AAAA,EAC7H,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,EAChG,OAAO;AAAA,EACP,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,UAAU;AACZ;AAEA,EAAE,GAAG,WAAW,SAAS,IAAI,IAAI;AAAA,EAC/B,MAAM,CAAC,WAAW,SAAS,UAAU,gBAAa,UAAU,WAAW,WAAQ;AAAA,EAC/E,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,EAC3D,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAAA,EAClD,QAAQ,CAAC,SAAS,WAAW,SAAS,SAAS,QAAQ,SAAS,SAAS,UAAU,cAAc,WAAW,aAAa,WAAW;AAAA,EACpI,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,EAChG,OAAO;AAAA,EACP,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,UAAU;AACZ;AAGO,IAAM,aAAN,MAAiB;AAAA,EACtB,YAAY,MAAM,SAAS;AACzB,SAAK,UAAU,QAAQ;AAEvB,QAAI,KAAK,SAAS;AAChB,YAAM,YAAY,EAAE,KAAK,OAAO;AAChC,UAAI,UAAU,KAAK,YAAY,MAAM,QAAW;AAC9C,kBAAU,WAAW,OAAO;AAAA,MAC9B;AAEA,aAAO,UAAU,KAAK,YAAY;AAAA,IACpC;AAAA,EACF;AAAA,EAEA,UAAU;AACR,MAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAE,QAAQ;AAAA,EAC7C;AACF;;;AE5DA;AAAO,IAAM,WAAW,QAAM;AAC5B,KAAG,kBAAkB,cAAc,eAAe,EAAE,iBAAiB,SAAS,MAAM,GAAG,UAAU,IAAI,WAAW,CAAC;AACjH,KAAG,iBAAiB,cAAc,eAAe,EAAE,iBAAiB,SAAS,MAAM,GAAG,UAAU,OAAO,WAAW,CAAC;AACrH;AAGA,EAAE,QAAQ,EAAE,GAAG,mBAAmB,WAAW;AAC3C,QAAM,WAAW,SAAS,iBAAiB,eAAe;AAC1D,WAAS,QAAQ,QAAM,SAAS,EAAE,CAAC;AACrC,CAAC;;;ACTD;;;ACAA;AAAO,IAAM,gBAAN,MAAoB;AAAA,EACzB,YAAY,UAAU;AACpB,QAAI,UAAU;AACZ,YAAM,QAAQ,KAAK,QAAQ,QAAQ;AAEnC,UAAI,SAAS,KAAK,cAAc,QAAQ,GAAG;AACzC,cAAM,UAAU;AAAA,UACd,MAAM;AAAA,UACN,qBAAqB;AAAA,UACrB,gBAAgB;AAAA,UAChB,OAAO;AAAA,YACL,aAAa;AAAA,UACf;AAAA,UACA,OAAO;AAAA,YACL,KAAK,QAAQ,SAAS,MAAM,SAAS,cAAc,KAAK,EAAE;AAAA,UAC5D;AAAA,QACF;AAEA,UAAE,QAAQ,EAAE,cAAc,OAAO;AAAA,MACnC,OAAO;AACL,gBAAQ,KAAK,uDAAuD;AAAA,MACtE;AAAA,IACF,OAAO;AACL,cAAQ,KAAK,2CAA2C;AAAA,IAC1D;AAAA,EACF;AAAA,EAEA,QAAQ,MAAM;AACZ,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EAEA,cAAc,MAAM;AAClB,WAAO,KAAK,cAAc,KAAK,MAAM;AAAA,EACvC;AACF;AAGA,EAAE,QAAQ,EAAE,GAAG,mBAAmB,WAAW;AAC3C,QAAM,aAAa,SAAS,iBAAiB,oBAAoB;AACjE,aAAW,QAAQ,cAAY,IAAI,cAAc,QAAQ,CAAC;AAC5D,CAAC;;;ADtCM,IAAM,qBAAN,MAAyB;AAAA,EAC9B,YAAY,UAAU;AACpB,QAAI,UAAU;AACZ,WAAK,UAAU,SAAS;AACxB,WAAK,OAAO,SAAS,cAAc,aAAa;AAChD,WAAK,OAAO,SAAS,cAAc,aAAa;AAGhD,YAAM,EAAE,cAAc,WAAW,IAAI,SAAS;AAC9C,WAAK,QAAQ;AACb,WAAK,aAAa;AAElB,UAAI,KAAK,cAAc,KAAK,QAAQ,SAAS,SAAS,GAAG;AACvD,iBAAS,WAAW,aAAa,SAAS,cAAc,KAAK,GAAG,SAAS,WAAW,iBAAiB;AACrG,aAAK,mBAAmB,KAAK,QAAQ,iBAAiB;AAGtD,cAAM,KAAK,KAAK,QAAQ,QAAQ,EAAE,QAAQ,WAAS;AACjD,gBAAM,iBAAiB,SAAS,KAAK,iBAAiB,KAAK,IAAI,CAAC;AAChE,gBAAM,UAAU,IAAI,cAAc;AAAA,QACpC,CAAC;AAED,cAAM,MAAM,CAAC,GAAG,KAAK,QAAQ,QAAQ,EAAE,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,sBAAsB,EAAE,OAAO,CAAC,IAAI,KAAK,QAAQ,SAAS;AAE5H,aAAK,eAAe,KAAK,QAAQ,sBAAsB,EAAE,QAAQ;AAAA,MACnE,OAAO;AACL,aAAK,eAAe,SAAS,YAAY,KAAK;AAC9C,cAAM,KAAK,KAAK,QAAQ,QAAQ,EAAE,QAAQ,WAAU,MAAM,MAAM,OAAO,mBAAmB,KAAK,YAAY,GAAI;AAAA,MACjH;AAEA,WAAK,YAAY,KAAK,QAAQ,SAAS,SAAS,KAAK,iBAAiB,MAAM,KAAK;AAGjF,WAAK,cAAc,KAAK,MAAM,KAAK,QAAQ,KAAK,QAAQ;AACxD,WAAK,cAAc,KAAK,MAAM,KAAK,UAAU,CAAC;AAG9C,WAAK,KAAK,iBAAiB,SAAS,KAAK,YAAY,KAAK,IAAI,CAAC;AAC/D,WAAK,KAAK,iBAAiB,SAAS,KAAK,YAAY,KAAK,IAAI,CAAC;AAAA,IACjE,OAAO;AACL,cAAQ,KAAK,gDAAgD;AAAA,IAC/D;AAAA,EACF;AAAA,EAEA,eAAe;AACb,SAAK,QAAQ,MAAM,YAAY,cAAc,KAAK,KAAK;AAAA,EACzD;AAAA,EAEA,cAAc,SAAS,UAAU,MAAM;AACrC,YAAQ,MAAM,aAAa,UAAU,YAAY;AAAA,EACnD;AAAA,EAEA,mBAAmB,MAAM;AACvB,UAAM,WAAW,KAAK,QAAQ;AAC9B,UAAM,OAAO,KAAK,UAAU,IAAI;AAChC,SAAK,UAAU,OAAO,cAAc;AACpC,SAAK,UAAU,IAAI,WAAW;AAC9B,SAAK,QAAQ;AACb,aAAS,WAAW,aAAa,MAAM,SAAS,WAAW,iBAAiB;AAE5E,QAAI,cAAc,IAAI;AAEtB,SAAK,cAAc,KAAK,EAAE,iBAAiB,QAAQ,KAAK,YAAY,KAAK,IAAI,CAAC;AAAA,EAChF;AAAA,EAEA,cAAc;AACZ,QAAI,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,UAAU;AACxC,WAAK,SAAS,MAAM,KAAK;AACzB,WAAK,QAAQ,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,WAAW,KAAK,KAAK,WAAW,KAAK;AACzF,WAAK,aAAa,KAAK,KAAK;AAAA,IAC9B;AAEA,SAAK,cAAc,KAAK,MAAM,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,QAAQ;AAClE,SAAK,cAAc,KAAK,MAAM,KAAK,QAAQ,CAAC;AAAA,EAC9C;AAAA,EAEA,cAAc;AACZ,QAAI,KAAK,QAAQ,GAAG;AAClB,WAAK,SAAS,MAAM,KAAK;AACzB,WAAK,QAAQ,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,KAAK;AAClD,WAAK,aAAa,KAAK,KAAK;AAAA,IAC9B;AAEA,SAAK,cAAc,KAAK,MAAM,KAAK,QAAQ,CAAC;AAC5C,SAAK,cAAc,KAAK,MAAM,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,QAAQ;AAAA,EACpE;AAAA,EAEA,iBAAiB,EAAE,cAAc,GAAG;AAClC,SAAK,mBAAmB,aAAa;AAAA,EACvC;AAAA,EAEA,YAAY,EAAE,QAAAC,QAAO,GAAG;AACtB,UAAM,EAAE,eAAe,aAAa,IAAIA;AACxC,QAAI,gBAAgB,cAAc;AAChC,MAAAA,QAAO,UAAU,IAAI,aAAa;AAAA,IACpC;AAAA,EACF;AAAA,EAEA,UAAU;AACR,SAAK,KAAK,oBAAoB,SAAS,KAAK,YAAY,KAAK,IAAI,CAAC;AAClE,SAAK,KAAK,oBAAoB,SAAS,KAAK,YAAY,KAAK,IAAI,CAAC;AAElE,QAAI,KAAK,cAAc,KAAK,QAAQ,SAAS,SAAS,GAAG;AACvD,YAAM,KAAK,KAAK,QAAQ,QAAQ,EAAE,QAAQ,WAAS,MAAM,oBAAoB,SAAS,KAAK,iBAAiB,KAAK,IAAI,CAAC,CAAC;AAAA,IACzH;AAAA,EACF;AACF;AAGA,EAAE,QAAQ,EAAE,GAAG,mBAAmB,WAAW;AAC3C,QAAM,YAAY,SAAS,iBAAiB,yBAAyB;AACrE,YAAU,QAAQ,cAAY,IAAI,mBAAmB,QAAQ,CAAC;AAChE,CAAC;;;AElHD;AACO,IAAM,cAAN,MAAkB;AAAA,EACvB,YAAY,EAAE,MAAM,KAAAC,OAAM,GAAG,KAAAC,OAAM,KAAK,eAAe,CAACD,MAAKC,IAAG,GAAG,gBAAgB,MAAM;AAAA,EAAC,EAAE,GAAG;AAC7F,SAAK,UAAU,QAAQ;AAEvB,QAAI,KAAK,SAAS;AAChB,QAAE,KAAK,OAAO,EAAE,OAAO;AAAA,QACrB,OAAO;AAAA,QACP,KAAAD;AAAA,QACA,KAAAC;AAAA,QACA,QAAQ;AAAA,QACR,OAAO;AAAA,MACT,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,UAAU;AACR,MAAE,KAAK,OAAO,EAAE,OAAO,SAAS;AAAA,EAClC;AACF;;;ACnBA;;;ACAA;AAAO,IAAM,YAAY,CAAC,QAAQ,CAAC,MAAM;AACvC,QAAM,OAAO,KAAK,UAAU;AAE5B,SAAO,OAAO,UAAU,eAAe,KAAK,OAAO,IAAI,KAAK,MAAM,IAAI,IAClE,MAAM,IAAI,IACV,MAAM,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC;AACjC;AAEO,IAAM,QAAQ,CAAC,OAAOC,QAAO,CAAC,MAAM;AACzC,QAAM,OAAO,KAAK,UAAU;AAC5B,QAAM,UAAU,EAAE,OAAO,YAAY,UAAU,OAAO,GAAGA,MAAK;AAC9D,SAAO,UAAU,UAAa,UAAU,OACpC,WAAW,KAAK,EAAE,eAAe,MAAM,OAAO,IAC9C;AACN;AAEO,IAAM,OAAO,CAAC,OAAOA,QAAO,CAAC,MAAM;AACxC,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,OAAO,KAAK,UAAU;AAC5B,SAAO,iBAAiB,OACpB,MAAM,mBAAmB,MAAMA,KAAI,IACnC,IAAI,KAAK,KAAK,EAAE,mBAAmB,MAAMA,KAAI;AACnD;AAEO,IAAM,WAAW,CAAC,QAAQ,IAAIA,QAAO,CAAC,MAAM;AACjD,QAAM,EAAE,SAAS,IAAI,WAAW,SAAI,IAAIA;AACxC,SAAO,MAAM,UAAU,SACnB,QACA,GAAG,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,QAAQ;AAC9C;AAEO,IAAM,UAAU,WAAS;AAC9B,MAAI,OAAO,UAAU,SAAU;AAC/B,UAAQ,QAAQ,KAAK,eAAe,KAAK,QAAQ;AAAA,IAC/C,OAAO;AAAA,IACP,uBAAuB;AAAA,EACzB,CAAC;AACH;AAEO,IAAM,kBAAkB;AAAA,EAC7B,SAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;ADpDO,IAAM,aAAN,MAAiB;AAAA,EACtB,YAAY,EAAE,YAAY,QAAQ,GAAG;AACnC,SAAK,aAAa,cAAc,CAAC;AACjC,SAAK,UAAU,WAAW,CAAC;AAAA,EAC7B;AAAA,EAEA,WAAW,OAAO;AAChB,UAAM,UAAU,CAAC;AAEjB,aAASC,SAAQ,GAAGA,SAAQ,KAAK,QAAQ,QAAQA,UAAS;AACxD,YAAM,EAAE,IAAI,KAAK,GAAG,KAAK,IAAI,KAAK,QAAQA,MAAK;AAC/C,YAAM,UAAU,MAAM,GAAG;AACzB,YAAM,EAAE,YAAYC,OAAM,kBAAkB,UAAU,CAAC,GAAG,mBAAmB,QAAQ,CAAC,EAAE,IAAI,KAAK,mBAAmB,GAAG;AAEvH,cAAQ,KAAK;AAAA,QACX,GAAG;AAAA,QACH,GAAG;AAAA,QACH,OAAO,UAAU,KAAK;AAAA,QACtB,SAAS,MAAM,QAAQ,OAAO,IAAI,QAAQ,IAAI,UAAQ,EAAE,GAAG,KAAK,OAAO,UAAU,IAAI,iBAAiB,EAAE,EAAE,IAAI,CAAC;AAAA,QAC/G,MAAMA,QAAOA,QAAO;AAAA,QACpB;AAAA,MACF,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,mBAAmB,MAAM;AACvB,UAAM,EAAE,aAAa,CAAC,EAAE,IACtB,KAAK,WAAW,KAAK,WAAS;AAC5B,YAAM,EAAE,YAAY,EAAE,KAAAC,OAAM,GAAG,IAAI,CAAC,EAAE,IAAI;AAC1C,aAAOA,SAAQ;AAAA,IACjB,CAAC,KAAK,CAAC;AAET,WAAO;AAAA,EACT;AACF;;;AEtCA;AAAO,IAAM,WAAW,CAAC,MAAMC,aAAY;AACzC,MAAIC,SAAQ;AACZ,SAAO,IAAI,SAAS;AAClB,UAAMC,QAAO,MAAM,KAAK,GAAG,IAAI;AAC/B,QAAID,QAAO;AACT,mBAAaA,MAAK;AAAA,IACpB;AACA,IAAAA,SAAQ,WAAWC,OAAMF,WAAU,IAAIA,WAAU,GAAG;AAAA,EACtD;AACF;;;ACTA;AAAA,sBAAoB;AAQpB,IAAM,UAAU,CAAC,GAAG,gBAAAG,QAAQ,UAAU,MAAM,EAAE,QAAQ;;;ACRtD;;;ACAA;AAGO,IAAM,gBAAgB,CAAC,UAAU;AACtC,QAAM,OAAO,KAAK,UAAU;AAC5B,SAAO,MAAM,SAAS,EAAE,UAAU,IAAO,OAAO,KAAK,EAAE,KAAK,IAAO,cAAoB,kBAAS,IAAI,CAAC,EAAE,OAAO,MAAM,EAAE,KAAK;AAC7H;;;ACNA;A;;;;;ACAA;AAgBA,IAAI,gBAAgB,SAAS,GAAG,GAAG;AACjC,kBAAgB,OAAO,kBAClB,EAAE,WAAW,CAAC,EAAE,aAAa,SAAS,SAAUC,IAAGC,IAAG;AAAE,IAAAD,GAAE,YAAYC;AAAA,EAAG,KAC1E,SAAUD,IAAGC,IAAG;AAAE,aAAS,KAAKA,GAAG,KAAI,OAAO,UAAU,eAAe,KAAKA,IAAG,CAAC,EAAG,CAAAD,GAAE,CAAC,IAAIC,GAAE,CAAC;AAAA,EAAG;AACpG,SAAO,cAAc,GAAG,CAAC;AAC3B;AAEO,SAAS,UAAU,GAAG,GAAG;AAC9B,MAAI,OAAO,MAAM,cAAc,MAAM;AACjC,UAAM,IAAI,UAAU,yBAAyB,OAAO,CAAC,IAAI,+BAA+B;AAC5F,gBAAc,GAAG,CAAC;AAClB,WAAS,KAAK;AAAE,SAAK,cAAc;AAAA,EAAG;AACtC,IAAE,YAAY,MAAM,OAAO,OAAO,OAAO,CAAC,KAAK,GAAG,YAAY,EAAE,WAAW,IAAI,GAAG;AACpF;AAEO,IAAI,WAAW,WAAW;AAC/B,aAAW,OAAO,UAAU,SAASC,UAAS,GAAG;AAC7C,aAAS,GAAG,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAI,GAAG,KAAK;AACjD,UAAI,UAAU,CAAC;AACf,eAAS,KAAK,EAAG,KAAI,OAAO,UAAU,eAAe,KAAK,GAAG,CAAC,EAAG,GAAE,CAAC,IAAI,EAAE,CAAC;AAAA,IAC/E;AACA,WAAO;AAAA,EACX;AACA,SAAO,SAAS,MAAM,MAAM,SAAS;AACvC;AA0EO,SAAS,UAAU,SAAS,YAAY,GAAG,WAAW;AAC3D,WAAS,MAAM,OAAO;AAAE,WAAO,iBAAiB,IAAI,QAAQ,IAAI,EAAE,SAAUC,UAAS;AAAE,MAAAA,SAAQ,KAAK;AAAA,IAAG,CAAC;AAAA,EAAG;AAC3G,SAAO,KAAK,MAAM,IAAI,UAAU,SAAUA,UAAS,QAAQ;AACvD,aAAS,UAAU,OAAO;AAAE,UAAI;AAAE,aAAK,UAAU,KAAK,KAAK,CAAC;AAAA,MAAG,SAAS,GAAG;AAAE,eAAO,CAAC;AAAA,MAAG;AAAA,IAAE;AAC1F,aAAS,SAAS,OAAO;AAAE,UAAI;AAAE,aAAK,UAAU,OAAO,EAAE,KAAK,CAAC;AAAA,MAAG,SAAS,GAAG;AAAE,eAAO,CAAC;AAAA,MAAG;AAAA,IAAE;AAC7F,aAAS,KAAK,QAAQ;AAAE,aAAO,OAAOA,SAAQ,OAAO,KAAK,IAAI,MAAM,OAAO,KAAK,EAAE,KAAK,WAAW,QAAQ;AAAA,IAAG;AAC7G,UAAM,YAAY,UAAU,MAAM,SAAS,cAAc,CAAC,CAAC,GAAG,KAAK,CAAC;AAAA,EACxE,CAAC;AACH;AAEO,SAAS,YAAY,SAAS,MAAM;AACzC,MAAI,IAAI,EAAE,OAAO,GAAG,MAAM,WAAW;AAAE,QAAI,EAAE,CAAC,IAAI,EAAG,OAAM,EAAE,CAAC;AAAG,WAAO,EAAE,CAAC;AAAA,EAAG,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG;AAC/G,SAAO,IAAI,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,KAAK,CAAC,GAAG,UAAU,KAAK,CAAC,EAAE,GAAG,OAAO,WAAW,eAAe,EAAE,OAAO,QAAQ,IAAI,WAAW;AAAE,WAAO;AAAA,EAAM,IAAI;AACvJ,WAAS,KAAK,GAAG;AAAE,WAAO,SAAU,GAAG;AAAE,aAAO,KAAK,CAAC,GAAG,CAAC,CAAC;AAAA,IAAG;AAAA,EAAG;AACjE,WAAS,KAAK,IAAI;AACd,QAAI,EAAG,OAAM,IAAI,UAAU,iCAAiC;AAC5D,WAAO,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,EAAG,KAAI;AAC1C,UAAI,IAAI,GAAG,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,EAAE,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,OAAO,IAAI,EAAE,QAAQ,MAAM,EAAE,KAAK,CAAC,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,KAAM,QAAO;AAC3J,UAAI,IAAI,GAAG,EAAG,MAAK,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,KAAK;AACtC,cAAQ,GAAG,CAAC,GAAG;AAAA,QACX,KAAK;AAAA,QAAG,KAAK;AAAG,cAAI;AAAI;AAAA,QACxB,KAAK;AAAG,YAAE;AAAS,iBAAO,EAAE,OAAO,GAAG,CAAC,GAAG,MAAM,MAAM;AAAA,QACtD,KAAK;AAAG,YAAE;AAAS,cAAI,GAAG,CAAC;AAAG,eAAK,CAAC,CAAC;AAAG;AAAA,QACxC,KAAK;AAAG,eAAK,EAAE,IAAI,IAAI;AAAG,YAAE,KAAK,IAAI;AAAG;AAAA,QACxC;AACI,cAAI,EAAE,IAAI,EAAE,MAAM,IAAI,EAAE,SAAS,KAAK,EAAE,EAAE,SAAS,CAAC,OAAO,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI;AAAE,gBAAI;AAAG;AAAA,UAAU;AAC3G,cAAI,GAAG,CAAC,MAAM,MAAM,CAAC,KAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,IAAK;AAAE,cAAE,QAAQ,GAAG,CAAC;AAAG;AAAA,UAAO;AACrF,cAAI,GAAG,CAAC,MAAM,KAAK,EAAE,QAAQ,EAAE,CAAC,GAAG;AAAE,cAAE,QAAQ,EAAE,CAAC;AAAG,gBAAI;AAAI;AAAA,UAAO;AACpE,cAAI,KAAK,EAAE,QAAQ,EAAE,CAAC,GAAG;AAAE,cAAE,QAAQ,EAAE,CAAC;AAAG,cAAE,IAAI,KAAK,EAAE;AAAG;AAAA,UAAO;AAClE,cAAI,EAAE,CAAC,EAAG,GAAE,IAAI,IAAI;AACpB,YAAE,KAAK,IAAI;AAAG;AAAA,MACtB;AACA,WAAK,KAAK,KAAK,SAAS,CAAC;AAAA,IAC7B,SAAS,GAAG;AAAE,WAAK,CAAC,GAAG,CAAC;AAAG,UAAI;AAAA,IAAG,UAAE;AAAU,UAAI,IAAI;AAAA,IAAG;AACzD,QAAI,GAAG,CAAC,IAAI,EAAG,OAAM,GAAG,CAAC;AAAG,WAAO,EAAE,OAAO,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,QAAQ,MAAM,KAAK;AAAA,EACnF;AACF;AAkBO,SAAS,SAAS,GAAG;AAC1B,MAAI,IAAI,OAAO,WAAW,cAAc,OAAO,UAAU,IAAI,KAAK,EAAE,CAAC,GAAG,IAAI;AAC5E,MAAI,EAAG,QAAO,EAAE,KAAK,CAAC;AACtB,MAAI,KAAK,OAAO,EAAE,WAAW,SAAU,QAAO;AAAA,IAC1C,MAAM,WAAY;AACd,UAAI,KAAK,KAAK,EAAE,OAAQ,KAAI;AAC5B,aAAO,EAAE,OAAO,KAAK,EAAE,GAAG,GAAG,MAAM,CAAC,EAAE;AAAA,IAC1C;AAAA,EACJ;AACA,QAAM,IAAI,UAAU,IAAI,4BAA4B,iCAAiC;AACvF;AAEO,SAAS,OAAO,GAAG,GAAG;AAC3B,MAAI,IAAI,OAAO,WAAW,cAAc,EAAE,OAAO,QAAQ;AACzD,MAAI,CAAC,EAAG,QAAO;AACf,MAAI,IAAI,EAAE,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG;AAC/B,MAAI;AACA,YAAQ,MAAM,UAAU,MAAM,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,KAAM,IAAG,KAAK,EAAE,KAAK;AAAA,EAC7E,SACO,OAAO;AAAE,QAAI,EAAE,MAAa;AAAA,EAAG,UACtC;AACI,QAAI;AACA,UAAI,KAAK,CAAC,EAAE,SAAS,IAAI,EAAE,QAAQ,GAAI,GAAE,KAAK,CAAC;AAAA,IACnD,UACA;AAAU,UAAI,EAAG,OAAM,EAAE;AAAA,IAAO;AAAA,EACpC;AACA,SAAO;AACT;AAkBO,SAAS,cAAc,IAAI,MAAM,MAAM;AAC5C,MAAI,QAAQ,UAAU,WAAW,EAAG,UAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,IAAI,GAAG,KAAK;AACjF,QAAI,MAAM,EAAE,KAAK,OAAO;AACpB,UAAI,CAAC,GAAI,MAAK,MAAM,UAAU,MAAM,KAAK,MAAM,GAAG,CAAC;AACnD,SAAG,CAAC,IAAI,KAAK,CAAC;AAAA,IAClB;AAAA,EACJ;AACA,SAAO,GAAG,OAAO,MAAM,MAAM,UAAU,MAAM,KAAK,IAAI,CAAC;AACzD;;;AC5NA;A;;;;;ACDA;AAoLO,SAASC,QAAO,GAAG,GAAG;AAC3B,MAAI,IAAI,OAAO,WAAW,cAAc,EAAE,OAAO,QAAQ;AACzD,MAAI,CAAC,EAAG,QAAO;AACf,MAAI,IAAI,EAAE,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG;AAC/B,MAAI;AACA,YAAQ,MAAM,UAAU,MAAM,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,KAAM,IAAG,KAAK,EAAE,KAAK;AAAA,EAC7E,SACO,OAAO;AAAE,QAAI,EAAE,MAAa;AAAA,EAAG,UACtC;AACI,QAAI;AACA,UAAI,KAAK,CAAC,EAAE,SAAS,IAAI,EAAE,QAAQ,GAAI,GAAE,KAAK,CAAC;AAAA,IACnD,UACA;AAAU,UAAI,EAAG,OAAM,EAAE;AAAA,IAAO;AAAA,EACpC;AACA,SAAO;AACT;AAkBO,SAASC,eAAc,IAAI,MAAM,MAAM;AAC5C,MAAI,QAAQ,UAAU,WAAW,EAAG,UAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,IAAI,GAAG,KAAK;AACjF,QAAI,MAAM,EAAE,KAAK,OAAO;AACpB,UAAI,CAAC,GAAI,MAAK,MAAM,UAAU,MAAM,KAAK,MAAM,GAAG,CAAC;AACnD,SAAG,CAAC,IAAI,KAAK,CAAC;AAAA,IAClB;AAAA,EACJ;AACA,SAAO,GAAG,OAAO,MAAM,MAAM,UAAU,MAAM,KAAK,IAAI,CAAC;AACzD;;;ACzKM,SAAU,UAAO;AAAC,MAAA,QAAA,CAAA;WAAA,KAAA,GAAA,KAAA,UAAA,QAAA,MAAoB;AAApB,UAAA,EAAA,IAAA,UAAA,EAAA;;AACtB,MAAI,MAAM,WAAW,GAAG;AAEtB,WAAO,SAAI,KAAM;AAAK,aAAA;IAAA;;AAGxB,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO,MAAM,CAAC;;AAGhB,SAAO,MAAM,OAAO,SAAC,GAAG,GAAC;AAAK,WAAA,WAAA;AAAC,UAAA,OAAA,CAAA;eAAAC,MAAA,GAAAA,MAAA,UAAA,QAAAA,OAAY;AAAZ,aAAAA,GAAA,IAAA,UAAAA,GAAA;;AAAiB,aAAA,EAAE,EAAC,MAAA,QAAAC,eAAA,CAAA,GAAAC,QAAI,IAAI,GAAA,KAAA,CAAA,CAAA;IAAX;EAAlB,CAA+B;AAC/D;;;ACxDA;AAAM,SAAU,gBACd,KAAkB;AAElB,MAAI,CAAC;AAAK;AAEV,SAAO,KAAK,GAAG,EAAE,QAAQ,SAAA,GAAC;AACxB,QAAI,OAAO,IAAI,CAAC,MAAM,UAAU;AAC9B,UAAI,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC;;AAGhC,QAAI,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC;EACxB,CAAC;AAED,SAAO;AACT;AAKM,SAAU,UACd,KAAkB;AAElB,MAAI,CAAC;AAAK;AAEV,SAAO,KAAK,GAAG,EAAE,QAAQ,SAAA,GAAC;AACxB,QACE,OAAO,IAAI,CAAC,MAAM,YAClB,OAAO,IAAI,CAAC,MAAM,aAClB,OAAO,IAAI,CAAC,MAAM,UAClB;AACA;;AAGF,QAAI,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC;EAChC,CAAC;AAED,SAAO;AACT;;;ACrCA;AAAM,SAAU,QAAyB,OAAgB;AACvD,SACE,OAAO,UAAU,YAAY,OAAQ,MAAc,YAAY;AAEnE;AASM,SAAU,cAA+B,OAAgB;AAC7D,MACE,OAAQ,MAAc,eAAe,eACrC,OAAQ,MAAc,iBAAiB,MAAM,aAC7C;AAEQ,QAAAC,MAAoB,MAAY,YAAhC,aAAUA,QAAA,SAAG,KAAEA;AACvB,WAAO,WACJ,MAAM,IAAI,EACV,OAAO,SAAC,MAAwB;AAAK,aAAA,SAAS;IAAT,CAAW;aAC1C,MAAM,OAAO;AAEd,QAAA,KAAe,MAAK,OAApB,QAAK,OAAA,SAAG,KAAE;AAClB,WAAO,MAAM,MAAM,IAAI,EAAE,OAAO,SAAA,MAAI;AAAI,aAAA,SAAS;IAAT,CAAW;SAC9C;AAEL,WAAO,CAAC,yBAAyB;;AAErC;;;AC/BA;AAAM,SAAU,UAAU,QAA8B;AACtD,SAAO,OAAO,KAAK,MAAM,EACtB,IAAI,SAAA,KAAG;AAAI,WAAA,GAAA,OAAG,mBAAmB,GAAG,GAAC,GAAA,EAAA,OAAI,mBAAmB,OAAO,GAAG,CAAC,CAAC;EAA7D,CAA+D,EAC1E,KAAK,GAAG;AACb;;;ACNA;;;ACCA;AAAM,SAAU,YAAS;AACvB,SACE,OAAO,UAAU,SAAS,KACxB,OAAO,YAAY,cAAc,UAAU,CAAC,MACxC;AAEV;AAOM,SAAU,kBAAe;AAC7B,SAAQ,UAAS,IACb,SACA,OAAO,WAAW,cAClB,SACA,OAAO,SAAS,cAChB,OACA,CAAA;AACN;A;;;AC3BA,gCAAkB;;;ACAlB;IAAA,gBAAA,WAAA;AAGE,WAAAC,cAAY,MAAO;AACjB,SAAK,QAAQ;EACf;AAEO,EAAAA,cAAA,UAAA,SAAP,WAAA;AACE,WAAO,KAAK,UAAU,KAAK,KAAK;EAClC;AAEO,EAAAA,cAAA,UAAA,YAAP,WAAA;AACE,WAAO,KAAK;EACd;AACF,SAAAA;AAAA,GAdA;;;ACCA;AAAO,IAAM,UAAU;A;;;;;ACDvB;AAEA,IAAA,eAAA,WAAA;AAAA,WAAAC,eAAA;EAsFA;AAlFgB,EAAAA,aAAA,YAAd,WAAA;AACE,WAAO;MACL,WAAW,KAAK,UAAS;MACzB,QAAQ,KAAK,OAAM;;EAEvB;AAOc,EAAAA,aAAA,SAAd,WAAA;AACE,QAAM,UAAU,gBAAe;AAG/B,QAAI,CAAC,QAAQ,UAAU;AACrB,aAAO;;AAGT,WACE,QAAQ,SAAS,UACjB,GAAA,OAAG,QAAQ,SAAS,UAAQ,IAAA,EAAA,OAAK,QAAQ,SAAS,QAAQ;EAE9D;AAQc,EAAAA,aAAA,YAAd,WAAA;AAGE,QAAM,UAAU,gBAAe;AAI/B,QAAI,UAAS,KAAM,OAAO,SAAS,aAAa;AAC9C,aAAO;eACE,QAAQ,gBAAgB;AACjC,aAAO;eACE,QAAQ,kBAAkB,CAAC,QAAQ,OAAO;AACnD,aAAO;WACF;AACL,aAAO;;EAEX;AAUc,EAAAA,aAAA,mBAAd,WAAA;AAGE,QAAM,UAAU,gBAAe;AAE/B,WACE,aAAa,WAGb,aAAa,QAAQ,WACrB,YAAY,QAAQ,WACpB,SAAS,QAAQ,WACjB,UAAU,QAAQ,YAGjB,WAAA;AACC,UAAIC;AACJ,UAAI,QAAQ,QAAQ,SAAU,GAAM;AAClC,QAAAA,WAAU;MACZ,CAAC;AACD,aAAO,OAAOA,aAAY;IAC5B,GAAE;EAEN;AACF,SAAAD;AAAA,GAtFA;;;ACIA;IAAA,oBAAA,WAAA;AAGE,WAAAE,kBAAY,KAAW;AACrB,SAAK,MAAM;EACb;AAEO,EAAAA,kBAAA,UAAA,OAAP,SAAY,MAAY;AAAxB,QAAA,QAAA;AACE,WAAO,IAAI,QAAQ,SAACC,UAAS,QAAM;;AACjC,UAAM,MAAM,IAAI,eAAc;AAC9B,UAAM,KAAK,IAAI,OAAO,UAAU;AAEhC,UAAI,SAAS,WAAA;AAAM,eAAAA,SAAQ,CAAA,CAAE;MAAV;AAInB,UAAI,KAAK,QAAQ,MAAK,IAAI,QAAQ,KAAIC,MAAA,WAAM,QAAN,WAAM,SAAA,SAAN,OAAQ,cAAQ,QAAAA,QAAA,SAAA,SAAAA,IAAE,QAAQ,CAAC;AAEjE,iBAAW,WAAA;AACT,YAAI;AACF,cAAI,KAAK,IAAI;iBACN,GAAG;AACV,iBAAO,CAAC;;MAEZ,GAAG,CAAC;IACN,CAAC;EACH;AACF,SAAAF;AAAA,GA3BA;;;ACJA;IAAA,gBAAA,WAAA;AAGE,WAAAG,cAAY,KAAW;AACrB,SAAK,MAAM;EACb;AAEO,EAAAA,cAAA,UAAA,OAAP,SAAY,MAAY;AAAxB,QAAA,QAAA;AACE,WAAO,IAAI,QAAQ,SAACC,UAAS,QAAM;AACjC,UAAI;AACF,YAAM,QAAM,IAAI,eAAc;AAE9B,cAAI,qBAAqB,WAAA;AACvB,cAAI,MAAI,eAAe,eAAe,MAAM;AAC1C,YAAAA,SAAQ,CAAA,CAAE;;QAEd;AAEA,cAAI,KAAK,QAAQ,MAAK,GAAG;AACzB,cAAI,KAAK,IAAI;eACN,GAAG;AACV,eAAO,CAAC;;IAEZ,CAAC;EACH;AACF,SAAAD;AAAA,GAzBA;A;;;ACAA,IAAA,kBAAA,WAAA;AAGE,WAAAE,gBAAY,KAAa,SAAmC;AAC1D,SAAK,MAAM;EACb;AAEa,EAAAA,gBAAA,UAAA,OAAb,SAAkB,MAAY;;;;;;AAChB,mBAAA,CAAA,GAAM,MAAM,KAAK,KAAK;cAChC,QAAQ;cACR,MAAM;aACP,CAAC;;AAHI,kBAAMC,IAAA,KAAA;AAKJ,yBAAmB,IAAG,YAAV,KAAO,IAAG;AAE9B,mBAAA,CAAA,GAAO,KAAK,QAAQ,QAAQ,CAAA,CAAE,IAAI,QAAQ,OAAO,EAAE,WAAU,CAAE,CAAC;;;;;AAEpE,SAAAD;AAAA,GAjBA;;;ACAA;IAAA,iBAAA,WAAA;AAIE,WAAAE,eAAY,KAAW;AACrB,SAAK,MAAM;AACX,SAAK,QAAQ;EACf;AAEO,EAAAA,eAAA,UAAA,OAAP,SAAY,MAAY;AAAxB,QAAA,QAAA;AACE,QAAM,UAAU;MACd,QAAQ;MACR,SAAS;QACP,gBAAgB;QAChB,kBAAkB,KAAK;;;AAI3B,WAAO,IAAI,QAAQ,SAACC,UAAS,QAAM;AACjC,YAAK,MACF,KAAK,SAAA,OAAK;AACT,YAAM,MAAM,MACT,QAAQ,MAAK,KAAK,SAAS,WAAA;QAAO,CAAC,EACnC,GAAG,SAAS,SAAA,OAAK;AAAI,iBAAA,OAAO,KAAK;QAAZ,CAAa;AAErC,YAAI,MAAM,IAAI;AACd,YAAI,IAAG;AAEP,QAAAA,SAAQ,CAAA,CAAE;MACZ,CAAC,EACA,MAAM,SAAA,QAAM;AACX,gBAAQ,KACN,6GAA6G;AAE/G,eAAO,MAAM;MACf,CAAC;IACL,CAAC;EACH;AACF,SAAAD;AAAA,GAtCA;;;ACWA,IAAA,WAAA,WAAA;AAaE,WAAAE,SAAY,SAAuB;AACjC,SAAK,OAAO,QAAQ,OAAO;AAC3B,SAAK,UAAU,QAAQ;AACvB,SAAK,iBAAiB,QAAQ;AAE9B,SAAK,aAAa,KAAK,iBAAiB,KAAK,KAAI,CAAE;EACrD;AASa,EAAAA,SAAA,UAAA,OAAb,SAAkB,MAAU;;;;;AAC1B,mBAAA,CAAA,GAAM,KAAK,WAAW,KAAK,KAAK,OAAM,CAAE,CAAC;;AAAzC,YAAAC,IAAA,KAAA;AACA,mBAAA,CAAA,GAAO,IAAI;;;;;AAWL,EAAAD,SAAA,UAAA,mBAAR,SAAyB,KAAW;AAClC,YAAQ,YAAY,UAAS,GAAI;MAC/B,KAAK;AACH,eAAO,IAAI,iBAAiB,GAAG;MACjC,KAAK;AACH,eAAO,IAAI,aAAa,GAAG;MAC7B,KAAK;AACH,eAAO,IAAI,cAAc,GAAG;MAC9B;AACE,eAAO,IAAI,eAAe,GAAG;;EAEnC;AAOQ,EAAAA,SAAA,UAAA,OAAR,WAAA;AACE,QAAM,OAAO,KAAK,eAAc;AAChC,WAAO,GAAA,OAAG,KAAK,MAAI,GAAA,EAAA,OAAI,UAAU,IAAI,CAAC;EACxC;AAOQ,EAAAA,SAAA,UAAA,iBAAR,WAAA;AACE,WAAO;MACL,SAAS,KAAK;MACd,SAAS,KAAK;;EAElB;AACF,SAAAA;AAAA,GA3EA;A;;;ACAA,IAAA,QAAA,SAAA,QAAA;AAA0B,YAAAE,OAAA,MAAA;AACxB,WAAAA,MAAY,MAA0B;WACpC,OAAA,KAAA,MAAA,SAAA,EACE,WAAW,KAAK,OAAM,oBAAI,KAAI,GAAG,QAAO,IAAK,GAAI,GACjD,WAAW,YACX,OAAO;MACL,MAAM;MACN,SAAS;MACT,WAAW,CAAA;MACZ,GACE,IAAI,CAAA,KACP;EACJ;AAEO,EAAAA,MAAA,UAAA,YAAP,SAAiB,MAAY;AAC3B,QAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AACrC,aAAO;;AAGT,SAAK,MAAM,SAAS;AACpB,WAAO;EACT;AAEO,EAAAA,MAAA,UAAA,eAAP,SAAoB,MAAY;AAC9B,QAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AACrC,aAAO;;AAGT,SAAK,MAAM,YAAY;AACvB,WAAO;EACT;AAEO,EAAAA,MAAA,UAAA,WAAP,SAAiC,OAAgB;AAC/C,QAAI,CAAC,SAAS,CAAC,QAAQ,KAAK;AAAG,aAAO;AAEtC,SAAK,MAAM,QAAQ;MACjB,MAAM,MAAM,QAAQ;MACpB,SAAS,MAAM;MACf,WAAW,cAAc,KAAK;;AAGhC,WAAO;EACT;AAEO,EAAAA,MAAA,UAAA,UAAP,SAAe,MAAqB;AAClC,SAAK,MAAM,OAAI,SAAA,SAAA,CAAA,GAAQ,KAAK,MAAM,IAAI,GAAK,gBAAgB,IAAI,CAAC;AAChE,WAAO;EACT;AAEO,EAAAA,MAAA,UAAA,YAAP,SAAiB,QAAoB;AACnC,SAAK,MAAM,SAAM,SAAA,SAAA,CAAA,GAAQ,KAAK,MAAM,MAAM,GAAK,MAAM;AACrD,WAAO;EACT;AAEO,EAAAA,MAAA,UAAA,iBAAP,SAAsB,aAAyB;AAC7C,SAAK,MAAM,cAAc;AACzB,WAAO;EACT;AACF,SAAAA;AAAA,GA1D0B,YAAY;A;;;ACXtC,IAAA,SAAA,WAAA;AAGE,WAAAC,OAAY,MAAa;AACvB,SAAK,QAAQ,QAAQ,CAAA;EACvB;AAEO,EAAAA,OAAA,UAAA,QAAP,WAAA;AACE,SAAK,QAAQ,CAAA;EACf;AAEO,EAAAA,OAAA,UAAA,SAAP,WAAA;AACE,WAAO,KAAK;EACd;AAEO,EAAAA,OAAA,UAAA,OAAP,SAAY,MAAmB;;AAC7B,WAAO,MAAM,QAAQ,IAAI,KACrBC,MAAA,KAAK,OAAM,KAAI,MAAAA,KAAA,cAAA,CAAA,GAAA,OAAI,IAAI,GAAA,KAAA,CAAA,IACvB,KAAK,MAAM,KAAK,IAAI;EAC1B;AAEQ,EAAAD,OAAA,UAAA,QAAR,WAAA;;;;gBACS,KAAK,MAAM,SAAS,GAAC,QAAA,CAAA,GAAA,CAAA;AAC1B,iBAAA,CAAA,GAAM,KAAK,MAAM,MAAK,CAAE;;AAAxB,UAAAC,IAAA,KAAA;;;;;;;AAGN,SAAAD;AAAA,GA1BA;A;;;ACKA,IAAA,cAAA,WAAA;AASE,WAAAE,YACEC,QACA,KACA,SAAoC;AAP9B,SAAA,WAAW;AACX,SAAA,WAAW;AACX,SAAA,YAAY;AAOlB,SAAK,OAAO;AACZ,SAAK,SAASA;AAEd,SAAK,UAAO,SAAA,EACV,OAAO,GACP,iBAAiB,IAAI,GAClB,OAAO;AAGZ,SAAK,MAAK;EACZ;AAEO,EAAAD,YAAA,UAAA,WAAP,SAAgBE,OAAqB;AAArC,QAAA,QAAA;AAAgB,QAAAA,UAAA,QAAA;AAAA,MAAAA,QAAO,KAAK;IAAS;AACnC,QAAM,UAAU,gBAAe;AAG/B,QAAM,iBAAiB;AAEvB,QAAM,KAAK,WAAA;AAAA,aAAA,UAAA,OAAA,QAAA,QAAA,WAAA;;;;;;;AACQ,cAAAC,MAAA,SAAA,KAAK,OAAO,MAAK,CAAE,GAAA,KAAAA,IAAA,KAAA;;;;AAA3B,qBAAI,GAAA;AACX,kBAAI,CAAC;AAAM,uBAAA,CAAA,CAAA;;;;AAGT,qBAAA,CAAA,GAAM,KAAK,KAAK,KAAK,IAAI,CAAC;;AAA1B,iBAAA,KAAA;;;;AAGM,4BAAc,KAAK,MAAM,KAAK,IAAID,OAAM,cAAc,CAAC;AAE7D,mBAAK,WAAW,KAAK,WAAW;AAEhC,kBAAI,KAAK,aAAa,GAAG;AACvB,qBAAK,MAAK;qBACL;AACL,qBAAK,OAAO,KAAK,IAAI;AACrB,qBAAK,WAAW,KAAK,SAAS,WAAW;;AAG3C,qBAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;AAKJ,mBAAK,MAAK;;;;;;AAGZ,WAAO,QAAQ,WAAW,IAAIA,KAAI;EACpC;AAEO,EAAAF,YAAA,UAAA,QAAP,WAAA;AACQ,QAAAG,MAA6B,KAAK,SAAhC,QAAKA,IAAA,OAAE,kBAAeA,IAAA;AAC9B,SAAK,WAAW;AAChB,SAAK,YAAY;EACnB;AACF,SAAAH;AAAA,GAnEA;;;ACUA,IAAA,aAAA,WAAA;AAwBE,WAAAI,WAAY,SAAyB;AAvB9B,SAAA,UAAU;AACV,SAAA,UAAoB,CAAA;AAKnB,SAAA,eAA6B,CAAA;AAE7B,SAAA,SAAS;MACf,YAAY,MAAK;MACjB,WAAW,MAAK;;AAGV,SAAA,OAAO,YAAY,UAAS;AAC5B,SAAA,SAAS,IAAI,MAAM,CAAA,CAAE;AAUnB,QAAAC,MAA0C,QAAO,KAAjD,MAAGA,QAAA,SAAG,KAAEA,KAAE,MAAgC,QAAO,KAAlC,WAA2B,QAAO,UAAxB,eAAiB,QAAO;AAIzD,QAAI,YAAY,OAAO,aAAa,UAAU;AAC5C,cAAQ,WAAW,OAAO,QAAQ;;AAIpC,QAAI,QAAQ,IAAI;AACd,cAAQ,KAAK,2CAA2C;;AAG1D,SAAK,OAAO,IAAI,QAAQ;MACtB;MACA;MACA,SAAS,KAAK;KACf;AAID,QAAI,gBAAgB,MAAM,QAAQ,YAAY,GAAG;AAC/C,WAAK,UAAU;;AAGjB,SAAK,cAAc,IAAI,WAAW,KAAK,QAAQ,KAAK,IAAI;AAExD,SAAK,WAAW;EAClB;AA4CO,EAAAD,WAAA,UAAA,OAAP,SACE,MACA,UACA,WAAkB;AAHpB,QAAA,QAAA;AAKE,QAAI,EAAE,gBAAgB,UAAU,EAAE,gBAAgB,OAAO;AAEvD,cAAQ,MACN,gEAAgE;AAElE;;AAIF,QAAI,KAAK,QAAQ,WAAW,GAAG;AAC7B,UACE,gBAAgB,SAChB,KAAK,QAAQ,KAAK,SAAA,IAAE;AAAI,eAAA,GAAG,KAAK,KAAK,OAAO;MAApB,CAAqB,GAC7C;AACA,gBAAQ,KAAK,kCAAA,OAAkC,KAAK,OAAO,CAAE;AAC7D;;AAGF,UAAI,gBAAgB,MAAM;AAChB,YAAA,UAAU,KAAK,UAAS,EAAE;AAIlC,YAAI,QAAM,WAAW,KAAK,QAAQ,KAAK,SAAA,IAAE;AAAI,iBAAA,GAAG,KAAK,QAAM,OAAQ;QAAtB,CAAuB,GAAG;AACrE,kBAAQ,KAAK,gCAAA,OAAgC,QAAM,OAAO,CAAE;AAC5D;;;;AAON,QAAM,OAAO,gBAAgB,OAAO,OAAO,KAAK,qBAAqB,IAAI;AAKzE,QAAI,KAAK,OAAO,WAAW,SAAS,GAAG;AACrC,cAAO,MAAA,QAAA,cAAA,CAAA,GAAA,OAAI,KAAK,OAAO,UAAU,GAAA,KAAA,CAAA,EAAE,IAAI;;AAGzC,QAAI,UAAU;AACZ,UAAI,OAAO,aAAa,YAAY;AAClC,YAAM,WAAW;AACjB,iBAAS,IAAI;aACR;AACL,gBAAQ,KACN,uIAAuI;AAEzI,YAAM,OAAQ,UAAU,QAAQ,KAAK,CAAA;AACrC,aAAK,QAAQ,IAAI;;;AAGrB,QAAI,WAAW;AACb,cAAQ,KACN,qIAAqI;AAEvI,WAAK,aAAa,SAAS;;AAG7B,QAAI,KAAK,aAAa,SAAS;AAAG,WAAK,eAAe,KAAK,YAAY;AAKvE,QAAI,KAAK,OAAO,UAAU,SAAS,GAAG;AACpC,cAAO,MAAA,QAAA,cAAA,CAAA,GAAA,OAAI,KAAK,OAAO,SAAS,GAAA,KAAA,CAAA,EAAE,IAAI;;AAGxC,QAAI,YAAY,iBAAgB,GAAI;AAGlC,WAAK,eAAe,CAAA;AAIpB,UAAI,CAAC,KAAK,SAAS,KAAK;AAEtB,gBAAQ,KACN,iEACA,IAAI;AAGN,YAAI,gBAAgB,OAAO;AACzB,gBAAM;;aAEH;AAEL,eAAO,KAAK,KAAK,KAAK,IAAI,EAAE,MAAM,WAAA;AAChC,gBAAK,OAAO,KAAK,IAAI;AAGrB,qBAAW,WAAA;AAAM,mBAAA,MAAK,YAAY,SAAQ;UAAzB,GAA6B,CAAC;QACjD,CAAC;;WAEE;AAEL,cAAQ,MACN,8DAA8D;AAEhE;;EAEJ;AAoBO,EAAAA,WAAA,UAAA,YAAP,SACE,OACA,UACA,WAAkB;AAElB,WAAO,KAAK,KAAK,OAAO,UAAU,SAAS;EAC7C;AAaO,EAAAA,WAAA,UAAA,MAAP,SAAWE,SAAgB;AACzB,IAAAA,QAAO,KAAK,IAAI;EAClB;AASO,EAAAF,WAAA,UAAA,aAAP,SAAkB,IAAyB;AACnC,QAAAC,MAA+B,KAAK,UAAlC,KAAAA,IAAA,UAAA,WAAQ,OAAA,SAAG,KAAE,IAAE,YAASA,IAAA;AAEhC,QAAM,OAAO,IAAI,KAAK;MACpB,aAAa,KAAK;MAClB;KACD;AAGD,QAAI;AAAW,WAAK,aAAa,SAAS;AAE1C,QAAI,MAAM,OAAO,OAAO;AAAY,SAAG,IAAI;AAE3C,WAAO;EACT;AA+Ba,EAAAD,WAAA,UAAA,OAAb,SACE,IACA,UACA,WAAkB;;;;;;;AAGT,mBAAA,CAAA,GAAM,GAAE,CAAE;;AAAjB,mBAAA,CAAA,GAAOC,IAAA,KAAA,CAAU;;;AAEjB,mBAAA,CAAA,GAAM,KAAK,UAAU,KAAG,UAAU,SAAS,CAAC;;AAA5C,YAAAA,IAAA,KAAA;AACA,mBAAA,CAAA,GAAO,QAAQ,OAAO,GAAC,CAAC;;;;;;;AAYrB,EAAAD,WAAA,UAAA,eAAP,SAAoC,WAAY;AAC9C,SAAK,OAAO,WAAW,KAAK,SAAS;EACvC;AAUO,EAAAA,WAAA,UAAA,cAAP,SAAmC,UAAW;AAC5C,SAAK,OAAO,UAAU,KAAK,QAAQ;EACrC;AAOO,EAAAA,WAAA,UAAA,OAAP,WAAA;AACE,QAAM,OAAO,KAAK,qBAChB,IAAI,MACF,gEAAgE,CACjE;AAGH,SACG,UAAU,YAAY,EACtB,UAAU;MACT,MAAM;MACN,QAAQ;KACT,EACA,QAAQ;MACP,aAAa;KACd;AAEH,SAAK,KAAK,IAAI;EAChB;AASO,EAAAA,WAAA,UAAA,gBAAP,SAAqB,YAAyC;AAC5D,QAAM,QAAK,SAAA,SAAA,EACT,WAAW,KAAK,OAAM,oBAAI,KAAI,GAAG,QAAO,IAAK,GAAI,EAAC,GAC/C,UAAU,GAAA,EACb,UAAU,UAAU,WAAW,QAAQ,EAAC,CAAA;AAG1C,QAAI,CAAC,MAAM,UAAU;AACnB,cAAQ,KAAK,2DAA2D;AACxE;;AAGF,QAAI,CAAC,MAAM,QAAQ;AACjB,cAAQ,KAAK,yDAAyD;AACtE;;AAGF,QAAI,KAAK,aAAa,WAAW,IAAI;AACnC,WAAK,aAAa,IAAG;;AAGvB,SAAK,aAAa,QAAQ,KAAK;EACjC;AAUQ,EAAAA,WAAA,UAAA,uBAAR,SAA6B,OAAY;AACvC,QAAM,QAAQ,KAAK,WAAU;AAC7B,UAAM,SAAS,KAAK;AAEpB,WAAO;EACT;AACF,SAAAA;AAAA,GAtZA;;A;;;;;;;;;;;;;;ACdA,SAAS,mBAAmB,SAAgC;AAC1D,MAAM,MAAM;AAEZ,MAAMG,QAAIC,UAAA,EACR,SAAS,MACT,sBAAsB,KAAI,GACvB,OAAO;AAGZ,SAAO,WAAA;AACL,QAAMC,QAAO;AAEb,QAAM,OAAO;MACX,SAAS,IAAI;MACb,oBAAoB,IAAI;;AAG1B,aAAS,gBAEP,OACA,QACA,QACA,OACA,OAAa;AAEb,UAAM,OAAOA,MAAK,WAAU;AAK5B,UACE,OAAO,UAAU,YACjB,WAAW,KACX,kBAAkB,KAAK,KAAK,GAC5B;AACA,gBAAQ,KACN,wEAAwE;aAErE;AACL,YAAI,OAAO;AACT,eAAK,SAAS,KAAK;eACd;AAGL,eAAK,SAAS;YACZ,MAAM;YAEN,SACE,OAAO,UAAU,WACb,QACA;YACN,OAAO,MAAA,OAAM,QAAM,GAAA,EAAA,OAAI,MAAM,EAAA,OAAG,QAAQ,IAAA,OAAI,KAAK,IAAK,EAAE;WACzD;;AAGH,QAAAA,MAAK,KAAK,IAAI;;AAGhB,UAAI,OAAO,KAAK,YAAY,YAAY;AACtC,aAAK,QAAQ,MAAM,MAAM,SAAgB;;IAE7C;AAEA,aAAS,6BAEP,OAA4B;AAE5B,UAAM,OAAOA,MAAK,WAAU;AAE5B,UAAI;AAEJ,UAAI,SAAS,MAAM,UAAU,QAAQ,MAAM,MAAM,GAAG;AAClD,gBAAQ,MAAM;aACT;AACL,gBAAQ;UACN,MAAM;UACN,SAAS,iBAAiB,KAAK;;;AAInC,WAAK,SAAS,KAAK;AAEnB,MAAAA,MAAK,KAAK,IAAI;AAEd,UAAI,OAAO,KAAK,uBAAuB,YAAY;AACjD,aAAK,mBAAmB,MAAM,MAAM,SAAgB;;IAExD;AAEA,QAAIF,MAAK,SAAS;AAChB,UAAI,UAAU;;AAGhB,QAAIA,MAAK,sBAAsB;AAC7B,UAAI,uBAAuB;;EAE/B;AAEA,WAAS,iBAAiB,OAA4B;AACpD,QAAI,CAAC,SAAS,CAAC,MAAM,QAAQ;AAC3B,aAAO;;AAGT,QAAI,OAAO,MAAM,WAAW,UAAU;AACpC,aAAO,MAAM;;AAGf,WAAO,KAAK,UAAU,MAAM,QAAQ,iBAAgB,CAAE;EACxD;AAEA,WAAS,mBAAgB;AACvB,QAAM,YAAmB,CAAA;AACzB,QAAM,UAAoB,CAAA;AAC1B,WAAO,SAAC,KAAa,OAAU;AAC7B,UAAI,OAAO,UAAU,YAAY,UAAU,MAAM;AAC/C,YAAM,IAAI,UAAU,QAAQ,KAAK;AACjC,YAAI,MAAM,IAAI;AACZ,iBAAO,kBAAA,OAAkB,QAAQ,CAAC,KAAK,eAAa,GAAA;eAC/C;AACL,oBAAU,KAAK,KAAK;AACpB,kBAAQ,KAAK,GAAG;;;AAIpB,aAAO;IACT;EACF;AACF;AAEO,IAAM,SAAS;;;AvBjItB,IAAM,YAAY,IAAI,YAAU;AAAA,EAC9B,KAAK;AACP,CAAC;AAGD,UAAU,IAAI,OAAO,CAAC;;;AwBRtB;;;ACAA;;;ACAA;;;ArQQA,kBAAAG,QAAW,WAAW;;;AFLtB,EAAE,QAAQ,EAAE,GAAG,mBAAmB,WAAW;AAC3C,MAAI,SAAS,EAAE,+BAA+B;AAC9C,MAAI,gBAAgB,EAAE,8BAA8B;AAEpD,WAAS,eAAeC,MAAK,OAAO;AAClC,QAAI,YAAY;AAChB,QAAI,MAAM,IAAI,OAAO,SAAS,YAAY,IAAI;AAC9C,QAAI,QAAQA,KAAI,MAAM,GAAG;AACzB,QAAI,QAAQ;AACZ,WAAO,MAAM,OAAO,SAAS,MAAM;AACjC,eAAS,KAAK;AACd,aAAO,SAAS;AAAA,IAClB,CAAC,EAAE,KAAK,EAAE;AAAA,EACZ;AAEA,WAAS,cAAc,GAAE;AACvB,QAAI,EAAE,uBAAuB,KAAK;AAChC;AAEF,WAAO,GAAG,KAAK,EAAE,wBAAwB,CAAC,KAAK,KAAK,EAAE,sBAAsB,EAAE,uBAAuB,CAAC,CAAC;AAAA,EACzG;AAEA,WAAS,gBAAgB,GAAE;AACzB,QAAI,YAAY;AAChB,QAAI,cAAe,EAAE,aAAa,KAAK;AACvC,QAAI,gBAAgB,MAAM,YAAY,SAAS;AAC7C,aAAO;AACT,WAAO,eAAe,aAAa,SAAS,IAAI;AAAA,EAClD;AAEA,WAAS,SAAS,GAAE;AAClB,QAAI,aAAa,EAAE,YAAY,KAAK,EAAE,iBAAiB;AACvD,QAAI,eAAe;AACjB;AAEF,YAAQ,YAAW;AAAA,MACjB,KAAK;AACH,eAAO,KAAK,EAAE,4BAA4B;AAAA,MAC5C,KAAK;AACH,eAAO,KAAK,EAAE,iCAAiC;AAAA,MACjD,KAAK;AACH,eAAO,KAAK,EAAE,2BAA2B;AAAA,MAC3C,KAAK;AACH,eAAO,KAAK,EAAE,sCAAsC;AAAA,MACtD,KAAK;AACH,eAAO,KAAK,EAAE,0BAA0B;AAAA,MAC1C,KAAK;AACH,YAAI,EAAE,MAAM,KAAK,QAAQ,EAAE,MAAM,EAAE,MAAM,MAAM,KAAK;AAClD,iBAAO,KAAK,EAAE,wCAAwC;AAAA,QACxD,OAAO;AACL,iBAAO,KAAK,EAAE,yCAAyC;AAAA,QACzD;AAAA,MACF,KAAK;AACH,eAAO,KAAK,EAAE,kCAAkC;AAAA,MAClD,KAAK;AACH,eAAO,KAAK,EAAE,6BAA6B;AAAA,IAC/C;AAAA,EACF;AAEA,WAAS,gBAAgB,GAAE;AACzB,WAAO,2BAA2B,EAAE,eAAe,CAAC;AAAA,mBACrC,EAAE,OAAO,CAAC;AAAA;AAAA,sBAEP,gBAAgB,CAAC,CAAC;AAAA,8CACM,SAAS,CAAC,CAAC;AAAA,iBACxC,cAAc,CAAC,IAAI,uCAAoC,cAAc,CAAC,CAAC,YAAY,EAAE;AAAA;AAAA;AAAA,EAGpG;AAEA,MAAI,gBAAgB;AAAA,IAClB,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,QAAQ,OAAO,iBAAiB,SAC9B,CAAC,IACD;AAAA,MACE,SACE;AAAA,QACE,iBAAiB,OAAO,aAAa;AAAA,MACvC;AAAA,IACJ;AAAA,IACF,aAAa,WAAW;AACtB,gBAAU,IAAI,EAAE,OAAO,OAAO,CAAC;AAAA,IACjC;AAAA,IACA,iBAAiB,SAAS,UAAU;AAClC,aAAO;AAAA,QACL,aAAa,SAAS,KAAK,IAAI,WAAS;AAAA,UACtC,OAAO,KAAK,WAAW;AAAA,UACvB,MAAM,KAAK;AAAA,QACb,EAAE;AAAA,MACJ;AAAA,IACF;AAAA,IACA,cAAc,SAAS,YAAW;AAChC,aAAO,gBAAgB,WAAW,IAAI;AAAA,IACxC;AAAA,IACA,oBAAoB,0BAA2B,KAAK,EAAE,2BAA2B,CAAE;AAAA,EACrF;AAEA,SAAO,sBAAsB,EAAE,OAAO,EAAE,UAAU,OAAO,OAAO,EAAE,GAAG,uBAAuB,aAAa,CAAC;AAC1G,gBAAc,sBAAsB,EAAE,OAAO,EAAE,UAAU,cAAc,OAAO,EAAE,GAAG,uBAAuB,aAAa,CAAC;AAC1H,CAAC;;;AwQvGD;AAAA,8BAAO;AAEP,EAAE,QAAQ,EAAE,GAAG,mBAAmB,WAAW;AAE5C,IAAE,iBAAiB,EAAE,MAAM,SAAS,GAAG;AACtC,MAAE,eAAe;AACjB,MAAE,wBAAwB,EAAE,SAAS,QAAQ;AAC7C,MAAE,YAAY,EAAE,YAAY,QAAQ,EAAE,SAAS,wBAAwB;AAAA,EACxE,CAAC;AAED,IAAE,6BAA6B,EAAE,MAAM,SAAS,GAAG;AAClD,MAAE,eAAe;AACjB,MAAE,YAAY,EAAE,SAAS,QAAQ;AACjC,MAAE,wBAAwB,EAAE,YAAY,QAAQ,EAAE,SAAS,wBAAwB;AAAA,EACpF,CAAC;AAEF,CAAC;;;AChBD;AAAA,IAAAC,2BAAO;AAEP,SAAS,iBAAiB,oBAAoB,WAAW;AACvD,iBAAe;AACjB,CAAC;AAED,SAAS,iBAAiB;AACxB,IAAE,sBAAsB,EAAE,MAAM,SAAS,GAAG;AAC1C,MAAE,eAAe;AAEjB,MAAE,MAAM,EAAE,SAAS,UAAU;AAAA,MAC3B,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV,CAAC;AAGD,QAAI;AACJ,QAAI,EAAE,IAAI,EAAE,SAAS,aAAa,GAAG;AACnC,kBAAY,EAAE,cAAc;AAAA,IAC9B,OAAO;AACL,kBAAY,EAAE,QAAQ;AAAA,IACxB;AAEA,cAAU,KAAK,GAAG,EAAE,YAAY,kBAAkB;AAClD,cAAU,OAAO,EAAE,YAAY,kCAAkC;AAEjE,MAAE,mBAAmB,EAAE,OAAO;AAC9B,MAAE,gBAAgB,EAAE,OAAO;AAC3B,MAAE,oBAAoB,EAAE,OAAO;AAAA,EACjC,CAAC;AAED,IAAE,gCAAgC,EAAE,MAAM,SAAS,GAAG;AACpD,MAAE,eAAe;AACjB,MAAE,iBAAiB,EAAE,SAAS,UAAU;AAAA,MACtC,UAAU,SAAU,SAAS;AAC3B,UAAE,QAAQ,CAAC,CAAC,EAAE,KAAK,OAAO,EAAE,YAAY,QAAQ,EAAE,MAAM;AAAA,MAC1D;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAED,IAAE,yCAAyC,EAAE,GAAG,YAAY,WAAW;AACrE,MAAE,iBAAiB,EAAE,SAAS,SAAS;AAAA,EACzC,CAAC;AAED,IAAE,iBAAiB,EAAE,GAAG,SAAS,WAAW;AAC1C,MAAE,IAAI,EACH,YAAY,SAAS,EACrB,KAAK,KAAK,EACV,YAAY,gBAAgB,EAC5B,SAAS,EAAE,YAAY,GAAG,GAAG,EAAE,UAAU,KAAK,MAAM,EAAE,CAAC,EACvD,KAAK,MAAM,EACX,WAAW,sBAAsB,sBAAmB;AAAA,EACzD,CAAC;AAED,IAAE,YAAY,EAAE,GAAG,SAAS,WAAW;AACrC,MAAE,MAAM,EAAE,SAAS,UAAU;AAAA,MAC3B,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV,CAAC;AAAA,EACH,CAAC;AAED,IAAE,oBAAoB,EAAE,GAAG,SAAS,WAAW;AAC7C,MAAE,oBAAoB,EAAE,YAAY,SAAS;AAAA,EAC/C,CAAC;AAED,IAAE,iBAAiB,EAAE,GAAG,SAAS,WAAW;AAC1C,QAAI,SAAS,EAAE,IAAI,EAAE,OAAO;AAG5B,QAAI,OAAO,KAAK,EAAE,KAAK,YAAY,EAAE,SAAS,SAAS,GAAG;AACxD,aAAO,KAAK,EAAE,KAAK,YAAY,EAAE,YAAY,SAAS;AACtD;AAAA,IACF;AAGA,WAAO,QAAQ,gBAAgB,EAAE,KAAK,UAAU,EAAE,YAAY,SAAS;AAGvE,eAAW,WAAY;AAErB,aAAO,KAAK,EAAE,KAAK,YAAY,EAAE,YAAY,SAAS;AAAA,IACxD,GAAG,GAAG;AAAA,EAQR,CAAC;AACH;;;AC5FA;;;ACAA;AAIO,IAAM,sBAAsB;AAAA,EACjC,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,UAAU;AACZ;;;ADRA,4BAAO;AAEP,SAAS,oBAAoB;AAE3B,MAAI,qBAAqB;AAEzB,IAAE,oBAAoB,EAAE,cAAc;AAAA,IACpC,MAAM;AAAA,IACN,cAAc;AAAA,IACd,WAAW;AAAA;AAAA;AAAA,IAGX,WAAW;AAAA,MACT,QAAQ,SAAS,EAAE,GAAG,GAAG;AACvB,cAAM,EAAE,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC;AAK9B,6BAAsB,CAAC,CAAC,SAAS;AAAA,MACnC;AAAA,MACA,kBAAkB,WAAW;AAE3B,YAAI,OAAO,iBAAiB,OAAO,cAAc,2BAA2B;AAC1E,iBAAO,cAAc,0BAA0B,KAAK;AAAA,QACtD;AACA,YAAI,OAAO,iBAAiB,OAAO,cAAc,4BAA4B;AAC3E,iBAAO,cAAc,2BAA2B,qBAAqB;AAAA,QACvE;AACA,YAAI,OAAO,iBAAiB,OAAO,cAAc,0DAA0D;AACzG,iBAAO,cAAc,yDAAyD,WAAW;AAAA,QAC3F;AACA,YAAI,OAAO,iBAAiB,OAAO,cAAc,gCAAgC;AAC/E,iBAAO,cAAc,+BAA+B,MAAM;AAAA,QAC5D;AACA,YAAI,OAAO,iBAAiB,OAAO,cAAc,kBAAkB;AACjE,iBAAO,cAAc,iBAAiB,KAAK;AAAA,QAC7C;AAGA,UAAE,4CAA4C,EAAE,MAAM,EAAE,MAAM;AAE9D,YAAI,oBAAoB;AACtB,gBAAM,QAAQ,IAAI,MAAM,oBAAoB,MAAM;AAClD,mBAAS,cAAc,KAAK;AAAA,QAC9B;AAAA,MACJ;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAEA,EAAE,QAAQ,EAAE,GAAG,6CAA6C,iBAAiB;;;AEpD7E;;;ACAA;AAAA,CAKC,SAASC,IAAG;AAET,WAAS,UAAU,OAAO,KAAK;AAC3B,WAAQ,OAAO,SAAS,aAAe,MAAM,KAAK,GAAG,IAAK;AAAA,EAC9D;AAAC;AAED,WAAS,eAAe,KAAK;AAC3B,WAAO,MAAM,IAAI,YAAY;AAC3B,UAAI,OAAO,SAAU,QAAO;AAAA,IAC9B;AACA,WAAO;AAAA,EACT;AAAC;AAED,WAAS,MAAM,SAAS,SAAS;AAC7B,SAAK,WAAWA,GAAE,OAAO;AACzB,SAAK,UAAU;AACf,SAAK,UAAU;AACf,SAAK,SAAS;AAAA,EAClB;AAAC;AAED,QAAM,YAAY;AAAA,IACd,MAAM,WAAW;AACb,UAAI,QAAQ,KAAK,SAAS;AAC1B,UAAI,SAAS,KAAK,SAAS;AACvB,YAAI,OAAO,KAAK,IAAI;AAEpB,aAAK,KAAK,cAAc,EAAE,KAAK,QAAQ,OAAO,SAAS,MAAM,EAAE,KAAK;AACpE,aAAK,CAAC,EAAE,YAAY;AACpB,aAAK,OAAO,EAAE,IAAI,EAAC,KAAK,GAAG,MAAM,GAAG,YAAY,UAAU,SAAS,QAAO,CAAC,EAAE,UAAU,SAAS,IAAI;AAEpG,YAAI,MAAMA,GAAE,OAAO,CAAC,GAAG,KAAK,SAAS,OAAO,GAAG;AAAA,UAC3C,OAAO,KAAK,SAAS,CAAC,EAAE;AAAA,UACxB,QAAQ,KAAK,SAAS,CAAC,EAAE;AAAA,QAC7B,CAAC;AAED,YAAI,cAAc,KAAK,CAAC,EAAE,aACtB,eAAe,KAAK,CAAC,EAAE,cACvB,UAAU,UAAU,KAAK,QAAQ,SAAS,KAAK,SAAS,CAAC,CAAC;AAE9D,YAAI;AACJ,gBAAQ,QAAQ,OAAO,CAAC,GAAG;AAAA,UACvB,KAAK;AACD,iBAAK,EAAC,KAAK,IAAI,MAAM,IAAI,SAAS,KAAK,QAAQ,QAAQ,MAAM,IAAI,OAAO,IAAI,QAAQ,IAAI,cAAc,EAAC;AACvG;AAAA,UACJ,KAAK;AACD,iBAAK,EAAC,KAAK,IAAI,MAAM,eAAe,KAAK,QAAQ,QAAQ,MAAM,IAAI,OAAO,IAAI,QAAQ,IAAI,cAAc,EAAC;AACzG;AAAA,UACJ,KAAK;AACD,iBAAK,EAAC,KAAK,IAAI,MAAM,IAAI,SAAS,IAAI,eAAe,GAAG,MAAM,IAAI,OAAO,cAAc,KAAK,QAAQ,OAAM;AAC1G;AAAA,UACJ,KAAK;AACD,iBAAK,EAAC,KAAK,IAAI,MAAM,IAAI,SAAS,IAAI,eAAe,GAAG,MAAM,IAAI,OAAO,IAAI,QAAQ,KAAK,QAAQ,OAAM;AACxG;AAAA,QACR;AAEA,YAAI,QAAQ,UAAU,GAAG;AACrB,cAAI,QAAQ,OAAO,CAAC,KAAK,KAAK;AAC1B,eAAG,OAAO,IAAI,OAAO,IAAI,QAAQ,IAAI;AAAA,UACzC,OAAO;AACH,eAAG,OAAO,IAAI,OAAO,IAAI,QAAQ,IAAI,cAAc;AAAA,UACvD;AAAA,QACJ;AAEA,aAAK,IAAI,EAAE,EAAE,SAAS,WAAW,OAAO;AACxC,aAAK,KAAK,cAAc,EAAE,CAAC,EAAE,YAAY,6BAA6B,QAAQ,OAAO,CAAC;AACtF,YAAI,KAAK,QAAQ,WAAW;AACxB,eAAK,SAAS,UAAU,KAAK,QAAQ,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC;AAAA,QACrE;AAEA,YAAI,KAAK,QAAQ,MAAM;AACnB,eAAK,KAAK,EAAE,IAAI,EAAC,SAAS,GAAG,SAAS,SAAS,YAAY,UAAS,CAAC,EAAE,QAAQ,EAAC,SAAS,KAAK,QAAQ,QAAO,CAAC;AAAA,QAClH,OAAO;AACH,eAAK,IAAI,EAAC,YAAY,WAAW,SAAS,KAAK,QAAQ,QAAO,CAAC;AAAA,QACnE;AAAA,MACJ;AAAA,IACJ;AAAA,IAEA,MAAM,WAAW;AACb,UAAI,KAAK,QAAQ,MAAM;AACnB,aAAK,IAAI,EAAE,KAAK,EAAE,QAAQ,WAAW;AAAE,UAAAA,GAAE,IAAI,EAAE,OAAO;AAAA,QAAG,CAAC;AAAA,MAC9D,OAAO;AACH,aAAK,IAAI,EAAE,OAAO;AAAA,MACtB;AAAA,IACJ;AAAA,IAEA,UAAU,WAAW;AACjB,UAAI,KAAK,KAAK;AACd,UAAI,GAAG,KAAK,OAAO,KAAK,OAAO,GAAG,KAAK,gBAAgB,KAAM,UAAU;AACnE,WAAG,KAAK,kBAAkB,GAAG,KAAK,OAAO,KAAK,EAAE,EAAE,WAAW,OAAO;AAAA,MACxE;AAAA,IACJ;AAAA,IAEA,UAAU,WAAW;AACjB,UAAI,OAAO,KAAK,KAAK,UAAU,IAAI,KAAK;AACxC,WAAK,SAAS;AACd,UAAI,OAAO,IAAI,KAAK;AACpB,UAAI,OAAO,EAAE,SAAS,UAAU;AAC5B,gBAAQ,GAAG,KAAK,EAAE,SAAS,UAAU,mBAAmB,EAAE,KAAK;AAAA,MACnE,WAAW,OAAO,EAAE,SAAS,YAAY;AACrC,gBAAQ,EAAE,MAAM,KAAK,GAAG,CAAC,CAAC;AAAA,MAC9B;AACA,eAAS,KAAK,OAAO,QAAQ,eAAe,EAAE;AAC9C,aAAO,SAAS,EAAE;AAAA,IACtB;AAAA,IAEA,KAAK,WAAW;AACZ,UAAI,CAAC,KAAK,MAAM;AACZ,aAAK,OAAOA,GAAE,2BAA2B,EAAE,KAAK,gEAAgE;AAChH,aAAK,KAAK,KAAK,iBAAiB,KAAK,SAAS,CAAC,CAAC;AAAA,MACpD;AACA,aAAO,KAAK;AAAA,IAChB;AAAA,IAEA,UAAU,WAAW;AACjB,UAAI,CAAC,KAAK,SAAS,CAAC,EAAE,YAAY;AAC9B,aAAK,KAAK;AACV,aAAK,WAAW;AAChB,aAAK,UAAU;AAAA,MACnB;AAAA,IACJ;AAAA,IAEA,QAAQ,WAAW;AAAE,WAAK,UAAU;AAAA,IAAM;AAAA,IAC1C,SAAS,WAAW;AAAE,WAAK,UAAU;AAAA,IAAO;AAAA,IAC5C,eAAe,WAAW;AAAE,WAAK,UAAU,CAAC,KAAK;AAAA,IAAS;AAAA,EAC9D;AAEA,EAAAA,GAAE,GAAG,QAAQ,SAAS,SAAS;AAE3B,QAAI,YAAY,MAAM;AAClB,aAAO,KAAK,KAAK,OAAO;AAAA,IAC5B,WAAW,OAAO,WAAW,UAAU;AACnC,UAAI,QAAQ,KAAK,KAAK,OAAO;AAC7B,UAAI,MAAO,OAAM,OAAO,EAAE;AAC1B,aAAO;AAAA,IACX;AAEA,cAAUA,GAAE,OAAO,CAAC,GAAGA,GAAE,GAAG,MAAM,UAAU,OAAO;AAEnD,aAASC,KAAI,KAAK;AACd,UAAIC,SAAQF,GAAE,KAAK,KAAK,OAAO;AAC/B,UAAI,CAACE,QAAO;AACR,QAAAA,SAAQ,IAAI,MAAM,KAAKF,GAAE,GAAG,MAAM,eAAe,KAAK,OAAO,CAAC;AAC9D,QAAAA,GAAE,KAAK,KAAK,SAASE,MAAK;AAAA,MAC9B;AACA,aAAOA;AAAA,IACX;AAEA,aAASC,SAAQ;AACb,UAAID,SAAQD,KAAI,IAAI;AACpB,MAAAC,OAAM,aAAa;AACnB,UAAI,QAAQ,WAAW,GAAG;AACtB,QAAAA,OAAM,KAAK;AAAA,MACf,OAAO;AACH,QAAAA,OAAM,SAAS;AACf,mBAAW,WAAW;AAAE,cAAIA,OAAM,cAAc,KAAM,CAAAA,OAAM,KAAK;AAAA,QAAG,GAAG,QAAQ,OAAO;AAAA,MAC1F;AAAA,IACJ;AAAC;AAED,aAASE,SAAQ;AACb,UAAIF,SAAQD,KAAI,IAAI;AACpB,MAAAC,OAAM,aAAa;AACnB,UAAI,QAAQ,YAAY,GAAG;AACvB,QAAAA,OAAM,KAAK;AAAA,MACf,OAAO;AACH,mBAAW,WAAW;AAAE,cAAIA,OAAM,cAAc,MAAO,CAAAA,OAAM,KAAK;AAAA,QAAG,GAAG,QAAQ,QAAQ;AAAA,MAC5F;AAAA,IACJ;AAAC;AAED,QAAI,CAAC,QAAQ,KAAM,MAAK,KAAK,WAAW;AAAE,MAAAD,KAAI,IAAI;AAAA,IAAG,CAAC;AAEtD,QAAI,QAAQ,WAAW,UAAU;AAC7B,UAAI,SAAW,QAAQ,OAAO,SAAS,QACnC,UAAW,QAAQ,WAAW,UAAU,eAAe,SACvD,WAAW,QAAQ,WAAW,UAAU,eAAe;AAC3D,WAAK,MAAM,EAAE,SAASE,MAAK,EAAE,MAAM,EAAE,UAAUC,MAAK;AAAA,IACxD;AAEA,WAAO;AAAA,EAEX;AAEA,EAAAJ,GAAE,GAAG,MAAM,WAAW;AAAA,IAClB,WAAW;AAAA,IACX,SAAS;AAAA,IACT,UAAU;AAAA,IACV,MAAM;AAAA,IACN,UAAU;AAAA,IACV,SAAS;AAAA,IACT,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,OAAO;AAAA,IACP,SAAS;AAAA,EACb;AAEA,EAAAA,GAAE,GAAG,MAAM,aAAa,WAAW;AACjC,IAAAA,GAAE,QAAQ,EAAE,KAAK,WAAW;AAC1B,UAAI,UAAUA,GAAE,KAAK,MAAM,eAAe;AAC1C,UAAI,CAAC,WAAW,CAAC,eAAe,OAAO,GAAG;AACxC,QAAAA,GAAE,IAAI,EAAE,OAAO;AAAA,MACjB;AAAA,IACF,CAAC;AAAA,EACH;AAMA,EAAAA,GAAE,GAAG,MAAM,iBAAiB,SAAS,KAAK,SAAS;AAC/C,WAAOA,GAAE,WAAWA,GAAE,OAAO,CAAC,GAAG,SAASA,GAAE,GAAG,EAAE,SAAS,CAAC,IAAI;AAAA,EACnE;AAEA,EAAAA,GAAE,GAAG,MAAM,SAAS,WAAW;AAC3B,WAAOA,GAAE,IAAI,EAAE,OAAO,EAAE,MAAOA,GAAE,QAAQ,EAAE,UAAU,IAAIA,GAAE,MAAM,EAAE,OAAO,IAAI,IAAK,MAAM;AAAA,EAC7F;AAEA,EAAAA,GAAE,GAAG,MAAM,SAAS,WAAW;AAC3B,WAAOA,GAAE,IAAI,EAAE,OAAO,EAAE,OAAQA,GAAE,QAAQ,EAAE,WAAW,IAAIA,GAAE,MAAM,EAAE,MAAM,IAAI,IAAK,MAAM;AAAA,EAC9F;AAiBC,EAAAA,GAAE,GAAG,MAAM,aAAa,SAAS,QAAQ,QAAQ;AACpD,WAAO,WAAW;AACjB,UAAI,MAAM,EAAC,IAAI,OAAO,CAAC,GAAG,IAAK,OAAO,SAAS,IAAI,OAAO,CAAC,IAAI,MAAM,GACjE,WAAWA,GAAE,QAAQ,EAAE,UAAU,IAAI,QACrC,YAAYA,GAAE,QAAQ,EAAE,WAAW,IAAI,QACvC,QAAQA,GAAE,IAAI;AAElB,UAAI,MAAM,OAAO,EAAE,MAAM,SAAU,KAAI,KAAK;AAC5C,UAAI,MAAM,OAAO,EAAE,OAAO,UAAW,KAAI,KAAK;AAC9C,UAAIA,GAAE,MAAM,EAAE,MAAM,IAAIA,GAAE,QAAQ,EAAE,WAAW,IAAI,MAAM,OAAO,EAAE,OAAO,OAAQ,KAAI,KAAK;AAC1F,UAAIA,GAAE,MAAM,EAAE,OAAO,IAAIA,GAAE,QAAQ,EAAE,UAAU,IAAI,MAAM,OAAO,EAAE,MAAM,OAAQ,KAAI,KAAK;AAEzF,aAAO,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK;AAAA,IACpC;AAAA,EACD;AAED,GAAG,MAAM;;;AD9PT,EAAE,GAAG,OAAO;AAAA,EACV,YAAY,SAAS,GAAG,GAAG;AACzB,WAAO,KAAK,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC;AAAA,EAC3C;AACF,CAAC;AAED,EAAE,QAAQ,EAAE,GAAG,6BAA6B,WAAW;AACrD,IAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,SAAS,KAAK,MAAM,KAAK,CAAC;AAC5D,IAAE,WAAW,EAAE,MAAM,EAAE,MAAM,OAAO,SAAS,KAAK,MAAM,KAAK,CAAC;AAC9D,IAAE,WAAW,EAAE,MAAM,EAAE,MAAM,OAAO,SAAS,KAAK,MAAM,KAAK,CAAC;AAC9D,IAAE,WAAW,EAAE,MAAM,EAAE,MAAM,OAAO,SAAS,KAAK,MAAM,KAAK,CAAC;AAC9D,IAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,OAAO,SAAS,EAAE,GAAG,MAAM,QAAQ,MAAM,KAAK,CAAC;AACpF,CAAC;AAED,EAAE,QAAQ,EAAE,GAAG,mBAAmB,WAAW;AAI3C,IAAE,mBAAmB,EAAE,GAAG,SAAS,SAAS,GAAG;AAC7C,MAAE,eAAe;AACjB,QAAIK,UAAS,EAAE,IAAI,EAAE,KAAK,YAAY;AACtC,QAAI,QAAQ,EAAE,kBAAkB,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,kBAAkB,IAAI,EAAE,MAAM;AAEzF,UACG,KAAK,mBAAmB,EACxB,OAAO,EACP,YAAY,QAAQ;AACvB,UACG,KAAK,uBAAuBA,UAAS,IAAI,EACzC,OAAO,EACP,SAAS,QAAQ;AACpB,UAAM,KAAK,YAAY,EAAE,YAAY,QAAQ;AAC7C,UAAM,KAAK,gBAAgBA,UAAS,IAAI,EAAE,SAAS,QAAQ;AAAA,EAC7D,CAAC;AAED,WAAS,aAAa,OAAO;AAC3B,QAAI,UAAU,EAAE,0BAA0B,MAAM,KAAK,QAAQ,IAAI,IAAI;AACrE,UAAM,GAAG,UAAU,IAAI,QAAQ,KAAK,IAAI,QAAQ,KAAK;AAAA,EACvD;AAEA,IAAE,sBAAsB,EAAE,KAAK;AAC/B,IAAE,eAAe,EAAE,KAAK,WAAW;AACjC,iBAAa,EAAE,IAAI,CAAC;AAAA,EACtB,CAAC;AACD,IAAE,eAAe,EAAE,MAAM,WAAW;AAClC,iBAAa,EAAE,IAAI,CAAC;AAAA,EACtB,CAAC;AACH,CAAC;;;AElDD;AAAA,EAAE,QAAQ,EAAE,GAAG,mBAAmB,WAAW;AAC3C,GAAC,WAAY;AACX,QAAI,UAAU,SAAS,iBAAiB,kBAAkB,EAAE,CAAC;AAC7D,QAAIC;AAEJ,QAAI;AAEJ,mBAAe;AAEf,aAAS,iBAAkB;AACzB,MAAAA,QAAO,SAAS,iBAAiB,cAAc;AAC/C,eAAS,SAAS,iBAAiB,mBAAmB;AAAA,IACxD;AAGA,QAAIC,QAAO;AAAA,MACT,KAAK;AAAA,MACL,MAAM;AAAA,MACN,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,IACT;AAGA,QAAI,YAAY;AAAA,MACd,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAGA,aAAS,IAAI,GAAG,IAAID,MAAK,QAAQ,EAAE,GAAG;AACpC,mBAAa,CAAC;AAAA,IAChB;AAEA,aAAS,aAAcE,QAAO;AAC5B,MAAAF,MAAKE,MAAK,EAAE,iBAAiB,SAAS,kBAAkB;AACxD,MAAAF,MAAKE,MAAK,EAAE,iBAAiB,WAAW,oBAAoB;AAC5D,MAAAF,MAAKE,MAAK,EAAE,iBAAiB,SAAS,kBAAkB;AAGxD,MAAAF,MAAKE,MAAK,EAAE,QAAQA;AAAA,IACtB;AAGA,aAAS,mBAAoB,OAAO;AAClC,UAAI,MAAM,MAAM;AAChB,kBAAY,KAAK,KAAK;AAAA,IACxB;AAGA,aAAS,qBAAsB,OAAO;AACpC,UAAI,MAAM,MAAM;AAEhB,cAAQ,KAAK;AAAA,QACX,KAAKD,MAAK;AACR,gBAAM,eAAe;AAErB,uBAAa;AACb;AAAA,QACF,KAAKA,MAAK;AACR,gBAAM,eAAe;AAErB,wBAAc;AACd;AAAA;AAAA;AAAA,QAIF,KAAKA,MAAK;AAAA,QACV,KAAKA,MAAK;AACR,+BAAqB,KAAK;AAC1B;AAAA,MACJ;AAAA,IACF;AAGA,aAAS,mBAAoB,OAAO;AAClC,UAAI,MAAM,MAAM;AAEhB,cAAQ,KAAK;AAAA,QACX,KAAKA,MAAK;AAAA,QACV,KAAKA,MAAK;AACR,+BAAqB,KAAK;AAC1B;AAAA,QACF,KAAKA,MAAK;AAAA,QACV,KAAKA,MAAK;AACR,sBAAY,MAAM,MAAM;AACxB;AAAA,MACJ;AAAA,IACF;AAKA,aAAS,qBAAsB,OAAO;AACpC,UAAI,MAAM,MAAM;AAChB,UAAI,WAAW,QAAQ,aAAa,kBAAkB,KAAK;AAC3D,UAAI,UAAU;AAEd,UAAI,UAAU;AACZ,YAAI,QAAQA,MAAK,MAAM,QAAQA,MAAK,MAAM;AACxC,gBAAM,eAAe;AACrB,oBAAU;AAAA,QACZ;AAAA,MACF,OACK;AACH,YAAI,QAAQA,MAAK,QAAQ,QAAQA,MAAK,OAAO;AAC3C,oBAAU;AAAA,QACZ;AAAA,MACF;AAEA,UAAI,SAAS;AACX,8BAAsB,KAAK;AAAA,MAC7B;AAAA,IACF;AAIA,aAAS,sBAAuB,OAAO;AACrC,UAAI,UAAU,MAAM;AAEpB,UAAI,UAAU,OAAO,GAAG;AACtB,YAAIE,UAAS,MAAM;AACnB,YAAIA,QAAO,UAAU,QAAW;AAC9B,cAAIH,MAAKG,QAAO,QAAQ,UAAU,OAAO,CAAC,GAAG;AAC3C,YAAAH,MAAKG,QAAO,QAAQ,UAAU,OAAO,CAAC,EAAE,MAAM;AAAA,UAChD,WACS,YAAYF,MAAK,QAAQ,YAAYA,MAAK,IAAI;AACrD,yBAAa;AAAA,UACf,WACS,YAAYA,MAAK,SAAS,WAAWA,MAAK,MAAM;AACvD,0BAAc;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAGA,aAAS,YAAa,KAAK,UAAU;AACnC,iBAAW,YAAY;AAGvB,UAAI,kBAAkB,EAAE,GAAG,EAAE,QAAQ,mBAAmB;AAExD,qBAAe,eAAe;AAG9B,UAAI,gBAAgB,UAAU;AAG9B,UAAI,aAAa,iBAAiB,MAAM;AAGxC,UAAI,WAAW,IAAI,aAAa,eAAe;AAG/C,UAAI,WAAW,SAAS,eAAe,QAAQ;AAE/C,UAAI,UAAU;AACZ,iBAAS,gBAAgB,QAAQ;AAAA,MACnC;AAGA,UAAI,UAAU;AACZ,YAAI,MAAM;AAAA,MACZ;AAAA,IACF;AAGA,aAAS,eAAgB,iBAAiB;AACxC,UAAI,wBAAwB,EAAE,eAAe,EAAE,KAAK,cAAc;AAElE,eAAS,IAAI,GAAG,IAAI,sBAAsB,QAAQ,KAAK;AACrD,8BAAsB,CAAC,EAAE,aAAa,YAAY,IAAI;AACtD,8BAAsB,CAAC,EAAE,aAAa,iBAAiB,OAAO;AAAA,MAChE;AAAA,IACF;AAGA,aAAS,gBAAiB;AACxB,MAAAD,MAAK,CAAC,EAAE,MAAM;AAAA,IAChB;AAGA,aAAS,eAAgB;AACvB,MAAAA,MAAKA,MAAK,SAAS,CAAC,EAAE,MAAM;AAAA,IAC9B;AAKA,aAAS,iBAAkB;AACzB,UAAI,WAAW,QAAQ,aAAa,YAAY;AAChD,UAAI,QAAQ;AAEZ,UAAI,UAAU;AACZ,YAAI,aAAa,QAAQ,aAAa,YAAY;AAClD,YAAI,YAAY;AACd,kBAAQ;AAAA,QACV,OACK;AAEH,kBAAQ;AAAA,QACV;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,EACF,GAAG;AACL,CAAC;;;ACrND;AAAA,IAAAI,2BAAO;AACP,8BAAO;AAEP,EAAE,QAAQ,EAAE,GAAG,mBAAmB,WAAW;AAC3C,IAAE,SAAS,eAAe,+BAA+B,EAAE,iBAAiB,KAAK,OAAO,CAAC,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,YAAY,MAAM,YAAY,EAAE,CAAE,CAAC,GAAE,OAAO,EAAE,YAAY,EAAE,EAAE,CAAC;AAC/K,IAAE,SAAS,eAAe,8BAA8B,EAAE,iBAAiB,KAAK,OAAO,CAAC,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,YAAY,CAAC,GAAE,IAAI,GAAG,YAAY,EAAE,CAAE,CAAC,EAAE,CAAC;AACzJ,IAAE,SAAS,eAAe,gCAAgC,EAAE,iBAAiB,KAAK,OAAO,CAAC,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,YAAY,KAAK,YAAY,EAAE,CAAE,CAAC,GAAE,OAAO,EAAE,YAAY,EAAE,EAAE,CAAC;AAC/K,IAAE,SAAS,eAAe,+BAA+B,EAAE,iBAAiB,KAAK,OAAO,CAAC,CAAE,EAAE,SAAS,CAAE,GAAG,CAAE,GAAG,YAAY,CAAC,GAAE,GAAG,GAAG,YAAY,EAAE,CAAE,CAAC,EAAE,CAAC;AAC3J,CAAC;;;ACRD;AAAA,aAAwB;AAEjB,IAAI,eAAsB,iBAAU,WAAU;AACnD,OAAK,WAAW;AAAA,IACd,KAAK;AAAA,IACL,cAAc;AAAA,EAChB,CAAC;AAED,OAAK,MAAM,cAAc,WAAW;AAElC,QAAI,iBAAiB,SAAS,cAAc,UAAU;AACtD,QAAI,kBAAkB,SAAS,cAAc,WAAW;AAExD,QAAI,KAAK,MAAM,KAAK,kBAAkB,EAAE,SAAS,GAAE;AACjD,WAAK,KAAK,MAAM,KAAK,MAAM,KAAK,kBAAkB,EAAE,KAAK,WAAW;AAAA,IACtE;AAEA,QAAI,KAAK,MAAM,KAAK,QAAQ,MAAM,QAAU;AAC1C,WAAK,KAAK,OAAO,MAAM,KAAK,MAAM,KAAK,QAAQ;AAAA,IACjD;AAEA,QAAI,uBAAuB,SAAS,KAAK,cAAc,uBAAuB;AAE9E,QAAI,yBAAyB,QAAQ,gBAAgB;AACnD,qBAAe,MAAM,UAAU;AAAA,IACjC,WAAW,gBAAgB;AACzB,qBAAe,MAAM,UAAU;AAC/B,sBAAgB,MAAM,UAAU;AAAA,IAClC;AAEA,SAAK,KAAK,gBAAgB,yBAAyB,OAAO,KAAK,qBAAqB;AAGpF,QAAI,KAAK,KAAK,QAAQ,IAAI;AACxB,WAAK,KAAK,MAAM,OAAO,SAAS;AAAA,IAClC;AAEA,SAAK,cAAc,KAAK,MAAM,KAAK,8BAA8B;AACjE,SAAK,eAAe,KAAK,MAAM,KAAK,+BAA+B;AACnE,SAAK,eAAe,KAAK,MAAM,KAAK,+BAA+B;AACnE,SAAK,YAAY,KAAK,MAAM,KAAK,4BAA4B;AAC7D,SAAK,WAAW,KAAK,MAAM,KAAK,2BAA2B;AAE3D,QAAI,KAAK;AACP,WAAK,YAAY,GAAG,SAAS,KAAK,mBAAmB,KAAK,IAAI,CAAC;AAEjE,QAAI,KAAK;AACP,WAAK,aAAa,GAAG,SAAS,KAAK,oBAAoB,KAAK,IAAI,CAAC;AAEnE,QAAI,KAAK;AACP,WAAK,aAAa,GAAG,SAAS,KAAK,oBAAoB,KAAK,IAAI,CAAC;AAEnE,QAAI,KAAK,UAAU;AACjB,WAAK,UAAU,GAAG,SAAS,KAAK,iBAAiB,KAAK,IAAI,CAAC;AAAA,EAC/D,CAAC;AAED,OAAK,qBAAqB,SAAS,GAAG;AACpC,MAAE,eAAe;AACjB,QAAI;AACF,UAAI,qBAAqB,2CAA2C,KAAK,UAAU;AACnF,UAAI,KAAK,KAAK,mBAAmB,QAAW;AAC1C,8BAAsB,gBAAgB,KAAK,KAAK;AAAA,MAClD;AACA,4BAAsB,UAAU,mBAAmB,KAAK,KAAK,GAAG;AAChE,UAAI,KAAK,KAAK,iBAAiB,QAAW;AACxC,8BAAsB,UAAU,KAAK,KAAK;AAAA,MAC5C;AAEA,aAAO,KAAK,oBAAoB,IAAI,KAAK,KAAK,YAAY;AAAA,IAE5D,SAAS,sBAAsB;AAC7B,cAAQ,KAAK,gCAAgC;AAAA,IAC/C;AAAA,EACF;AAEA,OAAK,sBAAsB,SAAS,GAAG;AACrC,MAAE,eAAe;AACjB,WAAO,KAAK,iDAAgD,mBAAmB,KAAK,KAAK,GAAG,GAAG,IAAI,KAAK,KAAK,YAAY;AAAA,EAC3H;AAEA,OAAK,sBAAsB,SAAS,GAAG;AACrC,MAAE,eAAe;AAEjB,WAAO,KAAK,yDAAuD,mBAAmB,KAAK,KAAK,GAAG,IAAE,YAAY,KAAK,UAAU,GAAG,IAAI,KAAK,KAAK,YAAY;AAAA,EAC/J;AAEA,OAAK,mBAAmB,SAAS,GAAG;AAClC,MAAE,eAAe;AACjB,QAAI;AACF,aAAO,SAAS,OAAO,wDAAwD,KAAK,UAAU,IAAI,MAAM,mBAAmB,KAAK,KAAK,GAAG;AAAA,IAC1I,SAAS,sBAAsB;AAC7B,cAAQ,KAAK,gCAAgC;AAAA,IAC/C;AAAA,EACF;AAEA,OAAK,YAAY,WAAU;AACzB,QAAIC;AACJ,QAAI,WAAW,KAAK,MAAM,KAAK,mBAAmB;AAElD,QAAI,SAAS,UAAU,SAAS,KAAK,YAAY,MAAM,QAAW;AAChE,MAAAA,QAAO,SAAS,KAAK,YAAY;AAAA,IACnC,OAAO;AACL,UAAI,CAAC,SAAS;AACZ,mBAAW,EAAE,mBAAmB;AAClC,UAAI,CAAC,SAAS;AACZ,mBAAW,EAAE,IAAI;AACnB,MAAAA,QAAO,EAAE,KAAK,SAAS,KAAK,CAAC;AAC7B,UAAI,CAACA,MAAK;AACR,QAAAA,QAAO,OAAO,SAAS;AAAA,IAC3B;AAEA,QAAIA,MAAK,SAAS,KAAK;AACrB,MAAAA,QAAOA,MAAK,UAAU,GAAE,GAAG,IAAI;AAAA,IACjC;AACA,WAAOA;AAAA,EACT;AACF,CAAC;AAED,EAAE,QAAQ,EAAE,GAAG,6CAA6C,WAAW;AACrE,eAAa,SAAS,cAAc;AACtC,CAAC;;;ACxHD;AAAA,EAAE,QAAQ,EAAE,GAAG,mBAAmB,WAAW;AAC3C,QAAMC,QAAO,SAAS,iBAAiB,cAAc;AACrD,QAAM,cAAc;AAEpB,QAAM,UAAU,CAAAC,SAAO;AACrB,UAAM,UAAU,IAAI,OAAO,YAAY;AACvC,UAAMC,SAAQ,QAAQ,KAAKD,IAAG,KAAK,CAAC;AACpC,WAAOC,OAAM,SAAS,IAAIA,OAAM,CAAC,IAAI;AAAA,EACvC;AAEA,QAAM,aAAa,WAAS;AAC1B,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,YAAM,CAAC,EAAE,UAAU,OAAO,WAAW;AAAA,IACvC;AAAA,EACF;AAEA,QAAM,WAAW,WAAS;AACxB,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,YAAM,CAAC,EAAE,UAAU,IAAI,WAAW;AAAA,IACpC;AAAA,EACF;AAEA,EAAAF,MAAK,QAAQ,SAAO;AAClB,UAAM,OAAO,QAAQ,IAAI,aAAa,MAAM,CAAC;AAE7C,QAAI,MAAM;AACR,YAAM,cAAc,SAAS,cAAc,qBAAqB,IAAI,GAAG;AACvE,YAAM,aAAa,YAAY,iBAAiB,mBAAmB;AACnE,YAAM,WAAW,IAAI,iBAAiB,gBAAgB;AAEtD,eAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,YAAI,SAAS,CAAC,EAAE,UAAU,SAAS,WAAW,KAAK,WAAW,CAAC,EAAE,UAAU,SAAS,WAAW,GAAG;AAChG,mBAAS,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;AAAA,QACvC;AAEA,iBAAS,CAAC,EAAE,iBAAiB,SAAS,SAAS,OAAO;AACpD,gBAAM,OAAO,MAAM;AAEnB,cAAI,CAAC,KAAK,UAAU,SAAS,WAAW,GAAG;AACzC,uBAAW,CAAC,GAAG,UAAU,GAAG,UAAU,CAAC;AAEvC,kBAAMG,SAAQ,CAAC,GAAG,QAAQ,EAAE,QAAQ,IAAI;AACxC,qBAAS,CAAC,MAAM,WAAWA,MAAK,CAAC,CAAC;AAAA,UACpC;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,CAAC;AACH,CAAC;;;AChDD;AAAA,wBAAuB;AAEvB,SAAS,iBAAiB,oBAAoB,MAAM;AAClD,QAAM,oBAAoB,SAAS,cAAc,+BAA+B;AAGhF,MAAI,CAAC,mBAAmB;AACtB,sBAAAC,QAAW,MAAM;AAAA,EACnB;AACF,CAAC;;;ACTD;AACO,SAAS,yBAAyB;AAEvC,MAAI,OAAO,aAAa,OAAO,OAAO,UAAU;AAE9C,QAAI,UAAU;AAAA,MACZ,MAAM;AAAA,MACN,MAAM,OAAO,SAAS;AAAA,MACtB,MAAM,OAAO,SAAS;AAAA,MACtB,OAAO,OAAO,SAAS;AAAA,IACzB;AACA,WAAO,OAAO,YAAY,SAAS,GAAG;AAAA,EACxC;AACF;AAEA,EAAE,QAAQ,EAAE,GAAG,mBAAmB,MAAM,uBAAuB,CAAC;;;AtRVhE,WAAAC,QAAM,MAAM;;;AuRLZ;;;ACAA;AAAA,KAAK,iBAAiB,KAAK,eAAe,CAAC;AAC3C,KAAK,aAAa,IAAI,IAAI,KAAK,OAAQ,KAAK,aAAa,IAAI,KAAK,CAAC,GAAI,KAAK,MAAM,w/gKAA8s3J,CAAC;AACjy3J,KAAK,aAAa,IAAI,IAAI,KAAK,OAAQ,KAAK,aAAa,IAAI,KAAK,CAAC,GAAI,KAAK,MAAM,q2kJAAk1kJ,CAAC;AACr6kJ,KAAK,aAAa,IAAI,IAAI,KAAK,OAAQ,KAAK,aAAa,IAAI,KAAK,CAAC,GAAI,KAAK,MAAM,izhKAA0n4J,CAAC;;;ACH7s4J;;;ACAA;;;ACAA;AAKA,IAAI,cAAc,OAAO,OAAO,CAAC,CAAC;AAClC,IAAI,UAAU,MAAM;AAGpB,SAAS,QAAQ,GAAG;AAChB,SAAO,MAAM,UAAa,MAAM;AACpC;AACA,SAAS,MAAM,GAAG;AACd,SAAO,MAAM,UAAa,MAAM;AACpC;AACA,SAAS,OAAO,GAAG;AACf,SAAO,MAAM;AACjB;AACA,SAAS,QAAQ,GAAG;AAChB,SAAO,MAAM;AACjB;AAIA,SAAS,YAAY,OAAO;AACxB,SAAQ,OAAO,UAAU,YACrB,OAAO,UAAU;AAAA,EAEjB,OAAO,UAAU,YACjB,OAAO,UAAU;AACzB;AACA,SAAS,WAAW,OAAO;AACvB,SAAO,OAAO,UAAU;AAC5B;AAMA,SAAS,SAAS,KAAK;AACnB,SAAO,QAAQ,QAAQ,OAAO,QAAQ;AAC1C;AAIA,IAAI,YAAY,OAAO,UAAU;AAQjC,SAAS,cAAc,KAAK;AACxB,SAAO,UAAU,KAAK,GAAG,MAAM;AACnC;AACA,SAAS,SAAS,GAAG;AACjB,SAAO,UAAU,KAAK,CAAC,MAAM;AACjC;AAIA,SAAS,kBAAkB,KAAK;AAC5B,MAAI,IAAI,WAAW,OAAO,GAAG,CAAC;AAC9B,SAAO,KAAK,KAAK,KAAK,MAAM,CAAC,MAAM,KAAK,SAAS,GAAG;AACxD;AACA,SAAS,UAAU,KAAK;AACpB,SAAQ,MAAM,GAAG,KACb,OAAO,IAAI,SAAS,cACpB,OAAO,IAAI,UAAU;AAC7B;AAIA,SAAS,SAAS,KAAK;AACnB,SAAO,OAAO,OACR,KACA,MAAM,QAAQ,GAAG,KAAM,cAAc,GAAG,KAAK,IAAI,aAAa,YAC1D,KAAK,UAAU,KAAK,UAAU,CAAC,IAC/B,OAAO,GAAG;AACxB;AACA,SAAS,SAASC,OAAM,KAAK;AAEzB,MAAI,OAAO,IAAI,WAAW;AACtB,WAAO,IAAI;AAAA,EACf;AACA,SAAO;AACX;AAKA,SAAS,SAAS,KAAK;AACnB,MAAI,IAAI,WAAW,GAAG;AACtB,SAAO,MAAM,CAAC,IAAI,MAAM;AAC5B;AAKA,SAAS,QAAQC,MAAK,kBAAkB;AACpC,MAAIC,OAAM,uBAAO,OAAO,IAAI;AAC5B,MAAI,OAAOD,KAAI,MAAM,GAAG;AACxB,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AAClC,IAAAC,KAAI,KAAK,CAAC,CAAC,IAAI;AAAA,EACnB;AACA,SAAO,mBAAmB,SAAU,KAAK;AAAE,WAAOA,KAAI,IAAI,YAAY,CAAC;AAAA,EAAG,IAAI,SAAU,KAAK;AAAE,WAAOA,KAAI,GAAG;AAAA,EAAG;AACpH;AAIA,IAAI,eAAe,QAAQ,kBAAkB,IAAI;AAIjD,IAAI,sBAAsB,QAAQ,4BAA4B;AAI9D,SAAS,SAAS,KAAK,MAAM;AACzB,MAAIC,OAAM,IAAI;AACd,MAAIA,MAAK;AAEL,QAAI,SAAS,IAAIA,OAAM,CAAC,GAAG;AACvB,UAAI,SAASA,OAAM;AACnB;AAAA,IACJ;AACA,QAAIC,SAAQ,IAAI,QAAQ,IAAI;AAC5B,QAAIA,SAAQ,IAAI;AACZ,aAAO,IAAI,OAAOA,QAAO,CAAC;AAAA,IAC9B;AAAA,EACJ;AACJ;AAIA,IAAIC,kBAAiB,OAAO,UAAU;AACtC,SAAS,OAAO,KAAK,KAAK;AACtB,SAAOA,gBAAe,KAAK,KAAK,GAAG;AACvC;AAIA,SAAS,OAAO,IAAI;AAChB,MAAIC,SAAQ,uBAAO,OAAO,IAAI;AAC9B,SAAO,SAAS,SAASL,MAAK;AAC1B,QAAI,MAAMK,OAAML,IAAG;AACnB,WAAO,QAAQK,OAAML,IAAG,IAAI,GAAGA,IAAG;AAAA,EACtC;AACJ;AAIA,IAAI,aAAa;AACjB,IAAI,WAAW,OAAO,SAAUA,MAAK;AACjC,SAAOA,KAAI,QAAQ,YAAY,SAAU,GAAG,GAAG;AAAE,WAAQ,IAAI,EAAE,YAAY,IAAI;AAAA,EAAK,CAAC;AACzF,CAAC;AAID,IAAI,aAAa,OAAO,SAAUA,MAAK;AACnC,SAAOA,KAAI,OAAO,CAAC,EAAE,YAAY,IAAIA,KAAI,MAAM,CAAC;AACpD,CAAC;AAID,IAAI,cAAc;AAClB,IAAI,YAAY,OAAO,SAAUA,MAAK;AAClC,SAAOA,KAAI,QAAQ,aAAa,KAAK,EAAE,YAAY;AACvD,CAAC;AASD,SAAS,aAAa,IAAI,KAAK;AAC3B,WAAS,QAAQ,GAAG;AAChB,QAAI,IAAI,UAAU;AAClB,WAAO,IACD,IAAI,IACA,GAAG,MAAM,KAAK,SAAS,IACvB,GAAG,KAAK,KAAK,CAAC,IAClB,GAAG,KAAK,GAAG;AAAA,EACrB;AACA,UAAQ,UAAU,GAAG;AACrB,SAAO;AACX;AACA,SAAS,WAAW,IAAI,KAAK;AACzB,SAAO,GAAG,KAAK,GAAG;AACtB;AAEA,IAAI,SAAS,SAAS,UAAU,OAAO,aAAa;AAIpD,SAAS,QAAQ,MAAMM,QAAO;AAC1B,EAAAA,SAAQA,UAAS;AACjB,MAAI,IAAI,KAAK,SAASA;AACtB,MAAI,MAAM,IAAI,MAAM,CAAC;AACrB,SAAO,KAAK;AACR,QAAI,CAAC,IAAI,KAAK,IAAIA,MAAK;AAAA,EAC3B;AACA,SAAO;AACX;AAIA,SAASC,QAAO,IAAI,OAAO;AACvB,WAAS,OAAO,OAAO;AACnB,OAAG,GAAG,IAAI,MAAM,GAAG;AAAA,EACvB;AACA,SAAO;AACX;AAIA,SAAS,SAAS,KAAK;AACnB,MAAI,MAAM,CAAC;AACX,WAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACjC,QAAI,IAAI,CAAC,GAAG;AACR,MAAAA,QAAO,KAAK,IAAI,CAAC,CAAC;AAAA,IACtB;AAAA,EACJ;AACA,SAAO;AACX;AAOA,SAASC,MAAK,GAAG,GAAG,GAAG;AAAE;AAIzB,IAAI,KAAK,SAAU,GAAG,GAAG,GAAG;AAAE,SAAO;AAAO;AAK5C,IAAIC,YAAW,SAAU,GAAG;AAAE,SAAO;AAAG;AAIxC,SAAS,gBAAgBC,UAAS;AAC9B,SAAOA,SACF,OAAO,SAAUC,OAAM,GAAG;AAAE,WAAOA,MAAK,OAAO,EAAE,cAAc,CAAC,CAAC;AAAA,EAAG,GAAG,CAAC,CAAC,EACzE,KAAK,GAAG;AACjB;AAKA,SAAS,WAAW,GAAG,GAAG;AACtB,MAAI,MAAM;AACN,WAAO;AACX,MAAI,YAAY,SAAS,CAAC;AAC1B,MAAI,YAAY,SAAS,CAAC;AAC1B,MAAI,aAAa,WAAW;AACxB,QAAI;AACA,UAAI,WAAW,MAAM,QAAQ,CAAC;AAC9B,UAAI,WAAW,MAAM,QAAQ,CAAC;AAC9B,UAAI,YAAY,UAAU;AACtB,eAAQ,EAAE,WAAW,EAAE,UACnB,EAAE,MAAM,SAAU,GAAG,GAAG;AACpB,iBAAO,WAAW,GAAG,EAAE,CAAC,CAAC;AAAA,QAC7B,CAAC;AAAA,MACT,WACS,aAAa,QAAQ,aAAa,MAAM;AAC7C,eAAO,EAAE,QAAQ,MAAM,EAAE,QAAQ;AAAA,MACrC,WACS,CAAC,YAAY,CAAC,UAAU;AAC7B,YAAI,QAAQ,OAAO,KAAK,CAAC;AACzB,YAAI,QAAQ,OAAO,KAAK,CAAC;AACzB,eAAQ,MAAM,WAAW,MAAM,UAC3B,MAAM,MAAM,SAAU,KAAK;AACvB,iBAAO,WAAW,EAAE,GAAG,GAAG,EAAE,GAAG,CAAC;AAAA,QACpC,CAAC;AAAA,MACT,OACK;AAED,eAAO;AAAA,MACX;AAAA,IACJ,SACO,GAAG;AAEN,aAAO;AAAA,IACX;AAAA,EACJ,WACS,CAAC,aAAa,CAAC,WAAW;AAC/B,WAAO,OAAO,CAAC,MAAM,OAAO,CAAC;AAAA,EACjC,OACK;AACD,WAAO;AAAA,EACX;AACJ;AAMA,SAAS,aAAa,KAAK,KAAK;AAC5B,WAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACjC,QAAI,WAAW,IAAI,CAAC,GAAG,GAAG;AACtB,aAAO;AAAA,EACf;AACA,SAAO;AACX;AAIA,SAAS,KAAK,IAAI;AACd,MAAI,SAAS;AACb,SAAO,WAAY;AACf,QAAI,CAAC,QAAQ;AACT,eAAS;AACT,SAAG,MAAM,MAAM,SAAS;AAAA,IAC5B;AAAA,EACJ;AACJ;AAEA,SAAS,WAAW,GAAG,GAAG;AACtB,MAAI,MAAM,GAAG;AACT,WAAO,MAAM,KAAK,IAAI,MAAM,IAAI;AAAA,EACpC,OACK;AACD,WAAO,MAAM,KAAK,MAAM;AAAA,EAC5B;AACJ;AAEA,IAAI,WAAW;AACf,IAAI,cAAc,CAAC,aAAa,aAAa,QAAQ;AACrD,IAAI,kBAAkB;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAEA,IAAI,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,EAKT,uBAAuB,uBAAO,OAAO,IAAI;AAAA;AAAA;AAAA;AAAA,EAIzC,QAAQ;AAAA;AAAA;AAAA;AAAA,EAIR,eAAe;AAAA;AAAA;AAAA;AAAA,EAIf,UAAU;AAAA;AAAA;AAAA;AAAA,EAIV,aAAa;AAAA;AAAA;AAAA;AAAA,EAIb,cAAc;AAAA;AAAA;AAAA;AAAA,EAId,aAAa;AAAA;AAAA;AAAA;AAAA,EAIb,iBAAiB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKlB,UAAU,uBAAO,OAAO,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA,EAK5B,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA,EAKf,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKhB,kBAAkB;AAAA;AAAA;AAAA;AAAA,EAIlB,iBAAiBH;AAAA;AAAA;AAAA;AAAA,EAIjB,sBAAsBC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKtB,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,EAKb,OAAO;AAAA;AAAA;AAAA;AAAA,EAIP,iBAAiB;AACrB;AAOA,IAAI,gBAAgB;AAIpB,SAAS,WAAWT,MAAK;AACrB,MAAI,KAAKA,OAAM,IAAI,WAAW,CAAC;AAC/B,SAAO,MAAM,MAAQ,MAAM;AAC/B;AAIA,SAAS,IAAI,KAAK,KAAK,KAAK,YAAY;AACpC,SAAO,eAAe,KAAK,KAAK;AAAA,IAC5B,OAAO;AAAA,IACP,YAAY,CAAC,CAAC;AAAA,IACd,UAAU;AAAA,IACV,cAAc;AAAA,EAClB,CAAC;AACL;AAIA,IAAI,SAAS,IAAI,OAAO,KAAK,OAAO,cAAc,QAAQ,SAAS,CAAC;AACpE,SAAS,UAAU,MAAM;AACrB,MAAI,OAAO,KAAK,IAAI,GAAG;AACnB;AAAA,EACJ;AACA,MAAI,WAAW,KAAK,MAAM,GAAG;AAC7B,SAAO,SAAU,KAAK;AAClB,aAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACtC,UAAI,CAAC;AACD;AACJ,YAAM,IAAI,SAAS,CAAC,CAAC;AAAA,IACzB;AACA,WAAO;AAAA,EACX;AACJ;AAGA,IAAI,WAAW,eAAe,CAAC;AAE/B,IAAI,YAAY,OAAO,WAAW;AAClC,IAAI,KAAK,aAAa,OAAO,UAAU,UAAU,YAAY;AAC7D,IAAI,OAAO,MAAM,eAAe,KAAK,EAAE;AACvC,IAAI,QAAQ,MAAM,GAAG,QAAQ,UAAU,IAAI;AAC3C,IAAI,SAAS,MAAM,GAAG,QAAQ,OAAO,IAAI;AACzC,MAAM,GAAG,QAAQ,SAAS,IAAI;AAC9B,IAAI,QAAQ,MAAM,uBAAuB,KAAK,EAAE;AAChD,MAAM,cAAc,KAAK,EAAE,KAAK,CAAC;AACjC,MAAM,YAAY,KAAK,EAAE;AACzB,IAAI,OAAO,MAAM,GAAG,MAAM,gBAAgB;AAG1C,IAAI,cAAc,CAAC,EAAE;AACrB,IAAI,kBAAkB;AACtB,IAAI,WAAW;AACX,MAAI;AACI,WAAO,CAAC;AACZ,WAAO,eAAe,MAAM,WAAW;AAAA,MACnC,KAAK,WAAY;AAEb,0BAAkB;AAAA,MACtB;AAAA,IACJ,CAAC;AACD,WAAO,iBAAiB,gBAAgB,MAAM,IAAI;AAAA,EACtD,SACO,GAAG;AAAA,EAAE;AAChB;AAVY;AAaZ,IAAI;AACJ,IAAI,oBAAoB,WAAY;AAChC,MAAI,cAAc,QAAW;AAEzB,QAAI,CAAC,aAAa,OAAO,WAAW,aAAa;AAG7C,kBACI,OAAO,SAAS,KAAK,OAAO,SAAS,EAAE,IAAI,YAAY;AAAA,IAC/D,OACK;AACD,kBAAY;AAAA,IAChB;AAAA,EACJ;AACA,SAAO;AACX;AAEA,IAAI,WAAW,aAAa,OAAO;AAEnC,SAAS,SAAS,MAAM;AACpB,SAAO,OAAO,SAAS,cAAc,cAAc,KAAK,KAAK,SAAS,CAAC;AAC3E;AACA,IAAI,YAAY,OAAO,WAAW,eAC9B,SAAS,MAAM,KACf,OAAO,YAAY,eACnB,SAAS,QAAQ,OAAO;AAC5B,IAAI;AACqB,IAAI,OAAO,QAAQ,eAAe,SAAS,GAAG,GAAG;AAEtE,SAAO;AACX,OACK;AAED;AAAA,GAAsB,WAAY;AAC9B,aAASY,OAAM;AACX,WAAK,MAAM,uBAAO,OAAO,IAAI;AAAA,IACjC;AACA,IAAAA,KAAI,UAAU,MAAM,SAAU,KAAK;AAC/B,aAAO,KAAK,IAAI,GAAG,MAAM;AAAA,IAC7B;AACA,IAAAA,KAAI,UAAU,MAAM,SAAU,KAAK;AAC/B,WAAK,IAAI,GAAG,IAAI;AAAA,IACpB;AACA,IAAAA,KAAI,UAAU,QAAQ,WAAY;AAC9B,WAAK,MAAM,uBAAO,OAAO,IAAI;AAAA,IACjC;AACA,WAAOA;AAAA,EACX,GAAE;AACN;AAEA,IAAI,kBAAkB;AActB,SAAS,mBAAmB,IAAI;AAC5B,MAAI,OAAO,QAAQ;AAAE,SAAK;AAAA,EAAM;AAChC,MAAI,CAAC;AACD,uBAAmB,gBAAgB,OAAO,IAAI;AAClD,oBAAkB;AAClB,QAAM,GAAG,OAAO,GAAG;AACvB;AAKA,IAAI;AAAA;AAAA,GAAuB,WAAY;AACnC,aAASC,OAAM,KAAK,MAAMC,WAAUC,OAAM,KAAK,SAAS,kBAAkB,cAAc;AACpF,WAAK,MAAM;AACX,WAAK,OAAO;AACZ,WAAK,WAAWD;AAChB,WAAK,OAAOC;AACZ,WAAK,MAAM;AACX,WAAK,KAAK;AACV,WAAK,UAAU;AACf,WAAK,YAAY;AACjB,WAAK,YAAY;AACjB,WAAK,YAAY;AACjB,WAAK,MAAM,QAAQ,KAAK;AACxB,WAAK,mBAAmB;AACxB,WAAK,oBAAoB;AACzB,WAAK,SAAS;AACd,WAAK,MAAM;AACX,WAAK,WAAW;AAChB,WAAK,eAAe;AACpB,WAAK,YAAY;AACjB,WAAK,WAAW;AAChB,WAAK,SAAS;AACd,WAAK,eAAe;AACpB,WAAK,YAAY;AACjB,WAAK,qBAAqB;AAAA,IAC9B;AACA,WAAO,eAAeF,OAAM,WAAW,SAAS;AAAA;AAAA;AAAA,MAG5C,KAAK,WAAY;AACb,eAAO,KAAK;AAAA,MAChB;AAAA,MACA,YAAY;AAAA,MACZ,cAAc;AAAA,IAClB,CAAC;AACD,WAAOA;AAAA,EACX,GAAE;AAAA;AACF,IAAI,mBAAmB,SAAUE,OAAM;AACnC,MAAIA,UAAS,QAAQ;AAAE,IAAAA,QAAO;AAAA,EAAI;AAClC,MAAI,OAAO,IAAI,MAAM;AACrB,OAAK,OAAOA;AACZ,OAAK,YAAY;AACjB,SAAO;AACX;AACA,SAAS,gBAAgB,KAAK;AAC1B,SAAO,IAAI,MAAM,QAAW,QAAW,QAAW,OAAO,GAAG,CAAC;AACjE;AAKA,SAAS,WAAW,OAAO;AACvB,MAAI,SAAS,IAAI;AAAA,IAAM,MAAM;AAAA,IAAK,MAAM;AAAA;AAAA;AAAA;AAAA,IAIxC,MAAM,YAAY,MAAM,SAAS,MAAM;AAAA,IAAG,MAAM;AAAA,IAAM,MAAM;AAAA,IAAK,MAAM;AAAA,IAAS,MAAM;AAAA,IAAkB,MAAM;AAAA,EAAY;AAC1H,SAAO,KAAK,MAAM;AAClB,SAAO,WAAW,MAAM;AACxB,SAAO,MAAM,MAAM;AACnB,SAAO,YAAY,MAAM;AACzB,SAAO,YAAY,MAAM;AACzB,SAAO,YAAY,MAAM;AACzB,SAAO,YAAY,MAAM;AACzB,SAAO,YAAY,MAAM;AACzB,SAAO,WAAW;AAClB,SAAO;AACX;AAIA,IAAI,OAAuC;AACnC,qBAAmB;AAAA,IAAQ;AAAA;AAAA,EAI/B;AACI,qBAAmB,SAAUC,SAAQ,KAAK;AAC1C,WAAO,uBAAwB,OAAO,KAAK,uCAAwC,IAC/E,iPAGqFA,OAAM;AAAA,EACnG;AACI,yBAAuB,SAAUA,SAAQ,KAAK;AAC9C,WAAO,aAAc,OAAO,KAAK,iCAAmC,EAAE,OAAO,KAAK,YAAa,IAC3F,2JAE0CA,OAAM;AAAA,EACxD;AACI,eAAa,OAAO,UAAU,eAAe,SAAS,KAAK;AAC/D,MAAI,YAAY;AACR,0BAAsB,QAAQ,6CAA6C;AAC/E,WAAO,WAAW,IAAI,MAAM,OAAO,UAAU;AAAA,MACzC,KAAK,SAAUA,SAAQ,KAAK,OAAO;AAC/B,YAAI,oBAAoB,GAAG,GAAG;AAC1B,iBAAO,4DAA4D,OAAO,GAAG,CAAC;AAC9E,iBAAO;AAAA,QACX,OACK;AACD,UAAAA,QAAO,GAAG,IAAI;AACd,iBAAO;AAAA,QACX;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL;AACI,iBAAe;AAAA,IACf,KAAK,SAAUA,SAAQ,KAAK;AACxB,UAAIC,OAAM,OAAOD;AACjB,UAAI,YAAY,iBAAiB,GAAG,KAC/B,OAAO,QAAQ,YACZ,IAAI,OAAO,CAAC,MAAM,OAClB,EAAE,OAAOA,QAAO;AACxB,UAAI,CAACC,QAAO,CAAC,WAAW;AACpB,YAAI,OAAOD,QAAO;AACd,+BAAqBA,SAAQ,GAAG;AAAA;AAEhC,2BAAiBA,SAAQ,GAAG;AAAA,MACpC;AACA,aAAOC,QAAO,CAAC;AAAA,IACnB;AAAA,EACJ;AACI,iBAAe;AAAA,IACf,KAAK,SAAUD,SAAQ,KAAK;AACxB,UAAI,OAAO,QAAQ,YAAY,EAAE,OAAOA,UAAS;AAC7C,YAAI,OAAOA,QAAO;AACd,+BAAqBA,SAAQ,GAAG;AAAA;AAEhC,2BAAiBA,SAAQ,GAAG;AAAA,MACpC;AACA,aAAOA,QAAO,GAAG;AAAA,IACrB;AAAA,EACJ;AACA,cAAY,SAAS,UAAU,IAAI;AAC/B,QAAI,YAAY;AAEZ,UAAI,UAAU,GAAG;AACjB,UAAI,WAAW,QAAQ,UAAU,QAAQ,OAAO,gBAAgB,eAAe;AAC/E,SAAG,eAAe,IAAI,MAAM,IAAI,QAAQ;AAAA,IAC5C,OACK;AACD,SAAG,eAAe;AAAA,IACtB;AAAA,EACJ;AACJ;AAxEQ;AAKA;AAOA;AAMA;AAEI;AAcJ;AAgBA;AAuDR,IAAI,QAAQ;AACZ,IAAI,qBAAqB,CAAC;AAC1B,IAAI,cAAc,WAAY;AAC1B,WAAS,IAAI,GAAG,IAAI,mBAAmB,QAAQ,KAAK;AAChD,QAAI,MAAM,mBAAmB,CAAC;AAC9B,QAAI,OAAO,IAAI,KAAK,OAAO,SAAU,GAAG;AAAE,aAAO;AAAA,IAAG,CAAC;AACrD,QAAI,WAAW;AAAA,EACnB;AACA,qBAAmB,SAAS;AAChC;AAMA,IAAI;AAAA;AAAA,GAAqB,WAAY;AACjC,aAASE,OAAM;AAEX,WAAK,WAAW;AAChB,WAAK,KAAK;AACV,WAAK,OAAO,CAAC;AAAA,IACjB;AACA,IAAAA,KAAI,UAAU,SAAS,SAAU,KAAK;AAClC,WAAK,KAAK,KAAK,GAAG;AAAA,IACtB;AACA,IAAAA,KAAI,UAAU,YAAY,SAAU,KAAK;AAKrC,WAAK,KAAK,KAAK,KAAK,QAAQ,GAAG,CAAC,IAAI;AACpC,UAAI,CAAC,KAAK,UAAU;AAChB,aAAK,WAAW;AAChB,2BAAmB,KAAK,IAAI;AAAA,MAChC;AAAA,IACJ;AACA,IAAAA,KAAI,UAAU,SAAS,SAAU,MAAM;AACnC,UAAIA,KAAI,QAAQ;AACZ,QAAAA,KAAI,OAAO,OAAO,IAAI;AACtB,YAAI,OAAqE;AACrE,UAAAA,KAAI,OAAO,QAAQ,SAAS,EAAE,QAAQA,KAAI,OAAO,GAAG,IAAI,CAAC;AAAA,QAC7D;AAAA,MACJ;AAAA,IACJ;AACA,IAAAA,KAAI,UAAU,SAAS,SAAU,MAAM;AAEnC,UAAI,OAAO,KAAK,KAAK,OAAO,SAAU,GAAG;AAAE,eAAO;AAAA,MAAG,CAAC;AACtD,UAAI,OAAwD;AAIxD,aAAK,KAAK,SAAU,GAAG,GAAG;AAAE,iBAAO,EAAE,KAAK,EAAE;AAAA,QAAI,CAAC;AAAA,MACrD;AACA,eAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAG,KAAK;AACzC,YAAI,MAAM,KAAK,CAAC;AAChB,YAAI,OAA+C;AAC/C,cAAI,aACA,IAAI,UAAU,SAAS,EAAE,QAAQ,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC;AAAA,QACzD;AACA,YAAI,OAAO;AAAA,MACf;AAAA,IACJ;AACA,WAAOA;AAAA,EACX,GAAE;AAAA;AAIF,IAAI,SAAS;AACb,IAAI,cAAc,CAAC;AACnB,SAAS,WAAWC,SAAQ;AACxB,cAAY,KAAKA,OAAM;AACvB,MAAI,SAASA;AACjB;AACA,SAAS,YAAY;AACjB,cAAY,IAAI;AAChB,MAAI,SAAS,YAAY,YAAY,SAAS,CAAC;AACnD;AAMA,IAAI,aAAa,MAAM;AACvB,IAAI,eAAe,OAAO,OAAO,UAAU;AAC3C,IAAI,iBAAiB;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAIA,eAAe,QAAQ,SAAU,QAAQ;AAErC,MAAI,WAAW,WAAW,MAAM;AAChC,MAAI,cAAc,QAAQ,SAAS,UAAU;AACzC,QAAI,OAAO,CAAC;AACZ,aAAS,KAAK,GAAG,KAAK,UAAU,QAAQ,MAAM;AAC1C,WAAK,EAAE,IAAI,UAAU,EAAE;AAAA,IAC3B;AACA,QAAI,SAAS,SAAS,MAAM,MAAM,IAAI;AACtC,QAAI,KAAK,KAAK;AACd,QAAI;AACJ,YAAQ,QAAQ;AAAA,MACZ,KAAK;AAAA,MACL,KAAK;AACD,mBAAW;AACX;AAAA,MACJ,KAAK;AACD,mBAAW,KAAK,MAAM,CAAC;AACvB;AAAA,IACR;AACA,QAAI;AACA,SAAG,aAAa,QAAQ;AAE5B,QAAI,OAAuC;AACvC,SAAG,IAAI,OAAO;AAAA,QACV,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,KAAK;AAAA,MACT,CAAC;AAAA,IACL,OACK;AACD,SAAG,IAAI,OAAO;AAAA,IAClB;AACA,WAAO;AAAA,EACX,CAAC;AACL,CAAC;AAED,IAAI,YAAY,OAAO,oBAAoB,YAAY;AACvD,IAAI,mBAAmB,CAAC;AAKxB,IAAI,gBAAgB;AACpB,SAAS,gBAAgB,OAAO;AAC5B,kBAAgB;AACpB;AAEA,IAAI,UAAU;AAAA,EACV,QAAQC;AAAA,EACR,QAAQA;AAAA,EACR,QAAQA;AAAA,EACR,WAAWA;AACf;AAOA,IAAI;AAAA;AAAA,GAA0B,WAAY;AACtC,aAASC,UAAS,OAAO,SAAS,MAAM;AACpC,UAAI,YAAY,QAAQ;AAAE,kBAAU;AAAA,MAAO;AAC3C,UAAI,SAAS,QAAQ;AAAE,eAAO;AAAA,MAAO;AACrC,WAAK,QAAQ;AACb,WAAK,UAAU;AACf,WAAK,OAAO;AAEZ,WAAK,MAAM,OAAO,UAAU,IAAI,IAAI;AACpC,WAAK,UAAU;AACf,UAAI,OAAO,UAAU,IAAI;AACzB,UAAI,QAAQ,KAAK,GAAG;AAChB,YAAI,CAAC,MAAM;AACP,cAAI,UAAU;AACV,kBAAM,YAAY;AAAA,UAEtB,OACK;AACD,qBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAI,GAAG,KAAK;AAC9C,kBAAI,MAAM,UAAU,CAAC;AACrB,kBAAI,OAAO,KAAK,aAAa,GAAG,CAAC;AAAA,YACrC;AAAA,UACJ;AAAA,QACJ;AACA,YAAI,CAAC,SAAS;AACV,eAAK,aAAa,KAAK;AAAA,QAC3B;AAAA,MACJ,OACK;AAMD,YAAIC,QAAO,OAAO,KAAK,KAAK;AAC5B,iBAAS,IAAI,GAAG,IAAIA,MAAK,QAAQ,KAAK;AAClC,cAAI,MAAMA,MAAK,CAAC;AAChB,yBAAe,OAAO,KAAK,kBAAkB,QAAW,SAAS,IAAI;AAAA,QACzE;AAAA,MACJ;AAAA,IACJ;AAIA,IAAAD,UAAS,UAAU,eAAe,SAAU,OAAO;AAC/C,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,IAAI,GAAG,KAAK;AAC1C,gBAAQ,MAAM,CAAC,GAAG,OAAO,KAAK,IAAI;AAAA,MACtC;AAAA,IACJ;AACA,WAAOA;AAAA,EACX,GAAE;AAAA;AAOF,SAAS,QAAQ,OAAO,SAAS,mBAAmB;AAChD,MAAI,SAAS,OAAO,OAAO,QAAQ,KAAK,MAAM,kBAAkB,UAAU;AACtE,WAAO,MAAM;AAAA,EACjB;AACA,MAAI,kBACC,qBAAqB,CAAC,kBAAkB,OACxC,QAAQ,KAAK,KAAK,cAAc,KAAK,MACtC,OAAO,aAAa,KAAK,KACzB,CAAC,MAAM,YACP,CAAC,MAAM,KAAK,KACZ,EAAE,iBAAiB,QAAQ;AAC3B,WAAO,IAAI,SAAS,OAAO,SAAS,iBAAiB;AAAA,EACzD;AACJ;AAIA,SAAS,eAAe,KAAK,KAAK,KAAK,cAAc,SAAS,MAAM,sBAAsB;AACtF,MAAI,yBAAyB,QAAQ;AAAE,2BAAuB;AAAA,EAAO;AACrE,MAAI,MAAM,IAAI,IAAI;AAClB,MAAI,WAAW,OAAO,yBAAyB,KAAK,GAAG;AACvD,MAAI,YAAY,SAAS,iBAAiB,OAAO;AAC7C;AAAA,EACJ;AAEA,MAAI,SAAS,YAAY,SAAS;AAClC,MAAI,SAAS,YAAY,SAAS;AAClC,OAAK,CAAC,UAAU,YACX,QAAQ,oBAAoB,UAAU,WAAW,IAAI;AACtD,UAAM,IAAI,GAAG;AAAA,EACjB;AACA,MAAI,UAAU,UAAU,OAAO,IAAI,SAAS,QAAQ,KAAK,OAAO,IAAI;AACpE,SAAO,eAAe,KAAK,KAAK;AAAA,IAC5B,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,KAAK,SAAS,iBAAiB;AAC3B,UAAI,QAAQ,SAAS,OAAO,KAAK,GAAG,IAAI;AACxC,UAAI,IAAI,QAAQ;AACZ,YAAI,OAAuC;AACvC,cAAI,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,MAAM;AAAA,YACN;AAAA,UACJ,CAAC;AAAA,QACL,OACK;AACD,cAAI,OAAO;AAAA,QACf;AACA,YAAI,SAAS;AACT,kBAAQ,IAAI,OAAO;AACnB,cAAI,QAAQ,KAAK,GAAG;AAChB,wBAAY,KAAK;AAAA,UACrB;AAAA,QACJ;AAAA,MACJ;AACA,aAAO,MAAM,KAAK,KAAK,CAAC,UAAU,MAAM,QAAQ;AAAA,IACpD;AAAA,IACA,KAAK,SAAS,eAAe,QAAQ;AACjC,UAAI,QAAQ,SAAS,OAAO,KAAK,GAAG,IAAI;AACxC,UAAI,CAAC,WAAW,OAAO,MAAM,GAAG;AAC5B;AAAA,MACJ;AACA,UAAI,OAAuD;AACvD,qBAAa;AAAA,MACjB;AACA,UAAI,QAAQ;AACR,eAAO,KAAK,KAAK,MAAM;AAAA,MAC3B,WACS,QAAQ;AAEb;AAAA,MACJ,WACS,CAAC,WAAW,MAAM,KAAK,KAAK,CAAC,MAAM,MAAM,GAAG;AACjD,cAAM,QAAQ;AACd;AAAA,MACJ,OACK;AACD,cAAM;AAAA,MACV;AACA,gBAAU,UAAU,UAAU,OAAO,SAAS,QAAQ,QAAQ,OAAO,IAAI;AACzE,UAAI,OAAuC;AACvC,YAAI,OAAO;AAAA,UACP,MAAM;AAAA,UACN,QAAQ;AAAA,UACR;AAAA,UACA,UAAU;AAAA,UACV,UAAU;AAAA,QACd,CAAC;AAAA,MACL,OACK;AACD,YAAI,OAAO;AAAA,MACf;AAAA,IACJ;AAAA,EACJ,CAAC;AACD,SAAO;AACX;AACA,SAASE,KAAIJ,SAAQ,KAAK,KAAK;AAC3B,MAAI,OAAmF;AACnF,WAAO,wEAAwE,OAAOA,OAAM,CAAC;AAAA,EACjG;AACA,MAAI,WAAWA,OAAM,GAAG;AAEpB;AAAA,EACJ;AACA,MAAI,KAAKA,QAAO;AAChB,MAAI,QAAQA,OAAM,KAAK,kBAAkB,GAAG,GAAG;AAC3C,IAAAA,QAAO,SAAS,KAAK,IAAIA,QAAO,QAAQ,GAAG;AAC3C,IAAAA,QAAO,OAAO,KAAK,GAAG,GAAG;AAEzB,QAAI,MAAM,CAAC,GAAG,WAAW,GAAG,MAAM;AAC9B,cAAQ,KAAK,OAAO,IAAI;AAAA,IAC5B;AACA,WAAO;AAAA,EACX;AACA,MAAI,OAAOA,WAAU,EAAE,OAAO,OAAO,YAAY;AAC7C,IAAAA,QAAO,GAAG,IAAI;AACd,WAAO;AAAA,EACX;AACA,MAAIA,QAAO,UAAW,MAAM,GAAG,SAAU;AAIrC,WAAO;AAAA,EACX;AACA,MAAI,CAAC,IAAI;AACL,IAAAA,QAAO,GAAG,IAAI;AACd,WAAO;AAAA,EACX;AACA,iBAAe,GAAG,OAAO,KAAK,KAAK,QAAW,GAAG,SAAS,GAAG,IAAI;AACjE,MAAI,OAAuC;AACvC,OAAG,IAAI,OAAO;AAAA,MACV,MAAM;AAAA,MACN,QAAQA;AAAA,MACR;AAAA,MACA,UAAU;AAAA,MACV,UAAU;AAAA,IACd,CAAC;AAAA,EACL,OACK;AACD,OAAG,IAAI,OAAO;AAAA,EAClB;AACA,SAAO;AACX;AACA,SAAS,IAAIA,SAAQ,KAAK;AACtB,MAAI,OAAmF;AACnF,WAAO,2EAA2E,OAAOA,OAAM,CAAC;AAAA,EACpG;AACA,MAAI,QAAQA,OAAM,KAAK,kBAAkB,GAAG,GAAG;AAC3C,IAAAA,QAAO,OAAO,KAAK,CAAC;AACpB;AAAA,EACJ;AACA,MAAI,KAAKA,QAAO;AAChB,MAAIA,QAAO,UAAW,MAAM,GAAG,SAAU;AAIrC;AAAA,EACJ;AACA,MAAI,WAAWA,OAAM,GAAG;AAGpB;AAAA,EACJ;AACA,MAAI,CAAC,OAAOA,SAAQ,GAAG,GAAG;AACtB;AAAA,EACJ;AACA,SAAOA,QAAO,GAAG;AACjB,MAAI,CAAC,IAAI;AACL;AAAA,EACJ;AACA,MAAI,OAAuC;AACvC,OAAG,IAAI,OAAO;AAAA,MACV,MAAM;AAAA,MACN,QAAQA;AAAA,MACR;AAAA,IACJ,CAAC;AAAA,EACL,OACK;AACD,OAAG,IAAI,OAAO;AAAA,EAClB;AACJ;AAKA,SAAS,YAAY,OAAO;AACxB,WAAS,IAAI,QAAQ,IAAI,GAAG,IAAI,MAAM,QAAQ,IAAI,GAAG,KAAK;AACtD,QAAI,MAAM,CAAC;AACX,QAAI,KAAK,EAAE,QAAQ;AACf,QAAE,OAAO,IAAI,OAAO;AAAA,IACxB;AACA,QAAI,QAAQ,CAAC,GAAG;AACZ,kBAAY,CAAC;AAAA,IACjB;AAAA,EACJ;AACJ;AAWA,SAAS,gBAAgBK,SAAQ;AAC7B,eAAaA,SAAQ,IAAI;AACzB,MAAIA,SAAQ,iBAAgD,IAAI;AAChE,SAAOA;AACX;AACA,SAAS,aAAaA,SAAQ,SAAS;AAEnC,MAAI,CAAC,WAAWA,OAAM,GAAG;AACrB,QAAI,OAAuC;AACvC,UAAI,QAAQA,OAAM,GAAG;AACjB,eAAO,uCAAuC,OAAO,UAAU,sBAAsB,cAAc,4DAA4D,EAAE,OAAO,UAAU,iBAAiB,SAAS,4CAA4C,CAAC;AAAA,MAC7P;AACA,UAAI,aAAaA,WAAUA,QAAO;AAClC,UAAI,cAAc,WAAW,YAAY,SAAS;AAC9C,eAAO,uBAAuB,OAAO,WAAW,UAAU,KAAK,QAAQ,sDAAsD,EAAE,OAAO,UAAU,KAAK,QAAQ,UAAU,CAAC;AAAA,MAC5K;AAAA,IACJ;AACA,QAAI,KAAK;AAAA,MAAQA;AAAA,MAAQ;AAAA,MAAS,kBAAkB;AAAA;AAAA,IAA2B;AAC/E,QAAI,OAA8C;AAC9C,UAAIA,WAAU,QAAQ,YAAYA,OAAM,GAAG;AACvC,eAAO,kCAAkC,OAAO,OAAOA,OAAM,CAAC,CAAC;AAAA,MACnE;AACA,UAAI,iBAAiBA,OAAM,GAAG;AAC1B,eAAO,sEAAsE;AAAA,MACjF;AAAA,IACJ;AAAA,EACJ;AACJ;AAUA,SAAS,WAAW,OAAO;AACvB,SAAO,CAAC,EAAE,SAAS,MAAM;AAC7B;AA2BA,SAAS,MAAM,GAAG;AACd,SAAO,CAAC,EAAE,KAAK,EAAE,cAAc;AACnC;AA+CA,SAAS,mBAAmBC,SAAQ,QAAQ,KAAK;AAC7C,SAAO,eAAeA,SAAQ,KAAK;AAAA,IAC/B,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,KAAK,WAAY;AACb,UAAI,MAAM,OAAO,GAAG;AACpB,UAAI,MAAM,GAAG,GAAG;AACZ,eAAO,IAAI;AAAA,MACf,OACK;AACD,YAAI,KAAK,OAAO,IAAI;AACpB,YAAI;AACA,aAAG,IAAI,OAAO;AAClB,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,IACA,KAAK,SAAU,OAAO;AAClB,UAAI,WAAW,OAAO,GAAG;AACzB,UAAI,MAAM,QAAQ,KAAK,CAAC,MAAM,KAAK,GAAG;AAClC,iBAAS,QAAQ;AAAA,MACrB,OACK;AACD,eAAO,GAAG,IAAI;AAAA,MAClB;AAAA,IACJ;AAAA,EACJ,CAAC;AACL;AAsMA,IAAI,OAAuC;AACnC,WAAS,aAAa,OAAO;AAEjC,MAAI;AAAA,EAEA,OAAO;AAAA,EAEP,OAAO;AAAA,EAEP,OAAO;AAAA,EAEP,OAAO,eAAe;AACtB,WAAO,SAAU,KAAK;AAAE,aAAO,OAAO,KAAK,GAAG;AAAA,IAAG;AACjD,cAAU,SAAU,MAAM,UAAUC,SAAQ;AACxC,aAAO,QAAQ,MAAM,UAAUA,OAAM;AACrC,aAAO,WAAW,QAAQ;AAC1B,aAAO,WAAWA,OAAM;AAAA,IAE5B;AAAA,EACJ;AACJ;AAnBQ;AAqBR,IAAI,iBAAiB,OAAO,SAAU,MAAM;AACxC,MAAI,UAAU,KAAK,OAAO,CAAC,MAAM;AACjC,SAAO,UAAU,KAAK,MAAM,CAAC,IAAI;AACjC,MAAIC,QAAO,KAAK,OAAO,CAAC,MAAM;AAC9B,SAAOA,QAAO,KAAK,MAAM,CAAC,IAAI;AAC9B,MAAI,UAAU,KAAK,OAAO,CAAC,MAAM;AACjC,SAAO,UAAU,KAAK,MAAM,CAAC,IAAI;AACjC,SAAO;AAAA,IACH;AAAA,IACA,MAAMA;AAAA,IACN;AAAA,IACA;AAAA,EACJ;AACJ,CAAC;AACD,SAAS,gBAAgB,KAAK,IAAI;AAC9B,WAAS,UAAU;AACf,QAAIC,OAAM,QAAQ;AAClB,QAAI,QAAQA,IAAG,GAAG;AACd,UAAI,SAASA,KAAI,MAAM;AACvB,eAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACpC,gCAAwB,OAAO,CAAC,GAAG,MAAM,WAAW,IAAI,cAAc;AAAA,MAC1E;AAAA,IACJ,OACK;AAED,aAAO,wBAAwBA,MAAK,MAAM,WAAW,IAAI,cAAc;AAAA,IAC3E;AAAA,EACJ;AACA,UAAQ,MAAM;AACd,SAAO;AACX;AACA,SAAS,gBAAgBC,KAAI,OAAOC,MAAKC,SAAQC,oBAAmB,IAAI;AACpE,MAAI,MAAM,KAAK,KAAK;AACpB,OAAK,QAAQH,KAAI;AACb,UAAMA,IAAG,IAAI;AACb,UAAM,MAAM,IAAI;AAChB,YAAQ,eAAe,IAAI;AAC3B,QAAI,QAAQ,GAAG,GAAG;AAAA,IAGlB,WACS,QAAQ,GAAG,GAAG;AACnB,UAAI,QAAQ,IAAI,GAAG,GAAG;AAClB,cAAMA,IAAG,IAAI,IAAI,gBAAgB,KAAK,EAAE;AAAA,MAC5C;AACA,UAAI,OAAO,MAAM,IAAI,GAAG;AACpB,cAAMA,IAAG,IAAI,IAAIG,mBAAkB,MAAM,MAAM,KAAK,MAAM,OAAO;AAAA,MACrE;AACA,MAAAF,KAAI,MAAM,MAAM,KAAK,MAAM,SAAS,MAAM,SAAS,MAAM,MAAM;AAAA,IACnE,WACS,QAAQ,KAAK;AAClB,UAAI,MAAM;AACV,MAAAD,IAAG,IAAI,IAAI;AAAA,IACf;AAAA,EACJ;AACA,OAAK,QAAQ,OAAO;AAChB,QAAI,QAAQA,IAAG,IAAI,CAAC,GAAG;AACnB,cAAQ,eAAe,IAAI;AAC3B,MAAAE,QAAO,MAAM,MAAM,MAAM,IAAI,GAAG,MAAM,OAAO;AAAA,IACjD;AAAA,EACJ;AACJ;AAEA,SAAS,eAAeE,MAAK,SAAS,MAAM;AACxC,MAAIA,gBAAe,OAAO;AACtB,IAAAA,OAAMA,KAAI,KAAK,SAASA,KAAI,KAAK,OAAO,CAAC;AAAA,EAC7C;AACA,MAAI;AACJ,MAAI,UAAUA,KAAI,OAAO;AACzB,WAAS,cAAc;AACnB,SAAK,MAAM,MAAM,SAAS;AAG1B,aAAS,QAAQ,KAAK,WAAW;AAAA,EACrC;AACA,MAAI,QAAQ,OAAO,GAAG;AAElB,cAAU,gBAAgB,CAAC,WAAW,CAAC;AAAA,EAC3C,OACK;AAED,QAAI,MAAM,QAAQ,GAAG,KAAK,OAAO,QAAQ,MAAM,GAAG;AAE9C,gBAAU;AACV,cAAQ,IAAI,KAAK,WAAW;AAAA,IAChC,OACK;AAED,gBAAU,gBAAgB,CAAC,SAAS,WAAW,CAAC;AAAA,IACpD;AAAA,EACJ;AACA,UAAQ,SAAS;AACjB,EAAAA,KAAI,OAAO,IAAI;AACnB;AAEA,SAAS,0BAA0B,MAAM,MAAM,KAAK;AAIhD,MAAI,cAAc,KAAK,QAAQ;AAC/B,MAAI,QAAQ,WAAW,GAAG;AACtB;AAAA,EACJ;AACA,MAAI,MAAM,CAAC;AACX,MAAIC,SAAQ,KAAK,OAAOC,SAAQ,KAAK;AACrC,MAAI,MAAMD,MAAK,KAAK,MAAMC,MAAK,GAAG;AAC9B,aAAS,OAAO,aAAa;AACzB,UAAI,SAAS,UAAU,GAAG;AAC1B,UAAI,OAAuC;AACvC,YAAI,iBAAiB,IAAI,YAAY;AACrC,YAAI,QAAQ,kBAAkBD,UAAS,OAAOA,QAAO,cAAc,GAAG;AAClE,cAAI,SAAU,OAAO,gBAAgB,2BAA4B,IAC7D,GAAG,OAAO;AAAA;AAAA,YAEV,OAAO;AAAA,UAAI,GAAG,iCAAiC,IAC/C,KAAM,OAAO,KAAK,KAAM,IACxB,oIAEA,uCAAwC,OAAO,QAAQ,gBAAkB,EAAE,OAAO,KAAK,IAAK,CAAC;AAAA,QACrG;AAAA,MACJ;AACA,gBAAU,KAAKC,QAAO,KAAK,QAAQ,IAAI,KACnC,UAAU,KAAKD,QAAO,KAAK,QAAQ,KAAK;AAAA,IAChD;AAAA,EACJ;AACA,SAAO;AACX;AACA,SAAS,UAAU,KAAKE,OAAM,KAAK,QAAQ,UAAU;AACjD,MAAI,MAAMA,KAAI,GAAG;AACb,QAAI,OAAOA,OAAM,GAAG,GAAG;AACnB,UAAI,GAAG,IAAIA,MAAK,GAAG;AACnB,UAAI,CAAC,UAAU;AACX,eAAOA,MAAK,GAAG;AAAA,MACnB;AACA,aAAO;AAAA,IACX,WACS,OAAOA,OAAM,MAAM,GAAG;AAC3B,UAAI,GAAG,IAAIA,MAAK,MAAM;AACtB,UAAI,CAAC,UAAU;AACX,eAAOA,MAAK,MAAM;AAAA,MACtB;AACA,aAAO;AAAA,IACX;AAAA,EACJ;AACA,SAAO;AACX;AAaA,SAAS,wBAAwBC,WAAU;AACvC,WAAS,IAAI,GAAG,IAAIA,UAAS,QAAQ,KAAK;AACtC,QAAI,QAAQA,UAAS,CAAC,CAAC,GAAG;AACtB,aAAO,MAAM,UAAU,OAAO,MAAM,CAAC,GAAGA,SAAQ;AAAA,IACpD;AAAA,EACJ;AACA,SAAOA;AACX;AAKA,SAAS,kBAAkBA,WAAU;AACjC,SAAO,YAAYA,SAAQ,IACrB,CAAC,gBAAgBA,SAAQ,CAAC,IAC1B,QAAQA,SAAQ,IACZ,uBAAuBA,SAAQ,IAC/B;AACd;AACA,SAAS,WAAW,MAAM;AACtB,SAAO,MAAM,IAAI,KAAK,MAAM,KAAK,IAAI,KAAK,QAAQ,KAAK,SAAS;AACpE;AACA,SAAS,uBAAuBA,WAAU,aAAa;AACnD,MAAI,MAAM,CAAC;AACX,MAAI,GAAG,GAAG,WAAW;AACrB,OAAK,IAAI,GAAG,IAAIA,UAAS,QAAQ,KAAK;AAClC,QAAIA,UAAS,CAAC;AACd,QAAI,QAAQ,CAAC,KAAK,OAAO,MAAM;AAC3B;AACJ,gBAAY,IAAI,SAAS;AACzB,WAAO,IAAI,SAAS;AAEpB,QAAI,QAAQ,CAAC,GAAG;AACZ,UAAI,EAAE,SAAS,GAAG;AACd,YAAI,uBAAuB,GAAG,GAAG,OAAO,eAAe,IAAI,GAAG,EAAE,OAAO,CAAC,CAAC;AAEzE,YAAI,WAAW,EAAE,CAAC,CAAC,KAAK,WAAW,IAAI,GAAG;AACtC,cAAI,SAAS,IAAI,gBAAgB,KAAK,OAAO,EAAE,CAAC,EAAE,IAAI;AACtD,YAAE,MAAM;AAAA,QACZ;AACA,YAAI,KAAK,MAAM,KAAK,CAAC;AAAA,MACzB;AAAA,IACJ,WACS,YAAY,CAAC,GAAG;AACrB,UAAI,WAAW,IAAI,GAAG;AAIlB,YAAI,SAAS,IAAI,gBAAgB,KAAK,OAAO,CAAC;AAAA,MAClD,WACS,MAAM,IAAI;AAEf,YAAI,KAAK,gBAAgB,CAAC,CAAC;AAAA,MAC/B;AAAA,IACJ,OACK;AACD,UAAI,WAAW,CAAC,KAAK,WAAW,IAAI,GAAG;AAEnC,YAAI,SAAS,IAAI,gBAAgB,KAAK,OAAO,EAAE,IAAI;AAAA,MACvD,OACK;AAED,YAAI,OAAOA,UAAS,QAAQ,KACxB,MAAM,EAAE,GAAG,KACX,QAAQ,EAAE,GAAG,KACb,MAAM,WAAW,GAAG;AACpB,YAAE,MAAM,UAAU,OAAO,aAAa,GAAG,EAAE,OAAO,GAAG,IAAI;AAAA,QAC7D;AACA,YAAI,KAAK,CAAC;AAAA,MACd;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;AAEA,IAAI,mBAAmB;AACvB,IAAI,mBAAmB;AAGvB,SAAS,gBAAgB,SAAS,KAAK,MAAMA,WAAU,mBAAmB,iBAAiB;AACvF,MAAI,QAAQ,IAAI,KAAK,YAAY,IAAI,GAAG;AACpC,wBAAoBA;AACpB,IAAAA,YAAW;AACX,WAAO;AAAA,EACX;AACA,MAAI,OAAO,eAAe,GAAG;AACzB,wBAAoB;AAAA,EACxB;AACA,SAAO,eAAe,SAAS,KAAK,MAAMA,WAAU,iBAAiB;AACzE;AACA,SAAS,eAAe,SAAS,KAAK,MAAMA,WAAU,mBAAmB;AACrE,MAAI,MAAM,IAAI,KAAK,MAAM,KAAK,MAAM,GAAG;AAGnC,WAAO,iBAAiB;AAAA,EAC5B;AAEA,MAAI,MAAM,IAAI,KAAK,MAAM,KAAK,EAAE,GAAG;AAC/B,UAAM,KAAK;AAAA,EACf;AACA,MAAI,CAAC,KAAK;AAEN,WAAO,iBAAiB;AAAA,EAC5B;AAEA,MAAI,OAAmG;AACnG,WAAO,4EACiC,OAAO;AAAA,EACnD;AAEA,MAAI,QAAQA,SAAQ,KAAK,WAAWA,UAAS,CAAC,CAAC,GAAG;AAC9C,WAAO,QAAQ,CAAC;AAChB,SAAK,cAAc,EAAE,SAASA,UAAS,CAAC,EAAE;AAC1C,IAAAA,UAAS,SAAS;AAAA,EACtB;AACA,MAAI,sBAAsB,kBAAkB;AACxC,IAAAA,YAAW,kBAAkBA,SAAQ;AAAA,EACzC,WACS,sBAAsB,kBAAkB;AAC7C,IAAAA,YAAW,wBAAwBA,SAAQ;AAAA,EAC/C;AACA,MAAI,OAAO;AACX,MAAI,OAAO,QAAQ,UAAU;AACzB,QAAI,OAAO;AACX,SAAM,QAAQ,UAAU,QAAQ,OAAO,MAAO,OAAO,gBAAgB,GAAG;AACxE,QAAI,OAAO,cAAc,GAAG,GAAG;AAE3B,UAAI,OAG0B;AAC1B,eAAO,iFAAiF,OAAO,KAAK,IAAI,GAAG,OAAO;AAAA,MACtH;AACA,cAAQ,IAAI,MAAM,OAAO,qBAAqB,GAAG,GAAG,MAAMA,WAAU,QAAW,QAAW,OAAO;AAAA,IACrG,YACU,CAAC,QAAQ,CAAC,KAAK,QACrB,MAAO,OAAO,aAAa,QAAQ,UAAU,cAAc,GAAG,CAAE,GAAG;AAEnE,cAAQ,gBAAgB,MAAM,MAAM,SAASA,WAAU,GAAG;AAAA,IAC9D,OACK;AAID,cAAQ,IAAI,MAAM,KAAK,MAAMA,WAAU,QAAW,QAAW,OAAO;AAAA,IACxE;AAAA,EACJ,OACK;AAED,YAAQ,gBAAgB,KAAK,MAAM,SAASA,SAAQ;AAAA,EACxD;AACA,MAAI,QAAQ,KAAK,GAAG;AAChB,WAAO;AAAA,EACX,WACS,MAAM,KAAK,GAAG;AACnB,QAAI,MAAM,EAAE;AACR,cAAQ,OAAO,EAAE;AACrB,QAAI,MAAM,IAAI;AACV,2BAAqB,IAAI;AAC7B,WAAO;AAAA,EACX,OACK;AACD,WAAO,iBAAiB;AAAA,EAC5B;AACJ;AACA,SAAS,QAAQ,OAAO,IAAI,OAAO;AAC/B,QAAM,KAAK;AACX,MAAI,MAAM,QAAQ,iBAAiB;AAE/B,SAAK;AACL,YAAQ;AAAA,EACZ;AACA,MAAI,MAAM,MAAM,QAAQ,GAAG;AACvB,aAAS,IAAI,GAAG,IAAI,MAAM,SAAS,QAAQ,IAAI,GAAG,KAAK;AACnD,UAAI,QAAQ,MAAM,SAAS,CAAC;AAC5B,UAAI,MAAM,MAAM,GAAG,MACd,QAAQ,MAAM,EAAE,KAAM,OAAO,KAAK,KAAK,MAAM,QAAQ,QAAS;AAC/D,gBAAQ,OAAO,IAAI,KAAK;AAAA,MAC5B;AAAA,IACJ;AAAA,EACJ;AACJ;AAIA,SAAS,qBAAqB,MAAM;AAChC,MAAI,SAAS,KAAK,KAAK,GAAG;AACtB,aAAS,KAAK,KAAK;AAAA,EACvB;AACA,MAAI,SAAS,KAAK,KAAK,GAAG;AACtB,aAAS,KAAK,KAAK;AAAA,EACvB;AACJ;AAKA,SAAS,WAAW,KAAKC,SAAQ;AAC7B,MAAI,MAAM,MAAM,GAAG,GAAGC,OAAM;AAC5B,MAAI,QAAQ,GAAG,KAAK,OAAO,QAAQ,UAAU;AACzC,UAAM,IAAI,MAAM,IAAI,MAAM;AAC1B,SAAK,IAAI,GAAG,IAAI,IAAI,QAAQ,IAAI,GAAG,KAAK;AACpC,UAAI,CAAC,IAAID,QAAO,IAAI,CAAC,GAAG,CAAC;AAAA,IAC7B;AAAA,EACJ,WACS,OAAO,QAAQ,UAAU;AAC9B,UAAM,IAAI,MAAM,GAAG;AACnB,SAAK,IAAI,GAAG,IAAI,KAAK,KAAK;AACtB,UAAI,CAAC,IAAIA,QAAO,IAAI,GAAG,CAAC;AAAA,IAC5B;AAAA,EACJ,WACS,SAAS,GAAG,GAAG;AACpB,QAAI,aAAa,IAAI,OAAO,QAAQ,GAAG;AACnC,YAAM,CAAC;AACP,UAAIE,YAAW,IAAI,OAAO,QAAQ,EAAE;AACpC,UAAI,SAASA,UAAS,KAAK;AAC3B,aAAO,CAAC,OAAO,MAAM;AACjB,YAAI,KAAKF,QAAO,OAAO,OAAO,IAAI,MAAM,CAAC;AACzC,iBAASE,UAAS,KAAK;AAAA,MAC3B;AAAA,IACJ,OACK;AACD,MAAAD,QAAO,OAAO,KAAK,GAAG;AACtB,YAAM,IAAI,MAAMA,MAAK,MAAM;AAC3B,WAAK,IAAI,GAAG,IAAIA,MAAK,QAAQ,IAAI,GAAG,KAAK;AACrC,cAAMA,MAAK,CAAC;AACZ,YAAI,CAAC,IAAID,QAAO,IAAI,GAAG,GAAG,KAAK,CAAC;AAAA,MACpC;AAAA,IACJ;AAAA,EACJ;AACA,MAAI,CAAC,MAAM,GAAG,GAAG;AACb,UAAM,CAAC;AAAA,EACX;AACA,MAAI,WAAW;AACf,SAAO;AACX;AAKA,SAAS,WAAW,MAAM,gBAAgBH,QAAO,YAAY;AACzD,MAAI,eAAe,KAAK,aAAa,IAAI;AACzC,MAAI;AACJ,MAAI,cAAc;AAEd,IAAAA,SAAQA,UAAS,CAAC;AAClB,QAAI,YAAY;AACZ,UAAI,OAAgE;AAChE,eAAO,kDAAkD,IAAI;AAAA,MACjE;AACA,MAAAA,SAAQM,QAAOA,QAAO,CAAC,GAAG,UAAU,GAAGN,MAAK;AAAA,IAChD;AACA,YACI,aAAaA,MAAK,MACb,WAAW,cAAc,IAAI,eAAe,IAAI;AAAA,EAC7D,OACK;AACD,YACI,KAAK,OAAO,IAAI,MACX,WAAW,cAAc,IAAI,eAAe,IAAI;AAAA,EAC7D;AACA,MAAIO,UAASP,UAASA,OAAM;AAC5B,MAAIO,SAAQ;AACR,WAAO,KAAK,eAAe,YAAY,EAAE,MAAMA,QAAO,GAAG,KAAK;AAAA,EAClE,OACK;AACD,WAAO;AAAA,EACX;AACJ;AAKA,SAAS,cAAcC,KAAI;AACvB,SAAO,aAAa,KAAK,UAAU,WAAWA,KAAI,IAAI,KAAKC;AAC/D;AAEA,SAAS,cAAc,QAAQ,QAAQ;AACnC,MAAI,QAAQ,MAAM,GAAG;AACjB,WAAO,OAAO,QAAQ,MAAM,MAAM;AAAA,EACtC,OACK;AACD,WAAO,WAAW;AAAA,EACtB;AACJ;AAMA,SAAS,cAAc,cAAc,KAAK,gBAAgB,cAAc,gBAAgB;AACpF,MAAI,gBAAgB,OAAO,SAAS,GAAG,KAAK;AAC5C,MAAI,kBAAkB,gBAAgB,CAAC,OAAO,SAAS,GAAG,GAAG;AACzD,WAAO,cAAc,gBAAgB,YAAY;AAAA,EACrD,WACS,eAAe;AACpB,WAAO,cAAc,eAAe,YAAY;AAAA,EACpD,WACS,cAAc;AACnB,WAAO,UAAU,YAAY,MAAM;AAAA,EACvC;AACA,SAAO,iBAAiB;AAC5B;AAKA,SAAS,gBAAgB,MAAM,KAAK,OAAO,QAAQ,QAAQ;AACvD,MAAI,OAAO;AACP,QAAI,CAAC,SAAS,KAAK,GAAG;AAAA,IAGtB,OACK;AACD,UAAI,QAAQ,KAAK,GAAG;AAChB,gBAAQ,SAAS,KAAK;AAAA,MAC1B;AACA,UAAIR,QAAO;AACX,UAAI,UAAU,SAAUS,MAAK;AACzB,YAAIA,SAAQ,WAAWA,SAAQ,WAAW,oBAAoBA,IAAG,GAAG;AAChE,UAAAT,QAAO;AAAA,QACX,OACK;AACD,cAAIU,QAAO,KAAK,SAAS,KAAK,MAAM;AACpC,UAAAV,QACI,UAAU,OAAO,YAAY,KAAKU,OAAMD,IAAG,IACrC,KAAK,aAAa,KAAK,WAAW,CAAC,KACnC,KAAK,UAAU,KAAK,QAAQ,CAAC;AAAA,QAC3C;AACA,YAAI,eAAe,SAASA,IAAG;AAC/B,YAAI,gBAAgB,UAAUA,IAAG;AACjC,YAAI,EAAE,gBAAgBT,UAAS,EAAE,iBAAiBA,QAAO;AACrD,UAAAA,MAAKS,IAAG,IAAI,MAAMA,IAAG;AACrB,cAAI,QAAQ;AACR,gBAAIhB,MAAK,KAAK,OAAO,KAAK,KAAK,CAAC;AAChC,YAAAA,IAAG,UAAU,OAAOgB,IAAG,CAAC,IAAI,SAAU,QAAQ;AAC1C,oBAAMA,IAAG,IAAI;AAAA,YACjB;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AACA,eAAS,OAAO,OAAO;AACnB,gBAAQ,GAAG;AAAA,MACf;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;AAKA,SAAS,aAAaE,QAAO,SAAS;AAClC,MAAIC,UAAS,KAAK,iBAAiB,KAAK,eAAe,CAAC;AACxD,MAAI,OAAOA,QAAOD,MAAK;AAGvB,MAAI,QAAQ,CAAC,SAAS;AAClB,WAAO;AAAA,EACX;AAEA,SAAOC,QAAOD,MAAK,IAAI,KAAK,SAAS,gBAAgBA,MAAK,EAAE;AAAA,IAAK,KAAK;AAAA,IAAc,KAAK;AAAA,IAAI;AAAA;AAAA,EAC7F;AACA,eAAa,MAAM,aAAa,OAAOA,MAAK,GAAG,KAAK;AACpD,SAAO;AACX;AAKA,SAAS,SAAS,MAAMA,QAAO,KAAK;AAChC,eAAa,MAAM,WAAW,OAAOA,MAAK,EAAE,OAAO,MAAM,IAAI,OAAO,GAAG,IAAI,EAAE,GAAG,IAAI;AACpF,SAAO;AACX;AACA,SAAS,aAAa,MAAM,KAAK,QAAQ;AACrC,MAAI,QAAQ,IAAI,GAAG;AACf,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AAClC,UAAI,KAAK,CAAC,KAAK,OAAO,KAAK,CAAC,MAAM,UAAU;AACxC,uBAAe,KAAK,CAAC,GAAG,GAAG,OAAO,KAAK,GAAG,EAAE,OAAO,CAAC,GAAG,MAAM;AAAA,MACjE;AAAA,IACJ;AAAA,EACJ,OACK;AACD,mBAAe,MAAM,KAAK,MAAM;AAAA,EACpC;AACJ;AACA,SAAS,eAAe,MAAM,KAAK,QAAQ;AACvC,OAAK,WAAW;AAChB,OAAK,MAAM;AACX,OAAK,SAAS;AAClB;AAEA,SAAS,oBAAoB,MAAM,OAAO;AACtC,MAAI,OAAO;AACP,QAAI,CAAC,cAAc,KAAK,GAAG;AAAA,IAE3B,OACK;AACD,UAAIlB,MAAM,KAAK,KAAK,KAAK,KAAKY,QAAO,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC;AACrD,eAAS,OAAO,OAAO;AACnB,YAAI,WAAWZ,IAAG,GAAG;AACrB,YAAI,OAAO,MAAM,GAAG;AACpB,QAAAA,IAAG,GAAG,IAAI,WAAW,CAAC,EAAE,OAAO,UAAU,IAAI,IAAI;AAAA,MACrD;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;AAEA,SAAS,mBAAmB,KAAK,KAEjC,gBAAgB,gBAAgB;AAC5B,QAAM,OAAO,EAAE,SAAS,CAAC,eAAe;AACxC,WAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACjC,QAAI,OAAO,IAAI,CAAC;AAChB,QAAI,QAAQ,IAAI,GAAG;AACf,yBAAmB,MAAM,KAAK,cAAc;AAAA,IAChD,WACS,MAAM;AAGX,UAAI,KAAK,OAAO;AAEZ,aAAK,GAAG,QAAQ;AAAA,MACpB;AACA,UAAI,KAAK,GAAG,IAAI,KAAK;AAAA,IACzB;AAAA,EACJ;AACA,MAAI,gBAAgB;AAChB,QAAI,OAAO;AAAA,EACf;AACA,SAAO;AACX;AAGA,SAAS,gBAAgB,SAAS,QAAQ;AACtC,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK,GAAG;AACvC,QAAI,MAAM,OAAO,CAAC;AAClB,QAAI,OAAO,QAAQ,YAAY,KAAK;AAChC,cAAQ,OAAO,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC;AAAA,IACrC,WACS,OAAqE;AAE1E,aAAO,2EAA2E,OAAO,GAAG,GAAG,IAAI;AAAA,IACvG;AAAA,EACJ;AACA,SAAO;AACX;AAIA,SAAS,gBAAgB,OAAO,QAAQ;AACpC,SAAO,OAAO,UAAU,WAAW,SAAS,QAAQ;AACxD;AAEA,SAAS,qBAAqBa,SAAQ;AAClC,EAAAA,QAAO,KAAK;AACZ,EAAAA,QAAO,KAAK;AACZ,EAAAA,QAAO,KAAK;AACZ,EAAAA,QAAO,KAAK;AACZ,EAAAA,QAAO,KAAK;AACZ,EAAAA,QAAO,KAAK;AACZ,EAAAA,QAAO,KAAK;AACZ,EAAAA,QAAO,KAAK;AACZ,EAAAA,QAAO,KAAK;AACZ,EAAAA,QAAO,KAAK;AACZ,EAAAA,QAAO,KAAK;AACZ,EAAAA,QAAO,KAAK;AACZ,EAAAA,QAAO,KAAK;AACZ,EAAAA,QAAO,KAAK;AACZ,EAAAA,QAAO,KAAK;AACZ,EAAAA,QAAO,KAAK;AACZ,EAAAA,QAAO,KAAK;AAChB;AAKA,SAAS,aAAaL,WAAU,SAAS;AACrC,MAAI,CAACA,aAAY,CAACA,UAAS,QAAQ;AAC/B,WAAO,CAAC;AAAA,EACZ;AACA,MAAI,QAAQ,CAAC;AACb,WAAS,IAAI,GAAG,IAAIA,UAAS,QAAQ,IAAI,GAAG,KAAK;AAC7C,QAAI,QAAQA,UAAS,CAAC;AACtB,QAAI,OAAO,MAAM;AAEjB,QAAI,QAAQ,KAAK,SAAS,KAAK,MAAM,MAAM;AACvC,aAAO,KAAK,MAAM;AAAA,IACtB;AAGA,SAAK,MAAM,YAAY,WAAW,MAAM,cAAc,YAClD,QACA,KAAK,QAAQ,MAAM;AACnB,UAAI,SAAS,KAAK;AAClB,UAAI,OAAO,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI,CAAC;AAC9C,UAAI,MAAM,QAAQ,YAAY;AAC1B,aAAK,KAAK,MAAM,MAAM,MAAM,YAAY,CAAC,CAAC;AAAA,MAC9C,OACK;AACD,aAAK,KAAK,KAAK;AAAA,MACnB;AAAA,IACJ,OACK;AACD,OAAC,MAAM,YAAY,MAAM,UAAU,CAAC,IAAI,KAAK,KAAK;AAAA,IACtD;AAAA,EACJ;AAEA,WAAS,UAAU,OAAO;AACtB,QAAI,MAAM,MAAM,EAAE,MAAM,YAAY,GAAG;AACnC,aAAO,MAAM,MAAM;AAAA,IACvB;AAAA,EACJ;AACA,SAAO;AACX;AACA,SAAS,aAAa,MAAM;AACxB,SAAQ,KAAK,aAAa,CAAC,KAAK,gBAAiB,KAAK,SAAS;AACnE;AAEA,SAAS,mBAAmB,MAAM;AAE9B,SAAO,KAAK,aAAa,KAAK;AAClC;AAEA,SAAS,qBAAqB,SAAS,aAAa,aAAa,iBAAiB;AAC9E,MAAI;AACJ,MAAI,iBAAiB,OAAO,KAAK,WAAW,EAAE,SAAS;AACvD,MAAI,WAAW,cAAc,CAAC,CAAC,YAAY,UAAU,CAAC;AACtD,MAAI,MAAM,eAAe,YAAY;AACrC,MAAI,CAAC,aAAa;AACd,UAAM,CAAC;AAAA,EACX,WACS,YAAY,aAAa;AAE9B,WAAO,YAAY;AAAA,EACvB,WACS,YACL,mBACA,oBAAoB,eACpB,QAAQ,gBAAgB,QACxB,CAAC,kBACD,CAAC,gBAAgB,YAAY;AAG7B,WAAO;AAAA,EACX,OACK;AACD,UAAM,CAAC;AACP,aAAS,SAAS,aAAa;AAC3B,UAAI,YAAY,KAAK,KAAK,MAAM,CAAC,MAAM,KAAK;AACxC,YAAI,KAAK,IAAI,oBAAoB,SAAS,aAAa,OAAO,YAAY,KAAK,CAAC;AAAA,MACpF;AAAA,IACJ;AAAA,EACJ;AAEA,WAAS,SAAS,aAAa;AAC3B,QAAI,EAAE,SAAS,MAAM;AACjB,UAAI,KAAK,IAAI,gBAAgB,aAAa,KAAK;AAAA,IACnD;AAAA,EACJ;AAGA,MAAI,eAAe,OAAO,aAAa,WAAW,GAAG;AACjD,gBAAY,cAAc;AAAA,EAC9B;AACA,MAAI,KAAK,WAAW,QAAQ;AAC5B,MAAI,KAAK,QAAQ,GAAG;AACpB,MAAI,KAAK,cAAc,cAAc;AACrC,SAAO;AACX;AACA,SAAS,oBAAoB,IAAI,aAAa,KAAK,IAAI;AACnD,MAAI,aAAa,WAAY;AACzB,QAAI,MAAM;AACV,uBAAmB,EAAE;AACrB,QAAI,MAAM,UAAU,SAAS,GAAG,MAAM,MAAM,SAAS,IAAI,GAAG,CAAC,CAAC;AAC9D,UACI,OAAO,OAAO,QAAQ,YAAY,CAAC,QAAQ,GAAG,IACxC,CAAC,GAAG,IACJ,kBAAkB,GAAG;AAC/B,QAAI,QAAQ,OAAO,IAAI,CAAC;AACxB,uBAAmB,GAAG;AACtB,WAAO,QACF,CAAC,SACG,IAAI,WAAW,KAAK,MAAM,aAAa,CAAC,mBAAmB,KAAK,KACnE,SACA;AAAA,EACV;AAIA,MAAI,GAAG,OAAO;AACV,WAAO,eAAe,aAAa,KAAK;AAAA,MACpC,KAAK;AAAA,MACL,YAAY;AAAA,MACZ,cAAc;AAAA,IAClB,CAAC;AAAA,EACL;AACA,SAAO;AACX;AACA,SAAS,gBAAgB,OAAO,KAAK;AACjC,SAAO,WAAY;AAAE,WAAO,MAAM,GAAG;AAAA,EAAG;AAC5C;AAEA,SAAS,UAAU,IAAI;AACnB,MAAI,UAAU,GAAG;AACjB,MAAI,QAAQ,QAAQ;AACpB,MAAI,OAAO;AACP,QAAI,MAAO,GAAG,gBAAgB,mBAAmB,EAAE;AACnD,uBAAmB,EAAE;AACrB,eAAW;AACX,QAAI,cAAc,wBAAwB,OAAO,MAAM,CAAC,GAAG,UAAU,gBAAgB,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,OAAO;AAC3G,cAAU;AACV,uBAAmB;AACnB,QAAI,WAAW,WAAW,GAAG;AAGzB,cAAQ,SAAS;AAAA,IACrB,WACS,SAAS,WAAW,GAAG;AAE5B,UAAI,OAAuE;AACvE,eAAO,+EACgC;AAAA,MAC3C;AACA,SAAG,cAAc;AAEjB,UAAI,CAAC,YAAY,OAAO;AACpB,iBAAS,OAAO,aAAa;AACzB,cAAI,CAAC,WAAW,GAAG,GAAG;AAClB,+BAAmB,IAAI,aAAa,GAAG;AAAA,UAC3C,WACS,OAAuC;AAC5C,mBAAO,0DAA0D;AAAA,UACrE;AAAA,QACJ;AAAA,MACJ,OACK;AAED,YAAIY,SAAS,GAAG,cAAc,CAAC;AAC/B,iBAAS,OAAO,aAAa;AACzB,cAAI,QAAQ,SAAS;AACjB,+BAAmBA,QAAO,aAAa,GAAG;AAAA,UAC9C;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ,WACS,OAAoE;AACzE,aAAO,8CAA8C,OAAO,gBAAgB,OAAO,SAAS,OAAO,WAAW,CAAC;AAAA,IACnH;AAAA,EACJ;AACJ;AACA,SAAS,mBAAmB,IAAI;AAC5B,MAAI,eAAe;AACnB,SAAO;AAAA,IACH,IAAI,QAAQ;AACR,UAAI,CAAC,GAAG,aAAa;AACjB,YAAIA,SAAS,GAAG,cAAc,CAAC;AAC/B,YAAIA,QAAO,iBAAiB,IAAI;AAChC,uBAAeA,QAAO,GAAG,QAAQ,aAAa,IAAI,QAAQ;AAAA,MAC9D;AACA,aAAO,GAAG;AAAA,IACd;AAAA,IACA,IAAI,YAAY;AACZ,UAAI,CAAC,GAAG,iBAAiB;AACrB,YAAIA,SAAS,GAAG,kBAAkB,CAAC;AACnC,uBAAeA,QAAO,GAAG,YAAY,aAAa,IAAI,YAAY;AAAA,MACtE;AACA,aAAO,GAAG;AAAA,IACd;AAAA,IACA,IAAI,QAAQ;AACR,aAAO,eAAe,EAAE;AAAA,IAC5B;AAAA,IACA,MAAM,OAAO,GAAG,OAAO,EAAE;AAAA,IACzB,QAAQ,SAAU,SAAS;AACvB,UAAI,OAAuC;AACvC,YAAI,cAAc;AACd,iBAAO,oDAAoD,EAAE;AAAA,QACjE;AACA,uBAAe;AAAA,MACnB;AACA,UAAI,SAAS;AACT,eAAO,KAAK,OAAO,EAAE,QAAQ,SAAU,KAAK;AACxC,iBAAO,mBAAmB,IAAI,SAAS,GAAG;AAAA,QAC9C,CAAC;AAAA,MACL;AAAA,IACJ;AAAA,EACJ;AACJ;AACA,SAAS,eAAe,IAAI,MAAM,MAAM,UAAUH,OAAM;AACpD,MAAI,UAAU;AACd,WAAS,OAAO,MAAM;AAClB,QAAI,EAAE,OAAO,KAAK;AACd,gBAAU;AACV,sBAAgB,IAAI,KAAK,UAAUA,KAAI;AAAA,IAC3C,WACS,KAAK,GAAG,MAAM,KAAK,GAAG,GAAG;AAC9B,gBAAU;AAAA,IACd;AAAA,EACJ;AACA,WAAS,OAAO,IAAI;AAChB,QAAI,EAAE,OAAO,OAAO;AAChB,gBAAU;AACV,aAAO,GAAG,GAAG;AAAA,IACjB;AAAA,EACJ;AACA,SAAO;AACX;AACA,SAAS,gBAAgBG,QAAO,KAAK,UAAUH,OAAM;AACjD,SAAO,eAAeG,QAAO,KAAK;AAAA,IAC9B,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,KAAK,WAAY;AACb,aAAO,SAASH,KAAI,EAAE,GAAG;AAAA,IAC7B;AAAA,EACJ,CAAC;AACL;AACA,SAAS,eAAe,IAAI;AACxB,MAAI,CAAC,GAAG,aAAa;AACjB,mBAAgB,GAAG,cAAc,CAAC,GAAI,GAAG,YAAY;AAAA,EACzD;AACA,SAAO,GAAG;AACd;AACA,SAAS,eAAe,IAAI,MAAM;AAC9B,WAAS,OAAO,MAAM;AAClB,OAAG,GAAG,IAAI,KAAK,GAAG;AAAA,EACtB;AACA,WAAS,OAAO,IAAI;AAChB,QAAI,EAAE,OAAO,OAAO;AAChB,aAAO,GAAG,GAAG;AAAA,IACjB;AAAA,EACJ;AACJ;AA2DA,SAAS,WAAW,IAAI;AACpB,KAAG,SAAS;AACZ,KAAG,eAAe;AAClB,MAAI,UAAU,GAAG;AACjB,MAAI,cAAe,GAAG,SAAS,QAAQ;AACvC,MAAI,gBAAgB,eAAe,YAAY;AAC/C,KAAG,SAAS,aAAa,QAAQ,iBAAiB,aAAa;AAC/D,KAAG,eAAe,cACZ,qBAAqB,GAAG,SAAS,YAAY,KAAK,aAAa,GAAG,MAAM,IACxE;AAMN,KAAG,KAAK,SAAU,GAAG,GAAG,GAAG,GAAG;AAAE,WAAO,gBAAgB,IAAI,GAAG,GAAG,GAAG,GAAG,KAAK;AAAA,EAAG;AAI/E,KAAG,iBAAiB,SAAU,GAAG,GAAG,GAAG,GAAG;AAAE,WAAO,gBAAgB,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI;AAAA,EAAG;AAG1F,MAAI,aAAa,eAAe,YAAY;AAE5C,MAAI,OAAuC;AACvC,mBAAe,IAAI,UAAW,cAAc,WAAW,SAAU,aAAa,WAAY;AACtF,OAAC,4BAA4B,OAAO,uBAAuB,EAAE;AAAA,IACjE,GAAG,IAAI;AACP,mBAAe,IAAI,cAAc,QAAQ,oBAAoB,aAAa,WAAY;AAClF,OAAC,4BAA4B,OAAO,2BAA2B,EAAE;AAAA,IACrE,GAAG,IAAI;AAAA,EACX,OACK;AACD,mBAAe,IAAI,UAAW,cAAc,WAAW,SAAU,aAAa,MAAM,IAAI;AACxF,mBAAe,IAAI,cAAc,QAAQ,oBAAoB,aAAa,MAAM,IAAI;AAAA,EACxF;AACJ;AACA,IAAI,2BAA2B;AAC/B,SAAS,YAAYI,MAAK;AAEtB,uBAAqBA,KAAI,SAAS;AAClC,EAAAA,KAAI,UAAU,YAAY,SAAU,IAAI;AACpC,WAAO,SAAS,IAAI,IAAI;AAAA,EAC5B;AACA,EAAAA,KAAI,UAAU,UAAU,WAAY;AAChC,QAAI,KAAK;AACT,QAAIC,MAAK,GAAG,UAAUC,UAASD,IAAG,QAAQ,eAAeA,IAAG;AAC5D,QAAI,gBAAgB,GAAG,YAAY;AAC/B,SAAG,eAAe,qBAAqB,GAAG,SAAS,aAAa,KAAK,aAAa,GAAG,QAAQ,GAAG,YAAY;AAC5G,UAAI,GAAG,aAAa;AAChB,uBAAe,GAAG,aAAa,GAAG,YAAY;AAAA,MAClD;AAAA,IACJ;AAGA,OAAG,SAAS;AAEZ,QAAI,WAAW;AACf,QAAI,iBAAiB;AACrB,QAAI;AACJ,QAAI;AACA,yBAAmB,EAAE;AACrB,iCAA2B;AAC3B,cAAQC,QAAO,KAAK,GAAG,cAAc,GAAG,cAAc;AAAA,IAC1D,SACO,GAAG;AACN,kBAAY,GAAG,IAAI,QAAQ;AAI3B,UAAI,OAAkE;AAClE,YAAI;AACA,kBAAQ,GAAG,SAAS,YAAY,KAAK,GAAG,cAAc,GAAG,gBAAgB,CAAC;AAAA,QAC9E,SACOC,IAAG;AACN,sBAAYA,IAAG,IAAI,aAAa;AAChC,kBAAQ,GAAG;AAAA,QACf;AAAA,MACJ,OACK;AACD,gBAAQ,GAAG;AAAA,MACf;AAAA,IACJ,UACA;AACI,iCAA2B;AAC3B,yBAAmB,QAAQ;AAAA,IAC/B;AAEA,QAAI,QAAQ,KAAK,KAAK,MAAM,WAAW,GAAG;AACtC,cAAQ,MAAM,CAAC;AAAA,IACnB;AAEA,QAAI,EAAE,iBAAiB,QAAQ;AAC3B,UAAI,OAAyD;AACzD,eAAO,wGACkC,EAAE;AAAA,MAC/C;AACA,cAAQ,iBAAiB;AAAA,IAC7B;AAEA,UAAM,SAAS;AACf,WAAO;AAAA,EACX;AACJ;AAEA,SAAS,WAAW,MAAM,MAAM;AAC5B,MAAI,KAAK,cAAe,aAAa,KAAK,OAAO,WAAW,MAAM,UAAW;AACzE,WAAO,KAAK;AAAA,EAChB;AACA,SAAO,SAAS,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI;AAChD;AACA,SAAS,uBAAuBC,UAAS,MAAM,SAASC,WAAU,KAAK;AACnE,MAAI,OAAO,iBAAiB;AAC5B,OAAK,eAAeD;AACpB,OAAK,YAAY,EAAE,MAAY,SAAkB,UAAUC,WAAU,IAAS;AAC9E,SAAO;AACX;AACA,SAAS,sBAAsBD,UAAS,UAAU;AAC9C,MAAI,OAAOA,SAAQ,KAAK,KAAK,MAAMA,SAAQ,SAAS,GAAG;AACnD,WAAOA,SAAQ;AAAA,EACnB;AACA,MAAI,MAAMA,SAAQ,QAAQ,GAAG;AACzB,WAAOA,SAAQ;AAAA,EACnB;AACA,MAAI,QAAQ;AACZ,MAAI,SAAS,MAAMA,SAAQ,MAAM,KAAKA,SAAQ,OAAO,QAAQ,KAAK,MAAM,IAAI;AAExE,IAAAA,SAAQ,OAAO,KAAK,KAAK;AAAA,EAC7B;AACA,MAAI,OAAOA,SAAQ,OAAO,KAAK,MAAMA,SAAQ,WAAW,GAAG;AACvD,WAAOA,SAAQ;AAAA,EACnB;AACA,MAAI,SAAS,CAAC,MAAMA,SAAQ,MAAM,GAAG;AACjC,QAAI,WAAYA,SAAQ,SAAS,CAAC,KAAK;AACvC,QAAI,SAAS;AACb,QAAI,iBAAiB;AACrB,QAAI,iBAAiB;AACrB,UAAM,IAAI,kBAAkB,WAAY;AAAE,aAAO,SAAS,UAAU,KAAK;AAAA,IAAG,CAAC;AAC7E,QAAI,gBAAgB,SAAU,iBAAiB;AAC3C,eAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,IAAI,GAAG,KAAK;AAC7C,iBAAS,CAAC,EAAE,aAAa;AAAA,MAC7B;AACA,UAAI,iBAAiB;AACjB,iBAAS,SAAS;AAClB,YAAI,mBAAmB,MAAM;AACzB,uBAAa,cAAc;AAC3B,2BAAiB;AAAA,QACrB;AACA,YAAI,mBAAmB,MAAM;AACzB,uBAAa,cAAc;AAC3B,2BAAiB;AAAA,QACrB;AAAA,MACJ;AAAA,IACJ;AACA,QAAIE,WAAU,KAAK,SAAU,KAAK;AAE9B,MAAAF,SAAQ,WAAW,WAAW,KAAK,QAAQ;AAG3C,UAAI,CAAC,QAAQ;AACT,sBAAc,IAAI;AAAA,MACtB,OACK;AACD,iBAAS,SAAS;AAAA,MACtB;AAAA,IACJ,CAAC;AACD,QAAI,WAAW,KAAK,SAAU,QAAQ;AAIlC,UAAI,MAAMA,SAAQ,SAAS,GAAG;AAC1B,QAAAA,SAAQ,QAAQ;AAChB,sBAAc,IAAI;AAAA,MACtB;AAAA,IACJ,CAAC;AACD,QAAI,QAAQA,SAAQE,UAAS,QAAQ;AACrC,QAAI,SAAS,KAAK,GAAG;AACjB,UAAI,UAAU,KAAK,GAAG;AAElB,YAAI,QAAQF,SAAQ,QAAQ,GAAG;AAC3B,gBAAM,KAAKE,UAAS,QAAQ;AAAA,QAChC;AAAA,MACJ,WACS,UAAU,MAAM,SAAS,GAAG;AACjC,cAAM,UAAU,KAAKA,UAAS,QAAQ;AACtC,YAAI,MAAM,MAAM,KAAK,GAAG;AACpB,UAAAF,SAAQ,YAAY,WAAW,MAAM,OAAO,QAAQ;AAAA,QACxD;AACA,YAAI,MAAM,MAAM,OAAO,GAAG;AACtB,UAAAA,SAAQ,cAAc,WAAW,MAAM,SAAS,QAAQ;AACxD,cAAI,MAAM,UAAU,GAAG;AACnB,YAAAA,SAAQ,UAAU;AAAA,UACtB,OACK;AAED,6BAAiB,WAAW,WAAY;AACpC,+BAAiB;AACjB,kBAAI,QAAQA,SAAQ,QAAQ,KAAK,QAAQA,SAAQ,KAAK,GAAG;AACrD,gBAAAA,SAAQ,UAAU;AAClB,8BAAc,KAAK;AAAA,cACvB;AAAA,YACJ,GAAG,MAAM,SAAS,GAAG;AAAA,UACzB;AAAA,QACJ;AACA,YAAI,MAAM,MAAM,OAAO,GAAG;AAEtB,2BAAiB,WAAW,WAAY;AACpC,6BAAiB;AACjB,gBAAI,QAAQA,SAAQ,QAAQ,GAAG;AAC3B,uBAAS,QAAwC,YAAY,OAAO,MAAM,SAAS,KAAK,IAAI,IAAI;AAAA,YACpG;AAAA,UACJ,GAAG,MAAM,OAAO;AAAA,QACpB;AAAA,MACJ;AAAA,IACJ;AACA,aAAS;AAET,WAAOA,SAAQ,UAAUA,SAAQ,cAAcA,SAAQ;AAAA,EAC3D;AACJ;AAEA,SAAS,uBAAuBC,WAAU;AACtC,MAAI,QAAQA,SAAQ,GAAG;AACnB,aAAS,IAAI,GAAG,IAAIA,UAAS,QAAQ,KAAK;AACtC,UAAI,IAAIA,UAAS,CAAC;AAClB,UAAI,MAAM,CAAC,MAAM,MAAM,EAAE,gBAAgB,KAAK,mBAAmB,CAAC,IAAI;AAClE,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AACJ;AAEA,SAAS,WAAW,IAAI;AACpB,KAAG,UAAU,uBAAO,OAAO,IAAI;AAC/B,KAAG,gBAAgB;AAEnB,MAAI,YAAY,GAAG,SAAS;AAC5B,MAAI,WAAW;AACX,6BAAyB,IAAI,SAAS;AAAA,EAC1C;AACJ;AACA,IAAI;AACJ,SAAS,MAAM,OAAO,IAAI;AACtB,WAAS,IAAI,OAAO,EAAE;AAC1B;AACA,SAAS,SAAS,OAAO,IAAI;AACzB,WAAS,KAAK,OAAO,EAAE;AAC3B;AACA,SAAS,oBAAoB,OAAO,IAAI;AACpC,MAAI,UAAU;AACd,SAAO,SAAS,cAAc;AAC1B,QAAI,MAAM,GAAG,MAAM,MAAM,SAAS;AAClC,QAAI,QAAQ,MAAM;AACd,cAAQ,KAAK,OAAO,WAAW;AAAA,IACnC;AAAA,EACJ;AACJ;AACA,SAAS,yBAAyB,IAAI,WAAW,cAAc;AAC3D,aAAW;AACX,kBAAgB,WAAW,gBAAgB,CAAC,GAAG,OAAO,UAAU,qBAAqB,EAAE;AACvF,aAAW;AACf;AACA,SAAS,YAAYL,MAAK;AACtB,MAAI,SAAS;AACb,EAAAA,KAAI,UAAU,MAAM,SAAU,OAAO,IAAI;AACrC,QAAI,KAAK;AACT,QAAI,QAAQ,KAAK,GAAG;AAChB,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,IAAI,GAAG,KAAK;AAC1C,WAAG,IAAI,MAAM,CAAC,GAAG,EAAE;AAAA,MACvB;AAAA,IACJ,OACK;AACD,OAAC,GAAG,QAAQ,KAAK,MAAM,GAAG,QAAQ,KAAK,IAAI,CAAC,IAAI,KAAK,EAAE;AAGvD,UAAI,OAAO,KAAK,KAAK,GAAG;AACpB,WAAG,gBAAgB;AAAA,MACvB;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AACA,EAAAA,KAAI,UAAU,QAAQ,SAAU,OAAO,IAAI;AACvC,QAAI,KAAK;AACT,aAASO,MAAK;AACV,SAAG,KAAK,OAAOA,GAAE;AACjB,SAAG,MAAM,IAAI,SAAS;AAAA,IAC1B;AACA,IAAAA,IAAG,KAAK;AACR,OAAG,IAAI,OAAOA,GAAE;AAChB,WAAO;AAAA,EACX;AACA,EAAAP,KAAI,UAAU,OAAO,SAAU,OAAO,IAAI;AACtC,QAAI,KAAK;AAET,QAAI,CAAC,UAAU,QAAQ;AACnB,SAAG,UAAU,uBAAO,OAAO,IAAI;AAC/B,aAAO;AAAA,IACX;AAEA,QAAI,QAAQ,KAAK,GAAG;AAChB,eAAS,MAAM,GAAG,IAAI,MAAM,QAAQ,MAAM,GAAG,OAAO;AAChD,WAAG,KAAK,MAAM,GAAG,GAAG,EAAE;AAAA,MAC1B;AACA,aAAO;AAAA,IACX;AAEA,QAAI,MAAM,GAAG,QAAQ,KAAK;AAC1B,QAAI,CAAC,KAAK;AACN,aAAO;AAAA,IACX;AACA,QAAI,CAAC,IAAI;AACL,SAAG,QAAQ,KAAK,IAAI;AACpB,aAAO;AAAA,IACX;AAEA,QAAI;AACJ,QAAI,IAAI,IAAI;AACZ,WAAO,KAAK;AACR,WAAK,IAAI,CAAC;AACV,UAAI,OAAO,MAAM,GAAG,OAAO,IAAI;AAC3B,YAAI,OAAO,GAAG,CAAC;AACf;AAAA,MACJ;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AACA,EAAAA,KAAI,UAAU,QAAQ,SAAU,OAAO;AACnC,QAAI,KAAK;AACT,QAAI,OAAuC;AACvC,UAAI,iBAAiB,MAAM,YAAY;AACvC,UAAI,mBAAmB,SAAS,GAAG,QAAQ,cAAc,GAAG;AACxD,YAAI,UAAW,OAAO,gBAAgB,4BAA6B,IAC/D,GAAG,OAAO,oBAAoB,EAAE,GAAG,sCAAuC,EAAE,OAAO,OAAO,KAAM,IAChG,uIAEA,4BAA6B,OAAO,UAAU,KAAK,GAAG,gBAAkB,EAAE,OAAO,OAAO,IAAK,CAAC;AAAA,MACtG;AAAA,IACJ;AACA,QAAI,MAAM,GAAG,QAAQ,KAAK;AAC1B,QAAI,KAAK;AACL,YAAM,IAAI,SAAS,IAAI,QAAQ,GAAG,IAAI;AACtC,UAAI,OAAO,QAAQ,WAAW,CAAC;AAC/B,UAAI,OAAO,sBAAuB,OAAO,OAAO,GAAI;AACpD,eAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,IAAI,GAAG,KAAK;AACxC,gCAAwB,IAAI,CAAC,GAAG,IAAI,MAAM,IAAI,IAAI;AAAA,MACtD;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AACJ;AAEA,IAAI;AACJ,IAAI;AAAA;AAAA,GAA6B,WAAY;AACzC,aAASQ,aAAY,UAAU;AAC3B,UAAI,aAAa,QAAQ;AAAE,mBAAW;AAAA,MAAO;AAC7C,WAAK,WAAW;AAIhB,WAAK,SAAS;AAId,WAAK,UAAU,CAAC;AAIhB,WAAK,WAAW,CAAC;AACjB,WAAK,SAAS;AACd,UAAI,CAAC,YAAY,mBAAmB;AAChC,aAAK,SACA,kBAAkB,WAAW,kBAAkB,SAAS,CAAC,IAAI,KAAK,IAAI,IAAI;AAAA,MACnF;AAAA,IACJ;AACA,IAAAA,aAAY,UAAU,MAAM,SAAU,IAAI;AACtC,UAAI,KAAK,QAAQ;AACb,YAAI,qBAAqB;AACzB,YAAI;AACA,8BAAoB;AACpB,iBAAO,GAAG;AAAA,QACd,UACA;AACI,8BAAoB;AAAA,QACxB;AAAA,MACJ,WACS,OAAuC;AAC5C,eAAO,sCAAsC;AAAA,MACjD;AAAA,IACJ;AAKA,IAAAA,aAAY,UAAU,KAAK,WAAY;AACnC,0BAAoB;AAAA,IACxB;AAKA,IAAAA,aAAY,UAAU,MAAM,WAAY;AACpC,0BAAoB,KAAK;AAAA,IAC7B;AACA,IAAAA,aAAY,UAAU,OAAO,SAAU,YAAY;AAC/C,UAAI,KAAK,QAAQ;AACb,YAAI,IAAI,QAAQ,IAAI;AACpB,aAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,QAAQ,IAAI,GAAG,KAAK;AAC7C,eAAK,QAAQ,CAAC,EAAE,SAAS;AAAA,QAC7B;AACA,aAAK,IAAI,GAAG,IAAI,KAAK,SAAS,QAAQ,IAAI,GAAG,KAAK;AAC9C,eAAK,SAAS,CAAC,EAAE;AAAA,QACrB;AACA,YAAI,KAAK,QAAQ;AACb,eAAK,IAAI,GAAG,IAAI,KAAK,OAAO,QAAQ,IAAI,GAAG,KAAK;AAC5C,iBAAK,OAAO,CAAC,EAAE,KAAK,IAAI;AAAA,UAC5B;AAAA,QACJ;AAEA,YAAI,CAAC,KAAK,YAAY,KAAK,UAAU,CAAC,YAAY;AAE9C,cAAI,OAAO,KAAK,OAAO,OAAO,IAAI;AAClC,cAAI,QAAQ,SAAS,MAAM;AACvB,iBAAK,OAAO,OAAO,KAAK,KAAK,IAAI;AACjC,iBAAK,QAAQ,KAAK;AAAA,UACtB;AAAA,QACJ;AACA,aAAK,SAAS;AACd,aAAK,SAAS;AAAA,MAClB;AAAA,IACJ;AACA,WAAOA;AAAA,EACX,GAAE;AAAA;AAOF,SAAS,kBAAkB,QAAQ,OAAO;AACtC,MAAI,UAAU,QAAQ;AAAE,YAAQ;AAAA,EAAmB;AACnD,MAAI,SAAS,MAAM,QAAQ;AACvB,UAAM,QAAQ,KAAK,MAAM;AAAA,EAC7B;AACJ;AACA,SAAS,kBAAkB;AACvB,SAAO;AACX;AAWA,IAAI,iBAAiB;AAErB,SAAS,kBAAkB,IAAI;AAC3B,MAAI,qBAAqB;AACzB,mBAAiB;AACjB,SAAO,WAAY;AACf,qBAAiB;AAAA,EACrB;AACJ;AACA,SAAS,cAAc,IAAI;AACvB,MAAI,UAAU,GAAG;AAEjB,MAAI,SAAS,QAAQ;AACrB,MAAI,UAAU,CAAC,QAAQ,UAAU;AAC7B,WAAO,OAAO,SAAS,YAAY,OAAO,SAAS;AAC/C,eAAS,OAAO;AAAA,IACpB;AACA,WAAO,UAAU,KAAK,EAAE;AAAA,EAC5B;AACA,KAAG,UAAU;AACb,KAAG,QAAQ,SAAS,OAAO,QAAQ;AACnC,KAAG,YAAY,CAAC;AAChB,KAAG,QAAQ,CAAC;AACZ,KAAG,YAAY,SAAS,OAAO,YAAY,uBAAO,OAAO,IAAI;AAC7D,KAAG,WAAW;AACd,KAAG,YAAY;AACf,KAAG,kBAAkB;AACrB,KAAG,aAAa;AAChB,KAAG,eAAe;AAClB,KAAG,oBAAoB;AAC3B;AACA,SAAS,eAAeC,MAAK;AACzB,EAAAA,KAAI,UAAU,UAAU,SAAU,OAAO,WAAW;AAChD,QAAI,KAAK;AACT,QAAI,SAAS,GAAG;AAChB,QAAI,YAAY,GAAG;AACnB,QAAI,wBAAwB,kBAAkB,EAAE;AAChD,OAAG,SAAS;AAGZ,QAAI,CAAC,WAAW;AAEZ,SAAG,MAAM,GAAG;AAAA,QAAU,GAAG;AAAA,QAAK;AAAA,QAAO;AAAA,QAAW;AAAA;AAAA,MAAsB;AAAA,IAC1E,OACK;AAED,SAAG,MAAM,GAAG,UAAU,WAAW,KAAK;AAAA,IAC1C;AACA,0BAAsB;AAEtB,QAAI,QAAQ;AACR,aAAO,UAAU;AAAA,IACrB;AACA,QAAI,GAAG,KAAK;AACR,SAAG,IAAI,UAAU;AAAA,IACrB;AAEA,QAAI,UAAU;AACd,WAAO,WACH,QAAQ,UACR,QAAQ,WACR,QAAQ,WAAW,QAAQ,QAAQ,QAAQ;AAC3C,cAAQ,QAAQ,MAAM,QAAQ;AAC9B,gBAAU,QAAQ;AAAA,IACtB;AAAA,EAGJ;AACA,EAAAA,KAAI,UAAU,eAAe,WAAY;AACrC,QAAI,KAAK;AACT,QAAI,GAAG,UAAU;AACb,SAAG,SAAS,OAAO;AAAA,IACvB;AAAA,EACJ;AACA,EAAAA,KAAI,UAAU,WAAW,WAAY;AACjC,QAAI,KAAK;AACT,QAAI,GAAG,mBAAmB;AACtB;AAAA,IACJ;AACA,eAAW,IAAI,eAAe;AAC9B,OAAG,oBAAoB;AAEvB,QAAI,SAAS,GAAG;AAChB,QAAI,UAAU,CAAC,OAAO,qBAAqB,CAAC,GAAG,SAAS,UAAU;AAC9D,eAAS,OAAO,WAAW,EAAE;AAAA,IACjC;AAGA,OAAG,OAAO,KAAK;AAGf,QAAI,GAAG,MAAM,QAAQ;AACjB,SAAG,MAAM,OAAO;AAAA,IACpB;AAEA,OAAG,eAAe;AAElB,OAAG,UAAU,GAAG,QAAQ,IAAI;AAE5B,eAAW,IAAI,WAAW;AAE1B,OAAG,KAAK;AAER,QAAI,GAAG,KAAK;AACR,SAAG,IAAI,UAAU;AAAA,IACrB;AAEA,QAAI,GAAG,QAAQ;AACX,SAAG,OAAO,SAAS;AAAA,IACvB;AAAA,EACJ;AACJ;AACA,SAAS,eAAe,IAAI,IAAI,WAAW;AACvC,KAAG,MAAM;AACT,MAAI,CAAC,GAAG,SAAS,QAAQ;AAErB,OAAG,SAAS,SAAS;AACrB,QAAI,OAAuC;AAEvC,UAAK,GAAG,SAAS,YAAY,GAAG,SAAS,SAAS,OAAO,CAAC,MAAM,OAC5D,GAAG,SAAS,MACZ,IAAI;AACJ,eAAO,yLAEsD,EAAE;AAAA,MACnE,OACK;AACD,eAAO,uEAAuE,EAAE;AAAA,MACpF;AAAA,IACJ;AAAA,EACJ;AACA,aAAW,IAAI,aAAa;AAC5B,MAAI;AAEJ,MAAI,OAAqE;AACrE,sBAAkB,WAAY;AAC1B,UAAI,OAAO,GAAG;AACd,UAAIC,MAAK,GAAG;AACZ,UAAI,WAAW,kBAAkB,OAAOA,GAAE;AAC1C,UAAIC,UAAS,gBAAgB,OAAOD,GAAE;AACtC,WAAK,QAAQ;AACb,UAAI,QAAQ,GAAG,QAAQ;AACvB,WAAKC,OAAM;AACX,cAAQ,OAAO,OAAO,MAAM,SAAS,GAAG,UAAUA,OAAM;AACxD,WAAK,QAAQ;AACb,SAAG,QAAQ,OAAO,SAAS;AAC3B,WAAKA,OAAM;AACX,cAAQ,OAAO,OAAO,MAAM,QAAQ,GAAG,UAAUA,OAAM;AAAA,IAC3D;AAAA,EACJ,OACK;AACD,sBAAkB,WAAY;AAC1B,SAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS;AAAA,IACtC;AAAA,EACJ;AACA,MAAI,iBAAiB;AAAA,IACjB,QAAQ,WAAY;AAChB,UAAI,GAAG,cAAc,CAAC,GAAG,cAAc;AACnC,mBAAW,IAAI,cAAc;AAAA,MACjC;AAAA,IACJ;AAAA,EACJ;AACA,MAAI,OAAuC;AACvC,mBAAe,UAAU,SAAU,GAAG;AAAE,aAAO,WAAW,IAAI,iBAAiB,CAAC,CAAC,CAAC;AAAA,IAAG;AACrF,mBAAe,YAAY,SAAU,GAAG;AAAE,aAAO,WAAW,IAAI,mBAAmB,CAAC,CAAC,CAAC;AAAA,IAAG;AAAA,EAC7F;AAIA,MAAI;AAAA,IAAQ;AAAA,IAAI;AAAA,IAAiBC;AAAA,IAAM;AAAA,IAAgB;AAAA;AAAA,EAA0B;AACjF,cAAY;AAEZ,MAAI,cAAc,GAAG;AACrB,MAAI,aAAa;AACb,aAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK;AACzC,kBAAY,CAAC,EAAE,IAAI;AAAA,IACvB;AAAA,EACJ;AAGA,MAAI,GAAG,UAAU,MAAM;AACnB,OAAG,aAAa;AAChB,eAAW,IAAI,SAAS;AAAA,EAC5B;AACA,SAAO;AACX;AACA,SAAS,qBAAqB,IAAI,WAAW,WAAW,aAAa,gBAAgB;AACjF,MAAI,OAAuC;AACvC,+BAA2B;AAAA,EAC/B;AAMA,MAAI,iBAAiB,YAAY,KAAK;AACtC,MAAI,iBAAiB,GAAG;AACxB,MAAI,uBAAuB,CAAC,EAAG,kBAAkB,CAAC,eAAe,WAC5D,mBAAmB,eAAe,CAAC,eAAe,WAClD,kBAAkB,GAAG,aAAa,SAAS,eAAe,QAC1D,CAAC,kBAAkB,GAAG,aAAa;AAIxC,MAAI,mBAAmB,CAAC,EAAE;AAAA,EACtB,GAAG,SAAS;AAAA,EACZ;AACJ,MAAI,YAAY,GAAG;AACnB,KAAG,SAAS,eAAe;AAC3B,KAAG,SAAS;AACZ,MAAI,GAAG,QAAQ;AAEX,OAAG,OAAO,SAAS;AAAA,EACvB;AACA,KAAG,SAAS,kBAAkB;AAI9B,MAAIC,SAAQ,YAAY,KAAK,SAAS;AACtC,MAAI,GAAG,aAAa;AAGhB,QAAI,eAAe,GAAG,aAAaA,QAAQ,UAAU,QAAQ,UAAU,KAAK,SAAU,aAAa,IAAI,QAAQ,GAAG;AAC9G,yBAAmB;AAAA,IACvB;AAAA,EACJ;AACA,KAAG,SAASA;AAEZ,cAAY,aAAa;AACzB,MAAI,gBAAgB,GAAG,SAAS;AAChC,MAAI,GAAG,iBAAiB;AACpB,mBAAe,GAAG,iBAAiB,WAAW,iBAAiB,aAAa,IAAI,YAAY;AAAA,EAChG;AACA,KAAG,aAAa,GAAG,SAAS,mBAAmB;AAC/C,2BAAyB,IAAI,WAAW,aAAa;AAErD,MAAI,aAAa,GAAG,SAAS,OAAO;AAChC,oBAAgB,KAAK;AACrB,QAAIC,SAAQ,GAAG;AACf,QAAI,WAAW,GAAG,SAAS,aAAa,CAAC;AACzC,aAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACtC,UAAI,MAAM,SAAS,CAAC;AACpB,UAAI,cAAc,GAAG,SAAS;AAC9B,MAAAA,OAAM,GAAG,IAAI,aAAa,KAAK,aAAa,WAAW,EAAE;AAAA,IAC7D;AACA,oBAAgB,IAAI;AAEpB,OAAG,SAAS,YAAY;AAAA,EAC5B;AAEA,MAAI,kBAAkB;AAClB,OAAG,SAAS,aAAa,gBAAgB,YAAY,OAAO;AAC5D,OAAG,aAAa;AAAA,EACpB;AACA,MAAI,OAAuC;AACvC,+BAA2B;AAAA,EAC/B;AACJ;AACA,SAAS,iBAAiB,IAAI;AAC1B,SAAO,OAAO,KAAK,GAAG,UAAU;AAC5B,QAAI,GAAG;AACH,aAAO;AAAA,EACf;AACA,SAAO;AACX;AACA,SAAS,uBAAuB,IAAI,QAAQ;AACxC,MAAI,QAAQ;AACR,OAAG,kBAAkB;AACrB,QAAI,iBAAiB,EAAE,GAAG;AACtB;AAAA,IACJ;AAAA,EACJ,WACS,GAAG,iBAAiB;AACzB;AAAA,EACJ;AACA,MAAI,GAAG,aAAa,GAAG,cAAc,MAAM;AACvC,OAAG,YAAY;AACf,aAAS,IAAI,GAAG,IAAI,GAAG,UAAU,QAAQ,KAAK;AAC1C,6BAAuB,GAAG,UAAU,CAAC,CAAC;AAAA,IAC1C;AACA,eAAW,IAAI,WAAW;AAAA,EAC9B;AACJ;AACA,SAAS,yBAAyB,IAAI,QAAQ;AAC1C,MAAI,QAAQ;AACR,OAAG,kBAAkB;AACrB,QAAI,iBAAiB,EAAE,GAAG;AACtB;AAAA,IACJ;AAAA,EACJ;AACA,MAAI,CAAC,GAAG,WAAW;AACf,OAAG,YAAY;AACf,aAAS,IAAI,GAAG,IAAI,GAAG,UAAU,QAAQ,KAAK;AAC1C,+BAAyB,GAAG,UAAU,CAAC,CAAC;AAAA,IAC5C;AACA,eAAW,IAAI,aAAa;AAAA,EAChC;AACJ;AACA,SAAS,WAAW,IAAI,MAAM,MAAM,YAAY;AAC5C,MAAI,eAAe,QAAQ;AAAE,iBAAa;AAAA,EAAM;AAEhD,aAAW;AACX,MAAI,WAAW;AACf,MAAI,YAAY,gBAAgB;AAChC,gBAAc,mBAAmB,EAAE;AACnC,MAAI,WAAW,GAAG,SAAS,IAAI;AAC/B,MAAI,OAAO,GAAG,OAAO,MAAM,OAAO;AAClC,MAAI,UAAU;AACV,aAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,IAAI,GAAG,KAAK;AAC7C,8BAAwB,SAAS,CAAC,GAAG,IAAI,QAAQ,MAAM,IAAI,IAAI;AAAA,IACnE;AAAA,EACJ;AACA,MAAI,GAAG,eAAe;AAClB,OAAG,MAAM,UAAU,IAAI;AAAA,EAC3B;AACA,MAAI,YAAY;AACZ,uBAAmB,QAAQ;AAC3B,iBAAa,UAAU,GAAG;AAAA,EAC9B;AACA,YAAU;AACd;AAGA,IAAI,QAAQ,CAAC;AACb,IAAI,oBAAoB,CAAC;AACzB,IAAI,MAAM,CAAC;AAEX,IAAI,UAAU;AACd,IAAI,WAAW;AACf,IAAI,UAAU;AAId,SAAS,sBAAsB;AAC3B,YAAU,MAAM,SAAS,kBAAkB,SAAS;AACpD,QAAM,CAAC;AACP,MAAI,OAAuC;AACvC,eAAW,CAAC;AAAA,EAChB;AACA,YAAU,WAAW;AACzB;AAMA,IAAI,wBAAwB;AAE5B,IAAI,SAAS,KAAK;AAOlB,IAAI,aAAa,CAAC,MAAM;AAChB,kBAAgB,OAAO;AAC3B,MAAI,iBACA,OAAO,cAAc,QAAQ,cAC7B,OAAO,IAAI,SAAS,YAAY,OAAO,EAAE,WAAW;AAKpD,aAAS,WAAY;AAAE,aAAO,cAAc,IAAI;AAAA,IAAG;AAAA,EACvD;AACJ;AAVQ;AAWR,IAAI,gBAAgB,SAAU,GAAG,GAAG;AAChC,MAAI,EAAE,MAAM;AACR,QAAI,CAAC,EAAE;AACH,aAAO;AAAA,EACf,WACS,EAAE,MAAM;AACb,WAAO;AAAA,EACX;AACA,SAAO,EAAE,KAAK,EAAE;AACpB;AAIA,SAAS,sBAAsB;AAC3B,0BAAwB,OAAO;AAC/B,aAAW;AACX,MAAI,SAASC;AASb,QAAM,KAAK,aAAa;AAGxB,OAAK,UAAU,GAAG,UAAU,MAAM,QAAQ,WAAW;AACjD,cAAU,MAAM,OAAO;AACvB,QAAI,QAAQ,QAAQ;AAChB,cAAQ,OAAO;AAAA,IACnB;AACA,IAAAA,MAAK,QAAQ;AACb,QAAIA,GAAE,IAAI;AACV,YAAQ,IAAI;AAEZ,QAAI,OAA0D;AAC1D,eAASA,GAAE,KAAK,SAASA,GAAE,KAAK,KAAK;AACrC,UAAI,SAASA,GAAE,IAAI,kBAAkB;AACjC,eAAO,2CACF,QAAQ,OACH,+BAAgC,OAAO,QAAQ,YAAY,GAAI,IAC/D,oCAAoC,QAAQ,EAAE;AACxD;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI,iBAAiB,kBAAkB,MAAM;AAC7C,MAAI,eAAe,MAAM,MAAM;AAC/B,sBAAoB;AAEpB,qBAAmB,cAAc;AACjC,mBAAiB,YAAY;AAC7B,cAAY;AAGZ,MAAI,YAAY,OAAO,UAAU;AAC7B,aAAS,KAAK,OAAO;AAAA,EACzB;AACJ;AACA,SAAS,iBAAiBC,QAAO;AAC7B,MAAI,IAAIA,OAAM;AACd,SAAO,KAAK;AACR,QAAI,UAAUA,OAAM,CAAC;AACrB,QAAI,KAAK,QAAQ;AACjB,QAAI,MAAM,GAAG,aAAa,WAAW,GAAG,cAAc,CAAC,GAAG,cAAc;AACpE,iBAAW,IAAI,SAAS;AAAA,IAC5B;AAAA,EACJ;AACJ;AAKA,SAAS,wBAAwB,IAAI;AAGjC,KAAG,YAAY;AACf,oBAAkB,KAAK,EAAE;AAC7B;AACA,SAAS,mBAAmBA,QAAO;AAC/B,WAAS,IAAI,GAAG,IAAIA,OAAM,QAAQ,KAAK;AACnC,IAAAA,OAAM,CAAC,EAAE,YAAY;AACrB;AAAA,MAAuBA,OAAM,CAAC;AAAA,MAAG;AAAA;AAAA,IAAe;AAAA,EACpD;AACJ;AAMA,SAAS,aAAa,SAAS;AAC3B,MAAID,MAAK,QAAQ;AACjB,MAAI,IAAIA,GAAE,KAAK,MAAM;AACjB;AAAA,EACJ;AACA,MAAI,YAAY,IAAI,UAAU,QAAQ,WAAW;AAC7C;AAAA,EACJ;AACA,MAAIA,GAAE,IAAI;AACV,MAAI,CAAC,UAAU;AACX,UAAM,KAAK,OAAO;AAAA,EACtB,OACK;AAGD,QAAI,IAAI,MAAM,SAAS;AACvB,WAAO,IAAI,WAAW,MAAM,CAAC,EAAE,KAAK,QAAQ,IAAI;AAC5C;AAAA,IACJ;AACA,UAAM,OAAO,IAAI,GAAG,GAAG,OAAO;AAAA,EAClC;AAEA,MAAI,CAAC,SAAS;AACV,cAAU;AACV,QAAI,OAAwD;AACxD,0BAAoB;AACpB;AAAA,IACJ;AACA,aAAS,mBAAmB;AAAA,EAChC;AACJ;AAEA,IAAI,UAAU;AACd,IAAI,aAAa,GAAG,OAAO,SAAS,WAAW;AAC/C,IAAI,iBAAiB,GAAG,OAAO,SAAS,SAAS;AACjD,IAAI,kBAAkB,GAAG,OAAO,SAAS,UAAU;AAkOnD,SAAS,gBAAgB,IAAI;AAMzB,MAAI,WAAW,GAAG;AAClB,MAAI,iBAAiB,GAAG,WAAW,GAAG,QAAQ;AAC9C,MAAI,mBAAmB,UAAU;AAC7B,WAAQ,GAAG,YAAY,OAAO,OAAO,cAAc;AAAA,EACvD,OACK;AACD,WAAO;AAAA,EACX;AACJ;AA0CA,SAAS,YAAY,KAAK,IAAI,MAAM;AAGhC,aAAW;AACX,MAAI;AACA,QAAI,IAAI;AACJ,UAAI,MAAM;AACV,aAAQ,MAAM,IAAI,SAAU;AACxB,YAAIE,SAAQ,IAAI,SAAS;AACzB,YAAIA,QAAO;AACP,mBAAS,IAAI,GAAG,IAAIA,OAAM,QAAQ,KAAK;AACnC,gBAAI;AACA,kBAAI,UAAUA,OAAM,CAAC,EAAE,KAAK,KAAK,KAAK,IAAI,IAAI,MAAM;AACpD,kBAAI;AACA;AAAA,YACR,SACO,GAAG;AACN,gCAAkB,GAAG,KAAK,oBAAoB;AAAA,YAClD;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AACA,sBAAkB,KAAK,IAAI,IAAI;AAAA,EACnC,UACA;AACI,cAAU;AAAA,EACd;AACJ;AACA,SAAS,wBAAwB,SAAS,SAAS,MAAM,IAAI,MAAM;AAC/D,MAAI;AACJ,MAAI;AACA,UAAM,OAAO,QAAQ,MAAM,SAAS,IAAI,IAAI,QAAQ,KAAK,OAAO;AAChE,QAAI,OAAO,CAAC,IAAI,UAAU,UAAU,GAAG,KAAK,CAAC,IAAI,UAAU;AACvD,UAAI,MAAM,SAAU,GAAG;AAAE,eAAO,YAAY,GAAG,IAAI,OAAO,kBAAkB;AAAA,MAAG,CAAC;AAChF,UAAI,WAAW;AAAA,IACnB;AAAA,EACJ,SACO,GAAG;AACN,gBAAY,GAAG,IAAI,IAAI;AAAA,EAC3B;AACA,SAAO;AACX;AACA,SAAS,kBAAkB,KAAK,IAAI,MAAM;AACtC,MAAI,OAAO,cAAc;AACrB,QAAI;AACA,aAAO,OAAO,aAAa,KAAK,MAAM,KAAK,IAAI,IAAI;AAAA,IACvD,SACO,GAAG;AAGN,UAAI,MAAM,KAAK;AACX,iBAAS,GAAG,MAAM,qBAAqB;AAAA,MAC3C;AAAA,IACJ;AAAA,EACJ;AACA,WAAS,KAAK,IAAI,IAAI;AAC1B;AACA,SAAS,SAAS,KAAK,IAAI,MAAM;AAC7B,MAAI,OAAuC;AACvC,WAAO,YAAY,OAAO,MAAM,KAAM,EAAE,OAAO,IAAI,SAAS,GAAG,GAAI,GAAG,EAAE;AAAA,EAC5E;AAEA,MAAI,aAAa,OAAO,YAAY,aAAa;AAC7C,YAAQ,MAAM,GAAG;AAAA,EACrB,OACK;AACD,UAAM;AAAA,EACV;AACJ;AAGA,IAAI,mBAAmB;AACvB,IAAI,YAAY,CAAC;AACjB,IAAI,UAAU;AACd,SAAS,iBAAiB;AACtB,YAAU;AACV,MAAI,SAAS,UAAU,MAAM,CAAC;AAC9B,YAAU,SAAS;AACnB,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACpC,WAAO,CAAC,EAAE;AAAA,EACd;AACJ;AAYA,IAAI;AAQJ,IAAI,OAAO,YAAY,eAAe,SAAS,OAAO,GAAG;AACjD,QAAM,QAAQ,QAAQ;AAC1B,cAAY,WAAY;AACpB,QAAI,KAAK,cAAc;AAMvB,QAAI;AACA,iBAAWC,KAAI;AAAA,EACvB;AACA,qBAAmB;AACvB,WACS,CAAC,QACN,OAAO,qBAAqB,gBAC3B,SAAS,gBAAgB;AAEtB,iBAAiB,SAAS,MAAM,yCAAyC;AAIzE,cAAY;AACZ,aAAW,IAAI,iBAAiB,cAAc;AAC9C,eAAa,SAAS,eAAe,OAAO,SAAS,CAAC;AAC1D,WAAS,QAAQ,YAAY;AAAA,IACzB,eAAe;AAAA,EACnB,CAAC;AACD,cAAY,WAAY;AACpB,iBAAa,YAAY,KAAK;AAC9B,eAAW,OAAO,OAAO,SAAS;AAAA,EACtC;AACA,qBAAmB;AACvB,WACS,OAAO,iBAAiB,eAAe,SAAS,YAAY,GAAG;AAIpE,cAAY,WAAY;AACpB,iBAAa,cAAc;AAAA,EAC/B;AACJ,OACK;AAED,cAAY,WAAY;AACpB,eAAW,gBAAgB,CAAC;AAAA,EAChC;AACJ;AA9CQ;AAqBA;AACA;AACA;AA2BR,SAAS,SAAS,IAAI,KAAK;AACvB,MAAI;AACJ,YAAU,KAAK,WAAY;AACvB,QAAI,IAAI;AACJ,UAAI;AACA,WAAG,KAAK,GAAG;AAAA,MACf,SACO,GAAG;AACN,oBAAY,GAAG,KAAK,UAAU;AAAA,MAClC;AAAA,IACJ,WACS,UAAU;AACf,eAAS,GAAG;AAAA,IAChB;AAAA,EACJ,CAAC;AACD,MAAI,CAAC,SAAS;AACV,cAAU;AACV,cAAU;AAAA,EACd;AAEA,MAAI,CAAC,MAAM,OAAO,YAAY,aAAa;AACvC,WAAO,IAAI,QAAQ,SAAUC,UAAS;AAClC,iBAAWA;AAAA,IACf,CAAC;AAAA,EACL;AACJ;AAqHA,SAAS,gBAAgB,UAAU;AAC/B,SAAO,SAAU,IAAIC,SAAQ;AACzB,QAAIA,YAAW,QAAQ;AAAE,MAAAA,UAAS;AAAA,IAAiB;AACnD,QAAI,CAACA,SAAQ;AAKT;AAAA,IACJ;AACA,WAAO,WAAWA,SAAQ,UAAU,EAAE;AAAA,EAC1C;AACJ;AAUA,SAAS,WAAW,UAAU,UAAU,IAAI;AACxC,MAAI,UAAU,SAAS;AACvB,UAAQ,QAAQ,IAAI,mBAAmB,QAAQ,QAAQ,GAAG,EAAE;AAChE;AACA,IAAI,gBAAgB,gBAAgB,aAAa;AACjD,IAAI,YAAY,gBAAgB,SAAS;AACzC,IAAI,iBAAiB,gBAAgB,cAAc;AACnD,IAAI,YAAY,gBAAgB,SAAS;AACzC,IAAI,kBAAkB,gBAAgB,eAAe;AACrD,IAAI,cAAc,gBAAgB,WAAW;AAC7C,IAAI,cAAc,gBAAgB,WAAW;AAC7C,IAAI,gBAAgB,gBAAgB,aAAa;AACjD,IAAI,mBAAmB,gBAAgB,gBAAgB;AACvD,IAAI,kBAAkB,gBAAgB,eAAe;AACrD,IAAI,oBAAoB,gBAAgB,iBAAiB;AACzD,IAAI,0BAA0B,gBAAgB,eAAe;AAS7D,IAAI,UAAU;AAQd,IAAI,cAAc,IAAI,KAAK;AAM3B,SAAS,SAAS,KAAK;AACnB,YAAU,KAAK,WAAW;AAC1B,cAAY,MAAM;AAClB,SAAO;AACX;AACA,SAAS,UAAU,KAAK,MAAM;AAC1B,MAAI,GAAGC;AACP,MAAI,MAAM,QAAQ,GAAG;AACrB,MAAK,CAAC,OAAO,CAAC,SAAS,GAAG,KACtB,IAAI,YACJ,OAAO,SAAS,GAAG,KACnB,eAAe,OAAO;AACtB;AAAA,EACJ;AACA,MAAI,IAAI,QAAQ;AACZ,QAAI,QAAQ,IAAI,OAAO,IAAI;AAC3B,QAAI,KAAK,IAAI,KAAK,GAAG;AACjB;AAAA,IACJ;AACA,SAAK,IAAI,KAAK;AAAA,EAClB;AACA,MAAI,KAAK;AACL,QAAI,IAAI;AACR,WAAO;AACH,gBAAU,IAAI,CAAC,GAAG,IAAI;AAAA,EAC9B,WACS,MAAM,GAAG,GAAG;AACjB,cAAU,IAAI,OAAO,IAAI;AAAA,EAC7B,OACK;AACD,IAAAA,QAAO,OAAO,KAAK,GAAG;AACtB,QAAIA,MAAK;AACT,WAAO;AACH,gBAAU,IAAIA,MAAK,CAAC,CAAC,GAAG,IAAI;AAAA,EACpC;AACJ;AAEA,IAAI,QAAQ;AAOZ,IAAI;AAAA;AAAA,GAAyB,WAAY;AACrC,aAASC,SAAQ,IAAI,SAAS,IAAI,SAAS,iBAAiB;AACxD;AAAA,QAAkB;AAAA;AAAA;AAAA,QAGlB,qBAAqB,CAAC,kBAAkB,MAClC,oBACA,KACI,GAAG,SACH;AAAA,MAAS;AACnB,WAAK,KAAK,KAAK,OAAO,iBAAiB;AACnC,WAAG,WAAW;AAAA,MAClB;AAEA,UAAI,SAAS;AACT,aAAK,OAAO,CAAC,CAAC,QAAQ;AACtB,aAAK,OAAO,CAAC,CAAC,QAAQ;AACtB,aAAK,OAAO,CAAC,CAAC,QAAQ;AACtB,aAAK,OAAO,CAAC,CAAC,QAAQ;AACtB,aAAK,SAAS,QAAQ;AACtB,YAAI,OAAuC;AACvC,eAAK,UAAU,QAAQ;AACvB,eAAK,YAAY,QAAQ;AAAA,QAC7B;AAAA,MACJ,OACK;AACD,aAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO;AAAA,MACpD;AACA,WAAK,KAAK;AACV,WAAK,KAAK,EAAE;AACZ,WAAK,SAAS;AACd,WAAK,OAAO;AACZ,WAAK,QAAQ,KAAK;AAClB,WAAK,OAAO,CAAC;AACb,WAAK,UAAU,CAAC;AAChB,WAAK,SAAS,IAAI,KAAK;AACvB,WAAK,YAAY,IAAI,KAAK;AAC1B,WAAK,aAAa,QAAwC,QAAQ,SAAS,IAAI;AAE/E,UAAI,WAAW,OAAO,GAAG;AACrB,aAAK,SAAS;AAAA,MAClB,OACK;AACD,aAAK,SAAS,UAAU,OAAO;AAC/B,YAAI,CAAC,KAAK,QAAQ;AACd,eAAK,SAASC;AAAA,QAKlB;AAAA,MACJ;AACA,WAAK,QAAQ,KAAK,OAAO,SAAY,KAAK,IAAI;AAAA,IAClD;AAIA,IAAAD,SAAQ,UAAU,MAAM,WAAY;AAChC,iBAAW,IAAI;AACf,UAAI;AACJ,UAAI,KAAK,KAAK;AACd,UAAI;AACA,gBAAQ,KAAK,OAAO,KAAK,IAAI,EAAE;AAAA,MACnC,SACO,GAAG;AACN,YAAI,KAAK,MAAM;AACX,sBAAY,GAAG,IAAI,uBAAwB,OAAO,KAAK,YAAY,GAAI,CAAC;AAAA,QAC5E,OACK;AACD,gBAAM;AAAA,QACV;AAAA,MACJ,UACA;AAGI,YAAI,KAAK,MAAM;AACX,mBAAS,KAAK;AAAA,QAClB;AACA,kBAAU;AACV,aAAK,YAAY;AAAA,MACrB;AACA,aAAO;AAAA,IACX;AAIA,IAAAA,SAAQ,UAAU,SAAS,SAAU,KAAK;AACtC,UAAIE,MAAK,IAAI;AACb,UAAI,CAAC,KAAK,UAAU,IAAIA,GAAE,GAAG;AACzB,aAAK,UAAU,IAAIA,GAAE;AACrB,aAAK,QAAQ,KAAK,GAAG;AACrB,YAAI,CAAC,KAAK,OAAO,IAAIA,GAAE,GAAG;AACtB,cAAI,OAAO,IAAI;AAAA,QACnB;AAAA,MACJ;AAAA,IACJ;AAIA,IAAAF,SAAQ,UAAU,cAAc,WAAY;AACxC,UAAI,IAAI,KAAK,KAAK;AAClB,aAAO,KAAK;AACR,YAAI,MAAM,KAAK,KAAK,CAAC;AACrB,YAAI,CAAC,KAAK,UAAU,IAAI,IAAI,EAAE,GAAG;AAC7B,cAAI,UAAU,IAAI;AAAA,QACtB;AAAA,MACJ;AACA,UAAI,MAAM,KAAK;AACf,WAAK,SAAS,KAAK;AACnB,WAAK,YAAY;AACjB,WAAK,UAAU,MAAM;AACrB,YAAM,KAAK;AACX,WAAK,OAAO,KAAK;AACjB,WAAK,UAAU;AACf,WAAK,QAAQ,SAAS;AAAA,IAC1B;AAKA,IAAAA,SAAQ,UAAU,SAAS,WAAY;AAEnC,UAAI,KAAK,MAAM;AACX,aAAK,QAAQ;AAAA,MACjB,WACS,KAAK,MAAM;AAChB,aAAK,IAAI;AAAA,MACb,OACK;AACD,qBAAa,IAAI;AAAA,MACrB;AAAA,IACJ;AAKA,IAAAA,SAAQ,UAAU,MAAM,WAAY;AAChC,UAAI,KAAK,QAAQ;AACb,YAAI,QAAQ,KAAK,IAAI;AACrB,YAAI,UAAU,KAAK;AAAA;AAAA;AAAA,QAIf,SAAS,KAAK,KACd,KAAK,MAAM;AAEX,cAAI,WAAW,KAAK;AACpB,eAAK,QAAQ;AACb,cAAI,KAAK,MAAM;AACX,gBAAI,OAAO,yBAA0B,OAAO,KAAK,YAAY,GAAI;AACjE,oCAAwB,KAAK,IAAI,KAAK,IAAI,CAAC,OAAO,QAAQ,GAAG,KAAK,IAAI,IAAI;AAAA,UAC9E,OACK;AACD,iBAAK,GAAG,KAAK,KAAK,IAAI,OAAO,QAAQ;AAAA,UACzC;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAKA,IAAAA,SAAQ,UAAU,WAAW,WAAY;AACrC,WAAK,QAAQ,KAAK,IAAI;AACtB,WAAK,QAAQ;AAAA,IACjB;AAIA,IAAAA,SAAQ,UAAU,SAAS,WAAY;AACnC,UAAI,IAAI,KAAK,KAAK;AAClB,aAAO,KAAK;AACR,aAAK,KAAK,CAAC,EAAE,OAAO;AAAA,MACxB;AAAA,IACJ;AAIA,IAAAA,SAAQ,UAAU,WAAW,WAAY;AACrC,UAAI,KAAK,MAAM,CAAC,KAAK,GAAG,mBAAmB;AACvC,iBAAS,KAAK,GAAG,OAAO,SAAS,IAAI;AAAA,MACzC;AACA,UAAI,KAAK,QAAQ;AACb,YAAI,IAAI,KAAK,KAAK;AAClB,eAAO,KAAK;AACR,eAAK,KAAK,CAAC,EAAE,UAAU,IAAI;AAAA,QAC/B;AACA,aAAK,SAAS;AACd,YAAI,KAAK,QAAQ;AACb,eAAK,OAAO;AAAA,QAChB;AAAA,MACJ;AAAA,IACJ;AACA,WAAOA;AAAA,EACX,GAAE;AAAA;AAEF,IAAI,2BAA2B;AAAA,EAC3B,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,KAAKC;AAAA,EACL,KAAKA;AACT;AACA,SAAS,MAAME,SAAQ,WAAW,KAAK;AACnC,2BAAyB,MAAM,SAAS,cAAc;AAClD,WAAO,KAAK,SAAS,EAAE,GAAG;AAAA,EAC9B;AACA,2BAAyB,MAAM,SAAS,YAAY,KAAK;AACrD,SAAK,SAAS,EAAE,GAAG,IAAI;AAAA,EAC3B;AACA,SAAO,eAAeA,SAAQ,KAAK,wBAAwB;AAC/D;AACA,SAAS,UAAU,IAAI;AACnB,MAAIC,QAAO,GAAG;AACd,MAAIA,MAAK;AACL,gBAAY,IAAIA,MAAK,KAAK;AAE9B,YAAU,EAAE;AACZ,MAAIA,MAAK;AACL,gBAAY,IAAIA,MAAK,OAAO;AAChC,MAAIA,MAAK,MAAM;AACX,aAAS,EAAE;AAAA,EACf,OACK;AACD,QAAI,KAAK,QAAS,GAAG,QAAQ,CAAC,CAAE;AAChC,UAAM,GAAG;AAAA,EACb;AACA,MAAIA,MAAK;AACL,mBAAe,IAAIA,MAAK,QAAQ;AACpC,MAAIA,MAAK,SAASA,MAAK,UAAU,aAAa;AAC1C,cAAU,IAAIA,MAAK,KAAK;AAAA,EAC5B;AACJ;AACA,SAAS,YAAY,IAAI,cAAc;AACnC,MAAI,YAAY,GAAG,SAAS,aAAa,CAAC;AAC1C,MAAIC,SAAS,GAAG,SAAS,gBAAgB,CAAC,CAAC;AAG3C,MAAIN,QAAQ,GAAG,SAAS,YAAY,CAAC;AACrC,MAAI,SAAS,CAAC,GAAG;AAEjB,MAAI,CAAC,QAAQ;AACT,oBAAgB,KAAK;AAAA,EACzB;AACA,MAAI,UAAU,SAAUO,MAAK;AACzB,IAAAP,MAAK,KAAKO,IAAG;AACb,QAAI,QAAQ,aAAaA,MAAK,cAAc,WAAW,EAAE;AAEzD,QAAI,OAAuC;AACvC,UAAI,gBAAgB,UAAUA,IAAG;AACjC,UAAI,oBAAoB,aAAa,KACjC,OAAO,eAAe,aAAa,GAAG;AACtC,eAAO,IAAK,OAAO,eAAe,iEAAkE,GAAG,EAAE;AAAA,MAC7G;AACA;AAAA,QAAeD;AAAA,QAAOC;AAAA,QAAK;AAAA,QAAO,WAAY;AAC1C,cAAI,CAAC,UAAU,CAAC,0BAA0B;AACtC,mBAAO,+KAGH,+BAAgC,OAAOA,MAAK,GAAI,GAAG,EAAE;AAAA,UAC7D;AAAA,QACJ;AAAA,QAAG;AAAA;AAAA,MAAkB;AAAA,IACzB,OACK;AACD;AAAA,QAAeD;AAAA,QAAOC;AAAA,QAAK;AAAA,QAAO;AAAA,QAAW;AAAA;AAAA,MAAkB;AAAA,IACnE;AAIA,QAAI,EAAEA,QAAO,KAAK;AACd,YAAM,IAAI,UAAUA,IAAG;AAAA,IAC3B;AAAA,EACJ;AACA,WAAS,OAAO,cAAc;AAC1B,YAAQ,GAAG;AAAA,EACf;AACA,kBAAgB,IAAI;AACxB;AACA,SAAS,SAAS,IAAI;AAClB,MAAI,OAAO,GAAG,SAAS;AACvB,SAAO,GAAG,QAAQ,WAAW,IAAI,IAAI,QAAQ,MAAM,EAAE,IAAI,QAAQ,CAAC;AAClE,MAAI,CAAC,cAAc,IAAI,GAAG;AACtB,WAAO,CAAC;AAAA,EAIZ;AAEA,MAAIP,QAAO,OAAO,KAAK,IAAI;AAC3B,MAAIM,SAAQ,GAAG,SAAS;AACxB,MAAI,UAAU,GAAG,SAAS;AAC1B,MAAI,IAAIN,MAAK;AACb,SAAO,KAAK;AACR,QAAI,MAAMA,MAAK,CAAC;AAChB,QAAI,OAAuC;AACvC,UAAI,WAAW,OAAO,SAAS,GAAG,GAAG;AACjC,eAAO,WAAY,OAAO,KAAK,gDAAiD,GAAG,EAAE;AAAA,MACzF;AAAA,IACJ;AACA,QAAIM,UAAS,OAAOA,QAAO,GAAG,GAAG;AAAA,IAIjC,WACS,CAAC,WAAW,GAAG,GAAG;AACvB,YAAM,IAAI,SAAS,GAAG;AAAA,IAC1B;AAAA,EACJ;AAEA,MAAI,KAAK,QAAQ,IAAI;AACrB,QAAM,GAAG;AACb;AACA,SAAS,QAAQ,MAAM,IAAI;AAEvB,aAAW;AACX,MAAI;AACA,WAAO,KAAK,KAAK,IAAI,EAAE;AAAA,EAC3B,SACO,GAAG;AACN,gBAAY,GAAG,IAAI,QAAQ;AAC3B,WAAO,CAAC;AAAA,EACZ,UACA;AACI,cAAU;AAAA,EACd;AACJ;AACA,IAAI,yBAAyB,EAAE,MAAM,KAAK;AAC1C,SAAS,eAAe,IAAI,UAAU;AAElC,MAAI,WAAY,GAAG,oBAAoB,uBAAO,OAAO,IAAI;AAEzD,MAAI,QAAQ,kBAAkB;AAC9B,WAAS,OAAO,UAAU;AACtB,QAAI,UAAU,SAAS,GAAG;AAC1B,QAAI,SAAS,WAAW,OAAO,IAAI,UAAU,QAAQ;AACrD,QAAI,OAAyD;AACzD,aAAO,4CAA6C,OAAO,KAAK,IAAK,GAAG,EAAE;AAAA,IAC9E;AACA,QAAI,CAAC,OAAO;AAER,eAAS,GAAG,IAAI,IAAI,QAAQ,IAAI,UAAUJ,OAAMA,OAAM,sBAAsB;AAAA,IAChF;AAIA,QAAI,EAAE,OAAO,KAAK;AACd,qBAAe,IAAI,KAAK,OAAO;AAAA,IACnC,WACS,OAAuC;AAC5C,UAAI,OAAO,GAAG,OAAO;AACjB,eAAO,0BAA2B,OAAO,KAAK,+BAAgC,GAAG,EAAE;AAAA,MACvF,WACS,GAAG,SAAS,SAAS,OAAO,GAAG,SAAS,OAAO;AACpD,eAAO,0BAA2B,OAAO,KAAK,iCAAkC,GAAG,EAAE;AAAA,MACzF,WACS,GAAG,SAAS,WAAW,OAAO,GAAG,SAAS,SAAS;AACxD,eAAO,0BAA2B,OAAO,KAAK,mCAAoC,GAAG,EAAE;AAAA,MAC3F;AAAA,IACJ;AAAA,EACJ;AACJ;AACA,SAAS,eAAeE,SAAQ,KAAK,SAAS;AAC1C,MAAI,cAAc,CAAC,kBAAkB;AACrC,MAAI,WAAW,OAAO,GAAG;AACrB,6BAAyB,MAAM,cACzB,qBAAqB,GAAG,IACxB,oBAAoB,OAAO;AACjC,6BAAyB,MAAMF;AAAA,EACnC,OACK;AACD,6BAAyB,MAAM,QAAQ,MACjC,eAAe,QAAQ,UAAU,QAC7B,qBAAqB,GAAG,IACxB,oBAAoB,QAAQ,GAAG,IACnCA;AACN,6BAAyB,MAAM,QAAQ,OAAOA;AAAA,EAClD;AACA,MAAI,OAAgF;AAChF,6BAAyB,MAAM,WAAY;AACvC,aAAO,sBAAuB,OAAO,KAAK,yCAA0C,GAAG,IAAI;AAAA,IAC/F;AAAA,EACJ;AACA,SAAO,eAAeE,SAAQ,KAAK,wBAAwB;AAC/D;AACA,SAAS,qBAAqB,KAAK;AAC/B,SAAO,SAAS,iBAAiB;AAC7B,QAAI,UAAU,KAAK,qBAAqB,KAAK,kBAAkB,GAAG;AAClE,QAAI,SAAS;AACT,UAAI,QAAQ,OAAO;AACf,gBAAQ,SAAS;AAAA,MACrB;AACA,UAAI,IAAI,QAAQ;AACZ,YAAI,OAA6D;AAC7D,cAAI,OAAO,QAAQ;AAAA,YACf,QAAQ,IAAI;AAAA,YACZ,QAAQ;AAAA,YACR,MAAM;AAAA,YACN;AAAA,UACJ,CAAC;AAAA,QACL;AACA,gBAAQ,OAAO;AAAA,MACnB;AACA,aAAO,QAAQ;AAAA,IACnB;AAAA,EACJ;AACJ;AACA,SAAS,oBAAoB,IAAI;AAC7B,SAAO,SAAS,iBAAiB;AAC7B,WAAO,GAAG,KAAK,MAAM,IAAI;AAAA,EAC7B;AACJ;AACA,SAAS,YAAY,IAAI,SAAS;AAC9B,MAAIE,SAAQ,GAAG,SAAS;AACxB,WAAS,OAAO,SAAS;AACrB,QAAI,OAAuC;AACvC,UAAI,OAAO,QAAQ,GAAG,MAAM,YAAY;AACpC,eAAO,WAAY,OAAO,KAAK,cAAgB,EAAE,OAAO,OAAO,QAAQ,GAAG,GAAG,iCAAkC,IAC3G,6CAA6C,EAAE;AAAA,MACvD;AACA,UAAIA,UAAS,OAAOA,QAAO,GAAG,GAAG;AAC7B,eAAO,WAAY,OAAO,KAAK,uCAAwC,GAAG,EAAE;AAAA,MAChF;AACA,UAAI,OAAO,MAAM,WAAW,GAAG,GAAG;AAC9B,eAAO,WAAY,OAAO,KAAK,oDAAqD,IAChF,0DAA0D;AAAA,MAClE;AAAA,IACJ;AACA,OAAG,GAAG,IAAI,OAAO,QAAQ,GAAG,MAAM,aAAaJ,QAAO,OAAO,QAAQ,GAAG,GAAG,EAAE;AAAA,EACjF;AACJ;AACA,SAAS,UAAU,IAAI,OAAO;AAC1B,WAAS,OAAO,OAAO;AACnB,QAAI,UAAU,MAAM,GAAG;AACvB,QAAI,QAAQ,OAAO,GAAG;AAClB,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACrC,sBAAc,IAAI,KAAK,QAAQ,CAAC,CAAC;AAAA,MACrC;AAAA,IACJ,OACK;AACD,oBAAc,IAAI,KAAK,OAAO;AAAA,IAClC;AAAA,EACJ;AACJ;AACA,SAAS,cAAc,IAAI,SAAS,SAAS,SAAS;AAClD,MAAI,cAAc,OAAO,GAAG;AACxB,cAAU;AACV,cAAU,QAAQ;AAAA,EACtB;AACA,MAAI,OAAO,YAAY,UAAU;AAC7B,cAAU,GAAG,OAAO;AAAA,EACxB;AACA,SAAO,GAAG,OAAO,SAAS,SAAS,OAAO;AAC9C;AACA,SAAS,WAAWM,MAAK;AAIrB,MAAI,UAAU,CAAC;AACf,UAAQ,MAAM,WAAY;AACtB,WAAO,KAAK;AAAA,EAChB;AACA,MAAI,WAAW,CAAC;AAChB,WAAS,MAAM,WAAY;AACvB,WAAO,KAAK;AAAA,EAChB;AACA,MAAI,OAAuC;AACvC,YAAQ,MAAM,WAAY;AACtB,aAAO,4EACoC,IAAI;AAAA,IACnD;AACA,aAAS,MAAM,WAAY;AACvB,aAAO,uBAAuB,IAAI;AAAA,IACtC;AAAA,EACJ;AACA,SAAO,eAAeA,KAAI,WAAW,SAAS,OAAO;AACrD,SAAO,eAAeA,KAAI,WAAW,UAAU,QAAQ;AACvD,EAAAA,KAAI,UAAU,OAAOC;AACrB,EAAAD,KAAI,UAAU,UAAU;AACxB,EAAAA,KAAI,UAAU,SAAS,SAAU,SAAS,IAAI,SAAS;AACnD,QAAI,KAAK;AACT,QAAI,cAAc,EAAE,GAAG;AACnB,aAAO,cAAc,IAAI,SAAS,IAAI,OAAO;AAAA,IACjD;AACA,cAAU,WAAW,CAAC;AACtB,YAAQ,OAAO;AACf,QAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,OAAO;AAClD,QAAI,QAAQ,WAAW;AACnB,UAAI,OAAO,mCAAoC,OAAO,QAAQ,YAAY,GAAI;AAC9E,iBAAW;AACX,8BAAwB,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,IAAI,IAAI;AACzD,gBAAU;AAAA,IACd;AACA,WAAO,SAAS,YAAY;AACxB,cAAQ,SAAS;AAAA,IACrB;AAAA,EACJ;AACJ;AAEA,SAAS,YAAY,IAAI;AACrB,MAAI,gBAAgB,GAAG,SAAS;AAChC,MAAI,eAAe;AACf,QAAI,WAAW,WAAW,aAAa,IACjC,cAAc,KAAK,EAAE,IACrB;AACN,QAAI,CAAC,SAAS,QAAQ,GAAG;AACrB;AAAA,IACJ;AACA,QAAI,SAAS,gBAAgB,EAAE;AAG/B,QAAIR,QAAO,YAAY,QAAQ,QAAQ,QAAQ,IAAI,OAAO,KAAK,QAAQ;AACvE,aAAS,IAAI,GAAG,IAAIA,MAAK,QAAQ,KAAK;AAClC,UAAI,MAAMA,MAAK,CAAC;AAChB,aAAO,eAAe,QAAQ,KAAK,OAAO,yBAAyB,UAAU,GAAG,CAAC;AAAA,IACrF;AAAA,EACJ;AACJ;AACA,SAAS,eAAe,IAAI;AACxB,MAAI,SAAS,cAAc,GAAG,SAAS,QAAQ,EAAE;AACjD,MAAI,QAAQ;AACR,oBAAgB,KAAK;AACrB,WAAO,KAAK,MAAM,EAAE,QAAQ,SAAU,KAAK;AAEvC,UAAI,OAAuC;AACvC,uBAAe,IAAI,KAAK,OAAO,GAAG,GAAG,WAAY;AAC7C,iBAAO,iIAEH,6BAA8B,OAAO,KAAK,GAAI,GAAG,EAAE;AAAA,QAC3D,CAAC;AAAA,MACL,OACK;AACD,uBAAe,IAAI,KAAK,OAAO,GAAG,CAAC;AAAA,MACvC;AAAA,IACJ,CAAC;AACD,oBAAgB,IAAI;AAAA,EACxB;AACJ;AACA,SAAS,cAAc,QAAQ,IAAI;AAC/B,MAAI,QAAQ;AAER,QAAI,SAAS,uBAAO,OAAO,IAAI;AAC/B,QAAIA,QAAO,YAAY,QAAQ,QAAQ,MAAM,IAAI,OAAO,KAAK,MAAM;AACnE,aAAS,IAAI,GAAG,IAAIA,MAAK,QAAQ,KAAK;AAClC,UAAI,MAAMA,MAAK,CAAC;AAEhB,UAAI,QAAQ;AACR;AACJ,UAAI,aAAa,OAAO,GAAG,EAAE;AAC7B,UAAI,cAAc,GAAG,WAAW;AAC5B,eAAO,GAAG,IAAI,GAAG,UAAU,UAAU;AAAA,MACzC,WACS,aAAa,OAAO,GAAG,GAAG;AAC/B,YAAI,iBAAiB,OAAO,GAAG,EAAE;AACjC,eAAO,GAAG,IAAI,WAAW,cAAc,IACjC,eAAe,KAAK,EAAE,IACtB;AAAA,MACV,WACS,OAAuC;AAC5C,eAAO,cAAe,OAAO,KAAK,aAAc,GAAG,EAAE;AAAA,MACzD;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AACJ;AAEA,IAAI,MAAM;AACV,SAAS,YAAYQ,MAAK;AACtB,EAAAA,KAAI,UAAU,QAAQ,SAAU,SAAS;AACrC,QAAI,KAAK;AAET,OAAG,OAAO;AACV,QAAI,UAAUE;AAEd,QAAI,OAAqE;AACrE,iBAAW,kBAAkB,OAAO,GAAG,IAAI;AAC3C,MAAAA,UAAS,gBAAgB,OAAO,GAAG,IAAI;AACvC,WAAK,QAAQ;AAAA,IACjB;AAGA,OAAG,SAAS;AAEZ,OAAG,WAAW;AAEd,OAAG,SAAS,IAAI;AAAA,MAAY;AAAA;AAAA,IAAmB;AAG/C,OAAG,OAAO,SAAS;AACnB,OAAG,OAAO,MAAM;AAEhB,QAAI,WAAW,QAAQ,cAAc;AAIjC,4BAAsB,IAAI,OAAO;AAAA,IACrC,OACK;AACD,SAAG,WAAW,aAAa,0BAA0B,GAAG,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;AAAA,IAC3F;AAEA,QAAI,OAAuC;AACvC,gBAAU,EAAE;AAAA,IAChB,OACK;AACD,SAAG,eAAe;AAAA,IACtB;AAEA,OAAG,QAAQ;AACX,kBAAc,EAAE;AAChB,eAAW,EAAE;AACb,eAAW,EAAE;AACb;AAAA,MAAW;AAAA,MAAI;AAAA,MAAgB;AAAA,MAAW;AAAA;AAAA,IAAsB;AAChE,mBAAe,EAAE;AACjB,cAAU,EAAE;AACZ,gBAAY,EAAE;AACd,eAAW,IAAI,SAAS;AAExB,QAAI,OAAqE;AACrE,SAAG,QAAQ,oBAAoB,IAAI,KAAK;AACxC,WAAKA,OAAM;AACX,cAAQ,OAAO,OAAO,GAAG,OAAO,OAAO,GAAG,UAAUA,OAAM;AAAA,IAC9D;AACA,QAAI,GAAG,SAAS,IAAI;AAChB,SAAG,OAAO,GAAG,SAAS,EAAE;AAAA,IAC5B;AAAA,EACJ;AACJ;AACA,SAAS,sBAAsB,IAAI,SAAS;AACxC,MAAIL,QAAQ,GAAG,WAAW,OAAO,OAAO,GAAG,YAAY,OAAO;AAE9D,MAAI,cAAc,QAAQ;AAC1B,EAAAA,MAAK,SAAS,QAAQ;AACtB,EAAAA,MAAK,eAAe;AACpB,MAAI,wBAAwB,YAAY;AACxC,EAAAA,MAAK,YAAY,sBAAsB;AACvC,EAAAA,MAAK,mBAAmB,sBAAsB;AAC9C,EAAAA,MAAK,kBAAkB,sBAAsB;AAC7C,EAAAA,MAAK,gBAAgB,sBAAsB;AAC3C,MAAI,QAAQ,QAAQ;AAChB,IAAAA,MAAK,SAAS,QAAQ;AACtB,IAAAA,MAAK,kBAAkB,QAAQ;AAAA,EACnC;AACJ;AACA,SAAS,0BAA0B,MAAM;AACrC,MAAI,UAAU,KAAK;AACnB,MAAI,KAAK,OAAO;AACZ,QAAI,eAAe,0BAA0B,KAAK,KAAK;AACvD,QAAI,qBAAqB,KAAK;AAC9B,QAAI,iBAAiB,oBAAoB;AAGrC,WAAK,eAAe;AAEpB,UAAI,kBAAkB,uBAAuB,IAAI;AAEjD,UAAI,iBAAiB;AACjB,QAAAM,QAAO,KAAK,eAAe,eAAe;AAAA,MAC9C;AACA,gBAAU,KAAK,UAAU,aAAa,cAAc,KAAK,aAAa;AACtE,UAAI,QAAQ,MAAM;AACd,gBAAQ,WAAW,QAAQ,IAAI,IAAI;AAAA,MACvC;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;AACA,SAAS,uBAAuB,MAAM;AAClC,MAAI;AACJ,MAAI,SAAS,KAAK;AAClB,MAAI,SAAS,KAAK;AAClB,WAAS,OAAO,QAAQ;AACpB,QAAI,OAAO,GAAG,MAAM,OAAO,GAAG,GAAG;AAC7B,UAAI,CAAC;AACD,mBAAW,CAAC;AAChB,eAAS,GAAG,IAAI,OAAO,GAAG;AAAA,IAC9B;AAAA,EACJ;AACA,SAAO;AACX;AAEA,SAAS,wBAAwB,MAAML,QAAOM,WAAU,QAAQ,MAAM;AAClE,MAAI,QAAQ;AACZ,MAAI,UAAU,KAAK;AAGnB,MAAI;AACJ,MAAI,OAAO,QAAQ,MAAM,GAAG;AACxB,gBAAY,OAAO,OAAO,MAAM;AAChC,cAAU,YAAY;AAAA,EAC1B,OACK;AAID,gBAAY;AAEZ,aAAS,OAAO;AAAA,EACpB;AACA,MAAI,aAAa,OAAO,QAAQ,SAAS;AACzC,MAAI,oBAAoB,CAAC;AACzB,OAAK,OAAO;AACZ,OAAK,QAAQN;AACb,OAAK,WAAWM;AAChB,OAAK,SAAS;AACd,OAAK,YAAY,KAAK,MAAM;AAC5B,OAAK,aAAa,cAAc,QAAQ,QAAQ,MAAM;AACtD,OAAK,QAAQ,WAAY;AACrB,QAAI,CAAC,MAAM,QAAQ;AACf,2BAAqB,QAAQ,KAAK,aAAc,MAAM,SAAS,aAAaA,WAAU,MAAM,CAAE;AAAA,IAClG;AACA,WAAO,MAAM;AAAA,EACjB;AACA,SAAO,eAAe,MAAM,eAAe;AAAA,IACvC,YAAY;AAAA,IACZ,KAAK,WAAY;AACb,aAAO,qBAAqB,QAAQ,KAAK,aAAa,KAAK,MAAM,CAAC;AAAA,IACtE;AAAA,EACJ,CAAC;AAED,MAAI,YAAY;AAEZ,SAAK,WAAW;AAEhB,SAAK,SAAS,KAAK,MAAM;AACzB,SAAK,eAAe,qBAAqB,QAAQ,KAAK,aAAa,KAAK,MAAM;AAAA,EAClF;AACA,MAAI,QAAQ,UAAU;AAClB,SAAK,KAAK,SAAU,GAAG,GAAG,GAAG,GAAG;AAC5B,UAAI,QAAQ,gBAAgB,WAAW,GAAG,GAAG,GAAG,GAAG,iBAAiB;AACpE,UAAI,SAAS,CAAC,QAAQ,KAAK,GAAG;AAC1B,cAAM,YAAY,QAAQ;AAC1B,cAAM,YAAY;AAAA,MACtB;AACA,aAAO;AAAA,IACX;AAAA,EACJ,OACK;AACD,SAAK,KAAK,SAAU,GAAG,GAAG,GAAG,GAAG;AAC5B,aAAO,gBAAgB,WAAW,GAAG,GAAG,GAAG,GAAG,iBAAiB;AAAA,IACnE;AAAA,EACJ;AACJ;AACA,qBAAqB,wBAAwB,SAAS;AACtD,SAAS,0BAA0B,MAAM,WAAW,MAAM,WAAWA,WAAU;AAC3E,MAAI,UAAU,KAAK;AACnB,MAAIN,SAAQ,CAAC;AACb,MAAI,cAAc,QAAQ;AAC1B,MAAI,MAAM,WAAW,GAAG;AACpB,aAAS,OAAO,aAAa;AACzB,MAAAA,OAAM,GAAG,IAAI,aAAa,KAAK,aAAa,aAAa,WAAW;AAAA,IACxE;AAAA,EACJ,OACK;AACD,QAAI,MAAM,KAAK,KAAK;AAChB,iBAAWA,QAAO,KAAK,KAAK;AAChC,QAAI,MAAM,KAAK,KAAK;AAChB,iBAAWA,QAAO,KAAK,KAAK;AAAA,EACpC;AACA,MAAI,gBAAgB,IAAI,wBAAwB,MAAMA,QAAOM,WAAU,WAAW,IAAI;AACtF,MAAI,QAAQ,QAAQ,OAAO,KAAK,MAAM,cAAc,IAAI,aAAa;AACrE,MAAI,iBAAiB,OAAO;AACxB,WAAO,6BAA6B,OAAO,MAAM,cAAc,QAAQ,SAAS,aAAa;AAAA,EACjG,WACS,QAAQ,KAAK,GAAG;AACrB,QAAI,SAAS,kBAAkB,KAAK,KAAK,CAAC;AAC1C,QAAI,MAAM,IAAI,MAAM,OAAO,MAAM;AACjC,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACpC,UAAI,CAAC,IAAI,6BAA6B,OAAO,CAAC,GAAG,MAAM,cAAc,QAAQ,SAAS,aAAa;AAAA,IACvG;AACA,WAAO;AAAA,EACX;AACJ;AACA,SAAS,6BAA6B,OAAO,MAAM,WAAW,SAAS,eAAe;AAIlF,MAAIC,SAAQ,WAAW,KAAK;AAC5B,EAAAA,OAAM,YAAY;AAClB,EAAAA,OAAM,YAAY;AAClB,MAAI,OAAuC;AACvC,KAACA,OAAM,eAAeA,OAAM,gBAAgB,CAAC,GAAG,gBAC5C;AAAA,EACR;AACA,MAAI,KAAK,MAAM;AACX,KAACA,OAAM,SAASA,OAAM,OAAO,CAAC,IAAI,OAAO,KAAK;AAAA,EAClD;AACA,SAAOA;AACX;AACA,SAAS,WAAW,IAAI,MAAM;AAC1B,WAAS,OAAO,MAAM;AAClB,OAAG,SAAS,GAAG,CAAC,IAAI,KAAK,GAAG;AAAA,EAChC;AACJ;AAEA,SAAS,iBAAiB,SAAS;AAC/B,SAAO,QAAQ,QAAQ,QAAQ,UAAU,QAAQ;AACrD;AAEA,IAAI,sBAAsB;AAAA,EACtB,MAAM,SAAU,OAAO,WAAW;AAC9B,QAAI,MAAM,qBACN,CAAC,MAAM,kBAAkB,gBACzB,MAAM,KAAK,WAAW;AAEtB,UAAI,cAAc;AAClB,0BAAoB,SAAS,aAAa,WAAW;AAAA,IACzD,OACK;AACD,UAAI,QAAS,MAAM,oBAAoB,gCAAgC,OAAO,cAAc;AAC5F,YAAM,OAAO,YAAY,MAAM,MAAM,QAAW,SAAS;AAAA,IAC7D;AAAA,EACJ;AAAA,EACA,UAAU,SAAU,UAAU,OAAO;AACjC,QAAI,UAAU,MAAM;AACpB,QAAI,QAAS,MAAM,oBAAoB,SAAS;AAChD;AAAA,MAAqB;AAAA,MAAO,QAAQ;AAAA;AAAA,MACpC,QAAQ;AAAA;AAAA,MACR;AAAA;AAAA,MACA,QAAQ;AAAA;AAAA,IACR;AAAA,EACJ;AAAA,EACA,QAAQ,SAAU,OAAO;AACrB,QAAI,UAAU,MAAM,SAAS,oBAAoB,MAAM;AACvD,QAAI,CAAC,kBAAkB,YAAY;AAC/B,wBAAkB,aAAa;AAC/B,iBAAW,mBAAmB,SAAS;AAAA,IAC3C;AACA,QAAI,MAAM,KAAK,WAAW;AACtB,UAAI,QAAQ,YAAY;AAMpB,gCAAwB,iBAAiB;AAAA,MAC7C,OACK;AACD;AAAA,UAAuB;AAAA,UAAmB;AAAA;AAAA,QAAiB;AAAA,MAC/D;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,SAAS,SAAU,OAAO;AACtB,QAAI,oBAAoB,MAAM;AAC9B,QAAI,CAAC,kBAAkB,cAAc;AACjC,UAAI,CAAC,MAAM,KAAK,WAAW;AACvB,0BAAkB,SAAS;AAAA,MAC/B,OACK;AACD;AAAA,UAAyB;AAAA,UAAmB;AAAA;AAAA,QAAiB;AAAA,MACjE;AAAA,IACJ;AAAA,EACJ;AACJ;AACA,IAAI,eAAe,OAAO,KAAK,mBAAmB;AAClD,SAAS,gBAAgB,MAAM,MAAM,SAASD,WAAU,KAAK;AACzD,MAAI,QAAQ,IAAI,GAAG;AACf;AAAA,EACJ;AACA,MAAI,WAAW,QAAQ,SAAS;AAEhC,MAAI,SAAS,IAAI,GAAG;AAChB,WAAO,SAAS,OAAO,IAAI;AAAA,EAC/B;AAGA,MAAI,OAAO,SAAS,YAAY;AAC5B,QAAI,OAAuC;AACvC,aAAO,iCAAiC,OAAO,OAAO,IAAI,CAAC,GAAG,OAAO;AAAA,IACzE;AACA;AAAA,EACJ;AAEA,MAAI;AAEJ,MAAI,QAAQ,KAAK,GAAG,GAAG;AACnB,mBAAe;AACf,WAAO,sBAAsB,cAAc,QAAQ;AACnD,QAAI,SAAS,QAAW;AAIpB,aAAO,uBAAuB,cAAc,MAAM,SAASA,WAAU,GAAG;AAAA,IAC5E;AAAA,EACJ;AACA,SAAO,QAAQ,CAAC;AAGhB,4BAA0B,IAAI;AAE9B,MAAI,MAAM,KAAK,KAAK,GAAG;AAEnB,mBAAe,KAAK,SAAS,IAAI;AAAA,EACrC;AAGA,MAAI,YAAY,0BAA0B,MAAM,MAAM,GAAG;AAGzD,MAAI,OAAO,KAAK,QAAQ,UAAU,GAAG;AACjC,WAAO,0BAA0B,MAAM,WAAW,MAAM,SAASA,SAAQ;AAAA,EAC7E;AAGA,MAAI,YAAY,KAAK;AAGrB,OAAK,KAAK,KAAK;AAEf,MAAI,OAAO,KAAK,QAAQ,QAAQ,GAAG;AAI/B,QAAI,OAAO,KAAK;AAChB,WAAO,CAAC;AACR,QAAI,MAAM;AACN,WAAK,OAAO;AAAA,IAChB;AAAA,EACJ;AAEA,wBAAsB,IAAI;AAG1B,MAAI,OAAO,iBAAiB,KAAK,OAAO,KAAK;AAC7C,MAAI,QAAQ,IAAI;AAAA;AAAA,IAEhB,iBAAiB,OAAO,KAAK,GAAG,EAAE,OAAO,OAAO,IAAI,OAAO,IAAI,IAAI,EAAE;AAAA,IAAG;AAAA,IAAM;AAAA,IAAW;AAAA,IAAW;AAAA,IAAW;AAAA;AAAA,IAE/G,EAAE,MAAY,WAAsB,WAAsB,KAAU,UAAUA,UAAS;AAAA,IAAG;AAAA,EAAY;AACtG,SAAO;AACX;AACA,SAAS,gCAET,OAEA,QAAQ;AACJ,MAAI,UAAU;AAAA,IACV,cAAc;AAAA,IACd,cAAc;AAAA,IACd;AAAA,EACJ;AAEA,MAAI,iBAAiB,MAAM,KAAK;AAChC,MAAI,MAAM,cAAc,GAAG;AACvB,YAAQ,SAAS,eAAe;AAChC,YAAQ,kBAAkB,eAAe;AAAA,EAC7C;AACA,SAAO,IAAI,MAAM,iBAAiB,KAAK,OAAO;AAClD;AACA,SAAS,sBAAsB,MAAM;AACjC,MAAIE,SAAQ,KAAK,SAAS,KAAK,OAAO,CAAC;AACvC,WAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;AAC1C,QAAI,MAAM,aAAa,CAAC;AACxB,QAAI,WAAWA,OAAM,GAAG;AACxB,QAAI,UAAU,oBAAoB,GAAG;AAErC,QAAI,aAAa,WAAW,EAAE,YAAY,SAAS,UAAU;AACzD,MAAAA,OAAM,GAAG,IAAI,WAAW,UAAU,SAAS,QAAQ,IAAI;AAAA,IAC3D;AAAA,EACJ;AACJ;AACA,SAAS,UAAU,IAAI,IAAI;AACvB,MAAI,SAAS,SAAU,GAAG,GAAG;AAEzB,OAAG,GAAG,CAAC;AACP,OAAG,GAAG,CAAC;AAAA,EACX;AACA,SAAO,UAAU;AACjB,SAAO;AACX;AAGA,SAAS,eAAe,SAAS,MAAM;AACnC,MAAI,OAAQ,QAAQ,SAAS,QAAQ,MAAM,QAAS;AACpD,MAAI,QAAS,QAAQ,SAAS,QAAQ,MAAM,SAAU;AACtD,GAAC,KAAK,UAAU,KAAK,QAAQ,CAAC,IAAI,IAAI,IAAI,KAAK,MAAM;AACrD,MAAIC,MAAK,KAAK,OAAO,KAAK,KAAK,CAAC;AAChC,MAAI,WAAWA,IAAG,KAAK;AACvB,MAAI,WAAW,KAAK,MAAM;AAC1B,MAAI,MAAM,QAAQ,GAAG;AACjB,QAAI,QAAQ,QAAQ,IACd,SAAS,QAAQ,QAAQ,MAAM,KAC/B,aAAa,UAAU;AACzB,MAAAA,IAAG,KAAK,IAAI,CAAC,QAAQ,EAAE,OAAO,QAAQ;AAAA,IAC1C;AAAA,EACJ,OACK;AACD,IAAAA,IAAG,KAAK,IAAI;AAAA,EAChB;AACJ;AAEA,IAAI,SAASb;AAIb,IAAI,OAAuC;AACnC,iBAAe,OAAO,YAAY;AAClC,iBAAe;AACf,eAAa,SAAUc,MAAK;AAC5B,WAAOA,KAAI,QAAQ,cAAc,SAAU,GAAG;AAAE,aAAO,EAAE,YAAY;AAAA,IAAG,CAAC,EAAE,QAAQ,SAAS,EAAE;AAAA,EAClG;AACA,WAAS,SAAU,KAAK,IAAI;AACxB,QAAI,OAAO,QAAQ;AAAE,WAAK;AAAA,IAAiB;AAC3C,QAAI,QAAQ,KAAK,uBAAuB,EAAE,IAAI;AAC9C,QAAI,OAAO,aAAa;AACpB,aAAO,YAAY,KAAK,MAAM,KAAK,IAAI,KAAK;AAAA,IAChD,WACS,gBAAgB,CAAC,OAAO,QAAQ;AACrC,cAAQ,MAAM,eAAe,OAAO,GAAG,EAAE,OAAO,KAAK,CAAC;AAAA,IAC1D;AAAA,EACJ;AACA,QAAM,SAAU,KAAK,IAAI;AACrB,QAAI,gBAAgB,CAAC,OAAO,QAAQ;AAChC,cAAQ,KAAK,cAAc,OAAO,GAAG,KAAK,KAAK,uBAAuB,EAAE,IAAI,GAAG;AAAA,IACnF;AAAA,EACJ;AACA,wBAAsB,SAAU,IAAI,aAAa;AAC7C,QAAI,GAAG,UAAU,IAAI;AACjB,aAAO;AAAA,IACX;AACA,QAAI,UAAU,WAAW,EAAE,KAAK,GAAG,OAAO,OACpC,GAAG,UACH,GAAG,SACC,GAAG,YAAY,GAAG,YAAY,UAC9B;AACV,QAAI,OAAO,iBAAiB,OAAO;AACnC,QAAI,OAAO,QAAQ;AACnB,QAAI,CAAC,QAAQ,MAAM;AACf,UAAIC,SAAQ,KAAK,MAAM,iBAAiB;AACxC,aAAOA,UAASA,OAAM,CAAC;AAAA,IAC3B;AACA,YAAS,OAAO,IAAI,OAAO,WAAW,IAAI,GAAG,GAAG,IAAI,kBAC/C,QAAQ,gBAAgB,QAAQ,OAAO,OAAO,IAAI,IAAI;AAAA,EAC/D;AACI,aAAW,SAAUD,MAAK,GAAG;AAC7B,QAAI,MAAM;AACV,WAAO,GAAG;AACN,UAAI,IAAI,MAAM;AACV,eAAOA;AACX,UAAI,IAAI;AACJ,QAAAA,QAAOA;AACX,YAAM;AAAA,IACV;AACA,WAAO;AAAA,EACX;AACA,2BAAyB,SAAU,IAAI;AACnC,QAAI,GAAG,UAAU,GAAG,SAAS;AACzB,UAAI,OAAO,CAAC;AACZ,UAAI,2BAA2B;AAC/B,aAAO,IAAI;AACP,YAAI,KAAK,SAAS,GAAG;AACjB,cAAI,OAAO,KAAK,KAAK,SAAS,CAAC;AAC/B,cAAI,KAAK,gBAAgB,GAAG,aAAa;AACrC;AACA,iBAAK,GAAG;AACR;AAAA,UACJ,WACS,2BAA2B,GAAG;AACnC,iBAAK,KAAK,SAAS,CAAC,IAAI,CAAC,MAAM,wBAAwB;AACvD,uCAA2B;AAAA,UAC/B;AAAA,QACJ;AACA,aAAK,KAAK,EAAE;AACZ,aAAK,GAAG;AAAA,MACZ;AACA,aAAQ,qBACJ,KACK,IAAI,SAAUE,KAAI,GAAG;AACtB,eAAO,GAAG,OAAO,MAAM,IAAI,UAAU,SAAS,KAAK,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO,QAAQA,GAAE,IAC1E,GAAG,OAAO,oBAAoBA,IAAG,CAAC,CAAC,GAAG,OAAO,EAAE,OAAOA,IAAG,CAAC,GAAG,mBAAmB,IAChF,oBAAoBA,GAAE,CAAC;AAAA,MACjC,CAAC,EACI,KAAK,IAAI;AAAA,IACtB,OACK;AACD,aAAO,iBAAiB,OAAO,oBAAoB,EAAE,GAAG,GAAG;AAAA,IAC/D;AAAA,EACJ;AACJ;AAlFQ;AACA;AACA;AAoCA;AAmDR,IAAI,SAAS,OAAO;AAIpB,IAAI,OAAuC;AACvC,SAAO,KAAK,OAAO,YAAY,SAAU,QAAQ,OAAO,IAAI,KAAK;AAC7D,QAAI,CAAC,IAAI;AACL,aAAO,WAAY,OAAO,KAAK,qCAAsC,IACjE,kCAAkC;AAAA,IAC1C;AACA,WAAO,aAAa,QAAQ,KAAK;AAAA,EACrC;AACJ;AAIA,SAAS,UAAU,IAAI,MAAM,WAAW;AACpC,MAAI,cAAc,QAAQ;AAAE,gBAAY;AAAA,EAAM;AAC9C,MAAI,CAAC;AACD,WAAO;AACX,MAAI,KAAK,OAAO;AAChB,MAAIC,QAAO,YACL,QAAQ,QAAQ,IAAI,IACpB,OAAO,KAAK,IAAI;AACtB,WAAS,IAAI,GAAG,IAAIA,MAAK,QAAQ,KAAK;AAClC,UAAMA,MAAK,CAAC;AAEZ,QAAI,QAAQ;AACR;AACJ,YAAQ,GAAG,GAAG;AACd,cAAU,KAAK,GAAG;AAClB,QAAI,CAAC,aAAa,CAAC,OAAO,IAAI,GAAG,GAAG;AAChC,MAAAC,KAAI,IAAI,KAAK,OAAO;AAAA,IACxB,WACS,UAAU,WACf,cAAc,KAAK,KACnB,cAAc,OAAO,GAAG;AACxB,gBAAU,OAAO,OAAO;AAAA,IAC5B;AAAA,EACJ;AACA,SAAO;AACX;AAIA,SAAS,cAAc,WAAW,UAAU,IAAI;AAC5C,MAAI,CAAC,IAAI;AAEL,QAAI,CAAC,UAAU;AACX,aAAO;AAAA,IACX;AACA,QAAI,CAAC,WAAW;AACZ,aAAO;AAAA,IACX;AAMA,WAAO,SAAS,eAAe;AAC3B,aAAO,UAAU,WAAW,QAAQ,IAAI,SAAS,KAAK,MAAM,IAAI,IAAI,UAAU,WAAW,SAAS,IAAI,UAAU,KAAK,MAAM,IAAI,IAAI,SAAS;AAAA,IAChJ;AAAA,EACJ,OACK;AACD,WAAO,SAAS,uBAAuB;AAEnC,UAAI,eAAe,WAAW,QAAQ,IAChC,SAAS,KAAK,IAAI,EAAE,IACpB;AACN,UAAI,cAAc,WAAW,SAAS,IAChC,UAAU,KAAK,IAAI,EAAE,IACrB;AACN,UAAI,cAAc;AACd,eAAO,UAAU,cAAc,WAAW;AAAA,MAC9C,OACK;AACD,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AACJ;AACA,OAAO,OAAO,SAAU,WAAW,UAAU,IAAI;AAC7C,MAAI,CAAC,IAAI;AACL,QAAI,YAAY,OAAO,aAAa,YAAY;AAK5C,aAAO;AAAA,IACX;AACA,WAAO,cAAc,WAAW,QAAQ;AAAA,EAC5C;AACA,SAAO,cAAc,WAAW,UAAU,EAAE;AAChD;AAIA,SAAS,mBAAmB,WAAW,UAAU;AAC7C,MAAI,MAAM,WACJ,YACI,UAAU,OAAO,QAAQ,IACzB,QAAQ,QAAQ,IACZ,WACA,CAAC,QAAQ,IACjB;AACN,SAAO,MAAM,YAAY,GAAG,IAAI;AACpC;AACA,SAAS,YAAYC,QAAO;AACxB,MAAI,MAAM,CAAC;AACX,WAAS,IAAI,GAAG,IAAIA,OAAM,QAAQ,KAAK;AACnC,QAAI,IAAI,QAAQA,OAAM,CAAC,CAAC,MAAM,IAAI;AAC9B,UAAI,KAAKA,OAAM,CAAC,CAAC;AAAA,IACrB;AAAA,EACJ;AACA,SAAO;AACX;AACA,gBAAgB,QAAQ,SAAU,MAAM;AACpC,SAAO,IAAI,IAAI;AACnB,CAAC;AAQD,SAAS,YAAY,WAAW,UAAU,IAAI,KAAK;AAC/C,MAAI,MAAM,OAAO,OAAO,aAAa,IAAI;AACzC,MAAI,UAAU;AAEV,WAAOC,QAAO,KAAK,QAAQ;AAAA,EAC/B,OACK;AACD,WAAO;AAAA,EACX;AACJ;AACA,YAAY,QAAQ,SAAUC,OAAM;AAChC,SAAOA,QAAO,GAAG,IAAI;AACzB,CAAC;AAOD,OAAO,QAAQ,SAAU,WAAW,UAAU,IAAI,KAAK;AAGnD,MAAI,cAAc;AACd,gBAAY;AAEhB,MAAI,aAAa;AACb,eAAW;AAEf,MAAI,CAAC;AACD,WAAO,OAAO,OAAO,aAAa,IAAI;AAC1C,MAAI,OAAuC;AACvC,qBAAiB,KAAK,UAAU,EAAE;AAAA,EACtC;AACA,MAAI,CAAC;AACD,WAAO;AACX,MAAI,MAAM,CAAC;AACX,EAAAD,QAAO,KAAK,SAAS;AACrB,WAAS,SAAS,UAAU;AACxB,QAAI,WAAW,IAAI,KAAK;AACxB,QAAI,QAAQ,SAAS,KAAK;AAC1B,QAAI,YAAY,CAAC,QAAQ,QAAQ,GAAG;AAChC,iBAAW,CAAC,QAAQ;AAAA,IACxB;AACA,QAAI,KAAK,IAAI,WAAW,SAAS,OAAO,KAAK,IAAI,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,EACpF;AACA,SAAO;AACX;AAIA,OAAO,QACH,OAAO,UACH,OAAO,SACH,OAAO,WACH,SAAU,WAAW,UAAU,IAAI,KAAK;AACpC,MAAI,YAAY,OAAuC;AACnD,qBAAiB,KAAK,UAAU,EAAE;AAAA,EACtC;AACA,MAAI,CAAC;AACD,WAAO;AACX,MAAI,MAAM,uBAAO,OAAO,IAAI;AAC5B,EAAAA,QAAO,KAAK,SAAS;AACrB,MAAI;AACA,IAAAA,QAAO,KAAK,QAAQ;AACxB,SAAO;AACX;AAChB,OAAO,UAAU,SAAU,WAAW,UAAU;AAC5C,MAAI,CAAC;AACD,WAAO;AACX,SAAO,WAAY;AACf,QAAI,MAAM,uBAAO,OAAO,IAAI;AAC5B,cAAU,KAAK,WAAW,SAAS,IAAI,UAAU,KAAK,IAAI,IAAI,SAAS;AACvE,QAAI,UAAU;AACV;AAAA,QAAU;AAAA,QAAK,WAAW,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI;AAAA,QAAU;AAAA;AAAA,MACtE;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AACJ;AAIA,IAAI,eAAe,SAAU,WAAW,UAAU;AAC9C,SAAO,aAAa,SAAY,YAAY;AAChD;AA0BA,SAAS,eAAe,SAAS,IAAI;AACjC,MAAIE,SAAQ,QAAQ;AACpB,MAAI,CAACA;AACD;AACJ,MAAI,MAAM,CAAC;AACX,MAAI,GAAG,KAAK;AACZ,MAAI,QAAQA,MAAK,GAAG;AAChB,QAAIA,OAAM;AACV,WAAO,KAAK;AACR,YAAMA,OAAM,CAAC;AACb,UAAI,OAAO,QAAQ,UAAU;AACzB,eAAO,SAAS,GAAG;AACnB,YAAI,IAAI,IAAI,EAAE,MAAM,KAAK;AAAA,MAC7B,WACS,OAAuC;AAC5C,eAAO,gDAAgD;AAAA,MAC3D;AAAA,IACJ;AAAA,EACJ,WACS,cAAcA,MAAK,GAAG;AAC3B,aAAS,OAAOA,QAAO;AACnB,YAAMA,OAAM,GAAG;AACf,aAAO,SAAS,GAAG;AACnB,UAAI,IAAI,IAAI,cAAc,GAAG,IAAI,MAAM,EAAE,MAAM,IAAI;AAAA,IACvD;AAAA,EACJ,WACS,OAAuC;AAC5C,WAAO,uEACH,WAAW,OAAO,UAAUA,MAAK,GAAG,GAAG,GAAG,EAAE;AAAA,EACpD;AACA,UAAQ,QAAQ;AACpB;AAIA,SAAS,gBAAgB,SAAS,IAAI;AAClC,MAAI,SAAS,QAAQ;AACrB,MAAI,CAAC;AACD;AACJ,MAAI,aAAc,QAAQ,SAAS,CAAC;AACpC,MAAI,QAAQ,MAAM,GAAG;AACjB,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACpC,iBAAW,OAAO,CAAC,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,EAAE;AAAA,IAC9C;AAAA,EACJ,WACS,cAAc,MAAM,GAAG;AAC5B,aAAS,OAAO,QAAQ;AACpB,UAAI,MAAM,OAAO,GAAG;AACpB,iBAAW,GAAG,IAAI,cAAc,GAAG,IAC7BC,QAAO,EAAE,MAAM,IAAI,GAAG,GAAG,IACzB,EAAE,MAAM,IAAI;AAAA,IACtB;AAAA,EACJ,WACS,OAAuC;AAC5C,WAAO,wEACH,WAAW,OAAO,UAAU,MAAM,GAAG,GAAG,GAAG,EAAE;AAAA,EACrD;AACJ;AAIA,SAAS,sBAAsB,SAAS;AACpC,MAAI,OAAO,QAAQ;AACnB,MAAI,MAAM;AACN,aAAS,OAAO,MAAM;AAClB,UAAIC,OAAM,KAAK,GAAG;AAClB,UAAI,WAAWA,IAAG,GAAG;AACjB,aAAK,GAAG,IAAI,EAAE,MAAMA,MAAK,QAAQA,KAAI;AAAA,MACzC;AAAA,IACJ;AAAA,EACJ;AACJ;AAWA,SAAS,aAAa,QAAQ,OAAO,IAAI;AACrC,MAAI,OAAuC;AACvC,oBAAgB,KAAK;AAAA,EACzB;AACA,MAAI,WAAW,KAAK,GAAG;AAEnB,YAAQ,MAAM;AAAA,EAClB;AACA,iBAAe,OAAO,EAAE;AACxB,kBAAgB,OAAO,EAAE;AACzB,wBAAsB,KAAK;AAK3B,MAAI,CAAC,MAAM,OAAO;AACd,QAAI,MAAM,SAAS;AACf,eAAS,aAAa,QAAQ,MAAM,SAAS,EAAE;AAAA,IACnD;AACA,QAAI,MAAM,QAAQ;AACd,eAAS,IAAI,GAAG,IAAI,MAAM,OAAO,QAAQ,IAAI,GAAG,KAAK;AACjD,iBAAS,aAAa,QAAQ,MAAM,OAAO,CAAC,GAAG,EAAE;AAAA,MACrD;AAAA,IACJ;AAAA,EACJ;AACA,MAAI,UAAU,CAAC;AACf,MAAI;AACJ,OAAK,OAAO,QAAQ;AAChB,eAAW,GAAG;AAAA,EAClB;AACA,OAAK,OAAO,OAAO;AACf,QAAI,CAAC,OAAO,QAAQ,GAAG,GAAG;AACtB,iBAAW,GAAG;AAAA,IAClB;AAAA,EACJ;AACA,WAAS,WAAWC,MAAK;AACrB,QAAI,QAAQ,OAAOA,IAAG,KAAK;AAC3B,YAAQA,IAAG,IAAI,MAAM,OAAOA,IAAG,GAAG,MAAMA,IAAG,GAAG,IAAIA,IAAG;AAAA,EACzD;AACA,SAAO;AACX;AAMA,SAAS,aAAa,SAASC,OAAMC,KAAI,aAAa;AAElD,MAAI,OAAOA,QAAO,UAAU;AACxB;AAAA,EACJ;AACA,MAAI,SAAS,QAAQD,KAAI;AAEzB,MAAI,OAAO,QAAQC,GAAE;AACjB,WAAO,OAAOA,GAAE;AACpB,MAAI,cAAc,SAASA,GAAE;AAC7B,MAAI,OAAO,QAAQ,WAAW;AAC1B,WAAO,OAAO,WAAW;AAC7B,MAAI,eAAe,WAAW,WAAW;AACzC,MAAI,OAAO,QAAQ,YAAY;AAC3B,WAAO,OAAO,YAAY;AAE9B,MAAI,MAAM,OAAOA,GAAE,KAAK,OAAO,WAAW,KAAK,OAAO,YAAY;AAClE,MAAI,OAA8D;AAC9D,WAAO,uBAAuBD,MAAK,MAAM,GAAG,EAAE,IAAI,OAAOC,GAAE;AAAA,EAC/D;AACA,SAAO;AACX;AAEA,SAAS,aAAa,KAAK,aAAa,WAAW,IAAI;AACnD,MAAI,OAAO,YAAY,GAAG;AAC1B,MAAI,SAAS,CAAC,OAAO,WAAW,GAAG;AACnC,MAAI,QAAQ,UAAU,GAAG;AAEzB,MAAI,eAAe,aAAa,SAAS,KAAK,IAAI;AAClD,MAAI,eAAe,IAAI;AACnB,QAAI,UAAU,CAAC,OAAO,MAAM,SAAS,GAAG;AACpC,cAAQ;AAAA,IACZ,WACS,UAAU,MAAM,UAAU,UAAU,GAAG,GAAG;AAG/C,UAAI,cAAc,aAAa,QAAQ,KAAK,IAAI;AAChD,UAAI,cAAc,KAAK,eAAe,aAAa;AAC/C,gBAAQ;AAAA,MACZ;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI,UAAU,QAAW;AACrB,YAAQ,oBAAoB,IAAI,MAAM,GAAG;AAGzC,QAAI,oBAAoB;AACxB,oBAAgB,IAAI;AACpB,YAAQ,KAAK;AACb,oBAAgB,iBAAiB;AAAA,EACrC;AACA,MAAI,OAAuC;AACvC,eAAW,MAAM,KAAK,OAAO,IAAI,MAAM;AAAA,EAC3C;AACA,SAAO;AACX;AAIA,SAAS,oBAAoB,IAAI,MAAM,KAAK;AAExC,MAAI,CAAC,OAAO,MAAM,SAAS,GAAG;AAC1B,WAAO;AAAA,EACX;AACA,MAAIC,OAAM,KAAK;AAEf,MAAI,OAAwD;AACxD,WAAO,qCACH,MACA,4FAEgC,EAAE;AAAA,EAC1C;AAGA,MAAI,MACA,GAAG,SAAS,aACZ,GAAG,SAAS,UAAU,GAAG,MAAM,UAC/B,GAAG,OAAO,GAAG,MAAM,QAAW;AAC9B,WAAO,GAAG,OAAO,GAAG;AAAA,EACxB;AAGA,SAAO,WAAWA,IAAG,KAAK,QAAQ,KAAK,IAAI,MAAM,aAC3CA,KAAI,KAAK,EAAE,IACXA;AACV;AAqEA,IAAI,sBAAsB;AAM1B,SAAS,QAAQ,IAAI;AACjB,MAAIC,SAAQ,MAAM,GAAG,SAAS,EAAE,MAAM,mBAAmB;AACzD,SAAOA,SAAQA,OAAM,CAAC,IAAI;AAC9B;AACA,SAAS,WAAW,GAAG,GAAG;AACtB,SAAO,QAAQ,CAAC,MAAM,QAAQ,CAAC;AACnC;AACA,SAAS,aAAaC,OAAM,eAAe;AACvC,MAAI,CAAC,QAAQ,aAAa,GAAG;AACzB,WAAO,WAAW,eAAeA,KAAI,IAAI,IAAI;AAAA,EACjD;AACA,WAAS,IAAI,GAAGC,OAAM,cAAc,QAAQ,IAAIA,MAAK,KAAK;AACtD,QAAI,WAAW,cAAc,CAAC,GAAGD,KAAI,GAAG;AACpC,aAAO;AAAA,IACX;AAAA,EACJ;AACA,SAAO;AACX;AA2CA,SAAS,IAAI,SAAS;AAClB,MAAI,OAAiE;AACjE,WAAO,kEAAkE;AAAA,EAC7E;AACA,OAAK,MAAM,OAAO;AACtB;AAEA,YAAY,GAAG;AAEf,WAAW,GAAG;AAEd,YAAY,GAAG;AAEf,eAAe,GAAG;AAElB,YAAY,GAAG;AAEf,SAAS,QAAQE,MAAK;AAClB,EAAAA,KAAI,MAAM,SAAUC,SAAQ;AACxB,QAAI,mBAAmB,KAAK,sBAAsB,KAAK,oBAAoB,CAAC;AAC5E,QAAI,iBAAiB,QAAQA,OAAM,IAAI,IAAI;AACvC,aAAO;AAAA,IACX;AAEA,QAAI,OAAO,QAAQ,WAAW,CAAC;AAC/B,SAAK,QAAQ,IAAI;AACjB,QAAI,WAAWA,QAAO,OAAO,GAAG;AAC5B,MAAAA,QAAO,QAAQ,MAAMA,SAAQ,IAAI;AAAA,IACrC,WACS,WAAWA,OAAM,GAAG;AACzB,MAAAA,QAAO,MAAM,MAAM,IAAI;AAAA,IAC3B;AACA,qBAAiB,KAAKA,OAAM;AAC5B,WAAO;AAAA,EACX;AACJ;AAEA,SAAS,UAAUD,MAAK;AACpB,EAAAA,KAAI,QAAQ,SAAU,OAAO;AACzB,SAAK,UAAU,aAAa,KAAK,SAAS,KAAK;AAC/C,WAAO;AAAA,EACX;AACJ;AAEA,SAAS,WAAWA,MAAK;AAMrB,EAAAA,KAAI,MAAM;AACV,MAAI,MAAM;AAIV,EAAAA,KAAI,SAAS,SAAU,eAAe;AAClC,oBAAgB,iBAAiB,CAAC;AAClC,QAAI,QAAQ;AACZ,QAAI,UAAU,MAAM;AACpB,QAAI,cAAc,cAAc,UAAU,cAAc,QAAQ,CAAC;AACjE,QAAI,YAAY,OAAO,GAAG;AACtB,aAAO,YAAY,OAAO;AAAA,IAC9B;AACA,QAAI,OAAO,iBAAiB,aAAa,KAAK,iBAAiB,MAAM,OAAO;AAC5E,QAAI,OAA+C;AAC/C,4BAAsB,IAAI;AAAA,IAC9B;AACA,QAAI,MAAM,SAAS,aAAa,SAAS;AACrC,WAAK,MAAM,OAAO;AAAA,IACtB;AACA,QAAI,YAAY,OAAO,OAAO,MAAM,SAAS;AAC7C,QAAI,UAAU,cAAc;AAC5B,QAAI,MAAM;AACV,QAAI,UAAU,aAAa,MAAM,SAAS,aAAa;AACvD,QAAI,OAAO,IAAI;AAIf,QAAI,IAAI,QAAQ,OAAO;AACnB,gBAAU,GAAG;AAAA,IACjB;AACA,QAAI,IAAI,QAAQ,UAAU;AACtB,mBAAa,GAAG;AAAA,IACpB;AAEA,QAAI,SAAS,MAAM;AACnB,QAAI,QAAQ,MAAM;AAClB,QAAI,MAAM,MAAM;AAGhB,gBAAY,QAAQ,SAAUE,OAAM;AAChC,UAAIA,KAAI,IAAI,MAAMA,KAAI;AAAA,IAC1B,CAAC;AAED,QAAI,MAAM;AACN,UAAI,QAAQ,WAAW,IAAI,IAAI;AAAA,IACnC;AAIA,QAAI,eAAe,MAAM;AACzB,QAAI,gBAAgB;AACpB,QAAI,gBAAgBC,QAAO,CAAC,GAAG,IAAI,OAAO;AAE1C,gBAAY,OAAO,IAAI;AACvB,WAAO;AAAA,EACX;AACJ;AACA,SAAS,UAAU,MAAM;AACrB,MAAIC,SAAQ,KAAK,QAAQ;AACzB,WAAS,OAAOA,QAAO;AACnB,UAAM,KAAK,WAAW,UAAU,GAAG;AAAA,EACvC;AACJ;AACA,SAAS,aAAa,MAAM;AACxB,MAAI,WAAW,KAAK,QAAQ;AAC5B,WAAS,OAAO,UAAU;AACtB,mBAAe,KAAK,WAAW,KAAK,SAAS,GAAG,CAAC;AAAA,EACrD;AACJ;AAEA,SAAS,mBAAmBJ,MAAK;AAI7B,cAAY,QAAQ,SAAUE,OAAM;AAEhC,IAAAF,KAAIE,KAAI,IAAI,SAAUG,KAAI,YAAY;AAClC,UAAI,CAAC,YAAY;AACb,eAAO,KAAK,QAAQH,QAAO,GAAG,EAAEG,GAAE;AAAA,MACtC,OACK;AAED,YAAI,OAA+D;AAC/D,gCAAsBA,GAAE;AAAA,QAC5B;AACA,YAAIH,UAAS,eAAe,cAAc,UAAU,GAAG;AAEnD,qBAAW,OAAO,WAAW,QAAQG;AACrC,uBAAa,KAAK,QAAQ,MAAM,OAAO,UAAU;AAAA,QACrD;AACA,YAAIH,UAAS,eAAe,WAAW,UAAU,GAAG;AAChD,uBAAa,EAAE,MAAM,YAAY,QAAQ,WAAW;AAAA,QACxD;AACA,aAAK,QAAQA,QAAO,GAAG,EAAEG,GAAE,IAAI;AAC/B,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ,CAAC;AACL;AAEA,SAAS,kBAAkBC,OAAM;AAC7B,SAAOA,UAAS,iBAAiBA,MAAK,KAAK,OAAO,KAAKA,MAAK;AAChE;AACA,SAAS,QAAQ,SAAS,MAAM;AAC5B,MAAI,QAAQ,OAAO,GAAG;AAClB,WAAO,QAAQ,QAAQ,IAAI,IAAI;AAAA,EACnC,WACS,OAAO,YAAY,UAAU;AAClC,WAAO,QAAQ,MAAM,GAAG,EAAE,QAAQ,IAAI,IAAI;AAAA,EAC9C,WACS,SAAS,OAAO,GAAG;AACxB,WAAO,QAAQ,KAAK,IAAI;AAAA,EAC5B;AAEA,SAAO;AACX;AACA,SAAS,WAAW,mBAAmBC,SAAQ;AAC3C,MAAIC,SAAQ,kBAAkB,OAAOC,QAAO,kBAAkB,MAAM,SAAS,kBAAkB,QAAQ,SAAS,kBAAkB;AAClI,WAAS,OAAOD,QAAO;AACnB,QAAI,QAAQA,OAAM,GAAG;AACrB,QAAI,OAAO;AACP,UAAI,SAAS,MAAM;AACnB,UAAI,UAAU,CAACD,QAAO,MAAM,GAAG;AAC3B,wBAAgBC,QAAO,KAAKC,OAAM,MAAM;AAAA,MAC5C;AAAA,IACJ;AAAA,EACJ;AACA,SAAO,iBAAiB,WAAW;AACvC;AACA,SAAS,gBAAgBD,QAAO,KAAKC,OAAM,SAAS;AAChD,MAAI,QAAQD,OAAM,GAAG;AACrB,MAAI,UAAU,CAAC,WAAW,MAAM,QAAQ,QAAQ,MAAM;AAElD,UAAM,kBAAkB,SAAS;AAAA,EACrC;AACA,EAAAA,OAAM,GAAG,IAAI;AACb,WAASC,OAAM,GAAG;AACtB;AACA,IAAI,eAAe,CAAC,QAAQ,QAAQ,KAAK;AAEzC,IAAI,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,UAAU;AAAA,EACV,OAAO;AAAA,IACH,SAAS;AAAA,IACT,SAAS;AAAA,IACT,KAAK,CAAC,QAAQ,MAAM;AAAA,EACxB;AAAA,EACA,SAAS;AAAA,IACL,YAAY,WAAY;AACpB,UAAIC,MAAK,MAAMF,SAAQE,IAAG,OAAOD,QAAOC,IAAG,MAAM,eAAeA,IAAG,cAAc,aAAaA,IAAG;AACjG,UAAI,cAAc;AACd,YAAI,MAAM,aAAa,KAAK,oBAAoB,aAAa,mBAAmB,mBAAmB,aAAa;AAChH,QAAAF,OAAM,UAAU,IAAI;AAAA,UAChB,MAAM,kBAAkB,gBAAgB;AAAA,UACxC;AAAA,UACA;AAAA,QACJ;AACA,QAAAC,MAAK,KAAK,UAAU;AAEpB,YAAI,KAAK,OAAOA,MAAK,SAAS,SAAS,KAAK,GAAG,GAAG;AAC9C,0BAAgBD,QAAOC,MAAK,CAAC,GAAGA,OAAM,KAAK,MAAM;AAAA,QACrD;AACA,aAAK,eAAe;AAAA,MACxB;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,SAAS,WAAY;AACjB,SAAK,QAAQ,uBAAO,OAAO,IAAI;AAC/B,SAAK,OAAO,CAAC;AAAA,EACjB;AAAA,EACA,WAAW,WAAY;AACnB,aAAS,OAAO,KAAK,OAAO;AACxB,sBAAgB,KAAK,OAAO,KAAK,KAAK,IAAI;AAAA,IAC9C;AAAA,EACJ;AAAA,EACA,SAAS,WAAY;AACjB,QAAI,QAAQ;AACZ,SAAK,WAAW;AAChB,SAAK,OAAO,WAAW,SAAU,KAAK;AAClC,iBAAW,OAAO,SAAU,MAAM;AAAE,eAAO,QAAQ,KAAK,IAAI;AAAA,MAAG,CAAC;AAAA,IACpE,CAAC;AACD,SAAK,OAAO,WAAW,SAAU,KAAK;AAClC,iBAAW,OAAO,SAAU,MAAM;AAAE,eAAO,CAAC,QAAQ,KAAK,IAAI;AAAA,MAAG,CAAC;AAAA,IACrE,CAAC;AAAA,EACL;AAAA,EACA,SAAS,WAAY;AACjB,SAAK,WAAW;AAAA,EACpB;AAAA,EACA,QAAQ,WAAY;AAChB,QAAI,OAAO,KAAK,OAAO;AACvB,QAAI,QAAQ,uBAAuB,IAAI;AACvC,QAAI,mBAAmB,SAAS,MAAM;AACtC,QAAI,kBAAkB;AAElB,UAAI,SAAS,kBAAkB,gBAAgB;AAC/C,UAAIC,MAAK,MAAM,UAAUA,IAAG,SAAS,UAAUA,IAAG;AAClD;AAAA;AAAA,QAEC,YAAY,CAAC,UAAU,CAAC,QAAQ,SAAS,MAAM;AAAA,QAE3C,WAAW,UAAU,QAAQ,SAAS,MAAM;AAAA,QAAI;AACjD,eAAO;AAAA,MACX;AACA,UAAI,KAAK,MAAMF,SAAQ,GAAG,OAAOC,QAAO,GAAG;AAC3C,UAAI,MAAM,MAAM,OAAO;AAAA;AAAA;AAAA,QAGf,iBAAiB,KAAK,OACjB,iBAAiB,MAAM,KAAK,OAAO,iBAAiB,GAAG,IAAI;AAAA,UAClE,MAAM;AACZ,UAAID,OAAM,GAAG,GAAG;AACZ,cAAM,oBAAoBA,OAAM,GAAG,EAAE;AAErC,iBAASC,OAAM,GAAG;AAClB,QAAAA,MAAK,KAAK,GAAG;AAAA,MACjB,OACK;AAED,aAAK,eAAe;AACpB,aAAK,aAAa;AAAA,MACtB;AAEA,YAAM,KAAK,YAAY;AAAA,IAC3B;AACA,WAAO,SAAU,QAAQ,KAAK,CAAC;AAAA,EACnC;AACJ;AAEA,IAAI,oBAAoB;AAAA,EACpB;AACJ;AAEA,SAAS,cAAcT,MAAK;AAExB,MAAI,YAAY,CAAC;AACjB,YAAU,MAAM,WAAY;AAAE,WAAO;AAAA,EAAQ;AAC7C,MAAI,OAAuC;AACvC,cAAU,MAAM,WAAY;AACxB,aAAO,sEAAsE;AAAA,IACjF;AAAA,EACJ;AACA,SAAO,eAAeA,MAAK,UAAU,SAAS;AAI9C,EAAAA,KAAI,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQG;AAAA,IACR;AAAA,IACA;AAAA,EACJ;AACA,EAAAH,KAAI,MAAMW;AACV,EAAAX,KAAI,SAAS;AACb,EAAAA,KAAI,WAAW;AAEf,EAAAA,KAAI,aAAa,SAAU,KAAK;AAC5B,YAAQ,GAAG;AACX,WAAO;AAAA,EACX;AACA,EAAAA,KAAI,UAAU,uBAAO,OAAO,IAAI;AAChC,cAAY,QAAQ,SAAUE,OAAM;AAChC,IAAAF,KAAI,QAAQE,QAAO,GAAG,IAAI,uBAAO,OAAO,IAAI;AAAA,EAChD,CAAC;AAGD,EAAAF,KAAI,QAAQ,QAAQA;AACpB,EAAAG,QAAOH,KAAI,QAAQ,YAAY,iBAAiB;AAChD,UAAQA,IAAG;AACX,YAAUA,IAAG;AACb,aAAWA,IAAG;AACd,qBAAmBA,IAAG;AAC1B;AAEA,cAAc,GAAG;AACjB,OAAO,eAAe,IAAI,WAAW,aAAa;AAAA,EAC9C,KAAK;AACT,CAAC;AACD,OAAO,eAAe,IAAI,WAAW,eAAe;AAAA,EAChD,KAAK,WAAY;AAEb,WAAO,KAAK,UAAU,KAAK,OAAO;AAAA,EACtC;AACJ,CAAC;AAED,OAAO,eAAe,KAAK,2BAA2B;AAAA,EAClD,OAAO;AACX,CAAC;AACD,IAAI,UAAU;AAId,IAAI,iBAAiB,QAAQ,aAAa;AAE1C,IAAI,cAAc,QAAQ,uCAAuC;AACjE,IAAI,cAAc,SAAU,KAAKE,OAAM,MAAM;AACzC,SAAS,SAAS,WAAW,YAAY,GAAG,KAAKA,UAAS,YACrD,SAAS,cAAc,QAAQ,YAC/B,SAAS,aAAa,QAAQ,WAC9B,SAAS,WAAW,QAAQ;AACrC;AACA,IAAI,mBAAmB,QAAQ,sCAAsC;AACrE,IAAI,8BAA8B,QAAQ,oCAAoC;AAC9E,IAAI,yBAAyB,SAAU,KAAK,OAAO;AAC/C,SAAO,iBAAiB,KAAK,KAAK,UAAU,UACtC;AAAA;AAAA,IAEE,QAAQ,qBAAqB,4BAA4B,KAAK,IACxD,QACA;AAAA;AAClB;AACA,IAAI,gBAAgB,QAAQ,4XAKS;AACrC,IAAI,UAAU;AACd,IAAI,UAAU,SAAU,MAAM;AAC1B,SAAO,KAAK,OAAO,CAAC,MAAM,OAAO,KAAK,MAAM,GAAG,CAAC,MAAM;AAC1D;AACA,IAAI,eAAe,SAAU,MAAM;AAC/B,SAAO,QAAQ,IAAI,IAAI,KAAK,MAAM,GAAG,KAAK,MAAM,IAAI;AACxD;AACA,IAAI,mBAAmB,SAAU,KAAK;AAClC,SAAO,OAAO,QAAQ,QAAQ;AAClC;AAEA,SAAS,iBAAiB,OAAO;AAC7B,MAAI,OAAO,MAAM;AACjB,MAAIU,cAAa;AACjB,MAAI,YAAY;AAChB,SAAO,MAAM,UAAU,iBAAiB,GAAG;AACvC,gBAAY,UAAU,kBAAkB;AACxC,QAAI,aAAa,UAAU,MAAM;AAC7B,aAAO,eAAe,UAAU,MAAM,IAAI;AAAA,IAC9C;AAAA,EACJ;AAEA,SAAO,MAAOA,cAAaA,YAAW,MAAO,GAAG;AAC5C,QAAIA,eAAcA,YAAW,MAAM;AAC/B,aAAO,eAAe,MAAMA,YAAW,IAAI;AAAA,IAC/C;AAAA,EACJ;AACA,SAAO,YAAY,KAAK,aAAa,KAAK,KAAK;AACnD;AACA,SAAS,eAAe,OAAO,QAAQ;AACnC,SAAO;AAAA,IACH,aAAa,OAAO,MAAM,aAAa,OAAO,WAAW;AAAA,IACzD,OAAO,MAAM,MAAM,KAAK,IAAI,CAAC,MAAM,OAAO,OAAO,KAAK,IAAI,OAAO;AAAA,EACrE;AACJ;AACA,SAAS,YAAY,aAAa,cAAc;AAC5C,MAAI,MAAM,WAAW,KAAK,MAAM,YAAY,GAAG;AAC3C,WAAO,OAAO,aAAa,eAAe,YAAY,CAAC;AAAA,EAC3D;AAEA,SAAO;AACX;AACA,SAAS,OAAO,GAAG,GAAG;AAClB,SAAO,IAAK,IAAI,IAAI,MAAM,IAAI,IAAK,KAAK;AAC5C;AACA,SAAS,eAAe,OAAO;AAC3B,MAAI,MAAM,QAAQ,KAAK,GAAG;AACtB,WAAO,eAAe,KAAK;AAAA,EAC/B;AACA,MAAI,SAAS,KAAK,GAAG;AACjB,WAAO,gBAAgB,KAAK;AAAA,EAChC;AACA,MAAI,OAAO,UAAU,UAAU;AAC3B,WAAO;AAAA,EACX;AAEA,SAAO;AACX;AACA,SAAS,eAAe,OAAO;AAC3B,MAAI,MAAM;AACV,MAAI;AACJ,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,IAAI,GAAG,KAAK;AAC1C,QAAI,MAAO,cAAc,eAAe,MAAM,CAAC,CAAC,CAAE,KAAK,gBAAgB,IAAI;AACvE,UAAI;AACA,eAAO;AACX,aAAO;AAAA,IACX;AAAA,EACJ;AACA,SAAO;AACX;AACA,SAAS,gBAAgB,OAAO;AAC5B,MAAI,MAAM;AACV,WAAS,OAAO,OAAO;AACnB,QAAI,MAAM,GAAG,GAAG;AACZ,UAAI;AACA,eAAO;AACX,aAAO;AAAA,IACX;AAAA,EACJ;AACA,SAAO;AACX;AAEA,IAAI,eAAe;AAAA,EACf,KAAK;AAAA,EACL,MAAM;AACV;AACA,IAAI,YAAY,QAAQ,onBAUqC;AAG7D,IAAI,QAAQ,QAAQ,kNAEoD,IAAI;AAC5E,IAAI,WAAW,SAAU,KAAK;AAAE,SAAO,QAAQ;AAAO;AACtD,IAAI,gBAAgB,SAAU,KAAK;AAC/B,SAAO,UAAU,GAAG,KAAK,MAAM,GAAG;AACtC;AACA,SAAS,gBAAgB,KAAK;AAC1B,MAAI,MAAM,GAAG,GAAG;AACZ,WAAO;AAAA,EACX;AAGA,MAAI,QAAQ,QAAQ;AAChB,WAAO;AAAA,EACX;AACJ;AACA,IAAI,sBAAsB,uBAAO,OAAO,IAAI;AAC5C,SAAS,iBAAiB,KAAK;AAE3B,MAAI,CAAC,WAAW;AACZ,WAAO;AAAA,EACX;AACA,MAAI,cAAc,GAAG,GAAG;AACpB,WAAO;AAAA,EACX;AACA,QAAM,IAAI,YAAY;AAEtB,MAAI,oBAAoB,GAAG,KAAK,MAAM;AAClC,WAAO,oBAAoB,GAAG;AAAA,EAClC;AACA,MAAI,KAAK,SAAS,cAAc,GAAG;AACnC,MAAI,IAAI,QAAQ,GAAG,IAAI,IAAI;AAEvB,WAAQ,oBAAoB,GAAG,IAC3B,GAAG,gBAAgB,OAAO,sBACtB,GAAG,gBAAgB,OAAO;AAAA,EACtC,OACK;AACD,WAAQ,oBAAoB,GAAG,IAAI,qBAAqB,KAAK,GAAG,SAAS,CAAC;AAAA,EAC9E;AACJ;AACA,IAAI,kBAAkB,QAAQ,2CAA2C;AAKzE,SAAS,MAAM,IAAI;AACf,MAAI,OAAO,OAAO,UAAU;AACxB,QAAI,WAAW,SAAS,cAAc,EAAE;AACxC,QAAI,CAAC,UAAU;AAEX,aAAO,SAAS,cAAc,KAAK;AAAA,IACvC;AACA,WAAO;AAAA,EACX,OACK;AACD,WAAO;AAAA,EACX;AACJ;AAEA,SAAS,cAAcC,UAAS,OAAO;AACnC,MAAI,MAAM,SAAS,cAAcA,QAAO;AACxC,MAAIA,aAAY,UAAU;AACtB,WAAO;AAAA,EACX;AAEA,MAAI,MAAM,QACN,MAAM,KAAK,SACX,MAAM,KAAK,MAAM,aAAa,QAAW;AACzC,QAAI,aAAa,YAAY,UAAU;AAAA,EAC3C;AACA,SAAO;AACX;AACA,SAAS,gBAAgB,WAAWA,UAAS;AACzC,SAAO,SAAS,gBAAgB,aAAa,SAAS,GAAGA,QAAO;AACpE;AACA,SAAS,eAAeC,OAAM;AAC1B,SAAO,SAAS,eAAeA,KAAI;AACvC;AACA,SAAS,cAAcA,OAAM;AACzB,SAAO,SAAS,cAAcA,KAAI;AACtC;AACA,SAAS,aAAaF,aAAY,SAAS,eAAe;AACtD,EAAAA,YAAW,aAAa,SAAS,aAAa;AAClD;AACA,SAAS,YAAY,MAAM,OAAO;AAC9B,OAAK,YAAY,KAAK;AAC1B;AACA,SAAS,YAAY,MAAM,OAAO;AAC9B,OAAK,YAAY,KAAK;AAC1B;AACA,SAAS,WAAW,MAAM;AACtB,SAAO,KAAK;AAChB;AACA,SAAS,YAAY,MAAM;AACvB,SAAO,KAAK;AAChB;AACA,SAAS,QAAQ,MAAM;AACnB,SAAO,KAAK;AAChB;AACA,SAAS,eAAe,MAAME,OAAM;AAChC,OAAK,cAAcA;AACvB;AACA,SAAS,cAAc,MAAM,SAAS;AAClC,OAAK,aAAa,SAAS,EAAE;AACjC;AAEA,IAAI,UAAuB,uBAAO,OAAO;AAAA,EACvC,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,IAAI,MAAM;AAAA,EACN,QAAQ,SAAU,GAAG,OAAO;AACxB,gBAAY,KAAK;AAAA,EACrB;AAAA,EACA,QAAQ,SAAU,UAAU,OAAO;AAC/B,QAAI,SAAS,KAAK,QAAQ,MAAM,KAAK,KAAK;AACtC,kBAAY,UAAU,IAAI;AAC1B,kBAAY,KAAK;AAAA,IACrB;AAAA,EACJ;AAAA,EACA,SAAS,SAAU,OAAO;AACtB,gBAAY,OAAO,IAAI;AAAA,EAC3B;AACJ;AACA,SAAS,YAAY,OAAO,WAAW;AACnC,MAAIC,OAAM,MAAM,KAAK;AACrB,MAAI,CAAC,MAAMA,IAAG;AACV;AACJ,MAAI,KAAK,MAAM;AACf,MAAI,WAAW,MAAM,qBAAqB,MAAM;AAChD,MAAI,QAAQ,YAAY,OAAO;AAC/B,MAAI,aAAa,YAAY,SAAY;AACzC,MAAI,WAAWA,IAAG,GAAG;AACjB,4BAAwBA,MAAK,IAAI,CAAC,KAAK,GAAG,IAAI,uBAAuB;AACrE;AAAA,EACJ;AACA,MAAI,QAAQ,MAAM,KAAK;AACvB,MAAI,YAAY,OAAOA,SAAQ,YAAY,OAAOA,SAAQ;AAC1D,MAAI,SAAS,MAAMA,IAAG;AACtB,MAAI,OAAO,GAAG;AACd,MAAI,aAAa,QAAQ;AACrB,QAAI,OAAO;AACP,UAAI,WAAW,YAAY,KAAKA,IAAG,IAAIA,KAAI;AAC3C,UAAI,WAAW;AACX,gBAAQ,QAAQ,KAAK,SAAS,UAAU,QAAQ;AAAA,MACpD,OACK;AACD,YAAI,CAAC,QAAQ,QAAQ,GAAG;AACpB,cAAI,WAAW;AACX,iBAAKA,IAAG,IAAI,CAAC,QAAQ;AACrB,wBAAY,IAAIA,MAAK,KAAKA,IAAG,CAAC;AAAA,UAClC,OACK;AACD,YAAAA,KAAI,QAAQ,CAAC,QAAQ;AAAA,UACzB;AAAA,QACJ,WACS,CAAC,SAAS,SAAS,QAAQ,GAAG;AACnC,mBAAS,KAAK,QAAQ;AAAA,QAC1B;AAAA,MACJ;AAAA,IACJ,WACS,WAAW;AAChB,UAAI,aAAa,KAAKA,IAAG,MAAM,UAAU;AACrC;AAAA,MACJ;AACA,WAAKA,IAAG,IAAI;AACZ,kBAAY,IAAIA,MAAK,KAAK;AAAA,IAC9B,WACS,QAAQ;AACb,UAAI,aAAaA,KAAI,UAAU,UAAU;AACrC;AAAA,MACJ;AACA,MAAAA,KAAI,QAAQ;AAAA,IAChB,WACS,OAAuC;AAC5C,aAAO,8BAA8B,OAAO,OAAOA,IAAG,CAAC;AAAA,IAC3D;AAAA,EACJ;AACJ;AACA,SAAS,YAAYL,KAAI,KAAK,KAAK;AAC/B,MAAI,cAAcA,IAAG;AACrB,MAAI,eAAe,OAAO,aAAa,GAAG,GAAG;AACzC,QAAI,MAAM,YAAY,GAAG,CAAC,GAAG;AACzB,kBAAY,GAAG,EAAE,QAAQ;AAAA,IAC7B,OACK;AACD,kBAAY,GAAG,IAAI;AAAA,IACvB;AAAA,EACJ;AACJ;AAaA,IAAI,YAAY,IAAI,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;AACpC,IAAI,QAAQ,CAAC,UAAU,YAAY,UAAU,UAAU,SAAS;AAChE,SAAS,UAAU,GAAG,GAAG;AACrB,SAAQ,EAAE,QAAQ,EAAE,OAChB,EAAE,iBAAiB,EAAE,iBACnB,EAAE,QAAQ,EAAE,OACV,EAAE,cAAc,EAAE,aAClB,MAAM,EAAE,IAAI,MAAM,MAAM,EAAE,IAAI,KAC9B,cAAc,GAAG,CAAC,KACjB,OAAO,EAAE,kBAAkB,KAAK,QAAQ,EAAE,aAAa,KAAK;AACzE;AACA,SAAS,cAAc,GAAG,GAAG;AACzB,MAAI,EAAE,QAAQ;AACV,WAAO;AACX,MAAI;AACJ,MAAI,QAAQ,MAAO,IAAI,EAAE,IAAK,KAAK,MAAO,IAAI,EAAE,KAAM,KAAK,EAAE;AAC7D,MAAI,QAAQ,MAAO,IAAI,EAAE,IAAK,KAAK,MAAO,IAAI,EAAE,KAAM,KAAK,EAAE;AAC7D,SAAO,UAAU,SAAU,gBAAgB,KAAK,KAAK,gBAAgB,KAAK;AAC9E;AACA,SAAS,kBAAkBM,WAAU,UAAU,QAAQ;AACnD,MAAI,GAAG;AACP,MAAIC,OAAM,CAAC;AACX,OAAK,IAAI,UAAU,KAAK,QAAQ,EAAE,GAAG;AACjC,UAAMD,UAAS,CAAC,EAAE;AAClB,QAAI,MAAM,GAAG;AACT,MAAAC,KAAI,GAAG,IAAI;AAAA,EACnB;AACA,SAAOA;AACX;AACA,SAAS,oBAAoB,SAAS;AAClC,MAAI,GAAG;AACP,MAAI,MAAM,CAAC;AACX,MAAIC,WAAU,QAAQ,SAASC,WAAU,QAAQ;AACjD,OAAK,IAAI,GAAG,IAAI,MAAM,QAAQ,EAAE,GAAG;AAC/B,QAAI,MAAM,CAAC,CAAC,IAAI,CAAC;AACjB,SAAK,IAAI,GAAG,IAAID,SAAQ,QAAQ,EAAE,GAAG;AACjC,UAAI,MAAMA,SAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG;AAC7B,YAAI,MAAM,CAAC,CAAC,EAAE,KAAKA,SAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAAA,MAC3C;AAAA,IACJ;AAAA,EACJ;AACA,WAAS,YAAY,KAAK;AACtB,WAAO,IAAI,MAAMC,SAAQ,QAAQ,GAAG,EAAE,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,QAAW,GAAG;AAAA,EAC/E;AACA,WAAS,WAAW,UAAU,WAAW;AACrC,aAASC,UAAS;AACd,UAAI,EAAEA,QAAO,cAAc,GAAG;AAC1B,mBAAW,QAAQ;AAAA,MACvB;AAAA,IACJ;AACA,IAAAA,QAAO,YAAY;AACnB,WAAOA;AAAA,EACX;AACA,WAAS,WAAW,IAAI;AACpB,QAAI,SAASD,SAAQ,WAAW,EAAE;AAElC,QAAI,MAAM,MAAM,GAAG;AACf,MAAAA,SAAQ,YAAY,QAAQ,EAAE;AAAA,IAClC;AAAA,EACJ;AACA,WAASE,kBAAiB,OAAO,QAAQ;AACrC,WAAQ,CAAC,UACL,CAAC,MAAM,MACP,EAAE,OAAO,gBAAgB,UACrB,OAAO,gBAAgB,KAAK,SAAU,QAAQ;AAC1C,aAAO,SAAS,MAAM,IAChB,OAAO,KAAK,MAAM,GAAG,IACrB,WAAW,MAAM;AAAA,IAC3B,CAAC,MACL,OAAO,iBAAiB,MAAM,GAAG;AAAA,EACzC;AACA,MAAI,oBAAoB;AACxB,WAAS,UAAU,OAAO,oBAAoB,WAAW,QAAQ,QAAQ,YAAYC,QAAO;AACxF,QAAI,MAAM,MAAM,GAAG,KAAK,MAAM,UAAU,GAAG;AAMvC,cAAQ,WAAWA,MAAK,IAAI,WAAW,KAAK;AAAA,IAChD;AACA,UAAM,eAAe,CAAC;AACtB,QAAIC,iBAAgB,OAAO,oBAAoB,WAAW,MAAM,GAAG;AAC/D;AAAA,IACJ;AACA,QAAI,OAAO,MAAM;AACjB,QAAIP,YAAW,MAAM;AACrB,QAAI,MAAM,MAAM;AAChB,QAAI,MAAM,GAAG,GAAG;AACZ,UAAI,OAAuC;AACvC,YAAI,QAAQ,KAAK,KAAK;AAClB;AAAA,QACJ;AACA,YAAIK,kBAAiB,OAAO,iBAAiB,GAAG;AAC5C,iBAAO,8BACH,MACA,mHAE2C,MAAM,OAAO;AAAA,QAChE;AAAA,MACJ;AACA,YAAM,MAAM,MAAM,KACZF,SAAQ,gBAAgB,MAAM,IAAI,GAAG,IACrCA,SAAQ,cAAc,KAAK,KAAK;AACtC,eAAS,KAAK;AACd,qBAAe,OAAOH,WAAU,kBAAkB;AAClD,UAAI,MAAM,IAAI,GAAG;AACb,0BAAkB,OAAO,kBAAkB;AAAA,MAC/C;AACA,aAAO,WAAW,MAAM,KAAK,MAAM;AACnC,UAAI,OAA2D;AAC3D;AAAA,MACJ;AAAA,IACJ,WACS,OAAO,MAAM,SAAS,GAAG;AAC9B,YAAM,MAAMG,SAAQ,cAAc,MAAM,IAAI;AAC5C,aAAO,WAAW,MAAM,KAAK,MAAM;AAAA,IACvC,OACK;AACD,YAAM,MAAMA,SAAQ,eAAe,MAAM,IAAI;AAC7C,aAAO,WAAW,MAAM,KAAK,MAAM;AAAA,IACvC;AAAA,EACJ;AACA,WAASI,iBAAgB,OAAO,oBAAoB,WAAW,QAAQ;AACnE,QAAIC,KAAI,MAAM;AACd,QAAI,MAAMA,EAAC,GAAG;AACV,UAAI,gBAAgB,MAAM,MAAM,iBAAiB,KAAKA,GAAE;AACxD,UAAI,MAAOA,KAAIA,GAAE,IAAK,KAAK,MAAOA,KAAIA,GAAE,IAAK,GAAG;AAC5C,QAAAA;AAAA,UAAE;AAAA,UAAO;AAAA;AAAA,QAAqB;AAAA,MAClC;AAKA,UAAI,MAAM,MAAM,iBAAiB,GAAG;AAChC,sBAAc,OAAO,kBAAkB;AACvC,eAAO,WAAW,MAAM,KAAK,MAAM;AACnC,YAAI,OAAO,aAAa,GAAG;AACvB,8BAAoB,OAAO,oBAAoB,WAAW,MAAM;AAAA,QACpE;AACA,eAAO;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AACA,WAAS,cAAc,OAAO,oBAAoB;AAC9C,QAAI,MAAM,MAAM,KAAK,aAAa,GAAG;AACjC,yBAAmB,KAAK,MAAM,oBAAoB,MAAM,KAAK,aAAa;AAC1E,YAAM,KAAK,gBAAgB;AAAA,IAC/B;AACA,UAAM,MAAM,MAAM,kBAAkB;AACpC,QAAI,YAAY,KAAK,GAAG;AACpB,wBAAkB,OAAO,kBAAkB;AAC3C,eAAS,KAAK;AAAA,IAClB,OACK;AAGD,kBAAY,KAAK;AAEjB,yBAAmB,KAAK,KAAK;AAAA,IACjC;AAAA,EACJ;AACA,WAAS,oBAAoB,OAAO,oBAAoB,WAAW,QAAQ;AACvE,QAAIA;AAKJ,QAAI,YAAY;AAChB,WAAO,UAAU,mBAAmB;AAChC,kBAAY,UAAU,kBAAkB;AACxC,UAAI,MAAOA,KAAI,UAAU,IAAK,KAAK,MAAOA,KAAIA,GAAE,UAAW,GAAG;AAC1D,aAAKA,KAAI,GAAGA,KAAI,IAAI,SAAS,QAAQ,EAAEA,IAAG;AACtC,cAAI,SAASA,EAAC,EAAE,WAAW,SAAS;AAAA,QACxC;AACA,2BAAmB,KAAK,SAAS;AACjC;AAAA,MACJ;AAAA,IACJ;AAGA,WAAO,WAAW,MAAM,KAAK,MAAM;AAAA,EACvC;AACA,WAAS,OAAO,QAAQ,KAAKT,MAAK;AAC9B,QAAI,MAAM,MAAM,GAAG;AACf,UAAI,MAAMA,IAAG,GAAG;AACZ,YAAII,SAAQ,WAAWJ,IAAG,MAAM,QAAQ;AACpC,UAAAI,SAAQ,aAAa,QAAQ,KAAKJ,IAAG;AAAA,QACzC;AAAA,MACJ,OACK;AACD,QAAAI,SAAQ,YAAY,QAAQ,GAAG;AAAA,MACnC;AAAA,IACJ;AAAA,EACJ;AACA,WAAS,eAAe,OAAOH,WAAU,oBAAoB;AACzD,QAAI,QAAQA,SAAQ,GAAG;AACnB,UAAI,OAAuC;AACvC,2BAAmBA,SAAQ;AAAA,MAC/B;AACA,eAAS,MAAM,GAAG,MAAMA,UAAS,QAAQ,EAAE,KAAK;AAC5C,kBAAUA,UAAS,GAAG,GAAG,oBAAoB,MAAM,KAAK,MAAM,MAAMA,WAAU,GAAG;AAAA,MACrF;AAAA,IACJ,WACS,YAAY,MAAM,IAAI,GAAG;AAC9B,MAAAG,SAAQ,YAAY,MAAM,KAAKA,SAAQ,eAAe,OAAO,MAAM,IAAI,CAAC,CAAC;AAAA,IAC7E;AAAA,EACJ;AACA,WAAS,YAAY,OAAO;AACxB,WAAO,MAAM,mBAAmB;AAC5B,cAAQ,MAAM,kBAAkB;AAAA,IACpC;AACA,WAAO,MAAM,MAAM,GAAG;AAAA,EAC1B;AACA,WAAS,kBAAkB,OAAO,oBAAoB;AAClD,aAAS,MAAM,GAAG,MAAM,IAAI,OAAO,QAAQ,EAAE,KAAK;AAC9C,UAAI,OAAO,GAAG,EAAE,WAAW,KAAK;AAAA,IACpC;AACA,QAAI,MAAM,KAAK;AACf,QAAI,MAAM,CAAC,GAAG;AACV,UAAI,MAAM,EAAE,MAAM;AACd,UAAE,OAAO,WAAW,KAAK;AAC7B,UAAI,MAAM,EAAE,MAAM;AACd,2BAAmB,KAAK,KAAK;AAAA,IACrC;AAAA,EACJ;AAIA,WAAS,SAAS,OAAO;AACrB,QAAIK;AACJ,QAAI,MAAOA,KAAI,MAAM,SAAU,GAAG;AAC9B,MAAAL,SAAQ,cAAc,MAAM,KAAKK,EAAC;AAAA,IACtC,OACK;AACD,UAAI,WAAW;AACf,aAAO,UAAU;AACb,YAAI,MAAOA,KAAI,SAAS,OAAQ,KAAK,MAAOA,KAAIA,GAAE,SAAS,QAAS,GAAG;AACnE,UAAAL,SAAQ,cAAc,MAAM,KAAKK,EAAC;AAAA,QACtC;AACA,mBAAW,SAAS;AAAA,MACxB;AAAA,IACJ;AAEA,QAAI,MAAOA,KAAI,cAAe,KAC1BA,OAAM,MAAM,WACZA,OAAM,MAAM,aACZ,MAAOA,KAAIA,GAAE,SAAS,QAAS,GAAG;AAClC,MAAAL,SAAQ,cAAc,MAAM,KAAKK,EAAC;AAAA,IACtC;AAAA,EACJ;AACA,WAAS,UAAU,WAAW,QAAQ,QAAQ,UAAU,QAAQ,oBAAoB;AAChF,WAAO,YAAY,QAAQ,EAAE,UAAU;AACnC,gBAAU,OAAO,QAAQ,GAAG,oBAAoB,WAAW,QAAQ,OAAO,QAAQ,QAAQ;AAAA,IAC9F;AAAA,EACJ;AACA,WAAS,kBAAkB,OAAO;AAC9B,QAAIA,IAAGC;AACP,QAAI,OAAO,MAAM;AACjB,QAAI,MAAM,IAAI,GAAG;AACb,UAAI,MAAOD,KAAI,KAAK,IAAK,KAAK,MAAOA,KAAIA,GAAE,OAAQ;AAC/C,QAAAA,GAAE,KAAK;AACX,WAAKA,KAAI,GAAGA,KAAI,IAAI,QAAQ,QAAQ,EAAEA;AAClC,YAAI,QAAQA,EAAC,EAAE,KAAK;AAAA,IAC5B;AACA,QAAI,MAAOA,KAAI,MAAM,QAAS,GAAG;AAC7B,WAAKC,KAAI,GAAGA,KAAI,MAAM,SAAS,QAAQ,EAAEA,IAAG;AACxC,0BAAkB,MAAM,SAASA,EAAC,CAAC;AAAA,MACvC;AAAA,IACJ;AAAA,EACJ;AACA,WAAS,aAAa,QAAQ,UAAU,QAAQ;AAC5C,WAAO,YAAY,QAAQ,EAAE,UAAU;AACnC,UAAI,KAAK,OAAO,QAAQ;AACxB,UAAI,MAAM,EAAE,GAAG;AACX,YAAI,MAAM,GAAG,GAAG,GAAG;AACf,oCAA0B,EAAE;AAC5B,4BAAkB,EAAE;AAAA,QACxB,OACK;AAED,qBAAW,GAAG,GAAG;AAAA,QACrB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,WAAS,0BAA0B,OAAO,IAAI;AAC1C,QAAI,MAAM,EAAE,KAAK,MAAM,MAAM,IAAI,GAAG;AAChC,UAAI;AACJ,UAAI,YAAY,IAAI,OAAO,SAAS;AACpC,UAAI,MAAM,EAAE,GAAG;AAGX,WAAG,aAAa;AAAA,MACpB,OACK;AAED,aAAK,WAAW,MAAM,KAAK,SAAS;AAAA,MACxC;AAEA,UAAI,MAAO,MAAM,MAAM,iBAAkB,KACrC,MAAO,MAAM,IAAI,MAAO,KACxB,MAAM,IAAI,IAAI,GAAG;AACjB,kCAA0B,KAAK,EAAE;AAAA,MACrC;AACA,WAAK,MAAM,GAAG,MAAM,IAAI,OAAO,QAAQ,EAAE,KAAK;AAC1C,YAAI,OAAO,GAAG,EAAE,OAAO,EAAE;AAAA,MAC7B;AACA,UAAI,MAAO,MAAM,MAAM,KAAK,IAAK,KAAK,MAAO,MAAM,IAAI,MAAO,GAAG;AAC7D,YAAI,OAAO,EAAE;AAAA,MACjB,OACK;AACD,WAAG;AAAA,MACP;AAAA,IACJ,OACK;AACD,iBAAW,MAAM,GAAG;AAAA,IACxB;AAAA,EACJ;AACA,WAAS,eAAe,WAAW,OAAO,OAAO,oBAAoB,YAAY;AAC7E,QAAI,cAAc;AAClB,QAAI,cAAc;AAClB,QAAI,YAAY,MAAM,SAAS;AAC/B,QAAI,gBAAgB,MAAM,CAAC;AAC3B,QAAI,cAAc,MAAM,SAAS;AACjC,QAAI,YAAY,MAAM,SAAS;AAC/B,QAAI,gBAAgB,MAAM,CAAC;AAC3B,QAAI,cAAc,MAAM,SAAS;AACjC,QAAI,aAAa,UAAU,aAAa;AAIxC,QAAI,UAAU,CAAC;AACf,QAAI,OAAuC;AACvC,yBAAmB,KAAK;AAAA,IAC5B;AACA,WAAO,eAAe,aAAa,eAAe,WAAW;AACzD,UAAI,QAAQ,aAAa,GAAG;AACxB,wBAAgB,MAAM,EAAE,WAAW;AAAA,MACvC,WACS,QAAQ,WAAW,GAAG;AAC3B,sBAAc,MAAM,EAAE,SAAS;AAAA,MACnC,WACS,UAAU,eAAe,aAAa,GAAG;AAC9C,mBAAW,eAAe,eAAe,oBAAoB,OAAO,WAAW;AAC/E,wBAAgB,MAAM,EAAE,WAAW;AACnC,wBAAgB,MAAM,EAAE,WAAW;AAAA,MACvC,WACS,UAAU,aAAa,WAAW,GAAG;AAC1C,mBAAW,aAAa,aAAa,oBAAoB,OAAO,SAAS;AACzE,sBAAc,MAAM,EAAE,SAAS;AAC/B,sBAAc,MAAM,EAAE,SAAS;AAAA,MACnC,WACS,UAAU,eAAe,WAAW,GAAG;AAE5C,mBAAW,eAAe,aAAa,oBAAoB,OAAO,SAAS;AAC3E,mBACIN,SAAQ,aAAa,WAAW,cAAc,KAAKA,SAAQ,YAAY,YAAY,GAAG,CAAC;AAC3F,wBAAgB,MAAM,EAAE,WAAW;AACnC,sBAAc,MAAM,EAAE,SAAS;AAAA,MACnC,WACS,UAAU,aAAa,aAAa,GAAG;AAE5C,mBAAW,aAAa,eAAe,oBAAoB,OAAO,WAAW;AAC7E,mBACIA,SAAQ,aAAa,WAAW,YAAY,KAAK,cAAc,GAAG;AACtE,sBAAc,MAAM,EAAE,SAAS;AAC/B,wBAAgB,MAAM,EAAE,WAAW;AAAA,MACvC,OACK;AACD,YAAI,QAAQ,WAAW;AACnB,wBAAc,kBAAkB,OAAO,aAAa,SAAS;AACjE,mBAAW,MAAM,cAAc,GAAG,IAC5B,YAAY,cAAc,GAAG,IAC7B,aAAa,eAAe,OAAO,aAAa,SAAS;AAC/D,YAAI,QAAQ,QAAQ,GAAG;AAEnB,oBAAU,eAAe,oBAAoB,WAAW,cAAc,KAAK,OAAO,OAAO,WAAW;AAAA,QACxG,OACK;AACD,wBAAc,MAAM,QAAQ;AAC5B,cAAI,UAAU,aAAa,aAAa,GAAG;AACvC,uBAAW,aAAa,eAAe,oBAAoB,OAAO,WAAW;AAC7E,kBAAM,QAAQ,IAAI;AAClB,uBACIA,SAAQ,aAAa,WAAW,YAAY,KAAK,cAAc,GAAG;AAAA,UAC1E,OACK;AAED,sBAAU,eAAe,oBAAoB,WAAW,cAAc,KAAK,OAAO,OAAO,WAAW;AAAA,UACxG;AAAA,QACJ;AACA,wBAAgB,MAAM,EAAE,WAAW;AAAA,MACvC;AAAA,IACJ;AACA,QAAI,cAAc,WAAW;AACzB,eAAS,QAAQ,MAAM,YAAY,CAAC,CAAC,IAAI,OAAO,MAAM,YAAY,CAAC,EAAE;AACrE,gBAAU,WAAW,QAAQ,OAAO,aAAa,WAAW,kBAAkB;AAAA,IAClF,WACS,cAAc,WAAW;AAC9B,mBAAa,OAAO,aAAa,SAAS;AAAA,IAC9C;AAAA,EACJ;AACA,WAAS,mBAAmBH,WAAU;AAClC,QAAI,WAAW,CAAC;AAChB,aAAS,MAAM,GAAG,MAAMA,UAAS,QAAQ,OAAO;AAC5C,UAAI,QAAQA,UAAS,GAAG;AACxB,UAAI,MAAM,MAAM;AAChB,UAAI,MAAM,GAAG,GAAG;AACZ,YAAI,SAAS,GAAG,GAAG;AACf,iBAAO,6BAA6B,OAAO,KAAK,oCAAoC,GAAG,MAAM,OAAO;AAAA,QACxG,OACK;AACD,mBAAS,GAAG,IAAI;AAAA,QACpB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,WAAS,aAAa,MAAM,OAAOU,QAAO,KAAK;AAC3C,aAAS,MAAMA,QAAO,MAAM,KAAK,OAAO;AACpC,UAAI,IAAI,MAAM,GAAG;AACjB,UAAI,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC;AAC7B,eAAO;AAAA,IACf;AAAA,EACJ;AACA,WAAS,WAAW,UAAU,OAAO,oBAAoB,YAAYJ,QAAO,YAAY;AACpF,QAAI,aAAa,OAAO;AACpB;AAAA,IACJ;AACA,QAAI,MAAM,MAAM,GAAG,KAAK,MAAM,UAAU,GAAG;AAEvC,cAAQ,WAAWA,MAAK,IAAI,WAAW,KAAK;AAAA,IAChD;AACA,QAAI,MAAO,MAAM,MAAM,SAAS;AAChC,QAAI,OAAO,SAAS,kBAAkB,GAAG;AACrC,UAAI,MAAM,MAAM,aAAa,QAAQ,GAAG;AACpC,gBAAQ,SAAS,KAAK,OAAO,kBAAkB;AAAA,MACnD,OACK;AACD,cAAM,qBAAqB;AAAA,MAC/B;AACA;AAAA,IACJ;AAKA,QAAI,OAAO,MAAM,QAAQ,KACrB,OAAO,SAAS,QAAQ,KACxB,MAAM,QAAQ,SAAS,QACtB,OAAO,MAAM,QAAQ,KAAK,OAAO,MAAM,MAAM,IAAI;AAClD,YAAM,oBAAoB,SAAS;AACnC;AAAA,IACJ;AACA,QAAIE;AACJ,QAAI,OAAO,MAAM;AACjB,QAAI,MAAM,IAAI,KAAK,MAAOA,KAAI,KAAK,IAAK,KAAK,MAAOA,KAAIA,GAAE,QAAS,GAAG;AAClE,MAAAA,GAAE,UAAU,KAAK;AAAA,IACrB;AACA,QAAI,QAAQ,SAAS;AACrB,QAAI,KAAK,MAAM;AACf,QAAI,MAAM,IAAI,KAAK,YAAY,KAAK,GAAG;AACnC,WAAKA,KAAI,GAAGA,KAAI,IAAI,OAAO,QAAQ,EAAEA;AACjC,YAAI,OAAOA,EAAC,EAAE,UAAU,KAAK;AACjC,UAAI,MAAOA,KAAI,KAAK,IAAK,KAAK,MAAOA,KAAIA,GAAE,MAAO;AAC9C,QAAAA,GAAE,UAAU,KAAK;AAAA,IACzB;AACA,QAAI,QAAQ,MAAM,IAAI,GAAG;AACrB,UAAI,MAAM,KAAK,KAAK,MAAM,EAAE,GAAG;AAC3B,YAAI,UAAU;AACV,yBAAe,KAAK,OAAO,IAAI,oBAAoB,UAAU;AAAA,MACrE,WACS,MAAM,EAAE,GAAG;AAChB,YAAI,OAAuC;AACvC,6BAAmB,EAAE;AAAA,QACzB;AACA,YAAI,MAAM,SAAS,IAAI;AACnB,UAAAL,SAAQ,eAAe,KAAK,EAAE;AAClC,kBAAU,KAAK,MAAM,IAAI,GAAG,GAAG,SAAS,GAAG,kBAAkB;AAAA,MACjE,WACS,MAAM,KAAK,GAAG;AACnB,qBAAa,OAAO,GAAG,MAAM,SAAS,CAAC;AAAA,MAC3C,WACS,MAAM,SAAS,IAAI,GAAG;AAC3B,QAAAA,SAAQ,eAAe,KAAK,EAAE;AAAA,MAClC;AAAA,IACJ,WACS,SAAS,SAAS,MAAM,MAAM;AACnC,MAAAA,SAAQ,eAAe,KAAK,MAAM,IAAI;AAAA,IAC1C;AACA,QAAI,MAAM,IAAI,GAAG;AACb,UAAI,MAAOK,KAAI,KAAK,IAAK,KAAK,MAAOA,KAAIA,GAAE,SAAU;AACjD,QAAAA,GAAE,UAAU,KAAK;AAAA,IACzB;AAAA,EACJ;AACA,WAAS,iBAAiB,OAAOG,QAAO,SAAS;AAG7C,QAAI,OAAO,OAAO,KAAK,MAAM,MAAM,MAAM,GAAG;AACxC,YAAM,OAAO,KAAK,gBAAgBA;AAAA,IACtC,OACK;AACD,eAAS,MAAM,GAAG,MAAMA,OAAM,QAAQ,EAAE,KAAK;AACzC,QAAAA,OAAM,GAAG,EAAE,KAAK,KAAK,OAAOA,OAAM,GAAG,CAAC;AAAA,MAC1C;AAAA,IACJ;AAAA,EACJ;AACA,MAAI,kBAAkB;AAKtB,MAAI,mBAAmB,QAAQ,yCAAyC;AAExE,WAAS,QAAQ,KAAK,OAAO,oBAAoB,QAAQ;AACrD,QAAIH;AACJ,QAAI,MAAM,MAAM,KAAK,OAAO,MAAM,MAAMR,YAAW,MAAM;AACzD,aAAS,UAAW,QAAQ,KAAK;AACjC,UAAM,MAAM;AACZ,QAAI,OAAO,MAAM,SAAS,KAAK,MAAM,MAAM,YAAY,GAAG;AACtD,YAAM,qBAAqB;AAC3B,aAAO;AAAA,IACX;AAEA,QAAI,OAAuC;AACvC,UAAI,CAAC,gBAAgB,KAAK,OAAO,MAAM,GAAG;AACtC,eAAO;AAAA,MACX;AAAA,IACJ;AACA,QAAI,MAAM,IAAI,GAAG;AACb,UAAI,MAAOQ,KAAI,KAAK,IAAK,KAAK,MAAOA,KAAIA,GAAE,IAAK;AAC5C,QAAAA;AAAA,UAAE;AAAA,UAAO;AAAA;AAAA,QAAoB;AACjC,UAAI,MAAOA,KAAI,MAAM,iBAAkB,GAAG;AAEtC,sBAAc,OAAO,kBAAkB;AACvC,eAAO;AAAA,MACX;AAAA,IACJ;AACA,QAAI,MAAM,GAAG,GAAG;AACZ,UAAI,MAAMR,SAAQ,GAAG;AAEjB,YAAI,CAAC,IAAI,cAAc,GAAG;AACtB,yBAAe,OAAOA,WAAU,kBAAkB;AAAA,QACtD,OACK;AAED,cAAI,MAAOQ,KAAI,IAAK,KAChB,MAAOA,KAAIA,GAAE,QAAS,KACtB,MAAOA,KAAIA,GAAE,SAAU,GAAG;AAC1B,gBAAIA,OAAM,IAAI,WAAW;AAErB,kBAAI,OAEkB;AAClB,kCAAkB;AAClB,wBAAQ,KAAK,YAAY,GAAG;AAC5B,wBAAQ,KAAK,sBAAsBA,EAAC;AACpC,wBAAQ,KAAK,sBAAsB,IAAI,SAAS;AAAA,cACpD;AACA,qBAAO;AAAA,YACX;AAAA,UACJ,OACK;AAED,gBAAI,gBAAgB;AACpB,gBAAI,YAAY,IAAI;AACpB,qBAAS,MAAM,GAAG,MAAMR,UAAS,QAAQ,OAAO;AAC5C,kBAAI,CAAC,aACD,CAAC,QAAQ,WAAWA,UAAS,GAAG,GAAG,oBAAoB,MAAM,GAAG;AAChE,gCAAgB;AAChB;AAAA,cACJ;AACA,0BAAY,UAAU;AAAA,YAC1B;AAGA,gBAAI,CAAC,iBAAiB,WAAW;AAE7B,kBAAI,OAEkB;AAClB,kCAAkB;AAClB,wBAAQ,KAAK,YAAY,GAAG;AAC5B,wBAAQ,KAAK,uCAAuC,IAAI,YAAYA,SAAQ;AAAA,cAChF;AACA,qBAAO;AAAA,YACX;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AACA,UAAI,MAAM,IAAI,GAAG;AACb,YAAI,aAAa;AACjB,iBAAS,OAAO,MAAM;AAClB,cAAI,CAAC,iBAAiB,GAAG,GAAG;AACxB,yBAAa;AACb,8BAAkB,OAAO,kBAAkB;AAC3C;AAAA,UACJ;AAAA,QACJ;AACA,YAAI,CAAC,cAAc,KAAK,OAAO,GAAG;AAE9B,mBAAS,KAAK,OAAO,CAAC;AAAA,QAC1B;AAAA,MACJ;AAAA,IACJ,WACS,IAAI,SAAS,MAAM,MAAM;AAC9B,UAAI,OAAO,MAAM;AAAA,IACrB;AACA,WAAO;AAAA,EACX;AACA,WAAS,gBAAgB,MAAM,OAAO,QAAQ;AAC1C,QAAI,MAAM,MAAM,GAAG,GAAG;AAClB,aAAQ,MAAM,IAAI,QAAQ,eAAe,MAAM,KAC1C,CAACK,kBAAiB,OAAO,MAAM,KAC5B,MAAM,IAAI,YAAY,OACjB,KAAK,WAAW,KAAK,QAAQ,YAAY;AAAA,IAC1D,OACK;AACD,aAAO,KAAK,cAAc,MAAM,YAAY,IAAI;AAAA,IACpD;AAAA,EACJ;AACA,SAAO,SAASO,OAAM,UAAU,OAAO,WAAW,YAAY;AAC1D,QAAI,QAAQ,KAAK,GAAG;AAChB,UAAI,MAAM,QAAQ;AACd,0BAAkB,QAAQ;AAC9B;AAAA,IACJ;AACA,QAAI,iBAAiB;AACrB,QAAI,qBAAqB,CAAC;AAC1B,QAAI,QAAQ,QAAQ,GAAG;AAEnB,uBAAiB;AACjB,gBAAU,OAAO,kBAAkB;AAAA,IACvC,OACK;AACD,UAAI,gBAAgB,MAAM,SAAS,QAAQ;AAC3C,UAAI,CAAC,iBAAiB,UAAU,UAAU,KAAK,GAAG;AAE9C,mBAAW,UAAU,OAAO,oBAAoB,MAAM,MAAM,UAAU;AAAA,MAC1E,OACK;AACD,YAAI,eAAe;AAIf,cAAI,SAAS,aAAa,KAAK,SAAS,aAAa,QAAQ,GAAG;AAC5D,qBAAS,gBAAgB,QAAQ;AACjC,wBAAY;AAAA,UAChB;AACA,cAAI,OAAO,SAAS,GAAG;AACnB,gBAAI,QAAQ,UAAU,OAAO,kBAAkB,GAAG;AAC9C,+BAAiB,OAAO,oBAAoB,IAAI;AAChD,qBAAO;AAAA,YACX,WACS,OAAuC;AAC5C,qBAAO,uQAIuB;AAAA,YAClC;AAAA,UACJ;AAGA,qBAAW,YAAY,QAAQ;AAAA,QACnC;AAEA,YAAI,SAAS,SAAS;AACtB,YAAI,YAAYT,SAAQ,WAAW,MAAM;AAEzC;AAAA,UAAU;AAAA,UAAO;AAAA;AAAA;AAAA;AAAA,UAIjB,OAAO,WAAW,OAAO;AAAA,UAAWA,SAAQ,YAAY,MAAM;AAAA,QAAC;AAE/D,YAAI,MAAM,MAAM,MAAM,GAAG;AACrB,cAAI,WAAW,MAAM;AACrB,cAAI,YAAY,YAAY,KAAK;AACjC,iBAAO,UAAU;AACb,qBAAS,MAAM,GAAG,MAAM,IAAI,QAAQ,QAAQ,EAAE,KAAK;AAC/C,kBAAI,QAAQ,GAAG,EAAE,QAAQ;AAAA,YAC7B;AACA,qBAAS,MAAM,MAAM;AACrB,gBAAI,WAAW;AACX,uBAAS,MAAM,GAAG,MAAM,IAAI,OAAO,QAAQ,EAAE,KAAK;AAC9C,oBAAI,OAAO,GAAG,EAAE,WAAW,QAAQ;AAAA,cACvC;AAIA,kBAAI,WAAW,SAAS,KAAK,KAAK;AAClC,kBAAI,SAAS,QAAQ;AAIjB,oBAAI,SAAS,SAAS,IAAI,MAAM,CAAC;AACjC,yBAAS,OAAO,GAAG,OAAO,OAAO,QAAQ,QAAQ;AAC7C,yBAAO,IAAI,EAAE;AAAA,gBACjB;AAAA,cACJ;AAAA,YACJ,OACK;AACD,0BAAY,QAAQ;AAAA,YACxB;AACA,uBAAW,SAAS;AAAA,UACxB;AAAA,QACJ;AAEA,YAAI,MAAM,SAAS,GAAG;AAClB,uBAAa,CAAC,QAAQ,GAAG,GAAG,CAAC;AAAA,QACjC,WACS,MAAM,SAAS,GAAG,GAAG;AAC1B,4BAAkB,QAAQ;AAAA,QAC9B;AAAA,MACJ;AAAA,IACJ;AACA,qBAAiB,OAAO,oBAAoB,cAAc;AAC1D,WAAO,MAAM;AAAA,EACjB;AACJ;AAEA,IAAI,eAAe;AAAA,EACf,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS,SAAS,iBAAiB,OAAO;AAEtC,qBAAiB,OAAO,SAAS;AAAA,EACrC;AACJ;AACA,SAAS,iBAAiB,UAAU,OAAO;AACvC,MAAI,SAAS,KAAK,cAAc,MAAM,KAAK,YAAY;AACnD,YAAQ,UAAU,KAAK;AAAA,EAC3B;AACJ;AACA,SAAS,QAAQ,UAAU,OAAO;AAC9B,MAAI,WAAW,aAAa;AAC5B,MAAI,YAAY,UAAU;AAC1B,MAAI,UAAU,oBAAoB,SAAS,KAAK,YAAY,SAAS,OAAO;AAC5E,MAAI,UAAU,oBAAoB,MAAM,KAAK,YAAY,MAAM,OAAO;AACtE,MAAI,iBAAiB,CAAC;AACtB,MAAI,oBAAoB,CAAC;AACzB,MAAI,KAAK,QAAQ;AACjB,OAAK,OAAO,SAAS;AACjB,aAAS,QAAQ,GAAG;AACpB,UAAM,QAAQ,GAAG;AACjB,QAAI,CAAC,QAAQ;AAET,eAAS,KAAK,QAAQ,OAAO,QAAQ;AACrC,UAAI,IAAI,OAAO,IAAI,IAAI,UAAU;AAC7B,uBAAe,KAAK,GAAG;AAAA,MAC3B;AAAA,IACJ,OACK;AAED,UAAI,WAAW,OAAO;AACtB,UAAI,SAAS,OAAO;AACpB,eAAS,KAAK,UAAU,OAAO,QAAQ;AACvC,UAAI,IAAI,OAAO,IAAI,IAAI,kBAAkB;AACrC,0BAAkB,KAAK,GAAG;AAAA,MAC9B;AAAA,IACJ;AAAA,EACJ;AACA,MAAI,eAAe,QAAQ;AACvB,QAAI,aAAa,WAAY;AACzB,eAAS,IAAI,GAAG,IAAI,eAAe,QAAQ,KAAK;AAC5C,iBAAS,eAAe,CAAC,GAAG,YAAY,OAAO,QAAQ;AAAA,MAC3D;AAAA,IACJ;AACA,QAAI,UAAU;AACV,qBAAe,OAAO,UAAU,UAAU;AAAA,IAC9C,OACK;AACD,iBAAW;AAAA,IACf;AAAA,EACJ;AACA,MAAI,kBAAkB,QAAQ;AAC1B,mBAAe,OAAO,aAAa,WAAY;AAC3C,eAAS,IAAI,GAAG,IAAI,kBAAkB,QAAQ,KAAK;AAC/C,iBAAS,kBAAkB,CAAC,GAAG,oBAAoB,OAAO,QAAQ;AAAA,MACtE;AAAA,IACJ,CAAC;AAAA,EACL;AACA,MAAI,CAAC,UAAU;AACX,SAAK,OAAO,SAAS;AACjB,UAAI,CAAC,QAAQ,GAAG,GAAG;AAEf,iBAAS,QAAQ,GAAG,GAAG,UAAU,UAAU,UAAU,SAAS;AAAA,MAClE;AAAA,IACJ;AAAA,EACJ;AACJ;AACA,IAAI,iBAAiB,uBAAO,OAAO,IAAI;AACvC,SAAS,oBAAoB,MAAM,IAAI;AACnC,MAAI,MAAM,uBAAO,OAAO,IAAI;AAC5B,MAAI,CAAC,MAAM;AAEP,WAAO;AAAA,EACX;AACA,MAAI,GAAG;AACP,OAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AAC9B,UAAM,KAAK,CAAC;AACZ,QAAI,CAAC,IAAI,WAAW;AAEhB,UAAI,YAAY;AAAA,IACpB;AACA,QAAI,cAAc,GAAG,CAAC,IAAI;AAC1B,QAAI,GAAG,eAAe,GAAG,YAAY,OAAO;AACxC,UAAI,WAAW,IAAI,OAAO,aAAa,IAAI,eAAe,OAAO,IAAI,IAAI;AACzE,UAAI,OAAO,aAAa,YAAY;AAChC,YAAI,MAAM;AAAA,UACN,MAAM;AAAA,UACN,QAAQ;AAAA,QACZ;AAAA,MACJ,OACK;AACD,YAAI,MAAM;AAAA,MACd;AAAA,IACJ;AACA,QAAI,MAAM,IAAI,OAAO,aAAa,GAAG,UAAU,cAAc,IAAI,MAAM,IAAI;AAAA,EAC/E;AAEA,SAAO;AACX;AACA,SAAS,cAAc,KAAK;AACxB,SAAQ,IAAI,WAAW,GAAG,OAAO,IAAI,MAAM,GAAG,EAAE,OAAO,OAAO,KAAK,IAAI,aAAa,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC;AACrG;AACA,SAAS,SAAS,KAAK,MAAM,OAAO,UAAU,WAAW;AACrD,MAAI,KAAK,IAAI,OAAO,IAAI,IAAI,IAAI;AAChC,MAAI,IAAI;AACJ,QAAI;AACA,SAAG,MAAM,KAAK,KAAK,OAAO,UAAU,SAAS;AAAA,IACjD,SACO,GAAG;AACN,kBAAY,GAAG,MAAM,SAAS,aAAa,OAAO,IAAI,MAAM,GAAG,EAAE,OAAO,MAAM,OAAO,CAAC;AAAA,IAC1F;AAAA,EACJ;AACJ;AAEA,IAAI,cAAc,CAAC,KAAK,YAAY;AAEpC,SAAS,YAAY,UAAU,OAAO;AAClC,MAAIb,QAAO,MAAM;AACjB,MAAI,MAAMA,KAAI,KAAKA,MAAK,KAAK,QAAQ,iBAAiB,OAAO;AACzD;AAAA,EACJ;AACA,MAAI,QAAQ,SAAS,KAAK,KAAK,KAAK,QAAQ,MAAM,KAAK,KAAK,GAAG;AAC3D;AAAA,EACJ;AACA,MAAI,KAAK,KAAK;AACd,MAAI,MAAM,MAAM;AAChB,MAAI,WAAW,SAAS,KAAK,SAAS,CAAC;AACvC,MAAIuB,SAAQ,MAAM,KAAK,SAAS,CAAC;AAEjC,MAAI,MAAMA,OAAM,MAAM,KAAK,OAAOA,OAAM,aAAa,GAAG;AACpD,IAAAA,SAAQ,MAAM,KAAK,QAAQ1B,QAAO,CAAC,GAAG0B,MAAK;AAAA,EAC/C;AACA,OAAK,OAAOA,QAAO;AACf,UAAMA,OAAM,GAAG;AACf,UAAM,SAAS,GAAG;AAClB,QAAI,QAAQ,KAAK;AACb,cAAQ,KAAK,KAAK,KAAK,MAAM,KAAK,GAAG;AAAA,IACzC;AAAA,EACJ;AAIA,OAAK,QAAQ,WAAWA,OAAM,UAAU,SAAS,OAAO;AACpD,YAAQ,KAAK,SAASA,OAAM,KAAK;AAAA,EACrC;AACA,OAAK,OAAO,UAAU;AAClB,QAAI,QAAQA,OAAM,GAAG,CAAC,GAAG;AACrB,UAAI,QAAQ,GAAG,GAAG;AACd,YAAI,kBAAkB,SAAS,aAAa,GAAG,CAAC;AAAA,MACpD,WACS,CAAC,iBAAiB,GAAG,GAAG;AAC7B,YAAI,gBAAgB,GAAG;AAAA,MAC3B;AAAA,IACJ;AAAA,EACJ;AACJ;AACA,SAAS,QAAQ,IAAI,KAAK,OAAO,SAAS;AACtC,MAAI,WAAW,GAAG,QAAQ,QAAQ,GAAG,IAAI,IAAI;AACzC,gBAAY,IAAI,KAAK,KAAK;AAAA,EAC9B,WACS,cAAc,GAAG,GAAG;AAGzB,QAAI,iBAAiB,KAAK,GAAG;AACzB,SAAG,gBAAgB,GAAG;AAAA,IAC1B,OACK;AAGD,cAAQ,QAAQ,qBAAqB,GAAG,YAAY,UAAU,SAAS;AACvE,SAAG,aAAa,KAAK,KAAK;AAAA,IAC9B;AAAA,EACJ,WACS,iBAAiB,GAAG,GAAG;AAC5B,OAAG,aAAa,KAAK,uBAAuB,KAAK,KAAK,CAAC;AAAA,EAC3D,WACS,QAAQ,GAAG,GAAG;AACnB,QAAI,iBAAiB,KAAK,GAAG;AACzB,SAAG,kBAAkB,SAAS,aAAa,GAAG,CAAC;AAAA,IACnD,OACK;AACD,SAAG,eAAe,SAAS,KAAK,KAAK;AAAA,IACzC;AAAA,EACJ,OACK;AACD,gBAAY,IAAI,KAAK,KAAK;AAAA,EAC9B;AACJ;AACA,SAAS,YAAY,IAAI,KAAK,OAAO;AACjC,MAAI,iBAAiB,KAAK,GAAG;AACzB,OAAG,gBAAgB,GAAG;AAAA,EAC1B,OACK;AAKD,QAAI,QACA,CAAC,SACD,GAAG,YAAY,cACf,QAAQ,iBACR,UAAU,MACV,CAAC,GAAG,QAAQ;AACZ,UAAI,YAAY,SAAU,GAAG;AACzB,UAAE,yBAAyB;AAC3B,WAAG,oBAAoB,SAAS,SAAS;AAAA,MAC7C;AACA,SAAG,iBAAiB,SAAS,SAAS;AAEtC,SAAG,SAAS;AAAA,IAChB;AACA,OAAG,aAAa,KAAK,KAAK;AAAA,EAC9B;AACJ;AACA,IAAI,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AACZ;AAEA,SAAS,YAAY,UAAU,OAAO;AAClC,MAAI,KAAK,MAAM;AACf,MAAI,OAAO,MAAM;AACjB,MAAI,UAAU,SAAS;AACvB,MAAI,QAAQ,KAAK,WAAW,KACxB,QAAQ,KAAK,KAAK,MACjB,QAAQ,OAAO,KACX,QAAQ,QAAQ,WAAW,KAAK,QAAQ,QAAQ,KAAK,IAAK;AAC/D;AAAA,EACJ;AACA,MAAI,MAAM,iBAAiB,KAAK;AAEhC,MAAI,kBAAkB,GAAG;AACzB,MAAI,MAAM,eAAe,GAAG;AACxB,UAAM,OAAO,KAAK,eAAe,eAAe,CAAC;AAAA,EACrD;AAEA,MAAI,QAAQ,GAAG,YAAY;AACvB,OAAG,aAAa,SAAS,GAAG;AAC5B,OAAG,aAAa;AAAA,EACpB;AACJ;AACA,IAAI,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,QAAQ;AACZ;AAEA,IAAI,sBAAsB;AAC1B,SAAS,aAAa,KAAK;AACvB,MAAI,WAAW;AACf,MAAI,WAAW;AACf,MAAI,mBAAmB;AACvB,MAAI,UAAU;AACd,MAAI,QAAQ;AACZ,MAAI,SAAS;AACb,MAAI,QAAQ;AACZ,MAAI,kBAAkB;AACtB,MAAI,GAAG,MAAM,GAAG,YAAY;AAC5B,OAAK,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AAC7B,WAAO;AACP,QAAI,IAAI,WAAW,CAAC;AACpB,QAAI,UAAU;AACV,UAAI,MAAM,MAAQ,SAAS;AACvB,mBAAW;AAAA,IACnB,WACS,UAAU;AACf,UAAI,MAAM,MAAQ,SAAS;AACvB,mBAAW;AAAA,IACnB,WACS,kBAAkB;AACvB,UAAI,MAAM,MAAQ,SAAS;AACvB,2BAAmB;AAAA,IAC3B,WACS,SAAS;AACd,UAAI,MAAM,MAAQ,SAAS;AACvB,kBAAU;AAAA,IAClB,WACS,MAAM;AAAA,IACX,IAAI,WAAW,IAAI,CAAC,MAAM,OAC1B,IAAI,WAAW,IAAI,CAAC,MAAM,OAC1B,CAAC,SACD,CAAC,UACD,CAAC,OAAO;AACR,UAAI,eAAe,QAAW;AAE1B,0BAAkB,IAAI;AACtB,qBAAa,IAAI,MAAM,GAAG,CAAC,EAAE,KAAK;AAAA,MACtC,OACK;AACD,mBAAW;AAAA,MACf;AAAA,IACJ,OACK;AACD,cAAQ,GAAG;AAAA,QACP,KAAK;AACD,qBAAW;AACX;AAAA;AAAA,QACJ,KAAK;AACD,qBAAW;AACX;AAAA;AAAA,QACJ,KAAK;AACD,6BAAmB;AACnB;AAAA;AAAA,QACJ,KAAK;AACD;AACA;AAAA;AAAA,QACJ,KAAK;AACD;AACA;AAAA;AAAA,QACJ,KAAK;AACD;AACA;AAAA;AAAA,QACJ,KAAK;AACD;AACA;AAAA;AAAA,QACJ,KAAK;AACD;AACA;AAAA;AAAA,QACJ,KAAK;AACD;AACA;AAAA,MACR;AACA,UAAI,MAAM,IAAM;AAEZ,YAAI,IAAI,IAAI;AACZ,YAAI,IAEF;AAEF,eAAO,KAAK,GAAG,KAAK;AAChB,cAAI,IAAI,OAAO,CAAC;AAChB,cAAI,MAAM;AACN;AAAA,QACR;AACA,YAAI,CAAC,KAAK,CAAC,oBAAoB,KAAK,CAAC,GAAG;AACpC,oBAAU;AAAA,QACd;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,MAAI,eAAe,QAAW;AAC1B,iBAAa,IAAI,MAAM,GAAG,CAAC,EAAE,KAAK;AAAA,EACtC,WACS,oBAAoB,GAAG;AAC5B,eAAW;AAAA,EACf;AACA,WAAS,aAAa;AAClB,KAAC,YAAY,UAAU,CAAC,IAAI,KAAK,IAAI,MAAM,iBAAiB,CAAC,EAAE,KAAK,CAAC;AACrE,sBAAkB,IAAI;AAAA,EAC1B;AACA,MAAI,SAAS;AACT,SAAK,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACjC,mBAAa,WAAW,YAAY,QAAQ,CAAC,CAAC;AAAA,IAClD;AAAA,EACJ;AACA,SAAO;AACX;AACA,SAAS,WAAW,KAAKtB,SAAQ;AAC7B,MAAI,IAAIA,QAAO,QAAQ,GAAG;AAC1B,MAAI,IAAI,GAAG;AAEP,WAAO,OAAQ,OAAOA,SAAQ,KAAM,EAAE,OAAO,KAAK,GAAG;AAAA,EACzD,OACK;AACD,QAAI,SAASA,QAAO,MAAM,GAAG,CAAC;AAC9B,QAAI,OAAOA,QAAO,MAAM,IAAI,CAAC;AAC7B,WAAO,OAAQ,OAAO,QAAQ,KAAM,EAAE,OAAO,GAAG,EAAE,OAAO,SAAS,MAAM,MAAM,OAAO,IAAI;AAAA,EAC7F;AACJ;AAGA,SAAS,SAAS,KAAKuB,QAAO;AAC1B,UAAQ,MAAM,mBAAmB,OAAO,GAAG,CAAC;AAChD;AAEA,SAAS,oBAAoBZ,UAAS,KAAK;AACvC,SAAOA,WAAUA,SAAQ,IAAI,SAAU,GAAG;AAAE,WAAO,EAAE,GAAG;AAAA,EAAG,CAAC,EAAE,OAAO,SAAU,GAAG;AAAE,WAAO;AAAA,EAAG,CAAC,IAAI,CAAC;AACxG;AACA,SAAS,QAAQ,IAAI,MAAM,OAAOY,QAAO,SAAS;AAC9C,GAAC,GAAG,UAAU,GAAG,QAAQ,CAAC,IAAI,KAAK,aAAa,EAAE,MAAY,OAAc,QAAiB,GAAGA,MAAK,CAAC;AACtG,KAAG,QAAQ;AACf;AACA,SAAS,QAAQ,IAAI,MAAM,OAAOA,QAAO,SAAS;AAC9C,MAAID,SAAQ,UACN,GAAG,iBAAiB,GAAG,eAAe,CAAC,KACvC,GAAG,UAAU,GAAG,QAAQ,CAAC;AAC/B,EAAAA,OAAM,KAAK,aAAa,EAAE,MAAY,OAAc,QAAiB,GAAGC,MAAK,CAAC;AAC9E,KAAG,QAAQ;AACf;AAEA,SAAS,WAAW,IAAI,MAAM,OAAOA,QAAO;AACxC,KAAG,SAAS,IAAI,IAAI;AACpB,KAAG,UAAU,KAAK,aAAa,EAAE,MAAY,MAAa,GAAGA,MAAK,CAAC;AACvE;AACA,SAAS,aAAa,IAAI,MAAM,SAAS,OAAO,KAAK,cAAc,WAAWA,QAAO;AACjF,GAAC,GAAG,eAAe,GAAG,aAAa,CAAC,IAAI,KAAK,aAAa;AAAA,IACtD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,GAAGA,MAAK,CAAC;AACT,KAAG,QAAQ;AACf;AACA,SAAS,sBAAsB,QAAQ,MAAM,SAAS;AAClD,SAAO,UAAU,MAAM,OAAO,MAAM,IAAK,EAAE,OAAO,QAAQ,IAAK,IAAI,SAAS;AAChF;AACA,SAAS,WAAW,IAAI,MAAM,OAAO,WAAW,WAAWC,OAAMD,QAAO,SAAS;AAC7E,cAAY,aAAa;AAGzB,MAAI,OAAyF;AACzF,IAAAC,MAAK,4FAC+CD,MAAK;AAAA,EAC7D;AAIA,MAAI,UAAU,OAAO;AACjB,QAAI,SAAS;AACT,aAAO,IAAI,OAAO,MAAM,6BAA6B,EAAE,OAAO,MAAM,GAAG;AAAA,IAC3E,WACS,SAAS,SAAS;AACvB,aAAO;AACP,aAAO,UAAU;AAAA,IACrB;AAAA,EACJ,WACS,UAAU,QAAQ;AACvB,QAAI,SAAS;AACT,aAAO,IAAI,OAAO,MAAM,yBAAyB,EAAE,OAAO,MAAM,GAAG;AAAA,IACvE,WACS,SAAS,SAAS;AACvB,aAAO;AAAA,IACX;AAAA,EACJ;AAEA,MAAI,UAAU,SAAS;AACnB,WAAO,UAAU;AACjB,WAAO,sBAAsB,KAAK,MAAM,OAAO;AAAA,EACnD;AACA,MAAI,UAAU,MAAM;AAChB,WAAO,UAAU;AACjB,WAAO,sBAAsB,KAAK,MAAM,OAAO;AAAA,EACnD;AAEA,MAAI,UAAU,SAAS;AACnB,WAAO,UAAU;AACjB,WAAO,sBAAsB,KAAK,MAAM,OAAO;AAAA,EACnD;AACA,MAAIE;AACJ,MAAI,UAAU,QAAQ;AAClB,WAAO,UAAU;AACjB,IAAAA,UAAS,GAAG,iBAAiB,GAAG,eAAe,CAAC;AAAA,EACpD,OACK;AACD,IAAAA,UAAS,GAAG,WAAW,GAAG,SAAS,CAAC;AAAA,EACxC;AACA,MAAI,aAAa,aAAa,EAAE,OAAO,MAAM,KAAK,GAAG,QAAiB,GAAGF,MAAK;AAC9E,MAAI,cAAc,aAAa;AAC3B,eAAW,YAAY;AAAA,EAC3B;AACA,MAAI,WAAWE,QAAO,IAAI;AAE1B,MAAI,MAAM,QAAQ,QAAQ,GAAG;AACzB,gBAAY,SAAS,QAAQ,UAAU,IAAI,SAAS,KAAK,UAAU;AAAA,EACvE,WACS,UAAU;AACf,IAAAA,QAAO,IAAI,IAAI,YAAY,CAAC,YAAY,QAAQ,IAAI,CAAC,UAAU,UAAU;AAAA,EAC7E,OACK;AACD,IAAAA,QAAO,IAAI,IAAI;AAAA,EACnB;AACA,KAAG,QAAQ;AACf;AACA,SAAS,kBAAkB,IAAI,MAAM;AACjC,SAAQ,GAAG,YAAY,MAAM,IAAI,KAC7B,GAAG,YAAY,YAAY,IAAI,KAC/B,GAAG,YAAY,IAAI;AAC3B;AACA,SAAS,eAAe,IAAI,MAAM,WAAW;AACzC,MAAI,eAAe,iBAAiB,IAAI,MAAM,IAAI,KAAK,iBAAiB,IAAI,YAAY,IAAI;AAC5F,MAAI,gBAAgB,MAAM;AACtB,WAAO,aAAa,YAAY;AAAA,EACpC,WACS,cAAc,OAAO;AAC1B,QAAI,cAAc,iBAAiB,IAAI,IAAI;AAC3C,QAAI,eAAe,MAAM;AACrB,aAAO,KAAK,UAAU,WAAW;AAAA,IACrC;AAAA,EACJ;AACJ;AAKA,SAAS,iBAAiB,IAAI,MAAM,eAAe;AAC/C,MAAI;AACJ,OAAK,MAAM,GAAG,SAAS,IAAI,MAAM,MAAM;AACnC,QAAI,OAAO,GAAG;AACd,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAG,KAAK;AACzC,UAAI,KAAK,CAAC,EAAE,SAAS,MAAM;AACvB,aAAK,OAAO,GAAG,CAAC;AAChB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,MAAI,eAAe;AACf,WAAO,GAAG,SAAS,IAAI;AAAA,EAC3B;AACA,SAAO;AACX;AACA,SAAS,wBAAwB,IAAI,MAAM;AACvC,MAAI,OAAO,GAAG;AACd,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAG,KAAK;AACzC,QAAI,OAAO,KAAK,CAAC;AACjB,QAAI,KAAK,KAAK,KAAK,IAAI,GAAG;AACtB,WAAK,OAAO,GAAG,CAAC;AAChB,aAAO;AAAA,IACX;AAAA,EACJ;AACJ;AACA,SAAS,aAAa,MAAMF,QAAO;AAC/B,MAAIA,QAAO;AACP,QAAIA,OAAM,SAAS,MAAM;AACrB,WAAK,QAAQA,OAAM;AAAA,IACvB;AACA,QAAIA,OAAM,OAAO,MAAM;AACnB,WAAK,MAAMA,OAAM;AAAA,IACrB;AAAA,EACJ;AACA,SAAO;AACX;AAKA,SAAS,kBAAkB,IAAI,OAAO,WAAW;AAC7C,MAAIpB,MAAK,aAAa,CAAC,GAAG,SAASA,IAAG,QAAQuB,QAAOvB,IAAG;AACxD,MAAI,sBAAsB;AAC1B,MAAI,kBAAkB;AACtB,MAAIuB,OAAM;AACN,sBACI,WAAW,OAAO,qBAAqB,eAAe,IAClD,KAAK,OAAO,qBAAqB,SAAS,IAC1C,KAAK,OAAO,qBAAqB,GAAG;AAAA,EAChD;AACA,MAAI,QAAQ;AACR,sBAAkB,MAAM,OAAO,iBAAiB,GAAG;AAAA,EACvD;AACA,MAAI,aAAa,kBAAkB,OAAO,eAAe;AACzD,KAAG,QAAQ;AAAA,IACP,OAAO,IAAI,OAAO,OAAO,GAAG;AAAA,IAC5B,YAAY,KAAK,UAAU,KAAK;AAAA,IAChC,UAAU,aAAa,OAAO,qBAAqB,KAAK,EAAE,OAAO,YAAY,GAAG;AAAA,EACpF;AACJ;AAIA,SAAS,kBAAkB,OAAO,YAAY;AAC1C,MAAI,MAAM,WAAW,KAAK;AAC1B,MAAI,IAAI,QAAQ,MAAM;AAClB,WAAO,GAAG,OAAO,OAAO,GAAG,EAAE,OAAO,UAAU;AAAA,EAClD,OACK;AACD,WAAO,QAAQ,OAAO,IAAI,KAAK,IAAI,EAAE,OAAO,IAAI,KAAK,IAAI,EAAE,OAAO,YAAY,GAAG;AAAA,EACrF;AACJ;AAeA,IAAI;AAAJ,IAAS;AAAT,IAAc;AAAd,IAAmB;AAAnB,IAA0B;AAA1B,IAAyC;AACzC,SAAS,WAAW,KAAK;AAGrB,QAAM,IAAI,KAAK;AACf,QAAM,IAAI;AACV,MAAI,IAAI,QAAQ,GAAG,IAAI,KAAK,IAAI,YAAY,GAAG,IAAI,MAAM,GAAG;AACxD,YAAQ,IAAI,YAAY,GAAG;AAC3B,QAAI,QAAQ,IAAI;AACZ,aAAO;AAAA,QACH,KAAK,IAAI,MAAM,GAAG,KAAK;AAAA,QACvB,KAAK,MAAM,IAAI,MAAM,QAAQ,CAAC,IAAI;AAAA,MACtC;AAAA,IACJ,OACK;AACD,aAAO;AAAA,QACH,KAAK;AAAA,QACL,KAAK;AAAA,MACT;AAAA,IACJ;AAAA,EACJ;AACA,QAAM;AACN,UAAQ,gBAAgB,mBAAmB;AAC3C,SAAO,CAAC,IAAI,GAAG;AACX,UAAM,KAAK;AAEX,QAAI,cAAc,GAAG,GAAG;AACpB,kBAAY,GAAG;AAAA,IACnB,WACS,QAAQ,IAAM;AACnB,mBAAa,GAAG;AAAA,IACpB;AAAA,EACJ;AACA,SAAO;AAAA,IACH,KAAK,IAAI,MAAM,GAAG,aAAa;AAAA,IAC/B,KAAK,IAAI,MAAM,gBAAgB,GAAG,gBAAgB;AAAA,EACtD;AACJ;AACA,SAAS,OAAO;AACZ,SAAO,IAAI,WAAW,EAAE,KAAK;AACjC;AACA,SAAS,MAAM;AACX,SAAO,SAAS;AACpB;AACA,SAAS,cAAcC,MAAK;AACxB,SAAOA,SAAQ,MAAQA,SAAQ;AACnC;AACA,SAAS,aAAaA,MAAK;AACvB,MAAI,YAAY;AAChB,kBAAgB;AAChB,SAAO,CAAC,IAAI,GAAG;AACX,IAAAA,OAAM,KAAK;AACX,QAAI,cAAcA,IAAG,GAAG;AACpB,kBAAYA,IAAG;AACf;AAAA,IACJ;AACA,QAAIA,SAAQ;AACR;AACJ,QAAIA,SAAQ;AACR;AACJ,QAAI,cAAc,GAAG;AACjB,yBAAmB;AACnB;AAAA,IACJ;AAAA,EACJ;AACJ;AACA,SAAS,YAAYA,MAAK;AACtB,MAAI,cAAcA;AAClB,SAAO,CAAC,IAAI,GAAG;AACX,IAAAA,OAAM,KAAK;AACX,QAAIA,SAAQ,aAAa;AACrB;AAAA,IACJ;AAAA,EACJ;AACJ;AAEA,IAAI;AAGJ,IAAI,cAAc;AAClB,IAAI,uBAAuB;AAC3B,SAAS,QAAQ,IAAI,KAAK,OAAO;AAC7B,WAAS;AACT,MAAI,QAAQ,IAAI;AAChB,MAAI,YAAY,IAAI;AACpB,MAAI,MAAM,GAAG;AACb,MAAIhC,QAAO,GAAG,SAAS;AACvB,MAAI,OAAuC;AAGvC,QAAI,QAAQ,WAAWA,UAAS,QAAQ;AACpC,aAAO,IAAI,OAAO,GAAG,KAAK,YAAa,EAAE,OAAO,OAAO,mBAAsB,IACzE,kEAAkE,GAAG,YAAY,SAAS,CAAC;AAAA,IACnG;AAAA,EACJ;AACA,MAAI,GAAG,WAAW;AACd,sBAAkB,IAAI,OAAO,SAAS;AAEtC,WAAO;AAAA,EACX,WACS,QAAQ,UAAU;AACvB,cAAU,IAAI,OAAO,SAAS;AAAA,EAClC,WACS,QAAQ,WAAWA,UAAS,YAAY;AAC7C,qBAAiB,IAAI,OAAO,SAAS;AAAA,EACzC,WACS,QAAQ,WAAWA,UAAS,SAAS;AAC1C,kBAAc,IAAI,OAAO,SAAS;AAAA,EACtC,WACS,QAAQ,WAAW,QAAQ,YAAY;AAC5C,oBAAgB,IAAI,OAAO,SAAS;AAAA,EACxC,WACS,CAAC,OAAO,cAAc,GAAG,GAAG;AACjC,sBAAkB,IAAI,OAAO,SAAS;AAEtC,WAAO;AAAA,EACX,WACS,OAAuC;AAC5C,WAAO,IAAI,OAAO,GAAG,KAAK,YAAa,EAAE,OAAO,OAAO,MAAO,IAC1D,oLAEwE,GAAG,YAAY,SAAS,CAAC;AAAA,EACzG;AAEA,SAAO;AACX;AACA,SAAS,iBAAiB,IAAI,OAAO,WAAW;AAC5C,MAAI,SAAS,aAAa,UAAU;AACpC,MAAI,eAAe,eAAe,IAAI,OAAO,KAAK;AAClD,MAAI,mBAAmB,eAAe,IAAI,YAAY,KAAK;AAC3D,MAAI,oBAAoB,eAAe,IAAI,aAAa,KAAK;AAC7D,UAAQ,IAAI,WAAW,iBAAiB,OAAO,OAAO,GAAG,IACrD,OAAO,OAAO,OAAO,GAAG,EAAE,OAAO,cAAc,MAAM,KACpD,qBAAqB,SAChB,KAAK,OAAO,OAAO,GAAG,IACtB,OAAO,OAAO,OAAO,GAAG,EAAE,OAAO,kBAAkB,GAAG,EAAE;AAClE,aAAW,IAAI,UAAU,WAAW,OAAO,OAAO,GAAG,IACjD,wBACA,qBAAqB,OAAO,kBAAkB,KAAK,EAAE,OAAO,mBAAmB,IAAI,IACnF,4BACA,WAAW,OAAO,SAAS,QAAQ,eAAe,MAAM,cAAc,GAAG,IACzE,qBACA,4BAA4B,OAAO,kBAAkB,OAAO,mBAAmB,GAAG,IAAI,IACtF,iBAAiB,OAAO,kBAAkB,OAAO,2CAA2C,GAAG,IAAI,IACnG,SAAS,OAAO,kBAAkB,OAAO,KAAK,GAAG,GAAG,GAAG,MAAM,IAAI;AACzE;AACA,SAAS,cAAc,IAAI,OAAO,WAAW;AACzC,MAAI,SAAS,aAAa,UAAU;AACpC,MAAI,eAAe,eAAe,IAAI,OAAO,KAAK;AAClD,iBAAe,SAAS,MAAM,OAAO,cAAc,GAAG,IAAI;AAC1D,UAAQ,IAAI,WAAW,MAAM,OAAO,OAAO,GAAG,EAAE,OAAO,cAAc,GAAG,CAAC;AACzE,aAAW,IAAI,UAAU,kBAAkB,OAAO,YAAY,GAAG,MAAM,IAAI;AAC/E;AACA,SAAS,UAAU,IAAI,OAAO,WAAW;AACrC,MAAI,SAAS,aAAa,UAAU;AACpC,MAAI,cAAc,oJAGd,UAAU,OAAO,SAAS,YAAY,OAAO,IAAI;AACrD,MAAI,aAAa;AACjB,MAAI,OAAO,uBAAuB,OAAO,aAAa,GAAG;AACzD,SAAO,GAAG,OAAO,MAAM,GAAG,EAAE,OAAO,kBAAkB,OAAO,UAAU,CAAC;AACvE,aAAW,IAAI,UAAU,MAAM,MAAM,IAAI;AAC7C;AACA,SAAS,gBAAgB,IAAI,OAAO,WAAW;AAC3C,MAAIA,QAAO,GAAG,SAAS;AAGvB,MAAI,OAAuC;AACvC,QAAI,UAAU,GAAG,SAAS,cAAc,KAAK,GAAG,SAAS,QAAQ;AACjE,QAAI,cAAc,GAAG,SAAS,aAAa,KAAK,GAAG,SAAS,OAAO;AACnE,QAAI,WAAW,CAAC,aAAa;AACzB,UAAI,UAAU,GAAG,SAAS,cAAc,IAAI,iBAAiB;AAC7D,aAAO,GAAG,OAAO,SAAS,IAAK,EAAE,OAAO,SAAS,+CAAgD,IAC7F,oEAAoE,GAAG,YAAY,OAAO,CAAC;AAAA,IACnG;AAAA,EACJ;AACA,MAAIQ,MAAK,aAAa,CAAC,GAAG,OAAOA,IAAG,MAAM,SAASA,IAAG,QAAQuB,QAAOvB,IAAG;AACxE,MAAI,uBAAuB,CAAC,QAAQR,UAAS;AAC7C,MAAI,QAAQ,OAAO,WAAWA,UAAS,UAAU,cAAc;AAC/D,MAAI,kBAAkB;AACtB,MAAI+B,OAAM;AACN,sBAAkB;AAAA,EACtB;AACA,MAAI,QAAQ;AACR,sBAAkB,MAAM,OAAO,iBAAiB,GAAG;AAAA,EACvD;AACA,MAAI,OAAO,kBAAkB,OAAO,eAAe;AACnD,MAAI,sBAAsB;AACtB,WAAO,qCAAqC,OAAO,IAAI;AAAA,EAC3D;AACA,UAAQ,IAAI,SAAS,IAAI,OAAO,OAAO,GAAG,CAAC;AAC3C,aAAW,IAAI,OAAO,MAAM,MAAM,IAAI;AACtC,MAAIA,SAAQ,QAAQ;AAChB,eAAW,IAAI,QAAQ,gBAAgB;AAAA,EAC3C;AACJ;AAMA,SAAS,gBAAgBE,KAAI;AAEzB,MAAI,MAAMA,IAAG,WAAW,CAAC,GAAG;AAExB,QAAI,UAAU,OAAO,WAAW;AAChC,IAAAA,IAAG,OAAO,IAAI,CAAC,EAAE,OAAOA,IAAG,WAAW,GAAGA,IAAG,OAAO,KAAK,CAAC,CAAC;AAC1D,WAAOA,IAAG,WAAW;AAAA,EACzB;AAIA,MAAI,MAAMA,IAAG,oBAAoB,CAAC,GAAG;AACjC,IAAAA,IAAG,SAAS,CAAC,EAAE,OAAOA,IAAG,oBAAoB,GAAGA,IAAG,UAAU,CAAC,CAAC;AAC/D,WAAOA,IAAG,oBAAoB;AAAA,EAClC;AACJ;AACA,IAAI;AACJ,SAAS,kBAAkB,OAAO,SAAS,SAAS;AAChD,MAAI,UAAU;AACd,SAAO,SAAS,cAAc;AAC1B,QAAI,MAAM,QAAQ,MAAM,MAAM,SAAS;AACvC,QAAI,QAAQ,MAAM;AACd,MAAAf,QAAO,OAAO,aAAa,SAAS,OAAO;AAAA,IAC/C;AAAA,EACJ;AACJ;AAIA,IAAI,kBAAkB,oBAAoB,EAAE,QAAQ,OAAO,KAAK,CAAC,CAAC,KAAK;AACvE,SAAS,IAAI,MAAM,SAAS,SAAS,SAAS;AAO1C,MAAI,iBAAiB;AACjB,QAAI,sBAAsB;AAC1B,QAAI,aAAa;AAEjB,cAAU,WAAW,WAAW,SAAU,GAAG;AACzC;AAAA;AAAA;AAAA;AAAA,QAIA,EAAE,WAAW,EAAE;AAAA,QAEX,EAAE,aAAa;AAAA;AAAA;AAAA,QAIf,EAAE,aAAa;AAAA;AAAA;AAAA,QAIf,EAAE,OAAO,kBAAkB;AAAA,QAAU;AACrC,eAAO,WAAW,MAAM,MAAM,SAAS;AAAA,MAC3C;AAAA,IACJ;AAAA,EACJ;AACA,SAAO,iBAAiB,MAAM,SAAS,kBAAkB,EAAE,SAAkB,QAAiB,IAAI,OAAO;AAC7G;AACA,SAASA,QAAO,MAAM,SAAS,SAAS,SAAS;AAC7C,GAAC,WAAW,QAAQ;AAAA,IAAoB;AAAA;AAAA,IAExC,QAAQ,YAAY;AAAA,IAAS;AAAA,EAAO;AACxC;AACA,SAAS,mBAAmB,UAAU,OAAO;AACzC,MAAI,QAAQ,SAAS,KAAK,EAAE,KAAK,QAAQ,MAAM,KAAK,EAAE,GAAG;AACrD;AAAA,EACJ;AACA,MAAIe,MAAK,MAAM,KAAK,MAAM,CAAC;AAC3B,MAAI,QAAQ,SAAS,KAAK,MAAM,CAAC;AAGjC,WAAS,MAAM,OAAO,SAAS;AAC/B,kBAAgBA,GAAE;AAClB,kBAAgBA,KAAI,OAAO,KAAKf,SAAQ,mBAAmB,MAAM,OAAO;AACxE,WAAS;AACb;AACA,IAAI,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA;AAAA,EAER,SAAS,SAAU,OAAO;AAAE,WAAO,mBAAmB,OAAO,SAAS;AAAA,EAAG;AAC7E;AAEA,IAAI;AACJ,SAAS,eAAe,UAAU,OAAO;AACrC,MAAI,QAAQ,SAAS,KAAK,QAAQ,KAAK,QAAQ,MAAM,KAAK,QAAQ,GAAG;AACjE;AAAA,EACJ;AACA,MAAI,KAAK;AACT,MAAI,MAAM,MAAM;AAChB,MAAI,WAAW,SAAS,KAAK,YAAY,CAAC;AAC1C,MAAIhB,SAAQ,MAAM,KAAK,YAAY,CAAC;AAEpC,MAAI,MAAMA,OAAM,MAAM,KAAK,OAAOA,OAAM,aAAa,GAAG;AACpD,IAAAA,SAAQ,MAAM,KAAK,WAAWD,QAAO,CAAC,GAAGC,MAAK;AAAA,EAClD;AACA,OAAK,OAAO,UAAU;AAClB,QAAI,EAAE,OAAOA,SAAQ;AACjB,UAAI,GAAG,IAAI;AAAA,IACf;AAAA,EACJ;AACA,OAAK,OAAOA,QAAO;AACf,UAAMA,OAAM,GAAG;AAIf,QAAI,QAAQ,iBAAiB,QAAQ,aAAa;AAC9C,UAAI,MAAM;AACN,cAAM,SAAS,SAAS;AAC5B,UAAI,QAAQ,SAAS,GAAG;AACpB;AAGJ,UAAI,IAAI,WAAW,WAAW,GAAG;AAC7B,YAAI,YAAY,IAAI,WAAW,CAAC,CAAC;AAAA,MACrC;AAAA,IACJ;AACA,QAAI,QAAQ,WAAW,IAAI,YAAY,YAAY;AAG/C,UAAI,SAAS;AAEb,UAAI,SAAS,QAAQ,GAAG,IAAI,KAAK,OAAO,GAAG;AAC3C,UAAI,kBAAkB,KAAK,MAAM,GAAG;AAChC,YAAI,QAAQ;AAAA,MAChB;AAAA,IACJ,WACS,QAAQ,eACb,MAAM,IAAI,OAAO,KACjB,QAAQ,IAAI,SAAS,GAAG;AAExB,qBAAe,gBAAgB,SAAS,cAAc,KAAK;AAC3D,mBAAa,YAAY,QAAQ,OAAO,KAAK,QAAQ;AACrD,UAAI,MAAM,aAAa;AACvB,aAAO,IAAI,YAAY;AACnB,YAAI,YAAY,IAAI,UAAU;AAAA,MAClC;AACA,aAAO,IAAI,YAAY;AACnB,YAAI,YAAY,IAAI,UAAU;AAAA,MAClC;AAAA,IACJ;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,QAAQ,SAAS,GAAG;AAAA,MAAG;AAGnB,UAAI;AACA,YAAI,GAAG,IAAI;AAAA,MACf,SACO,GAAG;AAAA,MAAE;AAAA,IAChB;AAAA,EACJ;AACJ;AACA,SAAS,kBAAkB,KAAK,UAAU;AACtC;AAAA;AAAA,IAEA,CAAC,IAAI,cACA,IAAI,YAAY,YACb,qBAAqB,KAAK,QAAQ,KAClC,qBAAqB,KAAK,QAAQ;AAAA;AAC9C;AACA,SAAS,qBAAqB,KAAK,UAAU;AAGzC,MAAI,aAAa;AAGjB,MAAI;AACA,iBAAa,SAAS,kBAAkB;AAAA,EAC5C,SACO,GAAG;AAAA,EAAE;AACZ,SAAO,cAAc,IAAI,UAAU;AACvC;AACA,SAAS,qBAAqB,KAAK,QAAQ;AACvC,MAAI,QAAQ,IAAI;AAChB,MAAI,YAAY,IAAI;AACpB,MAAI,MAAM,SAAS,GAAG;AAClB,QAAI,UAAU,QAAQ;AAClB,aAAO,SAAS,KAAK,MAAM,SAAS,MAAM;AAAA,IAC9C;AACA,QAAI,UAAU,MAAM;AAChB,aAAO,MAAM,KAAK,MAAM,OAAO,KAAK;AAAA,IACxC;AAAA,EACJ;AACA,SAAO,UAAU;AACrB;AACA,IAAI,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,QAAQ;AACZ;AAEA,IAAI,iBAAiB,OAAO,SAAU,SAAS;AAC3C,MAAI,MAAM,CAAC;AACX,MAAI,gBAAgB;AACpB,MAAI,oBAAoB;AACxB,UAAQ,MAAM,aAAa,EAAE,QAAQ,SAAU,MAAM;AACjD,QAAI,MAAM;AACN,UAAI,MAAM,KAAK,MAAM,iBAAiB;AACtC,UAAI,SAAS,MAAM,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK;AAAA,IACxD;AAAA,EACJ,CAAC;AACD,SAAO;AACX,CAAC;AAED,SAAS,mBAAmB,MAAM;AAC9B,MAAIgC,SAAQ,sBAAsB,KAAK,KAAK;AAG5C,SAAO,KAAK,cAAcjC,QAAO,KAAK,aAAaiC,MAAK,IAAIA;AAChE;AAEA,SAAS,sBAAsB,cAAc;AACzC,MAAI,MAAM,QAAQ,YAAY,GAAG;AAC7B,WAAO,SAAS,YAAY;AAAA,EAChC;AACA,MAAI,OAAO,iBAAiB,UAAU;AAClC,WAAO,eAAe,YAAY;AAAA,EACtC;AACA,SAAO;AACX;AAKA,SAAS,SAAS,OAAO,YAAY;AACjC,MAAI,MAAM,CAAC;AACX,MAAI;AACJ,MAAI,YAAY;AACZ,QAAI,YAAY;AAChB,WAAO,UAAU,mBAAmB;AAChC,kBAAY,UAAU,kBAAkB;AACxC,UAAI,aACA,UAAU,SACT,YAAY,mBAAmB,UAAU,IAAI,IAAI;AAClD,QAAAjC,QAAO,KAAK,SAAS;AAAA,MACzB;AAAA,IACJ;AAAA,EACJ;AACA,MAAK,YAAY,mBAAmB,MAAM,IAAI,GAAI;AAC9C,IAAAA,QAAO,KAAK,SAAS;AAAA,EACzB;AACA,MAAIS,cAAa;AAEjB,SAAQA,cAAaA,YAAW,QAAS;AACrC,QAAIA,YAAW,SAAS,YAAY,mBAAmBA,YAAW,IAAI,IAAI;AACtE,MAAAT,QAAO,KAAK,SAAS;AAAA,IACzB;AAAA,EACJ;AACA,SAAO;AACX;AAEA,IAAI,WAAW;AACf,IAAI,cAAc;AAClB,IAAI,UAAU,SAAU,IAAI,MAAM,KAAK;AAEnC,MAAI,SAAS,KAAK,IAAI,GAAG;AACrB,OAAG,MAAM,YAAY,MAAM,GAAG;AAAA,EAClC,WACS,YAAY,KAAK,GAAG,GAAG;AAC5B,OAAG,MAAM,YAAY,UAAU,IAAI,GAAG,IAAI,QAAQ,aAAa,EAAE,GAAG,WAAW;AAAA,EACnF,OACK;AACD,QAAI,iBAAiB,UAAU,IAAI;AACnC,QAAI,MAAM,QAAQ,GAAG,GAAG;AAIpB,eAAS,IAAI,GAAGkC,OAAM,IAAI,QAAQ,IAAIA,MAAK,KAAK;AAC5C,WAAG,MAAM,cAAc,IAAI,IAAI,CAAC;AAAA,MACpC;AAAA,IACJ,OACK;AACD,SAAG,MAAM,cAAc,IAAI;AAAA,IAC/B;AAAA,EACJ;AACJ;AACA,IAAI,cAAc,CAAC,UAAU,OAAO,IAAI;AACxC,IAAI;AACJ,IAAI,YAAY,OAAO,SAAU,MAAM;AACnC,eAAa,cAAc,SAAS,cAAc,KAAK,EAAE;AACzD,SAAO,SAAS,IAAI;AACpB,MAAI,SAAS,YAAY,QAAQ,YAAY;AACzC,WAAO;AAAA,EACX;AACA,MAAI,UAAU,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC;AACzD,WAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK;AACzC,QAAI,SAAS,YAAY,CAAC,IAAI;AAC9B,QAAI,UAAU,YAAY;AACtB,aAAO;AAAA,IACX;AAAA,EACJ;AACJ,CAAC;AACD,SAAS,YAAY,UAAU,OAAO;AAClC,MAAI,OAAO,MAAM;AACjB,MAAI,UAAU,SAAS;AACvB,MAAI,QAAQ,KAAK,WAAW,KACxB,QAAQ,KAAK,KAAK,KAClB,QAAQ,QAAQ,WAAW,KAC3B,QAAQ,QAAQ,KAAK,GAAG;AACxB;AAAA,EACJ;AACA,MAAI,KAAK;AACT,MAAI,KAAK,MAAM;AACf,MAAI,iBAAiB,QAAQ;AAC7B,MAAI,kBAAkB,QAAQ,mBAAmB,QAAQ,SAAS,CAAC;AAEnE,MAAI,WAAW,kBAAkB;AACjC,MAAID,SAAQ,sBAAsB,MAAM,KAAK,KAAK,KAAK,CAAC;AAIxD,QAAM,KAAK,kBAAkB,MAAMA,OAAM,MAAM,IAAIjC,QAAO,CAAC,GAAGiC,MAAK,IAAIA;AACvE,MAAI,WAAW,SAAS,OAAO,IAAI;AACnC,OAAK,QAAQ,UAAU;AACnB,QAAI,QAAQ,SAAS,IAAI,CAAC,GAAG;AACzB,cAAQ,IAAI,MAAM,EAAE;AAAA,IACxB;AAAA,EACJ;AACA,OAAK,QAAQ,UAAU;AACnB,UAAM,SAAS,IAAI;AAEnB,YAAQ,IAAI,MAAM,OAAO,OAAO,KAAK,GAAG;AAAA,EAC5C;AACJ;AACA,IAAI,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,QAAQ;AACZ;AAEA,IAAI,iBAAiB;AAKrB,SAAS,SAAS,IAAI,KAAK;AAEvB,MAAI,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,IAAI;AAC7B;AAAA,EACJ;AAEA,MAAI,GAAG,WAAW;AACd,QAAI,IAAI,QAAQ,GAAG,IAAI,IAAI;AACvB,UAAI,MAAM,cAAc,EAAE,QAAQ,SAAU,GAAG;AAAE,eAAO,GAAG,UAAU,IAAI,CAAC;AAAA,MAAG,CAAC;AAAA,IAClF,OACK;AACD,SAAG,UAAU,IAAI,GAAG;AAAA,IACxB;AAAA,EACJ,OACK;AACD,QAAI,MAAM,IAAI,OAAO,GAAG,aAAa,OAAO,KAAK,IAAI,GAAG;AACxD,QAAI,IAAI,QAAQ,MAAM,MAAM,GAAG,IAAI,GAAG;AAClC,SAAG,aAAa,UAAU,MAAM,KAAK,KAAK,CAAC;AAAA,IAC/C;AAAA,EACJ;AACJ;AAKA,SAAS,YAAY,IAAI,KAAK;AAE1B,MAAI,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,IAAI;AAC7B;AAAA,EACJ;AAEA,MAAI,GAAG,WAAW;AACd,QAAI,IAAI,QAAQ,GAAG,IAAI,IAAI;AACvB,UAAI,MAAM,cAAc,EAAE,QAAQ,SAAU,GAAG;AAAE,eAAO,GAAG,UAAU,OAAO,CAAC;AAAA,MAAG,CAAC;AAAA,IACrF,OACK;AACD,SAAG,UAAU,OAAO,GAAG;AAAA,IAC3B;AACA,QAAI,CAAC,GAAG,UAAU,QAAQ;AACtB,SAAG,gBAAgB,OAAO;AAAA,IAC9B;AAAA,EACJ,OACK;AACD,QAAI,MAAM,IAAI,OAAO,GAAG,aAAa,OAAO,KAAK,IAAI,GAAG;AACxD,QAAI,MAAM,MAAM,MAAM;AACtB,WAAO,IAAI,QAAQ,GAAG,KAAK,GAAG;AAC1B,YAAM,IAAI,QAAQ,KAAK,GAAG;AAAA,IAC9B;AACA,UAAM,IAAI,KAAK;AACf,QAAI,KAAK;AACL,SAAG,aAAa,SAAS,GAAG;AAAA,IAChC,OACK;AACD,SAAG,gBAAgB,OAAO;AAAA,IAC9B;AAAA,EACJ;AACJ;AAEA,SAAS,kBAAkBE,MAAK;AAC5B,MAAI,CAACA,MAAK;AACN;AAAA,EACJ;AAEA,MAAI,OAAOA,SAAQ,UAAU;AACzB,QAAI,MAAM,CAAC;AACX,QAAIA,KAAI,QAAQ,OAAO;AACnB,MAAAnC,QAAO,KAAK,kBAAkBmC,KAAI,QAAQ,GAAG,CAAC;AAAA,IAClD;AACA,IAAAnC,QAAO,KAAKmC,IAAG;AACf,WAAO;AAAA,EACX,WACS,OAAOA,SAAQ,UAAU;AAC9B,WAAO,kBAAkBA,IAAG;AAAA,EAChC;AACJ;AACA,IAAI,oBAAoB,OAAO,SAAU,MAAM;AAC3C,SAAO;AAAA,IACH,YAAY,GAAG,OAAO,MAAM,QAAQ;AAAA,IACpC,cAAc,GAAG,OAAO,MAAM,WAAW;AAAA,IACzC,kBAAkB,GAAG,OAAO,MAAM,eAAe;AAAA,IACjD,YAAY,GAAG,OAAO,MAAM,QAAQ;AAAA,IACpC,cAAc,GAAG,OAAO,MAAM,WAAW;AAAA,IACzC,kBAAkB,GAAG,OAAO,MAAM,eAAe;AAAA,EACrD;AACJ,CAAC;AACD,IAAI,gBAAgB,aAAa,CAAC;AAClC,IAAI,aAAa;AACjB,IAAI,YAAY;AAEhB,IAAI,iBAAiB;AACrB,IAAI,qBAAqB;AACzB,IAAI,gBAAgB;AACpB,IAAI,oBAAoB;AACxB,IAAI,eAAe;AAEf,MAAI,OAAO,oBAAoB,UAC3B,OAAO,0BAA0B,QAAW;AAC5C,qBAAiB;AACjB,yBAAqB;AAAA,EACzB;AACA,MAAI,OAAO,mBAAmB,UAC1B,OAAO,yBAAyB,QAAW;AAC3C,oBAAgB;AAChB,wBAAoB;AAAA,EACxB;AACJ;AAEA,IAAI,MAAM,YACJ,OAAO,wBACH,OAAO,sBAAsB,KAAK,MAAM,IACxC;AAAA;AAAA,EACuB,SAAqC,IAAI;AAAE,WAAO,GAAG;AAAA,EAAG;AAAA;AACzF,SAAS,UAAU,IAAI;AACnB,MAAI,WAAY;AAEZ,QAAI,EAAE;AAAA,EACV,CAAC;AACL;AACA,SAAS,mBAAmB,IAAI,KAAK;AACjC,MAAI,oBAAoB,GAAG,uBAAuB,GAAG,qBAAqB,CAAC;AAC3E,MAAI,kBAAkB,QAAQ,GAAG,IAAI,GAAG;AACpC,sBAAkB,KAAK,GAAG;AAC1B,aAAS,IAAI,GAAG;AAAA,EACpB;AACJ;AACA,SAAS,sBAAsB,IAAI,KAAK;AACpC,MAAI,GAAG,oBAAoB;AACvB,aAAS,GAAG,oBAAoB,GAAG;AAAA,EACvC;AACA,cAAY,IAAI,GAAG;AACvB;AACA,SAAS,mBAAmB,IAAI,cAAc,IAAI;AAC9C,MAAI5B,MAAK,kBAAkB,IAAI,YAAY,GAAGR,QAAOQ,IAAG,MAAM6B,WAAU7B,IAAG,SAAS,YAAYA,IAAG;AACnG,MAAI,CAACR;AACD,WAAO,GAAG;AACd,MAAI,QAAQA,UAAS,aAAa,qBAAqB;AACvD,MAAI,QAAQ;AACZ,MAAI,MAAM,WAAY;AAClB,OAAG,oBAAoB,OAAO,KAAK;AACnC,OAAG;AAAA,EACP;AACA,MAAI,QAAQ,SAAU,GAAG;AACrB,QAAI,EAAE,WAAW,IAAI;AACjB,UAAI,EAAE,SAAS,WAAW;AACtB,YAAI;AAAA,MACR;AAAA,IACJ;AAAA,EACJ;AACA,aAAW,WAAY;AACnB,QAAI,QAAQ,WAAW;AACnB,UAAI;AAAA,IACR;AAAA,EACJ,GAAGqC,WAAU,CAAC;AACd,KAAG,iBAAiB,OAAO,KAAK;AACpC;AACA,IAAI,cAAc;AAClB,SAAS,kBAAkB,IAAI,cAAc;AACzC,MAAI,SAAS,OAAO,iBAAiB,EAAE;AAEvC,MAAI,oBAAoB,OAAO,iBAAiB,OAAO,KAAK,IAAI,MAAM,IAAI;AAC1E,MAAI,uBAAuB,OAAO,iBAAiB,UAAU,KAAK,IAAI,MAAM,IAAI;AAChF,MAAI,oBAAoB,WAAW,kBAAkB,mBAAmB;AACxE,MAAI,mBAAmB,OAAO,gBAAgB,OAAO,KAAK,IAAI,MAAM,IAAI;AACxE,MAAI,sBAAsB,OAAO,gBAAgB,UAAU,KAAK,IAAI,MAAM,IAAI;AAC9E,MAAI,mBAAmB,WAAW,iBAAiB,kBAAkB;AACrE,MAAIrC;AACJ,MAAIqC,WAAU;AACd,MAAI,YAAY;AAEhB,MAAI,iBAAiB,YAAY;AAC7B,QAAI,oBAAoB,GAAG;AACvB,MAAArC,QAAO;AACP,MAAAqC,WAAU;AACV,kBAAY,oBAAoB;AAAA,IACpC;AAAA,EACJ,WACS,iBAAiB,WAAW;AACjC,QAAI,mBAAmB,GAAG;AACtB,MAAArC,QAAO;AACP,MAAAqC,WAAU;AACV,kBAAY,mBAAmB;AAAA,IACnC;AAAA,EACJ,OACK;AACD,IAAAA,WAAU,KAAK,IAAI,mBAAmB,gBAAgB;AACtD,IAAArC,QACIqC,WAAU,IACJ,oBAAoB,mBAChB,aACA,YACJ;AACV,gBAAYrC,QACNA,UAAS,aACL,oBAAoB,SACpB,mBAAmB,SACvB;AAAA,EACV;AACA,MAAI,eAAeA,UAAS,cAAc,YAAY,KAAK,OAAO,iBAAiB,UAAU,CAAC;AAC9F,SAAO;AAAA,IACH,MAAMA;AAAA,IACN,SAASqC;AAAA,IACT;AAAA,IACA;AAAA,EACJ;AACJ;AACA,SAAS,WAAW,QAAQ,WAAW;AAEnC,SAAO,OAAO,SAAS,UAAU,QAAQ;AACrC,aAAS,OAAO,OAAO,MAAM;AAAA,EACjC;AACA,SAAO,KAAK,IAAI,MAAM,MAAM,UAAU,IAAI,SAAU,GAAG,GAAG;AACtD,WAAO,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;AAAA,EACnC,CAAC,CAAC;AACN;AAKA,SAAS,KAAK,GAAG;AACb,SAAO,OAAO,EAAE,MAAM,GAAG,EAAE,EAAE,QAAQ,KAAK,GAAG,CAAC,IAAI;AACtD;AAEA,SAAS,MAAM,OAAO,eAAe;AACjC,MAAI,KAAK,MAAM;AAEf,MAAI,MAAM,GAAG,QAAQ,GAAG;AACpB,OAAG,SAAS,YAAY;AACxB,OAAG,SAAS;AAAA,EAChB;AACA,MAAI,OAAO,kBAAkB,MAAM,KAAK,UAAU;AAClD,MAAI,QAAQ,IAAI,GAAG;AACf;AAAA,EACJ;AAEA,MAAI,MAAM,GAAG,QAAQ,KAAK,GAAG,aAAa,GAAG;AACzC;AAAA,EACJ;AACA,MAAI,MAAM,KAAK,KAAKrC,QAAO,KAAK,MAAM,aAAa,KAAK,YAAY,eAAe,KAAK,cAAc,mBAAmB,KAAK,kBAAkB,cAAc,KAAK,aAAa,gBAAgB,KAAK,eAAe,oBAAoB,KAAK,mBAAmB,cAAc,KAAK,aAAasC,SAAQ,KAAK,OAAO,aAAa,KAAK,YAAY,iBAAiB,KAAK,gBAAgB,eAAe,KAAK,cAAc,SAAS,KAAK,QAAQ,cAAc,KAAK,aAAa,kBAAkB,KAAK,iBAAiB,WAAW,KAAK;AAKxgB,MAAI,UAAU;AACd,MAAI,iBAAiB,eAAe;AACpC,SAAO,kBAAkB,eAAe,QAAQ;AAC5C,cAAU,eAAe;AACzB,qBAAiB,eAAe;AAAA,EACpC;AACA,MAAI,WAAW,CAAC,QAAQ,cAAc,CAAC,MAAM;AAC7C,MAAI,YAAY,CAAC,UAAU,WAAW,IAAI;AACtC;AAAA,EACJ;AACA,MAAI,aAAa,YAAY,cAAc,cAAc;AACzD,MAAI,cAAc,YAAY,oBAAoB,oBAAoB;AACtE,MAAI,UAAU,YAAY,gBAAgB,gBAAgB;AAC1D,MAAI,kBAAkB,WAAW,gBAAgB,cAAc;AAC/D,MAAI,YAAY,WAAY,WAAW,MAAM,IAAI,SAASA,SAASA;AACnE,MAAI,iBAAiB,WAAW,eAAe,aAAa;AAC5D,MAAI,qBAAqB,WACnB,mBAAmB,iBACnB;AACN,MAAI,wBAAwB,SAAS,SAAS,QAAQ,IAAI,SAAS,QAAQ,QAAQ;AACnF,MAAI,OAAwE;AACxE,kBAAc,uBAAuB,SAAS,KAAK;AAAA,EACvD;AACA,MAAI,aAAa,QAAQ,SAAS,CAAC;AACnC,MAAI,mBAAmB,uBAAuB,SAAS;AACvD,MAAI,KAAM,GAAG,WAAW,KAAK,WAAY;AACrC,QAAI,YAAY;AACZ,4BAAsB,IAAI,OAAO;AACjC,4BAAsB,IAAI,WAAW;AAAA,IACzC;AAEA,QAAI,GAAG,WAAW;AACd,UAAI,YAAY;AACZ,8BAAsB,IAAI,UAAU;AAAA,MACxC;AACA,4BAAsB,mBAAmB,EAAE;AAAA,IAC/C,OACK;AACD,wBAAkB,eAAe,EAAE;AAAA,IACvC;AACA,OAAG,WAAW;AAAA,EAClB,CAAC;AACD,MAAI,CAAC,MAAM,KAAK,MAAM;AAElB,mBAAe,OAAO,UAAU,WAAY;AACxC,UAAI,SAAS,GAAG;AAChB,UAAI,cAAc,UAAU,OAAO,YAAY,OAAO,SAAS,MAAM,GAAG;AACxE,UAAI,eACA,YAAY,QAAQ,MAAM,OAC1B,YAAY,IAAI,UAAU;AAC1B,oBAAY,IAAI,SAAS;AAAA,MAC7B;AACA,mBAAa,UAAU,IAAI,EAAE;AAAA,IACjC,CAAC;AAAA,EACL;AAEA,qBAAmB,gBAAgB,EAAE;AACrC,MAAI,YAAY;AACZ,uBAAmB,IAAI,UAAU;AACjC,uBAAmB,IAAI,WAAW;AAClC,cAAU,WAAY;AAClB,4BAAsB,IAAI,UAAU;AAEpC,UAAI,CAAC,GAAG,WAAW;AACf,2BAAmB,IAAI,OAAO;AAC9B,YAAI,CAAC,kBAAkB;AACnB,cAAI,gBAAgB,qBAAqB,GAAG;AACxC,uBAAW,IAAI,qBAAqB;AAAA,UACxC,OACK;AACD,+BAAmB,IAAItC,OAAM,EAAE;AAAA,UACnC;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL;AACA,MAAI,MAAM,KAAK,MAAM;AACjB,qBAAiB,cAAc;AAC/B,iBAAa,UAAU,IAAI,EAAE;AAAA,EACjC;AACA,MAAI,CAAC,cAAc,CAAC,kBAAkB;AAClC,OAAG;AAAA,EACP;AACJ;AACA,SAAS,MAAM,OAAO,IAAI;AACtB,MAAI,KAAK,MAAM;AAEf,MAAI,MAAM,GAAG,QAAQ,GAAG;AACpB,OAAG,SAAS,YAAY;AACxB,OAAG,SAAS;AAAA,EAChB;AACA,MAAI,OAAO,kBAAkB,MAAM,KAAK,UAAU;AAClD,MAAI,QAAQ,IAAI,KAAK,GAAG,aAAa,GAAG;AACpC,WAAO,GAAG;AAAA,EACd;AAEA,MAAI,MAAM,GAAG,QAAQ,GAAG;AACpB;AAAA,EACJ;AACA,MAAI,MAAM,KAAK,KAAKA,QAAO,KAAK,MAAM,aAAa,KAAK,YAAY,eAAe,KAAK,cAAc,mBAAmB,KAAK,kBAAkB,cAAc,KAAK,aAAauC,SAAQ,KAAK,OAAO,aAAa,KAAK,YAAY,iBAAiB,KAAK,gBAAgB,aAAa,KAAK,YAAY,WAAW,KAAK;AACtT,MAAI,aAAa,QAAQ,SAAS,CAAC;AACnC,MAAI,mBAAmB,uBAAuBA,MAAK;AACnD,MAAI,wBAAwB,SAAS,SAAS,QAAQ,IAAI,SAAS,QAAQ,QAAQ;AACnF,MAAI,OAAuE;AACvE,kBAAc,uBAAuB,SAAS,KAAK;AAAA,EACvD;AACA,MAAI,KAAM,GAAG,WAAW,KAAK,WAAY;AACrC,QAAI,GAAG,cAAc,GAAG,WAAW,UAAU;AACzC,SAAG,WAAW,SAAS,MAAM,GAAG,IAAI;AAAA,IACxC;AACA,QAAI,YAAY;AACZ,4BAAsB,IAAI,YAAY;AACtC,4BAAsB,IAAI,gBAAgB;AAAA,IAC9C;AAEA,QAAI,GAAG,WAAW;AACd,UAAI,YAAY;AACZ,8BAAsB,IAAI,UAAU;AAAA,MACxC;AACA,wBAAkB,eAAe,EAAE;AAAA,IACvC,OACK;AACD,SAAG;AACH,oBAAc,WAAW,EAAE;AAAA,IAC/B;AACA,OAAG,WAAW;AAAA,EAClB,CAAC;AACD,MAAI,YAAY;AACZ,eAAW,YAAY;AAAA,EAC3B,OACK;AACD,iBAAa;AAAA,EACjB;AACA,WAAS,eAAe;AAGpB,QAAI,GAAG,WAAW;AACd;AAAA,IACJ;AAEA,QAAI,CAAC,MAAM,KAAK,QAAQ,GAAG,YAAY;AACnC,OAAC,GAAG,WAAW,aAAa,GAAG,WAAW,WAAW,CAAC,IAAI,MAAM,GAAG,IAC/D;AAAA,IACR;AACA,mBAAe,YAAY,EAAE;AAC7B,QAAI,YAAY;AACZ,yBAAmB,IAAI,UAAU;AACjC,yBAAmB,IAAI,gBAAgB;AACvC,gBAAU,WAAY;AAClB,8BAAsB,IAAI,UAAU;AAEpC,YAAI,CAAC,GAAG,WAAW;AACf,6BAAmB,IAAI,YAAY;AACnC,cAAI,CAAC,kBAAkB;AACnB,gBAAI,gBAAgB,qBAAqB,GAAG;AACxC,yBAAW,IAAI,qBAAqB;AAAA,YACxC,OACK;AACD,iCAAmB,IAAIvC,OAAM,EAAE;AAAA,YACnC;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ,CAAC;AAAA,IACL;AACA,IAAAuC,UAASA,OAAM,IAAI,EAAE;AACrB,QAAI,CAAC,cAAc,CAAC,kBAAkB;AAClC,SAAG;AAAA,IACP;AAAA,EACJ;AACJ;AAYA,SAAS,gBAAgB,KAAK;AAC1B,SAAO,OAAO,QAAQ,YAAY,CAAC,MAAM,GAAG;AAChD;AAOA,SAAS,uBAAuB,IAAI;AAChC,MAAI,QAAQ,EAAE,GAAG;AACb,WAAO;AAAA,EACX;AAEA,MAAI,aAAa,GAAG;AACpB,MAAI,MAAM,UAAU,GAAG;AAEnB,WAAO,uBAAuB,MAAM,QAAQ,UAAU,IAAI,WAAW,CAAC,IAAI,UAAU;AAAA,EACxF,OACK;AAED,YAAQ,GAAG,WAAW,GAAG,UAAU;AAAA,EACvC;AACJ;AACA,SAAS,OAAO,GAAG,OAAO;AACtB,MAAI,MAAM,KAAK,SAAS,MAAM;AAC1B,UAAM,KAAK;AAAA,EACf;AACJ;AACA,IAAIC,cAAa,YACX;AAAA,EACE,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,QAAQ,SAAU,OAAO,IAAI;AAEzB,QAAI,MAAM,KAAK,SAAS,MAAM;AAE1B,YAAM,OAAO,EAAE;AAAA,IACnB,OACK;AACD,SAAG;AAAA,IACP;AAAA,EACJ;AACJ,IACE,CAAC;AAEP,IAAI,kBAAkB,CAAC,OAAO,SAAS,QAAQ,UAAU,SAASA,WAAU;AAI5E,IAAI,YAAY,gBAAgB,OAAO,WAAW;AAClD,IAAI,QAAQ,oBAAoB,EAAE,SAAkB,SAAS,UAAU,CAAC;AAOxE,IAAI,OAAO;AAEP,WAAS,iBAAiB,mBAAmB,WAAY;AACrD,QAAI,KAAK,SAAS;AAElB,QAAI,MAAM,GAAG,QAAQ;AACjB,cAAQ,IAAI,OAAO;AAAA,IACvB;AAAA,EACJ,CAAC;AACL;AACA,IAAI,YAAY;AAAA,EACZ,UAAU,SAAU,IAAI,SAAS,OAAO,UAAU;AAC9C,QAAI,MAAM,QAAQ,UAAU;AAExB,UAAI,SAAS,OAAO,CAAC,SAAS,IAAI,WAAW;AACzC,uBAAe,OAAO,aAAa,WAAY;AAC3C,oBAAU,iBAAiB,IAAI,SAAS,KAAK;AAAA,QACjD,CAAC;AAAA,MACL,OACK;AACD,oBAAY,IAAI,SAAS,MAAM,OAAO;AAAA,MAC1C;AACA,SAAG,YAAY,CAAC,EAAE,IAAI,KAAK,GAAG,SAAS,QAAQ;AAAA,IACnD,WACS,MAAM,QAAQ,cAAc,gBAAgB,GAAG,IAAI,GAAG;AAC3D,SAAG,cAAc,QAAQ;AACzB,UAAI,CAAC,QAAQ,UAAU,MAAM;AACzB,WAAG,iBAAiB,oBAAoB,kBAAkB;AAC1D,WAAG,iBAAiB,kBAAkB,gBAAgB;AAKtD,WAAG,iBAAiB,UAAU,gBAAgB;AAE9C,YAAI,OAAO;AACP,aAAG,SAAS;AAAA,QAChB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,kBAAkB,SAAU,IAAI,SAAS,OAAO;AAC5C,QAAI,MAAM,QAAQ,UAAU;AACxB,kBAAY,IAAI,SAAS,MAAM,OAAO;AAKtC,UAAI,gBAAgB,GAAG;AACvB,UAAI,eAAgB,GAAG,YAAY,CAAC,EAAE,IAAI,KAAK,GAAG,SAAS,QAAQ;AACnE,UAAI,aAAa,KAAK,SAAU,GAAG,GAAG;AAAE,eAAO,CAAC,WAAW,GAAG,cAAc,CAAC,CAAC;AAAA,MAAG,CAAC,GAAG;AAGjF,YAAI,YAAY,GAAG,WACb,QAAQ,MAAM,KAAK,SAAU,GAAG;AAAE,iBAAO,oBAAoB,GAAG,YAAY;AAAA,QAAG,CAAC,IAChF,QAAQ,UAAU,QAAQ,YACxB,oBAAoB,QAAQ,OAAO,YAAY;AACvD,YAAI,WAAW;AACX,kBAAQ,IAAI,QAAQ;AAAA,QACxB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ;AACA,SAAS,YAAY,IAAI,SAAS,IAAI;AAClC,sBAAoB,IAAI,SAAS,EAAE;AAEnC,MAAI,QAAQ,QAAQ;AAChB,eAAW,WAAY;AACnB,0BAAoB,IAAI,SAAS,EAAE;AAAA,IACvC,GAAG,CAAC;AAAA,EACR;AACJ;AACA,SAAS,oBAAoB,IAAI,SAAS,IAAI;AAC1C,MAAI,QAAQ,QAAQ;AACpB,MAAI,aAAa,GAAG;AACpB,MAAI,cAAc,CAAC,MAAM,QAAQ,KAAK,GAAG;AAMrC;AAAA,EACJ;AACA,MAAI,UAAU;AACd,WAAS,IAAI,GAAG,IAAI,GAAG,QAAQ,QAAQ,IAAI,GAAG,KAAK;AAC/C,aAAS,GAAG,QAAQ,CAAC;AACrB,QAAI,YAAY;AACZ,iBAAW,aAAa,OAAO,SAAS,MAAM,CAAC,IAAI;AACnD,UAAI,OAAO,aAAa,UAAU;AAC9B,eAAO,WAAW;AAAA,MACtB;AAAA,IACJ,OACK;AACD,UAAI,WAAW,SAAS,MAAM,GAAG,KAAK,GAAG;AACrC,YAAI,GAAG,kBAAkB,GAAG;AACxB,aAAG,gBAAgB;AAAA,QACvB;AACA;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,MAAI,CAAC,YAAY;AACb,OAAG,gBAAgB;AAAA,EACvB;AACJ;AACA,SAAS,oBAAoB,OAAO,SAAS;AACzC,SAAO,QAAQ,MAAM,SAAU,GAAG;AAAE,WAAO,CAAC,WAAW,GAAG,KAAK;AAAA,EAAG,CAAC;AACvE;AACA,SAAS,SAAS,QAAQ;AACtB,SAAO,YAAY,SAAS,OAAO,SAAS,OAAO;AACvD;AACA,SAAS,mBAAmB,GAAG;AAC3B,IAAE,OAAO,YAAY;AACzB;AACA,SAAS,iBAAiB,GAAG;AAEzB,MAAI,CAAC,EAAE,OAAO;AACV;AACJ,IAAE,OAAO,YAAY;AACrB,UAAQ,EAAE,QAAQ,OAAO;AAC7B;AACA,SAAS,QAAQ,IAAIC,OAAM;AACvB,MAAI,IAAI,SAAS,YAAY,YAAY;AACzC,IAAE,UAAUA,OAAM,MAAM,IAAI;AAC5B,KAAG,cAAc,CAAC;AACtB;AAGA,SAAS,WAAW,OAAO;AAEvB,SAAO,MAAM,sBAAsB,CAAC,MAAM,QAAQ,CAAC,MAAM,KAAK,cACxD,WAAW,MAAM,kBAAkB,MAAM,IACzC;AACV;AACA,IAAI,OAAO;AAAA,EACP,MAAM,SAAU,IAAIC,KAAI,OAAO;AAC3B,QAAI,QAAQA,IAAG;AACf,YAAQ,WAAW,KAAK;AACxB,QAAIF,cAAa,MAAM,QAAQ,MAAM,KAAK;AAC1C,QAAI,kBAAmB,GAAG,qBACtB,GAAG,MAAM,YAAY,SAAS,KAAK,GAAG,MAAM;AAChD,QAAI,SAASA,aAAY;AACrB,YAAM,KAAK,OAAO;AAClB,YAAM,OAAO,WAAY;AACrB,WAAG,MAAM,UAAU;AAAA,MACvB,CAAC;AAAA,IACL,OACK;AACD,SAAG,MAAM,UAAU,QAAQ,kBAAkB;AAAA,IACjD;AAAA,EACJ;AAAA,EACA,QAAQ,SAAU,IAAIE,KAAI,OAAO;AAC7B,QAAI,QAAQA,IAAG,OAAO,WAAWA,IAAG;AAEpC,QAAI,CAAC,UAAU,CAAC;AACZ;AACJ,YAAQ,WAAW,KAAK;AACxB,QAAIF,cAAa,MAAM,QAAQ,MAAM,KAAK;AAC1C,QAAIA,aAAY;AACZ,YAAM,KAAK,OAAO;AAClB,UAAI,OAAO;AACP,cAAM,OAAO,WAAY;AACrB,aAAG,MAAM,UAAU,GAAG;AAAA,QAC1B,CAAC;AAAA,MACL,OACK;AACD,cAAM,OAAO,WAAY;AACrB,aAAG,MAAM,UAAU;AAAA,QACvB,CAAC;AAAA,MACL;AAAA,IACJ,OACK;AACD,SAAG,MAAM,UAAU,QAAQ,GAAG,qBAAqB;AAAA,IACvD;AAAA,EACJ;AAAA,EACA,QAAQ,SAAU,IAAI,SAAS,OAAO,UAAU,WAAW;AACvD,QAAI,CAAC,WAAW;AACZ,SAAG,MAAM,UAAU,GAAG;AAAA,IAC1B;AAAA,EACJ;AACJ;AAEA,IAAI,qBAAqB;AAAA,EACrB,OAAO;AAAA,EACP;AACJ;AAGA,IAAI,kBAAkB;AAAA,EAClB,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,MAAM;AAAA,EACN,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,cAAc;AAAA,EACd,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,UAAU,CAAC,QAAQ,QAAQ,MAAM;AACrC;AAGA,SAAS,aAAa,OAAO;AACzB,MAAI,cAAc,SAAS,MAAM;AACjC,MAAI,eAAe,YAAY,KAAK,QAAQ,UAAU;AAClD,WAAO,aAAa,uBAAuB,YAAY,QAAQ,CAAC;AAAA,EACpE,OACK;AACD,WAAO;AAAA,EACX;AACJ;AACA,SAAS,sBAAsB,MAAM;AACjC,MAAI,OAAO,CAAC;AACZ,MAAI,UAAU,KAAK;AAEnB,WAAS,OAAO,QAAQ,WAAW;AAC/B,SAAK,GAAG,IAAI,KAAK,GAAG;AAAA,EACxB;AAGA,MAAI,YAAY,QAAQ;AACxB,WAAS,OAAO,WAAW;AACvB,SAAK,SAAS,GAAG,CAAC,IAAI,UAAU,GAAG;AAAA,EACvC;AACA,SAAO;AACX;AACA,SAAS,YAAY,GAAG,UAAU;AAE9B,MAAI,iBAAiB,KAAK,SAAS,GAAG,GAAG;AACrC,WAAO,EAAE,cAAc;AAAA,MACnB,OAAO,SAAS,iBAAiB;AAAA,IACrC,CAAC;AAAA,EACL;AACJ;AACA,SAAS,oBAAoB,OAAO;AAChC,SAAQ,QAAQ,MAAM,QAAS;AAC3B,QAAI,MAAM,KAAK,YAAY;AACvB,aAAO;AAAA,IACX;AAAA,EACJ;AACJ;AACA,SAAS,YAAY,OAAO,UAAU;AAClC,SAAO,SAAS,QAAQ,MAAM,OAAO,SAAS,QAAQ,MAAM;AAChE;AACA,IAAI,gBAAgB,SAAU,GAAG;AAAE,SAAO,EAAE,OAAO,mBAAmB,CAAC;AAAG;AAC1E,IAAI,mBAAmB,SAAU,GAAG;AAAE,SAAO,EAAE,SAAS;AAAQ;AAChE,IAAIG,cAAa;AAAA,EACb,MAAM;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AAAA,EACV,QAAQ,SAAU,GAAG;AACjB,QAAI,QAAQ;AACZ,QAAIC,YAAW,KAAK,OAAO;AAC3B,QAAI,CAACA,WAAU;AACX;AAAA,IACJ;AAEA,IAAAA,YAAWA,UAAS,OAAO,aAAa;AAExC,QAAI,CAACA,UAAS,QAAQ;AAClB;AAAA,IACJ;AAEA,QAAI,OAA8D;AAC9D,aAAO,wFAC8B,KAAK,OAAO;AAAA,IACrD;AACA,QAAI,OAAO,KAAK;AAEhB,QAAI,OAAyF;AACzF,aAAO,gCAAgC,MAAM,KAAK,OAAO;AAAA,IAC7D;AACA,QAAI,WAAWA,UAAS,CAAC;AAGzB,QAAI,oBAAoB,KAAK,MAAM,GAAG;AAClC,aAAO;AAAA,IACX;AAGA,QAAI,QAAQ,aAAa,QAAQ;AAEjC,QAAI,CAAC,OAAO;AACR,aAAO;AAAA,IACX;AACA,QAAI,KAAK,UAAU;AACf,aAAO,YAAY,GAAG,QAAQ;AAAA,IAClC;AAIA,QAAIC,MAAK,gBAAgB,OAAO,KAAK,MAAM,GAAG;AAC9C,UAAM,MACF,MAAM,OAAO,OACP,MAAM,YACFA,MAAK,YACLA,MAAK,MAAM,MACf,YAAY,MAAM,GAAG,IACjB,OAAO,MAAM,GAAG,EAAE,QAAQA,GAAE,MAAM,IAC9B,MAAM,MACNA,MAAK,MAAM,MACf,MAAM;AACpB,QAAI,QAAS,MAAM,SAAS,MAAM,OAAO,CAAC,IAAI,aAC1C,sBAAsB,IAAI;AAC9B,QAAI,cAAc,KAAK;AACvB,QAAI,WAAW,aAAa,WAAW;AAGvC,QAAI,MAAM,KAAK,cAAc,MAAM,KAAK,WAAW,KAAK,gBAAgB,GAAG;AACvE,YAAM,KAAK,OAAO;AAAA,IACtB;AACA,QAAI,YACA,SAAS,QACT,CAAC,YAAY,OAAO,QAAQ,KAC5B,CAAC,mBAAmB,QAAQ;AAAA,IAE5B,EAAE,SAAS,qBACP,SAAS,kBAAkB,OAAO,YAAY;AAGlD,UAAI,UAAW,SAAS,KAAK,aAAaC,QAAO,CAAC,GAAG,IAAI;AAEzD,UAAI,SAAS,UAAU;AAEnB,aAAK,WAAW;AAChB,uBAAe,SAAS,cAAc,WAAY;AAC9C,gBAAM,WAAW;AACjB,gBAAM,aAAa;AAAA,QACvB,CAAC;AACD,eAAO,YAAY,GAAG,QAAQ;AAAA,MAClC,WACS,SAAS,UAAU;AACxB,YAAI,mBAAmB,KAAK,GAAG;AAC3B,iBAAO;AAAA,QACX;AACA,YAAI;AACJ,YAAI,eAAe,WAAY;AAC3B,yBAAe;AAAA,QACnB;AACA,uBAAe,MAAM,cAAc,YAAY;AAC/C,uBAAe,MAAM,kBAAkB,YAAY;AACnD,uBAAe,SAAS,cAAc,SAAUC,QAAO;AACnD,2BAAiBA;AAAA,QACrB,CAAC;AAAA,MACL;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AACJ;AAGA,IAAI,QAAQD,QAAO;AAAA,EACf,KAAK;AAAA,EACL,WAAW;AACf,GAAG,eAAe;AAClB,OAAO,MAAM;AACb,IAAI,kBAAkB;AAAA,EAClB;AAAA,EACA,aAAa,WAAY;AACrB,QAAI,QAAQ;AACZ,QAAI,SAAS,KAAK;AAClB,SAAK,UAAU,SAAU,OAAO,WAAW;AACvC,UAAI,wBAAwB,kBAAkB,KAAK;AAEnD,YAAM;AAAA,QAAU,MAAM;AAAA,QAAQ,MAAM;AAAA,QAAM;AAAA;AAAA,QAC1C;AAAA;AAAA,MACA;AACA,YAAM,SAAS,MAAM;AACrB,4BAAsB;AACtB,aAAO,KAAK,OAAO,OAAO,SAAS;AAAA,IACvC;AAAA,EACJ;AAAA,EACA,QAAQ,SAAU,GAAG;AACjB,QAAI,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO;AAC9C,QAAIE,OAAM,uBAAO,OAAO,IAAI;AAC5B,QAAI,eAAgB,KAAK,eAAe,KAAK;AAC7C,QAAI,cAAc,KAAK,OAAO,WAAW,CAAC;AAC1C,QAAIJ,YAAY,KAAK,WAAW,CAAC;AACjC,QAAI,iBAAiB,sBAAsB,IAAI;AAC/C,aAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK;AACzC,UAAI,IAAI,YAAY,CAAC;AACrB,UAAI,EAAE,KAAK;AACP,YAAI,EAAE,OAAO,QAAQ,OAAO,EAAE,GAAG,EAAE,QAAQ,SAAS,MAAM,GAAG;AACzD,UAAAA,UAAS,KAAK,CAAC;AACf,UAAAI,KAAI,EAAE,GAAG,IAAI;AACb,WAAC,EAAE,SAAS,EAAE,OAAO,CAAC,IAAI,aAAa;AAAA,QAC3C,WACS,OAAuC;AAC5C,cAAIC,QAAO,EAAE;AACb,cAAI,SAASA,QACP,iBAAiBA,MAAK,KAAK,OAAO,KAAKA,MAAK,OAAO,KACnD,EAAE;AACR,iBAAO,+CAA+C,OAAO,QAAQ,GAAG,CAAC;AAAA,QAC7E;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,cAAc;AACd,UAAI,OAAO,CAAC;AACZ,UAAI,UAAU,CAAC;AACf,eAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;AAC1C,YAAI,IAAI,aAAa,CAAC;AACtB,UAAE,KAAK,aAAa;AAEpB,UAAE,KAAK,MAAM,EAAE,IAAI,sBAAsB;AACzC,YAAID,KAAI,EAAE,GAAG,GAAG;AACZ,eAAK,KAAK,CAAC;AAAA,QACf,OACK;AACD,kBAAQ,KAAK,CAAC;AAAA,QAClB;AAAA,MACJ;AACA,WAAK,OAAO,EAAE,KAAK,MAAM,IAAI;AAC7B,WAAK,UAAU;AAAA,IACnB;AACA,WAAO,EAAE,KAAK,MAAMJ,SAAQ;AAAA,EAChC;AAAA,EACA,SAAS,WAAY;AACjB,QAAIA,YAAW,KAAK;AACpB,QAAI,YAAY,KAAK,cAAc,KAAK,QAAQ,OAAO;AACvD,QAAI,CAACA,UAAS,UAAU,CAAC,KAAK,QAAQA,UAAS,CAAC,EAAE,KAAK,SAAS,GAAG;AAC/D;AAAA,IACJ;AAGA,IAAAA,UAAS,QAAQ,cAAc;AAC/B,IAAAA,UAAS,QAAQ,cAAc;AAC/B,IAAAA,UAAS,QAAQ,gBAAgB;AAIjC,SAAK,UAAU,SAAS,KAAK;AAC7B,IAAAA,UAAS,QAAQ,SAAU,GAAG;AAC1B,UAAI,EAAE,KAAK,OAAO;AACd,YAAI,OAAO,EAAE;AACb,YAAI,IAAI,KAAK;AACb,2BAAmB,MAAM,SAAS;AAClC,UAAE,YAAY,EAAE,kBAAkB,EAAE,qBAAqB;AACzD,aAAK,iBAAiB,oBAAqB,KAAK,UAAU,SAAS,GAAG,GAAG;AACrE,cAAI,KAAK,EAAE,WAAW,MAAM;AACxB;AAAA,UACJ;AACA,cAAI,CAAC,KAAK,aAAa,KAAK,EAAE,YAAY,GAAG;AACzC,iBAAK,oBAAoB,oBAAoB,EAAE;AAC/C,iBAAK,UAAU;AACf,kCAAsB,MAAM,SAAS;AAAA,UACzC;AAAA,QACJ,CAAE;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EACA,SAAS;AAAA,IACL,SAAS,SAAU,IAAI,WAAW;AAE9B,UAAI,CAAC,eAAe;AAChB,eAAO;AAAA,MACX;AAEA,UAAI,KAAK,UAAU;AACf,eAAO,KAAK;AAAA,MAChB;AAMA,UAAIM,SAAQ,GAAG,UAAU;AACzB,UAAI,GAAG,oBAAoB;AACvB,WAAG,mBAAmB,QAAQ,SAAU,KAAK;AACzC,sBAAYA,QAAO,GAAG;AAAA,QAC1B,CAAC;AAAA,MACL;AACA,eAASA,QAAO,SAAS;AACzB,MAAAA,OAAM,MAAM,UAAU;AACtB,WAAK,IAAI,YAAYA,MAAK;AAC1B,UAAI,OAAO,kBAAkBA,MAAK;AAClC,WAAK,IAAI,YAAYA,MAAK;AAC1B,aAAQ,KAAK,WAAW,KAAK;AAAA,IACjC;AAAA,EACJ;AACJ;AACA,SAAS,eAAe,GAAG;AAEvB,MAAI,EAAE,IAAI,SAAS;AACf,MAAE,IAAI,QAAQ;AAAA,EAClB;AAEA,MAAI,EAAE,IAAI,UAAU;AAChB,MAAE,IAAI,SAAS;AAAA,EACnB;AACJ;AACA,SAAS,eAAe,GAAG;AACvB,IAAE,KAAK,SAAS,EAAE,IAAI,sBAAsB;AAChD;AACA,SAAS,iBAAiB,GAAG;AACzB,MAAI,SAAS,EAAE,KAAK;AACpB,MAAI,SAAS,EAAE,KAAK;AACpB,MAAI,KAAK,OAAO,OAAO,OAAO;AAC9B,MAAI,KAAK,OAAO,MAAM,OAAO;AAC7B,MAAI,MAAM,IAAI;AACV,MAAE,KAAK,QAAQ;AACf,QAAI,IAAI,EAAE,IAAI;AACd,MAAE,YAAY,EAAE,kBAAkB,aAAa,OAAO,IAAI,KAAK,EAAE,OAAO,IAAI,KAAK;AACjF,MAAE,qBAAqB;AAAA,EAC3B;AACJ;AAEA,IAAI,qBAAqB;AAAA,EACrB,YAAYP;AAAA,EACZ;AACJ;AAGA,IAAI,OAAO,cAAc;AACzB,IAAI,OAAO,gBAAgB;AAC3B,IAAI,OAAO,iBAAiB;AAC5B,IAAI,OAAO,kBAAkB;AAC7B,IAAI,OAAO,mBAAmB;AAE9BG,QAAO,IAAI,QAAQ,YAAY,kBAAkB;AACjDA,QAAO,IAAI,QAAQ,YAAY,kBAAkB;AAEjD,IAAI,UAAU,YAAY,YAAY,QAAQK;AAE9C,IAAI,UAAU,SAAS,SAAU,IAAI,WAAW;AAC5C,OAAK,MAAM,YAAY,MAAM,EAAE,IAAI;AACnC,SAAO,eAAe,MAAM,IAAI,SAAS;AAC7C;AAGA,IAAI,WAAW;AACX,aAAW,WAAY;AACnB,QAAI,OAAO,UAAU;AACjB,UAAI,UAAU;AACV,iBAAS,KAAK,QAAQ,GAAG;AAAA,MAC7B,WACS,OAA0E;AAE/E,gBAAQ,QAAQ,OAAO,SAAS,KAAK,EAAE,iHACI;AAAA,MAC/C;AAAA,IACJ;AACA,QAAI,OAGgC;AAEhC,cAAQ,QAAQ,OAAO,SAAS,KAAK,EAAE,yKAEuB;AAAA,IAClE;AAAA,EACJ,GAAG,CAAC;AACR;AAEA,IAAI,eAAe;AACnB,IAAI,gBAAgB;AACpB,IAAI,aAAa,OAAO,SAAUC,aAAY;AAC1C,MAAI,OAAOA,YAAW,CAAC,EAAE,QAAQ,eAAe,MAAM;AACtD,MAAI,QAAQA,YAAW,CAAC,EAAE,QAAQ,eAAe,MAAM;AACvD,SAAO,IAAI,OAAO,OAAO,kBAAkB,OAAO,GAAG;AACzD,CAAC;AACD,SAAS,UAAUC,OAAMD,aAAY;AAEjC,MAAI,QAAQA,cAAa,WAAWA,WAAU,IAAI;AAClD,MAAI,CAAC,MAAM,KAAKC,KAAI,GAAG;AACnB;AAAA,EACJ;AACA,MAAI,SAAS,CAAC;AACd,MAAI,YAAY,CAAC;AACjB,MAAI,YAAa,MAAM,YAAY;AACnC,MAAIC,QAAOC,QAAO;AAClB,SAAQD,SAAQ,MAAM,KAAKD,KAAI,GAAI;AAC/B,IAAAE,SAAQD,OAAM;AAEd,QAAIC,SAAQ,WAAW;AACnB,gBAAU,KAAM,aAAaF,MAAK,MAAM,WAAWE,MAAK,CAAE;AAC1D,aAAO,KAAK,KAAK,UAAU,UAAU,CAAC;AAAA,IAC1C;AAEA,QAAI,MAAM,aAAaD,OAAM,CAAC,EAAE,KAAK,CAAC;AACtC,WAAO,KAAK,MAAM,OAAO,KAAK,GAAG,CAAC;AAClC,cAAU,KAAK,EAAE,YAAY,IAAI,CAAC;AAClC,gBAAYC,SAAQD,OAAM,CAAC,EAAE;AAAA,EACjC;AACA,MAAI,YAAYD,MAAK,QAAQ;AACzB,cAAU,KAAM,aAAaA,MAAK,MAAM,SAAS,CAAE;AACnD,WAAO,KAAK,KAAK,UAAU,UAAU,CAAC;AAAA,EAC1C;AACA,SAAO;AAAA,IACH,YAAY,OAAO,KAAK,GAAG;AAAA,IAC3B,QAAQ;AAAA,EACZ;AACJ;AAEA,SAAS,gBAAgB,IAAI,SAAS;AAClC,MAAIG,QAAO,QAAQ,QAAQ;AAC3B,MAAI,cAAc,iBAAiB,IAAI,OAAO;AAC9C,MAAI,OAAsD;AACtD,QAAI,MAAM,UAAU,aAAa,QAAQ,UAAU;AACnD,QAAI,KAAK;AACL,MAAAA,MAAK,UAAW,OAAO,aAAa,KAAM,IACtC,yKAE+D,GAAG,YAAY,OAAO,CAAC;AAAA,IAC9F;AAAA,EACJ;AACA,MAAI,aAAa;AACb,OAAG,cAAc,KAAK,UAAU,YAAY,QAAQ,QAAQ,GAAG,EAAE,KAAK,CAAC;AAAA,EAC3E;AACA,MAAI,eAAe;AAAA,IAAe;AAAA,IAAI;AAAA,IAAS;AAAA;AAAA,EAAqB;AACpE,MAAI,cAAc;AACd,OAAG,eAAe;AAAA,EACtB;AACJ;AACA,SAAS,UAAU,IAAI;AACnB,MAAI,OAAO;AACX,MAAI,GAAG,aAAa;AAChB,YAAQ,eAAe,OAAO,GAAG,aAAa,GAAG;AAAA,EACrD;AACA,MAAI,GAAG,cAAc;AACjB,YAAQ,SAAS,OAAO,GAAG,cAAc,GAAG;AAAA,EAChD;AACA,SAAO;AACX;AACA,IAAI,QAAQ;AAAA,EACR,YAAY,CAAC,aAAa;AAAA,EAC1B,eAAe;AAAA,EACf,SAAS;AACb;AAEA,SAAS,cAAc,IAAI,SAAS;AAChC,MAAIA,QAAO,QAAQ,QAAQ;AAC3B,MAAI,cAAc,iBAAiB,IAAI,OAAO;AAC9C,MAAI,aAAa;AAEb,QAAI,OAAuC;AACvC,UAAI,MAAM,UAAU,aAAa,QAAQ,UAAU;AACnD,UAAI,KAAK;AACL,QAAAA,MAAK,UAAW,OAAO,aAAa,KAAM,IACtC,yKAE+D,GAAG,YAAY,OAAO,CAAC;AAAA,MAC9F;AAAA,IACJ;AACA,OAAG,cAAc,KAAK,UAAU,eAAe,WAAW,CAAC;AAAA,EAC/D;AACA,MAAI,eAAe;AAAA,IAAe;AAAA,IAAI;AAAA,IAAS;AAAA;AAAA,EAAqB;AACpE,MAAI,cAAc;AACd,OAAG,eAAe;AAAA,EACtB;AACJ;AACA,SAAS,UAAU,IAAI;AACnB,MAAI,OAAO;AACX,MAAI,GAAG,aAAa;AAChB,YAAQ,eAAe,OAAO,GAAG,aAAa,GAAG;AAAA,EACrD;AACA,MAAI,GAAG,cAAc;AACjB,YAAQ,UAAU,OAAO,GAAG,cAAc,IAAI;AAAA,EAClD;AACA,SAAO;AACX;AACA,IAAI,QAAQ;AAAA,EACR,YAAY,CAAC,aAAa;AAAA,EAC1B;AAAA,EACA,SAAS;AACb;AAEA,IAAI;AACJ,IAAI,KAAK;AAAA,EACL,QAAQ,SAAUC,OAAM;AACpB,cAAU,WAAW,SAAS,cAAc,KAAK;AACjD,YAAQ,YAAYA;AACpB,WAAO,QAAQ;AAAA,EACnB;AACJ;AAEA,IAAI,aAAa,QAAQ,2FACa;AAGtC,IAAI,mBAAmB,QAAQ,yDAAyD;AAGxF,IAAI,mBAAmB,QAAQ,iSAIX;AAMpB,IAAI,YAAY;AAChB,IAAI,sBAAsB;AAC1B,IAAI,SAAS,6BAA6B,OAAO,cAAc,QAAQ,IAAI;AAC3E,IAAI,eAAe,OAAO,OAAO,QAAQ,OAAO,EAAE,OAAO,QAAQ,GAAG;AACpE,IAAI,eAAe,IAAI,OAAO,KAAK,OAAO,YAAY,CAAC;AACvD,IAAI,gBAAgB;AACpB,IAAI,SAAS,IAAI,OAAO,QAAQ,OAAO,cAAc,QAAQ,CAAC;AAC9D,IAAI,UAAU;AAEd,IAAI,UAAU;AACd,IAAI,qBAAqB;AAEzB,IAAI,qBAAqB,QAAQ,yBAAyB,IAAI;AAC9D,IAAI,UAAU,CAAC;AACf,IAAI,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,SAAS;AACb;AACA,IAAI,cAAc;AAClB,IAAI,0BAA0B;AAE9B,IAAI,qBAAqB,QAAQ,gBAAgB,IAAI;AACrD,IAAI,2BAA2B,SAAU,KAAKA,OAAM;AAChD,SAAO,OAAO,mBAAmB,GAAG,KAAKA,MAAK,CAAC,MAAM;AACzD;AACA,SAAS,WAAW,OAAOC,uBAAsB;AAC7C,MAAIC,MAAKD,wBAAuB,0BAA0B;AAC1D,SAAO,MAAM,QAAQC,KAAI,SAAUL,QAAO;AAAE,WAAO,YAAYA,MAAK;AAAA,EAAG,CAAC;AAC5E;AACA,SAAS,UAAUG,OAAM,SAAS;AAC9B,MAAI,QAAQ,CAAC;AACb,MAAI,aAAa,QAAQ;AACzB,MAAIG,cAAa,QAAQ,cAAc;AACvC,MAAIC,oBAAmB,QAAQ,oBAAoB;AACnD,MAAIN,SAAQ;AACZ,MAAI,MAAM;AACV,MAAI,UAAU,WAAY;AACtB,WAAOE;AAEP,QAAI,CAAC,WAAW,CAAC,mBAAmB,OAAO,GAAG;AAC1C,UAAI,UAAUA,MAAK,QAAQ,GAAG;AAC9B,UAAI,YAAY,GAAG;AAEf,YAAI,QAAQ,KAAKA,KAAI,GAAG;AACpB,cAAI,aAAaA,MAAK,QAAQ,KAAK;AACnC,cAAI,cAAc,GAAG;AACjB,gBAAI,QAAQ,qBAAqB,QAAQ,SAAS;AAC9C,sBAAQ,QAAQA,MAAK,UAAU,GAAG,UAAU,GAAGF,QAAOA,SAAQ,aAAa,CAAC;AAAA,YAChF;AACA,oBAAQ,aAAa,CAAC;AACtB,mBAAO;AAAA,UACX;AAAA,QACJ;AAEA,YAAI,mBAAmB,KAAKE,KAAI,GAAG;AAC/B,cAAI,iBAAiBA,MAAK,QAAQ,IAAI;AACtC,cAAI,kBAAkB,GAAG;AACrB,oBAAQ,iBAAiB,CAAC;AAC1B,mBAAO;AAAA,UACX;AAAA,QACJ;AAEA,YAAI,eAAeA,MAAK,MAAM,OAAO;AACrC,YAAI,cAAc;AACd,kBAAQ,aAAa,CAAC,EAAE,MAAM;AAC9B,iBAAO;AAAA,QACX;AAEA,YAAI,cAAcA,MAAK,MAAM,MAAM;AACnC,YAAI,aAAa;AACb,cAAI,WAAWF;AACf,kBAAQ,YAAY,CAAC,EAAE,MAAM;AAC7B,sBAAY,YAAY,CAAC,GAAG,UAAUA,MAAK;AAC3C,iBAAO;AAAA,QACX;AAEA,YAAI,gBAAgB,cAAc;AAClC,YAAI,eAAe;AACf,yBAAe,aAAa;AAC5B,cAAI,yBAAyB,cAAc,SAASE,KAAI,GAAG;AACvD,oBAAQ,CAAC;AAAA,UACb;AACA,iBAAO;AAAA,QACX;AAAA,MACJ;AACA,UAAIJ,QAAO,QAAQ,OAAO,QAAQS,QAAO;AACzC,UAAI,WAAW,GAAG;AACd,eAAOL,MAAK,MAAM,OAAO;AACzB,eAAO,CAAC,OAAO,KAAK,IAAI,KACpB,CAAC,aAAa,KAAK,IAAI,KACvB,CAAC,QAAQ,KAAK,IAAI,KAClB,CAAC,mBAAmB,KAAK,IAAI,GAAG;AAEhC,UAAAK,QAAO,KAAK,QAAQ,KAAK,CAAC;AAC1B,cAAIA,QAAO;AACP;AACJ,qBAAWA;AACX,iBAAOL,MAAK,MAAM,OAAO;AAAA,QAC7B;AACA,QAAAJ,QAAOI,MAAK,UAAU,GAAG,OAAO;AAAA,MACpC;AACA,UAAI,UAAU,GAAG;AACb,QAAAJ,QAAOI;AAAA,MACX;AACA,UAAIJ,OAAM;AACN,gBAAQA,MAAK,MAAM;AAAA,MACvB;AACA,UAAI,QAAQ,SAASA,OAAM;AACvB,gBAAQ,MAAMA,OAAME,SAAQF,MAAK,QAAQE,MAAK;AAAA,MAClD;AAAA,IACJ,OACK;AACD,UAAI,iBAAiB;AACrB,UAAI,eAAe,QAAQ,YAAY;AACvC,UAAI,eAAe,QAAQ,YAAY,MAClC,QAAQ,YAAY,IAAI,IAAI,OAAO,oBAAoB,eAAe,WAAW,GAAG;AACzF,UAAI,OAAOE,MAAK,QAAQ,cAAc,SAAUM,MAAKV,OAAMW,SAAQ;AAC/D,yBAAiBA,QAAO;AACxB,YAAI,CAAC,mBAAmB,YAAY,KAAK,iBAAiB,YAAY;AAClE,UAAAX,QAAOA,MACF,QAAQ,uBAAuB,IAAI,EACnC,QAAQ,6BAA6B,IAAI;AAAA,QAClD;AACA,YAAI,yBAAyB,cAAcA,KAAI,GAAG;AAC9C,UAAAA,QAAOA,MAAK,MAAM,CAAC;AAAA,QACvB;AACA,YAAI,QAAQ,OAAO;AACf,kBAAQ,MAAMA,KAAI;AAAA,QACtB;AACA,eAAO;AAAA,MACX,CAAC;AACD,MAAAE,UAASE,MAAK,SAAS,KAAK;AAC5B,MAAAA,QAAO;AACP,kBAAY,cAAcF,SAAQ,gBAAgBA,MAAK;AAAA,IAC3D;AACA,QAAIE,UAAS,MAAM;AACf,cAAQ,SAAS,QAAQ,MAAMA,KAAI;AACnC,UAAI,OAAwE;AACxE,gBAAQ,KAAK,0CAA2C,OAAOA,OAAM,GAAI,GAAG;AAAA,UACxE,OAAOF,SAAQE,MAAK;AAAA,QACxB,CAAC;AAAA,MACL;AACA,aAAO;AAAA,IACX;AAAA,EACJ;AACA,SAAOA,OAAM;AACT,QAAI,UAAU,QAAQ;AACtB,QAAI,YAAY;AACZ;AAAA,EACR;AAEA,cAAY;AACZ,WAAS,QAAQ,GAAG;AAChB,IAAAF,UAAS;AACT,IAAAE,QAAOA,MAAK,UAAU,CAAC;AAAA,EAC3B;AACA,WAAS,gBAAgB;AACrB,QAAIQ,SAAQR,MAAK,MAAM,YAAY;AACnC,QAAIQ,QAAO;AACP,UAAIX,SAAQ;AAAA,QACR,SAASW,OAAM,CAAC;AAAA,QAChB,OAAO,CAAC;AAAA,QACR,OAAOV;AAAA,MACX;AACA,cAAQU,OAAM,CAAC,EAAE,MAAM;AACvB,UAAI,MAAM,QAAQ,OAAO;AACzB,aAAO,EAAE,MAAMR,MAAK,MAAM,aAAa,OAClC,OAAOA,MAAK,MAAM,mBAAmB,KAAKA,MAAK,MAAM,SAAS,IAAI;AACnE,aAAK,QAAQF;AACb,gBAAQ,KAAK,CAAC,EAAE,MAAM;AACtB,aAAK,MAAMA;AACX,QAAAD,OAAM,MAAM,KAAK,IAAI;AAAA,MACzB;AACA,UAAI,KAAK;AACL,QAAAA,OAAM,aAAa,IAAI,CAAC;AACxB,gBAAQ,IAAI,CAAC,EAAE,MAAM;AACrB,QAAAA,OAAM,MAAMC;AACZ,eAAOD;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AACA,WAAS,eAAeA,QAAO;AAC3B,QAAIY,WAAUZ,OAAM;AACpB,QAAI,aAAaA,OAAM;AACvB,QAAI,YAAY;AACZ,UAAI,YAAY,OAAO,iBAAiBY,QAAO,GAAG;AAC9C,oBAAY,OAAO;AAAA,MACvB;AACA,UAAIL,kBAAiBK,QAAO,KAAK,YAAYA,UAAS;AAClD,oBAAYA,QAAO;AAAA,MACvB;AAAA,IACJ;AACA,QAAI,QAAQN,YAAWM,QAAO,KAAK,CAAC,CAAC;AACrC,QAAI,IAAIZ,OAAM,MAAM;AACpB,QAAIa,SAAQ,IAAI,MAAM,CAAC;AACvB,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AACxB,UAAI,OAAOb,OAAM,MAAM,CAAC;AACxB,UAAI,QAAQ,KAAK,CAAC,KAAK,KAAK,CAAC,KAAK,KAAK,CAAC,KAAK;AAC7C,UAAII,wBAAuBQ,aAAY,OAAO,KAAK,CAAC,MAAM,SACpD,QAAQ,8BACR,QAAQ;AACd,MAAAC,OAAM,CAAC,IAAI;AAAA,QACP,MAAM,KAAK,CAAC;AAAA,QACZ,OAAO,WAAW,OAAOT,qBAAoB;AAAA,MACjD;AACA,UAAI,OAAoE;AACpE,QAAAS,OAAM,CAAC,EAAE,QAAQ,KAAK,QAAQ,KAAK,CAAC,EAAE,MAAM,MAAM,EAAE;AACpD,QAAAA,OAAM,CAAC,EAAE,MAAM,KAAK;AAAA,MACxB;AAAA,IACJ;AACA,QAAI,CAAC,OAAO;AACR,YAAM,KAAK;AAAA,QACP,KAAKD;AAAA,QACL,eAAeA,SAAQ,YAAY;AAAA,QACnC,OAAOC;AAAA,QACP,OAAOb,OAAM;AAAA,QACb,KAAKA,OAAM;AAAA,MACf,CAAC;AACD,gBAAUY;AAAA,IACd;AACA,QAAI,QAAQ,OAAO;AACf,cAAQ,MAAMA,UAASC,QAAO,OAAOb,OAAM,OAAOA,OAAM,GAAG;AAAA,IAC/D;AAAA,EACJ;AACA,WAAS,YAAYY,UAASD,QAAO,KAAK;AACtC,QAAI,KAAK;AACT,QAAIA,UAAS;AACT,MAAAA,SAAQV;AACZ,QAAI,OAAO;AACP,YAAMA;AAEV,QAAIW,UAAS;AACT,0BAAoBA,SAAQ,YAAY;AACxC,WAAK,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO;AAC1C,YAAI,MAAM,GAAG,EAAE,kBAAkB,mBAAmB;AAChD;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ,OACK;AAED,YAAM;AAAA,IACV;AACA,QAAI,OAAO,GAAG;AAEV,eAAS,IAAI,MAAM,SAAS,GAAG,KAAK,KAAK,KAAK;AAC1C,YAAI,OAAgF;AAChF,kBAAQ,KAAK,QAAQ,OAAO,MAAM,CAAC,EAAE,KAAK,4BAA4B,GAAG;AAAA,YACrE,OAAO,MAAM,CAAC,EAAE;AAAA,YAChB,KAAK,MAAM,CAAC,EAAE;AAAA,UAClB,CAAC;AAAA,QACL;AACA,YAAI,QAAQ,KAAK;AACb,kBAAQ,IAAI,MAAM,CAAC,EAAE,KAAKD,QAAO,GAAG;AAAA,QACxC;AAAA,MACJ;AAEA,YAAM,SAAS;AACf,gBAAU,OAAO,MAAM,MAAM,CAAC,EAAE;AAAA,IACpC,WACS,sBAAsB,MAAM;AACjC,UAAI,QAAQ,OAAO;AACf,gBAAQ,MAAMC,UAAS,CAAC,GAAG,MAAMD,QAAO,GAAG;AAAA,MAC/C;AAAA,IACJ,WACS,sBAAsB,KAAK;AAChC,UAAI,QAAQ,OAAO;AACf,gBAAQ,MAAMC,UAAS,CAAC,GAAG,OAAOD,QAAO,GAAG;AAAA,MAChD;AACA,UAAI,QAAQ,KAAK;AACb,gBAAQ,IAAIC,UAASD,QAAO,GAAG;AAAA,MACnC;AAAA,IACJ;AAAA,EACJ;AACJ;AAEA,IAAI,OAAO;AACX,IAAI,QAAQ;AACZ,IAAI,aAAa;AACjB,IAAI,gBAAgB;AACpB,IAAI,gBAAgB;AACpB,IAAI,eAAe;AACnB,IAAI,QAAQ;AACZ,IAAI,SAAS;AACb,IAAI,aAAa;AACjB,IAAI,SAAS;AACb,IAAI,cAAc;AAClB,IAAI,eAAe;AAEnB,IAAI,mBAAmB,OAAO,GAAG,MAAM;AACvC,IAAI,sBAAsB;AAE1B,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,SAAS,iBAAiB,KAAKG,QAAO,QAAQ;AAC1C,SAAO;AAAA,IACH,MAAM;AAAA,IACN;AAAA,IACA,WAAWA;AAAA,IACX,UAAU,aAAaA,MAAK;AAAA,IAC5B,aAAa,CAAC;AAAA,IACd;AAAA,IACA,UAAU,CAAC;AAAA,EACf;AACJ;AAIA,SAAS,MAAM,UAAU,SAAS;AAC9B,SAAO,QAAQ,QAAQ;AACvB,qBAAmB,QAAQ,YAAY;AACvC,wBAAsB,QAAQ,eAAe;AAC7C,4BAA0B,QAAQ,mBAAmB;AACrD,MAAIC,iBAAgB,QAAQ,iBAAiB;AAC7C,mBAAiB,SAAU,IAAI;AAC3B,WAAO,CAAC,EAAE,GAAG,aACT,GAAG,SAAS,KAAK,KACjB,GAAG,SAAS,WAAW,KACvB,EAAE,GAAG,SAAS,KAAKA,eAAc,GAAG,SAAS,EAAE,IAAIA,eAAc,GAAG,GAAG;AAAA,EAC/E;AACA,eAAa,oBAAoB,QAAQ,SAAS,eAAe;AACjE,kBAAgB,oBAAoB,QAAQ,SAAS,kBAAkB;AACvE,mBAAiB,oBAAoB,QAAQ,SAAS,mBAAmB;AACzE,eAAa,QAAQ;AACrB,MAAI,QAAQ,CAAC;AACb,MAAI,qBAAqB,QAAQ,uBAAuB;AACxD,MAAI,mBAAmB,QAAQ;AAC/B,MAAIC;AACJ,MAAI;AACJ,MAAI,SAAS;AACb,MAAI,QAAQ;AACZ,MAAI,SAAS;AACb,WAAS,SAAS,KAAKC,QAAO;AAC1B,QAAI,CAAC,QAAQ;AACT,eAAS;AACT,WAAK,KAAKA,MAAK;AAAA,IACnB;AAAA,EACJ;AACA,WAAS,aAAa,SAAS;AAC3B,yBAAqB,OAAO;AAC5B,QAAI,CAAC,UAAU,CAAC,QAAQ,WAAW;AAC/B,gBAAU,eAAe,SAAS,OAAO;AAAA,IAC7C;AAEA,QAAI,CAAC,MAAM,UAAU,YAAYD,OAAM;AAEnC,UAAIA,MAAK,OAAO,QAAQ,UAAU,QAAQ,OAAO;AAC7C,YAAI,OAAuC;AACvC,+BAAqB,OAAO;AAAA,QAChC;AACA,uBAAeA,OAAM;AAAA,UACjB,KAAK,QAAQ;AAAA,UACb,OAAO;AAAA,QACX,CAAC;AAAA,MACL,WACS,OAAuC;AAC5C,iBAAS,gJAEmC,EAAE,OAAO,QAAQ,MAAM,CAAC;AAAA,MACxE;AAAA,IACJ;AACA,QAAI,iBAAiB,CAAC,QAAQ,WAAW;AACrC,UAAI,QAAQ,UAAU,QAAQ,MAAM;AAChC,4BAAoB,SAAS,aAAa;AAAA,MAC9C,OACK;AACD,YAAI,QAAQ,WAAW;AAInB,cAAI,SAAS,QAAQ,cAAc;AACnC,WAAC,cAAc,gBAAgB,cAAc,cAAc,CAAC,IAAI,MAAM,IAAI;AAAA,QAC9E;AACA,sBAAc,SAAS,KAAK,OAAO;AACnC,gBAAQ,SAAS;AAAA,MACrB;AAAA,IACJ;AAGA,YAAQ,WAAW,QAAQ,SAAS,OAAO,SAAU,GAAG;AAAE,aAAO,CAAC,EAAE;AAAA,IAAW,CAAC;AAEhF,yBAAqB,OAAO;AAE5B,QAAI,QAAQ,KAAK;AACb,eAAS;AAAA,IACb;AACA,QAAI,iBAAiB,QAAQ,GAAG,GAAG;AAC/B,cAAQ;AAAA,IACZ;AAEA,aAAS,IAAI,GAAG,IAAI,eAAe,QAAQ,KAAK;AAC5C,qBAAe,CAAC,EAAE,SAAS,OAAO;AAAA,IACtC;AAAA,EACJ;AACA,WAAS,qBAAqB,IAAI;AAE9B,QAAI,CAAC,OAAO;AACR,UAAI,WAAW;AACf,cAAQ,WAAW,GAAG,SAAS,GAAG,SAAS,SAAS,CAAC,MACjD,SAAS,SAAS,KAClB,SAAS,SAAS,KAAK;AACvB,WAAG,SAAS,IAAI;AAAA,MACpB;AAAA,IACJ;AAAA,EACJ;AACA,WAAS,qBAAqB,IAAI;AAC9B,QAAI,GAAG,QAAQ,UAAU,GAAG,QAAQ,YAAY;AAC5C,eAAS,eAAe,OAAO,GAAG,KAAK,6CAA6C,IAChF,2BAA2B,EAAE,OAAO,GAAG,MAAM,CAAC;AAAA,IACtD;AACA,QAAI,GAAG,SAAS,eAAe,OAAO,GAAG;AACrC,eAAS,6FAC4B,GAAG,YAAY,OAAO,CAAC;AAAA,IAChE;AAAA,EACJ;AACA,YAAU,UAAU;AAAA,IAChB;AAAA,IACA,YAAY,QAAQ;AAAA,IACpB,YAAY,QAAQ;AAAA,IACpB,kBAAkB,QAAQ;AAAA,IAC1B,sBAAsB,QAAQ;AAAA,IAC9B,6BAA6B,QAAQ;AAAA,IACrC,mBAAmB,QAAQ;AAAA,IAC3B,mBAAmB,QAAQ;AAAA,IAC3B,OAAO,SAAU,KAAKF,QAAO,OAAOI,QAAO,KAAK;AAG5C,UAAI,KAAM,iBAAiB,cAAc,MAAO,wBAAwB,GAAG;AAG3E,UAAI,QAAQ,OAAO,OAAO;AACtB,QAAAJ,SAAQ,cAAcA,MAAK;AAAA,MAC/B;AACA,UAAI,UAAU,iBAAiB,KAAKA,QAAO,aAAa;AACxD,UAAI,IAAI;AACJ,gBAAQ,KAAK;AAAA,MACjB;AACA,UAAI,OAAuC;AACvC,YAAI,QAAQ,mBAAmB;AAC3B,kBAAQ,QAAQI;AAChB,kBAAQ,MAAM;AACd,kBAAQ,cAAc,QAAQ,UAAU,OAAO,SAAU,WAAW,MAAM;AACtE,sBAAU,KAAK,IAAI,IAAI;AACvB,mBAAO;AAAA,UACX,GAAG,CAAC,CAAC;AAAA,QACT;AACA,QAAAJ,OAAM,QAAQ,SAAU,MAAM;AAC1B,cAAI,mBAAmB,KAAK,KAAK,IAAI,GAAG;AACpC,iBAAK,qGACgC,QAAQ,oBACvC;AAAA,cACE,OAAO,KAAK,QAAQ,KAAK,KAAK,QAAQ,GAAG;AAAA,cACzC,KAAK,KAAK,QAAQ,KAAK,KAAK;AAAA,YAChC,IACE,MAAS;AAAA,UACnB;AAAA,QACJ,CAAC;AAAA,MACL;AACA,UAAI,eAAe,OAAO,KAAK,CAAC,kBAAkB,GAAG;AACjD,gBAAQ,YAAY;AAAA,MAMxB;AAEA,eAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AAC3C,kBAAU,cAAc,CAAC,EAAE,SAAS,OAAO,KAAK;AAAA,MACpD;AACA,UAAI,CAAC,QAAQ;AACT,mBAAW,OAAO;AAClB,YAAI,QAAQ,KAAK;AACb,mBAAS;AAAA,QACb;AAAA,MACJ;AACA,UAAI,iBAAiB,QAAQ,GAAG,GAAG;AAC/B,gBAAQ;AAAA,MACZ;AACA,UAAI,QAAQ;AACR,wBAAgB,OAAO;AAAA,MAC3B,WACS,CAAC,QAAQ,WAAW;AAEzB,mBAAW,OAAO;AAClB,kBAAU,OAAO;AACjB,oBAAY,OAAO;AAAA,MACvB;AACA,UAAI,CAACE,OAAM;AACP,QAAAA,QAAO;AACP,YAAI,OAAuC;AACvC,+BAAqBA,KAAI;AAAA,QAC7B;AAAA,MACJ;AACA,UAAI,CAAC,OAAO;AACR,wBAAgB;AAChB,cAAM,KAAK,OAAO;AAAA,MACtB,OACK;AACD,qBAAa,OAAO;AAAA,MACxB;AAAA,IACJ;AAAA,IACA,KAAK,SAAU,KAAKE,QAAO,KAAK;AAC5B,UAAI,UAAU,MAAM,MAAM,SAAS,CAAC;AAEpC,YAAM,UAAU;AAChB,sBAAgB,MAAM,MAAM,SAAS,CAAC;AACtC,UAAI,OAAoE;AACpE,gBAAQ,MAAM;AAAA,MAClB;AACA,mBAAa,OAAO;AAAA,IACxB;AAAA,IACA,OAAO,SAAUC,OAAMD,QAAO,KAAK;AAC/B,UAAI,CAAC,eAAe;AAChB,YAAI,OAAuC;AACvC,cAAIC,UAAS,UAAU;AACnB,qBAAS,sEAAsE,EAAE,OAAOD,OAAM,CAAC;AAAA,UACnG,WACUC,QAAOA,MAAK,KAAK,GAAI;AAC3B,qBAAS,SAAU,OAAOA,OAAM,yCAA0C,GAAG;AAAA,cACzE,OAAOD;AAAA,YACX,CAAC;AAAA,UACL;AAAA,QACJ;AACA;AAAA,MACJ;AAGA,UAAI,QACA,cAAc,QAAQ,cACtB,cAAc,SAAS,gBAAgBC,OAAM;AAC7C;AAAA,MACJ;AACA,UAAIC,YAAW,cAAc;AAC7B,UAAI,SAASD,MAAK,KAAK,GAAG;AACtB,QAAAA,QAAO,UAAU,aAAa,IACxBA,QACA,iBAAiBA,KAAI;AAAA,MAC/B,WACS,CAACC,UAAS,QAAQ;AAEvB,QAAAD,QAAO;AAAA,MACX,WACS,kBAAkB;AACvB,YAAI,qBAAqB,YAAY;AAGjC,UAAAA,QAAO,YAAY,KAAKA,KAAI,IAAI,KAAK;AAAA,QACzC,OACK;AACD,UAAAA,QAAO;AAAA,QACX;AAAA,MACJ,OACK;AACD,QAAAA,QAAO,qBAAqB,MAAM;AAAA,MACtC;AACA,UAAIA,OAAM;AACN,YAAI,CAAC,SAAS,qBAAqB,YAAY;AAE3C,UAAAA,QAAOA,MAAK,QAAQ,cAAc,GAAG;AAAA,QACzC;AACA,YAAI,MAAM;AACV,YAAI,QAAQ;AACZ,YAAI,CAAC,UAAUA,UAAS,QAAQ,MAAM,UAAUA,OAAM,UAAU,IAAI;AAChE,kBAAQ;AAAA,YACJ,MAAM;AAAA,YACN,YAAY,IAAI;AAAA,YAChB,QAAQ,IAAI;AAAA,YACZ,MAAMA;AAAA,UACV;AAAA,QACJ,WACSA,UAAS,OACd,CAACC,UAAS,UACVA,UAASA,UAAS,SAAS,CAAC,EAAE,SAAS,KAAK;AAC5C,kBAAQ;AAAA,YACJ,MAAM;AAAA,YACN,MAAMD;AAAA,UACV;AAAA,QACJ;AACA,YAAI,OAAO;AACP,cAAI,OAAoE;AACpE,kBAAM,QAAQD;AACd,kBAAM,MAAM;AAAA,UAChB;AACA,UAAAE,UAAS,KAAK,KAAK;AAAA,QACvB;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,SAAS,SAAUD,OAAMD,QAAO,KAAK;AAGjC,UAAI,eAAe;AACf,YAAI,QAAQ;AAAA,UACR,MAAM;AAAA,UACN,MAAMC;AAAA,UACN,WAAW;AAAA,QACf;AACA,YAAI,OAAoE;AACpE,gBAAM,QAAQD;AACd,gBAAM,MAAM;AAAA,QAChB;AACA,sBAAc,SAAS,KAAK,KAAK;AAAA,MACrC;AAAA,IACJ;AAAA,EACJ,CAAC;AACD,SAAOF;AACX;AACA,SAAS,WAAW,IAAI;AACpB,MAAI,iBAAiB,IAAI,OAAO,KAAK,MAAM;AACvC,OAAG,MAAM;AAAA,EACb;AACJ;AACA,SAAS,gBAAgB,IAAI;AACzB,MAAI,OAAO,GAAG;AACd,MAAIK,OAAM,KAAK;AACf,MAAIA,MAAK;AACL,QAAIP,SAAS,GAAG,QAAQ,IAAI,MAAMO,IAAG;AACrC,aAAS,IAAI,GAAG,IAAIA,MAAK,KAAK;AAC1B,MAAAP,OAAM,CAAC,IAAI;AAAA,QACP,MAAM,KAAK,CAAC,EAAE;AAAA,QACd,OAAO,KAAK,UAAU,KAAK,CAAC,EAAE,KAAK;AAAA,MACvC;AACA,UAAI,KAAK,CAAC,EAAE,SAAS,MAAM;AACvB,QAAAA,OAAM,CAAC,EAAE,QAAQ,KAAK,CAAC,EAAE;AACzB,QAAAA,OAAM,CAAC,EAAE,MAAM,KAAK,CAAC,EAAE;AAAA,MAC3B;AAAA,IACJ;AAAA,EACJ,WACS,CAAC,GAAG,KAAK;AAEd,OAAG,QAAQ;AAAA,EACf;AACJ;AACA,SAAS,eAAe,SAAS,SAAS;AACtC,aAAW,OAAO;AAGlB,UAAQ,QACJ,CAAC,QAAQ,OAAO,CAAC,QAAQ,eAAe,CAAC,QAAQ,UAAU;AAC/D,aAAW,OAAO;AAClB,qBAAmB,OAAO;AAC1B,oBAAkB,OAAO;AACzB,mBAAiB,OAAO;AACxB,WAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AACxC,cAAU,WAAW,CAAC,EAAE,SAAS,OAAO,KAAK;AAAA,EACjD;AACA,eAAa,OAAO;AACpB,SAAO;AACX;AACA,SAAS,WAAW,IAAI;AACpB,MAAI,MAAM,eAAe,IAAI,KAAK;AAClC,MAAI,KAAK;AACL,QAAI,OAAuC;AACvC,UAAI,GAAG,QAAQ,YAAY;AACvB,aAAK,uEAAuE,kBAAkB,IAAI,KAAK,CAAC;AAAA,MAC5G;AACA,UAAI,GAAG,KAAK;AACR,YAAIQ,YAAW,GAAG,aAAa,GAAG;AAClC,YAAI,WAAW,GAAG;AAClB,YAAIA,aACAA,cAAa,OACb,YACA,SAAS,QAAQ,oBAAoB;AACrC;AAAA,YAAK;AAAA,YACsC,kBAAkB,IAAI,KAAK;AAAA,YAAG;AAAA;AAAA,UAAc;AAAA,QAC3F;AAAA,MACJ;AAAA,IACJ;AACA,OAAG,MAAM;AAAA,EACb;AACJ;AACA,SAAS,WAAW,IAAI;AACpB,MAAIC,OAAM,eAAe,IAAI,KAAK;AAClC,MAAIA,MAAK;AACL,OAAG,MAAMA;AACT,OAAG,WAAW,WAAW,EAAE;AAAA,EAC/B;AACJ;AACA,SAAS,WAAW,IAAI;AACpB,MAAI;AACJ,MAAK,MAAM,iBAAiB,IAAI,OAAO,GAAI;AACvC,QAAI,MAAM,SAAS,GAAG;AACtB,QAAI,KAAK;AACL,MAAAC,QAAO,IAAI,GAAG;AAAA,IAClB,WACS,OAAuC;AAC5C,WAAK,6BAA6B,OAAO,GAAG,GAAG,GAAG,YAAY,OAAO,CAAC;AAAA,IAC1E;AAAA,EACJ;AACJ;AACA,SAAS,SAAS,KAAK;AACnB,MAAI,UAAU,IAAI,MAAM,UAAU;AAClC,MAAI,CAAC;AACD;AACJ,MAAI,MAAM,CAAC;AACX,MAAI,MAAM,QAAQ,CAAC,EAAE,KAAK;AAC1B,MAAI,QAAQ,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,eAAe,EAAE;AACvD,MAAI,gBAAgB,MAAM,MAAM,aAAa;AAC7C,MAAI,eAAe;AACf,QAAI,QAAQ,MAAM,QAAQ,eAAe,EAAE,EAAE,KAAK;AAClD,QAAI,YAAY,cAAc,CAAC,EAAE,KAAK;AACtC,QAAI,cAAc,CAAC,GAAG;AAClB,UAAI,YAAY,cAAc,CAAC,EAAE,KAAK;AAAA,IAC1C;AAAA,EACJ,OACK;AACD,QAAI,QAAQ;AAAA,EAChB;AACA,SAAO;AACX;AACA,SAAS,UAAU,IAAI;AACnB,MAAI,MAAM,iBAAiB,IAAI,MAAM;AACrC,MAAI,KAAK;AACL,OAAG,KAAK;AACR,mBAAe,IAAI;AAAA,MACf;AAAA,MACA,OAAO;AAAA,IACX,CAAC;AAAA,EACL,OACK;AACD,QAAI,iBAAiB,IAAI,QAAQ,KAAK,MAAM;AACxC,SAAG,OAAO;AAAA,IACd;AACA,QAAI,SAAS,iBAAiB,IAAI,WAAW;AAC7C,QAAI,QAAQ;AACR,SAAG,SAAS;AAAA,IAChB;AAAA,EACJ;AACJ;AACA,SAAS,oBAAoB,IAAI,QAAQ;AACrC,MAAI,OAAO,gBAAgB,OAAO,QAAQ;AAC1C,MAAI,QAAQ,KAAK,IAAI;AACjB,mBAAe,MAAM;AAAA,MACjB,KAAK,GAAG;AAAA,MACR,OAAO;AAAA,IACX,CAAC;AAAA,EACL,WACS,OAAuC;AAC5C,SAAK,KAAK,OAAO,GAAG,SAAS,cAAc,GAAG,SAAS,MAAM,QAAQ,GAAG,IACpE,oBAAoB,OAAO,GAAG,KAAK,+BAA+B,GAAG,GAAG,YAAY,GAAG,SAAS,cAAc,QAAQ,CAAC;AAAA,EAC/H;AACJ;AACA,SAAS,gBAAgBJ,WAAU;AAC/B,MAAI,IAAIA,UAAS;AACjB,SAAO,KAAK;AACR,QAAIA,UAAS,CAAC,EAAE,SAAS,GAAG;AACxB,aAAOA,UAAS,CAAC;AAAA,IACrB,OACK;AACD,UAAI,OAAmE;AACnE,aAAK,SAAU,OAAOA,UAAS,CAAC,EAAE,KAAK,KAAK,GAAG,iCAAkC,IAC7E,oBAAoBA,UAAS,CAAC,CAAC;AAAA,MACvC;AACA,MAAAA,UAAS,IAAI;AAAA,IACjB;AAAA,EACJ;AACJ;AACA,SAAS,eAAe,IAAI,WAAW;AACnC,MAAI,CAAC,GAAG,cAAc;AAClB,OAAG,eAAe,CAAC;AAAA,EACvB;AACA,KAAG,aAAa,KAAK,SAAS;AAClC;AACA,SAAS,YAAY,IAAI;AACrB,MAAIK,QAAO,iBAAiB,IAAI,QAAQ;AACxC,MAAIA,SAAQ,MAAM;AACd,OAAG,OAAO;AAAA,EACd;AACJ;AAGA,SAAS,mBAAmB,IAAI;AAC5B,MAAI;AACJ,MAAI,GAAG,QAAQ,YAAY;AACvB,gBAAY,iBAAiB,IAAI,OAAO;AAExC,QAAI,OAAoD;AACpD,WAAK,2NAGuB,GAAG,YAAY,OAAO,GAAG,IAAI;AAAA,IAC7D;AACA,OAAG,YAAY,aAAa,iBAAiB,IAAI,YAAY;AAAA,EACjE,WACU,YAAY,iBAAiB,IAAI,YAAY,GAAI;AAEvD,QAAI,OAA+D;AAC/D,WAAK,wDAAwD,OAAO,GAAG,KAAK,IAAI,IAC5E,mGACmC,GAAG,YAAY,YAAY,GAAG,IAAI;AAAA,IAC7E;AACA,OAAG,YAAY;AAAA,EACnB;AAEA,MAAI,aAAa,eAAe,IAAI,MAAM;AAC1C,MAAI,YAAY;AACZ,OAAG,aAAa,eAAe,OAAO,cAAc;AACpD,OAAG,oBAAoB,CAAC,EAAE,GAAG,SAAS,OAAO,KAAK,GAAG,SAAS,aAAa;AAG3E,QAAI,GAAG,QAAQ,cAAc,CAAC,GAAG,WAAW;AACxC,cAAQ,IAAI,QAAQ,YAAY,kBAAkB,IAAI,MAAM,CAAC;AAAA,IACjE;AAAA,EACJ;AAEA;AACI,QAAI,GAAG,QAAQ,YAAY;AAEvB,UAAI,cAAc,wBAAwB,IAAI,MAAM;AACpD,UAAI,aAAa;AACb,YAAI,OAAuC;AACvC,cAAI,GAAG,cAAc,GAAG,WAAW;AAC/B,iBAAK,sDAAsD,EAAE;AAAA,UACjE;AACA,cAAI,GAAG,UAAU,CAAC,eAAe,GAAG,MAAM,GAAG;AACzC,iBAAK,sFAC0B,EAAE;AAAA,UACrC;AAAA,QACJ;AACA,YAAIC,MAAK,YAAY,WAAW,GAAG,SAASA,IAAG,MAAM,UAAUA,IAAG;AAClE,WAAG,aAAa;AAChB,WAAG,oBAAoB;AACvB,WAAG,YAAY,YAAY,SAAS;AAAA,MACxC;AAAA,IACJ,OACK;AAED,UAAI,cAAc,wBAAwB,IAAI,MAAM;AACpD,UAAI,aAAa;AACb,YAAI,OAAuC;AACvC,cAAI,CAAC,eAAe,EAAE,GAAG;AACrB,iBAAK,wDAAwD,WAAW;AAAA,UAC5E;AACA,cAAI,GAAG,aAAa,GAAG,YAAY;AAC/B,iBAAK,sDAAsD,EAAE;AAAA,UACjE;AACA,cAAI,GAAG,aAAa;AAChB,iBAAK,kHACsD,WAAW;AAAA,UAC1E;AAAA,QACJ;AAEA,YAAI,QAAQ,GAAG,gBAAgB,GAAG,cAAc,CAAC;AACjD,YAAI,KAAK,YAAY,WAAW,GAAG,SAAS,GAAG,MAAM,UAAU,GAAG;AAClE,YAAI,kBAAmB,MAAM,MAAM,IAAI,iBAAiB,YAAY,CAAC,GAAG,EAAE;AAC1E,wBAAgB,aAAa;AAC7B,wBAAgB,oBAAoB;AACpC,wBAAgB,WAAW,GAAG,SAAS,OAAO,SAAU,GAAG;AACvD,cAAI,CAAC,EAAE,WAAW;AACd,cAAE,SAAS;AACX,mBAAO;AAAA,UACX;AAAA,QACJ,CAAC;AACD,wBAAgB,YAAY,YAAY,SAAS;AAEjD,WAAG,WAAW,CAAC;AAEf,WAAG,QAAQ;AAAA,MACf;AAAA,IACJ;AAAA,EACJ;AACJ;AACA,SAAS,YAAY,SAAS;AAC1B,MAAI,OAAO,QAAQ,KAAK,QAAQ,QAAQ,EAAE;AAC1C,MAAI,CAAC,MAAM;AACP,QAAI,QAAQ,KAAK,CAAC,MAAM,KAAK;AACzB,aAAO;AAAA,IACX,WACS,OAAuC;AAC5C,WAAK,iDAAiD,OAAO;AAAA,IACjE;AAAA,EACJ;AACA,SAAO,aAAa,KAAK,IAAI;AAAA;AAAA,IAErB,EAAE,MAAM,KAAK,MAAM,GAAG,EAAE,GAAG,SAAS,KAAK;AAAA;AAAA;AAAA,IAEzC,EAAE,MAAM,IAAK,OAAO,MAAM,GAAI,GAAG,SAAS,MAAM;AAAA;AAC5D;AAEA,SAAS,kBAAkB,IAAI;AAC3B,MAAI,GAAG,QAAQ,QAAQ;AACnB,OAAG,WAAW,eAAe,IAAI,MAAM;AACvC,QAAI,OAAiD;AACjD,WAAK,+JAE6C,kBAAkB,IAAI,KAAK,CAAC;AAAA,IAClF;AAAA,EACJ;AACJ;AACA,SAAS,iBAAiB,IAAI;AAC1B,MAAI;AACJ,MAAK,UAAU,eAAe,IAAI,IAAI,GAAI;AACtC,OAAG,YAAY;AAAA,EACnB;AACA,MAAI,iBAAiB,IAAI,iBAAiB,KAAK,MAAM;AACjD,OAAG,iBAAiB;AAAA,EACxB;AACJ;AACA,SAAS,aAAa,IAAI;AACtB,MAAI,OAAO,GAAG;AACd,MAAI,GAAG,GAAG,MAAM,SAAS,OAAO,WAAW,SAAS;AACpD,OAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAG,KAAK;AACrC,WAAO,UAAU,KAAK,CAAC,EAAE;AACzB,YAAQ,KAAK,CAAC,EAAE;AAChB,QAAI,MAAM,KAAK,IAAI,GAAG;AAElB,SAAG,cAAc;AAEjB,kBAAY,eAAe,KAAK,QAAQ,OAAO,EAAE,CAAC;AAElD,UAAI,WAAW;AACX,eAAO,KAAK,QAAQ,YAAY,EAAE;AAAA,MACtC;AACA,UAAI,OAAO,KAAK,IAAI,GAAG;AAEnB,eAAO,KAAK,QAAQ,QAAQ,EAAE;AAC9B,gBAAQ,aAAa,KAAK;AAC1B,oBAAY,aAAa,KAAK,IAAI;AAClC,YAAI,WAAW;AACX,iBAAO,KAAK,MAAM,GAAG,EAAE;AAAA,QAC3B;AACA,YAAI,OAAoE;AACpE,eAAK,uEAAwE,OAAO,MAAM,GAAI,CAAC;AAAA,QACnG;AACA,YAAI,WAAW;AACX,cAAI,UAAU,QAAQ,CAAC,WAAW;AAC9B,mBAAO,SAAS,IAAI;AACpB,gBAAI,SAAS;AACT,qBAAO;AAAA,UACf;AACA,cAAI,UAAU,SAAS,CAAC,WAAW;AAC/B,mBAAO,SAAS,IAAI;AAAA,UACxB;AACA,cAAI,UAAU,MAAM;AAChB,sBAAU,kBAAkB,OAAO,QAAQ;AAC3C,gBAAI,CAAC,WAAW;AACZ,yBAAW,IAAI,UAAU,OAAO,SAAS,IAAI,CAAC,GAAG,SAAS,MAAM,OAAO,MAAM,KAAK,CAAC,CAAC;AACpF,kBAAI,UAAU,IAAI,MAAM,SAAS,IAAI,GAAG;AACpC,2BAAW,IAAI,UAAU,OAAO,UAAU,IAAI,CAAC,GAAG,SAAS,MAAM,OAAO,MAAM,KAAK,CAAC,CAAC;AAAA,cACzF;AAAA,YACJ,OACK;AAED;AAAA,gBAAW;AAAA,gBAAI,cAAgB,OAAO,MAAM,GAAG;AAAA,gBAAG;AAAA,gBAAS;AAAA,gBAAM;AAAA,gBAAO;AAAA,gBAAM,KAAK,CAAC;AAAA,gBAAG;AAAA;AAAA,cACvF;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AACA,YAAK,aAAa,UAAU,QACvB,CAAC,GAAG,aAAa,oBAAoB,GAAG,KAAK,GAAG,SAAS,MAAM,IAAI,GAAI;AACxE,kBAAQ,IAAI,MAAM,OAAO,KAAK,CAAC,GAAG,SAAS;AAAA,QAC/C,OACK;AACD,kBAAQ,IAAI,MAAM,OAAO,KAAK,CAAC,GAAG,SAAS;AAAA,QAC/C;AAAA,MACJ,WACS,KAAK,KAAK,IAAI,GAAG;AAEtB,eAAO,KAAK,QAAQ,MAAM,EAAE;AAC5B,oBAAY,aAAa,KAAK,IAAI;AAClC,YAAI,WAAW;AACX,iBAAO,KAAK,MAAM,GAAG,EAAE;AAAA,QAC3B;AACA,mBAAW,IAAI,MAAM,OAAO,WAAW,OAAO,MAAM,KAAK,CAAC,GAAG,SAAS;AAAA,MAC1E,OACK;AAED,eAAO,KAAK,QAAQ,OAAO,EAAE;AAE7B,YAAI,WAAW,KAAK,MAAM,KAAK;AAC/B,YAAI,MAAM,YAAY,SAAS,CAAC;AAChC,oBAAY;AACZ,YAAI,KAAK;AACL,iBAAO,KAAK,MAAM,GAAG,EAAE,IAAI,SAAS,EAAE;AACtC,cAAI,aAAa,KAAK,GAAG,GAAG;AACxB,kBAAM,IAAI,MAAM,GAAG,EAAE;AACrB,wBAAY;AAAA,UAChB;AAAA,QACJ;AACA,qBAAa,IAAI,MAAM,SAAS,OAAO,KAAK,WAAW,WAAW,KAAK,CAAC,CAAC;AACzE,YAAI,OAA2D;AAC3D,6BAAmB,IAAI,KAAK;AAAA,QAChC;AAAA,MACJ;AAAA,IACJ,OACK;AAED,UAAI,OAAuC;AACvC,YAAI,MAAM,UAAU,OAAO,UAAU;AACrC,YAAI,KAAK;AACL,eAAK,GAAG,OAAO,MAAM,IAAK,EAAE,OAAO,OAAO,KAAM,IAC5C,mKAEyD,KAAK,CAAC,CAAC;AAAA,QACxE;AAAA,MACJ;AACA,cAAQ,IAAI,MAAM,KAAK,UAAU,KAAK,GAAG,KAAK,CAAC,CAAC;AAGhD,UAAI,CAAC,GAAG,aACJ,SAAS,WACT,oBAAoB,GAAG,KAAK,GAAG,SAAS,MAAM,IAAI,GAAG;AACrD,gBAAQ,IAAI,MAAM,QAAQ,KAAK,CAAC,CAAC;AAAA,MACrC;AAAA,IACJ;AAAA,EACJ;AACJ;AACA,SAAS,WAAW,IAAI;AACpB,MAAI,SAAS;AACb,SAAO,QAAQ;AACX,QAAI,OAAO,QAAQ,QAAW;AAC1B,aAAO;AAAA,IACX;AACA,aAAS,OAAO;AAAA,EACpB;AACA,SAAO;AACX;AACA,SAAS,eAAe,MAAM;AAC1B,MAAIC,SAAQ,KAAK,MAAM,UAAU;AACjC,MAAIA,QAAO;AACP,QAAI,QAAQ,CAAC;AACb,IAAAA,OAAM,QAAQ,SAAU,GAAG;AACvB,YAAM,EAAE,MAAM,CAAC,CAAC,IAAI;AAAA,IACxB,CAAC;AACD,WAAO;AAAA,EACX;AACJ;AACA,SAAS,aAAab,QAAO;AACzB,MAAIc,OAAM,CAAC;AACX,WAAS,IAAI,GAAG,IAAId,OAAM,QAAQ,IAAI,GAAG,KAAK;AAC1C,QAAI,OAAiF;AACjF,WAAK,0BAA0BA,OAAM,CAAC,EAAE,MAAMA,OAAM,CAAC,CAAC;AAAA,IAC1D;AACA,IAAAc,KAAId,OAAM,CAAC,EAAE,IAAI,IAAIA,OAAM,CAAC,EAAE;AAAA,EAClC;AACA,SAAOc;AACX;AAEA,SAAS,UAAU,IAAI;AACnB,SAAO,GAAG,QAAQ,YAAY,GAAG,QAAQ;AAC7C;AACA,SAAS,eAAe,IAAI;AACxB,SAAQ,GAAG,QAAQ,WACd,GAAG,QAAQ,aACP,CAAC,GAAG,SAAS,QAAQ,GAAG,SAAS,SAAS;AACvD;AACA,IAAI,UAAU;AACd,IAAI,aAAa;AAEjB,SAAS,cAAcd,QAAO;AAC1B,MAAI,MAAM,CAAC;AACX,WAAS,IAAI,GAAG,IAAIA,OAAM,QAAQ,KAAK;AACnC,QAAI,OAAOA,OAAM,CAAC;AAClB,QAAI,CAAC,QAAQ,KAAK,KAAK,IAAI,GAAG;AAC1B,WAAK,OAAO,KAAK,KAAK,QAAQ,YAAY,EAAE;AAC5C,UAAI,KAAK,IAAI;AAAA,IACjB;AAAA,EACJ;AACA,SAAO;AACX;AAwBA,SAAS,iBAAiB,IAAI,SAAS;AACnC,MAAI,GAAG,QAAQ,SAAS;AACpB,QAAIe,OAAM,GAAG;AACb,QAAI,CAACA,KAAI,SAAS,GAAG;AACjB;AAAA,IACJ;AACA,QAAI,cAAc;AAClB,QAAIA,KAAI,OAAO,KAAKA,KAAI,aAAa,GAAG;AACpC,oBAAc,eAAe,IAAI,MAAM;AAAA,IAC3C;AACA,QAAI,CAACA,KAAI,QAAQ,CAAC,eAAeA,KAAI,QAAQ,GAAG;AAC5C,oBAAc,IAAI,OAAOA,KAAI,QAAQ,GAAG,QAAQ;AAAA,IACpD;AACA,QAAI,aAAa;AACb,UAAI,cAAc,iBAAiB,IAAI,QAAQ,IAAI;AACnD,UAAI,mBAAmB,cAAc,MAAM,OAAO,aAAa,GAAG,IAAI;AACtE,UAAI,UAAU,iBAAiB,IAAI,UAAU,IAAI,KAAK;AACtD,UAAI,kBAAkB,iBAAiB,IAAI,aAAa,IAAI;AAE5D,UAAI,UAAU,gBAAgB,EAAE;AAEhC,iBAAW,OAAO;AAClB,iBAAW,SAAS,QAAQ,UAAU;AACtC,qBAAe,SAAS,OAAO;AAC/B,cAAQ,YAAY;AACpB,cAAQ,KAAK,IAAI,OAAO,aAAa,gBAAgB,IAAI;AACzD,qBAAe,SAAS;AAAA,QACpB,KAAK,QAAQ;AAAA,QACb,OAAO;AAAA,MACX,CAAC;AAED,UAAI,UAAU,gBAAgB,EAAE;AAChC,uBAAiB,SAAS,SAAS,IAAI;AACvC,iBAAW,SAAS,QAAQ,OAAO;AACnC,qBAAe,SAAS,OAAO;AAC/B,qBAAe,SAAS;AAAA,QACpB,KAAK,IAAI,OAAO,aAAa,aAAa,IAAI;AAAA,QAC9C,OAAO;AAAA,MACX,CAAC;AAED,UAAI,UAAU,gBAAgB,EAAE;AAChC,uBAAiB,SAAS,SAAS,IAAI;AACvC,iBAAW,SAAS,SAAS,WAAW;AACxC,qBAAe,SAAS,OAAO;AAC/B,qBAAe,SAAS;AAAA,QACpB,KAAK;AAAA,QACL,OAAO;AAAA,MACX,CAAC;AACD,UAAI,SAAS;AACT,gBAAQ,OAAO;AAAA,MACnB,WACS,iBAAiB;AACtB,gBAAQ,SAAS;AAAA,MACrB;AACA,aAAO;AAAA,IACX;AAAA,EACJ;AACJ;AACA,SAAS,gBAAgB,IAAI;AACzB,SAAO,iBAAiB,GAAG,KAAK,GAAG,UAAU,MAAM,GAAG,GAAG,MAAM;AACnE;AACA,IAAI,QAAQ;AAAA,EACR;AACJ;AAEA,IAAI,UAAU,CAAC,OAAO,OAAO,KAAK;AAElC,SAAS,KAAK,IAAI,KAAK;AACnB,MAAI,IAAI,OAAO;AACX,YAAQ,IAAI,eAAe,MAAM,OAAO,IAAI,OAAO,GAAG,GAAG,GAAG;AAAA,EAChE;AACJ;AAEA,SAAS,KAAK,IAAI,KAAK;AACnB,MAAI,IAAI,OAAO;AACX,YAAQ,IAAI,aAAa,MAAM,OAAO,IAAI,OAAO,GAAG,GAAG,GAAG;AAAA,EAC9D;AACJ;AAEA,IAAI,aAAa;AAAA,EACb,OAAO;AAAA,EACP;AAAA,EACA;AACJ;AAEA,IAAI,cAAc;AAAA,EACd,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY,gBAAgB,OAAO;AACvC;AAEA,IAAI;AACJ,IAAI;AACJ,IAAI,sBAAsB,OAAO,aAAa;AAY9C,SAAS,SAASC,OAAM,SAAS;AAC7B,MAAI,CAACA;AACD;AACJ,gBAAc,oBAAoB,QAAQ,cAAc,EAAE;AAC1D,0BAAwB,QAAQ,iBAAiB;AAEjD,aAAWA,KAAI;AAEf,kBAAgBA,OAAM,KAAK;AAC/B;AACA,SAAS,cAAcC,OAAM;AACzB,SAAO,QAAQ,mFACVA,QAAO,MAAMA,QAAO,GAAG;AAChC;AACA,SAAS,WAAW,MAAM;AACtB,OAAK,SAAS,SAAS,IAAI;AAC3B,MAAI,KAAK,SAAS,GAAG;AAIjB,QAAI,CAAC,sBAAsB,KAAK,GAAG,KAC/B,KAAK,QAAQ,UACb,KAAK,SAAS,iBAAiB,KAAK,MAAM;AAC1C;AAAA,IACJ;AACA,aAAS,IAAI,GAAG,IAAI,KAAK,SAAS,QAAQ,IAAI,GAAG,KAAK;AAClD,UAAI,QAAQ,KAAK,SAAS,CAAC;AAC3B,iBAAW,KAAK;AAChB,UAAI,CAAC,MAAM,QAAQ;AACf,aAAK,SAAS;AAAA,MAClB;AAAA,IACJ;AACA,QAAI,KAAK,cAAc;AACnB,eAAS,IAAI,GAAG,IAAI,KAAK,aAAa,QAAQ,IAAI,GAAG,KAAK;AACtD,YAAI,QAAQ,KAAK,aAAa,CAAC,EAAE;AACjC,mBAAW,KAAK;AAChB,YAAI,CAAC,MAAM,QAAQ;AACf,eAAK,SAAS;AAAA,QAClB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ;AACA,SAAS,gBAAgB,MAAM,SAAS;AACpC,MAAI,KAAK,SAAS,GAAG;AACjB,QAAI,KAAK,UAAU,KAAK,MAAM;AAC1B,WAAK,cAAc;AAAA,IACvB;AAIA,QAAI,KAAK,UACL,KAAK,SAAS,UACd,EAAE,KAAK,SAAS,WAAW,KAAK,KAAK,SAAS,CAAC,EAAE,SAAS,IAAI;AAC9D,WAAK,aAAa;AAClB;AAAA,IACJ,OACK;AACD,WAAK,aAAa;AAAA,IACtB;AACA,QAAI,KAAK,UAAU;AACf,eAAS,IAAI,GAAG,IAAI,KAAK,SAAS,QAAQ,IAAI,GAAG,KAAK;AAClD,wBAAgB,KAAK,SAAS,CAAC,GAAG,WAAW,CAAC,CAAC,KAAK,GAAG;AAAA,MAC3D;AAAA,IACJ;AACA,QAAI,KAAK,cAAc;AACnB,eAAS,IAAI,GAAG,IAAI,KAAK,aAAa,QAAQ,IAAI,GAAG,KAAK;AACtD,wBAAgB,KAAK,aAAa,CAAC,EAAE,OAAO,OAAO;AAAA,MACvD;AAAA,IACJ;AAAA,EACJ;AACJ;AACA,SAAS,SAAS,MAAM;AACpB,MAAI,KAAK,SAAS,GAAG;AAEjB,WAAO;AAAA,EACX;AACA,MAAI,KAAK,SAAS,GAAG;AAEjB,WAAO;AAAA,EACX;AACA,SAAO,CAAC,EAAE,KAAK,OACV,CAAC,KAAK;AAAA,EACH,CAAC,KAAK,MACN,CAAC,KAAK;AAAA,EACN,CAAC,aAAa,KAAK,GAAG;AAAA,EACtB,sBAAsB,KAAK,GAAG;AAAA,EAC9B,CAAC,2BAA2B,IAAI,KAChC,OAAO,KAAK,IAAI,EAAE,MAAM,WAAW;AAC/C;AACA,SAAS,2BAA2B,MAAM;AACtC,SAAO,KAAK,QAAQ;AAChB,WAAO,KAAK;AACZ,QAAI,KAAK,QAAQ,YAAY;AACzB,aAAO;AAAA,IACX;AACA,QAAI,KAAK,KAAK;AACV,aAAO;AAAA,IACX;AAAA,EACJ;AACA,SAAO;AACX;AAEA,IAAI,UAAU;AACd,IAAI,aAAa;AACjB,IAAI,eAAe;AAEnB,IAAI,WAAW;AAAA,EACX,KAAK;AAAA,EACL,KAAK;AAAA,EACL,OAAO;AAAA,EACP,OAAO;AAAA,EACP,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,QAAQ,CAAC,GAAG,EAAE;AAClB;AAEA,IAAI,WAAW;AAAA;AAAA,EAEX,KAAK,CAAC,OAAO,QAAQ;AAAA,EACrB,KAAK;AAAA,EACL,OAAO;AAAA;AAAA,EAEP,OAAO,CAAC,KAAK,UAAU;AAAA;AAAA,EAEvB,IAAI,CAAC,MAAM,SAAS;AAAA,EACpB,MAAM,CAAC,QAAQ,WAAW;AAAA,EAC1B,OAAO,CAAC,SAAS,YAAY;AAAA,EAC7B,MAAM,CAAC,QAAQ,WAAW;AAAA;AAAA,EAE1B,QAAQ,CAAC,aAAa,UAAU,KAAK;AACzC;AAIA,IAAI,WAAW,SAAU,WAAW;AAAE,SAAO,MAAM,OAAO,WAAW,eAAe;AAAG;AACvF,IAAI,eAAe;AAAA,EACf,MAAM;AAAA,EACN,SAAS;AAAA,EACT,MAAM,SAAS,wCAAwC;AAAA,EACvD,MAAM,SAAS,iBAAiB;AAAA,EAChC,OAAO,SAAS,kBAAkB;AAAA,EAClC,KAAK,SAAS,gBAAgB;AAAA,EAC9B,MAAM,SAAS,iBAAiB;AAAA,EAChC,MAAM,SAAS,2CAA2C;AAAA,EAC1D,QAAQ,SAAS,2CAA2C;AAAA,EAC5D,OAAO,SAAS,2CAA2C;AAC/D;AACA,SAAS,YAAYC,SAAQC,WAAU;AACnC,MAAI,SAASA,YAAW,cAAc;AACtC,MAAI,iBAAiB;AACrB,MAAI,kBAAkB;AACtB,WAAS,UAAUD,SAAQ;AACvB,QAAI,cAAc,WAAWA,QAAO,MAAM,CAAC;AAE3C,QAAIA,QAAO,MAAM,KAAKA,QAAO,MAAM,EAAE,SAAS;AAC1C,yBAAmB,GAAG,OAAO,QAAQ,GAAG,EAAE,OAAO,aAAa,GAAG;AAAA,IACrE,OACK;AACD,wBAAkB,IAAK,OAAO,QAAQ,IAAK,EAAE,OAAO,aAAa,GAAG;AAAA,IACxE;AAAA,EACJ;AACA,mBAAiB,IAAI,OAAO,eAAe,MAAM,GAAG,EAAE,GAAG,GAAG;AAC5D,MAAI,iBAAiB;AACjB,WAAO,SAAS,MAAM,OAAO,gBAAgB,IAAI,EAAE,OAAO,gBAAgB,MAAM,GAAG,EAAE,GAAG,IAAI;AAAA,EAChG,OACK;AACD,WAAO,SAAS;AAAA,EACpB;AACJ;AACA,SAAS,WAAW,SAAS;AACzB,MAAI,CAAC,SAAS;AACV,WAAO;AAAA,EACX;AACA,MAAI,MAAM,QAAQ,OAAO,GAAG;AACxB,WAAO,IAAI,OAAO,QAAQ,IAAI,SAAUE,UAAS;AAAE,aAAO,WAAWA,QAAO;AAAA,IAAG,CAAC,EAAE,KAAK,GAAG,GAAG,GAAG;AAAA,EACpG;AACA,MAAI,eAAe,aAAa,KAAK,QAAQ,KAAK;AAClD,MAAI,uBAAuB,QAAQ,KAAK,QAAQ,KAAK;AACrD,MAAI,uBAAuB,aAAa,KAAK,QAAQ,MAAM,QAAQ,YAAY,EAAE,CAAC;AAClF,MAAI,CAAC,QAAQ,WAAW;AACpB,QAAI,gBAAgB,sBAAsB;AACtC,aAAO,QAAQ;AAAA,IACnB;AACA,WAAO,oBAAoB,OAAO,uBAAuB,UAAU,OAAO,QAAQ,KAAK,IAAI,QAAQ,OAAO,GAAG;AAAA,EACjH,OACK;AACD,QAAI,OAAO;AACX,QAAI,kBAAkB;AACtB,QAAIH,QAAO,CAAC;AACZ,QAAI,UAAU,SAAUI,MAAK;AACzB,UAAI,aAAaA,IAAG,GAAG;AACnB,2BAAmB,aAAaA,IAAG;AAEnC,YAAI,SAASA,IAAG,GAAG;AACf,UAAAJ,MAAK,KAAKI,IAAG;AAAA,QACjB;AAAA,MACJ,WACSA,SAAQ,SAAS;AACtB,YAAI,cAAc,QAAQ;AAC1B,2BAAmB,SAAS,CAAC,QAAQ,SAAS,OAAO,MAAM,EACtD,OAAO,SAAU,aAAa;AAAE,iBAAO,CAAC,YAAY,WAAW;AAAA,QAAG,CAAC,EACnE,IAAI,SAAU,aAAa;AAAE,iBAAO,UAAU,OAAO,aAAa,KAAK;AAAA,QAAG,CAAC,EAC3E,KAAK,IAAI,CAAC;AAAA,MACnB,OACK;AACD,QAAAJ,MAAK,KAAKI,IAAG;AAAA,MACjB;AAAA,IACJ;AACA,aAAS,OAAO,QAAQ,WAAW;AAC/B,cAAQ,GAAG;AAAA,IACf;AACA,QAAIJ,MAAK,QAAQ;AACb,cAAQ,aAAaA,KAAI;AAAA,IAC7B;AAEA,QAAI,iBAAiB;AACjB,cAAQ;AAAA,IACZ;AACA,QAAI,cAAc,eACZ,UAAU,OAAO,QAAQ,OAAO,yBAAyB,IACzD,uBACI,WAAW,OAAO,QAAQ,OAAO,0BAA0B,IAC3D,uBACI,UAAU,OAAO,QAAQ,KAAK,IAC9B,QAAQ;AACtB,WAAO,oBAAoB,OAAO,IAAI,EAAE,OAAO,aAAa,GAAG;AAAA,EACnE;AACJ;AACA,SAAS,aAAaA,OAAM;AACxB;AAAA;AAAA;AAAA;AAAA,IAIA,qCACI,GAAG,OAAOA,MAAK,IAAI,aAAa,EAAE,KAAK,IAAI,GAAG,eAAe;AAAA;AACrE;AACA,SAAS,cAAc,KAAK;AACxB,MAAI,SAAS,SAAS,KAAK,EAAE;AAC7B,MAAI,QAAQ;AACR,WAAO,oBAAoB,OAAO,MAAM;AAAA,EAC5C;AACA,MAAI,UAAU,SAAS,GAAG;AAC1B,MAAI,UAAU,SAAS,GAAG;AAC1B,SAAQ,uBACJ,GAAG,OAAO,KAAK,UAAU,GAAG,GAAG,GAAG,IAClC,GAAG,OAAO,KAAK,UAAU,OAAO,GAAG,GAAG,IACtC,gBACA,GAAG,OAAO,KAAK,UAAU,OAAO,CAAC,IACjC;AACR;AAEA,SAAS,GAAG,IAAI,KAAK;AACjB,MAAI,OAAwD;AACxD,WAAO,mDAAmD;AAAA,EAC9D;AACA,KAAG,gBAAgB,SAAU,MAAM;AAAE,WAAO,MAAM,OAAO,MAAM,GAAG,EAAE,OAAO,IAAI,OAAO,GAAG;AAAA,EAAG;AAChG;AAEA,SAAS,KAAK,IAAI,KAAK;AACnB,KAAG,WAAW,SAAU,MAAM;AAC1B,WAAO,MAAM,OAAO,MAAM,IAAI,EAAE,OAAO,GAAG,KAAK,IAAI,EAAE,OAAO,IAAI,OAAO,GAAG,EAAE,OAAO,IAAI,aAAa,IAAI,UAAU,OAAO,SAAS,OAAO,EAAE,OAAO,IAAI,aAAa,IAAI,UAAU,OAAO,UAAU,IAAI,GAAG;AAAA,EAC7M;AACJ;AAEA,IAAI,iBAAiB;AAAA,EACjB;AAAA,EACA;AAAA,EACA,OAAOK;AACX;AAEA,IAAI;AAAA;AAAA,EAA8B,4BAAY;AAC1C,aAASC,cAAa,SAAS;AAC3B,WAAK,UAAU;AACf,WAAK,OAAO,QAAQ,QAAQ;AAC5B,WAAK,aAAa,oBAAoB,QAAQ,SAAS,eAAe;AACtE,WAAK,aAAa,oBAAoB,QAAQ,SAAS,SAAS;AAChE,WAAK,aAAaC,QAAOA,QAAO,CAAC,GAAG,cAAc,GAAG,QAAQ,UAAU;AACvE,UAAIC,iBAAgB,QAAQ,iBAAiB;AAC7C,WAAK,iBAAiB,SAAU,IAAI;AAChC,eAAO,CAAC,CAAC,GAAG,aAAa,CAACA,eAAc,GAAG,GAAG;AAAA,MAClD;AACA,WAAK,SAAS;AACd,WAAK,kBAAkB,CAAC;AACxB,WAAK,MAAM;AAAA,IACf;AACA,WAAOF;AAAA,EACX,GAAE;AAAA;AACF,SAAS,SAAS,KAAK,SAAS;AAC5B,MAAI,QAAQ,IAAI,aAAa,OAAO;AAEpC,MAAI,OAAO,MACL,IAAI,QAAQ,WACR,SACA,WAAW,KAAK,KAAK,IACzB;AACN,SAAO;AAAA,IACH,QAAQ,qBAAqB,OAAO,MAAM,GAAG;AAAA,IAC7C,iBAAiB,MAAM;AAAA,EAC3B;AACJ;AACA,SAAS,WAAW,IAAI,OAAO;AAC3B,MAAI,GAAG,QAAQ;AACX,OAAG,MAAM,GAAG,OAAO,GAAG,OAAO;AAAA,EACjC;AACA,MAAI,GAAG,cAAc,CAAC,GAAG,iBAAiB;AACtC,WAAO,UAAU,IAAI,KAAK;AAAA,EAC9B,WACS,GAAG,QAAQ,CAAC,GAAG,eAAe;AACnC,WAAO,QAAQ,IAAI,KAAK;AAAA,EAC5B,WACS,GAAG,OAAO,CAAC,GAAG,cAAc;AACjC,WAAO,OAAO,IAAI,KAAK;AAAA,EAC3B,WACS,GAAG,MAAM,CAAC,GAAG,aAAa;AAC/B,WAAO,MAAM,IAAI,KAAK;AAAA,EAC1B,WACS,GAAG,QAAQ,cAAc,CAAC,GAAG,cAAc,CAAC,MAAM,KAAK;AAC5D,WAAO,YAAY,IAAI,KAAK,KAAK;AAAA,EACrC,WACS,GAAG,QAAQ,QAAQ;AACxB,WAAO,QAAQ,IAAI,KAAK;AAAA,EAC5B,OACK;AAED,QAAI,OAAO;AACX,QAAI,GAAG,WAAW;AACd,aAAO,aAAa,GAAG,WAAW,IAAI,KAAK;AAAA,IAC/C,OACK;AACD,UAAI,OAAO;AACX,UAAIG,kBAAiB,MAAM,eAAe,EAAE;AAC5C,UAAI,CAAC,GAAG,SAAU,GAAG,OAAOA,iBAAiB;AACzC,eAAO,QAAQ,IAAI,KAAK;AAAA,MAC5B;AACA,UAAI,MAEF;AAEF,UAAI,WAAW,MAAM,QAAQ;AAC7B,UAAIA,mBAAkB,YAAY,SAAS,oBAAoB,OAAO;AAClE,cAAM,iBAAiB,UAAU,GAAG,GAAG;AAAA,MAC3C;AACA,UAAI,CAAC;AACD,cAAM,IAAI,OAAO,GAAG,KAAK,GAAG;AAChC,UAAIC,YAAW,GAAG,iBAAiB,OAAO,YAAY,IAAI,OAAO,IAAI;AACrE,aAAO,MAAM,OAAO,GAAG,EAAE;AAAA,QAAO,OAAO,IAAI,OAAO,IAAI,IAAI;AAAA;AAAA,MAC1D,EAAE;AAAA,QAAOA,YAAW,IAAI,OAAOA,SAAQ,IAAI;AAAA,QACzC;AAAA,MAAG;AAAA,IACT;AAEA,aAAS,IAAI,GAAG,IAAI,MAAM,WAAW,QAAQ,KAAK;AAC9C,aAAO,MAAM,WAAW,CAAC,EAAE,IAAI,IAAI;AAAA,IACvC;AACA,WAAO;AAAA,EACX;AACJ;AACA,SAAS,iBAAiB,UAAU,KAAK;AACrC,MAAI,YAAY,SAAS,GAAG;AAC5B,MAAI,aAAa,WAAW,SAAS;AACrC,MAAI,YAAY,SAAUC,OAAM;AAC5B,QAAI,SAAS,GAAG,MAAMA,OAAM;AACxB,aAAO;AAAA,IACX;AACA,QAAI,SAAS,SAAS,MAAMA,OAAM;AAC9B,aAAO;AAAA,IACX;AACA,QAAI,SAAS,UAAU,MAAMA,OAAM;AAC/B,aAAO;AAAA,IACX;AAAA,EACJ;AACA,MAAI,YAAY;AAAA,IAAU;AAAA;AAAA,EAA4C,KAClE;AAAA,IAAU;AAAA;AAAA,EAA8D;AAC5E,MAAI,WAAW;AACX,WAAO;AAAA,EACX;AACA,MAAI,eAAe;AAAA,IAAU;AAAA;AAAA,EAAwC,KACjE;AAAA,IAAU;AAAA;AAAA,EAAwC,KAClD;AAAA,IAAU;AAAA;AAAA,EAAoD;AAClE,MAAI,cAAc;AACd,WAAO;AAAA,EACX;AACJ;AAEA,SAAS,UAAU,IAAI,OAAO;AAC1B,KAAG,kBAAkB;AAIrB,MAAI,mBAAmB,MAAM;AAC7B,MAAI,GAAG,KAAK;AACR,UAAM,MAAM,GAAG;AAAA,EACnB;AACA,QAAM,gBAAgB,KAAK,qBAAqB,OAAO,WAAW,IAAI,KAAK,GAAG,GAAG,CAAC;AAClF,QAAM,MAAM;AACZ,SAAO,MAAM,OAAO,MAAM,gBAAgB,SAAS,CAAC,EAAE,OAAO,GAAG,cAAc,UAAU,IAAI,GAAG;AACnG;AAEA,SAAS,QAAQ,IAAI,OAAO;AACxB,KAAG,gBAAgB;AACnB,MAAI,GAAG,MAAM,CAAC,GAAG,aAAa;AAC1B,WAAO,MAAM,IAAI,KAAK;AAAA,EAC1B,WACS,GAAG,aAAa;AACrB,QAAI,MAAM;AACV,QAAI,WAAW,GAAG;AAClB,WAAO,UAAU;AACb,UAAI,SAAS,KAAK;AACd,cAAM,SAAS;AACf;AAAA,MACJ;AACA,iBAAW,SAAS;AAAA,IACxB;AACA,QAAI,CAAC,KAAK;AAGN,aAAO,WAAW,IAAI,KAAK;AAAA,IAC/B;AACA,WAAO,MAAM,OAAO,WAAW,IAAI,KAAK,GAAG,GAAG,EAAE,OAAO,MAAM,UAAU,GAAG,EAAE,OAAO,KAAK,GAAG;AAAA,EAC/F,OACK;AACD,WAAO,UAAU,IAAI,KAAK;AAAA,EAC9B;AACJ;AACA,SAAS,MAAM,IAAI,OAAO,QAAQ,UAAU;AACxC,KAAG,cAAc;AACjB,SAAO,gBAAgB,GAAG,aAAa,MAAM,GAAG,OAAO,QAAQ,QAAQ;AAC3E;AACA,SAAS,gBAAgB,YAAY,OAAO,QAAQ,UAAU;AAC1D,MAAI,CAAC,WAAW,QAAQ;AACpB,WAAO,YAAY;AAAA,EACvB;AACA,MAAI,YAAY,WAAW,MAAM;AACjC,MAAI,UAAU,KAAK;AACf,WAAO,IAAI,OAAO,UAAU,KAAK,IAAI,EAAE,OAAO,cAAc,UAAU,KAAK,GAAG,GAAG,EAAE,OAAO,gBAAgB,YAAY,OAAO,QAAQ,QAAQ,CAAC;AAAA,EAClJ,OACK;AACD,WAAO,GAAG,OAAO,cAAc,UAAU,KAAK,CAAC;AAAA,EACnD;AAEA,WAAS,cAAc,IAAI;AACvB,WAAO,SACD,OAAO,IAAI,KAAK,IAChB,GAAG,OACC,QAAQ,IAAI,KAAK,IACjB,WAAW,IAAI,KAAK;AAAA,EAClC;AACJ;AACA,SAAS,OAAO,IAAI,OAAO,QAAQ,WAAW;AAC1C,MAAI,MAAM,GAAG;AACb,MAAI,QAAQ,GAAG;AACf,MAAI,YAAY,GAAG,YAAY,IAAI,OAAO,GAAG,SAAS,IAAI;AAC1D,MAAI,YAAY,GAAG,YAAY,IAAI,OAAO,GAAG,SAAS,IAAI;AAC1D,MAAI,OAIS;AACT,UAAM;AAAA,MAAK,IAAI,OAAO,GAAG,KAAK,UAAW,EAAE,OAAO,OAAO,MAAM,EAAE,OAAO,KAAK,oCAAqC,IAC9G;AAAA,MACkE,GAAG,YAAY,OAAO;AAAA,MAAG;AAAA;AAAA,IAAc;AAAA,EACjH;AACA,KAAG,eAAe;AAClB,SAAQ,GAAG,OAAO,aAAa,MAAM,IAAI,EAAE,OAAO,KAAK,IAAI,IACvD,YAAY,OAAO,KAAK,EAAE,OAAO,SAAS,EAAE,OAAO,WAAW,IAAI,IAClE,UAAU,QAAQ,UAAU,YAAY,IAAI,KAAK,CAAC,IAClD;AACR;AACA,SAAS,QAAQ,IAAI,OAAO;AACxB,MAAI,OAAO;AAGX,MAAI,OAAO,cAAc,IAAI,KAAK;AAClC,MAAI;AACA,YAAQ,OAAO;AAEnB,MAAI,GAAG,KAAK;AACR,YAAQ,OAAO,OAAO,GAAG,KAAK,GAAG;AAAA,EACrC;AAEA,MAAI,GAAG,KAAK;AACR,YAAQ,OAAO,OAAO,GAAG,KAAK,GAAG;AAAA,EACrC;AACA,MAAI,GAAG,UAAU;AACb,YAAQ;AAAA,EACZ;AAEA,MAAI,GAAG,KAAK;AACR,YAAQ;AAAA,EACZ;AAEA,MAAI,GAAG,WAAW;AACd,YAAQ,QAAS,OAAO,GAAG,KAAK,IAAK;AAAA,EACzC;AAEA,WAAS,IAAI,GAAG,IAAI,MAAM,WAAW,QAAQ,KAAK;AAC9C,YAAQ,MAAM,WAAW,CAAC,EAAE,EAAE;AAAA,EAClC;AAEA,MAAI,GAAG,OAAO;AACV,YAAQ,SAAS,OAAO,SAAS,GAAG,KAAK,GAAG,GAAG;AAAA,EACnD;AAEA,MAAI,GAAG,OAAO;AACV,YAAQ,YAAY,OAAO,SAAS,GAAG,KAAK,GAAG,GAAG;AAAA,EACtD;AAEA,MAAI,GAAG,QAAQ;AACX,YAAQ,GAAG,OAAO,YAAY,GAAG,QAAQ,KAAK,GAAG,GAAG;AAAA,EACxD;AACA,MAAI,GAAG,cAAc;AACjB,YAAQ,GAAG,OAAO,YAAY,GAAG,cAAc,IAAI,GAAG,GAAG;AAAA,EAC7D;AAGA,MAAI,GAAG,cAAc,CAAC,GAAG,WAAW;AAChC,YAAQ,QAAQ,OAAO,GAAG,YAAY,GAAG;AAAA,EAC7C;AAEA,MAAI,GAAG,aAAa;AAChB,YAAQ,GAAG,OAAO,eAAe,IAAI,GAAG,aAAa,KAAK,GAAG,GAAG;AAAA,EACpE;AAEA,MAAI,GAAG,OAAO;AACV,YAAQ,gBAAgB,OAAO,GAAG,MAAM,OAAO,YAAY,EAAE,OAAO,GAAG,MAAM,UAAU,cAAc,EAAE,OAAO,GAAG,MAAM,YAAY,IAAI;AAAA,EAC3I;AAEA,MAAI,GAAG,gBAAgB;AACnB,QAAI,iBAAiB,kBAAkB,IAAI,KAAK;AAChD,QAAI,gBAAgB;AAChB,cAAQ,GAAG,OAAO,gBAAgB,GAAG;AAAA,IACzC;AAAA,EACJ;AACA,SAAO,KAAK,QAAQ,MAAM,EAAE,IAAI;AAIhC,MAAI,GAAG,cAAc;AACjB,WAAO,MAAM,OAAO,MAAM,IAAK,EAAE,OAAO,GAAG,KAAK,IAAK,EAAE,OAAO,SAAS,GAAG,YAAY,GAAG,GAAG;AAAA,EAChG;AAEA,MAAI,GAAG,UAAU;AACb,WAAO,GAAG,SAAS,IAAI;AAAA,EAC3B;AAEA,MAAI,GAAG,eAAe;AAClB,WAAO,GAAG,cAAc,IAAI;AAAA,EAChC;AACA,SAAO;AACX;AACA,SAAS,cAAc,IAAI,OAAO;AAC9B,MAAI,OAAO,GAAG;AACd,MAAI,CAAC;AACD;AACJ,MAAI,MAAM;AACV,MAAI,aAAa;AACjB,MAAI,GAAG,GAAG,KAAK;AACf,OAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,IAAI,GAAG,KAAK;AACrC,UAAM,KAAK,CAAC;AACZ,kBAAc;AACd,QAAI,MAAM,MAAM,WAAW,IAAI,IAAI;AACnC,QAAI,KAAK;AAGL,oBAAc,CAAC,CAAC,IAAI,IAAI,KAAK,MAAM,IAAI;AAAA,IAC3C;AACA,QAAI,aAAa;AACb,mBAAa;AACb,aAAO,UAAW,OAAO,IAAI,MAAM,aAAe,EAAE,OAAO,IAAI,SAAS,GAAI,EAAE,OAAO,IAAI,QACnF,WAAW,OAAO,IAAI,OAAO,eAAe,EAAE,OAAO,KAAK,UAAU,IAAI,KAAK,CAAC,IAC9E,EAAE,EAAE,OAAO,IAAI,MAAM,QAAQ,OAAO,IAAI,eAAe,IAAI,MAAM,IAAK,OAAO,IAAI,KAAK,GAAI,CAAC,IAAI,EAAE,EAAE,OAAO,IAAI,YAAY,cAAc,OAAO,KAAK,UAAU,IAAI,SAAS,CAAC,IAAI,IAAI,IAAI;AAAA,IAClM;AAAA,EACJ;AACA,MAAI,YAAY;AACZ,WAAO,IAAI,MAAM,GAAG,EAAE,IAAI;AAAA,EAC9B;AACJ;AACA,SAAS,kBAAkB,IAAI,OAAO;AAClC,MAAI,MAAM,GAAG,SAAS,CAAC;AACvB,MAAI,OAAuF;AACvF,UAAM,KAAK,mEAAmE,EAAE,OAAO,GAAG,MAAM,CAAC;AAAA,EACrG;AACA,MAAI,OAAO,IAAI,SAAS,GAAG;AACvB,QAAI,kBAAkB,SAAS,KAAK,MAAM,OAAO;AACjD,WAAO,qCAAqC,OAAO,gBAAgB,QAAQ,qBAAqB,EAAE,OAAO,gBAAgB,gBACpH,IAAI,SAAU,MAAM;AAAE,aAAO,cAAc,OAAO,MAAM,GAAG;AAAA,IAAG,CAAC,EAC/D,KAAK,GAAG,GAAG,IAAI;AAAA,EACxB;AACJ;AACA,SAAS,eAAe,IAAI,OAAO,OAAO;AAKtC,MAAI,mBAAmB,GAAG,OACtB,OAAO,KAAK,KAAK,EAAE,KAAK,SAAU,KAAK;AACnC,QAAI,OAAO,MAAM,GAAG;AACpB,WAAQ,KAAK,qBAAqB,KAAK,MAAM,KAAK,OAAO,kBAAkB,IAAI;AAAA,EAEnF,CAAC;AAKL,MAAI,WAAW,CAAC,CAAC,GAAG;AAMpB,MAAI,CAAC,kBAAkB;AACnB,QAAI,WAAW,GAAG;AAClB,WAAO,UAAU;AACb,UAAK,SAAS,aAAa,SAAS,cAAc,uBAC9C,SAAS,KAAK;AACd,2BAAmB;AACnB;AAAA,MACJ;AACA,UAAI,SAAS,IAAI;AACb,mBAAW;AAAA,MACf;AACA,iBAAW,SAAS;AAAA,IACxB;AAAA,EACJ;AACA,MAAI,iBAAiB,OAAO,KAAK,KAAK,EACjC,IAAI,SAAU,KAAK;AAAE,WAAO,cAAc,MAAM,GAAG,GAAG,KAAK;AAAA,EAAG,CAAC,EAC/D,KAAK,GAAG;AACb,SAAO,mBAAmB,OAAO,gBAAgB,GAAG,EAAE,OAAO,mBAAmB,eAAe,EAAE,EAAE,OAAO,CAAC,oBAAoB,WAAW,eAAe,OAAO,KAAK,cAAc,CAAC,IAAI,IAAI,GAAG;AACnM;AACA,SAAS,KAAKC,MAAK;AACf,MAAIC,QAAO;AACX,MAAI,IAAID,KAAI;AACZ,SAAO,GAAG;AACN,IAAAC,QAAQA,QAAO,KAAMD,KAAI,WAAW,EAAE,CAAC;AAAA,EAC3C;AACA,SAAOC,UAAS;AACpB;AACA,SAAS,kBAAkB,IAAI;AAC3B,MAAI,GAAG,SAAS,GAAG;AACf,QAAI,GAAG,QAAQ,QAAQ;AACnB,aAAO;AAAA,IACX;AACA,WAAO,GAAG,SAAS,KAAK,iBAAiB;AAAA,EAC7C;AACA,SAAO;AACX;AACA,SAAS,cAAc,IAAI,OAAO;AAC9B,MAAI,iBAAiB,GAAG,SAAS,YAAY;AAC7C,MAAI,GAAG,MAAM,CAAC,GAAG,eAAe,CAAC,gBAAgB;AAC7C,WAAO,MAAM,IAAI,OAAO,eAAe,MAAM;AAAA,EACjD;AACA,MAAI,GAAG,OAAO,CAAC,GAAG,cAAc;AAC5B,WAAO,OAAO,IAAI,OAAO,aAAa;AAAA,EAC1C;AACA,MAAI,YAAY,GAAG,cAAc,sBAAsB,KAAK,OAAO,GAAG,SAAS;AAC/E,MAAI,KAAK,YAAY,OAAO,WAAW,IAAI,IACvC,UAAU,OAAO,GAAG,QAAQ,aACtB,GAAG,MAAM,iBACL,IAAI,OAAO,GAAG,IAAI,IAAI,EAAE,OAAO,YAAY,IAAI,KAAK,KAAK,aAAa,YAAY,IAClF,YAAY,IAAI,KAAK,KAAK,cAC9B,WAAW,IAAI,KAAK,GAAG,GAAG;AAEpC,MAAI,eAAe,YAAY,KAAK;AACpC,SAAO,QAAQ,OAAO,GAAG,cAAc,aAAe,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,cAAc,GAAG;AACrG;AACA,SAAS,YAAY,IAAI,OAAO,WAAW,eAAe,YAAY;AAClE,MAAIH,YAAW,GAAG;AAClB,MAAIA,UAAS,QAAQ;AACjB,QAAI,OAAOA,UAAS,CAAC;AAErB,QAAIA,UAAS,WAAW,KACpB,KAAK,OACL,KAAK,QAAQ,cACb,KAAK,QAAQ,QAAQ;AACrB,UAAI,sBAAsB,YACpB,MAAM,eAAe,IAAI,IACrB,OACA,OACJ;AACN,aAAO,GAAG,QAAQ,iBAAiB,YAAY,MAAM,KAAK,CAAC,EAAE,OAAO,mBAAmB;AAAA,IAC3F;AACA,QAAI,oBAAoB,YAClB,qBAAqBA,WAAU,MAAM,cAAc,IACnD;AACN,QAAI,QAAQ,cAAc;AAC1B,WAAO,IAAI,OAAOA,UAAS,IAAI,SAAU,GAAG;AAAE,aAAO,MAAM,GAAG,KAAK;AAAA,IAAG,CAAC,EAAE,KAAK,GAAG,GAAG,GAAG,EAAE,OAAO,oBAAoB,IAAI,OAAO,iBAAiB,IAAI,EAAE;AAAA,EAC1J;AACJ;AAKA,SAAS,qBAAqBA,WAAUD,iBAAgB;AACpD,MAAI,MAAM;AACV,WAAS,IAAI,GAAG,IAAIC,UAAS,QAAQ,KAAK;AACtC,QAAI,KAAKA,UAAS,CAAC;AACnB,QAAI,GAAG,SAAS,GAAG;AACf;AAAA,IACJ;AACA,QAAI,mBAAmB,EAAE,KACpB,GAAG,gBACA,GAAG,aAAa,KAAK,SAAU,GAAG;AAAE,aAAO,mBAAmB,EAAE,KAAK;AAAA,IAAG,CAAC,GAAI;AACjF,YAAM;AACN;AAAA,IACJ;AACA,QAAID,gBAAe,EAAE,KAChB,GAAG,gBAAgB,GAAG,aAAa,KAAK,SAAU,GAAG;AAAE,aAAOA,gBAAe,EAAE,KAAK;AAAA,IAAG,CAAC,GAAI;AAC7F,YAAM;AAAA,IACV;AAAA,EACJ;AACA,SAAO;AACX;AACA,SAAS,mBAAmB,IAAI;AAC5B,SAAO,GAAG,QAAQ,UAAa,GAAG,QAAQ,cAAc,GAAG,QAAQ;AACvE;AACA,SAAS,QAAQ,MAAM,OAAO;AAC1B,MAAI,KAAK,SAAS,GAAG;AACjB,WAAO,WAAW,MAAM,KAAK;AAAA,EACjC,WACS,KAAK,SAAS,KAAK,KAAK,WAAW;AACxC,WAAO,WAAW,IAAI;AAAA,EAC1B,OACK;AACD,WAAO,QAAQ,IAAI;AAAA,EACvB;AACJ;AACA,SAAS,QAAQK,OAAM;AACnB,SAAO,MAAM,OAAOA,MAAK,SAAS,IAC5BA,MAAK,aACL,yBAAyB,KAAK,UAAUA,MAAK,IAAI,CAAC,GAAG,GAAG;AAClE;AACA,SAAS,WAAWC,UAAS;AACzB,SAAO,MAAM,OAAO,KAAK,UAAUA,SAAQ,IAAI,GAAG,GAAG;AACzD;AACA,SAAS,QAAQ,IAAI,OAAO;AACxB,MAAI,WAAW,GAAG,YAAY;AAC9B,MAAIL,YAAW,YAAY,IAAI,KAAK;AACpC,MAAI,MAAM,MAAM,OAAO,QAAQ,EAAE,OAAOA,YAAW,sBAAsB,OAAOA,WAAU,GAAG,IAAI,EAAE;AACnG,MAAIM,SAAQ,GAAG,SAAS,GAAG,eACrB,UAAU,GAAG,SAAS,CAAC,GAAG,OAAO,GAAG,gBAAgB,CAAC,CAAC,EAAE,IAAI,SAAU,MAAM;AAAE,WAAQ;AAAA;AAAA,MAEpF,MAAM,SAAS,KAAK,IAAI;AAAA,MACxB,OAAO,KAAK;AAAA,MACZ,SAAS,KAAK;AAAA,IAClB;AAAA,EAAI,CAAC,CAAC,IACJ;AACN,MAAIC,QAAO,GAAG,SAAS,QAAQ;AAC/B,OAAKD,UAASC,UAAS,CAACP,WAAU;AAC9B,WAAO;AAAA,EACX;AACA,MAAIM,QAAO;AACP,WAAO,IAAI,OAAOA,MAAK;AAAA,EAC3B;AACA,MAAIC,OAAM;AACN,WAAO,GAAG,OAAOD,SAAQ,KAAK,SAAS,GAAG,EAAE,OAAOC,KAAI;AAAA,EAC3D;AACA,SAAO,MAAM;AACjB;AAEA,SAAS,aAAa,eAAe,IAAI,OAAO;AAC5C,MAAIP,YAAW,GAAG,iBAAiB,OAAO,YAAY,IAAI,OAAO,IAAI;AACrE,SAAO,MAAM,OAAO,eAAe,GAAG,EAAE,OAAO,QAAQ,IAAI,KAAK,CAAC,EAAE,OAAOA,YAAW,IAAI,OAAOA,SAAQ,IAAI,IAAI,GAAG;AACvH;AACA,SAAS,SAASQ,QAAO;AACrB,MAAI,cAAc;AAClB,MAAI,eAAe;AACnB,WAAS,IAAI,GAAG,IAAIA,OAAM,QAAQ,KAAK;AACnC,QAAI,OAAOA,OAAM,CAAC;AAClB,QAAI,QAAQ,yBAAyB,KAAK,KAAK;AAC/C,QAAI,KAAK,SAAS;AACd,sBAAgB,GAAG,OAAO,KAAK,MAAM,GAAG,EAAE,OAAO,OAAO,GAAG;AAAA,IAC/D,OACK;AACD,qBAAe,IAAK,OAAO,KAAK,MAAM,IAAK,EAAE,OAAO,OAAO,GAAG;AAAA,IAClE;AAAA,EACJ;AACA,gBAAc,IAAI,OAAO,YAAY,MAAM,GAAG,EAAE,GAAG,GAAG;AACtD,MAAI,cAAc;AACd,WAAO,MAAM,OAAO,aAAa,IAAI,EAAE,OAAO,aAAa,MAAM,GAAG,EAAE,GAAG,IAAI;AAAA,EACjF,OACK;AACD,WAAO;AAAA,EACX;AACJ;AAEA,SAAS,yBAAyBJ,OAAM;AACpC,SAAOA,MAAK,QAAQ,WAAW,SAAS,EAAE,QAAQ,WAAW,SAAS;AAC1E;AAIA,IAAI,sBAAsB,IAAI,OAAO,QAChC,iMAGI,MAAM,GAAG,EACT,KAAK,SAAS,IACnB,KAAK;AAET,IAAI,mBAAmB,IAAI,OAAO,QAC9B,qBAAqB,MAAM,GAAG,EAAE,KAAK,uBAAuB,IAC5D,mBAAmB;AAmJvB,SAAS,eAAe,MAAM,QAAQ;AAClC,MAAI;AACA,WAAO,IAAI,SAAS,IAAI;AAAA,EAC5B,SACO,KAAK;AACR,WAAO,KAAK,EAAE,KAAU,KAAW,CAAC;AACpC,WAAOK;AAAA,EACX;AACJ;AACA,SAAS,0BAA0BC,UAAS;AACxC,MAAIC,SAAQ,uBAAO,OAAO,IAAI;AAC9B,SAAO,SAASC,oBAAmB,UAAU,SAAS,IAAI;AACtD,cAAUC,QAAO,CAAC,GAAG,OAAO;AAC5B,QAAIC,QAAO,QAAQ,QAAQ;AAC3B,WAAO,QAAQ;AAEf,QAAI,OAAuC;AAEvC,UAAI;AACA,YAAI,SAAS,UAAU;AAAA,MAC3B,SACO,GAAG;AACN,YAAI,EAAE,SAAS,EAAE,MAAM,iBAAiB,GAAG;AACvC,UAAAA,MAAK,kSAIiC;AAAA,QAC1C;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,MAAM,QAAQ,aACZ,OAAO,QAAQ,UAAU,IAAI,WAC7B;AACN,QAAIH,OAAM,GAAG,GAAG;AACZ,aAAOA,OAAM,GAAG;AAAA,IACpB;AAEA,QAAI,WAAWD,SAAQ,UAAU,OAAO;AAExC,QAAI,OAAuC;AACvC,UAAI,SAAS,UAAU,SAAS,OAAO,QAAQ;AAC3C,YAAI,QAAQ,mBAAmB;AAC3B,mBAAS,OAAO,QAAQ,SAAU,GAAG;AACjC,YAAAI,MAAK,gCAAgC,OAAO,EAAE,KAAK,MAAM,IACrD,kBAAkB,UAAU,EAAE,OAAO,EAAE,GAAG,GAAG,EAAE;AAAA,UACvD,CAAC;AAAA,QACL,OACK;AACD,UAAAA,MAAK,gCAAgC,OAAO,UAAU,MAAM,IACxD,SAAS,OAAO,IAAI,SAAU,GAAG;AAAE,mBAAO,KAAK,OAAO,CAAC;AAAA,UAAG,CAAC,EAAE,KAAK,IAAI,IACtE,MAAM,EAAE;AAAA,QAChB;AAAA,MACJ;AACA,UAAI,SAAS,QAAQ,SAAS,KAAK,QAAQ;AACvC,YAAI,QAAQ,mBAAmB;AAC3B,mBAAS,KAAK,QAAQ,SAAU,GAAG;AAAE,mBAAO,IAAI,EAAE,KAAK,EAAE;AAAA,UAAG,CAAC;AAAA,QACjE,OACK;AACD,mBAAS,KAAK,QAAQ,SAAU,KAAK;AAAE,mBAAO,IAAI,KAAK,EAAE;AAAA,UAAG,CAAC;AAAA,QACjE;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,MAAM,CAAC;AACX,QAAI,cAAc,CAAC;AACnB,QAAI,SAAS,eAAe,SAAS,QAAQ,WAAW;AACxD,QAAI,kBAAkB,SAAS,gBAAgB,IAAI,SAAU,MAAM;AAC/D,aAAO,eAAe,MAAM,WAAW;AAAA,IAC3C,CAAC;AAKD,QAAI,OAAuC;AACvC,WAAK,CAAC,SAAS,UAAU,CAAC,SAAS,OAAO,WAAW,YAAY,QAAQ;AACrE,QAAAA,MAAK,4CACD,YACK,IAAI,SAAUC,KAAI;AACnB,cAAI,MAAMA,IAAG,KAAK,OAAOA,IAAG;AAC5B,iBAAO,GAAG,OAAO,IAAI,SAAS,GAAG,SAAS,EAAE,OAAO,MAAM,IAAI;AAAA,QACjE,CAAC,EACI,KAAK,IAAI,GAAG,EAAE;AAAA,MAC3B;AAAA,IACJ;AACA,WAAQJ,OAAM,GAAG,IAAI;AAAA,EACzB;AACJ;AAEA,SAAS,sBAAsBK,cAAa;AACxC,SAAO,SAASC,gBAAeC,cAAa;AACxC,aAASR,SAAQ,UAAU,SAAS;AAChC,UAAI,eAAe,OAAO,OAAOQ,YAAW;AAC5C,UAAI,SAAS,CAAC;AACd,UAAI,OAAO,CAAC;AACZ,UAAIJ,QAAO,SAAU,KAAKK,QAAO,KAAK;AAClC,SAAC,MAAM,OAAO,QAAQ,KAAK,GAAG;AAAA,MAClC;AACA,UAAI,SAAS;AACT,YAAI,OAAoE;AAEpE,cAAI,uBAAuB,SAAS,MAAM,MAAM,EAAE,CAAC,EAAE;AACrD,UAAAL,QAAO,SAAU,KAAKK,QAAO,KAAK;AAC9B,gBAAI,OAAO,OAAO,QAAQ,WAAW,EAAE,IAAS,IAAI;AACpD,gBAAIA,QAAO;AACP,kBAAIA,OAAM,SAAS,MAAM;AACrB,qBAAK,QAAQA,OAAM,QAAQ;AAAA,cAC/B;AACA,kBAAIA,OAAM,OAAO,MAAM;AACnB,qBAAK,MAAMA,OAAM,MAAM;AAAA,cAC3B;AAAA,YACJ;AACA,aAAC,MAAM,OAAO,QAAQ,KAAK,IAAI;AAAA,UACnC;AAAA,QACJ;AAEA,YAAI,QAAQ,SAAS;AACjB,uBAAa,WAAWD,aAAY,WAAW,CAAC,GAAG,OAAO,QAAQ,OAAO;AAAA,QAC7E;AAEA,YAAI,QAAQ,YAAY;AACpB,uBAAa,aAAaL,QAAO,OAAO,OAAOK,aAAY,cAAc,IAAI,GAAG,QAAQ,UAAU;AAAA,QACtG;AAEA,iBAAS,OAAO,SAAS;AACrB,cAAI,QAAQ,aAAa,QAAQ,cAAc;AAC3C,yBAAa,GAAG,IAAI,QAAQ,GAAG;AAAA,UACnC;AAAA,QACJ;AAAA,MACJ;AACA,mBAAa,OAAOJ;AACpB,UAAI,WAAWE,aAAY,SAAS,KAAK,GAAG,YAAY;AACxD,UAAI,OAAuC;AACvC,qBAAa,SAAS,KAAKF,KAAI;AAAA,MACnC;AACA,eAAS,SAAS;AAClB,eAAS,OAAO;AAChB,aAAO;AAAA,IACX;AACA,WAAO;AAAA,MACH,SAASJ;AAAA,MACT,oBAAoB,0BAA0BA,QAAO;AAAA,IACzD;AAAA,EACJ;AACJ;AAKA,IAAI,iBAAiB,sBAAsB,SAAS,YAAY,UAAU,SAAS;AAC/E,MAAI,MAAM,MAAM,SAAS,KAAK,GAAG,OAAO;AACxC,MAAI,QAAQ,aAAa,OAAO;AAC5B,aAAS,KAAK,OAAO;AAAA,EACzB;AACA,MAAI,OAAO,SAAS,KAAK,OAAO;AAChC,SAAO;AAAA,IACH;AAAA,IACA,QAAQ,KAAK;AAAA,IACb,iBAAiB,KAAK;AAAA,EAC1B;AACJ,CAAC;AAED,IAAI,KAAK,eAAe,WAAW;AAAnC,IAAsC,qBAAqB,GAAG;AAG9D,IAAI;AACJ,SAAS,gBAAgB,MAAM;AAC3B,QAAM,OAAO,SAAS,cAAc,KAAK;AACzC,MAAI,YAAY,OAAO,mBAAqB;AAC5C,SAAO,IAAI,UAAU,QAAQ,OAAO,IAAI;AAC5C;AAEA,IAAI,uBAAuB,YAAY,gBAAgB,KAAK,IAAI;AAEhE,IAAI,8BAA8B,YAC5B,gBAAgB,IAAI,IACpB;AAEN,IAAI,eAAe,OAAO,SAAUU,KAAI;AACpC,MAAI,KAAK,MAAMA,GAAE;AACjB,SAAO,MAAM,GAAG;AACpB,CAAC;AACD,IAAI,QAAQ,IAAI,UAAU;AAC1B,IAAI,UAAU,SAAS,SAAU,IAAI,WAAW;AAC5C,OAAK,MAAM,MAAM,EAAE;AAEnB,MAAI,OAAO,SAAS,QAAQ,OAAO,SAAS,iBAAiB;AAGzD,WAAO;AAAA,EACX;AACA,MAAI,UAAU,KAAK;AAEnB,MAAI,CAAC,QAAQ,QAAQ;AACjB,QAAI,WAAW,QAAQ;AACvB,QAAI,UAAU;AACV,UAAI,OAAO,aAAa,UAAU;AAC9B,YAAI,SAAS,OAAO,CAAC,MAAM,KAAK;AAC5B,qBAAW,aAAa,QAAQ;AAEhC,cAAI,OAAoD;AACpD,mBAAO,2CAA2C,OAAO,QAAQ,QAAQ,GAAG,IAAI;AAAA,UACpF;AAAA,QACJ;AAAA,MACJ,WACS,SAAS,UAAU;AACxB,mBAAW,SAAS;AAAA,MACxB,OACK;AACD,YAAI,OAAuC;AACvC,iBAAO,6BAA6B,UAAU,IAAI;AAAA,QACtD;AACA,eAAO;AAAA,MACX;AAAA,IACJ,WACS,IAAI;AAET,iBAAW,aAAa,EAAE;AAAA,IAC9B;AACA,QAAI,UAAU;AAEV,UAAI,OAAqE;AACrE,aAAK,SAAS;AAAA,MAClB;AACA,UAAIL,MAAK,mBAAmB,UAAU;AAAA,QAClC,mBAAmB;AAAA,QACnB;AAAA,QACA;AAAA,QACA,YAAY,QAAQ;AAAA,QACpB,UAAU,QAAQ;AAAA,MACtB,GAAG,IAAI,GAAGM,UAASN,IAAG,QAAQ,kBAAkBA,IAAG;AACnD,cAAQ,SAASM;AACjB,cAAQ,kBAAkB;AAE1B,UAAI,OAAqE;AACrE,aAAK,aAAa;AAClB,gBAAQ,OAAO,OAAO,KAAK,OAAO,UAAU,GAAG,WAAW,aAAa;AAAA,MAC3E;AAAA,IACJ;AAAA,EACJ;AACA,SAAO,MAAM,KAAK,MAAM,IAAI,SAAS;AACzC;AAKA,SAAS,aAAa,IAAI;AACtB,MAAI,GAAG,WAAW;AACd,WAAO,GAAG;AAAA,EACd,OACK;AACD,QAAI,YAAY,SAAS,cAAc,KAAK;AAC5C,cAAU,YAAY,GAAG,UAAU,IAAI,CAAC;AACxC,WAAO,UAAU;AAAA,EACrB;AACJ;AACA,IAAI,UAAU;;;AC3oXd;;;ACAA;AAmBA,SAASC,QAAQ,GAAG,GAAG;AACrB,WAAS,OAAO,GAAG;AACjB,MAAE,GAAG,IAAI,EAAE,GAAG;AAAA,EAChB;AACA,SAAO;AACT;AAIA,IAAI,kBAAkB;AACtB,IAAI,wBAAwB,SAAU,GAAG;AAAE,SAAO,MAAM,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE;AAAG;AACtF,IAAI,UAAU;AAKd,IAAI,SAAS,SAAUC,MAAK;AAAE,SAAO,mBAAmBA,IAAG,EACtD,QAAQ,iBAAiB,qBAAqB,EAC9C,QAAQ,SAAS,GAAG;AAAG;AAE5B,SAAS,OAAQA,MAAK;AACpB,MAAI;AACF,WAAO,mBAAmBA,IAAG;AAAA,EAC/B,SAAS,KAAK;AACZ,QAAI,OAAuC;AACzC,WAAK,OAAQ,qBAAsBA,OAAM,uBAAyB;AAAA,IACpE;AAAA,EACF;AACA,SAAOA;AACT;AAEA,SAAS,aACPC,QACA,YACA,aACA;AACA,MAAK,eAAe,OAAS,cAAa,CAAC;AAE3C,MAAIC,SAAQ,eAAe;AAC3B,MAAI;AACJ,MAAI;AACF,kBAAcA,OAAMD,UAAS,EAAE;AAAA,EACjC,SAAS,GAAG;AAEV,kBAAc,CAAC;AAAA,EACjB;AACA,WAAS,OAAO,YAAY;AAC1B,QAAI,QAAQ,WAAW,GAAG;AAC1B,gBAAY,GAAG,IAAI,MAAM,QAAQ,KAAK,IAClC,MAAM,IAAI,mBAAmB,IAC7B,oBAAoB,KAAK;AAAA,EAC/B;AACA,SAAO;AACT;AAEA,IAAI,sBAAsB,SAAU,OAAO;AAAE,SAAQ,SAAS,QAAQ,OAAO,UAAU,WAAW,QAAQ,OAAO,KAAK;AAAI;AAE1H,SAAS,WAAYA,QAAO;AAC1B,MAAI,MAAM,CAAC;AAEX,EAAAA,SAAQA,OAAM,KAAK,EAAE,QAAQ,aAAa,EAAE;AAE5C,MAAI,CAACA,QAAO;AACV,WAAO;AAAA,EACT;AAEA,EAAAA,OAAM,MAAM,GAAG,EAAE,QAAQ,SAAU,OAAO;AACxC,QAAI,QAAQ,MAAM,QAAQ,OAAO,GAAG,EAAE,MAAM,GAAG;AAC/C,QAAI,MAAM,OAAO,MAAM,MAAM,CAAC;AAC9B,QAAI,MAAM,MAAM,SAAS,IAAI,OAAO,MAAM,KAAK,GAAG,CAAC,IAAI;AAEvD,QAAI,IAAI,GAAG,MAAM,QAAW;AAC1B,UAAI,GAAG,IAAI;AAAA,IACb,WAAW,MAAM,QAAQ,IAAI,GAAG,CAAC,GAAG;AAClC,UAAI,GAAG,EAAE,KAAK,GAAG;AAAA,IACnB,OAAO;AACL,UAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG;AAAA,IAC3B;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAEA,SAAS,eAAgB,KAAK;AAC5B,MAAI,MAAM,MACN,OAAO,KAAK,GAAG,EACd,IAAI,SAAU,KAAK;AAClB,QAAI,MAAM,IAAI,GAAG;AAEjB,QAAI,QAAQ,QAAW;AACrB,aAAO;AAAA,IACT;AAEA,QAAI,QAAQ,MAAM;AAChB,aAAO,OAAO,GAAG;AAAA,IACnB;AAEA,QAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,UAAI,SAAS,CAAC;AACd,UAAI,QAAQ,SAAU,MAAM;AAC1B,YAAI,SAAS,QAAW;AACtB;AAAA,QACF;AACA,YAAI,SAAS,MAAM;AACjB,iBAAO,KAAK,OAAO,GAAG,CAAC;AAAA,QACzB,OAAO;AACL,iBAAO,KAAK,OAAO,GAAG,IAAI,MAAM,OAAO,IAAI,CAAC;AAAA,QAC9C;AAAA,MACF,CAAC;AACD,aAAO,OAAO,KAAK,GAAG;AAAA,IACxB;AAEA,WAAO,OAAO,GAAG,IAAI,MAAM,OAAO,GAAG;AAAA,EACvC,CAAC,EACA,OAAO,SAAU,GAAG;AAAE,WAAO,EAAE,SAAS;AAAA,EAAG,CAAC,EAC5C,KAAK,GAAG,IACT;AACJ,SAAO,MAAO,MAAM,MAAO;AAC7B;AAIA,IAAI,kBAAkB;AAEtB,SAAS,YACP,QACAE,WACA,gBACAC,SACA;AACA,MAAIC,kBAAiBD,WAAUA,QAAO,QAAQ;AAE9C,MAAIH,SAAQE,UAAS,SAAS,CAAC;AAC/B,MAAI;AACF,IAAAF,SAAQ,MAAMA,MAAK;AAAA,EACrB,SAAS,GAAG;AAAA,EAAC;AAEb,MAAI,QAAQ;AAAA,IACV,MAAME,UAAS,QAAS,UAAU,OAAO;AAAA,IACzC,MAAO,UAAU,OAAO,QAAS,CAAC;AAAA,IAClC,MAAMA,UAAS,QAAQ;AAAA,IACvB,MAAMA,UAAS,QAAQ;AAAA,IACvB,OAAOF;AAAA,IACP,QAAQE,UAAS,UAAU,CAAC;AAAA,IAC5B,UAAU,YAAYA,WAAUE,eAAc;AAAA,IAC9C,SAAS,SAAS,YAAY,MAAM,IAAI,CAAC;AAAA,EAC3C;AACA,MAAI,gBAAgB;AAClB,UAAM,iBAAiB,YAAY,gBAAgBA,eAAc;AAAA,EACnE;AACA,SAAO,OAAO,OAAO,KAAK;AAC5B;AAEA,SAAS,MAAO,OAAO;AACrB,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,MAAM,IAAI,KAAK;AAAA,EACxB,WAAW,SAAS,OAAO,UAAU,UAAU;AAC7C,QAAI,MAAM,CAAC;AACX,aAAS,OAAO,OAAO;AACrB,UAAI,GAAG,IAAI,MAAM,MAAM,GAAG,CAAC;AAAA,IAC7B;AACA,WAAO;AAAA,EACT,OAAO;AACL,WAAO;AAAA,EACT;AACF;AAGA,IAAI,QAAQ,YAAY,MAAM;AAAA,EAC5B,MAAM;AACR,CAAC;AAED,SAAS,YAAa,QAAQ;AAC5B,MAAI,MAAM,CAAC;AACX,SAAO,QAAQ;AACb,QAAI,QAAQ,MAAM;AAClB,aAAS,OAAO;AAAA,EAClB;AACA,SAAO;AACT;AAEA,SAAS,YACPC,MACA,iBACA;AACA,MAAI,OAAOA,KAAI;AACf,MAAIL,SAAQK,KAAI;AAAO,MAAKL,WAAU,OAAS,CAAAA,SAAQ,CAAC;AACxD,MAAIM,QAAOD,KAAI;AAAM,MAAKC,UAAS,OAAS,CAAAA,QAAO;AAEnD,MAAI,YAAY,mBAAmB;AACnC,UAAQ,QAAQ,OAAO,UAAUN,MAAK,IAAIM;AAC5C;AAEA,SAAS,YAAa,GAAG,GAAG,UAAU;AACpC,MAAI,MAAM,OAAO;AACf,WAAO,MAAM;AAAA,EACf,WAAW,CAAC,GAAG;AACb,WAAO;AAAA,EACT,WAAW,EAAE,QAAQ,EAAE,MAAM;AAC3B,WAAO,EAAE,KAAK,QAAQ,iBAAiB,EAAE,MAAM,EAAE,KAAK,QAAQ,iBAAiB,EAAE,MAAM,YACrF,EAAE,SAAS,EAAE,QACb,cAAc,EAAE,OAAO,EAAE,KAAK;AAAA,EAClC,WAAW,EAAE,QAAQ,EAAE,MAAM;AAC3B,WACE,EAAE,SAAS,EAAE,SACZ,YACC,EAAE,SAAS,EAAE,QACf,cAAc,EAAE,OAAO,EAAE,KAAK,KAC9B,cAAc,EAAE,QAAQ,EAAE,MAAM;AAAA,EAGpC,OAAO;AACL,WAAO;AAAA,EACT;AACF;AAEA,SAAS,cAAe,GAAG,GAAG;AAC5B,MAAK,MAAM,OAAS,KAAI,CAAC;AACzB,MAAK,MAAM,OAAS,KAAI,CAAC;AAGzB,MAAI,CAAC,KAAK,CAAC,GAAG;AAAE,WAAO,MAAM;AAAA,EAAE;AAC/B,MAAI,QAAQ,OAAO,KAAK,CAAC,EAAE,KAAK;AAChC,MAAI,QAAQ,OAAO,KAAK,CAAC,EAAE,KAAK;AAChC,MAAI,MAAM,WAAW,MAAM,QAAQ;AACjC,WAAO;AAAA,EACT;AACA,SAAO,MAAM,MAAM,SAAU,KAAK,GAAG;AACnC,QAAI,OAAO,EAAE,GAAG;AAChB,QAAI,OAAO,MAAM,CAAC;AAClB,QAAI,SAAS,KAAK;AAAE,aAAO;AAAA,IAAM;AACjC,QAAI,OAAO,EAAE,GAAG;AAEhB,QAAI,QAAQ,QAAQ,QAAQ,MAAM;AAAE,aAAO,SAAS;AAAA,IAAK;AAEzD,QAAI,OAAO,SAAS,YAAY,OAAO,SAAS,UAAU;AACxD,aAAO,cAAc,MAAM,IAAI;AAAA,IACjC;AACA,WAAO,OAAO,IAAI,MAAM,OAAO,IAAI;AAAA,EACrC,CAAC;AACH;AAEA,SAAS,gBAAiB,SAASC,SAAQ;AACzC,SACE,QAAQ,KAAK,QAAQ,iBAAiB,GAAG,EAAE;AAAA,IACzCA,QAAO,KAAK,QAAQ,iBAAiB,GAAG;AAAA,EAC1C,MAAM,MACL,CAACA,QAAO,QAAQ,QAAQ,SAASA,QAAO,SACzC,cAAc,QAAQ,OAAOA,QAAO,KAAK;AAE7C;AAEA,SAAS,cAAe,SAASA,SAAQ;AACvC,WAAS,OAAOA,SAAQ;AACtB,QAAI,EAAE,OAAO,UAAU;AACrB,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,mBAAoB,OAAO;AAClC,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,QAAQ,KAAK;AAC7C,QAAI,SAAS,MAAM,QAAQ,CAAC;AAC5B,aAAS,QAAQ,OAAO,WAAW;AACjC,UAAI,WAAW,OAAO,UAAU,IAAI;AACpC,UAAI,MAAM,OAAO,WAAW,IAAI;AAChC,UAAI,CAAC,YAAY,CAAC,KAAK;AAAE;AAAA,MAAS;AAClC,aAAO,OAAO,WAAW,IAAI;AAC7B,eAAS,MAAM,GAAG,MAAM,IAAI,QAAQ,OAAO;AACzC,YAAI,CAAC,SAAS,mBAAmB;AAAE,cAAI,GAAG,EAAE,QAAQ;AAAA,QAAG;AAAA,MACzD;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAI,OAAO;AAAA,EACT,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,OAAO;AAAA,IACL,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,QAAQ,SAAS,OAAQ,GAAGF,MAAK;AAC/B,QAAIG,SAAQH,KAAI;AAChB,QAAII,YAAWJ,KAAI;AACnB,QAAI,SAASA,KAAI;AACjB,QAAI,OAAOA,KAAI;AAGf,SAAK,aAAa;AAIlB,QAAI,IAAI,OAAO;AACf,QAAI,OAAOG,OAAM;AACjB,QAAI,QAAQ,OAAO;AACnB,QAAIE,SAAQ,OAAO,qBAAqB,OAAO,mBAAmB,CAAC;AAInE,QAAI,QAAQ;AACZ,QAAI,WAAW;AACf,WAAO,UAAU,OAAO,gBAAgB,QAAQ;AAC9C,UAAI,YAAY,OAAO,SAAS,OAAO,OAAO,OAAO,CAAC;AACtD,UAAI,UAAU,YAAY;AACxB;AAAA,MACF;AACA,UAAI,UAAU,aAAa,OAAO,mBAAmB,OAAO,WAAW;AACrE,mBAAW;AAAA,MACb;AACA,eAAS,OAAO;AAAA,IAClB;AACA,SAAK,kBAAkB;AAGvB,QAAI,UAAU;AACZ,UAAI,aAAaA,OAAM,IAAI;AAC3B,UAAI,kBAAkB,cAAc,WAAW;AAC/C,UAAI,iBAAiB;AAGnB,YAAI,WAAW,aAAa;AAC1B,0BAAgB,iBAAiB,MAAM,WAAW,OAAO,WAAW,WAAW;AAAA,QACjF;AACA,eAAO,EAAE,iBAAiB,MAAMD,SAAQ;AAAA,MAC1C,OAAO;AAEL,eAAO,EAAE;AAAA,MACX;AAAA,IACF;AAEA,QAAI,UAAU,MAAM,QAAQ,KAAK;AACjC,QAAIE,aAAY,WAAW,QAAQ,WAAW,IAAI;AAGlD,QAAI,CAAC,WAAW,CAACA,YAAW;AAC1B,MAAAD,OAAM,IAAI,IAAI;AACd,aAAO,EAAE;AAAA,IACX;AAGA,IAAAA,OAAM,IAAI,IAAI,EAAE,WAAWC,WAAU;AAIrC,SAAK,wBAAwB,SAAU,IAAI,KAAK;AAE9C,UAAI,UAAU,QAAQ,UAAU,IAAI;AACpC,UACG,OAAO,YAAY,MACnB,CAAC,OAAO,YAAY,IACrB;AACA,gBAAQ,UAAU,IAAI,IAAI;AAAA,MAC5B;AAAA,IACF;AAIC,KAAC,KAAK,SAAS,KAAK,OAAO,CAAC,IAAI,WAAW,SAAUC,IAAG,OAAO;AAC9D,cAAQ,UAAU,IAAI,IAAI,MAAM;AAAA,IAClC;AAIA,SAAK,KAAK,OAAO,SAAU,OAAO;AAChC,UAAI,MAAM,KAAK,aACb,MAAM,qBACN,MAAM,sBAAsB,QAAQ,UAAU,IAAI,GAClD;AACA,gBAAQ,UAAU,IAAI,IAAI,MAAM;AAAA,MAClC;AAKA,yBAAmB,KAAK;AAAA,IAC1B;AAEA,QAAI,cAAc,QAAQ,SAAS,QAAQ,MAAM,IAAI;AAErD,QAAI,aAAa;AACf,MAAAd,QAAOY,OAAM,IAAI,GAAG;AAAA,QAClB;AAAA,QACA;AAAA,MACF,CAAC;AACD,sBAAgBC,YAAW,MAAM,OAAO,WAAW;AAAA,IACrD;AAEA,WAAO,EAAEA,YAAW,MAAMF,SAAQ;AAAA,EACpC;AACF;AAEA,SAAS,gBAAiBE,YAAW,MAAM,OAAO,aAAa;AAE7D,MAAI,cAAc,KAAK,QAAQ,aAAa,OAAO,WAAW;AAC9D,MAAI,aAAa;AAEf,kBAAc,KAAK,QAAQb,QAAO,CAAC,GAAG,WAAW;AAEjD,QAAIe,SAAQ,KAAK,QAAQ,KAAK,SAAS,CAAC;AACxC,aAAS,OAAO,aAAa;AAC3B,UAAI,CAACF,WAAU,SAAS,EAAE,OAAOA,WAAU,QAAQ;AACjD,QAAAE,OAAM,GAAG,IAAI,YAAY,GAAG;AAC5B,eAAO,YAAY,GAAG;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,aAAc,OAAOC,SAAQ;AACpC,UAAQ,OAAOA,SAAQ;AAAA,IACrB,KAAK;AACH;AAAA,IACF,KAAK;AACH,aAAOA;AAAA,IACT,KAAK;AACH,aAAOA,QAAO,KAAK;AAAA,IACrB,KAAK;AACH,aAAOA,UAAS,MAAM,SAAS;AAAA,IACjC;AACE,UAAI,OAAuC;AACzC;AAAA,UACE;AAAA,UACA,eAAiB,MAAM,OAAQ,YAAc,OAAOA,UAAU;AAAA,QAEhE;AAAA,MACF;AAAA,EACJ;AACF;AAIA,SAAS,YACP,UACA,MACAC,SACA;AACA,MAAI,YAAY,SAAS,OAAO,CAAC;AACjC,MAAI,cAAc,KAAK;AACrB,WAAO;AAAA,EACT;AAEA,MAAI,cAAc,OAAO,cAAc,KAAK;AAC1C,WAAO,OAAO;AAAA,EAChB;AAEA,MAAI,QAAQ,KAAK,MAAM,GAAG;AAK1B,MAAI,CAACA,WAAU,CAAC,MAAM,MAAM,SAAS,CAAC,GAAG;AACvC,UAAM,IAAI;AAAA,EACZ;AAGA,MAAI,WAAW,SAAS,QAAQ,OAAO,EAAE,EAAE,MAAM,GAAG;AACpD,WAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,QAAI,UAAU,SAAS,CAAC;AACxB,QAAI,YAAY,MAAM;AACpB,YAAM,IAAI;AAAA,IACZ,WAAW,YAAY,KAAK;AAC1B,YAAM,KAAK,OAAO;AAAA,IACpB;AAAA,EACF;AAGA,MAAI,MAAM,CAAC,MAAM,IAAI;AACnB,UAAM,QAAQ,EAAE;AAAA,EAClB;AAEA,SAAO,MAAM,KAAK,GAAG;AACvB;AAEA,SAASC,WAAW,MAAM;AACxB,MAAIV,QAAO;AACX,MAAIN,SAAQ;AAEZ,MAAI,YAAY,KAAK,QAAQ,GAAG;AAChC,MAAI,aAAa,GAAG;AAClB,IAAAM,QAAO,KAAK,MAAM,SAAS;AAC3B,WAAO,KAAK,MAAM,GAAG,SAAS;AAAA,EAChC;AAEA,MAAI,aAAa,KAAK,QAAQ,GAAG;AACjC,MAAI,cAAc,GAAG;AACnB,IAAAN,SAAQ,KAAK,MAAM,aAAa,CAAC;AACjC,WAAO,KAAK,MAAM,GAAG,UAAU;AAAA,EACjC;AAEA,SAAO;AAAA,IACL;AAAA,IACA,OAAOA;AAAA,IACP,MAAMM;AAAA,EACR;AACF;AAEA,SAAS,UAAW,MAAM;AACxB,SAAO,KAAK,QAAQ,iBAAiB,GAAG;AAC1C;AAEA,IAAI,UAAU,MAAM,WAAW,SAAU,KAAK;AAC5C,SAAO,OAAO,UAAU,SAAS,KAAK,GAAG,KAAK;AAChD;AAKA,IAAI,iBAAiB;AACrB,IAAI,UAAUL;AACd,IAAI,YAAY;AAChB,IAAI,qBAAqB;AACzB,IAAI,mBAAmB;AAOvB,IAAI,cAAc,IAAI,OAAO;AAAA;AAAA;AAAA,EAG3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA;AACF,EAAE,KAAK,GAAG,GAAG,GAAG;AAShB,SAASA,OAAOF,MAAK,SAAS;AAC5B,MAAI,SAAS,CAAC;AACd,MAAI,MAAM;AACV,MAAIkB,SAAQ;AACZ,MAAI,OAAO;AACX,MAAI,mBAAmB,WAAW,QAAQ,aAAa;AACvD,MAAI;AAEJ,UAAQ,MAAM,YAAY,KAAKlB,IAAG,MAAM,MAAM;AAC5C,QAAI,IAAI,IAAI,CAAC;AACb,QAAI,UAAU,IAAI,CAAC;AACnB,QAAI,SAAS,IAAI;AACjB,YAAQA,KAAI,MAAMkB,QAAO,MAAM;AAC/B,IAAAA,SAAQ,SAAS,EAAE;AAGnB,QAAI,SAAS;AACX,cAAQ,QAAQ,CAAC;AACjB;AAAA,IACF;AAEA,QAAIC,QAAOnB,KAAIkB,MAAK;AACpB,QAAI,SAAS,IAAI,CAAC;AAClB,QAAI,OAAO,IAAI,CAAC;AAChB,QAAI,UAAU,IAAI,CAAC;AACnB,QAAI,QAAQ,IAAI,CAAC;AACjB,QAAI,WAAW,IAAI,CAAC;AACpB,QAAI,WAAW,IAAI,CAAC;AAGpB,QAAI,MAAM;AACR,aAAO,KAAK,IAAI;AAChB,aAAO;AAAA,IACT;AAEA,QAAI,UAAU,UAAU,QAAQC,SAAQ,QAAQA,UAAS;AACzD,QAAI,SAAS,aAAa,OAAO,aAAa;AAC9C,QAAI,WAAW,aAAa,OAAO,aAAa;AAChD,QAAI,YAAY,IAAI,CAAC,KAAK;AAC1B,QAAI,UAAU,WAAW;AAEzB,WAAO,KAAK;AAAA,MACV,MAAM,QAAQ;AAAA,MACd,QAAQ,UAAU;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU,CAAC,CAAC;AAAA,MACZ,SAAS,UAAU,YAAY,OAAO,IAAK,WAAW,OAAO,OAAO,aAAa,SAAS,IAAI;AAAA,IAChG,CAAC;AAAA,EACH;AAGA,MAAID,SAAQlB,KAAI,QAAQ;AACtB,YAAQA,KAAI,OAAOkB,MAAK;AAAA,EAC1B;AAGA,MAAI,MAAM;AACR,WAAO,KAAK,IAAI;AAAA,EAClB;AAEA,SAAO;AACT;AASA,SAAS,QAASlB,MAAK,SAAS;AAC9B,SAAO,iBAAiBE,OAAMF,MAAK,OAAO,GAAG,OAAO;AACtD;AAQA,SAAS,yBAA0BA,MAAK;AACtC,SAAO,UAAUA,IAAG,EAAE,QAAQ,WAAW,SAAU,GAAG;AACpD,WAAO,MAAM,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,YAAY;AAAA,EACxD,CAAC;AACH;AAQA,SAAS,eAAgBA,MAAK;AAC5B,SAAO,UAAUA,IAAG,EAAE,QAAQ,SAAS,SAAU,GAAG;AAClD,WAAO,MAAM,EAAE,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,YAAY;AAAA,EACxD,CAAC;AACH;AAKA,SAAS,iBAAkB,QAAQ,SAAS;AAE1C,MAAIoB,WAAU,IAAI,MAAM,OAAO,MAAM;AAGrC,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,QAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AACjC,MAAAA,SAAQ,CAAC,IAAI,IAAI,OAAO,SAAS,OAAO,CAAC,EAAE,UAAU,MAAM,MAAM,OAAO,CAAC;AAAA,IAC3E;AAAA,EACF;AAEA,SAAO,SAAU,KAAKC,OAAM;AAC1B,QAAI,OAAO;AACX,QAAI,OAAO,OAAO,CAAC;AACnB,QAAIC,WAAUD,SAAQ,CAAC;AACvB,QAAIE,UAASD,SAAQ,SAAS,2BAA2B;AAEzD,aAASE,KAAI,GAAGA,KAAI,OAAO,QAAQA,MAAK;AACtC,UAAI,QAAQ,OAAOA,EAAC;AAEpB,UAAI,OAAO,UAAU,UAAU;AAC7B,gBAAQ;AAER;AAAA,MACF;AAEA,UAAI,QAAQ,KAAK,MAAM,IAAI;AAC3B,UAAI;AAEJ,UAAI,SAAS,MAAM;AACjB,YAAI,MAAM,UAAU;AAElB,cAAI,MAAM,SAAS;AACjB,oBAAQ,MAAM;AAAA,UAChB;AAEA;AAAA,QACF,OAAO;AACL,gBAAM,IAAI,UAAU,eAAe,MAAM,OAAO,iBAAiB;AAAA,QACnE;AAAA,MACF;AAEA,UAAI,QAAQ,KAAK,GAAG;AAClB,YAAI,CAAC,MAAM,QAAQ;AACjB,gBAAM,IAAI,UAAU,eAAe,MAAM,OAAO,oCAAoC,KAAK,UAAU,KAAK,IAAI,GAAG;AAAA,QACjH;AAEA,YAAI,MAAM,WAAW,GAAG;AACtB,cAAI,MAAM,UAAU;AAClB;AAAA,UACF,OAAO;AACL,kBAAM,IAAI,UAAU,eAAe,MAAM,OAAO,mBAAmB;AAAA,UACrE;AAAA,QACF;AAEA,iBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,oBAAUD,QAAO,MAAM,CAAC,CAAC;AAEzB,cAAI,CAACH,SAAQI,EAAC,EAAE,KAAK,OAAO,GAAG;AAC7B,kBAAM,IAAI,UAAU,mBAAmB,MAAM,OAAO,iBAAiB,MAAM,UAAU,sBAAsB,KAAK,UAAU,OAAO,IAAI,GAAG;AAAA,UAC1I;AAEA,mBAAS,MAAM,IAAI,MAAM,SAAS,MAAM,aAAa;AAAA,QACvD;AAEA;AAAA,MACF;AAEA,gBAAU,MAAM,WAAW,eAAe,KAAK,IAAID,QAAO,KAAK;AAE/D,UAAI,CAACH,SAAQI,EAAC,EAAE,KAAK,OAAO,GAAG;AAC7B,cAAM,IAAI,UAAU,eAAe,MAAM,OAAO,iBAAiB,MAAM,UAAU,sBAAsB,UAAU,GAAG;AAAA,MACtH;AAEA,cAAQ,MAAM,SAAS;AAAA,IACzB;AAEA,WAAO;AAAA,EACT;AACF;AAQA,SAAS,aAAcxB,MAAK;AAC1B,SAAOA,KAAI,QAAQ,8BAA8B,MAAM;AACzD;AAQA,SAAS,YAAa,OAAO;AAC3B,SAAO,MAAM,QAAQ,iBAAiB,MAAM;AAC9C;AASA,SAAS,WAAYyB,KAAIC,OAAM;AAC7B,EAAAD,IAAG,OAAOC;AACV,SAAOD;AACT;AAQA,SAAS,MAAO,SAAS;AACvB,SAAO,WAAW,QAAQ,YAAY,KAAK;AAC7C;AASA,SAAS,eAAgB,MAAMC,OAAM;AAEnC,MAAI,SAAS,KAAK,OAAO,MAAM,WAAW;AAE1C,MAAI,QAAQ;AACV,aAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,MAAAA,MAAK,KAAK;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,UAAU;AAAA,QACV,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO,WAAW,MAAMA,KAAI;AAC9B;AAUA,SAAS,cAAe,MAAMA,OAAM,SAAS;AAC3C,MAAI,QAAQ,CAAC;AAEb,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,UAAM,KAAK,aAAa,KAAK,CAAC,GAAGA,OAAM,OAAO,EAAE,MAAM;AAAA,EACxD;AAEA,MAAI,SAAS,IAAI,OAAO,QAAQ,MAAM,KAAK,GAAG,IAAI,KAAK,MAAM,OAAO,CAAC;AAErE,SAAO,WAAW,QAAQA,KAAI;AAChC;AAUA,SAAS,eAAgB,MAAMA,OAAM,SAAS;AAC5C,SAAO,eAAexB,OAAM,MAAM,OAAO,GAAGwB,OAAM,OAAO;AAC3D;AAUA,SAAS,eAAgB,QAAQA,OAAM,SAAS;AAC9C,MAAI,CAAC,QAAQA,KAAI,GAAG;AAClB;AAAA,IAAkCA,SAAQ;AAC1C,IAAAA,QAAO,CAAC;AAAA,EACV;AAEA,YAAU,WAAW,CAAC;AAEtB,MAAI,SAAS,QAAQ;AACrB,MAAI,MAAM,QAAQ,QAAQ;AAC1B,MAAI,QAAQ;AAGZ,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,QAAI,QAAQ,OAAO,CAAC;AAEpB,QAAI,OAAO,UAAU,UAAU;AAC7B,eAAS,aAAa,KAAK;AAAA,IAC7B,OAAO;AACL,UAAI,SAAS,aAAa,MAAM,MAAM;AACtC,UAAI,UAAU,QAAQ,MAAM,UAAU;AAEtC,MAAAA,MAAK,KAAK,KAAK;AAEf,UAAI,MAAM,QAAQ;AAChB,mBAAW,QAAQ,SAAS,UAAU;AAAA,MACxC;AAEA,UAAI,MAAM,UAAU;AAClB,YAAI,CAAC,MAAM,SAAS;AAClB,oBAAU,QAAQ,SAAS,MAAM,UAAU;AAAA,QAC7C,OAAO;AACL,oBAAU,SAAS,MAAM,UAAU;AAAA,QACrC;AAAA,MACF,OAAO;AACL,kBAAU,SAAS,MAAM,UAAU;AAAA,MACrC;AAEA,eAAS;AAAA,IACX;AAAA,EACF;AAEA,MAAI,YAAY,aAAa,QAAQ,aAAa,GAAG;AACrD,MAAI,oBAAoB,MAAM,MAAM,CAAC,UAAU,MAAM,MAAM;AAM3D,MAAI,CAAC,QAAQ;AACX,aAAS,oBAAoB,MAAM,MAAM,GAAG,CAAC,UAAU,MAAM,IAAI,SAAS,QAAQ,YAAY;AAAA,EAChG;AAEA,MAAI,KAAK;AACP,aAAS;AAAA,EACX,OAAO;AAGL,aAAS,UAAU,oBAAoB,KAAK,QAAQ,YAAY;AAAA,EAClE;AAEA,SAAO,WAAW,IAAI,OAAO,MAAM,OAAO,MAAM,OAAO,CAAC,GAAGA,KAAI;AACjE;AAcA,SAAS,aAAc,MAAMA,OAAM,SAAS;AAC1C,MAAI,CAAC,QAAQA,KAAI,GAAG;AAClB;AAAA,IAAkCA,SAAQ;AAC1C,IAAAA,QAAO,CAAC;AAAA,EACV;AAEA,YAAU,WAAW,CAAC;AAEtB,MAAI,gBAAgB,QAAQ;AAC1B,WAAO;AAAA,MAAe;AAAA;AAAA,MAA6BA;AAAA,IAAK;AAAA,EAC1D;AAEA,MAAI,QAAQ,IAAI,GAAG;AACjB,WAAO;AAAA;AAAA,MAAqC;AAAA;AAAA,MAA8BA;AAAA,MAAO;AAAA,IAAO;AAAA,EAC1F;AAEA,SAAO;AAAA;AAAA,IAAsC;AAAA;AAAA,IAA8BA;AAAA,IAAO;AAAA,EAAO;AAC3F;AACA,eAAe,QAAQ;AACvB,eAAe,UAAU;AACzB,eAAe,mBAAmB;AAClC,eAAe,iBAAiB;AAKhC,IAAI,qBAAqB,uBAAO,OAAO,IAAI;AAE3C,SAAS,WACP,MACA,QACA,UACA;AACA,WAAS,UAAU,CAAC;AACpB,MAAI;AACF,QAAI,SACF,mBAAmB,IAAI,MACtB,mBAAmB,IAAI,IAAI,eAAe,QAAQ,IAAI;AAIzD,QAAI,OAAO,OAAO,cAAc,UAAU;AAAE,aAAO,CAAC,IAAI,OAAO;AAAA,IAAW;AAE1E,WAAO,OAAO,QAAQ,EAAE,QAAQ,KAAK,CAAC;AAAA,EACxC,SAAS,GAAG;AACV,QAAI,OAAuC;AAEzC,WAAK,OAAO,OAAO,cAAc,UAAW,uBAAuB,WAAW,OAAQ,EAAE,OAAS;AAAA,IACnG;AACA,WAAO;AAAA,EACT,UAAE;AAEA,WAAO,OAAO,CAAC;AAAA,EACjB;AACF;AAIA,SAAS,kBACP,KACA,SACAV,SACAZ,SACA;AACA,MAAIe,QAAO,OAAO,QAAQ,WAAW,EAAE,MAAM,IAAI,IAAI;AAErD,MAAIA,MAAK,aAAa;AACpB,WAAOA;AAAA,EACT,WAAWA,MAAK,MAAM;AACpB,IAAAA,QAAOpB,QAAO,CAAC,GAAG,GAAG;AACrB,QAAI,SAASoB,MAAK;AAClB,QAAI,UAAU,OAAO,WAAW,UAAU;AACxC,MAAAA,MAAK,SAASpB,QAAO,CAAC,GAAG,MAAM;AAAA,IACjC;AACA,WAAOoB;AAAA,EACT;AAGA,MAAI,CAACA,MAAK,QAAQA,MAAK,UAAU,SAAS;AACxC,IAAAA,QAAOpB,QAAO,CAAC,GAAGoB,KAAI;AACtB,IAAAA,MAAK,cAAc;AACnB,QAAI,WAAWpB,QAAOA,QAAO,CAAC,GAAG,QAAQ,MAAM,GAAGoB,MAAK,MAAM;AAC7D,QAAI,QAAQ,MAAM;AAChB,MAAAA,MAAK,OAAO,QAAQ;AACpB,MAAAA,MAAK,SAAS;AAAA,IAChB,WAAW,QAAQ,QAAQ,QAAQ;AACjC,UAAI,UAAU,QAAQ,QAAQ,QAAQ,QAAQ,SAAS,CAAC,EAAE;AAC1D,MAAAA,MAAK,OAAO,WAAW,SAAS,UAAW,UAAW,QAAQ,IAAM;AAAA,IACtE,WAAW,OAAuC;AAChD,WAAK,OAAO,sDAAsD;AAAA,IACpE;AACA,WAAOA;AAAA,EACT;AAEA,MAAI,aAAaF,WAAUE,MAAK,QAAQ,EAAE;AAC1C,MAAI,WAAY,WAAW,QAAQ,QAAS;AAC5C,MAAI,OAAO,WAAW,OAClB,YAAY,WAAW,MAAM,UAAUH,WAAUG,MAAK,MAAM,IAC5D;AAEJ,MAAIlB,SAAQ;AAAA,IACV,WAAW;AAAA,IACXkB,MAAK;AAAA,IACLf,WAAUA,QAAO,QAAQ;AAAA,EAC3B;AAEA,MAAIG,QAAOY,MAAK,QAAQ,WAAW;AACnC,MAAIZ,SAAQA,MAAK,OAAO,CAAC,MAAM,KAAK;AAClC,IAAAA,QAAO,MAAMA;AAAA,EACf;AAEA,SAAO;AAAA,IACL,aAAa;AAAA,IACb;AAAA,IACA,OAAON;AAAA,IACP,MAAMM;AAAA,EACR;AACF;AAKA,IAAI,UAAU,CAAC,QAAQ,MAAM;AAC7B,IAAI,aAAa,CAAC,QAAQ,KAAK;AAE/B,IAAIoB,QAAO,WAAY;AAAC;AAMxB,IAAI,OAAO;AAAA,EACT,MAAM;AAAA,EACN,OAAO;AAAA,IACL,IAAI;AAAA,MACF,MAAM;AAAA,MACN,UAAU;AAAA,IACZ;AAAA,IACA,KAAK;AAAA,MACH,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,aAAa;AAAA,IACb,kBAAkB;AAAA,IAClB,kBAAkB;AAAA,MAChB,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,QAAQ,SAASC,QAAQ,GAAG;AAC1B,QAAI,WAAW;AAEf,QAAIC,UAAS,KAAK;AAClB,QAAI,UAAU,KAAK;AACnB,QAAIC,OAAMD,QAAO;AAAA,MACf,KAAK;AAAA,MACL;AAAA,MACA,KAAK;AAAA,IACP;AACA,QAAIE,YAAWD,KAAI;AACnB,QAAI,QAAQA,KAAI;AAChB,QAAI,OAAOA,KAAI;AAEf,QAAI,UAAU,CAAC;AACf,QAAI,oBAAoBD,QAAO,QAAQ;AACvC,QAAI,yBAAyBA,QAAO,QAAQ;AAE5C,QAAI,sBACF,qBAAqB,OAAO,uBAAuB;AACrD,QAAI,2BACF,0BAA0B,OACtB,6BACA;AACN,QAAI,cACF,KAAK,eAAe,OAAO,sBAAsB,KAAK;AACxD,QAAI,mBACF,KAAK,oBAAoB,OACrB,2BACA,KAAK;AAEX,QAAI,gBAAgB,MAAM,iBACtB,YAAY,MAAM,kBAAkB,MAAM,cAAc,GAAG,MAAMA,OAAM,IACvE;AAEJ,YAAQ,gBAAgB,IAAI,YAAY,SAAS,eAAe,KAAK,SAAS;AAC9E,YAAQ,WAAW,IAAI,KAAK,SAAS,KAAK,YACtC,QAAQ,gBAAgB,IACxB,gBAAgB,SAAS,aAAa;AAE1C,QAAI,mBAAmB,QAAQ,gBAAgB,IAAI,KAAK,mBAAmB;AAE3E,QAAI,UAAU,SAAU,GAAG;AACzB,UAAI,WAAW,CAAC,GAAG;AACjB,YAAI,SAAS,SAAS;AACpB,UAAAA,QAAO,QAAQE,WAAUC,KAAI;AAAA,QAC/B,OAAO;AACL,UAAAH,QAAO,KAAKE,WAAUC,KAAI;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAEA,QAAIC,MAAK,EAAE,OAAO,WAAW;AAC7B,QAAI,MAAM,QAAQ,KAAK,KAAK,GAAG;AAC7B,WAAK,MAAM,QAAQ,SAAU,GAAG;AAC9B,QAAAA,IAAG,CAAC,IAAI;AAAA,MACV,CAAC;AAAA,IACH,OAAO;AACL,MAAAA,IAAG,KAAK,KAAK,IAAI;AAAA,IACnB;AAEA,QAAI,OAAO,EAAE,OAAO,QAAQ;AAE5B,QAAI,aACF,CAAC,KAAK,aAAa,cACnB,KAAK,aAAa,WAClB,KAAK,aAAa,QAAQ;AAAA,MACxB;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV,UAAU,QAAQ,WAAW;AAAA,MAC7B,eAAe,QAAQ,gBAAgB;AAAA,IACzC,CAAC;AAEH,QAAI,YAAY;AACd,UAAI,OAAuD;AACzD,SAAC,oBAAoB,KAAK,OAAO,qMAAqM;AACtO,2BAAmB;AAAA,MACrB;AACA,UAAI,WAAW,WAAW,GAAG;AAC3B,eAAO,WAAW,CAAC;AAAA,MACrB,WAAW,WAAW,SAAS,KAAK,CAAC,WAAW,QAAQ;AACtD,YAAI,OAAuC;AACzC;AAAA,YACE;AAAA,YACC,4BAA8B,KAAK,KAAM;AAAA,UAC5C;AAAA,QACF;AACA,eAAO,WAAW,WAAW,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,UAAU;AAAA,MACjE;AAAA,IACF;AAEA,QAAI,OAAuC;AACzC,UAAI,SAAS,KAAK,SAAS,aAAa,CAAC,eAAe;AACtD;AAAA,UACE;AAAA,UACA;AAAA,QACF;AACA,wBAAgB;AAAA,MAClB;AACA,UAAI,WAAW,KAAK,SAAS,aAAa,CAAC,iBAAiB;AAC1D;AAAA,UACE;AAAA,UACA;AAAA,QACF;AACA,0BAAkB;AAAA,MACpB;AAAA,IACF;AAEA,QAAI,KAAK,QAAQ,KAAK;AACpB,WAAK,KAAKA;AACV,WAAK,QAAQ,EAAE,MAAY,gBAAgB,iBAAiB;AAAA,IAC9D,OAAO;AAEL,UAAI,IAAI,WAAW,KAAK,OAAO,OAAO;AACtC,UAAI,GAAG;AAEL,UAAE,WAAW;AACb,YAAI,QAAS,EAAE,OAAOC,QAAO,CAAC,GAAG,EAAE,IAAI;AACvC,cAAM,KAAK,MAAM,MAAM,CAAC;AAExB,iBAAS,SAAS,MAAM,IAAI;AAC1B,cAAI,YAAY,MAAM,GAAG,KAAK;AAC9B,cAAI,SAASD,KAAI;AACf,kBAAM,GAAG,KAAK,IAAI,MAAM,QAAQ,SAAS,IAAI,YAAY,CAAC,SAAS;AAAA,UACrE;AAAA,QACF;AAEA,iBAAS,WAAWA,KAAI;AACtB,cAAI,WAAW,MAAM,IAAI;AAEvB,kBAAM,GAAG,OAAO,EAAE,KAAKA,IAAG,OAAO,CAAC;AAAA,UACpC,OAAO;AACL,kBAAM,GAAG,OAAO,IAAI;AAAA,UACtB;AAAA,QACF;AAEA,YAAI,SAAU,EAAE,KAAK,QAAQC,QAAO,CAAC,GAAG,EAAE,KAAK,KAAK;AACpD,eAAO,OAAO;AACd,eAAO,cAAc,IAAI;AAAA,MAC3B,OAAO;AAEL,aAAK,KAAKD;AAAA,MACZ;AAAA,IACF;AAEA,WAAO,EAAE,KAAK,KAAK,MAAM,KAAK,OAAO,OAAO;AAAA,EAC9C;AACF;AAEA,SAAS,WAAY,GAAG;AAEtB,MAAI,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU;AAAE;AAAA,EAAO;AAE/D,MAAI,EAAE,kBAAkB;AAAE;AAAA,EAAO;AAEjC,MAAI,EAAE,WAAW,UAAa,EAAE,WAAW,GAAG;AAAE;AAAA,EAAO;AAEvD,MAAI,EAAE,iBAAiB,EAAE,cAAc,cAAc;AACnD,QAAIE,UAAS,EAAE,cAAc,aAAa,QAAQ;AAClD,QAAI,cAAc,KAAKA,OAAM,GAAG;AAAE;AAAA,IAAO;AAAA,EAC3C;AAEA,MAAI,EAAE,gBAAgB;AACpB,MAAE,eAAe;AAAA,EACnB;AACA,SAAO;AACT;AAEA,SAAS,WAAYC,WAAU;AAC7B,MAAIA,WAAU;AACZ,QAAI;AACJ,aAAS,IAAI,GAAG,IAAIA,UAAS,QAAQ,KAAK;AACxC,cAAQA,UAAS,CAAC;AAClB,UAAI,MAAM,QAAQ,KAAK;AACrB,eAAO;AAAA,MACT;AACA,UAAI,MAAM,aAAa,QAAQ,WAAW,MAAM,QAAQ,IAAI;AAC1D,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAI;AAEJ,SAAS,QAASC,MAAK;AACrB,MAAI,QAAQ,aAAa,SAASA,MAAK;AAAE;AAAA,EAAO;AAChD,UAAQ,YAAY;AAEpB,SAAOA;AAEP,MAAIC,SAAQ,SAAU,GAAG;AAAE,WAAO,MAAM;AAAA,EAAW;AAEnD,MAAI,mBAAmB,SAAU,IAAI,SAAS;AAC5C,QAAI,IAAI,GAAG,SAAS;AACpB,QAAIA,OAAM,CAAC,KAAKA,OAAM,IAAI,EAAE,IAAI,KAAKA,OAAM,IAAI,EAAE,qBAAqB,GAAG;AACvE,QAAE,IAAI,OAAO;AAAA,IACf;AAAA,EACF;AAEA,EAAAD,KAAI,MAAM;AAAA,IACR,cAAc,SAAS,eAAgB;AACrC,UAAIC,OAAM,KAAK,SAAS,MAAM,GAAG;AAC/B,aAAK,cAAc;AACnB,aAAK,UAAU,KAAK,SAAS;AAC7B,aAAK,QAAQ,KAAK,IAAI;AACtB,QAAAD,KAAI,KAAK,eAAe,MAAM,UAAU,KAAK,QAAQ,QAAQ,OAAO;AAAA,MACtE,OAAO;AACL,aAAK,cAAe,KAAK,WAAW,KAAK,QAAQ,eAAgB;AAAA,MACnE;AACA,uBAAiB,MAAM,IAAI;AAAA,IAC7B;AAAA,IACA,WAAW,SAAS,YAAa;AAC/B,uBAAiB,IAAI;AAAA,IACvB;AAAA,EACF,CAAC;AAED,SAAO,eAAeA,KAAI,WAAW,WAAW;AAAA,IAC9C,KAAK,SAASE,OAAO;AAAE,aAAO,KAAK,YAAY;AAAA,IAAQ;AAAA,EACzD,CAAC;AAED,SAAO,eAAeF,KAAI,WAAW,UAAU;AAAA,IAC7C,KAAK,SAASE,OAAO;AAAE,aAAO,KAAK,YAAY;AAAA,IAAO;AAAA,EACxD,CAAC;AAED,EAAAF,KAAI,UAAU,cAAc,IAAI;AAChC,EAAAA,KAAI,UAAU,cAAc,IAAI;AAEhC,MAAIG,UAASH,KAAI,OAAO;AAExB,EAAAG,QAAO,mBAAmBA,QAAO,mBAAmBA,QAAO,oBAAoBA,QAAO;AACxF;AAIA,IAAIC,aAAY,OAAO,WAAW;AAIlC,SAAS,eACP,QACA,aACA,YACA,YACA,aACA;AAEA,MAAI,WAAW,eAAe,CAAC;AAE/B,MAAI,UAAU,cAAc,uBAAO,OAAO,IAAI;AAE9C,MAAI,UAAU,cAAc,uBAAO,OAAO,IAAI;AAE9C,SAAO,QAAQ,SAAU,OAAO;AAC9B,mBAAe,UAAU,SAAS,SAAS,OAAO,WAAW;AAAA,EAC/D,CAAC;AAGD,WAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,IAAI,GAAG,KAAK;AAC/C,QAAI,SAAS,CAAC,MAAM,KAAK;AACvB,eAAS,KAAK,SAAS,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;AACtC;AACA;AAAA,IACF;AAAA,EACF;AAEA,MAAI,OAAwC;AAE1C,QAAI,QAAQ,SAET,OAAO,SAAU,MAAM;AAAE,aAAO,QAAQ,KAAK,OAAO,CAAC,MAAM,OAAO,KAAK,OAAO,CAAC,MAAM;AAAA,IAAK,CAAC;AAE9F,QAAI,MAAM,SAAS,GAAG;AACpB,UAAI,YAAY,MAAM,IAAI,SAAU,MAAM;AAAE,eAAQ,OAAO;AAAA,MAAO,CAAC,EAAE,KAAK,IAAI;AAC9E,WAAK,OAAQ,2FAA2F,SAAU;AAAA,IACpH;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,eACP,UACA,SACA,SACA,OACA,QACA,SACA;AACA,MAAI,OAAO,MAAM;AACjB,MAAI,OAAO,MAAM;AACjB,MAAI,OAAuC;AACzC,WAAO,QAAQ,MAAM,8CAAgD;AACrE;AAAA,MACE,OAAO,MAAM,cAAc;AAAA,MAC3B,wCAA2C;AAAA,QACzC,QAAQ;AAAA,MACV,IAAK;AAAA,IACP;AAEA;AAAA;AAAA,MAEE,CAAC,oBAAoB,KAAK,IAAI;AAAA,MAC9B,sBAAuB,OAAO;AAAA,IAGhC;AAAA,EACF;AAEA,MAAI,sBACF,MAAM,uBAAuB,CAAC;AAChC,MAAI,iBAAiB,cAAc,MAAM,QAAQ,oBAAoB,MAAM;AAE3E,MAAI,OAAO,MAAM,kBAAkB,WAAW;AAC5C,wBAAoB,YAAY,MAAM;AAAA,EACxC;AAEA,MAAI,SAAS;AAAA,IACX,MAAM;AAAA,IACN,OAAO,kBAAkB,gBAAgB,mBAAmB;AAAA,IAC5D,YAAY,MAAM,cAAc,EAAE,SAAS,MAAM,UAAU;AAAA,IAC3D,OAAO,MAAM,QACT,OAAO,MAAM,UAAU,WACrB,CAAC,MAAM,KAAK,IACZ,MAAM,QACR,CAAC;AAAA,IACL,WAAW,CAAC;AAAA,IACZ,YAAY,CAAC;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU,MAAM;AAAA,IAChB,aAAa,MAAM;AAAA,IACnB,MAAM,MAAM,QAAQ,CAAC;AAAA,IACrB,OACE,MAAM,SAAS,OACX,CAAC,IACD,MAAM,aACJ,MAAM,QACN,EAAE,SAAS,MAAM,MAAM;AAAA,EACjC;AAEA,MAAI,MAAM,UAAU;AAIlB,QAAI,OAAuC;AACzC,UACE,MAAM,QACN,CAAC,MAAM,YACP,MAAM,SAAS,KAAK,SAAU,OAAO;AAAE,eAAO,QAAQ,KAAK,MAAM,IAAI;AAAA,MAAG,CAAC,GACzE;AACA;AAAA,UACE;AAAA,UACA,kBAAmB,MAAM,OAAQ,oFAC0B,MAAM,OAAQ;AAAA,QAI3E;AAAA,MACF;AAAA,IACF;AACA,UAAM,SAAS,QAAQ,SAAU,OAAO;AACtC,UAAI,eAAe,UACf,UAAW,UAAU,MAAO,MAAM,IAAM,IACxC;AACJ,qBAAe,UAAU,SAAS,SAAS,OAAO,QAAQ,YAAY;AAAA,IACxE,CAAC;AAAA,EACH;AAEA,MAAI,CAAC,QAAQ,OAAO,IAAI,GAAG;AACzB,aAAS,KAAK,OAAO,IAAI;AACzB,YAAQ,OAAO,IAAI,IAAI;AAAA,EACzB;AAEA,MAAI,MAAM,UAAU,QAAW;AAC7B,QAAI,UAAU,MAAM,QAAQ,MAAM,KAAK,IAAI,MAAM,QAAQ,CAAC,MAAM,KAAK;AACrE,aAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,EAAE,GAAG;AACvC,UAAI,QAAQ,QAAQ,CAAC;AACrB,UAAI,OAAyD;AAC3D;AAAA,UACE;AAAA,UACC,sDAAuD,OAAO;AAAA,QACjE;AAEA;AAAA,MACF;AAEA,UAAI,aAAa;AAAA,QACf,MAAM;AAAA,QACN,UAAU,MAAM;AAAA,MAClB;AACA;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAO,QAAQ;AAAA;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AAEA,MAAI,MAAM;AACR,QAAI,CAAC,QAAQ,IAAI,GAAG;AAClB,cAAQ,IAAI,IAAI;AAAA,IAClB,WAAW,OAAmD;AAC5D;AAAA,QACE;AAAA,QACA,iDACiB,OAAO,eAAkB,OAAO,OAAQ;AAAA,MAC3D;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,kBACP,MACA,qBACA;AACA,MAAI,QAAQ,eAAe,MAAM,CAAC,GAAG,mBAAmB;AACxD,MAAI,OAAuC;AACzC,QAAIC,QAAO,uBAAO,OAAO,IAAI;AAC7B,UAAM,KAAK,QAAQ,SAAU,KAAK;AAChC;AAAA,QACE,CAACA,MAAK,IAAI,IAAI;AAAA,QACb,+CAAgD,OAAO;AAAA,MAC1D;AACA,MAAAA,MAAK,IAAI,IAAI,IAAI;AAAA,IACnB,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAEA,SAAS,cACP,MACA,QACA,QACA;AACA,MAAI,CAAC,QAAQ;AAAE,WAAO,KAAK,QAAQ,OAAO,EAAE;AAAA,EAAG;AAC/C,MAAI,KAAK,CAAC,MAAM,KAAK;AAAE,WAAO;AAAA,EAAK;AACnC,MAAI,UAAU,MAAM;AAAE,WAAO;AAAA,EAAK;AAClC,SAAO,UAAY,OAAO,OAAQ,MAAM,IAAK;AAC/C;AAMA,SAAS,cACP,QACAb,SACA;AACA,MAAIC,OAAM,eAAe,MAAM;AAC/B,MAAI,WAAWA,KAAI;AACnB,MAAI,UAAUA,KAAI;AAClB,MAAI,UAAUA,KAAI;AAElB,WAASa,WAAWC,SAAQ;AAC1B,mBAAeA,SAAQ,UAAU,SAAS,OAAO;AAAA,EACnD;AAEA,WAASC,UAAU,eAAe,OAAO;AACvC,QAAI,SAAU,OAAO,kBAAkB,WAAY,QAAQ,aAAa,IAAI;AAE5E,mBAAe,CAAC,SAAS,aAAa,GAAG,UAAU,SAAS,SAAS,MAAM;AAG3E,QAAI,UAAU,OAAO,MAAM,QAAQ;AACjC;AAAA;AAAA,QAEE,OAAO,MAAM,IAAI,SAAUC,QAAO;AAAE,iBAAQ,EAAE,MAAMA,QAAO,UAAU,CAAC,KAAK,EAAE;AAAA,QAAI,CAAC;AAAA,QAClF;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,WAASC,aAAa;AACpB,WAAO,SAAS,IAAI,SAAU,MAAM;AAAE,aAAO,QAAQ,IAAI;AAAA,IAAG,CAAC;AAAA,EAC/D;AAEA,WAASC,OACP,KACA,cACA,gBACA;AACA,QAAIjB,YAAW,kBAAkB,KAAK,cAAc,OAAOF,OAAM;AACjE,QAAI,OAAOE,UAAS;AAEpB,QAAI,MAAM;AACR,UAAI,SAAS,QAAQ,IAAI;AACzB,UAAI,OAAuC;AACzC,aAAK,QAAS,sBAAsB,OAAO,kBAAmB;AAAA,MAChE;AACA,UAAI,CAAC,QAAQ;AAAE,eAAO,aAAa,MAAMA,SAAQ;AAAA,MAAE;AACnD,UAAI,aAAa,OAAO,MAAM,KAC3B,OAAO,SAAUkB,MAAK;AAAE,eAAO,CAACA,KAAI;AAAA,MAAU,CAAC,EAC/C,IAAI,SAAUA,MAAK;AAAE,eAAOA,KAAI;AAAA,MAAM,CAAC;AAE1C,UAAI,OAAOlB,UAAS,WAAW,UAAU;AACvC,QAAAA,UAAS,SAAS,CAAC;AAAA,MACrB;AAEA,UAAI,gBAAgB,OAAO,aAAa,WAAW,UAAU;AAC3D,iBAAS,OAAO,aAAa,QAAQ;AACnC,cAAI,EAAE,OAAOA,UAAS,WAAW,WAAW,QAAQ,GAAG,IAAI,IAAI;AAC7D,YAAAA,UAAS,OAAO,GAAG,IAAI,aAAa,OAAO,GAAG;AAAA,UAChD;AAAA,QACF;AAAA,MACF;AAEA,MAAAA,UAAS,OAAO,WAAW,OAAO,MAAMA,UAAS,QAAS,kBAAmB,OAAO,GAAK;AACzF,aAAO,aAAa,QAAQA,WAAU,cAAc;AAAA,IACtD,WAAWA,UAAS,MAAM;AACxB,MAAAA,UAAS,SAAS,CAAC;AACnB,eAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,YAAI,OAAO,SAAS,CAAC;AACrB,YAAI,WAAW,QAAQ,IAAI;AAC3B,YAAI,WAAW,SAAS,OAAOA,UAAS,MAAMA,UAAS,MAAM,GAAG;AAC9D,iBAAO,aAAa,UAAUA,WAAU,cAAc;AAAA,QACxD;AAAA,MACF;AAAA,IACF;AAEA,WAAO,aAAa,MAAMA,SAAQ;AAAA,EACpC;AAEA,WAAS,SACP,QACAA,WACA;AACA,QAAI,mBAAmB,OAAO;AAC9B,QAAImB,YAAW,OAAO,qBAAqB,aACvC,iBAAiB,YAAY,QAAQnB,WAAU,MAAMF,OAAM,CAAC,IAC5D;AAEJ,QAAI,OAAOqB,cAAa,UAAU;AAChC,MAAAA,YAAW,EAAE,MAAMA,UAAS;AAAA,IAC9B;AAEA,QAAI,CAACA,aAAY,OAAOA,cAAa,UAAU;AAC7C,UAAI,OAAuC;AACzC;AAAA,UACE;AAAA,UAAQ,8BAA+B,KAAK,UAAUA,SAAQ;AAAA,QAChE;AAAA,MACF;AACA,aAAO,aAAa,MAAMnB,SAAQ;AAAA,IACpC;AAEA,QAAIoB,MAAKD;AACT,QAAI,OAAOC,IAAG;AACd,QAAI,OAAOA,IAAG;AACd,QAAIC,SAAQrB,UAAS;AACrB,QAAIsB,QAAOtB,UAAS;AACpB,QAAI,SAASA,UAAS;AACtB,IAAAqB,SAAQD,IAAG,eAAe,OAAO,IAAIA,IAAG,QAAQC;AAChD,IAAAC,QAAOF,IAAG,eAAe,MAAM,IAAIA,IAAG,OAAOE;AAC7C,aAASF,IAAG,eAAe,QAAQ,IAAIA,IAAG,SAAS;AAEnD,QAAI,MAAM;AAER,UAAI,eAAe,QAAQ,IAAI;AAC/B,UAAI,OAAuC;AACzC,eAAO,cAAe,mCAAoC,OAAO,cAAgB;AAAA,MACnF;AACA,aAAOH,OAAM;AAAA,QACX,aAAa;AAAA,QACb;AAAA,QACA,OAAOI;AAAA,QACP,MAAMC;AAAA,QACN;AAAA,MACF,GAAG,QAAWtB,SAAQ;AAAA,IACxB,WAAW,MAAM;AAEf,UAAI,UAAU,kBAAkB,MAAM,MAAM;AAE5C,UAAI,eAAe,WAAW,SAAS,QAAS,+BAAgC,UAAU,GAAK;AAE/F,aAAOiB,OAAM;AAAA,QACX,aAAa;AAAA,QACb,MAAM;AAAA,QACN,OAAOI;AAAA,QACP,MAAMC;AAAA,MACR,GAAG,QAAWtB,SAAQ;AAAA,IACxB,OAAO;AACL,UAAI,OAAuC;AACzC,aAAK,OAAQ,8BAA+B,KAAK,UAAUmB,SAAQ,CAAG;AAAA,MACxE;AACA,aAAO,aAAa,MAAMnB,SAAQ;AAAA,IACpC;AAAA,EACF;AAEA,WAAS,MACP,QACAA,WACA,SACA;AACA,QAAI,cAAc,WAAW,SAASA,UAAS,QAAS,8BAA+B,UAAU,GAAK;AACtG,QAAI,eAAeiB,OAAM;AAAA,MACvB,aAAa;AAAA,MACb,MAAM;AAAA,IACR,CAAC;AACD,QAAI,cAAc;AAChB,UAAI,UAAU,aAAa;AAC3B,UAAI,gBAAgB,QAAQ,QAAQ,SAAS,CAAC;AAC9C,MAAAjB,UAAS,SAAS,aAAa;AAC/B,aAAO,aAAa,eAAeA,SAAQ;AAAA,IAC7C;AACA,WAAO,aAAa,MAAMA,SAAQ;AAAA,EACpC;AAEA,WAAS,aACP,QACAA,WACA,gBACA;AACA,QAAI,UAAU,OAAO,UAAU;AAC7B,aAAO,SAAS,QAAQ,kBAAkBA,SAAQ;AAAA,IACpD;AACA,QAAI,UAAU,OAAO,SAAS;AAC5B,aAAO,MAAM,QAAQA,WAAU,OAAO,OAAO;AAAA,IAC/C;AACA,WAAO,YAAY,QAAQA,WAAU,gBAAgBF,OAAM;AAAA,EAC7D;AAEA,SAAO;AAAA,IACL,OAAOmB;AAAA,IACP,UAAUH;AAAA,IACV,WAAWE;AAAA,IACX,WAAWJ;AAAA,EACb;AACF;AAEA,SAAS,WACP,OACA,MACA,QACA;AACA,MAAI,IAAI,KAAK,MAAM,KAAK;AAExB,MAAI,CAAC,GAAG;AACN,WAAO;AAAA,EACT,WAAW,CAAC,QAAQ;AAClB,WAAO;AAAA,EACT;AAEA,WAAS,IAAI,GAAGW,OAAM,EAAE,QAAQ,IAAIA,MAAK,EAAE,GAAG;AAC5C,QAAI,MAAM,MAAM,KAAK,IAAI,CAAC;AAC1B,QAAI,KAAK;AAEP,aAAO,IAAI,QAAQ,WAAW,IAAI,OAAO,EAAE,CAAC,MAAM,WAAW,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAAA,IACjF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,kBAAmB,MAAM,QAAQ;AACxC,SAAO,YAAY,MAAM,OAAO,SAAS,OAAO,OAAO,OAAO,KAAK,IAAI;AACzE;AAKA,IAAI,OACFb,cAAa,OAAO,eAAe,OAAO,YAAY,MAClD,OAAO,cACP;AAEN,SAAS,cAAe;AACtB,SAAO,KAAK,IAAI,EAAE,QAAQ,CAAC;AAC7B;AAEA,IAAI,OAAO,YAAY;AAEvB,SAAS,cAAe;AACtB,SAAO;AACT;AAEA,SAAS,YAAa,KAAK;AACzB,SAAQ,OAAO;AACjB;AAIA,IAAI,gBAAgB,uBAAO,OAAO,IAAI;AAEtC,SAAS,cAAe;AAEtB,MAAI,uBAAuB,OAAO,SAAS;AACzC,WAAO,QAAQ,oBAAoB;AAAA,EACrC;AAMA,MAAI,kBAAkB,OAAO,SAAS,WAAW,OAAO,OAAO,SAAS;AACxE,MAAI,eAAe,OAAO,SAAS,KAAK,QAAQ,iBAAiB,EAAE;AAEnE,MAAI,YAAYP,QAAO,CAAC,GAAG,OAAO,QAAQ,KAAK;AAC/C,YAAU,MAAM,YAAY;AAC5B,SAAO,QAAQ,aAAa,WAAW,IAAI,YAAY;AACvD,SAAO,iBAAiB,YAAY,cAAc;AAClD,SAAO,WAAY;AACjB,WAAO,oBAAoB,YAAY,cAAc;AAAA,EACvD;AACF;AAEA,SAAS,aACPL,SACA,IACA,MACA,OACA;AACA,MAAI,CAACA,QAAO,KAAK;AACf;AAAA,EACF;AAEA,MAAI,WAAWA,QAAO,QAAQ;AAC9B,MAAI,CAAC,UAAU;AACb;AAAA,EACF;AAEA,MAAI,OAAuC;AACzC,WAAO,OAAO,aAAa,YAAY,mCAAmC;AAAA,EAC5E;AAGA,EAAAA,QAAO,IAAI,UAAU,WAAY;AAC/B,QAAI,WAAW,kBAAkB;AACjC,QAAI,eAAe,SAAS;AAAA,MAC1BA;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ,WAAW;AAAA,IACrB;AAEA,QAAI,CAAC,cAAc;AACjB;AAAA,IACF;AAEA,QAAI,OAAO,aAAa,SAAS,YAAY;AAC3C,mBACG,KAAK,SAAU0B,eAAc;AAC5B,yBAAkBA,eAAe,QAAQ;AAAA,MAC3C,CAAC,EACA,MAAM,SAAU,KAAK;AACpB,YAAI,OAAuC;AACzC,iBAAO,OAAO,IAAI,SAAS,CAAC;AAAA,QAC9B;AAAA,MACF,CAAC;AAAA,IACL,OAAO;AACL,uBAAiB,cAAc,QAAQ;AAAA,IACzC;AAAA,EACF,CAAC;AACH;AAEA,SAAS,qBAAsB;AAC7B,MAAI,MAAM,YAAY;AACtB,MAAI,KAAK;AACP,kBAAc,GAAG,IAAI;AAAA,MACnB,GAAG,OAAO;AAAA,MACV,GAAG,OAAO;AAAA,IACZ;AAAA,EACF;AACF;AAEA,SAAS,eAAgB,GAAG;AAC1B,qBAAmB;AACnB,MAAI,EAAE,SAAS,EAAE,MAAM,KAAK;AAC1B,gBAAY,EAAE,MAAM,GAAG;AAAA,EACzB;AACF;AAEA,SAAS,oBAAqB;AAC5B,MAAI,MAAM,YAAY;AACtB,MAAI,KAAK;AACP,WAAO,cAAc,GAAG;AAAA,EAC1B;AACF;AAEA,SAAS,mBAAoB,IAAI,QAAQ;AACvC,MAAI,QAAQ,SAAS;AACrB,MAAI,UAAU,MAAM,sBAAsB;AAC1C,MAAI,SAAS,GAAG,sBAAsB;AACtC,SAAO;AAAA,IACL,GAAG,OAAO,OAAO,QAAQ,OAAO,OAAO;AAAA,IACvC,GAAG,OAAO,MAAM,QAAQ,MAAM,OAAO;AAAA,EACvC;AACF;AAEA,SAAS,gBAAiB,KAAK;AAC7B,SAAO,SAAS,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC;AAC1C;AAEA,SAAS,kBAAmB,KAAK;AAC/B,SAAO;AAAA,IACL,GAAG,SAAS,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO;AAAA,IACpC,GAAG,SAAS,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO;AAAA,EACtC;AACF;AAEA,SAAS,gBAAiB,KAAK;AAC7B,SAAO;AAAA,IACL,GAAG,SAAS,IAAI,CAAC,IAAI,IAAI,IAAI;AAAA,IAC7B,GAAG,SAAS,IAAI,CAAC,IAAI,IAAI,IAAI;AAAA,EAC/B;AACF;AAEA,SAAS,SAAU,GAAG;AACpB,SAAO,OAAO,MAAM;AACtB;AAEA,IAAI,yBAAyB;AAE7B,SAAS,iBAAkB,cAAc,UAAU;AACjD,MAAIC,YAAW,OAAO,iBAAiB;AACvC,MAAIA,aAAY,OAAO,aAAa,aAAa,UAAU;AAGzD,QAAI,KAAK,uBAAuB,KAAK,aAAa,QAAQ,IACtD,SAAS,eAAe,aAAa,SAAS,MAAM,CAAC,CAAC,IACtD,SAAS,cAAc,aAAa,QAAQ;AAEhD,QAAI,IAAI;AACN,UAAI,SACF,aAAa,UAAU,OAAO,aAAa,WAAW,WAClD,aAAa,SACb,CAAC;AACP,eAAS,gBAAgB,MAAM;AAC/B,iBAAW,mBAAmB,IAAI,MAAM;AAAA,IAC1C,WAAW,gBAAgB,YAAY,GAAG;AACxC,iBAAW,kBAAkB,YAAY;AAAA,IAC3C;AAAA,EACF,WAAWA,aAAY,gBAAgB,YAAY,GAAG;AACpD,eAAW,kBAAkB,YAAY;AAAA,EAC3C;AAEA,MAAI,UAAU;AAEZ,QAAI,oBAAoB,SAAS,gBAAgB,OAAO;AACtD,aAAO,SAAS;AAAA,QACd,MAAM,SAAS;AAAA,QACf,KAAK,SAAS;AAAA;AAAA,QAEd,UAAU,aAAa;AAAA,MACzB,CAAC;AAAA,IACH,OAAO;AACL,aAAO,SAAS,SAAS,GAAG,SAAS,CAAC;AAAA,IACxC;AAAA,EACF;AACF;AAIA,IAAI,oBACFf,eACC,WAAY;AACX,MAAI,KAAK,OAAO,UAAU;AAE1B,OACG,GAAG,QAAQ,YAAY,MAAM,MAAM,GAAG,QAAQ,aAAa,MAAM,OAClE,GAAG,QAAQ,eAAe,MAAM,MAChC,GAAG,QAAQ,QAAQ,MAAM,MACzB,GAAG,QAAQ,eAAe,MAAM,IAChC;AACA,WAAO;AAAA,EACT;AAEA,SAAO,OAAO,WAAW,OAAO,OAAO,QAAQ,cAAc;AAC/D,GAAG;AAEL,SAAS,UAAW,KAAKgB,UAAS;AAChC,qBAAmB;AAGnB,MAAIC,WAAU,OAAO;AACrB,MAAI;AACF,QAAID,UAAS;AAEX,UAAI,YAAYvB,QAAO,CAAC,GAAGwB,SAAQ,KAAK;AACxC,gBAAU,MAAM,YAAY;AAC5B,MAAAA,SAAQ,aAAa,WAAW,IAAI,GAAG;AAAA,IACzC,OAAO;AACL,MAAAA,SAAQ,UAAU,EAAE,KAAK,YAAY,YAAY,CAAC,EAAE,GAAG,IAAI,GAAG;AAAA,IAChE;AAAA,EACF,SAAS,GAAG;AACV,WAAO,SAASD,WAAU,YAAY,QAAQ,EAAE,GAAG;AAAA,EACrD;AACF;AAEA,SAAS,aAAc,KAAK;AAC1B,YAAU,KAAK,IAAI;AACrB;AAGA,IAAI,wBAAwB;AAAA,EAC1B,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,WAAW;AAAA,EACX,YAAY;AACd;AAEA,SAAS,gCAAiC,MAAM,IAAI;AAClD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,sBAAsB;AAAA,IACrB,iCAAmC,KAAK,WAAY,WAAc;AAAA,MACjE;AAAA,IACF,IAAK;AAAA,EACP;AACF;AAEA,SAAS,gCAAiC,MAAM,IAAI;AAClD,MAAI,QAAQ;AAAA,IACV;AAAA,IACA;AAAA,IACA,sBAAsB;AAAA,IACrB,wDAA0D,KAAK,WAAY;AAAA,EAC9E;AAEA,QAAM,OAAO;AACb,SAAO;AACT;AAEA,SAAS,+BAAgC,MAAM,IAAI;AACjD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,sBAAsB;AAAA,IACrB,gCAAkC,KAAK,WAAY,WAAc,GAAG,WAAY;AAAA,EACnF;AACF;AAEA,SAAS,6BAA8B,MAAM,IAAI;AAC/C,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,sBAAsB;AAAA,IACrB,8BAAgC,KAAK,WAAY,WAAc,GAAG,WAAY;AAAA,EACjF;AACF;AAEA,SAAS,kBAAmB,MAAM,IAAIE,OAAM,SAAS;AACnD,MAAI,QAAQ,IAAI,MAAM,OAAO;AAC7B,QAAM,YAAY;AAClB,QAAM,OAAO;AACb,QAAM,KAAK;AACX,QAAM,OAAOA;AAEb,SAAO;AACT;AAEA,IAAI,kBAAkB,CAAC,UAAU,SAAS,MAAM;AAEhD,SAAS,eAAgB,IAAI;AAC3B,MAAI,OAAO,OAAO,UAAU;AAAE,WAAO;AAAA,EAAG;AACxC,MAAI,UAAU,IAAI;AAAE,WAAO,GAAG;AAAA,EAAK;AACnC,MAAI5B,YAAW,CAAC;AAChB,kBAAgB,QAAQ,SAAU,KAAK;AACrC,QAAI,OAAO,IAAI;AAAE,MAAAA,UAAS,GAAG,IAAI,GAAG,GAAG;AAAA,IAAG;AAAA,EAC5C,CAAC;AACD,SAAO,KAAK,UAAUA,WAAU,MAAM,CAAC;AACzC;AAEA,SAAS6B,SAAS,KAAK;AACrB,SAAO,OAAO,UAAU,SAAS,KAAK,GAAG,EAAE,QAAQ,OAAO,IAAI;AAChE;AAEA,SAAS,oBAAqB,KAAK,WAAW;AAC5C,SACEA,SAAQ,GAAG,KACX,IAAI,cACH,aAAa,QAAQ,IAAI,SAAS;AAEvC;AAIA,SAAS,SAAUC,QAAO,IAAI,IAAI;AAChC,MAAI,OAAO,SAAUC,QAAO;AAC1B,QAAIA,UAASD,OAAM,QAAQ;AACzB,SAAG;AAAA,IACL,OAAO;AACL,UAAIA,OAAMC,MAAK,GAAG;AAChB,WAAGD,OAAMC,MAAK,GAAG,WAAY;AAC3B,eAAKA,SAAQ,CAAC;AAAA,QAChB,CAAC;AAAA,MACH,OAAO;AACL,aAAKA,SAAQ,CAAC;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AACA,OAAK,CAAC;AACR;AAIA,SAAS,uBAAwB,SAAS;AACxC,SAAO,SAAU,IAAI,MAAMC,OAAM;AAC/B,QAAI,WAAW;AACf,QAAIC,WAAU;AACd,QAAI,QAAQ;AAEZ,sBAAkB,SAAS,SAAUC,MAAK,GAAGjB,QAAO,KAAK;AAMvD,UAAI,OAAOiB,SAAQ,cAAcA,KAAI,QAAQ,QAAW;AACtD,mBAAW;AACX,QAAAD;AAEA,YAAIE,WAAUC,MAAK,SAAU,aAAa;AACxC,cAAI,WAAW,WAAW,GAAG;AAC3B,0BAAc,YAAY;AAAA,UAC5B;AAEA,UAAAF,KAAI,WAAW,OAAO,gBAAgB,aAClC,cACA,KAAK,OAAO,WAAW;AAC3B,UAAAjB,OAAM,WAAW,GAAG,IAAI;AACxB,UAAAgB;AACA,cAAIA,YAAW,GAAG;AAChB,YAAAD,MAAK;AAAA,UACP;AAAA,QACF,CAAC;AAED,YAAI,SAASI,MAAK,SAAU,QAAQ;AAClC,cAAI,MAAM,uCAAuC,MAAM,OAAO;AAE9D,cAAI,CAAC,OAAO;AACV,oBAAQP,SAAQ,MAAM,IAClB,SACA,IAAI,MAAM,GAAG;AACjB,YAAAG,MAAK,KAAK;AAAA,UACZ;AAAA,QACF,CAAC;AAED,YAAI;AACJ,YAAI;AACF,gBAAME,KAAIC,UAAS,MAAM;AAAA,QAC3B,SAAS,GAAG;AACV,iBAAO,CAAC;AAAA,QACV;AACA,YAAI,KAAK;AACP,cAAI,OAAO,IAAI,SAAS,YAAY;AAClC,gBAAI,KAAKA,UAAS,MAAM;AAAA,UAC1B,OAAO;AAEL,gBAAI,OAAO,IAAI;AACf,gBAAI,QAAQ,OAAO,KAAK,SAAS,YAAY;AAC3C,mBAAK,KAAKA,UAAS,MAAM;AAAA,YAC3B;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AAED,QAAI,CAAC,UAAU;AAAE,MAAAH,MAAK;AAAA,IAAG;AAAA,EAC3B;AACF;AAEA,SAAS,kBACP,SACA,IACA;AACA,SAAO,QAAQ,QAAQ,IAAI,SAAU,GAAG;AACtC,WAAO,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,SAAU,KAAK;AAAE,aAAO;AAAA,QAC3D,EAAE,WAAW,GAAG;AAAA,QAChB,EAAE,UAAU,GAAG;AAAA,QACf;AAAA,QAAG;AAAA,MACL;AAAA,IAAG,CAAC;AAAA,EACN,CAAC,CAAC;AACJ;AAEA,SAAS,QAAS,KAAK;AACrB,SAAO,MAAM,UAAU,OAAO,MAAM,CAAC,GAAG,GAAG;AAC7C;AAEA,IAAIK,aACF,OAAO,WAAW,cAClB,OAAO,OAAO,gBAAgB;AAEhC,SAAS,WAAY,KAAK;AACxB,SAAO,IAAI,cAAeA,cAAa,IAAI,OAAO,WAAW,MAAM;AACrE;AAMA,SAASD,MAAM,IAAI;AACjB,MAAI,SAAS;AACb,SAAO,WAAY;AACjB,QAAI,OAAO,CAAC,GAAGb,OAAM,UAAU;AAC/B,WAAQA,OAAQ,MAAMA,IAAI,IAAI,UAAWA,IAAI;AAE7C,QAAI,QAAQ;AAAE;AAAA,IAAO;AACrB,aAAS;AACT,WAAO,GAAG,MAAM,MAAM,IAAI;AAAA,EAC5B;AACF;AAIA,IAAI,UAAU,SAASe,SAASxC,SAAQ,MAAM;AAC5C,OAAK,SAASA;AACd,OAAK,OAAO,cAAc,IAAI;AAE9B,OAAK,UAAU;AACf,OAAK,UAAU;AACf,OAAK,QAAQ;AACb,OAAK,WAAW,CAAC;AACjB,OAAK,gBAAgB,CAAC;AACtB,OAAK,WAAW,CAAC;AACjB,OAAK,YAAY,CAAC;AACpB;AAEA,QAAQ,UAAU,SAAS,SAAS,OAAQ,IAAI;AAC9C,OAAK,KAAK;AACZ;AAEA,QAAQ,UAAU,UAAU,SAAS,QAAS,IAAI,SAAS;AACzD,MAAI,KAAK,OAAO;AACd,OAAG;AAAA,EACL,OAAO;AACL,SAAK,SAAS,KAAK,EAAE;AACrB,QAAI,SAAS;AACX,WAAK,cAAc,KAAK,OAAO;AAAA,IACjC;AAAA,EACF;AACF;AAEA,QAAQ,UAAU,UAAU,SAAS,QAAS,SAAS;AACrD,OAAK,SAAS,KAAK,OAAO;AAC5B;AAEA,QAAQ,UAAU,eAAe,SAAS,aACxCE,WACA,YACA,SACA;AACE,MAAI,WAAW;AAEjB,MAAI;AAEJ,MAAI;AACF,YAAQ,KAAK,OAAO,MAAMA,WAAU,KAAK,OAAO;AAAA,EAClD,SAAS,GAAG;AACV,SAAK,SAAS,QAAQ,SAAU,IAAI;AAClC,SAAG,CAAC;AAAA,IACN,CAAC;AAED,UAAM;AAAA,EACR;AACA,MAAI,OAAO,KAAK;AAChB,OAAK;AAAA,IACH;AAAA,IACA,WAAY;AACV,eAAS,YAAY,KAAK;AAC1B,oBAAc,WAAW,KAAK;AAC9B,eAAS,UAAU;AACnB,eAAS,OAAO,WAAW,QAAQ,SAAU,MAAM;AACjD,gBAAQ,KAAK,OAAO,IAAI;AAAA,MAC1B,CAAC;AAGD,UAAI,CAAC,SAAS,OAAO;AACnB,iBAAS,QAAQ;AACjB,iBAAS,SAAS,QAAQ,SAAU,IAAI;AACtC,aAAG,KAAK;AAAA,QACV,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,SAAU,KAAK;AACb,UAAI,SAAS;AACX,gBAAQ,GAAG;AAAA,MACb;AACA,UAAI,OAAO,CAAC,SAAS,OAAO;AAK1B,YAAI,CAAC,oBAAoB,KAAK,sBAAsB,UAAU,KAAK,SAAS,OAAO;AACjF,mBAAS,QAAQ;AACjB,mBAAS,cAAc,QAAQ,SAAU,IAAI;AAC3C,eAAG,GAAG;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,QAAQ,UAAU,oBAAoB,SAAS,kBAAmB,OAAO,YAAY,SAAS;AAC1F,MAAI,WAAW;AAEjB,MAAI,UAAU,KAAK;AACnB,OAAK,UAAU;AACf,MAAI,QAAQ,SAAU,KAAK;AAIzB,QAAI,CAAC,oBAAoB,GAAG,KAAK6B,SAAQ,GAAG,GAAG;AAC7C,UAAI,SAAS,SAAS,QAAQ;AAC5B,iBAAS,SAAS,QAAQ,SAAU,IAAI;AACtC,aAAG,GAAG;AAAA,QACR,CAAC;AAAA,MACH,OAAO;AACL,YAAI,OAAuC;AACzC,eAAK,OAAO,yCAAyC;AAAA,QACvD;AACA,gBAAQ,MAAM,GAAG;AAAA,MACnB;AAAA,IACF;AACA,eAAW,QAAQ,GAAG;AAAA,EACxB;AACA,MAAI,iBAAiB,MAAM,QAAQ,SAAS;AAC5C,MAAI,mBAAmB,QAAQ,QAAQ,SAAS;AAChD,MACE,YAAY,OAAO,OAAO;AAAA,EAE1B,mBAAmB,oBACnB,MAAM,QAAQ,cAAc,MAAM,QAAQ,QAAQ,gBAAgB,GAClE;AACA,SAAK,UAAU;AACf,QAAI,MAAM,MAAM;AACd,mBAAa,KAAK,QAAQ,SAAS,OAAO,KAAK;AAAA,IACjD;AACA,WAAO,MAAM,gCAAgC,SAAS,KAAK,CAAC;AAAA,EAC9D;AAEA,MAAI9B,OAAM;AAAA,IACR,KAAK,QAAQ;AAAA,IACb,MAAM;AAAA,EACR;AACE,MAAI,UAAUA,KAAI;AAClB,MAAI,cAAcA,KAAI;AACtB,MAAI,YAAYA,KAAI;AAEtB,MAAI+B,SAAQ,CAAC,EAAE;AAAA;AAAA,IAEb,mBAAmB,WAAW;AAAA;AAAA,IAE9B,KAAK,OAAO;AAAA;AAAA,IAEZ,mBAAmB,OAAO;AAAA;AAAA,IAE1B,UAAU,IAAI,SAAU,GAAG;AAAE,aAAO,EAAE;AAAA,IAAa,CAAC;AAAA;AAAA,IAEpD,uBAAuB,SAAS;AAAA,EAClC;AAEA,MAAIS,YAAW,SAAU,MAAMP,OAAM;AACnC,QAAI,SAAS,YAAY,OAAO;AAC9B,aAAO,MAAM,+BAA+B,SAAS,KAAK,CAAC;AAAA,IAC7D;AACA,QAAI;AACF,WAAK,OAAO,SAAS,SAAU,IAAI;AACjC,YAAI,OAAO,OAAO;AAEhB,mBAAS,UAAU,IAAI;AACvB,gBAAM,6BAA6B,SAAS,KAAK,CAAC;AAAA,QACpD,WAAWH,SAAQ,EAAE,GAAG;AACtB,mBAAS,UAAU,IAAI;AACvB,gBAAM,EAAE;AAAA,QACV,WACE,OAAO,OAAO,YACb,OAAO,OAAO,aACZ,OAAO,GAAG,SAAS,YAAY,OAAO,GAAG,SAAS,WACrD;AAEA,gBAAM,gCAAgC,SAAS,KAAK,CAAC;AACrD,cAAI,OAAO,OAAO,YAAY,GAAG,SAAS;AACxC,qBAAS,QAAQ,EAAE;AAAA,UACrB,OAAO;AACL,qBAAS,KAAK,EAAE;AAAA,UAClB;AAAA,QACF,OAAO;AAEL,UAAAG,MAAK,EAAE;AAAA,QACT;AAAA,MACF,CAAC;AAAA,IACH,SAAS,GAAG;AACV,YAAM,CAAC;AAAA,IACT;AAAA,EACF;AAEA,WAASF,QAAOS,WAAU,WAAY;AAGpC,QAAI,cAAc,mBAAmB,SAAS;AAC9C,QAAIT,SAAQ,YAAY,OAAO,SAAS,OAAO,YAAY;AAC3D,aAASA,QAAOS,WAAU,WAAY;AACpC,UAAI,SAAS,YAAY,OAAO;AAC9B,eAAO,MAAM,+BAA+B,SAAS,KAAK,CAAC;AAAA,MAC7D;AACA,eAAS,UAAU;AACnB,iBAAW,KAAK;AAChB,UAAI,SAAS,OAAO,KAAK;AACvB,iBAAS,OAAO,IAAI,UAAU,WAAY;AACxC,6BAAmB,KAAK;AAAA,QAC1B,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AACH;AAEA,QAAQ,UAAU,cAAc,SAAS,YAAa,OAAO;AAC3D,OAAK,UAAU;AACf,OAAK,MAAM,KAAK,GAAG,KAAK;AAC1B;AAEA,QAAQ,UAAU,iBAAiB,SAAS,iBAAkB;AAE9D;AAEA,QAAQ,UAAU,WAAW,SAAS,WAAY;AAGhD,OAAK,UAAU,QAAQ,SAAU,iBAAiB;AAChD,oBAAgB;AAAA,EAClB,CAAC;AACD,OAAK,YAAY,CAAC;AAIlB,OAAK,UAAU;AACf,OAAK,UAAU;AACjB;AAEA,SAAS,cAAe,MAAM;AAC5B,MAAI,CAAC,MAAM;AACT,QAAI7B,YAAW;AAEb,UAAI,SAAS,SAAS,cAAc,MAAM;AAC1C,aAAQ,UAAU,OAAO,aAAa,MAAM,KAAM;AAElD,aAAO,KAAK,QAAQ,sBAAsB,EAAE;AAAA,IAC9C,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAEA,MAAI,KAAK,OAAO,CAAC,MAAM,KAAK;AAC1B,WAAO,MAAM;AAAA,EACf;AAEA,SAAO,KAAK,QAAQ,OAAO,EAAE;AAC/B;AAEA,SAAS,aACP,SACAsB,OACA;AACA,MAAI;AACJ,MAAIQ,OAAM,KAAK,IAAI,QAAQ,QAAQR,MAAK,MAAM;AAC9C,OAAK,IAAI,GAAG,IAAIQ,MAAK,KAAK;AACxB,QAAI,QAAQ,CAAC,MAAMR,MAAK,CAAC,GAAG;AAC1B;AAAA,IACF;AAAA,EACF;AACA,SAAO;AAAA,IACL,SAASA,MAAK,MAAM,GAAG,CAAC;AAAA,IACxB,WAAWA,MAAK,MAAM,CAAC;AAAA,IACvB,aAAa,QAAQ,MAAM,CAAC;AAAA,EAC9B;AACF;AAEA,SAAS,cACP,SACA,MACAS,OACA,SACA;AACA,MAAI,SAAS,kBAAkB,SAAS,SAAUP,MAAK,UAAUjB,QAAO,KAAK;AAC3E,QAAI,QAAQ,aAAaiB,MAAK,IAAI;AAClC,QAAI,OAAO;AACT,aAAO,MAAM,QAAQ,KAAK,IACtB,MAAM,IAAI,SAAUQ,QAAO;AAAE,eAAOD,MAAKC,QAAO,UAAUzB,QAAO,GAAG;AAAA,MAAG,CAAC,IACxEwB,MAAK,OAAO,UAAUxB,QAAO,GAAG;AAAA,IACtC;AAAA,EACF,CAAC;AACD,SAAO,QAAQ,UAAU,OAAO,QAAQ,IAAI,MAAM;AACpD;AAEA,SAAS,aACPiB,MACA,KACA;AACA,MAAI,OAAOA,SAAQ,YAAY;AAE7B,IAAAA,OAAM,KAAK,OAAOA,IAAG;AAAA,EACvB;AACA,SAAOA,KAAI,QAAQ,GAAG;AACxB;AAEA,SAAS,mBAAoB,aAAa;AACxC,SAAO,cAAc,aAAa,oBAAoB,WAAW,IAAI;AACvE;AAEA,SAAS,mBAAoB,SAAS;AACpC,SAAO,cAAc,SAAS,qBAAqB,SAAS;AAC9D;AAEA,SAAS,UAAW,OAAO,UAAU;AACnC,MAAI,UAAU;AACZ,WAAO,SAAS,kBAAmB;AACjC,aAAO,MAAM,MAAM,UAAU,SAAS;AAAA,IACxC;AAAA,EACF;AACF;AAEA,SAAS,mBACP,WACA;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,SAAU,OAAO,GAAGjB,QAAO,KAAK;AAC9B,aAAO,eAAe,OAAOA,QAAO,GAAG;AAAA,IACzC;AAAA,EACF;AACF;AAEA,SAAS,eACP,OACAA,QACA,KACA;AACA,SAAO,SAAS,gBAAiB,IAAI,MAAMe,OAAM;AAC/C,WAAO,MAAM,IAAI,MAAM,SAAU,IAAI;AACnC,UAAI,OAAO,OAAO,YAAY;AAC5B,YAAI,CAACf,OAAM,WAAW,GAAG,GAAG;AAC1B,UAAAA,OAAM,WAAW,GAAG,IAAI,CAAC;AAAA,QAC3B;AACA,QAAAA,OAAM,WAAW,GAAG,EAAE,KAAK,EAAE;AAAA,MAC/B;AACA,MAAAe,MAAK,EAAE;AAAA,IACT,CAAC;AAAA,EACH;AACF;AAIA,IAAI,eAA6B,0BAAUM,UAAS;AAClD,WAASK,cAAc7C,SAAQ,MAAM;AACnC,IAAAwC,SAAQ,KAAK,MAAMxC,SAAQ,IAAI;AAE/B,SAAK,iBAAiB,YAAY,KAAK,IAAI;AAAA,EAC7C;AAEA,MAAKwC,SAAU,CAAAK,cAAa,YAAYL;AACxC,EAAAK,cAAa,YAAY,OAAO,OAAQL,YAAWA,SAAQ,SAAU;AACrE,EAAAK,cAAa,UAAU,cAAcA;AAErC,EAAAA,cAAa,UAAU,iBAAiB,SAASC,kBAAkB;AACjE,QAAI,WAAW;AAEf,QAAI,KAAK,UAAU,SAAS,GAAG;AAC7B;AAAA,IACF;AAEA,QAAI9C,UAAS,KAAK;AAClB,QAAI,eAAeA,QAAO,QAAQ;AAClC,QAAI,iBAAiB,qBAAqB;AAE1C,QAAI,gBAAgB;AAClB,WAAK,UAAU,KAAK,YAAY,CAAC;AAAA,IACnC;AAEA,QAAI,qBAAqB,WAAY;AACnC,UAAI,UAAU,SAAS;AAIvB,UAAIE,YAAW,YAAY,SAAS,IAAI;AACxC,UAAI,SAAS,YAAY,SAASA,cAAa,SAAS,gBAAgB;AACtE;AAAA,MACF;AAEA,eAAS,aAAaA,WAAU,SAAU,OAAO;AAC/C,YAAI,gBAAgB;AAClB,uBAAaF,SAAQ,OAAO,SAAS,IAAI;AAAA,QAC3C;AAAA,MACF,CAAC;AAAA,IACH;AACA,WAAO,iBAAiB,YAAY,kBAAkB;AACtD,SAAK,UAAU,KAAK,WAAY;AAC9B,aAAO,oBAAoB,YAAY,kBAAkB;AAAA,IAC3D,CAAC;AAAA,EACH;AAEA,EAAA6C,cAAa,UAAU,KAAK,SAASE,IAAI,GAAG;AAC1C,WAAO,QAAQ,GAAG,CAAC;AAAA,EACrB;AAEA,EAAAF,cAAa,UAAU,OAAO,SAASG,MAAM9C,WAAU,YAAY,SAAS;AAC1E,QAAI,WAAW;AAEf,QAAID,OAAM;AACV,QAAI,YAAYA,KAAI;AACpB,SAAK,aAAaC,WAAU,SAAU,OAAO;AAC3C,gBAAU,UAAU,SAAS,OAAO,MAAM,QAAQ,CAAC;AACnD,mBAAa,SAAS,QAAQ,OAAO,WAAW,KAAK;AACrD,oBAAc,WAAW,KAAK;AAAA,IAChC,GAAG,OAAO;AAAA,EACZ;AAEA,EAAA2C,cAAa,UAAU,UAAU,SAASjB,SAAS1B,WAAU,YAAY,SAAS;AAChF,QAAI,WAAW;AAEf,QAAID,OAAM;AACV,QAAI,YAAYA,KAAI;AACpB,SAAK,aAAaC,WAAU,SAAU,OAAO;AAC3C,mBAAa,UAAU,SAAS,OAAO,MAAM,QAAQ,CAAC;AACtD,mBAAa,SAAS,QAAQ,OAAO,WAAW,KAAK;AACrD,oBAAc,WAAW,KAAK;AAAA,IAChC,GAAG,OAAO;AAAA,EACZ;AAEA,EAAA2C,cAAa,UAAU,YAAY,SAAS,UAAWG,OAAM;AAC3D,QAAI,YAAY,KAAK,IAAI,MAAM,KAAK,QAAQ,UAAU;AACpD,UAAI,UAAU,UAAU,KAAK,OAAO,KAAK,QAAQ,QAAQ;AACzD,MAAAA,QAAO,UAAU,OAAO,IAAI,aAAa,OAAO;AAAA,IAClD;AAAA,EACF;AAEA,EAAAH,cAAa,UAAU,qBAAqB,SAAS,qBAAsB;AACzE,WAAO,YAAY,KAAK,IAAI;AAAA,EAC9B;AAEA,SAAOA;AACT,GAAE,OAAO;AAET,SAAS,YAAa,MAAM;AAC1B,MAAI,OAAO,OAAO,SAAS;AAC3B,MAAI,gBAAgB,KAAK,YAAY;AACrC,MAAI,gBAAgB,KAAK,YAAY;AAIrC,MAAI,SAAU,kBAAkB,iBAC7B,cAAc,QAAQ,UAAU,gBAAgB,GAAG,CAAC,MAAM,IAAK;AAChE,WAAO,KAAK,MAAM,KAAK,MAAM;AAAA,EAC/B;AACA,UAAQ,QAAQ,OAAO,OAAO,SAAS,SAAS,OAAO,SAAS;AAClE;AAIA,IAAI,cAA4B,0BAAUL,UAAS;AACjD,WAASS,aAAajD,SAAQ,MAAM,UAAU;AAC5C,IAAAwC,SAAQ,KAAK,MAAMxC,SAAQ,IAAI;AAE/B,QAAI,YAAY,cAAc,KAAK,IAAI,GAAG;AACxC;AAAA,IACF;AACA,gBAAY;AAAA,EACd;AAEA,MAAKwC,SAAU,CAAAS,aAAY,YAAYT;AACvC,EAAAS,aAAY,YAAY,OAAO,OAAQT,YAAWA,SAAQ,SAAU;AACpE,EAAAS,aAAY,UAAU,cAAcA;AAIpC,EAAAA,aAAY,UAAU,iBAAiB,SAASH,kBAAkB;AAChE,QAAI,WAAW;AAEf,QAAI,KAAK,UAAU,SAAS,GAAG;AAC7B;AAAA,IACF;AAEA,QAAI9C,UAAS,KAAK;AAClB,QAAI,eAAeA,QAAO,QAAQ;AAClC,QAAI,iBAAiB,qBAAqB;AAE1C,QAAI,gBAAgB;AAClB,WAAK,UAAU,KAAK,YAAY,CAAC;AAAA,IACnC;AAEA,QAAI,qBAAqB,WAAY;AACnC,UAAI,UAAU,SAAS;AACvB,UAAI,CAAC,YAAY,GAAG;AAClB;AAAA,MACF;AACA,eAAS,aAAa,QAAQ,GAAG,SAAU,OAAO;AAChD,YAAI,gBAAgB;AAClB,uBAAa,SAAS,QAAQ,OAAO,SAAS,IAAI;AAAA,QACpD;AACA,YAAI,CAAC,mBAAmB;AACtB,sBAAY,MAAM,QAAQ;AAAA,QAC5B;AAAA,MACF,CAAC;AAAA,IACH;AACA,QAAI,YAAY,oBAAoB,aAAa;AACjD,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AACA,SAAK,UAAU,KAAK,WAAY;AAC9B,aAAO,oBAAoB,WAAW,kBAAkB;AAAA,IAC1D,CAAC;AAAA,EACH;AAEA,EAAAiD,aAAY,UAAU,OAAO,SAASD,MAAM9C,WAAU,YAAY,SAAS;AACzE,QAAI,WAAW;AAEf,QAAID,OAAM;AACV,QAAI,YAAYA,KAAI;AACpB,SAAK;AAAA,MACHC;AAAA,MACA,SAAU,OAAO;AACf,iBAAS,MAAM,QAAQ;AACvB,qBAAa,SAAS,QAAQ,OAAO,WAAW,KAAK;AACrD,sBAAc,WAAW,KAAK;AAAA,MAChC;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,EAAA+C,aAAY,UAAU,UAAU,SAASrB,SAAS1B,WAAU,YAAY,SAAS;AAC/E,QAAI,WAAW;AAEf,QAAID,OAAM;AACV,QAAI,YAAYA,KAAI;AACpB,SAAK;AAAA,MACHC;AAAA,MACA,SAAU,OAAO;AACf,oBAAY,MAAM,QAAQ;AAC1B,qBAAa,SAAS,QAAQ,OAAO,WAAW,KAAK;AACrD,sBAAc,WAAW,KAAK;AAAA,MAChC;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,EAAA+C,aAAY,UAAU,KAAK,SAASF,IAAI,GAAG;AACzC,WAAO,QAAQ,GAAG,CAAC;AAAA,EACrB;AAEA,EAAAE,aAAY,UAAU,YAAY,SAAS,UAAWD,OAAM;AAC1D,QAAI,UAAU,KAAK,QAAQ;AAC3B,QAAI,QAAQ,MAAM,SAAS;AACzB,MAAAA,QAAO,SAAS,OAAO,IAAI,YAAY,OAAO;AAAA,IAChD;AAAA,EACF;AAEA,EAAAC,aAAY,UAAU,qBAAqB,SAAS,qBAAsB;AACxE,WAAO,QAAQ;AAAA,EACjB;AAEA,SAAOA;AACT,GAAE,OAAO;AAET,SAAS,cAAe,MAAM;AAC5B,MAAI/C,YAAW,YAAY,IAAI;AAC/B,MAAI,CAAC,OAAO,KAAKA,SAAQ,GAAG;AAC1B,WAAO,SAAS,QAAQ,UAAU,OAAO,OAAOA,SAAQ,CAAC;AACzD,WAAO;AAAA,EACT;AACF;AAEA,SAAS,cAAe;AACtB,MAAI,OAAO,QAAQ;AACnB,MAAI,KAAK,OAAO,CAAC,MAAM,KAAK;AAC1B,WAAO;AAAA,EACT;AACA,cAAY,MAAM,IAAI;AACtB,SAAO;AACT;AAEA,SAAS,UAAW;AAGlB,MAAI,OAAO,OAAO,SAAS;AAC3B,MAAI+B,SAAQ,KAAK,QAAQ,GAAG;AAE5B,MAAIA,SAAQ,GAAG;AAAE,WAAO;AAAA,EAAG;AAE3B,SAAO,KAAK,MAAMA,SAAQ,CAAC;AAE3B,SAAO;AACT;AAEA,SAAS,OAAQ,MAAM;AACrB,MAAI,OAAO,OAAO,SAAS;AAC3B,MAAI,IAAI,KAAK,QAAQ,GAAG;AACxB,MAAI,OAAO,KAAK,IAAI,KAAK,MAAM,GAAG,CAAC,IAAI;AACvC,SAAQ,OAAO,MAAM;AACvB;AAEA,SAAS,SAAU,MAAM;AACvB,MAAI,mBAAmB;AACrB,cAAU,OAAO,IAAI,CAAC;AAAA,EACxB,OAAO;AACL,WAAO,SAAS,OAAO;AAAA,EACzB;AACF;AAEA,SAAS,YAAa,MAAM;AAC1B,MAAI,mBAAmB;AACrB,iBAAa,OAAO,IAAI,CAAC;AAAA,EAC3B,OAAO;AACL,WAAO,SAAS,QAAQ,OAAO,IAAI,CAAC;AAAA,EACtC;AACF;AAIA,IAAI,kBAAgC,0BAAUO,UAAS;AACrD,WAASU,iBAAiBlD,SAAQ,MAAM;AACtC,IAAAwC,SAAQ,KAAK,MAAMxC,SAAQ,IAAI;AAC/B,SAAK,QAAQ,CAAC;AACd,SAAK,QAAQ;AAAA,EACf;AAEA,MAAKwC,SAAU,CAAAU,iBAAgB,YAAYV;AAC3C,EAAAU,iBAAgB,YAAY,OAAO,OAAQV,YAAWA,SAAQ,SAAU;AACxE,EAAAU,iBAAgB,UAAU,cAAcA;AAExC,EAAAA,iBAAgB,UAAU,OAAO,SAASF,MAAM9C,WAAU,YAAY,SAAS;AAC7E,QAAI,WAAW;AAEf,SAAK;AAAA,MACHA;AAAA,MACA,SAAU,OAAO;AACf,iBAAS,QAAQ,SAAS,MAAM,MAAM,GAAG,SAAS,QAAQ,CAAC,EAAE,OAAO,KAAK;AACzE,iBAAS;AACT,sBAAc,WAAW,KAAK;AAAA,MAChC;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,EAAAgD,iBAAgB,UAAU,UAAU,SAAStB,SAAS1B,WAAU,YAAY,SAAS;AACnF,QAAI,WAAW;AAEf,SAAK;AAAA,MACHA;AAAA,MACA,SAAU,OAAO;AACf,iBAAS,QAAQ,SAAS,MAAM,MAAM,GAAG,SAAS,KAAK,EAAE,OAAO,KAAK;AACrE,sBAAc,WAAW,KAAK;AAAA,MAChC;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,EAAAgD,iBAAgB,UAAU,KAAK,SAASH,IAAI,GAAG;AAC7C,QAAI,WAAW;AAEf,QAAI,cAAc,KAAK,QAAQ;AAC/B,QAAI,cAAc,KAAK,eAAe,KAAK,MAAM,QAAQ;AACvD;AAAA,IACF;AACA,QAAI,QAAQ,KAAK,MAAM,WAAW;AAClC,SAAK;AAAA,MACH;AAAA,MACA,WAAY;AACV,YAAI,OAAO,SAAS;AACpB,iBAAS,QAAQ;AACjB,iBAAS,YAAY,KAAK;AAC1B,iBAAS,OAAO,WAAW,QAAQ,SAAU,MAAM;AACjD,kBAAQ,KAAK,OAAO,IAAI;AAAA,QAC1B,CAAC;AAAA,MACH;AAAA,MACA,SAAU,KAAK;AACb,YAAI,oBAAoB,KAAK,sBAAsB,UAAU,GAAG;AAC9D,mBAAS,QAAQ;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,EAAAG,iBAAgB,UAAU,qBAAqB,SAAS,qBAAsB;AAC5E,QAAI,UAAU,KAAK,MAAM,KAAK,MAAM,SAAS,CAAC;AAC9C,WAAO,UAAU,QAAQ,WAAW;AAAA,EACtC;AAEA,EAAAA,iBAAgB,UAAU,YAAY,SAAS,YAAa;AAAA,EAE5D;AAEA,SAAOA;AACT,GAAE,OAAO;AAMT,IAAI,YAAY,SAASC,WAAW,SAAS;AAC3C,MAAK,YAAY,OAAS,WAAU,CAAC;AAErC,MAAI,OAAuC;AACzC,SAAK,gBAAgBA,YAAW,8CAA8C;AAAA,EAChF;AACA,OAAK,MAAM;AACX,OAAK,OAAO,CAAC;AACb,OAAK,UAAU;AACf,OAAK,cAAc,CAAC;AACpB,OAAK,eAAe,CAAC;AACrB,OAAK,aAAa,CAAC;AACnB,OAAK,UAAU,cAAc,QAAQ,UAAU,CAAC,GAAG,IAAI;AAEvD,MAAI,OAAO,QAAQ,QAAQ;AAC3B,OAAK,WACH,SAAS,aAAa,CAAC,qBAAqB,QAAQ,aAAa;AACnE,MAAI,KAAK,UAAU;AACjB,WAAO;AAAA,EACT;AACA,MAAI,CAACvC,YAAW;AACd,WAAO;AAAA,EACT;AACA,OAAK,OAAO;AAEZ,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,WAAK,UAAU,IAAI,aAAa,MAAM,QAAQ,IAAI;AAClD;AAAA,IACF,KAAK;AACH,WAAK,UAAU,IAAI,YAAY,MAAM,QAAQ,MAAM,KAAK,QAAQ;AAChE;AAAA,IACF,KAAK;AACH,WAAK,UAAU,IAAI,gBAAgB,MAAM,QAAQ,IAAI;AACrD;AAAA,IACF;AACE,UAAI,OAAuC;AACzC,eAAO,OAAQ,mBAAmB,IAAK;AAAA,MACzC;AAAA,EACJ;AACF;AAEA,IAAI,qBAAqB,EAAE,cAAc,EAAE,cAAc,KAAK,EAAE;AAEhE,UAAU,UAAU,QAAQ,SAAS,MAAO,KAAK,SAAS,gBAAgB;AACxE,SAAO,KAAK,QAAQ,MAAM,KAAK,SAAS,cAAc;AACxD;AAEA,mBAAmB,aAAa,MAAM,WAAY;AAChD,SAAO,KAAK,WAAW,KAAK,QAAQ;AACtC;AAEA,UAAU,UAAU,OAAO,SAASwC,MAAM,KAAkC;AACxE,MAAI,WAAW;AASjB,OAAK,KAAK,KAAK,GAAG;AAIlB,MAAI,MAAM,kBAAkB,WAAY;AAEtC,QAAInB,SAAQ,SAAS,KAAK,QAAQ,GAAG;AACrC,QAAIA,SAAQ,IAAI;AAAE,eAAS,KAAK,OAAOA,QAAO,CAAC;AAAA,IAAG;AAGlD,QAAI,SAAS,QAAQ,KAAK;AAAE,eAAS,MAAM,SAAS,KAAK,CAAC,KAAK;AAAA,IAAM;AAErE,QAAI,CAAC,SAAS,KAAK;AAAE,eAAS,QAAQ,SAAS;AAAA,IAAG;AAAA,EACpD,CAAC;AAID,MAAI,KAAK,KAAK;AACZ;AAAA,EACF;AAEA,OAAK,MAAM;AAEX,MAAIJ,WAAU,KAAK;AAEnB,MAAIA,oBAAmB,gBAAgBA,oBAAmB,aAAa;AACrE,QAAI,sBAAsB,SAAU,cAAc;AAChD,UAAI,OAAOA,SAAQ;AACnB,UAAI,eAAe,SAAS,QAAQ;AACpC,UAAI,iBAAiB,qBAAqB;AAE1C,UAAI,kBAAkB,cAAc,cAAc;AAChD,qBAAa,UAAU,cAAc,MAAM,KAAK;AAAA,MAClD;AAAA,IACF;AACA,QAAIiB,kBAAiB,SAAU,cAAc;AAC3C,MAAAjB,SAAQ,eAAe;AACvB,0BAAoB,YAAY;AAAA,IAClC;AACA,IAAAA,SAAQ;AAAA,MACNA,SAAQ,mBAAmB;AAAA,MAC3BiB;AAAA,MACAA;AAAA,IACF;AAAA,EACF;AAEA,EAAAjB,SAAQ,OAAO,SAAU,OAAO;AAC9B,aAAS,KAAK,QAAQ,SAAUwB,MAAK;AACnC,MAAAA,KAAI,SAAS;AAAA,IACf,CAAC;AAAA,EACH,CAAC;AACH;AAEA,UAAU,UAAU,aAAa,SAAS,WAAY,IAAI;AACxD,SAAO,aAAa,KAAK,aAAa,EAAE;AAC1C;AAEA,UAAU,UAAU,gBAAgB,SAAS,cAAe,IAAI;AAC9D,SAAO,aAAa,KAAK,cAAc,EAAE;AAC3C;AAEA,UAAU,UAAU,YAAY,SAAS,UAAW,IAAI;AACtD,SAAO,aAAa,KAAK,YAAY,EAAE;AACzC;AAEA,UAAU,UAAU,UAAU,SAASC,SAAS,IAAI,SAAS;AAC3D,OAAK,QAAQ,QAAQ,IAAI,OAAO;AAClC;AAEA,UAAU,UAAU,UAAU,SAASC,SAAS,SAAS;AACvD,OAAK,QAAQ,QAAQ,OAAO;AAC9B;AAEA,UAAU,UAAU,OAAO,SAAS,KAAMrD,WAAU,YAAY,SAAS;AACrE,MAAI,WAAW;AAGjB,MAAI,CAAC,cAAc,CAAC,WAAW,OAAO,YAAY,aAAa;AAC7D,WAAO,IAAI,QAAQ,SAAUmC,UAAS,QAAQ;AAC5C,eAAS,QAAQ,KAAKnC,WAAUmC,UAAS,MAAM;AAAA,IACjD,CAAC;AAAA,EACH,OAAO;AACL,SAAK,QAAQ,KAAKnC,WAAU,YAAY,OAAO;AAAA,EACjD;AACF;AAEA,UAAU,UAAU,UAAU,SAAS,QAASA,WAAU,YAAY,SAAS;AAC3E,MAAI,WAAW;AAGjB,MAAI,CAAC,cAAc,CAAC,WAAW,OAAO,YAAY,aAAa;AAC7D,WAAO,IAAI,QAAQ,SAAUmC,UAAS,QAAQ;AAC5C,eAAS,QAAQ,QAAQnC,WAAUmC,UAAS,MAAM;AAAA,IACpD,CAAC;AAAA,EACH,OAAO;AACL,SAAK,QAAQ,QAAQnC,WAAU,YAAY,OAAO;AAAA,EACpD;AACF;AAEA,UAAU,UAAU,KAAK,SAAS,GAAI,GAAG;AACvC,OAAK,QAAQ,GAAG,CAAC;AACnB;AAEA,UAAU,UAAU,OAAO,SAAS,OAAQ;AAC1C,OAAK,GAAG,EAAE;AACZ;AAEA,UAAU,UAAU,UAAU,SAAS,UAAW;AAChD,OAAK,GAAG,CAAC;AACX;AAEA,UAAU,UAAU,uBAAuB,SAAS,qBAAsB,IAAI;AAC5E,MAAI,QAAQ,KACR,GAAG,UACD,KACA,KAAK,QAAQ,EAAE,EAAE,QACnB,KAAK;AACT,MAAI,CAAC,OAAO;AACV,WAAO,CAAC;AAAA,EACV;AACA,SAAO,CAAC,EAAE,OAAO;AAAA,IACf,CAAC;AAAA,IACD,MAAM,QAAQ,IAAI,SAAU,GAAG;AAC7B,aAAO,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,SAAU,KAAK;AAClD,eAAO,EAAE,WAAW,GAAG;AAAA,MACzB,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;AAEA,UAAU,UAAU,UAAU,SAAS,QACrC,IACA,SACAsD,SACA;AACA,YAAU,WAAW,KAAK,QAAQ;AAClC,MAAItD,YAAW,kBAAkB,IAAI,SAASsD,SAAQ,IAAI;AAC1D,MAAI,QAAQ,KAAK,MAAMtD,WAAU,OAAO;AACxC,MAAI,WAAW,MAAM,kBAAkB,MAAM;AAC7C,MAAI,OAAO,KAAK,QAAQ;AACxB,MAAI,OAAO,WAAW,MAAM,UAAU,KAAK,IAAI;AAC/C,SAAO;AAAA,IACL,UAAUA;AAAA,IACV;AAAA,IACA;AAAA;AAAA,IAEA,cAAcA;AAAA,IACd,UAAU;AAAA,EACZ;AACF;AAEA,UAAU,UAAU,YAAY,SAAS,YAAa;AACpD,SAAO,KAAK,QAAQ,UAAU;AAChC;AAEA,UAAU,UAAU,WAAW,SAAS,SAAU,eAAe,OAAO;AACtE,OAAK,QAAQ,SAAS,eAAe,KAAK;AAC1C,MAAI,KAAK,QAAQ,YAAY,OAAO;AAClC,SAAK,QAAQ,aAAa,KAAK,QAAQ,mBAAmB,CAAC;AAAA,EAC7D;AACF;AAEA,UAAU,UAAU,YAAY,SAAS,UAAW,QAAQ;AAC1D,MAAI,OAAuC;AACzC,SAAK,OAAO,uGAAuG;AAAA,EACrH;AACA,OAAK,QAAQ,UAAU,MAAM;AAC7B,MAAI,KAAK,QAAQ,YAAY,OAAO;AAClC,SAAK,QAAQ,aAAa,KAAK,QAAQ,mBAAmB,CAAC;AAAA,EAC7D;AACF;AAEA,OAAO,iBAAkB,UAAU,WAAW,kBAAmB;AAEjE,IAAI,cAAc;AAElB,SAAS,aAAc,MAAM,IAAI;AAC/B,OAAK,KAAK,EAAE;AACZ,SAAO,WAAY;AACjB,QAAI,IAAI,KAAK,QAAQ,EAAE;AACvB,QAAI,IAAI,IAAI;AAAE,WAAK,OAAO,GAAG,CAAC;AAAA,IAAG;AAAA,EACnC;AACF;AAEA,SAAS,WAAY,MAAM,UAAU,MAAM;AACzC,MAAI,OAAO,SAAS,SAAS,MAAM,WAAW;AAC9C,SAAO,OAAO,UAAU,OAAO,MAAM,IAAI,IAAI;AAC/C;AAGA,UAAU,UAAU;AACpB,UAAU,UAAU;AACpB,UAAU,sBAAsB;AAChC,UAAU,wBAAwB;AAClC,UAAU,iBAAiB;AAE3B,IAAIU,cAAa,OAAO,KAAK;AAC3B,SAAO,IAAI,IAAI,SAAS;AAC1B;;;ACllGA;;;ACAA;;;ACAA;AAqBA,IAAM,iBAAiB;AAAA,EACrB,MAAM;AAAA,EACN,OAAO;AAAA,IACL,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,OAAO;AACL,WAAO;AAAA,MACL,UAAU;AAAA,MACV,WAAW;AAAA,IACb;AAAA,EACF;AAAA,EACA,UAAU;AACR,SAAK,WAAW,KAAK,EAAE,iDAAiD;AACxE,SAAK,YAAY,KAAK,EAAE,kDAAkD;AAAA,EAC5E;AAAA,EACA,SAAS;AAAA,IACP,YAAY;AACV,WAAK,MAAM,YAAY;AAAA,IACzB;AAAA,IACA,SAAS;AACP,WAAK,MAAM,QAAQ;AAAA,IACrB;AAAA,EACF;AACF;AAGA,IAAI,iBAAiB,WAAY;AAAC,MAAI,MAAI;AAAK,MAAI,KAAG,IAAI;AAAe,MAAI,KAAG,IAAI,MAAM,MAAI;AAAG,SAAO,GAAG,OAAM,EAAC,aAAY,wBAAuB,GAAE,CAAC,GAAG,UAAS,EAAC,aAAY,+BAA8B,GAAE,CAAC,GAAG,KAAI,EAAC,aAAY,iDAAgD,OAAM,IAAI,SAAS,iBAAiB,IAAG,IAAG,EAAC,SAAQ,IAAI,OAAM,EAAC,CAAC,GAAE,IAAI,GAAG,WAAS,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,GAAE,IAAI,GAAG,GAAG,GAAG,IAAI,UAAS,GAAG,KAAI,EAAC,aAAY,+BAA8B,IAAG,EAAC,SAAQ,SAAS,QAAO;AAAC,WAAO,gBAAgB;AAAE,WAAO,IAAI,UAAU,MAAM,MAAM,SAAS;AAAA,EAAC,EAAC,EAAC,GAAE,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,WAAW,IAAI,YAAY,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAE,IAAI,GAAG,CAAC,CAAC;AAAC;AACtnB,IAAI,0BAA0B,CAAC;AAG7B,IAAM,wBAAwB;AAE9B,IAAM,mBAAmB;AAEzB,IAAM,4BAA4B;AAElC,IAAM,iCAAiC;AAEvC,SAAS,kBACP,UAAU6C,QAAO,QACjB,OAAO,YAAY,kBAAkB,YACrC,gBAAgB,mBAAmB,sBACnC;AACA,QAAMC,cAAa,OAAO,WAAW,aAAa,OAAO,UAAU,WAAW,CAAC;AAG/E,EAAAA,WAAU,SAAS;AAEnB,MAAI,CAACA,WAAU,QAAQ;AACrB,IAAAA,WAAU,SAAS,SAAS;AAC5B,IAAAA,WAAU,kBAAkB,SAAS;AACrC,IAAAA,WAAU,YAAY;AAEtB,QAAI,WAAY,CAAAA,WAAU,aAAa;AAAA,EACzC;AAEA,EAAAA,WAAU,WAAW;AAErB,MAAI,OAAO;AACT,QAAI;AACJ,QAAI,OAAO;AAET,aAAO,SAAS,SAAS;AAEvB,kBACE;AAAA,QACC,KAAK,UAAU,KAAK,OAAO;AAAA,QAC3B,KAAK,UAAU,KAAK,OAAO,UAAU,KAAK,OAAO,OAAO;AAE3D,YAAI,CAAC,WAAW,OAAO,wBAAwB,aAAa;AAC1D,oBAAU;AAAA,QACZ;AAEA,YAAID,QAAO;AACT,UAAAA,OAAM,KAAK,MAAM,kBAAkB,OAAO,CAAC;AAAA,QAC7C;AAEA,YAAI,WAAW,QAAQ,uBAAuB;AAC5C,kBAAQ,sBAAsB,IAAI,gBAAgB;AAAA,QACpD;AAAA,MACF;AAGA,MAAAC,WAAU,eAAe;AAAA,IAC3B,WACSD,QAAO;AACd,aAAO,aACH,SAAS,SAAS;AAChB,QAAAA,OAAM,KAAK,MAAM,qBAAqB,SAAS,KAAK,MAAM,SAAS,UAAU,CAAC;AAAA,MAChF,IACA,SAAS,SAAS;AAChB,QAAAA,OAAM,KAAK,MAAM,eAAe,OAAO,CAAC;AAAA,MAC1C;AAAA,IACN;AAEA,QAAI,SAAS,QAAW;AACtB,UAAIC,WAAU,YAAY;AAExB,cAAM,iBAAiBA,WAAU;AACjC,QAAAA,WAAU,SAAS,SAAS,yBAAyB,GAAG,SAAS;AAC/D,eAAK,KAAK,OAAO;AACjB,iBAAO,eAAe,GAAG,OAAO;AAAA,QAClC;AAAA,MACF,OAAO;AAEL,cAAM,WAAWA,WAAU;AAC3B,QAAAA,WAAU,eAAe,WAAW,CAAC,EAAE,OAAO,UAAU,IAAI,IAAI,CAAC,IAAI;AAAA,MACvE;AAAA,IACF;AAAA,EACF;AAEA,SAAOA;AACT;AASA,IAAM,oBAAiC;AAAA,EACrC,EAAE,QAAQ,gBAAgB,iBAAiB,wBAAwB;AAAA,EACnE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAO,sBAAQ;;;AC1KjB;AAkBA,IAAMC,kBAAiB;AAAA,EACrB,MAAM;AAAA,EACN,OAAO;AAAA,IACL,gBAAgB;AAAA,MACd,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,OAAO;AACL,WAAO;AAAA,MACL,WAAW,KAAK,EAAE,8CAA8C,KAAK;AAAA,MACrE,WAAW,KAAK;AAAA,MAChB,SAAS,KAAK;AAAA,IAChB;AAAA,EACF;AAAA,EACA,SAAS,EAAE,KAAK,WAAW,OAAO,SAAS,MAAM,UAAU;AAAA,EAC3D,UAAU;AAAA,IACR,eAAe;AACb,aAAO,KAAK,YACR,KAAK,UAAU,mBAAmB,KAAK,QAAQ,KAAK,SAAS,OAAO,IACpE;AAAA,IACN;AAAA,IACA,aAAa;AACX,aAAO,KAAK,UACR,KAAK,QAAQ,mBAAmB,KAAK,QAAQ,KAAK,SAAS,OAAO,IAClE;AAAA,IACN;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,eAAe,GAAG;AAChB,WAAK,YAAY;AAAA,IACnB;AAAA,IACA,aAAa,GAAG;AACd,WAAK,UAAU;AAAA,IACjB;AAAA,EACF;AAAA,EACA,UAAU;AACR,SAAK,cAAc;AAAA,EACrB;AAAA,EACA,UAAU;AACR,SAAK,YAAY,KAAK;AACtB,SAAK,UAAU,KAAK;AACpB,SAAK,cAAc;AAAA,EACrB;AAAA,EACA,gBAAgB;AAEd,SAAK,WAAW,QAAQ;AAAA,EAC1B;AAAA,EACA,SAAS;AAAA,IACP,gBAAgB;AACd,WAAK,aAAa,IAAI,WAAW,KAAK,IAAI,cAAc,OAAO,GAAG;AAAA,QAChE,UAAU,KAAK;AAAA,QACf,WAAW;AAAA,QACX,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,aAAa;AAAA,QACb,UAAU,CAAC,GAAGC,UAAS;AACrB,gBAAM,CAACC,QAAO,GAAG,IAAID;AACrB,eAAK,YAAYC;AACjB,eAAK,UAAU;AAEf,eAAK,MAAM,mBAAmB,EAAE,OAAAA,QAAO,IAAI,CAAC;AAAA,QAC9C;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAGA,IAAIC,kBAAiB,WAAY;AAAC,MAAI,MAAI;AAAK,MAAI,KAAG,IAAI;AAAe,MAAI,KAAG,IAAI,MAAM,MAAI;AAAG,SAAO,GAAG,OAAM,EAAC,aAAY,oBAAmB,GAAE,CAAC,GAAG,OAAM,CAAC,GAAG,UAAS,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,GAAE,IAAI,GAAG,GAAG,GAAE,GAAG,KAAI,EAAC,aAAY,oBAAmB,CAAC,CAAC,CAAC,GAAE,IAAI,GAAG,GAAG,GAAE,GAAG,SAAQ,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,YAAY,IAAE,IAAI,GAAG,IAAI,UAAU,QAAQ,EAAE,IAAE,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,GAAE,IAAI,GAAG,GAAG,GAAE,GAAG,SAAQ,EAAC,aAAY,mBAAkB,OAAM,EAAC,QAAO,OAAM,EAAC,CAAC,CAAC,CAAC;AAAC;AACrc,IAAIC,2BAA0B,CAAC;AAG7B,IAAMC,yBAAwB;AAE9B,IAAMC,oBAAmB;AAEzB,IAAMC,6BAA4B;AAElC,IAAMC,kCAAiC;AAEvC,SAASC,mBACP,UAAUC,QAAO,QACjB,OAAO,YAAY,kBAAkB,YACrC,gBAAgB,mBAAmB,sBACnC;AACA,QAAMC,cAAa,OAAO,WAAW,aAAa,OAAO,UAAU,WAAW,CAAC;AAG/E,EAAAA,WAAU,SAAS;AAEnB,MAAI,CAACA,WAAU,QAAQ;AACrB,IAAAA,WAAU,SAAS,SAAS;AAC5B,IAAAA,WAAU,kBAAkB,SAAS;AACrC,IAAAA,WAAU,YAAY;AAEtB,QAAI,WAAY,CAAAA,WAAU,aAAa;AAAA,EACzC;AAEA,EAAAA,WAAU,WAAW;AAErB,MAAI,OAAO;AACT,QAAI;AACJ,QAAI,OAAO;AAET,aAAO,SAAS,SAAS;AAEvB,kBACE;AAAA,QACC,KAAK,UAAU,KAAK,OAAO;AAAA,QAC3B,KAAK,UAAU,KAAK,OAAO,UAAU,KAAK,OAAO,OAAO;AAE3D,YAAI,CAAC,WAAW,OAAO,wBAAwB,aAAa;AAC1D,oBAAU;AAAA,QACZ;AAEA,YAAID,QAAO;AACT,UAAAA,OAAM,KAAK,MAAM,kBAAkB,OAAO,CAAC;AAAA,QAC7C;AAEA,YAAI,WAAW,QAAQ,uBAAuB;AAC5C,kBAAQ,sBAAsB,IAAI,gBAAgB;AAAA,QACpD;AAAA,MACF;AAGA,MAAAC,WAAU,eAAe;AAAA,IAC3B,WACSD,QAAO;AACd,aAAO,aACH,SAAS,SAAS;AAChB,QAAAA,OAAM,KAAK,MAAM,qBAAqB,SAAS,KAAK,MAAM,SAAS,UAAU,CAAC;AAAA,MAChF,IACA,SAAS,SAAS;AAChB,QAAAA,OAAM,KAAK,MAAM,eAAe,OAAO,CAAC;AAAA,MAC1C;AAAA,IACN;AAEA,QAAI,SAAS,QAAW;AACtB,UAAIC,WAAU,YAAY;AAExB,cAAM,iBAAiBA,WAAU;AACjC,QAAAA,WAAU,SAAS,SAAS,yBAAyB,GAAG,SAAS;AAC/D,eAAK,KAAK,OAAO;AACjB,iBAAO,eAAe,GAAG,OAAO;AAAA,QAClC;AAAA,MACF,OAAO;AAEL,cAAM,WAAWA,WAAU;AAC3B,QAAAA,WAAU,eAAe,WAAW,CAAC,EAAE,OAAO,UAAU,IAAI,IAAI,CAAC,IAAI;AAAA,MACvE;AAAA,IACF;AAAA,EACF;AAEA,SAAOA;AACT;AASA,IAAMC,qBAAiC,gBAAAH;AAAA,EACrC,EAAE,QAAQN,iBAAgB,iBAAiBC,yBAAwB;AAAA,EACnEC;AAAA,EACAL;AAAA,EACAM;AAAA,EACAE;AAAA,EACAD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAO,mBAAQK;;;ACvMjB;;;ACAA;AAQA,IAAMC,kBAAiB;AAAA,EACrB,MAAM;AAAA,EACN,OAAO;AAAA,IACL,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AACF;AAGA,IAAIC,kBAAiB,WAAY;AAAC,MAAI,MAAI;AAAK,MAAI,KAAG,IAAI;AAAe,MAAI,KAAG,IAAI,MAAM,MAAI;AAAG,SAAO,GAAG,OAAM,CAAC,GAAG,KAAI,EAAC,aAAY,yBAAwB,CAAC,GAAE,IAAI,GAAG,MAAI,IAAI,GAAG,IAAI,OAAO,IAAE,IAAI,CAAC,CAAC;AAAC;AACvM,IAAIC,2BAA0B,CAAC;AAG7B,IAAMC,yBAAwB;AAE9B,IAAMC,oBAAmB;AAEzB,IAAMC,6BAA4B;AAElC,IAAMC,kCAAiC;AAEvC,SAASC,mBACP,UAAUC,QAAO,QACjB,OAAO,YAAY,kBAAkB,YACrC,gBAAgB,mBAAmB,sBACnC;AACA,QAAMC,cAAa,OAAO,WAAW,aAAa,OAAO,UAAU,WAAW,CAAC;AAG/E,EAAAA,WAAU,SAAS;AAEnB,MAAI,CAACA,WAAU,QAAQ;AACrB,IAAAA,WAAU,SAAS,SAAS;AAC5B,IAAAA,WAAU,kBAAkB,SAAS;AACrC,IAAAA,WAAU,YAAY;AAEtB,QAAI,WAAY,CAAAA,WAAU,aAAa;AAAA,EACzC;AAEA,EAAAA,WAAU,WAAW;AAErB,MAAI,OAAO;AACT,QAAI;AACJ,QAAI,OAAO;AAET,aAAO,SAAS,SAAS;AAEvB,kBACE;AAAA,QACC,KAAK,UAAU,KAAK,OAAO;AAAA,QAC3B,KAAK,UAAU,KAAK,OAAO,UAAU,KAAK,OAAO,OAAO;AAE3D,YAAI,CAAC,WAAW,OAAO,wBAAwB,aAAa;AAC1D,oBAAU;AAAA,QACZ;AAEA,YAAID,QAAO;AACT,UAAAA,OAAM,KAAK,MAAM,kBAAkB,OAAO,CAAC;AAAA,QAC7C;AAEA,YAAI,WAAW,QAAQ,uBAAuB;AAC5C,kBAAQ,sBAAsB,IAAI,gBAAgB;AAAA,QACpD;AAAA,MACF;AAGA,MAAAC,WAAU,eAAe;AAAA,IAC3B,WACSD,QAAO;AACd,aAAO,aACH,SAAS,SAAS;AAChB,QAAAA,OAAM,KAAK,MAAM,qBAAqB,SAAS,KAAK,MAAM,SAAS,UAAU,CAAC;AAAA,MAChF,IACA,SAAS,SAAS;AAChB,QAAAA,OAAM,KAAK,MAAM,eAAe,OAAO,CAAC;AAAA,MAC1C;AAAA,IACN;AAEA,QAAI,SAAS,QAAW;AACtB,UAAIC,WAAU,YAAY;AAExB,cAAM,iBAAiBA,WAAU;AACjC,QAAAA,WAAU,SAAS,SAAS,yBAAyB,GAAG,SAAS;AAC/D,eAAK,KAAK,OAAO;AACjB,iBAAO,eAAe,GAAG,OAAO;AAAA,QAClC;AAAA,MACF,OAAO;AAEL,cAAM,WAAWA,WAAU;AAC3B,QAAAA,WAAU,eAAe,WAAW,CAAC,EAAE,OAAO,UAAU,IAAI,IAAI,CAAC,IAAI;AAAA,MACvE;AAAA,IACF;AAAA,EACF;AAEA,SAAOA;AACT;AASA,IAAMC,qBAAiC,gBAAAH;AAAA,EACrC,EAAE,QAAQN,iBAAgB,iBAAiBC,yBAAwB;AAAA,EACnEC;AAAA,EACAH;AAAA,EACAI;AAAA,EACAE;AAAA,EACAD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAO,kBAAQK;;;AC/HjB;AAmCA,IAAMC,kBAAiB;AAAA,EACrB,MAAM;AAAA,EACN,OAAO;AAAA,IACL,OAAO;AAAA,MACL,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,SAAS;AAAA,IACX;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,IAAI;AAAA,MACF,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,SAAS;AAAA,IACX;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,OAAO;AACL,WAAO;AAAA,MACL,MAAM,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,CAAC;AAAA,IAC9C;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,aAAa;AACX,aAAO,KAAK,YAAY;AAAA,IAC1B;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG;AAChC,WAAK,MAAM,mBAAmB,EAAE,IAAI,KAAK,IAAI,OAAO,QAAQ,CAAC;AAAA,IAC/D;AAAA,IACA,mBAAmB;AACjB,YAAM,sBAAsB,WAAW,KAAK,QAAQ;AACpD,aAAO,sBAAsB,mBAAmB,IAAI,KAAK,EAAE;AAAA,IAC7D;AAAA,EACF;AACF;AAGA,IAAIC,kBAAiB,WAAY;AAAC,MAAI,MAAI;AAAK,MAAI,KAAG,IAAI;AAAe,MAAI,KAAG,IAAI,MAAM,MAAI;AAAG,SAAO,GAAG,OAAM,EAAC,aAAY,4BAA2B,OAAM,EAAC,MAAK,IAAI,iBAAiB,EAAC,EAAC,GAAE,CAAC,GAAG,SAAQ,EAAC,aAAY,mCAAkC,OAAM,EAAC,MAAM,cAAc,IAAI,KAAK,MAAM,IAAI,MAAM,QAAO,WAAU,GAAE,UAAS,EAAC,WAAU,IAAI,QAAO,GAAE,IAAG,EAAC,UAAS,IAAI,SAAQ,EAAC,CAAC,GAAE,IAAI,GAAG,GAAG,GAAE,GAAG,SAAQ,EAAC,aAAY,mCAAkC,OAAM,EAAC,OAAO,cAAc,IAAI,KAAK,MAAM,IAAI,KAAK,EAAC,GAAE,CAAC,GAAG,OAAM,EAAC,aAAY,wCAAuC,GAAE,CAAC,GAAG,KAAI,EAAC,aAAY,6CAA4C,GAAE,CAAC,IAAI,GAAG,eAAa,IAAI,GAAG,IAAI,KAAK,IAAE,UAAU,CAAC,CAAC,GAAE,IAAI,GAAG,GAAG,GAAG,IAAI,aAAY,GAAG,KAAI,EAAC,aAAY,0CAAyC,GAAE,CAAC,IAAI,GAAG,MAAI,IAAI,GAAG,IAAI,OAAO,IAAE,GAAG,CAAC,CAAC,IAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAAC;AACp0B,IAAIC,2BAA0B,CAAC;AAG7B,IAAMC,yBAAwB;AAE9B,IAAMC,oBAAmB;AAEzB,IAAMC,6BAA4B;AAElC,IAAMC,kCAAiC;AAEvC,SAASC,mBACP,UAAUC,QAAO,QACjB,OAAO,YAAY,kBAAkB,YACrC,gBAAgB,mBAAmB,sBACnC;AACA,QAAMC,cAAa,OAAO,WAAW,aAAa,OAAO,UAAU,WAAW,CAAC;AAG/E,EAAAA,WAAU,SAAS;AAEnB,MAAI,CAACA,WAAU,QAAQ;AACrB,IAAAA,WAAU,SAAS,SAAS;AAC5B,IAAAA,WAAU,kBAAkB,SAAS;AACrC,IAAAA,WAAU,YAAY;AAEtB,QAAI,WAAY,CAAAA,WAAU,aAAa;AAAA,EACzC;AAEA,EAAAA,WAAU,WAAW;AAErB,MAAI,OAAO;AACT,QAAI;AACJ,QAAI,OAAO;AAET,aAAO,SAAS,SAAS;AAEvB,kBACE;AAAA,QACC,KAAK,UAAU,KAAK,OAAO;AAAA,QAC3B,KAAK,UAAU,KAAK,OAAO,UAAU,KAAK,OAAO,OAAO;AAE3D,YAAI,CAAC,WAAW,OAAO,wBAAwB,aAAa;AAC1D,oBAAU;AAAA,QACZ;AAEA,YAAID,QAAO;AACT,UAAAA,OAAM,KAAK,MAAM,kBAAkB,OAAO,CAAC;AAAA,QAC7C;AAEA,YAAI,WAAW,QAAQ,uBAAuB;AAC5C,kBAAQ,sBAAsB,IAAI,gBAAgB;AAAA,QACpD;AAAA,MACF;AAGA,MAAAC,WAAU,eAAe;AAAA,IAC3B,WACSD,QAAO;AACd,aAAO,aACH,SAAS,SAAS;AAChB,QAAAA,OAAM,KAAK,MAAM,qBAAqB,SAAS,KAAK,MAAM,SAAS,UAAU,CAAC;AAAA,MAChF,IACA,SAAS,SAAS;AAChB,QAAAA,OAAM,KAAK,MAAM,eAAe,OAAO,CAAC;AAAA,MAC1C;AAAA,IACN;AAEA,QAAI,SAAS,QAAW;AACtB,UAAIC,WAAU,YAAY;AAExB,cAAM,iBAAiBA,WAAU;AACjC,QAAAA,WAAU,SAAS,SAAS,yBAAyB,GAAG,SAAS;AAC/D,eAAK,KAAK,OAAO;AACjB,iBAAO,eAAe,GAAG,OAAO;AAAA,QAClC;AAAA,MACF,OAAO;AAEL,cAAM,WAAWA,WAAU;AAC3B,QAAAA,WAAU,eAAe,WAAW,CAAC,EAAE,OAAO,UAAU,IAAI,IAAI,CAAC,IAAI;AAAA,MACvE;AAAA,IACF;AAAA,EACF;AAEA,SAAOA;AACT;AASA,IAAMC,qBAAiC,gBAAAH;AAAA,EACrC,EAAE,QAAQN,iBAAgB,iBAAiBC,yBAAwB;AAAA,EACnEC;AAAA,EACAH;AAAA,EACAI;AAAA,EACAE;AAAA,EACAD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAO,mBAAQK;;;AC7LjB;AAsCA,IAAMC,kBAAiB;AAAA,EACrB,MAAM;AAAA,EACN,QAAQ,CAAC,eAAe;AAAA,EACxB,OAAO;AAAA,IACL,KAAK;AAAA,MACH,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,KAAK;AAAA,MACH,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS,MAAM,CAAC;AAAA,IAClB;AAAA,EACF;AAAA,EACA,cAAc;AAAA,EACd,OAAO;AACL,WAAO;AAAA,MACL,cAAc,CAAC,KAAK,KAAK,KAAK,GAAG;AAAA,MACjC,aAAa,KAAK,YAAY,KAAK;AAAA,MACnC,aAAa,KAAK,YAAY,KAAK;AAAA,MACnC,MAAM,KAAK,OAAO,EACf,SAAS,EAAE,EACX,UAAU,CAAC;AAAA,IAChB;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,WAAW;AACT,aAAO,WAAS,KAAK,MAAM,WAAW,KAAK,CAAC;AAAA,IAC9C;AAAA,IACA,WAAW;AACT,aAAO,WAAS,KAAK,KAAK,WAAW,KAAK,CAAC;AAAA,IAC7C;AAAA,IACA,eAAe;AACb,aAAO,KAAK,UAAU;AAAA,QACpB,KAAK,YAAY,KAAK,MAAM,KAAK,GAAG;AAAA,QACpC,KAAK,YAAY,KAAK,KAAK,KAAK,GAAG;AAAA,MACrC,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,UAAU;AACR,SAAK,eAAe;AAAA,EACtB;AAAA,EACA,UAAU;AACR,SAAK,cAAc,KAAK,YAAY,KAAK;AACzC,SAAK,cAAc,KAAK,YAAY,KAAK;AACzC,SAAK,eAAe;AAAA,EACtB;AAAA,EACA,gBAAgB;AAEd,SAAK,YAAY,QAAQ;AAAA,EAC3B;AAAA,EACA,SAAS;AAAA,IACP,iBAAiB;AACf,YAAM,cAAc,KAAK,IAAI,cAAc,kBAAkB;AAC7D,WAAK,eAAe,WAAW;AAAA,IACjC;AAAA,IACA,eAAe,QAAQ;AACrB,YAAM;AAAA,QACJ,KAAAC,OAAM;AAAA,QACN,KAAAC,OAAM;AAAA,QACN,SAAS,eAAe,IAAID,IAAG,IAAIC,IAAG;AAAA,QACtC;AAAA,MACF,IAAI,OAAO;AAEX,YAAM,WAAW,CAAC,GAAG,OAAO;AAC1B,cAAM,EAAE,SAAS,CAAC,EAAE,IAAI;AAExB,eAAO,gBAAgB;AACvB,aAAK,YAAY,MAAM;AAEvB,cAAM,CAACD,OAAM,KAAK,KAAKC,OAAM,KAAK,GAAG,IAAI;AACzC,aAAK,cAAcD;AACnB,aAAK,cAAcC;AACnB,aAAK,MAAM,gBAAgB,EAAE,KAAAD,MAAK,KAAAC,KAAI,CAAC;AAAA,MACzC;AAGA,aAAO,MAAM,WAAWD,IAAG;AAC3B,aAAO,MAAM,WAAWC,IAAG;AAC3B,aAAO,gBAAgB,KAAK,MAAM,YAAY;AAE9C,WAAK,cAAc,IAAI,YAAY;AAAA,QACjC,MAAM;AAAA,QACN,KAAK,OAAO;AAAA,QACZ,KAAK,OAAO;AAAA,QACZ,cAAc,OAAO;AAAA,QACrB,eAAe,SAAS,UAAU,GAAG;AAAA,MACvC,CAAC;AAGD,UAAI,mBAAmB;AACrB,eAAO,WAAW,KAAK,IAAI,cAAc,iBAAiB;AAC1D,aAAK,YAAY,MAAM;AAAA,MACzB;AAAA,IACF;AAAA,IACA,YAAY,WAAW;AACrB,YAAM,EAAE,KAAAD,MAAK,KAAAC,MAAK,eAAe,SAAS,IAAI;AAC9C,YAAM,OAAO,SAAS;AACtB,YAAM,QAAQA,OAAMD,QAAO,KAAK;AAChC,YAAM,CAACE,QAAO,GAAG,IAAI;AAErB,eAASC,SAAQ,GAAGA,SAAQ,KAAK,QAAQA,UAAS;AAChD,cAAM,MAAM,KAAKA,MAAK;AAEtB,QAAAD,UAAS,OAAOC,SAAQ,OAAOH,QAAO,OAAO,OAAOG,SAAQH,OACxD,IAAI,UAAU,IAAI,KAAK,SAAS,YAAY,IAC5C,IAAI,UAAU,OAAO,KAAK,SAAS,YAAY;AAAA,MACrD;AAAA,IACF;AAAA,EACF;AACF;AAGA,IAAII,kBAAiB,WAAY;AAAC,MAAI,MAAI;AAAK,MAAI,KAAG,IAAI;AAAe,MAAI,KAAG,IAAI,MAAM,MAAI;AAAG,SAAO,GAAG,OAAM,EAAC,aAAY,eAAc,GAAE,CAAC,GAAG,OAAM,EAAC,aAAY,sBAAqB,OAAM,EAAC,MAAM,gBAAgB,IAAI,KAAK,EAAC,GAAE,IAAI,GAAI,IAAI,WAAW,SAAS,KAAI;AAAC,WAAO,GAAG,OAAM,EAAC,KAAI,IAAI,IAAG,OAAO,EAAE,QAAU,OAAO,IAAI,QAAQ,IAAI,cAAe,IAAK,EAAE,GAAE,CAAC,GAAG,QAAO,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,EAAE,IAAI,SAAS,IAAI,KAAK,GAAE,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,IAAI,GAAG,GAAG,GAAE,GAAG,QAAO,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,EAAE,IAAI,SAAS,IAAI,GAAG,GAAE,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,EAAC,CAAC,GAAE,CAAC,GAAE,IAAI,GAAG,GAAG,GAAE,GAAG,OAAM,EAAC,aAAY,mBAAkB,OAAM,EAAC,YAAW,IAAI,KAAI,YAAW,IAAI,KAAI,gBAAe,IAAI,cAAa,4BAA4B,iBAAiB,IAAI,KAAK,EAAC,CAAC,GAAE,IAAI,GAAG,GAAG,GAAE,GAAG,OAAM,EAAC,aAAY,uBAAsB,GAAE,CAAC,GAAG,QAAO,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,EAAE,IAAI,aAAY,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,IAAI,GAAG,GAAG,GAAE,GAAG,QAAO,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,EAAE,IAAI,aAAY,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAAC;AACz/B,IAAIC,2BAA0B,CAAC;AAG7B,IAAMC,yBAAwB;AAE9B,IAAMC,oBAAmB;AAEzB,IAAMC,6BAA4B;AAElC,IAAMC,kCAAiC;AAEvC,SAASC,mBACP,UAAUC,QAAO,QACjB,OAAO,YAAY,kBAAkB,YACrC,gBAAgB,mBAAmB,sBACnC;AACA,QAAMC,cAAa,OAAO,WAAW,aAAa,OAAO,UAAU,WAAW,CAAC;AAG/E,EAAAA,WAAU,SAAS;AAEnB,MAAI,CAACA,WAAU,QAAQ;AACrB,IAAAA,WAAU,SAAS,SAAS;AAC5B,IAAAA,WAAU,kBAAkB,SAAS;AACrC,IAAAA,WAAU,YAAY;AAEtB,QAAI,WAAY,CAAAA,WAAU,aAAa;AAAA,EACzC;AAEA,EAAAA,WAAU,WAAW;AAErB,MAAI,OAAO;AACT,QAAI;AACJ,QAAI,OAAO;AAET,aAAO,SAAS,SAAS;AAEvB,kBACE;AAAA,QACC,KAAK,UAAU,KAAK,OAAO;AAAA,QAC3B,KAAK,UAAU,KAAK,OAAO,UAAU,KAAK,OAAO,OAAO;AAE3D,YAAI,CAAC,WAAW,OAAO,wBAAwB,aAAa;AAC1D,oBAAU;AAAA,QACZ;AAEA,YAAID,QAAO;AACT,UAAAA,OAAM,KAAK,MAAM,kBAAkB,OAAO,CAAC;AAAA,QAC7C;AAEA,YAAI,WAAW,QAAQ,uBAAuB;AAC5C,kBAAQ,sBAAsB,IAAI,gBAAgB;AAAA,QACpD;AAAA,MACF;AAGA,MAAAC,WAAU,eAAe;AAAA,IAC3B,WACSD,QAAO;AACd,aAAO,aACH,SAAS,SAAS;AAChB,QAAAA,OAAM,KAAK,MAAM,qBAAqB,SAAS,KAAK,MAAM,SAAS,UAAU,CAAC;AAAA,MAChF,IACA,SAAS,SAAS;AAChB,QAAAA,OAAM,KAAK,MAAM,eAAe,OAAO,CAAC;AAAA,MAC1C;AAAA,IACN;AAEA,QAAI,SAAS,QAAW;AACtB,UAAIC,WAAU,YAAY;AAExB,cAAM,iBAAiBA,WAAU;AACjC,QAAAA,WAAU,SAAS,SAAS,yBAAyB,GAAG,SAAS;AAC/D,eAAK,KAAK,OAAO;AACjB,iBAAO,eAAe,GAAG,OAAO;AAAA,QAClC;AAAA,MACF,OAAO;AAEL,cAAM,WAAWA,WAAU;AAC3B,QAAAA,WAAU,eAAe,WAAW,CAAC,EAAE,OAAO,UAAU,IAAI,IAAI,CAAC,IAAI;AAAA,MACvE;AAAA,IACF;AAAA,EACF;AAEA,SAAOA;AACT;AASA,IAAMC,qBAAiC,gBAAAH;AAAA,EACrC,EAAE,QAAQN,iBAAgB,iBAAiBC,yBAAwB;AAAA,EACnEC;AAAA,EACAP;AAAA,EACAQ;AAAA,EACAE;AAAA,EACAD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAO,oBAAQK;;;AClRjB;AAwBA,IAAMC,kBAAiB;AAAA,EACrB,MAAM;AAAA,EACN,OAAO;AAAA,IACL,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS,KAAK,EAAE,+CAA+C;AAAA,IACjE;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS,KAAK,EAAE,+CAA+C;AAAA,IACjE;AAAA,IACA,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,OAAO;AACL,WAAO;AAAA,MACL,MAAM;AAAA,MACN,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,kBAAkB;AAChB,aAAO,KAAK,KAAK,SAAS,KAAK;AAAA,IACjC;AAAA,IACA,aAAa;AACX,aAAO,KAAK,KAAK,UAAU,GAAG,KAAK,UAAU;AAAA,IAC/C;AAAA,IACA,YAAY;AACV,aAAO,KAAK,KAAK,UAAU,KAAK,YAAY,KAAK,KAAK,MAAM;AAAA,IAC9D;AAAA,EACF;AAAA,EACA,UAAU;AACR,UAAM,EAAE,MAAAC,QAAO,GAAG,IAAI,KAAK,OAAO,QAAQ,CAAC;AAC3C,SAAK,OAAOA;AACZ,SAAK,aAAa,KAAK,aAAa,KAAK,qBAAqB,IAAI;AAAA,EACpE;AAAA,EACA,UAAU;AACR,QAAI,KAAK,iBAAiB;AACxB,eAAS,KAAK,GAAG;AAAA,IACnB;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,uBAAuB;AACrB,YAAM,aAAa,CAAC,KAAK,KAAK,IAAI;AAClC,YAAM,kBAAkB,CAAC;AACzB,eAAS,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;AAC1C,cAAM,UAAU,WAAW,CAAC;AAC5B,cAAMC,SAAQ,KAAK,KAChB,UAAU,KAAK,YAAY,KAAK,KAAK,MAAM,EAC3C,QAAQ,OAAO;AAClB,YAAIA,UAAS,GAAG;AACd,0BAAgB,KAAKA,MAAK;AAAA,QAC5B;AAAA,MACF;AAEA,aAAO,KAAK,IAAI,MAAM,MAAM,eAAe;AAAA,IAC7C;AAAA,EACF;AACF;;;ACpFA;AAmBA,IAAMC,kBAAiB;AAAA,EACrB,MAAM;AAAA,EACN,OAAO;AACL,WAAO;AAAA,MACL,kBAAkB;AAAA,IACpB;AAAA,EACF;AAAA,EACA,UAAU;AACR,SAAK,mBAAmB,OAAO,cAAc,MAAM,QAAQ;AAAA,EAC7D;AAAA,EACA,SAAS;AAAA,IACP,OAAO;AACL,WAAK,mBAAmB,CAAC,KAAK;AAC9B,WAAK,MAAM,sBAAsB,KAAK,gBAAgB;AAAA,IACxD;AAAA,EACF;AACF;AAGA,IAAIC,kBAAiB,WAAY;AAAC,MAAI,MAAI;AAAK,MAAI,KAAG,IAAI;AAAe,MAAI,KAAG,IAAI,MAAM,MAAI;AAAG,SAAO,GAAG,OAAM,EAAC,aAAY,wBAAuB,GAAE,CAAC,GAAG,OAAM,EAAC,aAAY,kCAAiC,IAAG,EAAC,SAAQ,IAAI,KAAI,EAAC,GAAE,CAAC,IAAI,GAAG,SAAS,CAAC,GAAE,CAAC,GAAE,IAAI,GAAG,GAAG,GAAE,GAAG,OAAM,EAAC,aAAY,iCAAgC,GAAE,CAAC,GAAG,cAAa,EAAC,OAAM,EAAC,QAAO,QAAO,EAAC,GAAE,CAAE,IAAI,mBAAkB,IAAI,GAAG,SAAS,IAAE,IAAI,GAAG,CAAC,GAAE,CAAC,CAAC,GAAE,CAAC,CAAC,CAAC;AAAC;AACva,IAAIC,2BAA0B,CAAC;AAG7B,IAAMC,yBAAwB;AAE9B,IAAMC,oBAAmB;AAEzB,IAAMC,6BAA4B;AAElC,IAAMC,kCAAiC;AAEvC,SAASC,mBACP,UAAUC,QAAO,QACjB,OAAO,YAAY,kBAAkB,YACrC,gBAAgB,mBAAmB,sBACnC;AACA,QAAMC,cAAa,OAAO,WAAW,aAAa,OAAO,UAAU,WAAW,CAAC;AAG/E,EAAAA,WAAU,SAAS;AAEnB,MAAI,CAACA,WAAU,QAAQ;AACrB,IAAAA,WAAU,SAAS,SAAS;AAC5B,IAAAA,WAAU,kBAAkB,SAAS;AACrC,IAAAA,WAAU,YAAY;AAEtB,QAAI,WAAY,CAAAA,WAAU,aAAa;AAAA,EACzC;AAEA,EAAAA,WAAU,WAAW;AAErB,MAAI,OAAO;AACT,QAAI;AACJ,QAAI,OAAO;AAET,aAAO,SAAS,SAAS;AAEvB,kBACE;AAAA,QACC,KAAK,UAAU,KAAK,OAAO;AAAA,QAC3B,KAAK,UAAU,KAAK,OAAO,UAAU,KAAK,OAAO,OAAO;AAE3D,YAAI,CAAC,WAAW,OAAO,wBAAwB,aAAa;AAC1D,oBAAU;AAAA,QACZ;AAEA,YAAID,QAAO;AACT,UAAAA,OAAM,KAAK,MAAM,kBAAkB,OAAO,CAAC;AAAA,QAC7C;AAEA,YAAI,WAAW,QAAQ,uBAAuB;AAC5C,kBAAQ,sBAAsB,IAAI,gBAAgB;AAAA,QACpD;AAAA,MACF;AAGA,MAAAC,WAAU,eAAe;AAAA,IAC3B,WACSD,QAAO;AACd,aAAO,aACH,SAAS,SAAS;AAChB,QAAAA,OAAM,KAAK,MAAM,qBAAqB,SAAS,KAAK,MAAM,SAAS,UAAU,CAAC;AAAA,MAChF,IACA,SAAS,SAAS;AAChB,QAAAA,OAAM,KAAK,MAAM,eAAe,OAAO,CAAC;AAAA,MAC1C;AAAA,IACN;AAEA,QAAI,SAAS,QAAW;AACtB,UAAIC,WAAU,YAAY;AAExB,cAAM,iBAAiBA,WAAU;AACjC,QAAAA,WAAU,SAAS,SAAS,yBAAyB,GAAG,SAAS;AAC/D,eAAK,KAAK,OAAO;AACjB,iBAAO,eAAe,GAAG,OAAO;AAAA,QAClC;AAAA,MACF,OAAO;AAEL,cAAM,WAAWA,WAAU;AAC3B,QAAAA,WAAU,eAAe,WAAW,CAAC,EAAE,OAAO,UAAU,IAAI,IAAI,CAAC,IAAI;AAAA,MACvE;AAAA,IACF;AAAA,EACF;AAEA,SAAOA;AACT;AASA,IAAMC,qBAAiC,gBAAAH;AAAA,EACrC,EAAE,QAAQN,iBAAgB,iBAAiBC,yBAAwB;AAAA,EACnEC;AAAA,EACAH;AAAA,EACAI;AAAA,EACAE;AAAA,EACAD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAO,mBAAQK;;;AClJjB;AA4BA,IAAMC,kBAAiB;AAAA,EACrB,MAAM;AAAA,EACN,OAAO;AAAA,IACL,cAAc;AAAA,MACZ,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,IACA,aAAa;AAAA,MACX,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,IACA,SAAS;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,IACA,OAAO;AAAA,MACL,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,eAAe;AACb,aAAO;AAAA,QACL,QAAS,OAAO,CAAE,KAAK,UAAW,MAAM,CAAE,KAAK,UAAY;AAAA,QAC3D,QAAQ,KAAK;AAAA,MACf;AAAA,IACF;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,cAAc;AACZ,aAAO;AAAA,QACL,OAAO,KAAK,MAAM,KAAK,OAAO,KAAK,KAAK,KAAK,EAAE,IAAI,KAAK;AAAA,MAC1D;AAAA,IACF;AAAA,EACF;AACF;AAGA,IAAIC,kBAAiB,WAAY;AAAC,MAAI,MAAI;AAAK,MAAI,KAAG,IAAI;AAAe,MAAI,KAAG,IAAI,MAAM,MAAI;AAAG,SAAO,GAAG,OAAM,CAAC,IAAI,GAAI,SAAS,IAAI,KAAK,GAAG,SAAS,MAAK;AAAC,WAAO,CAAC,GAAG,OAAM,EAAC,KAAK,UAAU,MAAM,aAAY,4DAA2D,OAAO,IAAI,YAAY,EAAE,CAAC,CAAC;AAAA,EAAC,CAAC,GAAE,IAAI,GAAG,GAAG,GAAE,IAAI,GAAI,SAAS,IAAI,WAAW,GAAG,SAAS,QAAO;AAAC,WAAO,CAAC,GAAG,OAAM,EAAC,KAAK,gBAAgB,QAAQ,aAAY,8CAA6C,GAAE,CAAC,IAAI,GAAI,SAAS,IAAI,OAAO,GAAG,SAASC,SAAO;AAAC,aAAO,CAAC,GAAG,OAAM,EAAC,KAAK,YAAYA,SAAQ,aAAY,8DAA6D,OAAO,IAAI,aAAa,CAAC,CAAC;AAAA,IAAC,CAAC,CAAC,GAAE,CAAC,CAAC;AAAA,EAAC,CAAC,CAAC,GAAE,CAAC;AAAC;AAClqB,IAAIC,2BAA0B,CAAC;AAG7B,IAAMC,yBAAwB;AAE9B,IAAMC,oBAAmB;AAEzB,IAAMC,6BAA4B;AAElC,IAAMC,kCAAiC;AAEvC,SAASC,mBACP,UAAUC,QAAO,QACjB,OAAO,YAAY,kBAAkB,YACrC,gBAAgB,mBAAmB,sBACnC;AACA,QAAMC,cAAa,OAAO,WAAW,aAAa,OAAO,UAAU,WAAW,CAAC;AAG/E,EAAAA,WAAU,SAAS;AAEnB,MAAI,CAACA,WAAU,QAAQ;AACrB,IAAAA,WAAU,SAAS,SAAS;AAC5B,IAAAA,WAAU,kBAAkB,SAAS;AACrC,IAAAA,WAAU,YAAY;AAEtB,QAAI,WAAY,CAAAA,WAAU,aAAa;AAAA,EACzC;AAEA,EAAAA,WAAU,WAAW;AAErB,MAAI,OAAO;AACT,QAAI;AACJ,QAAI,OAAO;AAET,aAAO,SAAS,SAAS;AAEvB,kBACE;AAAA,QACC,KAAK,UAAU,KAAK,OAAO;AAAA,QAC3B,KAAK,UAAU,KAAK,OAAO,UAAU,KAAK,OAAO,OAAO;AAE3D,YAAI,CAAC,WAAW,OAAO,wBAAwB,aAAa;AAC1D,oBAAU;AAAA,QACZ;AAEA,YAAID,QAAO;AACT,UAAAA,OAAM,KAAK,MAAM,kBAAkB,OAAO,CAAC;AAAA,QAC7C;AAEA,YAAI,WAAW,QAAQ,uBAAuB;AAC5C,kBAAQ,sBAAsB,IAAI,gBAAgB;AAAA,QACpD;AAAA,MACF;AAGA,MAAAC,WAAU,eAAe;AAAA,IAC3B,WACSD,QAAO;AACd,aAAO,aACH,SAAS,SAAS;AAChB,QAAAA,OAAM,KAAK,MAAM,qBAAqB,SAAS,KAAK,MAAM,SAAS,UAAU,CAAC;AAAA,MAChF,IACA,SAAS,SAAS;AAChB,QAAAA,OAAM,KAAK,MAAM,eAAe,OAAO,CAAC;AAAA,MAC1C;AAAA,IACN;AAEA,QAAI,SAAS,QAAW;AACtB,UAAIC,WAAU,YAAY;AAExB,cAAM,iBAAiBA,WAAU;AACjC,QAAAA,WAAU,SAAS,SAAS,yBAAyB,GAAG,SAAS;AAC/D,eAAK,KAAK,OAAO;AACjB,iBAAO,eAAe,GAAG,OAAO;AAAA,QAClC;AAAA,MACF,OAAO;AAEL,cAAM,WAAWA,WAAU;AAC3B,QAAAA,WAAU,eAAe,WAAW,CAAC,EAAE,OAAO,UAAU,IAAI,IAAI,CAAC,IAAI;AAAA,MACvE;AAAA,IACF;AAAA,EACF;AAEA,SAAOA;AACT;AASA,IAAMC,qBAAiC,gBAAAH;AAAA,EACrC,EAAE,QAAQP,iBAAgB,iBAAiBE,yBAAwB;AAAA,EACnEC;AAAA,EACAJ;AAAA,EACAK;AAAA,EACAE;AAAA,EACAD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAO,0BAAQK;;;AC9KjB;;;ACAA;;;ACAA;;;ACAA;;;ACAA;;;ACAA;;;ACAA;AAAO,IAAM,eAAe;AAAA,EAC1B,KAAK,IAAI,SAAS,OAAO;AACvB,OAAG,oBAAoB,CAAC,UAAU;AAChC,UAAI,EAAE,OAAO,MAAM,UAAU,GAAG,SAAS,MAAM,MAAM,IAAI;AACvD,cAAM,QAAQ,QAAQ,UAAU,EAAE,KAAK;AAAA,MACzC;AAAA,IACF;AACA,aAAS,KAAK,iBAAiB,SAAS,GAAG,iBAAiB;AAAA,EAC9D;AAAA,EACA,OAAO,IAAI;AAAE,aAAS,KAAK,oBAAoB,SAAS,GAAG,iBAAiB;AAAA,EAAE;AAAA,EAC9E,SAAS,OAAO;AAAE,UAAM,gBAAgB;AAAA,EAAE;AAC5C;AAEO,IAAM,qBAAqB;AAAA,EAChC,YAAY;AAAA,IACV;AAAA,EACF;AACF;;;ACjBA;;;AHmKA,IAAM,WAAW,IAAI,KAAK,SAAS,KAAK,MAAM;;;AInK9C;;;ACAA;;;ACAA;AAEO,IAAM,mBAAmB;AAAA,EAC9B,OAAO;AACL,WAAO;AAAA,MACL,OAAO,CAAC;AAAA,MACR,aAAa,CAAC;AAAA,MACd,SAAS,CAAC;AAAA,MACV,eAAe,oBAAI,IAAI;AAAA,MACvB,gBAAgB,oBAAI,IAAI;AAAA,MACxB,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,gBAAgB;AAAA,MACd,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,cAAc,EAAE,SAAS,YAAY,QAAQ,CAAC,EAAE,GAAG;AAEjD,YAAM,aAAa,IAAI,WAAW,EAAE,YAAY,QAAQ,CAAC;AAEzD,WAAK,UAAU,WAAW,WAAW,KAAK,KAAK,CAAC;AAChD,WAAK,iBAAiB,KAAK,MAAM,KAAK,UAAU,KAAK,QAAQ,MAAM,CAAC,CAAC,CAAC;AAEtE,UAAI,QAAQ,QAAQ;AAClB,aAAK,gBAAgB,oBAAI,IAAI;AAC7B,aAAK,kBAAkB;AACvB,aAAK,iBAAiB,KAAK,MAAM;AACjC,aAAK,YAAY;AAAA,MACnB;AAAA,IACF;AAAA,IACA,YAAY,UAAU,KAAK;AACzB,WAAK,UAAU;AACf,WAAK,cAAc,IAAI,KAAK,QAAQ;AAAA,IACtC;AAAA,IACA,cAAc;AACZ,WAAK,cAAc,KAAK,sBAAsB,KAAK,aAAa;AAChE,WAAK,UAAU,KAAK,QAAQ,IAAI,KAAK,uBAAuB;AAAA,IAC9D;AAAA,IACA,oBAAoB;AAClB,WAAK,UAAU;AACf,WAAK,cAAc,MAAM;AACzB,WAAK,UAAU,KAAK,QAAQ,IAAI,CAAAC,YAAU;AACxC,cAAM,WAAW,KAAK,wBAAwBA,OAAM;AAEpD,YAAI,KAAK,gBAAgB;AACvB,mBAAS,UAAU,SAAS,QAAQ,OAAO,CAAC,EAAE,QAAQ,MAAM,UAAU,CAAC;AAAA,QACzE;AAEA,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAAA,IACA,sBAAsB,eAAe;AACnC,UAAI,UAAU,KAAK;AACnB,oBAAc,QAAQ,cAAY;AAChC,YAAI,UAAU;AACZ,oBAAU,QAAQ,OAAO,OAAK,SAAS,EAAE,UAAU,CAAC;AAAA,QACtD;AAAA,MACF,CAAC;AAED,aAAO;AAAA,IACT;AAAA,IACA,eAAe;AACb,WAAK,UAAU,CAAC;AAChB,WAAK,UAAU,KAAK,MAAM,KAAK,UAAU,KAAK,eAAe,MAAM,CAAC,CAAC,CAAC;AAEtE,WAAK,kBAAkB;AACvB,WAAK,YAAY;AAEjB,YAAMC,SAAQ,EAAE,GAAG,KAAK,QAAQ,OAAO,GAAG,KAAK,QAAQ,OAAO,CAAC,KAAK,EAAE,IAAI,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,OAAU,IAAI,CAAC,CAAC,EAAE;AACpH,WAAK,SAAS,KAAK,EAAE,GAAG,KAAK,QAAQ,OAAAA,OAAM,CAAC;AAAA,IAC9C;AAAA,IACA,0BAA0B,EAAE,QAAAD,QAAO,GAAG;AACpC,MAAAA,QAAO,sBAAsB,CAACA,QAAO;AACrC,MAAAA,QAAO,QAAQ,IAAI,OAAM,EAAE,kBAAkBA,QAAO,mBAAoB;AACxE,WAAK,qBAAqBA,OAAM;AAGhC,WAAK,UAAUA,OAAM;AAAA,IACvB;AAAA,IACA,qBAAqB,EAAE,IAAAE,KAAI,OAAO,QAAAF,QAAO,GAAG;AAC1C,YAAMG,SAAQH,QAAO,QAAQ,UAAU,OAAK,EAAE,OAAOE,GAAE;AACvD,MAAAF,QAAO,QAAQG,MAAK,EAAE,kBAAkB;AACxC,WAAK,qBAAqBH,OAAM;AAChC,WAAK,YAAY;AAGjB,WAAK,UAAUA,OAAM;AAAA,IACvB;AAAA,IACA,qBAAqBA,SAAQ;AAC3B,YAAM,EAAE,KAAK,QAAQ,IAAIA;AACzB,YAAM,qBAAqB,oBAAI,IAAI;AACnC,cAAQ;AAAA,QAAQ,CAAC,EAAE,IAAAE,KAAI,gBAAgB,MACrC,mBAAmB,IAAIA,KAAI,eAAe;AAAA,MAC5C;AAEA,YAAM,OAAO,CAAC,GAAG,mBAAmB,OAAO,CAAC,EAAE,OAAO,OAAO,EAAE;AAE9D,YAAM,gBAAgB,QAAQ,OAAO,CAAC,EAAE,UAAU,EAAE,MAAM,UAAU,CAAE;AAEtE,UAAI,SAAS,cAAc,QAAQ;AACjC,QAAAF,QAAO,sBAAsB;AAAA,MAC/B;AAGA,UAAI,SAAS,GAAG;AACd,QAAAA,QAAO,sBAAsB;AAAA,MAC/B;AAEA,YAAMG,SAAQ,KAAK,QAAQ,UAAU,OAAK,EAAE,QAAQ,GAAG;AACvD,WAAK,QAAQ,OAAOA,QAAO,GAAGH,OAAM;AAEpC,YAAM,mBAAmB,CAAAI,WACvBA,OAAM,GAAG,KAAK,KAAK,oBAAoBA,OAAM,GAAG,CAAC,EAAE,KAAK,OAAK,mBAAmB,IAAI,CAAC,CAAC,CAAC;AAEzF,YAAM,WAAW,OAAO,mBAAmB;AAC3C,WAAK,YAAY,UAAU,GAAG;AAAA,IAChC;AAAA,IACA,wBAAwB,EAAE,KAAAC,MAAK,KAAAC,MAAK,QAAAN,QAAO,GAAG;AAE5C,WAAK,kBAAkB,EAAE,KAAAK,MAAK,KAAAC,MAAK,QAAAN,QAAO,CAAC;AAC3C,WAAK,YAAY;AAGjB,WAAK,UAAUA,OAAM;AAAA,IACvB;AAAA,IACA,kBAAkB,EAAE,KAAAK,MAAK,KAAAC,MAAK,QAAAN,QAAO,GAAG;AACtC,YAAM,EAAE,KAAK,KAAK,SAAS,KAAK,QAAQ,IAAIA;AAC5C,YAAM,gBAAgB,CAAAI,WAASA,OAAM,GAAG,KAAKC,QAAOD,OAAM,GAAG,KAAKE;AAElE,MAAAN,QAAO,WAAWK;AAClB,MAAAL,QAAO,WAAWM;AAElB,YAAMH,SAAQ,KAAK,QAAQ,UAAU,OAAK,EAAE,QAAQ,GAAG;AACvD,WAAK,QAAQ,OAAOA,QAAO,GAAGH,OAAM;AAEpC,YAAM,WACJ,KAAK,MAAMK,IAAG,KAAK,KAAK,MAAM,CAAC,OAAO,KACtC,KAAK,MAAMC,IAAG,KAAK,KAAK,MAAM,CAAC,OAAO,IAClC,SACA;AACN,WAAK,YAAY,UAAU,GAAG;AAAA,IAChC;AAAA,IACA,2BAA2B,EAAE,OAAAC,QAAO,KAAK,QAAAP,QAAO,GAAG;AAEjD,WAAK,qBAAqB,EAAE,OAAAO,QAAO,KAAK,QAAAP,QAAO,CAAC;AAChD,WAAK,YAAY;AAGjB,WAAK,UAAUA,OAAM;AAAA,IACvB;AAAA,IACA,qBAAqB,EAAE,OAAAO,QAAO,KAAK,QAAAP,QAAO,GAAG;AAC3C,YAAM,EAAE,KAAK,WAAW,KAAK,SAAS,SAAS,IAAIA;AACnD,YAAM,mBAAmB,CAAAI,WAAS;AAChC,YAAIG,UAAS,OAAOH,OAAM,QAAQ,KAAKA,OAAM,MAAM,GAAG;AACpD,iBAAO,EACL,MAAM,IAAI,KAAKA,OAAM,QAAQ,CAAC,KAAKG,SAAQ,IAAI,KAAKH,OAAM,MAAM,CAAC;AAAA,QAErE,WAAWG,UAAS,CAAC,OAAOH,OAAM,MAAM,GAAG;AACzC,iBAAO,EAAEG,SAAQ,IAAI,KAAKH,OAAM,MAAM,CAAC;AAAA,QACzC,WAAW,CAACG,UAAS,OAAOH,OAAM,QAAQ,GAAG;AAC3C,iBAAO,EAAE,MAAM,IAAI,KAAKA,OAAM,QAAQ,CAAC;AAAA,QACzC,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AAGA,MAAAJ,QAAO,iBAAiBO;AACxB,MAAAP,QAAO,eAAe;AAEtB,YAAMG,SAAQ,KAAK,QAAQ,UAAU,OAAK,EAAE,QAAQ,GAAG;AACvD,WAAK,QAAQ,OAAOA,QAAO,GAAGH,OAAM;AAEpC,YAAM,WAAW,CAACO,UAAS,CAAC,MAAM,SAAY;AAC9C,WAAK,YAAY,UAAU,GAAG;AAAA,IAChC;AAAA,IACA,QAAQ,EAAE,KAAK,IAAAL,IAAG,GAAG;AAEnB,YAAM,oBAAoB,IAAI,IAAI,KAAK,aAAa;AAEpD,wBAAkB,IAAI,KAAK,MAAS;AAEpC,YAAM,YAAY,KAAK,sBAAsB,iBAAiB;AAE9D,aAAO,UAAU;AAAA,QAAO,CAAC,EAAE,WAAW,MACpC,KAAK,oBAAoB,WAAW,GAAG,CAAC,EAAE,SAASA,GAAE;AAAA,MACvD,EAAE;AAAA,IACJ;AAAA,IACA,wBAAwBF,SAAQ;AAC9B,YAAM,EAAE,KAAK,UAAU,CAAC,EAAE,IAAIA;AAE9B,UAAI,QAAQ,QAAQ;AAClB,QAAAA,QAAO,UAAU,QAAQ,IAAI,QAAM;AAAA,UACjC,GAAG;AAAA,UACH,SAAS,KAAK,QAAQ,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;AAAA,QACzC,EAAE;AAAA,MACJ;AAEA,aAAOA;AAAA,IACT;AAAA,IACA,oBAAoB,OAAO;AACzB,aAAO,MAAM,QAAQ,KAAK,IAAI,MAAM,IAAI,UAAS,CAAC,IAAK,IAAI,CAAC,CAAC,KAAK;AAAA,IACpE;AAAA,IACA,UAAUA,UAAS,CAAC,GAAG;AACrB,YAAM,QAAQ,KAAK,QAAQ,MAAMA,QAAO,GAAG,GAAG,MAAM,GAAG,KAAK,CAAC;AAE7D,UAAIA,QAAO,SAAS,sBAAsB;AACxC,QAAAA,QAAO,QAAQ,QAAQ,CAAC,EAAE,MAAM,gBAAgB,MAAM;AACpD,cAAI,iBAAiB;AAEnB,gBAAI,CAAC,MAAM,SAAS,IAAI,GAAG;AACzB,oBAAM,KAAK,IAAI;AAAA,YACjB;AAAA,UACF,WAAW,MAAM,SAAS,IAAI,GAAG;AAE/B,kBAAM,OAAO,MAAM,QAAQ,IAAI,GAAG,CAAC;AAAA,UACrC;AAAA,QACF,CAAC;AAAA,MACH;AAEA,UAAIA,QAAO,SAAS,WAAW;AAC7B,cAAM,CAAC,IAAIA,QAAO;AAClB,cAAM,CAAC,IAAIA,QAAO;AAAA,MACpB;AAEA,UAAIA,QAAO,SAAS,QAAQ;AAE1B,cAAM,CAAC,IAAIA,QAAO,gBAAgB,YAAY,EAAE,OAAO,GAAG,EAAE;AAC5D,cAAM,CAAC,IAAIA,QAAO,cAAc,YAAY,EAAE,OAAO,GAAG,EAAE;AAAA,MAC5D;AAEA,YAAMC,SAAQ,EAAE,GAAG,KAAK,QAAQ,OAAO,CAACD,QAAO,GAAG,GAAG,MAAM,SAAS,MAAM,KAAK,GAAG,IAAI,OAAU;AAChG,WAAK,SAAS,KAAK,EAAE,GAAG,KAAK,QAAQ,OAAAC,OAAM,CAAC;AAAA,IAC9C;AAAA,IACA,iBAAiB,EAAE,OAAAA,OAAM,GAAG;AAC1B,aAAO,QAAQA,MAAK,EAAE,QAAQ,CAAC,CAAC,GAAG,MAAM,MAAM;AAC7C,cAAM,KAAK,KAAK,QAAQ,UAAU,CAAC,EAAE,IAAI,MAAM,MAAM,GAAG;AACxD,cAAMD,UAAS,KAAK,QAAQ,EAAE;AAE9B,YAAIA,WAAUA,QAAO,SAAS,sBAAsB;AAClD,iBAAO,MAAM,GAAG,EAAE,QAAQ,OAAK;AAC7B,kBAAM,MAAMA,QAAO,QAAQ,UAAU,CAAC,EAAE,KAAK,MAAM,MAAM,IAAI;AAC7D,YAAAA,QAAO,QAAQ,GAAG,EAAE,kBAAkB;AAAA,UACxC,CAAC;AACD,eAAK,QAAQ,OAAO,IAAI,GAAGA,OAAM;AACjC,eAAK,qBAAqBA,OAAM;AAAA,QAClC,WAAWA,WAAUA,QAAO,SAAS,WAAW;AAC9C,gBAAM,CAACK,MAAKC,IAAG,IAAI,OAAO,MAAM,GAAG;AACnC,eAAK,kBAAkB,EAAE,KAAK,CAACD,MAAK,KAAK,CAACC,MAAK,QAAAN,QAAO,CAAC;AAAA,QACzD,WAAWA,WAAUA,QAAO,SAAS,QAAQ;AAC3C,gBAAM,CAACO,QAAO,GAAG,IAAI,OAAO,MAAM,GAAG;AACrC,eAAK,qBAAqB,EAAE,OAAO,IAAI,KAAKA,MAAK,GAAG,KAAK,MAAM,IAAI,KAAK,GAAG,IAAI,QAAW,QAAAP,QAAO,CAAC;AAAA,QACpG;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;AFhKA,IAAMQ,kBAAiB;AAAA,EACrB,MAAM;AAAA,EACN,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,QAAQ,CAAC,gBAAgB;AAAA,EACzB,OAAO;AAAA,IACL,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS,MAAM,CAAC;AAAA,IAClB;AAAA,IACA,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS,MAAM,CAAC;AAAA,IAClB;AAAA,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS,MAAM,CAAC;AAAA,IAClB;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,MAAM;AAAA,MAAC;AAAA,IAClB;AAAA,EACF;AAAA,EACA,OAAO;AACL,WAAO;AAAA,MACL,YAAY,KAAK,EAAE,8CAA8C,KAAK;AAAA,MACtE,OAAO,KAAK;AAAA,IACd;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,YAAY,OAAO;AACjB,WAAK,MAAM,UAAU,KAAK;AAAA,IAC5B;AAAA,EACF;AAAA,EACA,UAAU;AAER,SAAK,cAAc;AAAA,MACjB,SAAS,KAAK;AAAA,MACd,YAAY,KAAK;AAAA,MACjB,OAAO,KAAK;AAAA,IACd,CAAC;AAAA,EACH;AAAA,EACA,SAAS;AAAA,IACP,QAAQ;AAEN,WAAK,aAAa;AAClB,WAAK,MAAM,OAAO;AAAA,IACpB;AAAA,EACF;AACF;AAGA,IAAIC,kBAAiB,WAAY;AAAC,MAAI,MAAI;AAAK,MAAI,KAAG,IAAI;AAAe,MAAI,KAAG,IAAI,MAAM,MAAI;AAAG,SAAO,GAAG,OAAM,EAAC,aAAY,mBAAkB,GAAE,CAAC,GAAG,cAAa,EAAC,OAAM,EAAC,QAAO,QAAO,QAAO,SAAQ,EAAC,GAAE,CAAE,IAAI,UAAS,GAAG,QAAO,EAAC,aAAY,2BAA0B,IAAG,EAAC,SAAQ,IAAI,MAAK,EAAC,GAAE,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,IAAE,IAAI,GAAG,CAAC,CAAC,GAAE,IAAI,GAAG,GAAG,GAAE,IAAI,GAAI,IAAI,SAAS,SAASC,SAAO;AAAC,WAAO,CAAEA,QAAO,SAAS,SAAQ,CAAC,GAAG,YAAW,EAAC,KAAIA,QAAO,KAAI,IAAG,EAAC,sBAAqB,SAAS,QAAO;AAAC,MAAAA,QAAO,SAAS,CAACA,QAAO;AAAA,IAAM,EAAC,GAAE,aAAY,IAAI,GAAG,CAAC,EAAC,KAAI,WAAU,IAAG,WAAU;AAAC,aAAO,CAAC,GAAG,eAAc,EAAC,OAAM,EAAC,UAASA,QAAO,QAAO,SAAQA,QAAO,MAAK,EAAC,CAAC,CAAC;AAAA,IAAC,GAAE,OAAM,KAAI,CAAC,GAAE,MAAK,IAAI,EAAC,GAAE,CAAC,IAAI,GAAG,GAAG,GAAE,GAAG,YAAW,EAAC,OAAM,EAAC,oBAAmBA,QAAO,gBAAe,kBAAiBA,QAAO,aAAY,GAAE,IAAG,EAAC,mBAAkB,SAAU,GAAG;AAAE,aAAO,IAAI,2BAA2B,OAAO,OAAO,CAAC,GAAG,GAAG,EAAC,QAAQA,QAAM,CAAC,CAAC;AAAA,IAAG,EAAC,EAAC,CAAC,CAAC,GAAE,CAAC,CAAC,IAAGA,QAAO,SAAS,uBAAsB,CAAC,GAAG,YAAW,EAAC,KAAIA,QAAO,KAAI,IAAG,EAAC,sBAAqB,SAAS,QAAO;AAAC,MAAAA,QAAO,SAAS,CAACA,QAAO;AAAA,IAAM,EAAC,GAAE,aAAY,IAAI,GAAG,CAAC,EAAC,KAAI,WAAU,IAAG,WAAU;AAAC,aAAO,CAAC,GAAG,eAAc,EAAC,OAAM,EAAC,UAASA,QAAO,QAAO,SAAQA,QAAO,OAAM,aAAYA,QAAO,qBAAoB,YAAW,GAAE,GAAE,IAAG,EAAC,cAAa,SAAU,GAAG;AAAE,eAAO,IAAI,0BAA0B,OAAO,OAAO,CAAC,GAAG,GAAG,EAAC,QAAQA,QAAM,CAAC,CAAC;AAAA,MAAG,EAAC,EAAC,CAAC,CAAC;AAAA,IAAC,GAAE,OAAM,KAAI,CAAC,GAAE,MAAK,IAAI,EAAC,GAAE,CAAC,IAAI,GAAG,GAAG,GAAE,GAAG,OAAM,IAAI,GAAIA,QAAO,SAAS,SAAS,QAAO;AAAC,aAAO,GAAG,YAAW,EAAC,KAAI,OAAO,IAAG,OAAM,EAAC,MAAK,OAAO,IAAG,SAAQ,OAAO,OAAM,WAAU,OAAO,iBAAgB,WAAU,OAAO,QAAO,GAAE,IAAG,EAAC,mBAAkB,SAAU,GAAG;AAAE,eAAO,IAAI,qBAAqB,OAAO,OAAO,CAAC,GAAG,GAAG,EAAC,QAAQA,QAAM,CAAC,CAAC;AAAA,MAAG,EAAC,EAAC,CAAC;AAAA,IAAC,CAAC,GAAE,CAAC,CAAC,CAAC,CAAC,IAAGA,QAAO,SAAS,YAAW,CAAC,GAAG,YAAW,EAAC,KAAIA,QAAO,KAAI,IAAG,EAAC,sBAAqB,SAAS,QAAO;AAAC,MAAAA,QAAO,SAAS,CAACA,QAAO;AAAA,IAAM,EAAC,GAAE,aAAY,IAAI,GAAG,CAAC,EAAC,KAAI,WAAU,IAAG,WAAU;AAAC,aAAO,CAAC,GAAG,eAAc,EAAC,OAAM,EAAC,UAASA,QAAO,QAAO,SAAQA,QAAO,MAAK,EAAC,CAAC,CAAC;AAAA,IAAC,GAAE,OAAM,KAAI,CAAC,GAAE,MAAK,IAAI,EAAC,GAAE,CAAC,IAAI,GAAG,GAAG,GAAE,GAAG,aAAY,EAAC,OAAM,EAAC,cAAaA,QAAO,aAAa,CAAC,GAAG,IAAI,SAAU,MAAM,GAAG;AAAE,aAAQ,OAAO;AAAA,QAAO,CAAC;AAAA,QAAG;AAAA,QAChkE,EAAC,IAAI,KAAK,UAAU,EAAC;AAAA,MAAC;AAAA,IAAI,CAAC,GAAE,OAAM,KAAK,MAAM,CAACA,QAAO,GAAG,GAAE,OAAM,KAAK,KAAK,WAAWA,QAAO,GAAG,CAAC,GAAE,aAAYA,QAAO,UAAS,aAAYA,QAAO,UAAS,eAAc,WAAWA,QAAO,KAAK,EAAC,GAAE,IAAG,EAAC,gBAAe,SAAU,GAAG;AAAE,aAAO,IAAI,wBAAwB,OAAO,OAAO,CAAC,GAAG,GAAG,EAAC,QAAQA,QAAM,CAAC,CAAC;AAAA,IAAG,EAAC,EAAC,CAAC,CAAC,GAAE,CAAC,CAAC,IAAE,IAAI,GAAG,CAAC;AAAA,EAAC,CAAC,CAAC,GAAE,CAAC;AAAC;AACxV,IAAIC,2BAA0B,CAAC;AAG7B,IAAMC,yBAAwB;AAE9B,IAAMC,oBAAmB;AAEzB,IAAMC,6BAA4B;AAElC,IAAMC,kCAAiC;AAEvC,SAASC,mBACP,UAAUC,QAAO,QACjB,OAAO,YAAY,kBAAkB,YACrC,gBAAgB,mBAAmB,sBACnC;AACA,QAAMC,cAAa,OAAO,WAAW,aAAa,OAAO,UAAU,WAAW,CAAC;AAG/E,EAAAA,WAAU,SAAS;AAEnB,MAAI,CAACA,WAAU,QAAQ;AACrB,IAAAA,WAAU,SAAS,SAAS;AAC5B,IAAAA,WAAU,kBAAkB,SAAS;AACrC,IAAAA,WAAU,YAAY;AAEtB,QAAI,WAAY,CAAAA,WAAU,aAAa;AAAA,EACzC;AAEA,EAAAA,WAAU,WAAW;AAErB,MAAI,OAAO;AACT,QAAI;AACJ,QAAI,OAAO;AAET,aAAO,SAAS,SAAS;AAEvB,kBACE;AAAA,QACC,KAAK,UAAU,KAAK,OAAO;AAAA,QAC3B,KAAK,UAAU,KAAK,OAAO,UAAU,KAAK,OAAO,OAAO;AAE3D,YAAI,CAAC,WAAW,OAAO,wBAAwB,aAAa;AAC1D,oBAAU;AAAA,QACZ;AAEA,YAAID,QAAO;AACT,UAAAA,OAAM,KAAK,MAAM,kBAAkB,OAAO,CAAC;AAAA,QAC7C;AAEA,YAAI,WAAW,QAAQ,uBAAuB;AAC5C,kBAAQ,sBAAsB,IAAI,gBAAgB;AAAA,QACpD;AAAA,MACF;AAGA,MAAAC,WAAU,eAAe;AAAA,IAC3B,WACSD,QAAO;AACd,aAAO,aACH,SAAS,SAAS;AAChB,QAAAA,OAAM,KAAK,MAAM,qBAAqB,SAAS,KAAK,MAAM,SAAS,UAAU,CAAC;AAAA,MAChF,IACA,SAAS,SAAS;AAChB,QAAAA,OAAM,KAAK,MAAM,eAAe,OAAO,CAAC;AAAA,MAC1C;AAAA,IACN;AAEA,QAAI,SAAS,QAAW;AACtB,UAAIC,WAAU,YAAY;AAExB,cAAM,iBAAiBA,WAAU;AACjC,QAAAA,WAAU,SAAS,SAAS,yBAAyB,GAAG,SAAS;AAC/D,eAAK,KAAK,OAAO;AACjB,iBAAO,eAAe,GAAG,OAAO;AAAA,QAClC;AAAA,MACF,OAAO;AAEL,cAAM,WAAWA,WAAU;AAC3B,QAAAA,WAAU,eAAe,WAAW,CAAC,EAAE,OAAO,UAAU,IAAI,IAAI,CAAC,IAAI;AAAA,MACvE;AAAA,IACF;AAAA,EACF;AAEA,SAAOA;AACT;AASA,IAAMC,qBAAiC,gBAAAH;AAAA,EACrC,EAAE,QAAQP,iBAAgB,iBAAiBE,yBAAwB;AAAA,EACnEC;AAAA,EACAJ;AAAA,EACAK;AAAA,EACAE;AAAA,EACAD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAO,kBAAQK;;;AG1QjB;;;ACAA;A;;;;;;;;ACCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACDA,IAAM,OAAO;AACb,IAAM,OAAO;AACb,IAAM,QAAmC;EACvC,MAAM;EACN,OAAO;EACP,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,MAAM;EACN,KAAK;EACL,MAAM;EACN,KAAK;;AAGD,SAAU,aAAa,KAAW;AACtC,QAAMC,SAAQ,gBAAgB,KAAK,GAAG;AACtC,SAAOA,SAAQA,OAAM,CAAC,IAAI;AAC5B;AAEM,SAAU,YAAY,KAAW;AACrC,QAAM,YAAY,aAAa,GAAG,EAAE,YAAW;AAC/C,SAAO,MAAM,SAAS,KAAK;AAC7B;AAEM,SAAU,WAAW,KAAaC,UAAsB;AAE5D,MAAI,IAAI,MAAM,eAAe,GAAG;AAC9B,WAAO;;AAIT,MAAI,IAAI,MAAM,OAAO,GAAG;AACtB,WAAO,OAAO,SAAS,WAAW;;AAIpC,MAAI,IAAI,MAAM,WAAW,GAAG;AAC1B,WAAO;;AAGT,QAAM,MAAM,SAAS,eAAe,mBAAkB;AACtD,QAAM,OAAO,IAAI,cAAc,MAAM;AACrC,QAAM,IAAI,IAAI,cAAc,GAAG;AAE/B,MAAI,KAAK,YAAY,IAAI;AACzB,MAAI,KAAK,YAAY,CAAC;AAEtB,MAAIA,UAAS;AACX,SAAK,OAAOA;;AAGd,IAAE,OAAO;AAET,SAAO,EAAE;AACX;AAEM,SAAU,UAAU,KAAW;AACnC,SAAO,IAAI,OAAO,UAAU,MAAM;AACpC;AAEM,SAAU,YAAY,SAAiB,UAAgB;AAC3D,SAAO,QAAQ,QAAQ,WAAW,OAAO;AAC3C;AAEM,SAAU,oBAAoB,SAAe;AACjD,SAAO,QAAQ,MAAM,GAAG,EAAE,CAAC;AAC7B;AAEO,IAAM,OAAQ,0BAASC,QAAI;AAGhC,MAAI,UAAU;AAGd,QAAM,SAAS;;IAEb,QAAS,KAAK,OAAM,IAAK,KAAA,IAAA,IAAM,CAAC,KAAK,GAAG,SAAS,EAAE,CAAC,GAAG,MAAM,EAAE;;AAEjE,SAAO,MAAK;AACV,eAAW;AACX,WAAO,IAAI,OAAM,CAAE,GAAG,OAAO;EAC/B;AACF,GAAE;AAOI,SAAUC,SAAW,WAAc;AACvC,QAAM,MAAW,CAAA;AAEjB,WAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAI,GAAG,KAAK,GAAG;AACnD,QAAI,KAAK,UAAU,CAAC,CAAC;;AAGvB,SAAO;AACT;AAEA,SAAS,GAAG,MAAmB,eAAqB;AAClD,QAAM,MAAM,OAAO,iBAAiB,IAAI,EAAE,iBAAiB,aAAa;AACxE,SAAO,WAAW,IAAI,QAAQ,MAAM,EAAE,CAAC;AACzC;AAEM,SAAU,aAAa,MAAiB;AAC5C,QAAM,aAAa,GAAG,MAAM,mBAAmB;AAC/C,QAAM,cAAc,GAAG,MAAM,oBAAoB;AACjD,SAAO,KAAK,cAAc,aAAa;AACzC;AAEM,SAAU,cAAc,MAAiB;AAC7C,QAAM,YAAY,GAAG,MAAM,kBAAkB;AAC7C,QAAM,eAAe,GAAG,MAAM,qBAAqB;AACnD,SAAO,KAAK,eAAe,YAAY;AACzC;AAEM,SAAU,gBAAa;AAC3B,MAAI;AAEJ,MAAI;AACJ,MAAI;AACF,oBAAgB;WACT,GAAG;;AAIZ,QAAM,MACJ,iBAAiB,cAAc,MAC3B,cAAc,IAAI,mBAClB;AACN,MAAI,KAAK;AACP,YAAQ,SAAS,KAAK,EAAE;AACxB,QAAI,OAAO,MAAM,KAAK,GAAG;AACvB,cAAQ;;;AAGZ,SAAO,SAAS,OAAO,oBAAoB;AAC7C;AAoBM,SAAU,YAAY,KAAW;AACrC,SAAO,IAAI,QAAQ,CAACC,UAAS,WAAU;AACrC,UAAM,MAAM,IAAI,MAAK;AACrB,QAAI,SAAS,MAAMA,SAAQ,GAAG;AAC9B,QAAI,UAAU;AACd,QAAI,cAAc;AAClB,QAAI,WAAW;AACf,QAAI,MAAM;EACZ,CAAC;AACH;AAEM,SAAgB,aAAa,KAAe;;AAChD,WAAO,QAAQ,QAAO,EACnB,KAAK,MAAM,IAAI,cAAa,EAAG,kBAAkB,GAAG,CAAC,EACrD,KAAK,kBAAkB,EACvB,KAAK,CAACC,UAAS,oCAAoCA,KAAI,EAAE;EAC9D,CAAC;;AAEK,SAAgB,cACpB,MACA,OACA,QAAc;;AAEd,UAAM,QAAQ;AACd,UAAM,MAAM,SAAS,gBAAgB,OAAO,KAAK;AACjD,UAAM,gBAAgB,SAAS,gBAAgB,OAAO,eAAe;AAErE,QAAI,aAAa,SAAS,GAAG,KAAK,EAAE;AACpC,QAAI,aAAa,UAAU,GAAG,MAAM,EAAE;AACtC,QAAI,aAAa,WAAW,OAAO,KAAK,IAAI,MAAM,EAAE;AAEpD,kBAAc,aAAa,SAAS,MAAM;AAC1C,kBAAc,aAAa,UAAU,MAAM;AAC3C,kBAAc,aAAa,KAAK,GAAG;AACnC,kBAAc,aAAa,KAAK,GAAG;AACnC,kBAAc,aAAa,6BAA6B,MAAM;AAE9D,QAAI,YAAY,aAAa;AAC7B,kBAAc,YAAY,IAAI;AAE9B,WAAO,aAAa,GAAG;EACzB,CAAC;;;;AD/LD,IAAM,QAEF,CAAA;AAEJ,SAAS,YAAY,KAAW;AAC9B,MAAI,MAAM,IAAI,QAAQ,QAAQ,EAAE;AAGhC,MAAI,sBAAsB,KAAK,GAAG,GAAG;AACnC,UAAM,IAAI,QAAQ,QAAQ,EAAE;;AAG9B,SAAO;AACT;AAEM,SAAU,eACd,KACA,SAAgB;AAEhB,QAAM,WAAW,YAAY,GAAG;AAEhC,MAAI,MAAM,QAAQ,KAAK,MAAM;AAC3B,WAAO,MAAM,QAAQ;;AAKvB,MAAI,QAAQ,WAAW;AAErB,YAAQ,KAAK,KAAK,GAAG,IAAI,MAAM,QAAO,oBAAI,KAAI,GAAG,QAAO;;AAG1D,QAAM,SAAS,CAAC,WAAyB;AACvC,QAAIC,eAAc;AAClB,QAAI,QAAQ,kBAAkB;AAC5B,YAAM,QAAQ,QAAQ,iBAAiB,MAAM,GAAG;AAChD,UAAI,SAAS,MAAM,CAAC,GAAG;AACrB,QAAAA,eAAc,MAAM,CAAC;;;AAIzB,QAAI,MAAM,6BAA6B,GAAG;AAC1C,QAAI,QAAQ;AACV,YAAM,OAAO,WAAW,WAAW,SAAS,OAAO;;AAGrD,QAAI,KAAK;AACP,cAAQ,MAAM,GAAG;;AAGnB,WAAO;MACL,MAAMA;MACN,aAAa;;EAEjB;AAEA,QAAM,WAAW,OACd,MAAM,GAAG,EACT,KAAK,CAAC;;IAEL,IAAI,KAAI,EAAG,KAAK,CAAC,UAAU;MACzB;MACA,aAAa,IAAI,QAAQ,IAAI,cAAc,KAAK;MAChD;GAAC,EAEJ,KACC,CAAC,EAAE,MAAM,YAAW,MAClB,IAAI,QAAkB,CAACC,UAAS,WAAU;AACxC,UAAM,SAAS,IAAI,WAAU;AAC7B,WAAO,YAAY,MACjBA,SAAQ;MACN;MACA,MAAM,OAAO;KACd;AACH,WAAO,UAAU;AACjB,WAAO,cAAc,IAAI;EAC3B,CAAC,CAAC,EAEL,KAAK,CAAC,EAAE,MAAM,YAAW,OAAQ;IAChC;IACA,MAAM,oBAAoB,IAAI;IAC9B,EAED,MAAM,MAAM;AAGf,QAAM,QAAQ,IAAI;AAElB,SAAO;AACT;;;AEjGA;AAIA,SAAS,cAAcC,QAA0B;AAC/C,QAAM,UAAUA,OAAM,iBAAiB,SAAS;AAChD,SAAO,GAAGA,OAAM,OAAO,cAAc,QAAQ,QAAQ,QAAQ,EAAE,CAAC;AAClE;AAEA,SAAS,oBAAoBA,QAA0B;AACrD,SAAOC,SAAgBD,MAAK,EACzB,IAAI,CAAC,SAAQ;AACZ,UAAM,QAAQA,OAAM,iBAAiB,IAAI;AACzC,UAAM,WAAWA,OAAM,oBAAoB,IAAI;AAE/C,WAAO,GAAG,IAAI,KAAK,KAAK,GAAG,WAAW,gBAAgB,EAAE;EAC1D,CAAC,EACA,KAAK,GAAG;AACb;AAEA,SAAS,sBACP,WACA,QACAA,QAA0B;AAE1B,QAAM,WAAW,IAAI,SAAS,IAAI,MAAM;AACxC,QAAM,UAAUA,OAAM,UAClB,cAAcA,MAAK,IACnB,oBAAoBA,MAAK;AAE7B,SAAO,SAAS,eAAe,GAAG,QAAQ,IAAI,OAAO,GAAG;AAC1D;AAEA,SAAS,mBACP,YACA,YACA,QAAc;AAEd,QAAMA,SAAQ,OAAO,iBAAiB,YAAY,MAAM;AACxD,QAAM,UAAUA,OAAM,iBAAiB,SAAS;AAChD,MAAI,YAAY,MAAM,YAAY,QAAQ;AACxC;;AAGF,QAAM,YAAY,KAAI;AAEtB,MAAI;AACF,eAAW,YAAY,GAAG,WAAW,SAAS,IAAI,SAAS;WACpD,KAAK;AACZ;;AAGF,QAAM,eAAe,SAAS,cAAc,OAAO;AACnD,eAAa,YAAY,sBAAsB,WAAW,QAAQA,MAAK,CAAC;AACxE,aAAW,YAAY,YAAY;AACrC;AAEM,SAAU,oBACd,YACA,YAAa;AAEb,qBAAmB,YAAY,YAAY,SAAS;AACpD,qBAAmB,YAAY,YAAY,QAAQ;AACrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1DA,SAAe,mBAAmB,MAAuB;;AACvD,UAAM,UAAU,KAAK,UAAS;AAC9B,QAAI,YAAY,UAAU;AACxB,aAAO,QAAQ,QAAQ,KAAK,UAAU,KAAK,CAAsB;;AAGnE,WAAO,YAAY,OAAO;EAC5B,CAAC;;AAED,SAAe,kBAAkB,MAAwB,SAAgB;;AACvE,WAAO,QAAQ,QAAQ,KAAK,MAAM,EAC/B,KAAK,CAAC,QAAQ,eAAe,KAAK,OAAO,CAAC,EAC1C,KAAK,CAAC,SACL,YAAY,KAAK,MAAM,YAAY,KAAK,MAAM,KAAK,KAAK,WAAW,CAAC,EAErE,KAAK,CAAC,YAAY,YAAY,OAAO,CAAC;EAC3C,CAAC;;AAED,SAAe,gBACb,MACA,SAAgB;;AAEhB,QAAI,gBAAgB,mBAAmB;AACrC,aAAO,mBAAmB,IAAI;;AAGhC,QAAI,gBAAgB,oBAAoB,KAAK,QAAQ;AACnD,aAAO,kBAAkB,MAAM,OAAO;;AAGxC,WAAO,QAAQ,QAAQ,KAAK,UAAU,KAAK,CAAM;EACnD,CAAC;;AAED,IAAM,gBAAgB,CAAC,SACrB,KAAK,WAAW,QAAQ,KAAK,QAAQ,YAAW,MAAO;AAEzD,SAAe,cACb,YACA,YACA,SAAgB;;;AAEhB,UAAME,YACJ,cAAc,UAAU,KAAK,WAAW,gBACpCC,SAAW,WAAW,cAAa,CAAE,IACrCA,WAAYC,MAAA,WAAW,gBAAU,QAAAA,QAAA,SAAAA,MAAI,YAAY,UAAU;AAEjE,QAAIF,UAAS,WAAW,KAAK,sBAAsB,kBAAkB;AACnE,aAAO,QAAQ,QAAQ,UAAU;;AAGnC,WAAOA,UACJ,OACC,CAAC,UAAU,UACT,SAEG,KAAK,MAAM,UAAU,OAAO,OAAO,CAAC,EACpC,KAAK,CAAC,gBAAmC;AAExC,UAAI,aAAa;AACf,mBAAW,YAAY,WAAW;;IAEtC,CAAC,GACL,QAAQ,QAAO,CAAE,EAElB,KAAK,MAAM,UAAU;;;AAG1B,SAAS,cAAqC,YAAe,YAAa;AACxE,QAAM,SAAS,OAAO,iBAAiB,UAAU;AACjD,QAAMG,UAAS,WAAW;AAE1B,MAAI,CAACA,SAAQ;AACX;;AAGF,MAAI,OAAO,SAAS;AAClB,IAAAA,QAAO,UAAU,OAAO;SACnB;AACL,IAAAF,SAAgB,MAAM,EAAE,QAAQ,CAAC,SAAQ;AACvC,MAAAE,QAAO,YACL,MACA,OAAO,iBAAiB,IAAI,GAC5B,OAAO,oBAAoB,IAAI,CAAC;IAEpC,CAAC;;AAEL;AAEA,SAAS,gBAAuC,YAAe,YAAa;AAC1E,MAAI,sBAAsB,qBAAqB;AAC7C,eAAW,YAAY,WAAW;;AAGpC,MAAI,sBAAsB,kBAAkB;AAC1C,eAAW,aAAa,SAAS,WAAW,KAAK;;AAErD;AAEA,SAAe,SACb,YACA,YAAa;;AAEb,QAAI,EAAE,sBAAsB,UAAU;AACpC,aAAO,QAAQ,QAAQ,UAAU;;AAGnC,WAAO,QAAQ,QAAO,EACnB,KAAK,MAAM,cAAc,YAAY,UAAU,CAAC,EAChD,KAAK,MAAM,oBAAoB,YAAY,UAAU,CAAC,EACtD,KAAK,MAAM,gBAAgB,YAAY,UAAU,CAAC,EAClD,KAAK,MAAM,UAAU;EAC1B,CAAC;;AAEK,SAAgB,UACpB,MACA,SACA,QAAgB;;AAEhB,QAAI,CAAC,UAAU,QAAQ,UAAU,CAAC,QAAQ,OAAO,IAAI,GAAG;AACtD,aAAO,QAAQ,QAAQ,IAAI;;AAG7B,WAAO,QAAQ,QAAQ,IAAI,EACxB,KAAK,CAAC,eAAe,gBAAgB,YAAY,OAAO,CAAe,EACvE,KAAK,CAAC,eAAe,cAAc,MAAM,YAAY,OAAO,CAAC,EAC7D,KAAK,CAAC,eAAe,SAAS,MAAM,UAAU,CAAC;EACpD,CAAC;;A;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/HD,IAAM,YAAY;AAClB,IAAM,wBAAwB;AAC9B,IAAM,iBAAiB;AAEjB,SAAU,QAAQ,KAAW;AAEjC,QAAM,UAAU,IAAI,QAAQ,4BAA4B,MAAM;AAC9D,SAAO,IAAI,OAAO,iBAAiB,OAAO,eAAe,GAAG;AAC9D;AAEM,SAAU,UAAU,SAAe;AACvC,QAAM,SAAmB,CAAA;AAEzB,UAAQ,QAAQ,WAAW,CAAC,KAAK,WAAW,QAAO;AACjD,WAAO,KAAK,GAAG;AACf,WAAO;EACT,CAAC;AAED,SAAO,OAAO,OAAO,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC;AAC/C;AAEM,SAAU,MACd,SACA,aACA,SACA,SACAC,MAAsC;AAEtC,QAAM,cAAc,UAAU,WAAW,aAAa,OAAO,IAAI;AAEjE,SAAO,QAAQ,QAAQ,WAAW,EAC/B,KAAqD,CAAC,QACrDA,OAAMA,KAAI,GAAG,IAAI,eAAe,KAAK,OAAO,CAAC,EAE9C,KAAK,CAAC,SAAQ;AACb,QAAI,OAAO,SAAS,UAAU;AAC5B,aAAO,YAAY,MAAM,YAAY,WAAW,CAAC;;AAGnD,WAAO,YACL,KAAK,MACL,YAAY,WAAW,KAAK,KAAK,WAAW;EAEhD,CAAC,EACA,KAAK,CAAC,YAAY,QAAQ,QAAQ,QAAQ,WAAW,GAAG,KAAK,OAAO,IAAI,CAAC,EACzE,KACC,CAAC,YAAY,SACb,MAAM,WAAW;AAEvB;AAEA,SAAS,0BACPC,MACA,EAAE,oBAAmB,GAAW;AAEhC,SAAO,CAAC,sBACJA,OACAA,KAAI,QAAQ,gBAAgB,CAACC,WAAiB;AAE5C,WAAO,MAAM;AACX,YAAM,CAAC,KAAI,EAAGC,OAAM,IAAI,sBAAsB,KAAKD,MAAK,KAAK,CAAA;AAE7D,UAAI,CAACC,SAAQ;AACX,eAAO;;AAGT,UAAIA,YAAW,qBAAqB;AAClC,eAAO,QAAQ,GAAG;;;EAGxB,CAAC;AACP;AAEM,SAAU,YAAY,KAAW;AACrC,SAAO,IAAI,OAAO,SAAS,MAAM;AACnC;AAEM,SAAgB,eACpB,SACAC,UACA,SAAgB;;AAEhB,QAAI,CAAC,YAAY,OAAO,GAAG;AACzB,aAAO,QAAQ,QAAQ,OAAO;;AAGhC,UAAM,kBAAkB,0BAA0B,SAAS,OAAO;AAClE,WAAO,QAAQ,QAAQ,eAAe,EACnC,KAAK,SAAS,EACd,KAAK,CAAC,SACL,KAAK,OACH,CAAC,UAAU;;MAET,SAAS,KAAK,CAAC,QAAQ,MAAM,KAAK,KAAKA,UAAS,OAAO,CAAC;OAC1D,QAAQ,QAAQ,eAAe,CAAC,CACjC;EAEP,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChGD,SAAe,gBACb,YACA,SAAgB;;;AAEhB,UAAM,cAAaC,MAAA,WAAW,WAAK,QAAAA,QAAA,SAAA,SAAAA,IAAE,iBAAiB,YAAY;AAClE,QAAI,CAAC,YAAY;AACf,aAAO,QAAQ,QAAQ,UAAU;;AAGnC,WAAO,QAAQ,QAAQ,UAAU,EAC9B,KAAK,CAAC,cAAc,eAAe,WAAW,MAAM,OAAO,CAAC,EAC5D,KAAK,CAAC,cAAa;AAClB,iBAAW,MAAM,YACf,cACA,WACA,WAAW,MAAM,oBAAoB,YAAY,CAAC;AAGpD,aAAO;IACT,CAAC;;;AAGL,SAAe,eACb,YACA,SAAgB;;AAEhB,QACE,EAAE,sBAAsB,oBAAoB,CAAC,UAAU,WAAW,GAAG,MACrE,EACE,sBAAsB,mBACtB,CAAC,UAAU,WAAW,KAAK,OAAO,IAEpC;AACA,aAAO,QAAQ,QAAQ,UAAU;;AAGnC,UAAM,MACJ,sBAAsB,mBAClB,WAAW,MACX,WAAW,KAAK;AAEtB,WAAO,QAAQ,QAAQ,GAAG,EACvB,KAAK,CAAC,QAAQ,eAAe,KAAK,OAAO,CAAC,EAC1C,KAAK,CAAC,SACL,YAAY,KAAK,MAAM,YAAY,GAAG,KAAK,KAAK,WAAW,CAAC,EAE7D,KACC,CAAC,YACC,IAAI,QAAQ,CAACC,UAAS,WAAU;AAC9B,iBAAW,SAASA;AACpB,iBAAW,UAAU;AACrB,UAAI,sBAAsB,kBAAkB;AAC1C,mBAAW,SAAS;AACpB,mBAAW,MAAM;aACZ;AACL,mBAAW,KAAK,UAAU;;IAE9B,CAAC,CAAC,EAEL,KACC,MAAM,YACN,MAAM,UAAU;EAEtB,CAAC;;AAED,SAAe,cACb,YACA,SAAgB;;AAEhB,UAAMC,YAAWC,SAAqB,WAAW,UAAU;AAE3D,UAAM,YAAYD,UAAS,IAAI,CAAC,UAAU,YAAY,OAAO,OAAO,CAAC;AACrE,WAAO,QAAQ,IAAI,SAAS,EAAE,KAAK,MAAM,UAAU;EACrD,CAAC;;AAEK,SAAgB,YACpB,YACA,SAAgB;;AAEhB,QAAI,EAAE,sBAAsB,UAAU;AACpC,aAAO,QAAQ,QAAQ,UAAU;;AAGnC,WAAO,QAAQ,QAAQ,UAAU,EAC9B,KAAK,CAAC,SAAS,gBAAgB,MAAM,OAAO,CAAC,EAC7C,KAAK,CAAC,SAAS,eAAe,MAAM,OAAO,CAAC,EAC5C,KAAK,CAAC,SAAS,cAAc,MAAM,OAAO,CAAC;EAChD,CAAC;;;;AC1FD;AAAM,SAAU,sBACd,MACA,SAAgB;AAEhB,QAAM,EAAE,OAAAE,OAAK,IAAK;AAElB,MAAI,QAAQ,iBAAiB;AAC3B,IAAAA,OAAM,kBAAkB,QAAQ;;AAGlC,MAAI,QAAQ,OAAO;AACjB,IAAAA,OAAM,QAAQ,GAAG,QAAQ,KAAK;;AAGhC,MAAI,QAAQ,QAAQ;AAClB,IAAAA,OAAM,SAAS,GAAG,QAAQ,MAAM;;AAGlC,QAAM,SAAS,QAAQ;AACvB,MAAI,UAAU,MAAM;AAClB,WAAO,KAAK,MAAM,EAAE,QAAQ,CAAC,QAAY;AACvC,MAAAA,OAAM,GAAG,IAAI,OAAO,GAAG;IACzB,CAAC;;AAGH,SAAO;AACT;A;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBA,IAAM,gBAEF,CAAA;AAEJ,SAAS,SAAS,KAAW;AAC3B,QAAMC,SAAQ,cAAc,GAAG;AAC/B,MAAIA,UAAS,MAAM;AACjB,WAAOA;;AAGT,QAAM,WAAW,OAAO,MAAM,GAAG,EAAE,KAAK,CAAC,SAAS;IAChD;IACA,SAAS,IAAI,KAAI;IACjB;AAEF,gBAAc,GAAG,IAAI;AAErB,SAAO;AACT;AAEA,SAAe,WAAW,MAAc;;AACtC,WAAO,KAAK,QAAQ,KAAK,CAAC,QAAe;AACvC,UAAI,UAAU;AACd,YAAM,WAAW;AACjB,YAAM,WAAW,QAAQ,MAAM,eAAe,KAAK,CAAA;AACnD,YAAM,YAAY,SAAS,IAAI,CAACC,cAAoB;AAClD,YAAI,MAAMA,UAAS,QAAQ,UAAU,IAAI;AACzC,YAAI,CAAC,IAAI,WAAW,UAAU,GAAG;AAC/B,gBAAM,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE;;AAI/B,eAAO,OACJ,MAAM,GAAG,EACT,KAAK,CAAC,QAAQ,IAAI,KAAI,CAAE,EACxB,KACC,CAAC,SACC,IAAI,QACF,CAACC,UAAS,WAAU;AAClB,gBAAM,SAAS,IAAI,WAAU;AAC7B,iBAAO,YAAY,MAAK;AAEtB,sBAAU,QAAQ,QAAQD,WAAU,OAAO,OAAO,MAAM,GAAG;AAC3D,YAAAC,SAAQ,CAACD,WAAU,OAAO,MAAM,CAAC;UACnC;AACA,iBAAO,UAAU;AACjB,iBAAO,cAAc,IAAI;QAC3B,CAAC,CACF;MAET,CAAC;AAGD,aAAO,QAAQ,IAAI,SAAS,EAAE,KAAK,MAAM,OAAO;IAClD,CAAC;EACH,CAAC;;AAED,SAAS,SAAS,QAAc;AAC9B,MAAI,UAAU,MAAM;AAClB,WAAO,CAAA;;AAGT,QAAM,SAAmB,CAAA;AACzB,QAAM,gBAAgB;AAEtB,MAAI,UAAU,OAAO,QAAQ,eAAe,EAAE;AAE9C,QAAM,iBAAiB,IAAI,OACzB,oDACA,IAAI;AAGN,SAAO,MAAM;AACX,UAAME,WAAU,eAAe,KAAK,OAAO;AAC3C,QAAIA,aAAY,MAAM;AACpB;;AAEF,WAAO,KAAKA,SAAQ,CAAC,CAAC;;AAExB,YAAU,QAAQ,QAAQ,gBAAgB,EAAE;AAE5C,QAAM,cAAc;AAEpB,QAAM,mBACJ;AAGF,QAAM,eAAe,IAAI,OAAO,kBAAkB,IAAI;AAEtD,SAAO,MAAM;AACX,QAAIA,WAAU,YAAY,KAAK,OAAO;AACtC,QAAIA,aAAY,MAAM;AACpB,MAAAA,WAAU,aAAa,KAAK,OAAO;AACnC,UAAIA,aAAY,MAAM;AACpB;aACK;AACL,oBAAY,YAAY,aAAa;;WAElC;AACL,mBAAa,YAAY,YAAY;;AAEvC,WAAO,KAAKA,SAAQ,CAAC,CAAC;;AAGxB,SAAO;AACT;AAEA,SAAe,YACb,aAA4B;;AAE5B,UAAM,MAAsB,CAAA;AAC5B,UAAM,YAAsC,CAAA;AAG5C,gBAAY,QAAQ,CAAC,UAAS;AAC5B,UAAI,cAAc,OAAO;AACvB,YAAI;AACF,UAAAC,SAAiB,MAAM,QAAQ,EAAE,QAC/B,CAAC,MAAeC,WAAiB;AAC/B,gBAAI,KAAK,SAAS,QAAQ,aAAa;AACrC,kBAAI,cAAcA,SAAQ;AAC1B,oBAAM,MAAO,KAAuB;AACpC,oBAAM,WAAW,SAAS,GAAG,EAC1B,KAAK,CAAC,aAAc,WAAW,WAAW,QAAQ,IAAI,EAAG,EACzD,KAAK,CAAC,YACL,SAAS,OAAO,EAAE,QAAQ,CAAC,SAAQ;AACjC,oBAAI;AACF,wBAAM,WACJ,MACA,KAAK,WAAW,SAAS,IACpB,eAAe,IAChB,MAAM,SAAS,MAAM;yBAEpB,OAAO;AACd,0BAAQ,MAAM,wCAAwC;oBACpD;oBACA;mBACD;;cAEL,CAAC,CAAC,EAEH,MAAM,CAAC,MAAK;AACX,wBAAQ,MAAM,4BAA4B,EAAE,SAAQ,CAAE;cACxD,CAAC;AAEH,wBAAU,KAAK,QAAQ;;UAE3B,CAAC;iBAEI,GAAG;AACV,gBAAM,SACJ,YAAY,KAAK,CAAC,MAAM,EAAE,QAAQ,IAAI,KAAK,SAAS,YAAY,CAAC;AACnE,cAAI,MAAM,QAAQ,MAAM;AACtB,sBAAU,KACR,SAAS,MAAM,IAAI,EAChB,KAAK,CAAC,aAAc,WAAW,WAAW,QAAQ,IAAI,EAAG,EACzD,KAAK,CAAC,YACL,SAAS,OAAO,EAAE,QAAQ,CAAC,SAAQ;AACjC,qBAAO,WAAW,MAAM,MAAM,SAAS,MAAM;YAC/C,CAAC,CAAC,EAEH,MAAM,CAAC,QAAO;AACb,sBAAQ,MAAM,mCAAmC,IAAI,SAAQ,CAAE;YACjE,CAAC,CAAC;;AAGR,kBAAQ,MAAM,kCAAkC,EAAE,SAAQ,CAAE;;;IAGlE,CAAC;AAED,WAAO,QAAQ,IAAI,SAAS,EAAE,KAAK,MAAK;AAEtC,kBAAY,QAAQ,CAAC,UAAS;AAC5B,YAAI,cAAc,OAAO;AACvB,cAAI;AACF,YAAAD,SAAsB,MAAM,QAAQ,EAAE,QACpC,CAAC,SAAsB;AACrB,kBAAI,KAAK,IAAI;YACf,CAAC;mBAEI,GAAG;AACV,oBAAQ,MACN,sCAAsC,MAAM,IAAI,IAChD,EAAE,SAAQ,CAAE;;;MAIpB,CAAC;AAED,aAAO;IACT,CAAC;EACH,CAAC;;AAED,SAAS,gBAAgB,UAAwB;AAC/C,SAAO,SACJ,OAAO,CAAC,SAAS,KAAK,SAAS,QAAQ,cAAc,EACrD,OAAO,CAAC,SAAS,YAAY,KAAK,MAAM,iBAAiB,KAAK,CAAC,CAAC;AACrE;AAEA,SAAe,kBACb,MAAO;;AAEP,WAAO,IAAI,QAAQ,CAACF,UAAS,WAAU;AACrC,UAAI,KAAK,iBAAiB,MAAM;AAC9B,eAAO,IAAI,MAAM,2CAA2C,CAAC;;AAE/D,MAAAA,SAAQE,SAAQ,KAAK,cAAc,WAAW,CAAC;IACjD,CAAC,EACE,KAAK,CAAC,gBAAiC,YAAY,WAAW,CAAC,EAC/D,KAAK,eAAe;EACzB,CAAC;;AAEK,SAAgB,cACpB,MACA,SAAgB;;AAEhB,WAAO,kBAAkB,IAAI,EAC1B,KAAK,CAAC,UACL,QAAQ,IACN,MAAM,IAAI,CAAC,SAAQ;AACjB,YAAME,WAAU,KAAK,mBACjB,KAAK,iBAAiB,OACtB;AACJ,aAAO,eAAe,KAAK,SAASA,UAAS,OAAO;IACtD,CAAC,CAAC,CACH,EAEF,KAAK,CAAC,aAAa,SAAS,KAAK,IAAI,CAAC;EAC3C,CAAC;;AAEK,SAAgB,cACpB,YACA,SAAgB;;AAEhB,YACE,QAAQ,gBAAgB,OACpB,QAAQ,QAAQ,QAAQ,YAAY,IACpC,cAAc,YAAY,OAAO,GACrC,KAAK,CAAC,YAAW;AACjB,YAAM,YAAY,SAAS,cAAc,OAAO;AAChD,YAAM,eAAe,SAAS,eAAe,OAAO;AAEpD,gBAAU,YAAY,YAAY;AAElC,UAAI,WAAW,YAAY;AACzB,mBAAW,aAAa,WAAW,WAAW,UAAU;aACnD;AACL,mBAAW,YAAY,SAAS;;AAGlC,aAAO;IACT,CAAC;EACH,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxPD,SAAS,aAAa,MAAmB,UAAmB,CAAA,GAAE;AAC5D,QAAM,QAAQ,QAAQ,SAAS,aAAa,IAAI;AAChD,QAAM,SAAS,QAAQ,UAAU,cAAc,IAAI;AAEnD,SAAO,EAAE,OAAO,OAAM;AACxB;AAEM,SAAgB,MACpB,MACA,UAAmB,CAAA,GAAE;;AAErB,UAAM,EAAE,OAAO,OAAM,IAAK,aAAa,MAAM,OAAO;AAEpD,WAAO,QAAQ,QAAQ,IAAI,EACxB,KAAK,CAAC,eAAe,UAAU,YAAY,SAAS,IAAI,CAAC,EACzD,KAAK,CAAC,eAAe,cAAc,YAAa,OAAO,CAAC,EACxD,KAAK,CAAC,eAAe,YAAY,YAAY,OAAO,CAAC,EACrD,KAAK,CAAC,eAAe,sBAAsB,YAAY,OAAO,CAAC,EAC/D,KAAK,CAAC,eAAe,cAAc,YAAY,OAAO,MAAM,CAAC;EAClE,CAAC;;AAED,IAAM,uBAAuB;AAE7B,SAAS,sBAAsB,QAAyB;AACtD,MACE,OAAO,QAAQ,wBACf,OAAO,SAAS,sBAChB;AACA,QACE,OAAO,QAAQ,wBACf,OAAO,SAAS,sBAChB;AACA,UAAI,OAAO,QAAQ,OAAO,QAAQ;AAChC,eAAO,UAAU,uBAAuB,OAAO;AAC/C,eAAO,QAAQ;aACV;AACL,eAAO,SAAS,uBAAuB,OAAO;AAC9C,eAAO,SAAS;;eAET,OAAO,QAAQ,sBAAsB;AAC9C,aAAO,UAAU,uBAAuB,OAAO;AAC/C,aAAO,QAAQ;WACV;AACL,aAAO,SAAS,uBAAuB,OAAO;AAC9C,aAAO,SAAS;;;AAGtB;AACM,SAAgB,SACpB,MACA,UAAmB,CAAA,GAAE;;AAErB,WAAO,MAAM,MAAM,OAAO,EACvB,KAAK,WAAW,EAChB,KAAK,CAAC,QAAO;AACZ,YAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,YAAM,UAAU,OAAO,WAAW,IAAI;AACtC,YAAM,QAAQ,QAAQ,cAAc,cAAa;AACjD,YAAM,EAAE,OAAO,OAAM,IAAK,aAAa,MAAM,OAAO;AAEpD,YAAM,cAAc,QAAQ,eAAe;AAC3C,YAAM,eAAe,QAAQ,gBAAgB;AAE7C,aAAO,QAAQ,cAAc;AAC7B,aAAO,SAAS,eAAe;AAE/B,UAAI,CAAC,QAAQ,eAAe;AAC1B,8BAAsB,MAAM;;AAE9B,aAAO,MAAM,QAAQ,GAAG,WAAW;AACnC,aAAO,MAAM,SAAS,GAAG,YAAY;AAErC,UAAI,QAAQ,iBAAiB;AAC3B,gBAAQ,YAAY,QAAQ;AAC5B,gBAAQ,SAAS,GAAG,GAAG,OAAO,OAAO,OAAO,MAAM;;AAGpD,cAAQ,UAAU,KAAK,GAAG,GAAG,OAAO,OAAO,OAAO,MAAM;AAExD,aAAO;IACT,CAAC;EACL,CAAC;;AAaK,SAAgB,MACpB,MACA,UAAmB,CAAA,GAAE;;AAErB,WAAO,SAAS,MAAM,OAAO,EAAE,KAAK,CAAC,WAAW,OAAO,UAAS,CAAE;EACpE,CAAC;;;;AT/GM,IAAM,UAAU,GAAG,SAAS,MAAM;AAGlC,IAAM,gBAAgB;AAAA,EAC3B,YAAY;AAAA,IACV,UAAW;AAAA,MACT,KAAM,IAAI,SAAS,OAAO;AACxB,cAAM,qBAAqB,CAAC,MAAM;AAChC,YAAE,gBAAgB;AAClB,gBAAM,EAAE,SAAS,QAAQ,IAAI,QAAQ;AACrC,cAAI,sBAAsB;AAC1B,kBAAQ,QAAQ,aAAW;AACzB,gBAAI,CAAC,qBAAsB;AACzB,oBAAM,aAAa,MAAM,QAAQ,MAAM,OAAO;AAC9C,kBAAI,eAAe,QAAW;AAC5B,sCAAsB,WAAW,SAAS,EAAE,MAAM;AAAA,cACpD;AAAA,YACF;AAAA,UACF,CAAC;AACD,cAAI,CAAC,GAAG,SAAS,EAAE,MAAM,KAAK,CAAC,qBAAqB;AAClD,kBAAM,QAAQ,OAAO,EAAE;AAAA,UACzB;AAAA,QACF;AACA,iBAAS,iBAAiB,SAAS,kBAAkB;AACrD,iBAAS,iBAAiB,cAAc,kBAAkB;AAAA,MAC5D;AAAA,MACA,SAAU;AACR,YAAI;AACJ,iBAAS,oBAAoB,SAAS,kBAAkB;AACxD,iBAAS,oBAAoB,cAAc,kBAAkB;AAAA,MAC/D;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAM,cAAc;AAAA,EACzB;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,MAAM;AAA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",
  "names": ["global", "factory", "window", "array", "push", "indexOf", "toString", "hasOwn", "isFunction", "isWindow", "document", "version", "jQuery", "len", "clone", "target", "arr", "matches", "type", "support", "compile", "contains", "slice", "i", "rtrim", "rhtml", "rquickExpr", "Sizzle", "match", "keys", "cache", "attrs", "docElem", "id", "node", "nodeName", "forward", "start", "dir", "text", "hash", "cached", "map", "filter", "find", "isXML", "truncate", "elem", "self", "init", "root", "queue", "add", "index", "resolve", "value", "deferred", "process", "_key", "getData", "data", "hooks", "next", "show", "div", "selection", "on", "one", "events", "expectSync", "props", "remove", "html", "style", "emptyStyle", "name", "percent", "opts", "length", "empty", "timer", "time", "timeout", "j", "max", "location", "val", "completed", "off", "method", "proxy", "root", "factory", "global", "I18n", "isObject", "type", "isFunction", "isArray", "isString", "isNumber", "isBoolean", "merge", "locale", "time", "date", "matches", "placeholder", "match", "format", "Rails", "ref", "$", "matches", "target", "type", "toArray", "getData", "root", "undefined", "toString", "isString", "isArray", "isObject", "defaults", "map", "iterator", "format", "opts", "VERSION", "defaults", "Datepicker", "date", "locale", "replacer", "str", "match", "opts", "len", "d", "format", "type", "time", "min", "max", "index", "type", "opts", "html", "date", "render", "max", "dp", "opts", "html", "date", "type", "opts", "date", "window", "global", "document", "_typeof", "obj", "target", "_setPrototypeOf", "o", "p", "self", "_getPrototypeOf", "props", "F", "len", "__create", "__defProp", "__getProtoOf", "__hasOwnProp", "__getOwnPropNames", "__getOwnPropDesc", "__markAsModule", "__commonJS", "module", "__export", "all", "__exportStar", "_loop", "get", "err", "__toModule", "exports", "i", "chr", "str", "hex", "parse2", "_a", "forEach", "create", "process2", "abs", "max", "bind", "keys", "index", "assign", "map", "isObject", "test", "generate", "isFunction", "indexOf", "set", "hasOwnProperty2", "on", "once", "off", "type", "once2", "emit", "naiveFallback", "global2", "id", "isString", "isArray", "iterator", "toArray2", "resolveArgs", "resolve", "del", "memoized", "has", "extDel", "callable", "byObserver", "Observer", "nextTick", "waiting", "isPromise", "onSuccess", "onFailure", "nextTickFailure", "timeout", "noop4", "min", "hit", "def", "unescape", "factory", "_isArray", "asap", "asap2", "observer", "resolve2", "opts", "defineProp", "ArrayBuffer", "ArrayBuffer2", "array", "start", "min2", "Float32Array", "defineProperty", "AbstractVirtualNode", "utils_exports", "DqElement", "aggregate", "aggregateChecks", "aggregateNodeResults", "aggregateResult", "areStylesSet", "assert", "checkHelper", "clone", "clone_default", "closest", "collectResultsFromFrames", "contains", "deepMerge", "escapeSelector", "extendMetaData", "filterHtmlAttrs", "finalizeRuleResult", "findBy", "getAllChecks", "getBaseLang", "getCheckMessage", "getCheckOption", "getFlattenedTree", "getFriendlyUriEnd", "getNodeAttributes", "getNodeFromTree", "getRootNode", "getRule", "getScroll", "getScrollState", "getShadowSelector", "getStyleSheetFactory", "getXpath", "injectStyle", "isHidden", "isHtmlElement", "isNodeInContext", "isShadowRoot", "isValidLang", "isXHTML", "matches", "matchesSelector", "mergeResults", "nodeSorter", "parseCrossOriginStylesheet", "parseSameOriginStylesheet", "parseStylesheet", "performanceTimer", "preload", "preloadCssom", "preloadMedia", "processMessage", "publishMetaData", "querySelectorAll", "querySelectorAllFilter", "queue", "ruleShouldRun", "select", "select_default", "sendCommandToFrame", "setScrollState", "toArray", "tokenList", "uniqueArray", "uuid", "validInputTypes", "version", "_rng", "parse", "origin", "handler", "impacts", "query", "hash", "xhtml", "_loop2", "truncate", "frame", "data", "data2", "noop", "defaultFail", "defer", "fn", "_key", "findElmsInContext", "findUp", "findUpVirtual", "getComposedParent", "getElementByReference", "getElementCoordinates", "getElementStack", "getScrollOffset", "getTabbableElements", "getTextElementStack", "getViewportSize", "hasContent", "hasContentVirtual", "idrefs", "insertedIntoFocusOrder", "isFocusable", "isHTML5", "isHiddenWithCSS", "isInTextBlock", "isModalOpen", "isNativelyFocusable", "isNode", "isOffscreen", "isOpaque", "isSkipLink", "isVisible", "isVisualContent", "reduceToElementsBelowFloating", "shadowElementsFromPoint", "urlPropsFromAttribute", "visuallyContains", "visuallyOverlaps", "root", "match", "parentNode", "style", "transform", "filter", "perspective", "cache", "range", "rect", "ref", "_loop3", "_i6", "config", "Color", "parseString", "contains2", "attribute", "VirtualNode", "attrs", "sum", "screen", "navigator", "location", "orientation", "replace", "now", "reset", "value", "isCallable", "toInteger", "toLength", "SerialVirtualNode", "allowedAttr", "arialabelText", "arialabelledbyText", "getAccessibleRefs", "getElementUnallowedRoles", "getExplicitRole", "getOwnedVirtual", "getRole", "getRoleType", "getRolesByType", "getRolesWithNameFromContents", "implicitNodes", "implicitRole", "isAccessibleRef", "isAriaRoleAllowedOnElement", "isUnsupportedRole", "isValidRole", "label", "labelVirtual", "lookupTable", "namedFromContents", "requiredAttr", "requiredContext", "requiredOwned", "validateAttr", "validateAttrValue", "getValue", "children", "accessibleText", "accessibleTextVirtual", "formControlValue", "hasUnicode", "isHumanInterpretable", "isIconLigature", "isValidAutocomplete", "labelText", "nativeElementType", "nativeTextAlternative", "nativeTextMethods", "removeUnicode", "sanitize", "subtreeText", "titleText", "unsupported", "visible", "visibleTextNodes", "visibleVirtual", "diff", "tagName", "isNull", "isNotNull", "condition", "getAriaRolesByType", "getAriaRolesSupportingNameFromContent", "getElementSpec", "getElementsByContentType", "getGlobalAriaAttrs", "implicitHtmlRoles", "_loop4", "_i15", "getAllCells", "getCellPosition", "getHeaders", "getScope", "isColumnHeader", "isDataCell", "isDataTable", "isHeader", "isRowHeader", "toGrid", "traverse", "vNode", "centerPointOfRect", "elementHasImage", "elementIsDistinct", "filteredRectStack", "flattenColors", "getBackgroundColor", "getBackgroundStack", "getContrast", "getForegroundColor", "getOwnBackgroundColor", "getRectStack", "getTextShadowColors", "hasValidContrastRatio", "incompleteData", "edge", "_loop5", "_i20", "_loop6", "color", "standards", "text", "utils", "isAriaCombobox", "isAriaListbox", "isAriaRange", "isAriaTextbox", "isDisabled", "isNativeSelect", "isNativeTextbox", "commons", "nextSibling", "_loop7", "degrees", "findMatch", "xhtml2", "timer", "mergeCheckLocale", "mergeRuleLocale", "mergeFailureMessage", "mergeFallbackMessage", "Audit", "locale", "defaultLocale", "normalizeOptions", "patch", "teardown", "add", "plugin", "noop2", "noop3", "respond", "results", "err2", "naReporter", "noPassesReporter", "rawReporter", "rawEnvReporter", "v1Reporter", "addFailureSummaries", "v2Reporter", "url", "options", "Promise", "resolve", "reject", "request", "XMLHttpRequest", "keys", "all", "headers", "response", "ok", "status", "statusText", "responseURL", "text", "responseText", "json", "then", "JSON", "parse", "blob", "Blob", "clone", "entries", "get", "n", "toLowerCase", "has", "i", "open", "method", "onload", "getAllResponseHeaders", "replace", "m", "key", "value", "push", "onerror", "withCredentials", "credentials", "setRequestHeader", "send", "body", "window", "$", "toString", "type", "hasOwn", "i", "isArray", "cache", "keys", "id", "clone", "target", "len", "queue", "elem", "offsetParent", "factory", "global", "document", "undefined", "div", "performance", "array", "index", "start", "str", "initState", "$2", "fields", "match", "hex", "tagName", "element", "property", "perspective", "opts", "resolve", "processElement", "next", "callIndex", "delayComplete", "valueData", "endValue", "easing", "startValue", "tweenDelta", "factory", "$", "html", "type", "modules", "item", "index", "text", "target", "module", "opts", "image", "transition", "paddingTop", "factory", "global", "window", "document", "undefined", "$", "component", "effectName", "parentNode", "i", "opts", "element", "injectFinalCallbacks", "root", "factory", "modules", "module", "exports", "component", "compose", "utils", "i", "traverse", "props", "type", "index", "len", "array", "timeout", "target", "attrs", "key", "origin", "defaults", "t", "e", "r", "n", "o", "i", "global", "factory", "target", "props", "len", "getEscapeReplacement", "html", "encode", "replace", "resolveUrl", "noopTest", "match", "str", "text", "Tokenizer", "list", "def", "escape", "start", "link", "del", "mangle", "smartypants", "Lexer", "rules", "next", "inline", "get", "Renderer", "type", "flags", "TextRenderer", "Slugger", "slug", "unescape", "Parser", "parse", "merge", "defaults", "marked", "done", "pending", "_key", "opts", "args", "_key2", "_loop", "prop", "_loop2", "_loop3", "global", "factory", "userAgent", "platform", "gecko", "ie_upto10", "ie_11up", "edge", "ie", "ie_version", "webkit", "qtwebkit", "chrome", "presto", "safari", "mac_geMountainLion", "phantom", "ios", "android", "mobile", "mac", "chromeOS", "windows", "presto_version", "flipCtrlCmd", "captureRightClick", "classTest", "rmClass", "match", "removeChildren", "removeChildrenAndAdd", "elt", "style", "i", "eltP", "range", "start", "contains", "activeElt", "addClass", "joinClasses", "selectInput", "bind", "copyObj", "target", "prop", "countColumn", "Delayed", "self", "time", "indexOf", "array", "scrollerGap", "sel_dontScroll", "spaceStr", "lst", "map", "createObj", "props", "isExtendingChar", "skipExtendingChars", "str", "findFirst", "iterateBidiSections", "bidiOther", "getBidiPartAt", "len", "i$1", "type", "i$2", "replace", "getOrder", "noHandlers", "on", "getHandlers", "off", "index", "signal", "signalDOMEvent", "signalCursorActivity", "set", "hasHandler", "eventMixin", "e_target", "dragAndDrop", "div", "zeroWidthElement", "test", "hasBadBidiRects", "splitLinesAuto", "hasSelection", "hasCopyEvent", "hasBadZoomedRects", "getMode", "copyState", "innerMode", "startState", "getLine", "getBetween", "text", "updateLineHeight", "lineNo", "no", "lineAtHeight", "isLine", "lineNumberFor", "Pos", "cmp", "equalCursorPos", "copyPos", "maxPos", "minPos", "clipPos", "highlightLine", "o", "getLineStyles", "getContextBefore", "processLine", "sawCollapsedSpans", "stretchSpansOverChange", "detachMarkedSpans", "attachMarkedSpans", "compareCollapsedMarkers", "collapsedSpanAround", "visualLine", "visualLineContinued", "visualLineNo", "visualLineEndNo", "lineIsHidden", "heightAtLine", "findMaxLine", "Line", "estimateHeight", "updateLine", "cache", "buildLineContent", "LineView", "buildViewArray", "pushOperation", "callbacks", "finishOperation", "signalLater", "updateLineForChanges", "id", "next", "buildLineElement", "widgetHeight", "paddingTop", "paddingVert", "paddingH", "scrollGap", "displayWidth", "displayHeight", "measureChar", "findViewIndex", "getDimensions", "charWidth", "charCoords", "cursorCoords", "get", "ch", "partPos", "estimateCoords", "wrappedLineExtentChar", "part", "ltr", "ref", "textHeight", "compensateForHScroll", "estimateLineHeights", "regChange", "resetView", "regLineChange", "adjustView", "countDirtyView", "updateSelection", "add", "extent", "restartBlink", "onBlur", "ensureFocus", "updateHeightsInViewport", "visibleLines", "maybeScrollWindow", "scrollPosIntoView", "updateScrollTop", "setScrollLeft", "screen", "ensureCursorVisible", "updateDisplaySimple", "setScrollTop", "startWorker", "alignHorizontally", "measureForScrollbars", "updateScrollbars", "maybeClipScrollbars", "DisplayUpdate", "updateDisplayIfNeeded", "setDocumentHeight", "postUpdateDisplay", "runInOp", "maybeUpdateLineNumberWidth", "node", "updateGutterSpace", "Selection", "Range", "normalizeSelection", "simpleSelection", "changeEnd", "loadMode", "linkedDocs", "doc", "History", "origin", "addSelectionToHistory", "events", "extend", "filter", "children", "min", "max", "line", "CodeMirror", "keyNames", "keys", "dir", "wrappedLineExtent", "moveInStorageOrder", "now", "ranges", "defaults", "optionHandlers", "find", "textNode", "topNode", "offset", "cm", "CodeMirror", "config", "set", "sqlKeywords", "hooks", "stream", "state", "type", "style", "str", "t", "e", "i", "n", "o", "s", "r", "a", "h", "G", "Y", "X", "$", "ie", "re", "he", "u", "l", "c", "d", "_", "p", "m", "f", "g", "v", "y", "en", "on", "CodeMirror", "range", "i", "CodeMirror", "self", "requestAnimationFrame", "cancelAnimationFrame", "mac", "key", "elt", "cm", "CodeMirror", "Pos", "isArray", "match", "len", "start", "query", "$", "I18n", "import_jquery", "$", "div", "_Autocomplete", "self", "query", "orientation", "filter", "groupBy", "html", "index", "children", "$2", "jQuery", "noop", "type", "document", "match", "match", "match", "datum", "next", "enter", "bind", "next", "enter", "selection", "merge", "next", "create", "create", "clone", "parseTypenames", "on", "type", "window", "dispatch_default", "dispatch_default", "factory", "prototype", "format", "min", "max", "constant_default", "constant_default", "color", "rgb", "start", "i", "parse", "translate", "time", "now", "time", "id", "index", "get", "set", "self", "start", "empty", "interrupt_default", "id", "set", "get", "transition", "attrRemove", "attrRemoveNS", "attrConstant", "attrConstantNS", "attrFunction", "attrFunctionNS", "attr_default", "id", "get", "id", "set", "get", "id", "set", "get", "id", "set", "filter_default", "match", "merge_default", "transition", "merge", "id", "set", "on", "on_default", "get", "id", "remove_default", "select_default", "id", "get", "selectAll_default", "id", "children", "inherit", "get", "Selection", "selection_default", "styleRemove", "styleConstant", "styleFunction", "id", "remove", "set", "on", "style_default", "textConstant", "textFunction", "text_default", "inherit", "get", "id", "resolve", "set", "on", "id", "select_default", "selectAll_default", "filter_default", "merge_default", "selection_default", "on_default", "attr_default", "style_default", "text_default", "remove_default", "id", "transition_default", "interrupt_default", "transition_default", "match", "locale", "percent", "zero", "trim", "type", "format", "formatPrefix", "value", "xhtml", "namespaces_default", "namespace_default", "namespaces_default", "creatorInherit", "document", "xhtml", "creatorFixed", "creator_default", "namespace_default", "none", "selector_default", "select_default", "selector_default", "Selection", "empty", "selectorAll_default", "arrayAll", "selectAll_default", "selectorAll_default", "Selection", "matcher_default", "childMatcher", "find", "childFind", "match", "childFirst", "selectChild_default", "childMatcher", "filter", "children", "childrenFilter", "match", "selectChildren_default", "childMatcher", "filter_default", "match", "matcher_default", "Selection", "sparse_default", "enter_default", "Selection", "sparse_default", "EnterNode", "datum", "next", "constant_default", "bindIndex", "enter", "EnterNode", "bindKey", "datum", "data_default", "bind", "constant_default", "next", "Selection", "exit_default", "Selection", "sparse_default", "join_default", "enter", "merge_default", "selection", "Selection", "merge", "order_default", "next", "sort_default", "ascending", "Selection", "call_default", "nodes_default", "node_default", "size_default", "empty_default", "each_default", "attrRemove", "attrRemoveNS", "attrConstant", "attrConstantNS", "attrFunction", "attrFunctionNS", "attr_default", "namespace_default", "window_default", "styleRemove", "styleConstant", "styleFunction", "style_default", "styleValue", "window_default", "propertyRemove", "propertyConstant", "propertyFunction", "property_default", "classArray", "classList", "ClassList", "classedAdd", "classedRemove", "classedTrue", "classedFalse", "classedFunction", "classed_default", "textRemove", "textConstant", "textFunction", "text_default", "htmlRemove", "htmlConstant", "htmlFunction", "html_default", "raise", "raise_default", "lower", "lower_default", "append_default", "create", "creator_default", "constantNull", "insert_default", "create", "creator_default", "selector_default", "remove", "remove_default", "selection_cloneShallow", "clone", "selection_cloneDeep", "clone_default", "datum_default", "contextListener", "parseTypenames", "onRemove", "on", "onAdd", "on_default", "dispatchEvent", "type", "window", "window_default", "dispatchConstant", "dispatchFunction", "dispatch_default", "iterator_default", "root", "Selection", "selection", "selection_selection", "select_default", "selectAll_default", "selectChild_default", "selectChildren_default", "filter_default", "data_default", "enter_default", "exit_default", "join_default", "merge_default", "order_default", "sort_default", "call_default", "nodes_default", "node_default", "size_default", "empty_default", "each_default", "attr_default", "style_default", "property_default", "classed_default", "text_default", "html_default", "raise_default", "lower_default", "append_default", "insert_default", "remove_default", "clone_default", "datum_default", "on_default", "dispatch_default", "iterator_default", "selection_default", "noop", "dispatch", "Dispatch", "parseTypenames", "get", "set", "type", "dispatch_default", "frame", "timeout", "interval", "pokeDelay", "taskHead", "taskTail", "clockLast", "clockNow", "clockSkew", "clock", "setFrame", "now", "clearNow", "Timer", "timer", "time", "sleep", "timerFlush", "wake", "nap", "poke", "timeout_default", "time", "Timer", "emptyOn", "dispatch_default", "emptyTween", "CREATED", "SCHEDULED", "STARTING", "STARTED", "RUNNING", "ENDING", "ENDED", "schedule_default", "id", "index", "create", "init", "get", "set", "self", "timer", "start", "timeout_default", "interrupt_default", "empty", "STARTING", "ENDING", "ENDED", "interrupt_default", "define_default", "factory", "prototype", "extend", "Color", "darker", "brighter", "reI", "reN", "reP", "reHex", "reRgbInteger", "reRgbPercent", "reRgbaInteger", "reRgbaPercent", "reHslPercent", "reHslaPercent", "named", "define_default", "color", "color_formatHex", "color_formatHsl", "color_formatRgb", "hslConvert", "format", "rgbn", "Rgb", "rgba", "hsla", "rgbConvert", "rgb", "extend", "rgb_formatHex", "rgb_formatRgb", "hex", "Hsl", "min", "max", "hsl", "hsl2rgb", "basis", "basis_default", "basisClosed_default", "basis", "constant_default", "linear", "exponential", "gamma", "nogamma", "exponential", "constant_default", "linear", "rgb_default", "rgbGamma", "color", "gamma", "rgb", "start", "nogamma", "rgbSpline", "rgbBasis", "basis_default", "rgbBasisClosed", "basisClosed_default", "number_default", "reA", "reB", "zero", "one", "string_default", "number_default", "i", "degrees", "identity", "decompose_default", "svgNode", "parseCss", "identity", "decompose_default", "parseSvg", "interpolateTransform", "parse", "translate", "number_default", "interpolateTransformCss", "parseCss", "interpolateTransformSvg", "parseSvg", "tweenRemove", "id", "set", "tweenFunction", "tween_default", "get", "tweenValue", "transition", "interpolate_default", "number_default", "color", "rgb_default", "string_default", "attrRemove", "attrRemoveNS", "attrConstant", "attrConstantNS", "attrFunction", "attrFunctionNS", "attr_default", "namespace_default", "interpolateTransformSvg", "interpolate_default", "tweenValue", "attrInterpolate", "attrInterpolateNS", "attrTweenNS", "attrTween", "attrTween_default", "namespace_default", "delayFunction", "id", "init", "delayConstant", "delay_default", "get", "durationFunction", "id", "set", "durationConstant", "duration_default", "get", "easeConstant", "id", "set", "ease_default", "get", "easeVarying", "id", "set", "easeVarying_default", "filter_default", "match", "matcher_default", "Transition", "merge_default", "transition", "merge", "Transition", "start", "onFunction", "id", "init", "set", "on", "on_default", "get", "removeFunction", "id", "remove_default", "select_default", "id", "selector_default", "schedule_default", "get", "Transition", "selectAll_default", "id", "selectorAll_default", "children", "inherit", "get", "schedule_default", "Transition", "Selection", "selection_default", "styleNull", "styleValue", "styleRemove", "styleConstant", "styleFunction", "styleMaybeRemove", "id", "remove", "set", "on", "style_default", "interpolateTransformCss", "interpolate_default", "tweenValue", "styleInterpolate", "styleTween", "styleTween_default", "textConstant", "textFunction", "text_default", "tweenValue", "textInterpolate", "textTween", "textTween_default", "transition_default", "newId", "inherit", "get", "schedule_default", "Transition", "end_default", "id", "resolve", "set", "on", "id", "Transition", "transition", "selection_default", "newId", "selection_prototype", "select_default", "selectAll_default", "filter_default", "merge_default", "transition_default", "on_default", "attr_default", "attrTween_default", "style_default", "styleTween_default", "text_default", "textTween_default", "remove_default", "tween_default", "delay_default", "duration_default", "ease_default", "easeVarying_default", "end_default", "cubicInOut", "defaultTiming", "cubicInOut", "inherit", "id", "transition_default", "Transition", "newId", "now", "schedule_default", "selection_default", "interrupt_default", "transition_default", "location", "identity", "target", "min", "max", "opts", "index", "type", "uid", "timeout", "timer", "next", "axeCore", "d", "b", "__assign", "resolve", "__read", "__spreadArray", "_i", "__spreadArray", "__read", "_a", "Serializable", "Environment", "resolve", "XDomainTransport", "resolve", "_a", "XHRTransport", "resolve", "FetchTransport", "_a", "NodeTransport", "resolve", "PushApi", "_a", "Span", "Queue", "_a", "Dispatcher", "queue", "time", "_a", "Appsignal", "_a", "plugin", "opts", "__assign", "self", "accounting", "str", "import_velocity_animate", "$", "get", "tipsy", "enter", "leave", "target", "tabs", "keys", "index", "target", "import_velocity_animate", "text", "tabs", "str", "match", "index", "Turbolinks", "Rails", "_key", "str", "map", "len", "index", "hasOwnProperty", "cache", "start", "extend", "noop", "identity", "modules", "keys", "Set", "VNode", "children", "text", "target", "has", "Dep", "target", "noop", "Observer", "keys", "set", "target", "target", "endTag", "once", "fns", "on", "add", "remove", "createOnceHandler", "def", "attrs", "props", "hash", "children", "render", "keys", "iterator", "extend", "target", "id", "identity", "key", "type", "index", "cached", "proxy", "Vue", "_a", "render", "e", "factory", "children", "resolve", "on", "EffectScope", "Vue", "id", "endTag", "noop", "attrs", "props", "id", "queue", "hooks", "noop", "resolve", "target", "keys", "Watcher", "noop", "id", "target", "opts", "props", "key", "Vue", "set", "endTag", "extend", "children", "clone", "hooks", "on", "str", "match", "vm", "keys", "set", "hooks", "extend", "type", "props", "extend", "def", "key", "type", "id", "def", "match", "type", "len", "Vue", "plugin", "type", "extend", "props", "id", "opts", "filter", "cache", "keys", "_a", "set", "parentNode", "tagName", "text", "ref", "children", "map", "modules", "nodeOps", "remove", "isUnknownElement", "index", "createComponent", "i", "j", "start", "queue", "patch", "attrs", "range", "warn", "events", "trim", "chr", "on", "style", "len", "def", "timeout", "enter", "leave", "transition", "type", "_a", "Transition", "children", "id", "extend", "leave", "map", "opts", "clone", "noop", "delimiters", "text", "match", "index", "warn", "html", "shouldDecodeNewlines", "re", "isUnaryTag", "canBeLeftOpenTag", "next", "all", "endTag", "start", "tagName", "attrs", "attrs", "isReservedTag", "root", "range", "start", "text", "children", "len", "iterator", "ref", "extend", "once", "_a", "match", "map", "map", "root", "keys", "events", "isNative", "handler", "key", "noop", "CodegenState", "extend", "isReservedTag", "maybeComponent", "children", "type", "str", "hash", "text", "comment", "attrs", "bind", "props", "noop", "compile", "cache", "compileToFunctions", "extend", "warn", "_a", "baseCompile", "createCompiler", "baseOptions", "range", "id", "render", "extend", "str", "query", "parse", "location", "router", "stringifyQuery", "ref", "hash", "target", "props", "children", "cache", "component", "_", "attrs", "config", "append", "parsePath", "index", "next", "matches", "opts", "options", "encode", "i", "re", "keys", "noop", "render", "router", "ref", "location", "noop", "on", "extend", "target", "children", "Vue", "isDef", "get", "strats", "inBrowser", "keys", "addRoutes", "routes", "addRoute", "alias", "getRoutes", "match", "key", "redirect", "re", "query", "hash", "len", "shouldScroll", "isObject", "replace", "history", "type", "isError", "queue", "index", "next", "pending", "def", "resolve", "once", "hasSymbol", "History", "iterator", "max", "bind", "guard", "HTML5History", "setupListeners", "go", "push", "HashHistory", "AbstractHistory", "VueRouter", "init", "app", "onReady", "onError", "append", "style", "component", "__vue_script__", "date", "start", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "min", "max", "start", "index", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "text", "index", "__vue_script__", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "__vue_render__", "square", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "filter", "query", "id", "index", "attrs", "min", "max", "start", "__vue_script__", "__vue_render__", "filter", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "match", "baseUrl", "uuid", "toArray", "resolve", "html", "placeholder", "resolve", "style", "toArray", "children", "toArray", "_a", "target", "get", "str", "match", "format", "baseUrl", "_a", "resolve", "children", "toArray", "style", "cache", "location", "resolve", "matches", "toArray", "index", "baseUrl", "bind", "toString", "cache", "str", "type", "isArray", "isFunction", "isNumber", "isObject", "isPlainObject", "prototype", "keys", "len", "_key", "hasOwnProperty", "extend", "bind", "props", "filter", "toArray", "matches", "replacer", "isRegExp", "define", "noop", "target", "callbacks", "str", "start", "match", "filter", "self", "keys", "format", "target", "prototype", "prototype", "config", "filter", "index", "encode", "str", "replacer", "match", "toString", "encode", "id", "match", "keys", "len", "target", "index", "defaults", "isFormData", "isFileList", "transitional", "config", "transform", "config", "resolve", "validateStatus", "match", "min", "push", "now", "timer", "now", "origin", "config", "target", "merge", "str", "hex", "config", "own", "config", "resolve", "handleError", "transitional", "timeout", "timer", "signal", "len", "iterator", "done", "len", "bytes", "next", "VERSION", "isFunction", "ReadableStream", "str", "type", "config", "signal", "timeout", "VERSION", "resolve", "fetch", "len", "target", "map", "adapter", "config", "id", "config", "adapter", "type", "version", "VERSION", "opts", "keys", "validators", "config", "transitional", "len", "resolve", "config", "index", "bind", "create", "VERSION", "Axios", "AxiosError", "CanceledError", "isCancel", "CancelToken", "VERSION", "all", "isAxiosError", "spread", "toFormData", "AxiosHeaders", "HttpStatusCode", "getAdapter", "mergeConfig", "create", "id", "__vue_script__", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "id", "__vue_render__", "ref", "type", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "index", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "uid", "id", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "__vue_render__", "ref", "id", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "__vue_render__", "ref", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "__vue_render__", "ref", "type", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "endPoint", "date", "__vue_script__", "__vue_render__", "ref", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "__vue_render__", "ref", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "marked", "__vue_script__", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "CodeMirror", "id", "__vue_render__", "ref", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "__vue_render__", "index", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "endPoint", "id", "array", "__vue_script__", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "id", "__vue_render__", "ref", "config", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "placeholder", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "opts", "config", "id", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "COMPONENTS", "__vue_script__", "component", "id", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "__vue_component__", "__vue_script__", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "import_codemirror", "import_sql", "import_show_hint", "array", "elt", "on", "type", "map", "type", "map", "index", "type", "on", "no", "style", "start", "div", "range", "text", "__vue_script__", "CodeMirror", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "__vue_render__", "index", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "opts", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "opts", "config", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "config", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "endPoint", "id", "endPoint", "__vue_script__", "next", "id", "query", "data", "queryId", "config", "opts", "user", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "__vue_render__", "ref", "config", "id", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "__vue_script__", "id", "data", "__vue_render__", "__vue_staticRenderFns__", "__vue_inject_styles__", "__vue_scope_id__", "__vue_module_identifier__", "__vue_is_functional_template__", "__vue_normalize__", "style", "component", "__vue_component__", "Visualizations_default", "Visualizations_default", "checkAndReportAccessibility", "checkAndReportAccessibility"]
}
